疑似翻訳ツール
リリース前に i18n UI をテストできます。実際の翻訳を待つことなく、レイアウト、エンコーディング、双方向レンダリングを厳しく検証する疑似翻訳を生成します。
課題
英語では完璧に見える UI でも、ドイツ語になると文字列が 40% 長くなり、すべてのボタンが崩れ、表の見出しが途中で切れることがあります。アラビア語ではレイアウト全体が反転し、アイコンが誤った方向を指します。日本語では異なる行の高さが必要となり、入念に余白を調整したカードが崩れます。こうした問題に気付くのは、翻訳費用を支払った後です。
解決策
i18n-pseudo は、実際の翻訳者を待つことなく、UI を厳しく検証する疑似翻訳を生成します。ICU プレースホルダー、複数形構文、補間変数を保持したまま、アクセント記号、CJK 文字、テキスト拡張、RTL マーカーなど、7 種類の変換方法を適用します。
インストール
i18n-pseudo は npm パッケージまたは Homebrew Formula として利用でき、Cargo を使ってソースからビルドすることもできます。
npm install -g @i18n-agent/i18n-pseudo7 種類の変換方法
各変換方法は、特定の種類の i18n バグを対象としています。フラグを指定して個別に使用することも、プリセットで組み合わせることもできます。
| Strategy | Flag | Input | Output |
|---|---|---|---|
| Accents | --accents | Hello | Ĥéľľó |
| CJK | --cjk | Hello | 你好世界你好 |
| Special Chars | --special | Hello | Hello |
| Expansion | --expansion N | Save | Save~~~~ |
| Brackets | --brackets | Hello | [Hello] |
| RTL | --rtl | Hello | Hello |
| Unicode Stress | --unicode-stress | Hello | H́ȩl̈l̀õ |
プリセット
プリセットは、一般的なテストシナリオに合わせて複数の変換方法をまとめたものです。--preset を使用すると、複数の変換方法を一度に適用できます。
| Preset | Strategies | Use Case |
|---|---|---|
default | accents + brackets | Quick visual check that all strings are externalized |
layout | expansion (1.4x) + brackets | Catch truncation and overflow before real translations |
charset | CJK + special + brackets | Test font rendering and character encoding |
rtl | RTL markers + brackets | Verify bidirectional layout without switching locale |
full | All strategies combined | Maximum stress test — everything at once |
使用例
翻訳元のロケールファイルに対して i18n-pseudo を実行します。JSON、YAML、PO などの i18n 形式を読み込み、選択した変換方法を適用して、変換後の出力を書き込みます。
# Default (accents + brackets)
i18n-pseudo en.json -o output/
# Layout testing (text expansion + brackets)
i18n-pseudo en.json --preset layout -o output/
# Specific strategies
i18n-pseudo en.json --accents --expansion 1.5 -o output/
# Kitchen sink
i18n-pseudo en.json --preset full -o output/変換前と変換後
一般的な翻訳ファイルにデフォルトプリセット(アクセント記号と角括弧)を適用した例です。ICU の複数形構文と補間プレースホルダーが正確に保持されていることを確認できます。
// Input (en.json):
{
"greeting": "Hello, {name}!",
"save": "Save",
"items": "{count, plural, one {# item} other {# items}}"
}
// Output (default preset — accents + brackets):
{
"greeting": "[Ĥéľľó, {name}!]",
"save": "[Šáṽé]",
"items": "[{count, plural, one {# íťéɱ} other {# íťéɱš}}]"
}CI 統合
CI パイプラインに疑似翻訳を追加し、i18n のリグレッションを自動的に検出します。疑似翻訳ファイルを生成し、そのファイルを使用してビジュアルリグレッションテストを実行します。
# Generate pseudo-translations and run visual regression
i18n-pseudo locales/en.json --preset layout -o locales/pseudo/
NEXT_PUBLIC_LOCALE=pseudo npx playwright test --project=visuali18n Agent を今すぐ試す
翻訳ファイルをここにドロップ
JSON, YAML, PO, XML, CSV, Markdown, Properties
またはクリックしてファイルを選択
翻訳先言語