Skip to main content

Псевдолокалізація: перевірка готовності до i18n без справжніх перекладів

Справжні переклади потребують часу та коштів. Псевдолокалізація перетворює Ваші вихідні рядки на читабельний, але очевидно несправжній текст, який миттєво виявляє помилки i18n: жорстко задані рядки, переповнення текстом, проблеми RTL і помилки конкатенації.

1

Що таке псевдолокалізація?

Псевдолокалізація замінює символи у Ваших вихідних рядках візуально подібними акцентованими або розширеними символами, додає заповнення для збільшення довжини тексту та обгортає рядки дужками. Результат залишається читабельним для розробників, але помітно відрізняється від справжнього тексту, тому рядки, які не було обгорнуто функціями перекладу, легко виявити.

Pseudo-localization examples
// Pseudo-localization transforms your source strings
// to simulate translation without real translators

// Original:
"Welcome to our application"

// Accented (simulates diacritics):
"[Ẁëľčöṁë ţö öüŕ àṗṗľïčàţïöñ]"

// Expanded (simulates text expansion ~30%):
"[Weeelcooomee tooo ouuur aaappliiicaaatiiioon]"

// Mirrored (simulates RTL layout):
"[noitacilppa ruo ot emocleW]"

// Brackets make untranslated strings immediately visible
Псевдолокалізація — найшвидший спосіб знайти помилки i18n. Її створення триває лічені секунди й нічого не коштує, а ще вона виявляє проблеми, непомітні до тестування справжньою мовою. Кожен готовий до i18n проєкт має використовувати її до замовлення справжніх перекладів.
2

Використання у Вашому проєкті

Установіть i18n-pseudo та запустіть його для своїх файлів локалей. Інструмент автоматично визначить формат файлу та створить псевдолокалізовану версію, яку можна завантажити як тестову локаль у Вашому застосунку.

Issues caught by pseudo-localization
// 1. Hardcoded strings (not wrapped in t())
// Pseudo strings have brackets/accents, so untranslated
// strings are immediately obvious in the UI

// 2. Text truncation
// Expanded text reveals buttons and labels that break
// when translations are longer than English

// 3. Layout issues
// Accented characters reveal font rendering problems
// RTL mode reveals directional layout bugs

// 4. Concatenation bugs
// "Hello " + name vs t('greeting', { name })
// Pseudo-localization breaks concatenated strings

// 5. Missing i18n wrappers
// Any string not going through the i18n system
// appears as plain English among pseudo text
Під час розробки додайте локаль «pseudo» до перемикача мов у Вашому застосунку. Коли розробники виберуть її, неперекладені рядки одразу стануть помітними. Видаліть псевдолокаль перед розгортанням у виробничому середовищі.
3

7 стратегій перетворення

i18n-pseudo пропонує 7 стратегій перетворення, кожна з яких перевіряє окремий аспект Вашої реалізації i18n. Використовуйте їх окремо для цільового тестування або поєднуйте в набори налаштувань для комплексної перевірки.

Pseudo-localization strategies
// Strategy 1: Accented characters
// Replace ASCII with similar-looking Unicode
// a -> à, e -> ë, o -> ö, etc.
// Preserves readability while testing rendering

// Strategy 2: Text expansion
// Pad strings to simulate longer translations
// German is ~30% longer, Finnish ~40% longer
// Helps catch UI overflow early

// Strategy 3: Brackets/wrappers
// Wrap strings in [brackets] or «guillemets»
// Makes untranslated strings visually obvious

// Strategy 4: Bidi/RTL
// Mirror text for right-to-left testing
// Catches layout issues before Arabic/Hebrew testing

// Strategy 5: Combined
// Apply all strategies simultaneously
// Maximum coverage in one pass
4

5 вбудованих наборів налаштувань

Набори налаштувань поєднують кілька стратегій у часто потрібні конфігурації. Використовуйте готовий набір для швидкого тестування або створюйте власні комбінації відповідно до своїх потреб.

CLI & Configuration
// Using i18n-pseudo CLI
npx i18n-pseudo generate \
  --source locales/en.json \
  --output locales/pseudo.json \
  --preset accented

# Available presets:
# accented  - Ḣëľľö Ẁöŕľð (default)
# expanded  - Heeellooo Wooorld
# mirrored  - dlroW olleH
# brackets  - [Hello World]
# maximum   - [Ḣëëëľľľöööö Ẁöööŕŕŕľľľðððð]

// i18n-pseudo.config.json
{
  "source": "locales/en.json",
  "output": "locales/pseudo.json",
  "preset": "maximum",
  "expansion": 1.4,
  "wrapper": ["[", "]"],
  "exclude": [
    "*.url",
    "*.email",
    "branding.*"
  ]
}
5

Інтеграція з CI/CD

Запускайте псевдолокалізацію в CI, щоб автоматично виявляти регресії i18n. Створюйте псевдолокалізовані файли, відтворюйте ключові екрани та порівнюйте їх з еталонними знімками. Будь-який неперетворений текст на знімках — це регресія: новий жорстко заданий рядок, який оминув функцію перекладу.

.github/workflows/pseudo-check.yml
# .github/workflows/pseudo-check.yml
name: Pseudo-Localization Check

on:
  pull_request:
    paths:
      - 'src/**'

jobs:
  pseudo-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install dependencies
        run: npm ci

      - name: Generate pseudo locale
        run: npx i18n-pseudo generate \
          --source locales/en.json \
          --output locales/pseudo.json \
          --preset maximum

      - name: Build with pseudo locale
        run: npm run build
        env:
          NEXT_PUBLIC_LOCALE: pseudo

      - name: Run visual regression tests
        run: npx playwright test --project=pseudo
        env:
          LOCALE: pseudo

Спробуйте i18n Agent зараз

Перетягніть сюди файл для перекладу

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

або натисніть, щоб вибрати

Цільові мови

Реєстрація не потрібнаМиттєвий розрахунок

Поширені запитання про псевдолокалізацію