翻訳ファイル比較・i18n 抜けチェック

基準の言語のファイルと、ほかの言語のファイルを入れるだけで、抜けているキーや {name}・%s の食い違いを言語ごとに一覧します。翻訳者に渡す CSV を作り、返ってきた CSV から翻訳ファイルへ戻すこともできます。

端末内で処理・アップロードなしスマホ対応オフライン対応

ファイルや入力内容はお使いの端末(ブラウザ)の中だけで処理され、サーバーへは送信されません。

基準の言語(英語など)
基準の言語(英語など)

ほかの言語の抜けを調べる元のファイルです。

言語: —

基準の文より閾値を超えて長い訳を「UI が崩れるおそれ」として一覧します。

CSV から翻訳ファイルへ戻す翻訳者が書いた CSV を貼るかファイルを選んで、言語ごとのファイルを作ります。キーの「.」は JSON の入れ子に戻します。

使い方

  1. 「基準の言語」の欄に、英語など基準にするファイルの内容を貼るか、「ファイルを選択」で読み込みます。

  2. 「言語を追加」で翻訳ファイルを増やし、言語コード(ja・fr など)を入れます。形式は中身と拡張子から自動判定されます。

  3. 「比較する」を押すと、言語ごとの進み具合(%)と、無いキー・空の訳・未翻訳の疑い・プレースホルダーなどの件数が出ます。

  4. 検出一覧で該当のキーを確かめ、翻訳者には「CSV を書き出す」の表を渡します。

  5. 返ってきた CSV は「CSV から翻訳ファイルへ戻す」で読み込み、言語と出力形式を選んでファイルを作ります。

できること

形式を中身で判定して読む

JSON(入れ子とフラットのキー)、YAML(Rails 型の言語のルートを含む)、Java の .properties、Apple の .strings、gettext の .po(msgctxt・複数形 msgstr[n] を含む)に対応します。拡張子が無くても中身から判定します。

プレースホルダーを種類ごとに照合

{name}・{{name}}(i18next)・{0}(Java の番号付き)・%s %d %1$s %@(printf 系)と、ICU の引数名({count, plural, …} の count)を取り出し、基準と並びが違う訳を見つけます。

複数形のカテゴリを言語の規則で確認

ICU の plural に、その言語で必要なカテゴリ(例: フランス語の many)が無い場合を、Intl の CLDR 規則で判定します。ICU 全体の文法検証はしません。

言語ごとの進み具合と件数

空でなく、基準と同じでない訳の割合を言語ごとに % で表示し、問題の種類ごとに件数を数えます。

翻訳者向け CSV の往復

キー・基準の文・各言語の文を 1 表にして書き出し(Excel で開ける BOM 付き UTF-8、数式の無害化つき)、返ってきた CSV から JSON・.properties・.strings を作り直します。

ブラウザの中だけで処理

翻訳ファイルは送信されず、ブラウザ内で読んで比べます。社外に出せない文言や未公開の製品名を含むファイルにも使えます。

こんなときに

  • リリース前に、英語にあるキーがほかの言語の翻訳ファイルで抜けていないか確かめたい
  • Rails や i18next、Java の .properties、iOS の .strings、gettext の .po を言語間で突き合わせたい
  • 翻訳者に CSV で渡し、戻ってきた訳を JSON などの翻訳ファイルに直したい
  • 「{count}」「%d」などの変数名や個数が、訳で書き換わっていないか見つけたい
  • 訳が長すぎて、ボタンや見出しのレイアウトを崩さないか当たりを付けたい

対応形式

読み込み

JSON(.json)YAML(.yml / .yaml)Java .propertiesApple .stringsgettext .po / .pot

書き出し

翻訳者向け CSV(BOM 付き UTF-8、CRLF)JSON(入れ子に戻す).properties.strings

対応状況

機能対応補足
無いキー・余分なキーの検出対応—
空の訳・基準と同じ文(未翻訳の疑い)の検出対応「同じ」は未翻訳の疑いであり、確定ではありません
プレースホルダーの照合({name}・{{name}}・{0}・%s・%1$s・ICU 引数名)対応—
ICU plural の必要なカテゴリの有無一部対応カテゴリの有無だけを見ます。ICU 全体の文法は検証しません
HTML タグの数の比較対応タグの種類や対応は見ず、数だけを比べます
訳の長さの比(UI の崩れの当たり)一部対応文字数の比の目安です。実際の表示幅は測りません
翻訳の品質(意味・自然さ)の判定非対応—
機械翻訳・翻訳メモリとの連携非対応—
XLIFF・Android strings.xml・ResX などの形式非対応対応する 5 形式以外は読めません
ファイルの保存・ウェブからの取得非対応読み込みは貼り付けかファイル選択だけです

制限・注意事項

  • 1 ファイルは 200 万文字・キー 2 万件まで。比較するのは基準を含めて 8 ファイルまでです。
  • 「同じ文」は、文字(英字や日本語など)を 2 字以上含む文だけを対象にします。記号・数字だけの値は除外します。
  • 長さの比は、基準の文が空白を除いて 4 文字以上のときだけ判定します。
  • ICU の完全な検証(引用符のエスケープ、ネストの文法)はしません。
  • YAML は一般的な形式を読みます。同じキーが重複する YAML は読み込みを止めます。
  • 複数形の訳(gettext の msgstr[n])は「キー[n]」として比べます。

プライバシーと安全性

翻訳ファイルはブラウザの中だけで読み、比べます。サーバーへの送信・保存は行わず、キーや訳の中身・ファイル名が解析ログに記録されることもありません。ページを閉じると内容は消えます。

よくある質問

翻訳ファイルの抜けを見つけるには?
基準の言語(英語など)のファイルと、確かめたい言語のファイルを入れて「比較する」を押します。無いキーは「無いキー」、空の訳は「空の訳」として言語ごとに一覧されます。
JSON の入れ子のキーも比べられますか?
はい。入れ子は「a.b.c」の形のキーに直して比べます。フラットなキーの JSON や .properties とも、そのまま比べられます。
プレースホルダーの食い違いとは何ですか?
{name} と {nom}、%s と %d のように、基準とその言語で変数の名前や並びが違うことです。画面の表示でエラーになったり、変数が表示されなかったりする原因になります。
翻訳者に渡して、戻った CSV からファイルを作れますか?
はい。「CSV を書き出す」で作った表を渡し、戻った CSV を「CSV から翻訳ファイルへ戻す」で読み込んで、JSON・.properties・.strings のどれかを作れます。
翻訳管理サービスの代わりになりますか?
いいえ。翻訳の進捗の管理、翻訳メモリ、機械翻訳は行いません。ファイルの抜けと形式の食い違いを確かめる用途に向いています。
翻訳の質(意味が正しいか)も分かりますか?
分かりません。見つかるのは、キーの抜け・変数の食い違い・未翻訳の疑いなど、機械的に確かめられる問題だけです。

JSON 整形・検証(JSON Studio)

JSON を貼り付けるだけで整形・1 行化・構文チェック。エラーは「何行目の何が悪いか」まで表示し、コメントや末尾カンマは自動修復できます。データは端末の外へ送信しません。

アップロードなし

テキスト・コード Diff

変更前と変更後を貼り付けるかファイルをドロップするだけで、追加・削除された行と、行の中で変わった単語まで色分けして表示します。結果は unified 形式のパッチとしてコピー・保存でき、入力はブラウザの外へ出ません。

アップロードなし

CSV Studio(CSV ビューア・編集・結合・分割)

Excel では重い・文字化けする CSV を、ブラウザで開いてすぐに表示・検索・編集できます。結合や分割、Shift_JIS・UTF-8(BOM 付き)・Excel・JSON での保存まで 1 画面で完結します。

アップロードなし

UUID / ULID / NanoID / トークン生成

ページを開いた瞬間に UUID が 1 件生成済み。種類を選ぶだけで UUID v7・ULID・NanoID・ランダムトークンに切り替わり、最大 1 万件を .txt / .csv / .json で保存できます。既存の UUID や ULID を貼り付ければ、埋め込まれた時刻やバージョンも読み取れます。

アップロードなし

正規表現テスター(Regex Tester)

パターンを入力すると、一致した箇所がテスト文字列の上で即座に色付けされます。キャプチャグループ・置換結果・パターンの意味まで一画面で確認でき、ブラウザを固まらせる危険なパターンは 1 秒で自動停止します。

アップロードなし

コード整形・圧縮(Code Formatter)

コードを貼り付けるだけで、言語を自動判定して整形できます。インデント・1 行の幅・セミコロン・引用符・末尾カンマを選べ、JavaScript・CSS・HTML は圧縮前後のサイズと削減率も表示。入力は端末の外へ出ません。

アップロードなし

最終更新: