Skip to main content

Penyetempatan Pseudo: Uji Kesediaan i18n Tanpa Terjemahan Sebenar

Terjemahan sebenar memerlukan masa dan kos. Penyetempatan pseudo mengubah rentetan sumber anda menjadi teks yang boleh dibaca, tetapi jelas palsu, lalu mendedahkan pepijat i18n serta-merta — rentetan yang dikod keras, teks melimpah, masalah RTL, dan masalah penggabungan.

1

Apakah Itu Penyetempatan Pseudo?

Penyetempatan pseudo menggantikan aksara dalam rentetan sumber dengan aksara beraksen atau aksara diperluas yang kelihatan serupa, menambahkan pelapik pengembangan teks, dan membalut rentetan dalam kurungan. Hasilnya masih boleh dibaca oleh pembangun, tetapi kelihatan jelas berbeza daripada teks sebenar — lalu rentetan yang tidak dibalut dengan fungsi terjemahan mudah dikesan.

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
Penyetempatan pseudo ialah cara terpantas untuk mengesan pepijat i18n. Penjanaannya hanya mengambil masa beberapa saat, tanpa kos, dan mengesan masalah yang tidak kelihatan sehingga anda menguji dengan bahasa sebenar. Setiap projek yang sedia untuk i18n patut menggunakannya sebelum menempah terjemahan sebenar.
2

Penggunaan dalam Projek anda

Pasang i18n-pseudo dan jalankannya pada fail lokal anda. Alat ini mengesan format fail secara automatik dan menjana versi disetempatkan secara pseudo untuk dimuatkan sebagai lokal pengujian dalam aplikasi anda.

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
Tambahkan lokal 'pseudo' pada penukar bahasa aplikasi semasa pembangunan. Apabila pembangun beralih kepada lokal tersebut, rentetan yang belum diterjemahkan terus kelihatan. Buang lokal pseudo sebelum melancarkan ke pengeluaran.
3

7 Strategi Transformasi

i18n-pseudo menyediakan 7 strategi transformasi yang masing-masing menguji aspek berbeza daripada pelaksanaan i18n anda. Gunakannya satu demi satu untuk pengujian bersasar atau gabungkan dengan pratetap untuk liputan menyeluruh.

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 Pratetap Terbina Dalam

Pratetap menggabungkan beberapa strategi menjadi konfigurasi yang lazim diperlukan. Gunakan pratetap untuk pengujian pantas, atau cipta gabungan tersuai mengikut keperluan anda.

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

Penyepaduan CI/CD

Jalankan penyetempatan pseudo dalam CI untuk mengesan regresi i18n secara automatik. Jana fail disetempatkan secara pseudo, paparkan skrin utama, dan bandingkan dengan tangkapan skrin garis dasar. Teks yang tidak ditransformasikan dalam tangkapan skrin ialah regresi — rentetan baharu yang dikod keras dan melangkaui fungsi terjemahan.

.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

Cuba i18n Agent Sekarang

Lepaskan fail terjemahan anda di sini

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

atau klik untuk semak imbas

Bahasa sasaran

Tidak perlu mendaftarAnggaran serta-merta

Soalan Lazim Penyetempatan Pseudo