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