Контроль и автоматизация i18n
Для обеспечения качества локализации и предотвращения ошибок в мультиязычных проектах используются процедуры Code Review и инструменты статического анализа.
Процедуры контроля (Code Review)
Ревьюер обязан проверить
- ✅ Дефолтная локаль определена в конфигурации проекта.
- ✅ SEO-теги (meta, OG, structured data) проходят через систему i18n.
- ✅ Новый UI-текст добавлен через
t(), хардкод строк в компонентах отсутствует. - ✅ Namespaces выбраны корректно согласно структуре фич/страниц.
- ✅ Отсутствует склейка строк (
+) и ручная логика множественного числа. - ✅ Даты, числа и валюта форматируются через
Intlили проектные обертки. - ✅ Missing keys заметны в консоли при разработке и отслеживаются в production.
- ✅ Логические 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)
- Пример Stylelint конфига – stylelint.ts
Чеклист разработчика
Перед коммитом
- Все UI-тексты через
t(), нет хардкода. - Ключи семантичные (
feature.scope.element). - Плюралы через ICU MessageFormat.
- Интерполяция именованными параметрами (не конкатенация).
- Даты/числа через Intl.
- Логические CSS-свойства (если проект RTL).
- Переводы разделены по доменам/роутам (не монолит).
- SEO-теги и Accessibility атрибуты локализованы.
Перед ревью
- ESLint и Stylelint проходят без ошибок.
- Нет missing keys в консоли dev.
- TypeScript augmentation настроен и работает (автокомплит ключей).
- Namespaces загружаются корректно (проверено в SSR/SSG).