Skip to main content

Pseudolokalisering: Test i18n-beredskap uten ekte oversettelser

Ekte oversettelser tar tid og koster penger. Pseudolokalisering transformerer kildestrengene dine til lesbar, men åpenbart kunstig tekst som avslører i18n-feil umiddelbart – hardkodede strenger, tekstoverløp, RTL-problemer og sammenkoblingsfeil.

1

Hva er pseudolokalisering?

Pseudolokalisering erstatter tegn i kildestrengene dine med visuelt lignende tegn med aksent eller utvidede tegn, legger til utfylling for tekstutvidelse og omslutter strenger med hakeparenteser. Resultatet er fortsatt lesbart for utviklere, men ser tydelig annerledes ut enn ekte tekst – dermed blir det svært enkelt å oppdage strenger som ikke er omsluttet av oversettelsesfunksjoner.

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
Pseudolokalisering er den raskeste måten å finne i18n-feil på. Det tar sekunder å generere, koster ingenting og fanger opp problemer som er usynlige frem til du tester med et ekte språk. Alle i18n-klare prosjekter bør bruke det før de bestiller ekte oversettelser.
2

Bruk i prosjektet ditt

Installer i18n-pseudo og kjør det mot lokaliseringsfilene dine. Verktøyet oppdager filformatet automatisk og genererer en pseudolokalisert versjon som du kan laste inn som en testspråkvariant i appen.

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
Legg til en «pseudo»-språkvariant i appens språkvelger under utviklingen. Når utviklere bytter til den, blir uoversatte strenger synlige med én gang. Fjern pseudospråkvarianten før appen rulles ut i produksjon.
3

7 transformeringsstrategier

i18n-pseudo tilbyr 7 transformeringsstrategier som tester hvert sitt aspekt ved i18n-implementasjonen din. Bruk dem enkeltvis til målrettet testing, eller kombiner dem med forhåndsinnstillinger for omfattende dekning.

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 innebygde forhåndsinnstillinger

Forhåndsinnstillinger kombinerer flere strategier i konfigurasjoner som ofte trengs. Bruk en forhåndsinnstilling til rask testing, eller opprett egne kombinasjoner for dine spesifikke behov.

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

Kjør pseudolokalisering i CI for å oppdage i18n-regresjoner automatisk. Generer pseudolokaliserte filer, gjengi sentrale skjermbilder og sammenlign dem med referanseskjermbilder. All utransformert tekst i skjermbildene er en regresjon – en ny hardkodet streng som gikk utenom oversettelsesfunksjonen.

.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

Prøv i18n Agent nå

Slipp oversettelsesfilen din her

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

eller klikk for å bla gjennom

Målspråk

Ingen registrering krevesUmiddelbart estimat

Vanlige spørsmål om pseudolokalisering