幫助中心

偽本地化自動化 i18n 測試

偽本地化是一種強大的測試技術,將您的源文本轉換為假語言,以便在實際翻譯開始之前識別國際化 (i18n) 問題。本指南將向您展示如何使用pseudo-l10n npm 套件自動化偽本地化測試。

什麼是偽本地化?

偽本地化是將您的應用程式源文本轉換為一種改變過的假語言的過程,模擬翻譯後 UI 的行為。它幫助 QA 工程師和開發人員在開發周期的早期識別 i18n 問題。

Pseudo-localization example

使用偽本地化來識別潛在國際化問題的範例。兩側的字型和大小相同,但支援其他字母的內容通常需要更多空間。

為什麼偽本地化有用

偽本地化幫助您早期捕捉 i18n 問題:

  • 揭示由於文本擴展而導致的佈局破壞(德語和芬蘭語通常比英語長 30-40%)。
  • 通過添加重音字符來測試 UTF-8 支援,揭示編碼問題。
  • 確保所有字串都是可翻譯的 - 硬編碼文本保持不變,易於識別。
  • 揭示佔位符處理不當 - 動態內容如 {{name}} 必須被保留。
  • 幫助為有空間限制的 UI 元件定義翻譯長度限制。

QA 的自動化策略

以下是使用偽本地化自動化 i18n 測試的有效策略:

重音和非拉丁字符

用重音形式或不同字母替換拉丁字母,以測試字符編碼和字型支援。

範例: "Save" → "Šàvē"

QA 檢查: 確保所有字符正確顯示,並且沒有因編碼問題而中斷。

文本擴展模擬

自動將每個字串擴展約 30–40%,以模擬德語或芬蘭語等長語言。用視覺標記包裝以便於檢測剪裁。

範例: "Save" → ⟦Šàvēēēēē⟧

QA 檢查: 使用自動化截圖比較來發現 UI 溢出、剪裁或錯位。

佔位符壓力測試

用可見標記替換插值變數(佔位符),以驗證它們在翻譯過程中是否被保留。

範例: "You have {{count}} items" → "You have <COUNT> items"

QA 檢查: 執行回歸測試;如果缺少標記或錯誤轉義 (&lt;COUNT&gt;) 則失敗。

RTL 模擬

使用 Unicode 控制字符將文本包裝在從右到左 (RTL) 的標記中,以模擬阿拉伯語或希伯來語。

QA 檢查: 驗證 RTL 語言的對齊、文本方向和鏡像是否正確。

CI/CD 整合

將偽本地化添加到您的自動化測試管道中,以便在問題到達生產環境之前捕捉 i18n 問題。

QA 檢查: 如果測試檢測到缺失的翻譯、損壞的佔位符或佈局問題,則阻止部署。

使用 pseudo-l10n 套件自動化

pseudo-l10n npm 套件自動化您的 JSON 翻譯文件的偽本地化,使您能輕鬆將 i18n 測試整合到開發工作流程中。

主要功能

  • 文本擴展:模擬翻譯文本通常比英語長 30-40%。
  • 重音字符:使用重音等效字符測試 UTF-8 編碼和字型支援。
  • 視覺標記:用⟦...⟧標記包裹字串,以便輕鬆發現未翻譯或截斷的文本。
  • 佔位符處理:保留佔位符,如{{name}}、{count}、%key%等。
  • RTL模擬:使用Unicode控制字符模擬從右到左的語言。

安裝

全局安裝pseudo-l10n以便命令行使用:

npm install -g pseudo-l10n

或將其作為開發依賴添加:

npm install --save-dev pseudo-l10n

基本用法

將您的源翻譯文件轉換為pseudo-localized版本:

pseudo-l10n input.json output.json

範例轉換

輸入 (en.json):

{
  "welcome": "Welcome to our application",
  "greeting": "Hello, {{name}}!",
  "itemCount": "You have {{count}} items"
}

輸出 (pseudo-en.json):

{
  "welcome": "⟦Ŵëļçõɱë ţõ õür àƥƥļïçàţïõñēēēēēēēēēēēēēēēēēē⟧",
  "greeting": "⟦Ĥëļļõēēēēēē, {{name}}!ēēēēē⟧",
  "itemCount": "⟦Ŷõü ĥàṽë {{count}} ïţëɱšēēēēēēēēēēēēēēēē⟧"
}

進階功能

自定義擴展

pseudo-l10n en.json pseudo-en.json --expansion=30

RTL模擬

模擬阿拉伯語或希伯來語等從右到左的語言:

pseudo-l10n en.json pseudo-ar.json --rtl

替換佔位符以進行視覺測試

用大寫標記替換佔位符,以便更輕鬆地進行視覺檢測:

pseudo-l10n en.json pseudo-en.json --replace-placeholders

# Input:  { "greeting": "Hello, {{name}}!" }
# Output: { "greeting": "⟦Ĥëļļõēēēēēē, <NAME>!ēēēēē⟧" }

支持不同的佔位符格式

該包支持不同i18n庫使用的各種佔位符格式:

# For i18next (default)
pseudo-l10n en.json pseudo-en.json --placeholder-format="{{key}}"

# For Angular/React Intl
pseudo-l10n en.json pseudo-en.json --placeholder-format="{key}"

# For sprintf style
pseudo-l10n en.json pseudo-en.json --placeholder-format="%key%"

程式化用法

在您的Node.js腳本或構建過程中以程式化方式使用pseudo-l10n:

const { generatePseudoLocaleSync, pseudoLocalize } = require('pseudo-l10n');

// Generate a pseudo-localized JSON file
generatePseudoLocaleSync('en.json', 'pseudo-en.json', {
  expansion: 40,
  rtl: false
});

// Pseudo-localize a single string
const result = pseudoLocalize('Hello, {{name}}!');
console.log(result);
// Output: ⟦Ĥëļļõēēēēēēēēēēēēēē, {{name}}!ēēēēē⟧

整合到您的工作流程中

npm腳本

將pseudo-localization生成添加到您的package.json腳本中:

{
  "scripts": {
    "pseudo": "pseudo-l10n src/locales/en.json src/locales/pseudo-en.json",
    "pseudo:rtl": "pseudo-l10n src/locales/en.json src/locales/pseudo-ar.json --rtl"
  }
}

構建過程整合

將pseudo-locale作為構建過程的一部分生成:

// build.js
const { generatePseudoLocaleSync } = require('pseudo-l10n');

// Generate pseudo-locales as part of build
generatePseudoLocaleSync(
  './src/locales/en.json',
  './src/locales/pseudo-en.json',
  { expansion: 40 }
);

generatePseudoLocaleSync(
  './src/locales/en.json',
  './src/locales/pseudo-ar.json',
  { rtl: true }
);

CI/CD管道整合

將pseudo-localization整合到您的持續集成管道中:

# .github/workflows/test.yml
- name: Generate pseudo-locales
  run: |
    npm install -g pseudo-l10n
    pseudo-l10n src/locales/en.json src/locales/pseudo-en.json

- name: Run i18n tests
  run: npm run test:i18n

測試策略

  1. 在您的構建過程中生成pseudo-locale。
  2. 將pseudo-locale添加到您的應用程序中(例如,在語言選擇器中)。
  3. 測試啟用pseudo-locale的應用程序。
  4. 檢查應用程序以尋找常見的i18n問題。

要尋找的內容

  • 缺失的⟦⟧標記 = 未翻譯的字串(硬編碼文本)。
  • 截斷的標記 = 文本截斷或UI溢出。
  • 布局破損 = 文本擴展空間不足。
  • 亂碼文本 = 編碼問題或缺少字體支持。
  • 錯誤的文本方向 = RTL問題(針對RTL pseudo-locales)。

從測試到真正的翻譯

一旦您通過pseudo-localization驗證了您的i18n實現,就該為真正的用戶翻譯您的應用程序了。這就是像l10n.dev這樣的AI驅動翻譯服務的用武之地。

為什麼選擇l10n.dev進行生產翻譯

在確保您的應用程序正確處理國際化後,使用l10n.dev進行專業的AI驅動翻譯:

  • 保留佔位符、格式和結構 - 就像pseudo-l10n在測試期間的保護一樣。
  • 支持165種語言的上下文感知AI翻譯。
  • 自動處理複數形式、插值和特殊字符。
  • 通過API或npm包(ai-l10n)提供CI/CD整合以實現自動化工作流程。
  • 提供VS Code擴展和網頁UI以進行手動翻譯和審查。

完整的i18n工作流程

  1. 使用pseudo-l10n測試您的i18n實現,以便及早發現問題。
  2. 修復在測試期間發現的任何佈局、編碼或佔位符問題。
  3. 使用l10n.dev翻譯您的經過驗證的源文件,以獲得生產就緒的翻譯。

準備好及早捕捉i18n問題並簡化您的本地化工作流程了嗎?