В чем разница между интернационализацией (i18n) и локализацией (l10n)?

«В чем разница между интернационализацией (i18n) и локализацией (l10n)?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Интернационализация (i18n) — это проектирование и разработка приложения, позволяющее легко адаптировать его для разных языков и регионов без изменений в коде.

Локализация (l10n) — это процесс адаптации уже интернационализированного приложения под конкретный язык, регион или культуру (переводы, форматы дат, валют).

i18n — подготовка, l10n — реализация.

Пример i18n в коде (подготовка):

// Плохо: хардкод строк
console.log("Welcome");

// Хорошо: использование ключей
console.log(i18n.t('welcome.message'));

Пример файлов локализации (l10n): en.json:

{
  "welcome.message": "Welcome"
}

ru.json:

{
  "welcome.message": "Добро пожаловать"
}

Практические аспекты i18n:

  • Вынос всех строк в ресурсные файлы.
  • Поддержка Юникода (UTF-8).
  • Учет разной длины текста при верстке.
  • Абстрагирование форматов дат, чисел, валют.

Практические аспекты l10n:

  • Перевод текстов и интерфейса.
  • Адаптация графики и цветов.
  • Настройка региональных форматов (например, дата DD.MM.YYYY vs MM/DD/YYYY).