構造を保持するJSONトランスレーター | 無料の国際化ツール
JSONファイル内の文字列の値だけに翻訳先の言語コードを付与し、キー、数値、真偽値、全体の構造はそのまま変更しない無料のブラウザツール。ネストされたオブジェクトや配列にも対応する。i18nextなどの多言語対応ファイルやAPIレスポンスを翻訳する作業に役立つ。
JSONオブジェクト構造保持翻訳ツール
このツールは、JSONオブジェクトの構造を保持しながら、そのコンテンツを翻訳します。左パネルにJSONを貼り付け、ターゲット言語を選択すると、右側に翻訳された出力が表示されます。
翻訳された出力がここに表示されます...
使用方法
- 元のJSONオブジェクトを「元のJSON」フィールドに貼り付けます。
- ドロップダウンメニューからターゲット言語を選択します。
- 翻訳されたJSONが自動的に右パネルに表示されます。
- 「コピー」ボタンをクリックして、翻訳されたJSONをクリップボードにコピーします。
ドキュメンテーション
JSON構造保持型翻訳ツールとは?
JSON構造保持型トランスレーターは、JSONドキュメントをたどり、その中のテキスト値だけを変更するツールです。オブジェクトのキー、数値、true/falseの値、nullはすべて元のまま保持されます。変更されるのは文字列だけです。
このバージョンのツールは、翻訳サービスにテキストを送信しません。すべてブラウザー内で動作します。見つかった各文字列の前に、元のテキストとともに対象言語コードを角括弧で追加します。たとえば、[es] Helloのようになります。これにより、実際の翻訳サービスに接続する前に、JSONファイルのどの部分が翻訳されるかを正確にプレビューし、処理後も構造が維持されることを確認できます。
仕組み
JSONには、4つのプリミティブ型(文字列、数値、真偽値、null)と、2つの構造型(オブジェクトと配列)があります。配列は値の順序付きリストです。オブジェクトは名前と値の組の集まりで、各名前(キー)は文字列です。
このツールは、JSONツリーの各レベルで同じ規則を繰り返し適用します。
- 値が文字列の場合、その前に対象言語コードを角括弧で追加します。
textは[code] textになります。空文字列は""のままです。 - 値が数値、true、false、またはnullの場合は、変更しません。
- 値が配列の場合は、同じ順序で各項目にこの規則を適用します。
- 値がオブジェクトの場合は、すべての値にこの規則を適用し、すべてのキーを変更せずに保持します。
このツールはまず、入力JSONの構文が有効かを確認します。JSONを解析できない場合は、推測せずに処理を停止し、エラーを表示します。
ツールの使い方
- 左側の「ソースJSON」欄にJSONオブジェクトを貼り付けます。
- ドロップダウンから対象言語を選択します。利用できる言語は、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語、中国語、日本語、韓国語、ロシア語の9言語です。
- 右側のパネルは自動的に更新されます。ボタンをクリックする必要はありません。
- 「コピー」をクリックすると、結果がクリップボードにコピーされます。
- 「すべてクリア」をクリックすると、両方のパネルがリセットされ、最初からやり直せます。
例
入力JSON:
1{
2 "app": {
3 "title": "My Store",
4 "version": 2,
5 "isBeta": false,
6 "tags": ["sale", "new"]
7 }
8}
9対象言語としてスペイン語(es)を選択すると、ツールは次のように出力します。
1{
2 "app": {
3 "title": "[es] My Store",
4 "version": 2,
5 "isBeta": false,
6 "tags": [
7 "[es] sale",
8 "[es] new"
9 ]
10 }
11}
12"title"と"tags"はキーとして保持され、2とfalseは変更されず、文字列値にのみ[es]タグが追加されます。入れ子構造と配列の順序は入力と同一です。
変更されるものと保持されるもの
| JSON要素 | 結果 |
|---|---|
| 文字列値 | [language code]の接頭辞が付く |
| 数値 | 変更なし |
true / false | 変更なし |
null | 変更なし |
| オブジェクトのキー | 常に変更なし |
| 配列の順序 | 常に変更なし |
空文字列"" | 変更なし |
これは、ウェブアプリで使用されるi18n(国際化)ファイルや、クライアントコードがキー名で読み取るAPIレスポンスのように、構造が意味を持つファイルで特に重要です。翻訳中に"welcomeMessage"のようなキーが変わると、welcomeMessageを検索するコードが動かなくなります。このツールはキーに一切触れないため、ここではそのリスクはありません。
よくあるエラー
「JSONの形式が無効です。入力を確認してください。」 これは、貼り付けたテキストが有効なJSONではない場合に表示されます。典型的な原因は、項目の間のカンマの抜け、最後の項目の後の末尾のカンマ、二重引用符の代わりの一重引用符、または文字列内のエスケープされていない特殊文字です。先にJSON検証ツールに入力を通すと、正確な箇所を見つけやすくなります。
「翻訳に失敗しました。もう一度お試しください。」
これは、特定の1つの場合に表示されます。貼り付けた入力が、ほかに何もない単一の語nullだけのときです。たどるべき構造がないため、ツールには処理するものがありません。値をオブジェクトで囲み、たとえば{"value": null}のようにすると、これを避けられます。
入力欄を空のままにすると、プレースホルダーのメッセージが表示され、エラーとしては扱われません。
構造の保持が重要な理由
en.jsonやfr.jsonのようにアプリの翻訳を保存するJSONファイルでは、通常、どの言語でも周辺のコードが同じパスを参照できるよう、キーを同一にする必要があります。たとえばuser.profile.displayNameのようなパスです。フィールド名で読み取るAPIレスポンスや、キー名が変わるとデプロイに失敗する可能性がある設定ファイルでも同じです。翻訳可能な文字列に印を付けながら構造を保持することは、それらの文字列を実際の翻訳サービスに送ったり、翻訳者が確認したりする前の有用な第一段階です。
よくある質問
このツールは実際の翻訳サービスを呼び出しますか? いいえ。ブラウザー内だけで動作し、データをどこにも送信しません。翻訳された語を生成する代わりに、各文字列に対象言語コードを付けます。
出力に[es] Helloと表示され、Holaと表示されないのはなぜですか?
その角括弧付きタグは、現在のバージョンにおけるプレースホルダーの動作です。実際の翻訳を行わずに、どの文字列がどの言語に翻訳されるかを示します。
オブジェクトのキーや数値は変更されますか?
いいえ。キー、数値、true/false、nullは、配列の内部も含め、入れ子のどの階層でも変更されずにそのまま通ります。
インターネット接続は必要ですか? いいえ。解析とタグ付けはブラウザーのタブ内でローカルに行われます。
i18nextや類似の翻訳ファイルに使用できますか? 出力は入力と同じキー構造を保持するため、言語ファイル間で一致するキーを必要とするどのフレームワークにも適合します。ただし、文字列値自体は、使用前に実際の翻訳へ置き換える必要があります。
深く入れ子になったJSONや、配列内の配列ではどうなりますか? ツールは、深さに関係なくすべてのレベルと、すべての配列項目を処理し、そのたびに同じ規則を適用します。
参考文献
- Internet Engineering Task Force。RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format。RFC 8259 — 4つのプリミティブ型と2つの構造型、順序付きの配列、および文字列の名前を持つ名前と値の組としてのオブジェクト。
- MDN Web Docs(Mozilla)。JSON.parse()。JSON.parse()のリファレンス — JSONでは末尾のカンマは使えず、文字列は一重引用符ではなく二重引用符を使う必要があります。