Перейти к содержимому
TrucklineMP

Интернационализация и переводы

TrucklineMP использует единую систему интернационализации, созданную на базе Next-Intl, для обработки многоязычной маршрутизации, каталогов переводов и вкладов в переводы.


Все переводимые строки в веб-приложении определены в файлах сообщений формата JSON, организованных по локалям в директории messages/:

messages/
├── en/ # Английский (Исходный каталог)
│ ├── common.json
│ ├── account.json
│ └── ...
├── pl/ # Польский
│ ├── common.json
│ └── ...
└── de/ # Немецкий
├── common.json
└── ...

Ключи сообщений поддерживают стандартные функции перевода системы ICU, такие как интерполяция и множественные числа:

{
"welcome": "Welcome back, {username}!",
"memberCount": "{count, plural, =0 {No members} =1 {1 member} other {# members}}"
}

TrucklineMP имеет встроенные рабочие пространства для управления и проверки переводов:

  1. Пользовательское рабочее пространство (/translations): Позволяет участникам сообщества отправлять варианты переводов для неполных ключей на выбранных ими языках.
  2. Рабочее пространство проверки (/translations/[locale]/review): Интерфейс рабочего процесса для модераторов переводов, позволяющий проверять, одобрять или отклонять предложенные переводы.

Конфигурация поддерживаемых локалей, разрешения пользовательских рабочих пространств и развертывание обновлений каталога переводов выполняются персоналом платформы через служебные инструменты.


Контент системного уровня, такой как определения значков, параметры динамических выпадающих списков или официальные правила платформы, регистрируется в:

official-content.ts

Разработчики должны использовать вспомогательные функции в этом модуле для регистрации системных строк и обеспечения их анализа и каталогизации средой выполнения перевода.


Инструменты командной строки для переводов

Заголовок раздела «Инструменты командной строки для переводов»

Доступно несколько скриптов командной строки для синхронизации, проверки и валидации каталогов переводов во время разработки.

Синхронизирует все каталоги целевых локалей (messages/pl/*.json, messages/de/*.json и так далее) со структурой исходного английского каталога, добавляя недостающие ключи и удаляя устаревшие ключи:

Окно терминала
npm run i18n:sync

Проверяет, что все JSON файлы каталога правильно сформированы и содержат действительный синтаксис:

Окно терминала
npm run i18n:check

Проверяет, что переменные форматирования системы ICU (например, {username}) идеально совпадают в исходном английском файле и во всех переведенных файлах:

Окно терминала
npm run i18n:layout

Вычисляет метрики процентного покрытия перевода для всех настроенных локалей:

Окно терминала
npm run i18n:coverage

Запускает комплексные проверки валидации (проверка, строгое покрытие, проверки макета и модульные тесты в директории src/i18n/__tests__/ для предотвращения проблем безопасности и атак с внедрением межсайтового скриптинга через переводы). Этот набор запускается конвейером непрерывной интеграции перед слиянием любых запросов на внесение изменений:

Окно терминала
npm run i18n:verify