Skip to main content

Pseudo-lokalisering: Test i18n-parathed uden rigtige oversættelser

Rigtige oversættelser tager tid og koster penge. Pseudo-lokalisering omdanner dine kildestrenge til læsbar, men tydeligt kunstig tekst, der straks afslører i18n-fejl — hardkodede strenge, tekstoverløb, RTL-problemer og problemer med sammenkædning.

1

Hvad er pseudo-lokalisering?

Pseudo-lokalisering erstatter tegn i dine kildestrenge med visuelt lignende tegn med accenter eller udvidede tegn, tilføjer udfyldning for at udvide teksten og omslutter strengene med kantede parenteser. Resultatet er stadig læsbart for udviklere, men ser tydeligt anderledes ud end rigtig tekst — så det er nemt at finde strenge, der ikke er omsluttet af oversættelsesfunktioner.

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
Pseudo-lokalisering er den hurtigste måde at finde i18n-fejl på. Det tager få sekunder at generere, koster intet og finder problemer, som er usynlige, indtil du tester med et rigtigt sprog. Alle i18n-klare projekter bør bruge det, før der bestilles rigtige oversættelser.
2

Brug i dit projekt

Installer i18n-pseudo og kør værktøjet på dine landestandardfiler. Værktøjet registrerer automatisk filformatet og genererer en pseudo-lokaliseret version, som du kan indlæse som en testlandestandard i din 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
Føj en 'pseudo'-landestandard til din apps sprogvælger under udviklingen. Når udviklere skifter til den, bliver uoversatte strenge straks synlige. Fjern pseudo-landestandarden før udgivelse til produktion.
3

7 transformationsstrategier

i18n-pseudo indeholder 7 transformationsstrategier, der hver tester et forskelligt aspekt af din i18n-implementering. Brug dem enkeltvis til målrettede test eller kombiner dem med forudindstillinger for at få omfattende dækning.

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 indbyggede forudindstillinger

Forudindstillinger kombinerer flere strategier i ofte anvendte konfigurationer. Brug en forudindstilling til hurtige test eller opret tilpassede kombinationer til dine specifikke 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-integration

Kør pseudo-lokalisering i CI for automatisk at finde i18n-regressioner. Generer pseudo-lokaliserede filer, gengiv centrale skærmbilleder og sammenlign dem med referenceskærmbilleder. Al uomdannet tekst i skærmbillederne er en regression — en ny hardkodet streng, der omgår oversættelsesfunktionen.

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

Slip din oversættelsesfil her

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

eller klik for at vælge en fil

Målsprog

Kræver ingen tilmeldingEstimat med det samme

Ofte stillede spørgsmål om pseudo-lokalisering