Skip to main content

Pseudolokalisatie: test de i18n-gereedheid zonder echte vertalingen

Echte vertalingen kosten tijd en geld. Pseudolokalisatie zet je bronteksten om in leesbare, maar duidelijk kunstmatige tekst die i18n-fouten direct blootlegt, zoals hardgecodeerde tekenreeksen, overlopende tekst, RTL-problemen en aaneenschakelingsfouten.

1

Wat is pseudolokalisatie?

Pseudolokalisatie vervangt tekens in je bronteksten door visueel vergelijkbare accenttekens of andere uitgebreide tekens, voegt opvulling toe om tekst uit te breiden en zet tekenreeksen tussen blokhaken. Het resultaat blijft leesbaar voor ontwikkelaars, maar wijkt duidelijk af van echte tekst. Zo zie je meteen welke tekenreeksen niet via vertaalfuncties zijn verwerkt.

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
Pseudolokalisatie is de snelste manier om i18n-fouten te vinden. Het genereren duurt enkele seconden, kost niets en brengt problemen aan het licht die onzichtbaar blijven totdat je met een echte taal test. Elk project dat klaar is voor i18n zou deze techniek moeten gebruiken voordat er echte vertalingen worden besteld.
2

Gebruik in je project

Installeer i18n-pseudo en voer het uit voor je localebestanden. Het hulpprogramma herkent de bestandsindeling automatisch en genereert een gepseudolokaliseerde versie die je als testlocale in je app kunt laden.

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
Voeg tijdens de ontwikkeling een 'pseudo'-locale toe aan de taalkeuzelijst van je app. Zodra ontwikkelaars ernaar overschakelen, zijn onvertaalde tekenreeksen direct zichtbaar. Verwijder de pseudo-locale voordat je de productieversie uitbrengt.
3

7 transformatiestrategieën

i18n-pseudo biedt 7 transformatiestrategieën die elk een ander aspect van je i18n-implementatie testen. Gebruik ze afzonderlijk voor gerichte tests of combineer ze in voorinstellingen voor een volledige dekking.

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 ingebouwde voorinstellingen

Voorinstellingen combineren meerdere strategieën tot veelgebruikte configuraties. Gebruik een voorinstelling voor een snelle test of maak aangepaste combinaties voor je specifieke behoeften.

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-integratie

Voer pseudolokalisatie uit in CI om i18n-regressies automatisch op te sporen. Genereer gepseudolokaliseerde bestanden, render de belangrijkste schermen en vergelijk ze met referentieschermafbeeldingen. Elke niet-getransformeerde tekst in de schermafbeeldingen is een regressie: een nieuwe hardgecodeerde tekenreeks die de vertaalfunctie omzeilt.

.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

Probeer i18n Agent nu

Zet je vertaalbestand hier neer

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

of klik om een bestand te selecteren

Doeltalen

Geen registratie nodigDirecte prijsindicatie

Veelgestelde vragen over pseudolokalisatie