Как вы проверяете интернационализацию (i18n) приложения?

Ответ

Методы и инструменты для тестирования i18n:

1. Ручное тестирование:

  • Смена локали в браузере (Chrome DevTools): chrome://settings/languages.
  • Использование библиотек (i18next): Принудительное переключение языка в коде для проверки динамических переводов.
    i18n.changeLanguage('de'); // Переключение на немецкий

2. Псевдолокализация (Pseudolocalization):

  • Цель: Выявить проблемы с разметкой UI (обрезанный текст, жестко закодированные строки).
  • Метод: Замена оригинальных строк на расширенные или обернутые в скобки (напр., [Ẏöûř ŝţřîñĝ îš ĥëřë]).

3. Автоматизированное тестирование:

  • Selenium/Playwright: Параметризованные тесты, запускаемые для разных языковых локалей.
  • Скрипты: Проверка полноты файлов переводов (отсутствие ключей).

4. Ключевые аспекты для проверки:

  • Локализация контента: Полнота и корректность переводов.
  • Форматирование: Даты, время, числа, валюта.
  • Макет: Поддержка RTL-языков (арабский, иврит), адаптация длины строк.
  • Фолбэк: Поведение системы при отсутствии перевода для выбранного языка.

Ответ 18+ 🔞

Да ты посмотри, какие извращения придумали, чтобы интерфейс на всех языках не разъехался! Прямо как в том анекдоте про Герасима — либо всё идеально, либо топить в пизду. Вот и тут так же.

1. Ручное ковыряние, оно же «глаз-алмаз»:

  • В браузере ковыряемся: Залезть в chrome://settings/languages и тупо сменить язык системы. Просто, как три копейки, но иногда только так и вылезает, что какая-нибудь кнопка на немецком в два раза длиннее и нахерачивает весь макет.
  • Библиотеки в помощь: Берёшь i18next и насильно переключаешь язык прямо в консоли. Типа, «а ну-ка, покажись мне, сучка, на японском!».
    i18n.changeLanguage('de'); // Щас всё по-немецки заговорит

2. Псевдолокализация — хитрая жопа!

  • Зачем это? Чтобы сразу видеть, где текст влез, а где его обрезало, как последнего мудака. Не надо ждать, пока переводчики с китайского пришлют работу.
  • Как? Все строки автоматом заменяются на вот такое вот: [Ẏöûř ŝţřîñĝ îš ĥëřë]. Видишь квадратные скобки — значит, строка подтянулась из словаря. Не видишь — всё, пизда, жёстко закодирована где-то в недрах.

3. Автоматы, чтобы не ебаться вручную:

  • Selenium/Playwright: Пишешь тест один раз, а он гоняет его для десятка языков. Умно, да? А то сидеть и тыкать в кнопки на турецком — терпения ноль ебать.
  • Скрипты-сравниватели: Тупо проверяют, что во всех файлах переводов одинаковый набор ключей. А то окажется, что для русского есть buttons.cancel, а для испанского — хуй с горы, и кнопка «Отмена» так и светит английским словом cancel. Позор!

4. На что смотреть, чтобы не облажаться:

  • Переводы: Они вообще есть? Или вместо текста — ключи типа common.error_429 торчат? Это пиздец.
  • Форматирование: Дата 04/07/2023 — это июль или апрель? Американец подерётся с европейцем из-за этого. И валюта: где запятая, где точка, где пробел? Мелочь, а глаза ебёт.
  • Вёрстка: Арабский и иврит пишутся справа налево (RTL). Твоя красивая карточка от этого не превратится в тыкву? И ещё: немецкое слово может быть длиннее русского в три раза. Выдержит ли твой дизайн?
  • Фолбэк: А что будет, если пользователь выбрал, блядь, редкий диалект фриульского, а перевода нет? Упадёт всё к хуям или с умным видом покажет английский? Это надо решать, а не надеяться на авось.

Вот так и живём. Сделал интернационализацию — будь добр, проверь её со всех сторон, а не как тот Герасим, который взял да и утопил проблему, вместо того чтобы решить.