Skip to main content

Инструмент псевдоперевода

Тестируйте интерфейс i18n до запуска. Создавайте искусственные переводы для стресс-тестирования макета, кодировки и двунаправленной отрисовки, не дожидаясь настоящих переводов.

Проблема

Ваш интерфейс идеально выглядит на английском. Затем появляется немецкий: строки на 40% длиннее нарушают все кнопки и обрезают каждый заголовок таблицы. Арабский переворачивает весь макет, а значки указывают не туда. Японскому нужны другие высоты строк, и тщательно расставленные карточки разваливаются. И всё это обнаруживается уже после оплаты переводов.

Исправлять ошибки макета i18n после перевода в среднем в 5-10 раз дороже, чем находить их во время разработки. Псевдоперевод выявляет эти проблемы бесплатно, до расходов на настоящие переводы.

Решение

i18n-pseudo создаёт искусственные переводы для стресс-тестирования интерфейса без ожидания переводчиков. Он применяет 7 стратегий преобразования — диакритические знаки, символы CJK, увеличение текста, маркеры RTL и другие — сохраняя заполнители ICU, синтаксис множественного числа и переменные интерполяции.

Установка

i18n-pseudo доступен как пакет npm и формула Homebrew, а также может быть собран из исходного кода с помощью Cargo.

Terminal
npm install -g @i18n-agent/i18n-pseudo
Пакет npm включает глобальный двоичный файл CLI. Зависимости среды выполнения не требуются.

7 стратегий преобразования

Каждая стратегия направлена на отдельный класс ошибок i18n. Применяйте их по отдельности с помощью флагов или объединяйте в предустановки.

StrategyFlagInputOutput
Accents--accentsHelloĤéľľó
CJK--cjkHello你好世界你好
Special Chars--specialHelloHel­lo
Expansion--expansion NSaveSave~~~~
Brackets--bracketsHello[Hello]
RTL--rtlHello‮Hello‬
Unicode Stress--unicode-stressHelloH́ȩl̈l̀õ
Диакритические знаки — самая популярная стратегия для обнаружения жёстко заданных строк. Если строка отображается в интерфейсе без диакритики, она не прошла через функцию перевода.

Предустановки

Предустановки объединяют стратегии для распространённых сценариев тестирования. Используйте --preset, чтобы применить группу стратегий одновременно.

PresetStrategiesUse Case
defaultaccents + bracketsQuick visual check that all strings are externalized
layoutexpansion (1.4x) + bracketsCatch truncation and overflow before real translations
charsetCJK + special + bracketsTest font rendering and character encoding
rtlRTL markers + bracketsVerify bidirectional layout without switching locale
fullAll strategies combinedMaximum stress test — everything at once

Примеры использования

Запустите i18n-pseudo для файла исходной локали. Он читает JSON, YAML, PO и другие форматы i18n, применяет выбранные стратегии и записывает преобразованный результат.

Terminal
# Default (accents + brackets)
i18n-pseudo en.json -o output/

# Layout testing (text expansion + brackets)
i18n-pseudo en.json --preset layout -o output/

# Specific strategies
i18n-pseudo en.json --accents --expansion 1.5 -o output/

# Kitchen sink
i18n-pseudo en.json --preset full -o output/

До и после

Вот как стандартная предустановка — диакритика и скобки — изменяет обычный файл перевода. Обратите внимание: синтаксис множественного числа ICU и заполнители интерполяции сохраняются в точности.

Before & After
// Input (en.json):
{
  "greeting": "Hello, {name}!",
  "save": "Save",
  "items": "{count, plural, one {# item} other {# items}}"
}

// Output (default preset — accents + brackets):
{
  "greeting": "[Ĥéľľó, {name}!]",
  "save": "[Šáṽé]",
  "items": "[{count, plural, one {# íťéɱ} other {# íťéɱš}}]"
}
Заполнители, такие как {name} и {count}, а также выражения множественного числа ICU никогда не изменяются. Преобразуются только переводимые текстовые сегменты, поэтому приложение правильно отрисовывает псевдопереведённые файлы.

Интеграция с CI

Добавьте псевдоперевод в конвейер CI, чтобы автоматически выявлять регрессии i18n. Создайте псевдопереведённые файлы, а затем выполните для них визуальные регрессионные тесты.

CI Pipeline
# Generate pseudo-translations and run visual regression
i18n-pseudo locales/en.json --preset layout -o locales/pseudo/
NEXT_PUBLIC_LOCALE=pseudo npx playwright test --project=visual
Объедините предустановку макета с визуальным регрессионным тестированием через Playwright или Chromatic. Любой компонент, который выходит за границы или обрезается при увеличении текста в 1,4 раза, не пройдёт визуальное сравнение.

Связанные инструменты и руководства

Попробовать i18n Agent

Перетащите сюда файл перевода

JSON, YAML, PO, XML, CSV, Markdown, Properties

или нажмите, чтобы выбрать

Целевые языки

Регистрация не требуетсяМгновенный расчёт

Часто задаваемые вопросы