Skip to main content

Pseudolocalizarea: testați compatibilitatea i18n fără traduceri reale

Traducerile reale necesită timp și bani. Pseudolocalizarea transformă șirurile sursă într-un text lizibil, dar evident artificial, care dezvăluie imediat erorile i18n: șiruri introduse direct în cod, text care depășește spațiul disponibil, probleme RTL și erori de concatenare.

1

Ce este pseudolocalizarea?

Pseudolocalizarea înlocuiește caracterele din șirurile sursă cu unele accentuate sau extinse, asemănătoare vizual, adaugă caractere de umplere pentru extinderea textului și încadrează șirurile între paranteze drepte. Rezultatul rămâne lizibil pentru dezvoltatori, dar arată evident diferit de textul real, ceea ce face foarte ușoară identificarea șirurilor care nu au fost prelucrate prin funcțiile de traducere.

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
Pseudolocalizarea este cea mai rapidă modalitate de a identifica erorile i18n. Generarea durează câteva secunde, nu costă nimic și identifică probleme invizibile până la testarea cu o limbă reală. Fiecare proiect pregătit pentru i18n ar trebui să o utilizeze înainte de a comanda traduceri reale.
2

Utilizarea în proiectul dumneavoastră

Instalați i18n-pseudo și executați-l pentru fișierele dumneavoastră de localizare. Instrumentul detectează automat formatul fișierului și generează o versiune pseudolocalizată pe care o puteți încărca drept setare regională de test în aplicație.

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
Adăugați o setare regională fictivă în selectorul de limbă al aplicației în timpul dezvoltării. Atunci când dezvoltatorii o selectează, șirurile netraduse devin imediat vizibile. Eliminați setarea regională fictivă înainte de lansarea în producție.
3

7 strategii de transformare

i18n-pseudo oferă 7 strategii de transformare, fiecare testând un alt aspect al implementării dumneavoastră i18n. Utilizați-le individual pentru teste specifice sau combinați-le prin presetări pentru o acoperire completă.

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 presetări integrate

Presetările combină mai multe strategii în configurații utilizate frecvent. Utilizați o presetare pentru testare rapidă sau creați combinații personalizate pentru cerințele dumneavoastră specifice.

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

Integrarea CI/CD

Executați pseudolocalizarea în CI pentru a detecta automat regresiile i18n. Generați fișiere pseudolocalizate, redați ecranele principale și comparați-le cu capturile de referință. Orice text netransformat din capturi reprezintă o regresie: un nou șir introdus direct în cod, care a ocolit funcția de traducere.

.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

Încercați acum i18n Agent

Plasați aici fișierul de traducere

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

sau faceți clic pentru a-l selecta

Limbi țintă

Nu este necesară înregistrareaEstimare instantanee

Întrebări frecvente despre pseudolocalizare