Что использовал для интернационализации

Ответ

Для интернационализации (i18n) чаще всего использую библиотеки:

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

Для небольших проектов можно обойтись JSON-файлами с переводами и контекстом. Важно учитывать:

  • Динамическую загрузку переводов
  • Плюрализацию (1 cat vs 2 cats)
  • Форматирование дат/валют
  • RTL-поддержку для арабского/иврита

Ответ 18+ 🔞

Да ты посмотри, какие у нас тут варианты для интернационализации, блядь! Прямо как в магазине — выбирай на вкус, сука.

Ну, первое, что в голову приходит, это i18next, конечно. Штука мощная, как трактор, ёпта. Подключил — и поехали. Там тебе и плагины на любой цвет: кеширование, детектор языка, который сам угадает, на каком наречии твой пользователь матерится. Примерчик, смотри:

import i18n from 'i18next';
i18n.init({ lng: 'en', resources: { en: { translation: { key: 'value' }}}});

Всё, блядь, инициализировал и сидишь, как папа Карло, строки переводишь.

А если ты на Реакте сидишь, как приклеенный, то тебе, возможно, ближе React-Intl (он же FormatJS). Тоже охуенный инструмент, между прочим. Особенно если нужно не просто слова менять, а даты, числа, валюты вот это всё красиво форматировать. Там уже немного по-другому:

import { IntlProvider, FormattedMessage } from 'react-intl';
<IntlProvider locale="en" messages={messages}>
  <FormattedMessage id="greeting" defaultMessage="Hello" />
</IntlProvider>

Обернул провайдером — и всё приложение уже умное, полиглот, сука.

Есть ещё LinguiJS — для тех, кому i18next кажется перегруженным, а React-Intl — слишком реактовым. Простой API, сообщения по стандарту ICU, ключи из кода вытаскивает — красота, в общем.

А теперь, слушай сюда, самое главное, что часто забывают эти распиздяи, которые только за библиотеку хватаются. Если проект — маленькая сайтина на коленке, то можешь, блядь, и без этих монстров обойтись! Заведи себе JSON-файлик, накидай туда переводов и таскай их через контекст. И всё, пиши пропало.

Но! Вне зависимости от выбора, ёбаный насос, не забудь про три вещи:

  1. Плюрализацию. Чтобы правильно писать «1 кот» и «2 кота», а не «2 кот», как идиот.
  2. Форматирование дат и валют. А то у тебя американец увидит дату в формате «31.12.2024» и с ума сойдет, блядь.
  3. RTL-поддержку. Для арабского, иврита и прочих языков, где пишут справа налево. А то весь интерфейс съедет, и будет тебе пиздец, а не сайт.

Вот так вот, коротко и по делу, без воды. Выбирай, что душе угодно, и вперёд, переводить на языки мира, сука!