
Pseudolocalització: provi la preparació per a la i18n sense traduccions reals
Les traduccions reals requereixen temps i diners. La pseudolocalització transforma les cadenes d’origen en text llegible però clarament fictici que revela de seguida els errors d’i18n: cadenes escrites directament al codi, desbordaments de text, problemes d’RTL i errors de concatenació.
Què és la pseudolocalització?
La pseudolocalització substitueix els caràcters de les cadenes d’origen per caràcters accentuats o ampliats visualment semblants, afegeix farciment per simular l’expansió del text i envolta les cadenes entre claudàtors. El resultat continua sent llegible per als desenvolupadors, però es diferencia clarament del text real, cosa que permet detectar fàcilment les cadenes que no s’han processat amb funcions de traducció.
// 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Ús al projecte
Instal·li i18n-pseudo i executi'l amb els arxius de configuració regional. L’eina detecta automàticament el format de l’arxiu i genera una versió pseudolocalitzada que pot carregar com a configuració regional de prova a l’aplicació.
// 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 estratègies de transformació
i18n-pseudo ofereix 7 estratègies de transformació, cadascuna de les quals prova un aspecte diferent de la implementació d’i18n. Utilitzi-les individualment per fer proves específiques o combini-les amb valors predefinits per obtenir una cobertura completa.
// 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 valors predefinits integrats
Els valors predefinits combinen diverses estratègies en configuracions d’ús habitual. Utilitzi'n un per fer proves ràpides o creï combinacions personalitzades segons les seves necessitats.
// 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.*"
]
}Integració amb CI/CD
Executi la pseudolocalització a la CI per detectar automàticament regressions d’i18n. Generi arxius pseudolocalitzats, representi les pantalles clau i compari-les amb captures de pantalla de referència. Qualsevol text no transformat de les captures és una regressió: una cadena nova escrita directament al codi que ha eludit la funció de traducció.
# .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: pseudoProvar i18n Agent ara
Arrossegar aquí el fitxer de traducció
JSON, YAML, PO, XML, CSV, Markdown, Properties
o fer clic per explorar
Idiomes de destinació