構造を保持するJSONトランスレーター | 無料の国際化ツール
JSONファイル内の文字列の値だけに翻訳先の言語コードを付与し、キー、数値、真偽値、全体の構造はそのまま変更しない無料のブラウザツール。ネストされたオブジェクトや配列にも対応する。i18nextなどの多言語対応ファイルやAPIレスポンスを翻訳する作業に役立つ。
JSONオブジェクト構造保持翻訳ツール
このツールは、JSONオブジェクトの構造を保持しながら、そのコンテンツを翻訳します。左パネルにJSONを貼り付け、ターゲット言語を選択すると、右側に翻訳された出力が表示されます。
翻訳された出力がここに表示されます...
使用方法
- 元のJSONオブジェクトを「元のJSON」フィールドに貼り付けます。
- ドロップダウンメニューからターゲット言語を選択します。
- 翻訳されたJSONが自動的に右パネルに表示されます。
- 「コピー」ボタンをクリックして、翻訳されたJSONをクリップボードにコピーします。
ドキュメンテーション
JSON構造保持型翻訳ツールとは?
JSON構造保持型トランスレーターは、JSONドキュメントをたどり、その中のテキスト値だけを変更するツールです。オブジェクトのキー、数値、true/falseの値、nullはすべて元のまま保持されます。変更されるのは文字列だけです。
このバージョンのツールは、翻訳サービスにテキストを送信しません。すべてブラウザー内で動作します。見つかった各文字列の前に、元のテキストとともに対象言語コードを角括弧で追加します。たとえば、[es] Helloのようになります。これにより、実際の翻訳サービスに接続する前に、JSONファイルのどの部分が翻訳されるかを正確にプレビューし、処理後も構造が維持されることを確認できます。
仕組み
このツールは、JSONツリーの各レベルで同じ規則を繰り返し適用します。
- 値が文字列の場合、その前に対象言語コードを角括弧で追加します。
textは[code] textになります。空文字列は""のままです。 - 値が数値、true、false、またはnullの場合は、変更しません。
- 値が配列の場合は、同じ順序で各項目にこの規則を適用します。
- 値がオブジェクトの場合は、すべての値にこの規則を適用し、すべてのキーを変更せずに保持します。
ドキュメント全体がオブジェクトである必要はありません。JSONテキストは単一の値であればよいため、配列、文字列、数値、単独のtrue、false、nullも受け付けられ、同じ規則で処理されます。
このツールはまず、入力JSONの構文が有効かを確認します。JSONを解析できない場合は、推測せずに処理を停止し、エラーを表示します。
ツールの使い方
- 左側の「Source JSON」欄にJSONを貼り付けます。オブジェクト、配列、単一の値のいずれも使用できます。
- ドロップダウンから対象言語を選択します。利用できる言語は、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語、中国語、日本語、韓国語、ロシア語の9言語です。
- 右側のパネルは自動的に更新されます。ボタンをクリックする必要はありません。
- 「Copy」をクリックすると、結果がクリップボードにコピーされます。
- 「Clear All」をクリックすると、両方のパネルがリセットされ、最初からやり直せます。
計算例
入力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 | 変更なし |
| オブジェクトのキー | __proto__という文字どおりの名前のキーを含め、常に変更されない |
| 配列の順序 | 常に変更されない |
空文字列"" | 変更なし |
これは、ウェブアプリで使用されるi18n(国際化)ファイルや、クライアントコードがキー名で読み取るAPIレスポンスのように、構造が意味を持つファイルで特に重要です。翻訳中に"welcomeMessage"のようなキーが変わると、welcomeMessageを検索するコードが動かなくなります。このツールはキーに一切触れないため、ここではそのリスクはありません。
よくあるエラー
「Invalid JSON format. Please check your input.」 貼り付けたテキストが有効なJSONでない場合に表示されます。典型的な原因は、項目間のカンマの欠落、最後の項目の後ろにある余分なカンマ、二重引用符ではなく単一引用符を使っていること、または文字列内の特殊文字がエスケープされていないことです。まず入力をJSONバリデーターにかけると、正確な箇所を見つけやすくなります。
「Translation failed. Please try again.」 構文エラー以外の失敗が起きた場合に表示される代替メッセージです。発生することはまれです。最も可能性の高い原因は、入力が大きすぎて、整形後の結果がブラウザーの単一テキストの長さ制限を超えることです。非常に大きなファイルを小さく分割すれば回避できます。
入力欄を空にするとプレースホルダーメッセージが表示され、エラーとして扱われません。単一の値nullを貼り付けてもエラーにはなりません。nullは有効なJSONであり、ツールはnullを返します。
構造の保持が重要な理由
en.jsonやfr.jsonのようにアプリの翻訳を保存するJSONファイルでは、通常、どの言語でも周辺のコードが同じパスを参照できるよう、キーを同一にする必要があります。たとえばuser.profile.displayNameのようなパスです。フィールド名で読み取るAPIレスポンスや、キー名が変わるとデプロイに失敗する可能性がある設定ファイルでも同じです。翻訳可能な文字列に印を付けながら構造を保持することは、それらの文字列を実際の翻訳サービスに送ったり、翻訳者が確認したりする前の有用な第一段階です。
よくある質問
このツールは実際の翻訳サービスを呼び出しますか? いいえ。ブラウザー内だけで動作し、データをどこにも送信しません。翻訳された語を生成する代わりに、各文字列に対象言語コードを付けます。
出力に[es] Helloと表示され、Holaと表示されないのはなぜですか?
その角括弧付きタグは、現在のバージョンにおけるプレースホルダーの動作です。実際の翻訳を行わずに、どの文字列がどの言語に翻訳されるかを示します。
オブジェクトのキーや数値は変更されますか?
いいえ。キー、数値、true/false、nullは、配列内を含むすべての入れ子レベルで変更されずに通過します。誤って削除するJavaScriptコードもある__proto__のような扱いにくいキー名でも同じです。
インターネット接続は必要ですか? いいえ。解析とタグ付けはブラウザーのタブ内でローカルに行われます。
i18nextや類似の翻訳ファイルに使用できますか? 出力は入力と同じキー構造を保持するため、言語ファイル間で一致するキーを必要とするどのフレームワークにも適合します。ただし、文字列値自体は、使用前に実際の翻訳へ置き換える必要があります。
深く入れ子になったJSONや、配列内の配列ではどうなりますか? ツールは、深さに関係なくすべてのレベルと、すべての配列項目を処理し、そのたびに同じ規則を適用します。
参考文献
- RFC 8259:JavaScript Object Notation(JSON)データ交換形式、IETF:rfc-editor.org/rfc/rfc8259
- ECMA-404:JSONデータ交換構文、Ecma International:ecma-international.org/publications-and-standards/standards/ecma-404/
- MDN Web Docs「JSONの操作」:developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON