疑似ローカリゼーションは、実際の翻訳が始まる前に国際化(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>)場合は失敗させます。
アラビア語やヘブライ語をシミュレートするために、Unicode制御文字を使用してテキストを右から左(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パッケージで疑似ローカリゼーションテストを自動化することで、アプリケーションが真にグローバルなオーディエンスに対応していることを保証できます。
l10n.devのAI対応ローカリゼーションと組み合わせることで、堅牢な多言語アプリケーションをより迅速かつ確実に構築できます。