Skip to main content

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ó.

1

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 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
La pseudolocalització és la manera més ràpida de trobar errors d’i18n. Es genera en segons, no costa res i detecta problemes invisibles fins que es prova una llengua real. Qualsevol projecte preparat per a la i18n l’hauria d’utilitzar abans d’encarregar traduccions reals.
2

Ú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ó.

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
Afegeixi una configuració regional «pseudo» al selector de llengua de l’aplicació durant el desenvolupament. Quan els desenvolupadors hi canviïn, les cadenes sense traduir seran visibles immediatament. Elimini aquesta configuració regional abans de publicar l’aplicació en producció.
3

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

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

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

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
# .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

Provar i18n Agent ara

Arrossegar aquí el fitxer de traducció

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

o fer clic per explorar

Idiomes de destinació

No cal registrePressupost instantani

Preguntes freqüents sobre la pseudolocalització