Ответ
Для интернационализации (i18n) чаще всего использую библиотеки:
- i18next – мощное решение с поддержкой плагинов (кеширование, детектор языка). Пример:
import i18n from 'i18next';
i18n.init({ lng: 'en', resources: { en: { translation: { key: 'value' }}});- React-Intl (FormatJS) – популярен в React-экосистеме, поддерживает форматирование дат/чисел:
import { IntlProvider, FormattedMessage } from 'react-intl';
<IntlProvider locale="en" messages={messages}>
<FormattedMessage id="greeting" defaultMessage="Hello" />
</IntlProvider>- LinguiJS – простой API с поддержкой ICU-сообщений и извлечением ключей.
Для небольших проектов можно обойтись JSON-файлами с переводами и контекстом. Важно учитывать:
- Динамическую загрузку переводов
- Плюрализацию (1 cat vs 2 cats)
- Форматирование дат/валют
- RTL-поддержку для арабского/иврита