
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.
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 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 visibleGebruik 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.
// 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 text7 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.
// 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 pass5 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.
// 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.*"
]
}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
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: pseudoProbeer i18n Agent nu
Zet je vertaalbestand hier neer
JSON, YAML, PO, XML, CSV, Markdown, Properties
of klik om een bestand te selecteren
Doeltalen