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