Skip to main content

Pseudo-localizace: Otestujte připravenost i18n bez skutečných překladů

Skutečné překlady stojí čas i peníze. Pseudo-localizace přemění zdrojové řetězce na čitelný, ale zjevně falešný text, který okamžitě odhalí chyby i18n — natvrdo zapsané řetězce, přetékání textu, problémy s RTL a potíže s konkatenací.

1

Co je pseudo-localizace?

Pseudo-localizace nahrazuje znaky ve zdrojových řetězcích vizuálně podobnými akcentovanými nebo rozšířenými znaky, přidává výplň pro rozšíření textu a obaluje řetězce do závorek. Výsledek je pro vývojáře stále čitelný, ale zjevně odlišný od reálného textu — díky tomu snadno poznáte řetězce, které nebyly obaleny překladovými funkcemi.

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
Pseudo-localizace je nejrychlejší způsob, jak najít chyby i18n. Vygeneruje se během pár sekund, nic nestojí a odhalí problémy, které jsou neviditelné, dokud netestujete se skutečným jazykem. Každý projekt připravený na i18n by ji měl použít před zadáním skutečných překladů.
2

Použití ve Vašem projektu

Nainstalujte i18n-pseudo a spusťte ho nad Vašimi locale soubory. Nástroj automaticky detekuje formát souboru a vygeneruje pseudo-localizovanou verzi, kterou můžete v aplikaci načíst jako testovací locale.

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
Během vývoje přidejte do přepínače jazyků Vaší aplikace locale 'pseudo'. Když na něj vývojáři přepnou, nepřeložené řetězce jsou okamžitě viditelné. Před nasazením do produkce pseudo locale odeberte.
3

7 transformačních strategií

i18n-pseudo poskytuje 7 transformačních strategií, z nichž každá testuje jiný aspekt Vaší implementace i18n. Používejte je samostatně pro cílené testování nebo je kombinujte pomocí předvoleb pro komplexní pokrytí.

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 vestavěných předvoleb

Předvolby kombinují více strategií do běžně potřebných konfigurací. Použijte předvolbu pro rychlé testování nebo si vytvořte vlastní kombinace pro Vaše konkrétní potřeby.

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

Integrace do CI/CD

Spouštějte pseudo-localizaci v CI, aby se automaticky odhalovaly regrese i18n. Generujte pseudo-localizované soubory, vykreslete klíčové obrazovky a porovnejte je se základními screenshoty. Jakýkoli netransformovaný text na screenshots je regrese — nový natvrdo zapsaný řetězec, který obešel překladovou funkci.

.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

Vyzkoušejte i18n Agent nyní

Sem přetáhněte svůj překladový soubor

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

nebo klikněte a vyberte soubor

Cílové jazyky

Bez registraceOkamžitý odhad

FAQ k pseudo-localizaci