Skip to main content

Pseudolokalisointi: testaa i18n-valmius ilman oikeita käännöksiä

Oikeat käännökset vievät aikaa ja rahaa. Pseudolokalisointi muuntaa lähdemerkkijonot luettavaksi mutta ilmeisen keinotekoiseksi tekstiksi, joka paljastaa i18n-virheet heti: kovakoodatut merkkijonot, tekstin ylivuodon, RTL-ongelmat ja ketjutusongelmat.

1

Mitä pseudolokalisointi on?

Pseudolokalisointi korvaa lähdemerkkijonojen merkit ulkoasultaan samankaltaisilla aksentoiduilla tai laajennetun merkistön merkeillä, lisää tekstiä pidentävää täytettä ja ympäröi merkkijonot sulkeilla. Tulos on kehittäjille yhä luettavissa, mutta näyttää selvästi erilaiselta kuin oikea teksti. Siksi merkkijonot, joita ei ole käsitelty käännösfunktiolla, on helppo havaita.

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
Pseudolokalisointi on nopein tapa löytää i18n-virheitä. Sen luominen vie sekunteja, ei maksa mitään ja löytää ongelmia, jotka pysyvät näkymättöminä oikealla kielellä testaamiseen asti. Jokaisen i18n-valmiin projektin kannattaa käyttää sitä ennen oikeiden käännösten tilaamista.
2

Käyttö projektissasi

Asenna i18n-pseudo ja suorita se kielialuetiedostoillesi. Työkalu tunnistaa tiedostomuodon automaattisesti ja luo pseudolokalisoidun version, jonka voit ladata sovellukseesi testikielialueena.

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
Lisää kehityksen ajaksi sovelluksesi kielivalitsimeen 'pseudo'-kielialue. Kun kehittäjä vaihtaa siihen, kääntämättömät merkkijonot näkyvät heti. Poista pseudokielialue ennen tuotantoon julkaisua.
3

7 muunnosstrategiaa

i18n-pseudo tarjoaa seitsemän muunnosstrategiaa, joista kukin testaa i18n-toteutuksesi eri osa-aluetta. Käytä niitä erikseen kohdennettuun testaukseen tai yhdistä esiasetuksilla kattavaa testausta varten.

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

Viisi sisäänrakennettua esiasetusta

Esiasetukset yhdistävät useita strategioita tavallisesti tarvittaviksi kokoonpanoiksi. Käytä esiasetusta nopeaan testaukseen tai luo omiin tarpeisiisi sopivia yhdistelmiä.

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

Suorita pseudolokalisointi CI:ssä, jotta i18n-regressiot havaitaan automaattisesti. Luo pseudolokalisoidut tiedostot, hahmonna tärkeät näkymät ja vertaa niitä vertailukuvakaappauksiin. Kuvakaappausten muuntamaton teksti on regressio: uusi kovakoodattu merkkijono, joka ohitti käännösfunktion.

.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

Kokeile i18n Agent:ia nyt

Pudota käännöstiedostosi tähän

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

tai valitse napsauttamalla

Kohdekielet

Rekisteröitymistä ei tarvitaVälitön arvio

Pseudolokalisoinnin usein kysytyt kysymykset