i18n
Коротко: Сокращение от «internationalization» (интернационализация; 18 букв между i и n) — подготовка ПО к работе на нескольких языках и в нескольких регионах.
Подробнее: i18n охватывает, например, вынесение текстов в файлы переводов, форматирование даты/числа/валюты по локали и учёт направления текста (LTR/RTL). Собственно перевод на конкретный язык, напротив, называют «локализацией» (l10n). В Emzett i18n реализована через next-intl.
Подробности
Все эти нумеронимы следуют одному шаблону: первая и последняя буква плюс число букв между ними. Помимо i18n (интернационализация) и l10n (локализация) есть, например, a11y (доступность) или k8s (Kubernetes) — соглашение 1970-х годов, первоначально использовавшееся для экономной записи длинных слов на перфокартах/терминалах.
Типичные рабочие шаги i18n в приложении:
- Извлечение текстов: все тексты, жёстко прописанные в коде, выносятся в отдельные файлы переводов (например,
de.json,en.json) вместо того, чтобы быть зашитыми в исходный код. - Определение локали: приложение определяет, какой язык/регион предпочитает пользователь — по заголовкам браузера, префиксу URL (
/de/...,/en/...) или сохранённой пользовательской настройке. - Форматирование: числа, даты и валюты отображаются по-разному в зависимости от локали (например,
1.234,56 €в Германии и$1,234.56в США) — для этого существуют специальные API вродеIntl.NumberFormat, чтобы не программировать это самому. - Правила множественного числа: у разных языков разные формы множественного числа (немецкий: единственное/множественное; у некоторых языков вроде польского форм больше) — библиотеки i18n решают это специальным синтаксисом плюрализации вместо простой конкатенации строк.
В Emzett сама структура URL теперь целиком английская (например, /shop, /help вместо немецких эквивалентов), но видимый текст остаётся управляемым на нескольких языках через next-intl.
См. также: next-intl