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

Мультиязычность

Система мультиязычности в проекте строится на принципах масштабируемости, типобезопасности и удобства локализации контента.

Цели

  • Единые правила для ключей, namespaces и структуры переводов.
  • Предсказуемая загрузка переводов в SSR/SSG (Next.js / Astro).
  • Минимум "магии": понятные фолбэки, контроль missing keys.
  • Корректные plural, интерполяция и форматирование дат/чисел/валют.
  • Полная локализуемость UI, централизованное управление, консистентность текстов.

Общие принципы

MUST

  1. Интернационализация (i18n) — требование для всех мультиязычных проектов
  • Внедрение на старте значительно дешевле интеграции постфактум
  1. Проект использует одну систему интернационализации
  • Использование нескольких библиотек одновременно запрещено
  1. Все следующие элементы проходят через систему i18n:
  • UI-элементы: заголовки, подписи, кнопки, плейсхолдеры
  • Обратная связь: уведомления, сообщения об ошибках, валидация
  • SEO: meta-теги, OG-теги, structured data
  • Accessibility: aria-label, alt для изображений, атрибуты для скринридеров
  1. TypeScript Augmentation (типизация):
  • Ключи должны подтягиваться из JSON файлов в глобальную декларацию типов библиотеки
  • t('key') проверяет существование ключа на этапе компиляции

Рекомендуемые библиотеки

СтекБиблиотека
React / Next.jsnext-intl, react-intl
Astro / SSGastro-i18next, i18next

Разделы документации