Интернационализация 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 освобождает приложение от этого требования.