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

Контроль и автоматизация i18n

Для обеспечения качества локализации и предотвращения ошибок в мультиязычных проектах используются процедуры Code Review и инструменты статического анализа.

Процедуры контроля (Code Review)

Ревьюер обязан проверить

  1. Дефолтная локаль определена в конфигурации проекта.
  2. SEO-теги (meta, OG, structured data) проходят через систему i18n.
  3. Новый UI-текст добавлен через t(), хардкод строк в компонентах отсутствует.
  4. Namespaces выбраны корректно согласно структуре фич/страниц.
  5. Отсутствует склейка строк (+) и ручная логика множественного числа.
  6. Даты, числа и валюта форматируются через Intl или проектные обертки.
  7. Missing keys заметны в консоли при разработке и отслеживаются в production.
  8. Логические CSS-свойства используются везде, где важна поддержка RTL.

Автоматизация

Статические проверки (ESLint)

Использование eslint-plugin-i18next позволяет автоматически находить незалокализованные строки.

{
"plugins": ["i18next", "i18n-json"],
"extends": ["plugin:i18next/recommended", "plugin:i18n-json/recommended"],
"rules": {
"i18next/no-literal-string": [
"error",
{
"markupOnly": true
}
]
}
}

Полезные пакеты:

  • eslint-plugin-i18next — поиск хардкода строк в JSX.
  • eslint-plugin-i18n-json — валидация JSON-файлов и ICU MessageFormat.

Стилизация (Stylelint)


Чеклист разработчика

Перед коммитом

  • Все UI-тексты через t(), нет хардкода.
  • Ключи семантичные (feature.scope.element).
  • Плюралы через ICU MessageFormat.
  • Интерполяция именованными параметрами (не конкатенация).
  • Даты/числа через Intl.
  • Логические CSS-свойства (если проект RTL).
  • Переводы разделены по доменам/роутам (не монолит).
  • SEO-теги и Accessibility атрибуты локализованы.

Перед ревью

  • ESLint и Stylelint проходят без ошибок.
  • Нет missing keys в консоли dev.
  • TypeScript augmentation настроен и работает (автокомплит ключей).
  • Namespaces загружаются корректно (проверено в SSR/SSG).