Что такое 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/2026 | 19.03.2026 | 2026/03/19 | ١٩/٠٣/٢٠٢٦ |
| Число | 1,234.56 | 1.234,56 | 1,234.56 | ١٬٢٣٤٫٥٦ |
| Валюта | $1,234.56 | 1.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 для сложных строк с множественными числами, родом и переменными. Он обрабатывает огромные грамматические различия между языками.
- Не забывайте пользовательский контент: Пользователи будут вводить текст на любом языке. Убедитесь, что поиск, сортировка и отображение работают корректно со смешанноязычным содержимым.