Skip to main content

疑似翻訳ツール

リリース前に i18n UI をテストできます。実際の翻訳を待つことなく、レイアウト、エンコーディング、双方向レンダリングを厳しく検証する疑似翻訳を生成します。

課題

英語では完璧に見える UI でも、ドイツ語になると文字列が 40% 長くなり、すべてのボタンが崩れ、表の見出しが途中で切れることがあります。アラビア語ではレイアウト全体が反転し、アイコンが誤った方向を指します。日本語では異なる行の高さが必要となり、入念に余白を調整したカードが崩れます。こうした問題に気付くのは、翻訳費用を支払った後です。

翻訳後に i18n のレイアウトバグを修正する平均コストは、開発中に検出する場合の 5~10 倍です。疑似翻訳なら、実際の翻訳に費用をかける前に、こうした問題を無料で検出できます。

解決策

i18n-pseudo は、実際の翻訳者を待つことなく、UI を厳しく検証する疑似翻訳を生成します。ICU プレースホルダー、複数形構文、補間変数を保持したまま、アクセント記号、CJK 文字、テキスト拡張、RTL マーカーなど、7 種類の変換方法を適用します。

インストール

i18n-pseudo は npm パッケージまたは Homebrew Formula として利用でき、Cargo を使ってソースからビルドすることもできます。

Terminal
npm install -g @i18n-agent/i18n-pseudo
npm パッケージにはグローバル CLI バイナリが含まれています。ランタイム依存関係は必要ありません。

7 種類の変換方法

各変換方法は、特定の種類の i18n バグを対象としています。フラグを指定して個別に使用することも、プリセットで組み合わせることもできます。

StrategyFlagInputOutput
Accents--accentsHelloĤéľľó
CJK--cjkHello你好世界你好
Special Chars--specialHelloHel­lo
Expansion--expansion NSaveSave~~~~
Brackets--bracketsHello[Hello]
RTL--rtlHello‮Hello‬
Unicode Stress--unicode-stressHelloH́ȩl̈l̀õ
ハードコードされた文字列の検出には、アクセント記号が最もよく使用されます。UI にダイアクリティカルマークのない文字列が表示された場合、その文字列は翻訳関数を通っていません。

プリセット

プリセットは、一般的なテストシナリオに合わせて複数の変換方法をまとめたものです。--preset を使用すると、複数の変換方法を一度に適用できます。

PresetStrategiesUse Case
defaultaccents + bracketsQuick visual check that all strings are externalized
layoutexpansion (1.4x) + bracketsCatch truncation and overflow before real translations
charsetCJK + special + bracketsTest font rendering and character encoding
rtlRTL markers + bracketsVerify bidirectional layout without switching locale
fullAll strategies combinedMaximum stress test — everything at once

使用例

翻訳元のロケールファイルに対して i18n-pseudo を実行します。JSON、YAML、PO などの i18n 形式を読み込み、選択した変換方法を適用して、変換後の出力を書き込みます。

Terminal
# 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 の複数形構文と補間プレースホルダーが正確に保持されていることを確認できます。

Before & After
// 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 {# íťéɱš}}]"
}
{name}、{count} などのプレースホルダーや ICU の複数形表現は一切変更されません。翻訳可能なテキスト部分のみが変換されるため、疑似翻訳ファイルでもアプリは正しくレンダリングされます。

CI 統合

CI パイプラインに疑似翻訳を追加し、i18n のリグレッションを自動的に検出します。疑似翻訳ファイルを生成し、そのファイルを使用してビジュアルリグレッションテストを実行します。

CI Pipeline
# 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=visual
レイアウトプリセットを Playwright または Chromatic のビジュアルリグレッションテストと組み合わせてください。1.4 倍に拡張したテキストによってコンポーネントがはみ出したり切れたりすると、ビジュアル差分テストが失敗します。

i18n Agent を今すぐ試す

翻訳ファイルをここにドロップ

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

またはクリックしてファイルを選択

翻訳先言語

登録不要すぐに見積もり

よくある質問