Что такое I18n и L10n?

Интернационализация (I18n) — инженерный процесс проектирования ПО для адаптации к разным языкам и регионам без изменения кода. «18» обозначает 18 букв между «I» и «n» в слове «internationalization».

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

Аналогия: I18n — это создание автомобиля со сменной приборной панелью (руль слева или справа, приборы показывают км или мили). L10n — конфигурация этого автомобиля для конкретной страны.

I18n vs L10n тестирование

АспектТестирование I18nТестирование L10n
ФокусПоддерживает ли код несколько локалей?Корректна ли конкретная адаптация?
КогдаПри разработкеПосле перевода
Что проверяемВынесение строк, кодировка, форматыКачество перевода, культурная уместность
КтоРазработчики и QAПереводчики, носители языка, QA

Что тестировать: Проблемы I18n

Вынесение строк (String Externalization)

Весь пользовательский текст должен быть в файлах ресурсов, а не захардкожен.

Как тестировать: Использовать псевдолокализацию, искать захардкоженные строки в коде, проверить вынесение сообщений об ошибках, тултипов, кнопок и email-шаблонов.

Плохо: "Добро пожаловать, " + userName + "! У вас " + count + " сообщений." Хорошо: i18n("welcome_message", {name: userName, count: count})

Кодировка символов (UTF-8)

Как тестировать: Вводить символы разных скриптов: китайский (中文), арабский (العربية), японский (日本語). Тестировать эмодзи 👋🌍. Проверять корректное хранение и отображение. Тестировать поиск с нелатинскими символами.

Форматы даты, времени и чисел

ФорматСШАГерманияЯпонияАрабские страны
Дата03/19/202619.03.20262026/03/19١٩/٠٣/٢٠٢٦
Число1,234.561.234,561,234.56١٬٢٣٤٫٥٦
Валюта$1,234.561.234,56 €¥1,234١٬٢٣٤٫٥٦ ر.س

Расширение и сжатие текста

Переводы часто длиннее или короче оригинального английского:

ЯзыкСреднее расширение от английского
Немецкий+30%
Испанский+20%
Финский+30-40%
Китайский-50%
Японский-30%

Как тестировать: Проверять, что элементы UI обрабатывают более длинный текст без поломки раскладки, текст не обрезается без многоточия, тестировать с псевдолокализацией (расширение 30-40%).

Языки с записью справа налево (RTL)

Арабский, иврит, фарси и урду читаются справа налево. Это влияет на весь UI.

Что меняется: Выравнивание текста переворачивается, раскладка зеркалится, полосы прогресса заполняются справа налево, двунаправленный текст (RTL с вставленными LTR числами).

Как тестировать: Переключиться на RTL-язык, проверить корректное зеркалирование раскладки, проверить отображение чисел и английских слов внутри RTL-текста.

Валюта

  • Корректный символ и формат валюты по локали
  • Позиция символа валюты варьируется (€10 во Франции, 10€ в Германии)
  • Некоторые валюты без десятичных знаков (JPY, KRW)

Культурная чувствительность

  • Цвета имеют разные значения в разных культурах
  • Изображения и иконки должны быть культурно уместны
  • Форматы имён и адресов различаются по странам

Псевдолокализация

Техника, трансформирующая английский текст в акцентированную версию, читаемую, но имитирующую эффекты перевода.

Оригинал: “Save Changes” Псевдолокализовано: “[Šàvé Çĥàñĝéš!!!!!!]”

Добавляет: акцентированные символы (выявляют проблемы кодировки), расширение текста ~40% (выявляет обрезку), скобки (выявляют конкатенацию строк).

Упражнение: Чеклист L10n для многоязычного веб-приложения

Создайте комплексный чеклист тестирования L10n для веб-приложения, которое должно поддерживать английский, испанский, немецкий, арабский и японский.

Контекст

B2C платформа электронной коммерции: каталог товаров, корзина, оформление заказа с оплатой, профили пользователей, email-уведомления и чат поддержки.

Задание

Создайте чеклист, охватывающий все измерения L10n/I18n с конкретными тест-кейсами для каждого поддерживаемого языка.

Подсказка: Подумайте о каждой точке контакта с пользователем

Рассмотрите: текст UI, формы, даты/время, валюты, email, PDF, поиск, сортировку, ошибки, уведомления и пользовательский контент. Арабский требует особого внимания к RTL-раскладке.

Решение: Полный чеклист L10n

1. Вынесение строк

  • Псевдолокализация — весь текст UI трансформирован
  • Email-шаблоны на всех 5 языках
  • Сообщения об ошибках переведены
  • PDF-счета генерируются в локали клиента
  • Push/SMS-уведомления локализованы

2. Кодировка символов

  • Профиль с немецким именем (Müller, Größe)
  • Отзыв о товаре на японском
  • Поиск с арабскими символами
  • Экспорт CSV с многоязычным содержимым

3. Форматы даты/времени/чисел

  • EN: March 19, 2026 / $1,234.56
  • ES: 19 de marzo de 2026 / $1.234,56
  • DE: 19. März 2026 / 1.234,56 €
  • AR: ١٩ مارس ٢٠٢٦ / ١٬٢٣٤٫٥٦ ر.س
  • JA: 2026年3月19日 / ¥1,234
  • Часовые пояса показывают местное время пользователя

4. Расширение текста

  • Меню навигации на немецком (+30%) — без переполнения
  • Надписи кнопок на испанском — без обрезки
  • Заголовки таблиц на всех языках — колонки адаптируются
  • Мобильная раскладка с расширенным немецким текстом

5. RTL-раскладка (арабский)

  • Вся раскладка корректно зеркалится
  • Корзина работает справа налево
  • Шаги оформления заказа идут справа налево
  • Двунаправленный текст (арабская цена с цифрами) отображается верно
  • Иконки навигации зеркалированы
  • Метки форм выровнены правильно (правая сторона)

6. Валюта

  • USD: $1,234.56 / EUR: 1.234,56 € / JPY: ¥1,234 (без десятичных)
  • Позиция символа валюты верна по локали
  • Сортировка по цене работает корректно между валютами

7. Культурная чувствительность

  • Изображения уместны для всех целевых рынков
  • Форма адреса адаптируется по стране
  • Формат телефона поддерживает международные форматы

8. Сортировка и подбор (Collation)

  • Алфавитная сортировка корректна для немецкого (ä после a, не после z)
  • Японская сортировка использует правильную коллацию
  • Арабский поиск находит результаты с/без диакритических знаков
  • Испанская сортировка корректно обрабатывает ñ

Итого: 45+ тест-кейсов в 8 измерениях. Приоритет: вынесение строк и RTL-раскладка (наибольшая плотность багов), затем форматы и кодировка.

Профессиональные советы

  • Псевдолокализация в CI/CD: Интегрируйте псевдолокализацию в пайплайн сборки. Запускайте E2E-тесты с псевдолокализованными строками для автоматического обнаружения проблем раскладки.
  • Тестируйте с носителями языка: Автоматические инструменты не улавливают неуклюжие переводы, культурную нечувствительность или контекстно-зависимые значения. Пусть носители языка проверяют переводы в контексте.
  • Разделяйте тестирование I18n и L10n: Сначала I18n (поддерживает ли код локализацию?), затем L10n (корректна ли конкретная локализация?). Проблемы I18n — баги кода; проблемы L10n — баги контента.
  • Используйте ICU MessageFormat: Вместо конкатенации строк используйте ICU MessageFormat для сложных строк с множественными числами, родом и переменными. Он обрабатывает огромные грамматические различия между языками.
  • Не забывайте пользовательский контент: Пользователи будут вводить текст на любом языке. Убедитесь, что поиск, сортировка и отображение работают корректно со смешанноязычным содержимым.