擬似ローカリゼーションは、実際の翻訳が始まる前に国際化(i18n)の問題を特定するために、ソーステキストを偽の言語に変換する強力なテスト技術です。このガイドでは、pseudo-l10n npmパッケージを使用して擬似ローカリゼーションテストを自動化する方法を示します。
擬似ローカリゼーションは、アプリケーションのソーステキストを変更された偽の言語に変換するプロセスで、翻訳後のUIの動作を模倣します。これにより、QAエンジニアや開発者は開発サイクルの早い段階でi18nの問題を特定できます。

擬似ローカリゼーションを使用して潜在的な国際化の問題を特定する例。フォントとサイズは両側で同じですが、他のスクリプトをサポートするには通常、より多くのスペースが必要です。
擬似ローカリゼーションは、早期にi18nの問題をキャッチするのに役立ちます:
擬似ローカリゼーションを使ったi18nテストを自動化するための実績のある戦略を以下に示します:
ラテン文字をアクセント付きの形式や異なるスクリプトに置き換えて、文字エンコーディングとフォントサポートをテストします。
例: "Save" → "Šàvē"
QAチェック: すべての文字が正しく表示され、エンコーディングの問題で何も壊れないことを確認します。
各文字列を自動的に約30–40%拡張して、ドイツ語やフィンランド語のような長い言語を模倣します。視覚的なマーカーでラップして、クリッピング検出を容易にします。
例: "Save" → ⟦Šàvēēēēē⟧
QAチェック: 自動化されたスクリーンショット比較を使用して、UIのオーバーフロー、クリッピング、または不整合を特定します。
補間変数(プレースホルダー)を可視マーカーに置き換えて、翻訳中に保持されることを確認します。
例: "You have {{count}} items" → "You have <COUNT> items"
QAチェック: 回帰テストを実行します。マーカーが欠落しているか、正しくエスケープされていない場合(<COUNT>)は失敗します。
テキストを右から左(RTL)マーカーでラップして、アラビア語やヘブライ語をシミュレートします。
QAチェック: RTL言語のために、整列、テキストの方向、ミラーリングが正しいことを確認します。
自動テストパイプラインに擬似ローカリゼーションを追加して、i18nの問題が本番環境に到達する前にキャッチします。
QAチェック: テストで翻訳の欠落、壊れたプレースホルダー、またはレイアウトの問題が検出された場合は、デプロイをブロックします。
pseudo-l10n npmパッケージは、JSON翻訳ファイルの擬似ローカリゼーションを自動化し、i18nテストを開発ワークフローに簡単に統合できるようにします。
コマンドラインで使用するために、pseudo-l10nをグローバルにインストールします:
npm install -g pseudo-l10nまたは、開発依存関係として追加します:
npm install --save-dev pseudo-l10nソース翻訳ファイルを擬似ローカライズされたバージョンに変換します:
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アラビア語やヘブライ語などの右から左への言語をシミュレートします:
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}}!ēēēēē⟧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"
}
}ビルドプロセスの一部として擬似ロケールを生成します:
// 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 }
);継続的インテグレーションパイプラインに擬似ローカライズを統合します:
# .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擬似ローカライズでi18nの実装を検証したら、実際のユーザー向けにアプリケーションを翻訳する時が来ました。ここで、l10n.devのようなAI駆動の翻訳サービスが役立ちます。
擬似ローカライズでアプリが国際化を正しく処理していることを確認した後、プロフェッショナルなAI駆動の翻訳にl10n.devを使用します:
i18nの問題を早期にキャッチして、ローカリゼーションワークフローを効率化する準備はできていますか?
擬似ローカライズは、プロダクションに到達する前に国際化の問題をキャッチするのに役立つ重要なテスト技術です。pseudo-l10nパッケージを使用して擬似ローカライズテストを自動化することで、アプリケーションが本当にグローバルなオーディエンスに対応できる準備が整っていることを確認できます。
AI駆動の翻訳をl10n.devと組み合わせることで、より迅速かつ自信を持って堅牢な多言語アプリケーションを構築できます。