Перейти к содержанию

Интернационализация frontend-приложений

Требования этого документа применяются к frontend-приложению, поддерживающему две и более locale либо имеющему обязательный процесс перевода. Уровни обязательности определены в корневом README.md.

FE-INTL-001. Внешнее хранение пользовательских строк

Уровень: MUST

Применяется к: пользовательскому интерфейсу приложения

Все переводимые пользовательские строки должны храниться вне исходного кода компонентов в управляемых ресурсах сообщений и обращаться по стабильным ключам.

Запрещено размещать готовый пользовательский текст непосредственно в разметке компонента как единственное место хранения.

Обоснование

Внешнее хранение делает перевод и сопровождение строк управляемыми и не требует изменения кода для каждого перевода.

Проверка

  • статический поиск пользовательского текста в компонентах;
  • review организации ресурсов сообщений;
  • проверка наличия ключа для каждой строки интерфейса.

Исключения

Технический идентификатор, не предназначенный для перевода, может оставаться в коде.

FE-INTL-002. Объявленные локали и отступление

Уровень: MUST

Применяется к: поддерживаемым языкам приложения

Проект должен зафиксировать перечень поддерживаемых локалей и язык отступления (fallback). Приложение должно выбирать локаль определённым способом и при отсутствии перевода использовать язык отступления без показа ключа или ошибки. Выбор locale и timezone должен быть согласован между применимыми стадиями CSR, SSR, SSG и edge.

Обоснование

Объявленный перечень и определённое отступление делают поведение предсказуемым для пользователя.

Проверка

  • review перечня локалей и языка отступления;
  • тест отсутствующего перевода;
  • проверка способа выбора локали.

Исключения

Локаль, поддерживаемая по требованию заказчика, должна быть явно отражена в перечне.

FE-INTL-003. Формат сообщений и множественное число

Уровень: MUST

Применяется к: сообщениям с параметрами и числами

Сообщения с параметрами должны использовать стабильный формат сообщений (ICU MessageFormat или эквивалент), поддерживающий подстановку, множественное число и род. Запрещено собирать сообщение конкатенацией строк и фрагментов перевода.

Форматы чисел, дат и валют должны использовать локализованное форматирование, а не жёстко заданный формат.

Обоснование

Корректный формат сообщений необходим для грамматически верного перевода и согласованных форматов.

Проверка

  • review использования формата сообщений;
  • тест множественного числа для типичных локалей;
  • проверка локализованного форматирования чисел и дат.

Исключения

Сообщение без параметров может не использовать формат подстановки.

FE-INTL-004. Направление текста и расположение

Уровень: MUST

Применяется к: приложениям с поддержкой локалей разного направления текста

Если перечень поддерживаемых локалей включает языки с направлением письма справа налево (RTL), приложение должно задавать направление документа по активной локали, использовать логические свойства layout и сохранять читаемый порядок смешанного двунаправленного текста. Иконки и элементы, смысл которых зависит от направления, должны зеркалироваться; элементы с независимой семантикой не должны зеркалироваться автоматически.

Обоснование

Поддержка RTL требуется для корректного отображения соответствующих локалей и не достигается заменой текста.

Проверка

  • тест интерфейса с RTL-локалью;
  • review зависимости расположения от направления;
  • проверка определения направления по локали.

Исключения

Перечень локалей без RTL освобождает приложение от этого требования.