Skip to main content

Pseudolokalizavimas: patikrinkite i18n parengtį be tikrų vertimų

Tikriems vertimams reikia laiko ir pinigų. Pseudolokalizavimas paverčia šaltinio eilutes įskaitomu, bet akivaizdžiai netikru tekstu, kuris iškart atskleidžia i18n klaidas – kode įrašytas eilutes, teksto perpildymą, RTL problemas ir jungimo trūkumus.

1

Kas yra pseudolokalizavimas?

Pseudolokalizuojant šaltinio eilučių simboliai pakeičiami vizualiai panašiais kirčiuotais arba išplėstiniais simboliais, pridedamas teksto išplėtimo užpildas, o eilutės apgaubiamos skliaustais. Rezultatas vis dar įskaitomas kūrėjams, bet akivaizdžiai skiriasi nuo tikro teksto, todėl lengva pastebėti eilutes, kurios nebuvo apdorotos vertimo funkcijomis.

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
Pseudolokalizavimas yra greičiausias būdas rasti i18n klaidas. Sugeneruojamas per kelias sekundes, nieko nekainuoja ir aptinka problemas, kurios nematomos, kol neišbandote tikros kalbos. Kiekvienas i18n parengtas projektas turėtų jį naudoti prieš užsakydamas tikrus vertimus.
2

Naudojimas projekte

Įdiekite i18n-pseudo ir paleiskite jį savo lokalės failams. Įrankis automatiškai aptinka failo formatą ir sugeneruoja pseudolokalizuotą versiją, kurią galite įkelti į programą kaip bandomąją lokalę.

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
Kūrimo metu programos kalbų perjungiklyje pridėkite „pseudo“ lokalę. Kūrėjams į ją perjungus, neišverstos eilutės iškart tampa matomos. Prieš išleisdami į gamybinę aplinką pseudolokalę pašalinkite.
3

7 keitimo strategijos

i18n-pseudo pateikia 7 transformavimo strategijas, kurių kiekviena tikrina skirtingą i18n įgyvendinimo aspektą. Naudokite jas atskirai tiksliniam testavimui arba derinkite su išankstiniais nustatymais, kad aprėptis būtų išsami.

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 integruoti išankstiniai nustatymai

Išankstiniai nustatymai sujungia kelias strategijas į dažnai reikalingas konfigūracijas. Naudokite išankstinį nustatymą greitam testavimui arba sukurkite pasirinktinius derinius pagal savo poreikius.

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 integracija

Vykdykite pseudolokalizavimą CI aplinkoje, kad automatiškai aptiktumėte i18n regresijas. Sugeneruokite pseudolokalizuotus failus, atvaizduokite pagrindinius ekranus ir palyginkite juos su bazinėmis ekrano kopijomis. Bet koks netransformuotas tekstas ekrano kopijose yra regresija – nauja kode įrašyta eilutė, aplenkusi vertimo funkciją.

.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

Išbandykite i18n Agent dabar

Nuvilkite vertimo failą čia

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

arba spustelėkite norėdami pasirinkti

Tikslinės kalbos

Registruotis nereikiaMomentinis įvertis

DUK apie pseudolokalizavimą