Skip to main content

Pseudolocalizzazione: testare l'idoneità all'i18n senza traduzioni reali

Le traduzioni reali richiedono tempo e denaro. La pseudolocalizzazione trasforma le stringhe di origine in testo leggibile ma palesemente fittizio, che rivela immediatamente gli errori i18n: stringhe codificate direttamente, testo che fuoriesce, problemi RTL e difetti di concatenazione.

1

Che cos'è la pseudolocalizzazione?

La pseudolocalizzazione sostituisce i caratteri delle stringhe di origine con caratteri accentati o estesi visivamente simili, aggiunge riempimento per espandere il testo e racchiude le stringhe tra parentesi. Il risultato rimane leggibile per gli sviluppatori, ma è chiaramente diverso dal testo reale, rendendo immediato individuare le stringhe non racchiuse con funzioni di traduzione.

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 pseudolocalizzazione è il modo più rapido per trovare gli errori i18n. La generazione richiede pochi secondi, non costa nulla e rileva problemi invisibili finché non si eseguono test con una lingua reale. Ogni progetto pronto per l'i18n dovrebbe usarla prima di commissionare traduzioni reali.
2

Utilizzo nel progetto

Installi i18n-pseudo e lo esegua sui file di lingua. Lo strumento rileva automaticamente il formato e genera una versione pseudolocalizzata, che può caricare come lingua di test nell'app.

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
Durante lo sviluppo, aggiunga una lingua 'pseudo' al selettore dell'app. Quando gli sviluppatori la scelgono, le stringhe non tradotte diventano subito visibili. Rimuova la pseudolingua prima del rilascio in produzione.
3

7 strategie di trasformazione

i18n-pseudo offre 7 strategie di trasformazione, ciascuna delle quali verifica un aspetto diverso dell'implementazione i18n. Le usi singolarmente per test mirati oppure le combini con preimpostazioni per una copertura 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 preimpostazioni integrate

Le preimpostazioni combinano più strategie in configurazioni di uso comune. Usi una preimpostazione per un test rapido oppure crei combinazioni personalizzate per esigenze specifiche.

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

Integrazione CI/CD

Esegua la pseudolocalizzazione nella CI per rilevare automaticamente le regressioni i18n. Generi file pseudolocalizzati, visualizzi le schermate principali e le confronti con le acquisizioni di riferimento. Qualsiasi testo non trasformato nelle immagini è una regressione: una nuova stringa codificata direttamente che ha ignorato la funzione di traduzione.

.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

Provi subito i18n Agent

Trascinare qui il file di traduzione

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

oppure fare clic per selezionarlo

Lingue di destinazione

Nessuna registrazione richiestaPreventivo immediato

Domande frequenti sulla pseudolocalizzazione