EMZETT.
Войти

i18n

Коротко: Сокращение от «internationalization» (интернационализация; 18 букв между i и n) — подготовка ПО к работе на нескольких языках и в нескольких регионах.

Подробнее: i18n охватывает, например, вынесение текстов в файлы переводов, форматирование даты/числа/валюты по локали и учёт направления текста (LTR/RTL). Собственно перевод на конкретный язык, напротив, называют «локализацией» (l10n). В Emzett i18n реализована через next-intl.

Подробности

Все эти нумеронимы следуют одному шаблону: первая и последняя буква плюс число букв между ними. Помимо i18n (интернационализация) и l10n (локализация) есть, например, a11y (доступность) или k8s (Kubernetes) — соглашение 1970-х годов, первоначально использовавшееся для экономной записи длинных слов на перфокартах/терминалах.

Типичные рабочие шаги i18n в приложении:

  1. Извлечение текстов: все тексты, жёстко прописанные в коде, выносятся в отдельные файлы переводов (например, de.json, en.json) вместо того, чтобы быть зашитыми в исходный код.
  2. Определение локали: приложение определяет, какой язык/регион предпочитает пользователь — по заголовкам браузера, префиксу URL (/de/..., /en/...) или сохранённой пользовательской настройке.
  3. Форматирование: числа, даты и валюты отображаются по-разному в зависимости от локали (например, 1.234,56 € в Германии и $1,234.56 в США) — для этого существуют специальные API вроде Intl.NumberFormat, чтобы не программировать это самому.
  4. Правила множественного числа: у разных языков разные формы множественного числа (немецкий: единственное/множественное; у некоторых языков вроде польского форм больше) — библиотеки i18n решают это специальным синтаксисом плюрализации вместо простой конкатенации строк.

В Emzett сама структура URL теперь целиком английская (например, /shop, /help вместо немецких эквивалентов), но видимый текст остаётся управляемым на нескольких языках через next-intl.

См. также: next-intl