i18n в SPA — рабочий стек

Локализация SPA — это не «переведём строки». Это даты, числа, валюты, плюрализация, RTL, SEO. Что взять.

i18n в SPA — рабочий стек

Локализация веб-приложения — это не «переведём кнопки». Это:

i18n в SPA — рабочий стек
Полный пайплайн i18n — четыре звена, каждое со своими инструментами.
  • Тексты UI (кнопки, лейблы, ошибки).
  • Контент (статьи, описания товаров).
  • Даты, времена в локальном формате.
  • Числа, валюты, единицы измерения.
  • Плюрализация (1 файл / 2 файла / 5 файлов).
  • RTL — для арабского, иврита.
  • SEO — отдельные URL для языков, hreflang.

Стек, который работает:

  • react-i18next или next-intl — для UI-строк.
  • Intl API (встроенный в браузеры) — для дат, чисел, валют. Не таскать moment.js, он deprecated.
  • ICU MessageFormat — для плюрализации и сложных подстановок.
  • Контентные переводы — отдельная база/CMS, не в JS-бандле.

Что обычно ломается:

  • Хардкоды строк прямо в JSX. Стартуют без i18n, потом мигрировать сложно.
  • Неправильная плюрализация — английские правила (1/many) применяют к русскому, а у нас 1/few/many.
  • SEO — ошибочные hreflang, дубли индекса.
  • Все переводы в одном огромном JSON, который грузится целиком на каждой странице.