Какие инструменты вы используете для проверки локализации (l10n)?

Ответ

Инструменты для валидации файлов перевода и отображения локализованного UI:

1. Валидация файлов переводов:

  • XLIFF Checker / l10n-check: Проверка синтаксиса и структуры XML-файлов (.xlf).
  • Poedit: Редактор .po файлов с функциями проверки форматирования плейсхолдеров (например, %s).
  • Кастомные скрипты (Python с библиотекой polib): Автоматическая проверка на отсутствующие переводы.
    import polib
    po = polib.pofile('ru.po')
    untranslated = [entry.msgid for entry in po if entry.msgstr == '']
    print(f'Untranslated strings: {untranslated}')

2. Проверка отображения в UI:

  • Автоматизация (Selenium): Скриншот-тесты или проверка текста элементов для разных языков.
  • Псевдолокализация: Метод, при котором строки заменяются на "фейковые" (например, [Šťřîñĝ wīţħ āččěňţš]), чтобы быстро найти проблемы с переполнением контейнеров.

3. Специфичные проверки локализации:

  • RTL (Right-to-Left): Корректность выравнивания интерфейса для арабского или иврита.
  • Форматирование: Проверка локализованных форматов дат, чисел, единиц измерения.
  • Функциональность: Работа языкового переключателя и загрузка соответствующих ресурсов.

Ответ 18+ 🔞

А, ну вот, опять эти ваши локализации, блядь! Сидишь, переводишь, а потом выясняется, что половина текста в интерфейс не влезла, потому что немецкий, сука, в три раза длиннее. Ёпта, ядрёна вошь!

Так, слушай сюда, как не облажаться с этим делом. Инструменты, блядь, нужны.

Первое — файлы переводов проверить. Там же сплошные xlf, po, json — глаза сломаешь. Надо, чтобы синтаксис был целый, а то приложение возьмёт и нахуй сломается на ровном месте.

  • XLIFF Checker или l10n-check — это чтобы твои XML-файлы не были кривыми, как рога барана. Проверит, все ли теги на месте.
  • Poedit — для *.po файлов. Он не только редактировать позволяет, но и покажет, если ты забыл вписать переменную типа %s или {placeholder}. А если забудешь — будет вместо «Привет, Вася» красота: «Привет, %s». Пиздец и позор.
  • Свой скрипт на Python — вот это сила, блядь. Накидал проверку — и спи спокойно. Смотри, как просто:

    import polib
    po = polib.pofile('ru.po')
    untranslated = [entry.msgid for entry in po if entry.msgstr == '']
    print(f'Untranslated strings: {untranslated}')

    Запустил — и сразу видно, какие строки ты, мудак, проёбываешь переводить. Овердохуища удобно.

Второе — а что в интерфейсе-то будет, а? Перевёл — и ладно? Не, блядь, не ладно! Текст-то может вылезти за кнопку, как говно из штанов.

  • Автоматизация (Selenium) — можно заставить браузер открывать твоё приложение на разных языках и делать скриншоты. Или просто текст элементов вычитывать. Если что-то не так — сразу видно.
  • Псевдолокализация — это вообще гениально, ёпта. Берёшь все строки и заменяешь их на вот такое: [Šťřîñĝ wīţħ āččěňţš]. Если после такой подмены интерфейс не разъехался и все надписи видны — значит, запас по месту есть. А если нет — сразу видно, где жопа. Хитрая жопа, но метод работает.

Третье — специфичные штуки. Тут вообще волнение ебать, потому что можно облажаться так, что потом месяц отмываться.

  • RTL (справа налево) — это для арабского, иврита. Надо проверить, чтобы всё зеркально перевернулось правильно: выравнивание, кнопки, поток элементов. А то получится абракадабра, и пользователь тебе спасибо не скажет, а наоборот.
  • Форматирование — даты, числа, валюты. В США пишут 12/31/2023, а у нас 31.12.2023. Если везде будет американский формат для русского языка — это пиздец и моветон.
  • Функциональность — самый базовый сценарий: переключил язык в настройках — весь интерфейс должен тут же, блядь, поменяться. И ресурсы правильные подтянуться. Если после смены языка половина осталась на английском — это доверия ебать ноль к продукту.

Вот так вот, коротко и по делу. Главное — не надеяться на «авось», а проверять. Иначе получится история, как с Герасимом и Муму, только топить придётся не собаку, а свою репутацию, блядь.