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

или натиснете, за да изберете файл

Целеви езици

Не се изисква регистрацияНезабавна оценка

Често задавани въпроси за псевдолокализацията