すべてのキー、プレースホルダー、複数形を保ったままJSON i18nファイルを翻訳
en.json(または複数の名前空間ファイル)をアップロードすると、キーの階層も順序もインデントもそのままの es.json が返ってきます。翻訳されるのは値だけで、すべての文字列で {name}、{{count}}、ICU 複数形をチェックします。最初の数文字列は、アカウント不要で無料です。ジョブ全体(最大 5,000 文字列)は $5 の一回払いのみです。
- キーと階層は翻訳しません。配列、数値、真偽値もそのままです
- プレースホルダーをチェック:{name}、{{count}}、%s、:attribute、$t(key)、@:key
- ICU 複数形は構造を保ち、翻訳先の言語に必要なカテゴリーが追加されます
- Flutter ARB:@metadata は保持して文脈として活用し、@@locale は更新します
- ファイル名は言語に合わせて変わります:en.json は es.json に、app_en.arb は app_es.arb になります
{
"home.greeting": "Good morning, {name}Buenos días, {name}",
"home.nearby": "{count, plural, =0 {No trails near you yet} one {# trail near you} other {# trails near you}}{count, plural, =0 {Aún no hay rutas cerca de ti} one {# ruta cerca de ti} other {# rutas cerca de ti}}",
"trail.offline_done": "<b>{name}</b> is saved on this phone. You can use the map without a signal.<b>{name}</b> está guardado en este teléfono. Puedes usar el mapa sin señal.",
"trail.share_text": "I just finished {trail} with Trailbook! {km} km and {meters} m up. 🥾¡Acabo de terminar {trail} con Trailbook! {km} km y {meters} m de subida. 🥾",
"saved.empty": "You have not saved any trails yet.\nTap the heart on a trail to keep it here.Aún no has guardado ninguna ruta.\nToca el corazón en una ruta para guardarla aquí."
}
黄色:プレースホルダーと ICU の複数形構文を、すべての文字列で確認します。青緑:タグ、エスケープ、絵文字は、そのまま保持します。
キーも、プレースホルダーもそのまま。言語だけが新しく。
変わるのは値だけです。ファイルは階層も順序もそのままで、es.json という名前で戻ります。プレースホルダーが欠けた文字列は、ビルドに届く前に再度翻訳されます。
このページ用に作成したデモアプリです。スペイン語の文字列は、85件の文字列を含むファイルからのツールの実際の出力です。
翻訳されるもの、されないもの
文字列の値はすべて、完全なキーを文脈として添えて翻訳に送られます。そのため「settings.save」と「cart.save」が別の訳語になることもあります。キー自体は送信されません。URL、メールアドレス、「{count}」のようにプレースホルダーだけでできた値など、テキストではない値はそのまま残します。
react-intl などのライブラリで使われる <b>{name}</b> や <link>Undo</link> のようなリッチテキストタグは、翻訳前にマーカーへ置き換え、翻訳後に元へ戻します。リテラルの \n や絵文字も保持される必要があり、いずれかが失われた文字列は再翻訳されます。2回続けて失敗した場合は英語のまま残し、そのキーを一覧でお知らせします。
複数形
{count, plural, one {# trail} other {# trails}} のような ICU メッセージは、1つの文字列として翻訳されます。翻訳エンジンには、翻訳先の言語が使う複数形カテゴリー(ロシア語やポーランド語なら one、few、many、other など)が伝えられ、変数名と複数形キーワードが保たれているかを結果で確認します。trail_one や trail_other のようにキーが分かれている i18next ファイルは、キーごとに翻訳します。翻訳先の言語に足りないキー(trail_few、trail_many)は追加されません。
ツールの仕組み、料金、ファイルの扱いについてはローカライズファイル翻訳のページを、全ツールの料金は料金のページをご覧ください。
最終更新日
よくある質問
出力はフォーマットを保ってくれますか?
はい。インデント(スペース2つ、スペース4つ、タブ)、キーの順序、コロンの後のスペース、末尾の改行まで、お手持ちのファイルのとおりに再現します。minify 済みのファイルは1行のままです。
複数の名前空間ファイルを一度にアップロードできますか?
はい。common.json、cart.json、errors.json など、1つのジョブで最大20ファイルまで可能です。ダウンロードは1つの ZIP にまとめられます。
翻訳したくない文字列はどうなりますか?
製品名やブランド名を「翻訳しない語句」に登録すると、それを含む文字列がすべて、その語句を保ったまま翻訳されているかチェックされます。URL、メールアドレス、プレースホルダーだけの値は自動でスキップされます。
料金はいくらですか?
最初の数文字列は無料です。ジョブ全体(5,000 文字列まで)は、$5 の一回払いのみです。Unlimited プランは1ジョブあたり 15,000 文字列までに対応します。小規模な作業は例外で、300 文字列までの作業は、ダウンロードも含めてすべて無料です。