ローカライズファイル翻訳ツール
キーもプレースホルダーもそのまま、アプリのローカライズファイルを翻訳
JSON、PO、strings.xml、.strings、.xcstrings、XLIFF のファイルをアップロードして言語を選ぶだけ。翻訳済みの同じ形式のファイルが返ってくるので、そのままプロジェクトに組み込めます。キー、コメント、順序、書式は元のまま保たれ、{name}、{{count}}、%1$s などのプレースホルダーはすべての文字列でチェックされます。最初の文字列は登録不要で無料。最大 20 ファイル・5,000 文字列までのジョブ全体が、一回払いで $5 、サブスクなしです。チャットボットなら数十個の文字列は問題ありませんが、数千キーのファイルになると、途中で途切れたり、キー名が書き換えられたり、プレースホルダーが変わったりしがちです。
- 最大300件の文字列まで全文無料。大きな作業も最初の文字列は無料。アカウント不要
- ジョブ全体で $5 、一回払い:最大 20 ファイル・5,000 文字列まで
- キー、階層構造、コメント、順序はそのまま。翻訳するのは値だけ
- プレースホルダー、ICU の複数形、インラインタグをすべての文字列でチェック
- 複数形は翻訳先の言語に合わせて出力(PO、Android、Xcode)
- 41 言語に対応。丁寧・カジュアルの文体指定、用語集、訳さない名称の指定が可能
{
"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件の文字列を含むファイルからのツールの実際の出力です。
仕上がりについて
ファイルは同じ形式で、各プラットフォームが想定する名前と配置で返ってきます。en.json は es.json に、strings.xml は values-es フォルダーに、Localizable.strings は es.lproj に入ります。複数のファイルは1つの ZIP にまとめてダウンロードできます。ダウンロード前に、翻訳されたすべての文字列が原文と並べて画面に表示され、どの文字列も自由に編集できます。
- JSON と ARB:入れ子のキー、配列、キーの順序、インデント、スペースは元のファイルのまま。{count, plural, one {# item} other {# items}} のような ICU メッセージも構造を保ちます。ARB では "@" メタデータを残し、@@locale を設定します。
- PO と POT:msgid と msgctxt は変更しません。空のエントリと fuzzy エントリは翻訳し、すでに翻訳があるエントリはそのままにします。複数形のエントリには翻訳先の言語に必要な数だけ msgstr[n] を用意し、ヘッダーには Language と Plural-Forms を設定します。
- Android の strings.xml:<string>、<string-array>、<plurals> に対応。translatable="false" はスキップし、アポストロフィと引用符は Android の仕様どおりにエスケープします。<xliff:g> の中身は翻訳しません。
- iOS と macOS:.strings ファイルはコメントとエンコーディング(多くは UTF-16)を保持します。.xcstrings の String Catalog には、複数形のバリエーションを含む新しい言語のローカライズを追加し、翻訳済みの文字列はそのまま残します。
- XLIFF 1.2 と 2.0:未翻訳の <source> の後ろに <target> を追加し、<g>、<x/>、<ph>、<pc> などのインラインコードを保持して、ファイルに翻訳先の言語を設定します。
文字列ファイルの翻訳:チャットボットとこのツールの違い
AIチャットアシスタントは短い UI テキストの翻訳が得意で、チャットに貼り付けた数十個の文字列ならたいてい問題なく返ってきます。実際のローカライズファイルで困るのは、長さと構文です。数千のキー、プレースホルダー、複数形のルール、エスケープなど、1文字違うだけでコンパイラやライブラリがエラーにする要素がたくさんあります。
| 状況 | チャットボット | このツール |
|---|---|---|
| ボタンのラベル10個 | たいていはきれいに翻訳できる | 翻訳して、ファイルとして返す |
| 3,000キーのファイル | ファイルと同じ長さの返答が必要なため、途中で止まりがち | 最大60件ずつのブロックですべての文字列を翻訳。1件の作業につき最大 5,000 文字列まで |
| キーと階層構造 | ファイル全体を書き直すため、キーが翻訳されたり、名前が変わったり、抜け落ちたりすることがある | キーは翻訳対象として送信せず、ファイルはお手元の元ファイルから再構築 |
| {name}、%1$s、:attribute などのプレースホルダー | たいていは保たれるが、確認する仕組みはない | すべての文字列をチェック。プレースホルダーが欠けた文字列は再翻訳し、それでもだめなら原文のまま残して一覧に表示 |
| ロシア語・ポーランド語・アラビア語の複数形 | 英語の2つの形をそのままコピーしがち | 翻訳先の言語に必要な複数形をすべて出力し、それぞれに例となる数字を付ける |
| Android の文字列にあるアポストロフィ | エスケープされていないアポストロフィが残り、ビルドエラーの原因になることがある | アポストロフィと引用符を Android の仕様どおりにエスケープ |
ローカライズファイルの翻訳手順
-
1
ファイルをアップロードして言語を選ぶ
同じプロジェクトのファイルを1つまたは複数ドロップします。対応形式は JSON、ARB、PO・POT、strings.xml、.strings、.xcstrings、XLIFF です。翻訳先の言語と文体を選び、訳さない製品名があれば入力してください。
-
2
最初の文字列を無料で確認
最初の文字列が、キーと原文を並べた形で画面に表示されます。どの文字列もその場で編集できます。この手順にアカウントは不要です。
-
3
ロック解除してダウンロード
最初の文字列に問題がなければ、$5 でジョブ全体をロック解除し、翻訳済みのファイルをダウンロードしてください。確認が必要な箇所があれば、警告リストも付いてきます。
長い文字列ファイルが汎用AIアシスタントを苦戦させる理由
ローカライズファイルは、テキストであると同時にコードでもあります。チャットで翻訳するには、アシスタントがキー、括弧、エスケープまで含めてファイル全体を書き出さなければなりません。数千の文字列があるファイルは、1回の返答に収まる長さを超えてしまいます。途中で止まったり、続きを促されたりして、断片をつなぎ合わせる作業が残ります。
もう1つの問題は構文です。誤って翻訳されたキー、{cuenta} に変わってしまった {count}、ドルマークが消えた %1$s、strings.xml のエスケープされていないアポストロフィ。どれも長い返答の中のわずかな変化ですが、ビルドが壊れたり、ユーザーにプレースホルダーがそのまま表示されたりする原因になります。
このツールは、モデルにファイルを書き直させることはありません。ファイルを文字列に分解して読み込み、キーと開発者コメントを文脈として添えたテキストだけを、最大60文字列ずつのブロックで送信し、すべての文字列に1つずつ回答を求めます。インラインタグは先に短いマーカーに置き換えます。返ってきた回答はすべてチェックされます。プレースホルダー、\n などのエスケープ、マーカー、指定した名称、すべての複数形が一致しているかを確認します。基準を満たさない文字列は再度翻訳し、2回失敗した場合は原文をそのまま残して、その文字列を一覧でお知らせします。ファイルは最後に、元のファイルをもとに再構築されます。
よくある翻訳の用途
- React、Vue、Angular、Next.js のアプリ:i18next、vue-i18n、react-intl、ngx-translate の JSON ファイル
- Flutter アプリ:.arb ファイル。@metadata の説明を文脈として活用
- WordPressのプラグインやテーマ、Djangoなどのgettextプロジェクト:.potテンプレートと.poファイル
- Androidアプリ:文字列配列と複数形を含むres/values/strings.xml
- iOS・macOSアプリ:Localizable.stringsとString Catalog(.xcstrings)
- 翻訳プラットフォームやXcodeからXLIFFとして書き出したファイル
対応していないこと
YAML、.properties、.resx、.stringsdictファイルにはまだ対応していません。また、元ファイルにないi18nextの複数形キー(key_one、key_fewなど)を追加することもしません。翻訳するのは、お手元にあるキーのみです。.xcstringsファイルでは、置換やデバイス別バリエーションを使っている文字列はそのまま残ります。
すでにある翻訳は上書きしません。入力済みのPOエントリ、翻訳済みとマークされたXLIFFのターゲット、指定言語のString Catalogエントリはそのまま残ります。一回払いで、最大20個のファイル、5,000個の文字列まで対応します。Unlimited プランは、1件の作業あたり最大15,000個の文字列まで対応します。
構造チェック付きの機械翻訳です。新しい言語の初版を素早くリリースしたいときや、プロジェクトの翻訳を最新の状態に保ちたいときに適しています。ストア掲載情報、法的文書、ブランドの世界観が求められる文章は、ネイティブスピーカーによる確認をおすすめします。
よい結果を得るために
「Save」が動詞の「保存」なのか、割引の「お得」なのかは、文脈で決まります。settings.save_buttonのようなキーや、ファイル内のコメント(POの#.、ARBの@key description、.stringsの/* コメント */)は各文字列と一緒に送信されます。意味のあるキーと適度なコメントがあるファイルほど、翻訳の精度が上がります。
アプリ名や製品名は「翻訳しない語句」に登録し、敬体・常体の区別がある言語ではどちらにするかを選んでください。まず無料部分で試してから、ロック解除後に警告リストを確認しましょう。各項目には、キー、問題の内容、モデルが返した結果が表示されます。
言語・シーン別
料金
小規模な作業と最初の文字列
無料
300件までの文字列なら、ダウンロードを含めて全文無料です。結果は画面に表示され、アカウントは不要です。1日1件まで、無料アカウントなら1日3件まで利用できます。
ジョブ全体
$5
一回払いで、最大20個のファイル、5,000個の文字列まで。サブスクなし、有効期限なし。
使い放題(Unlimited プラン)
週 $19
サイト内のすべてのツールが使えます。1件の作業あたり最大 15,000 文字列まで対応します。
よくある質問
ChatGPTでJSONのローカライズファイルを翻訳できますか?
小さなファイルなら、たいていは可能です。ただ、数千キーのファイルは1回の返信で全部返す必要があるため、チャットボットは途中で止まりがちで、すべてのキーやプレースホルダーが残っているかを確認する仕組みもありません。このツールは値をブロックごとに翻訳し、すべてのプレースホルダーをチェックして、お手元のファイルをもとにファイルを組み立て直します。
対応しているフォーマットは?
JSON(i18next、vue-i18n、react-intl、ngx-translate など)、Flutter ARB、gettext の PO / POT、Android の strings.xml、iOS・macOS の .strings / .xcstrings、XLIFF 1.2 / 2.0 に対応しています。ファイルは1つあたり最大 10 MB、1件の作業につき最大 20 ファイルまで扱えます。
キーやプレースホルダーはそのまま保たれますか?
キーが翻訳のために送信されることはありません。{name}、{{count}}、%s、%1$d、%@、:attribute、%{name}などのプレースホルダー、\nなどのエスケープ、インラインタグ、絵文字は、すべての文字列でチェックされます。どれかが失われた文字列は再翻訳され、それでも失敗した場合は原文が残り、その文字列が警告リストに表示されます。
複数形はどのように処理されますか?
ICUメッセージは構造を保ったまま、翻訳先の言語で使われる複数形カテゴリに対応します。msgid_pluralを持つPOエントリには、翻訳先の言語に必要な数のmsgstr[n]が作られ、ヘッダーにも対応するPlural-Formsが設定されます。Androidの<plurals>とXcodeの複数形バリエーションは、翻訳先の言語のカテゴリで書き出されます(ロシア語ならone、few、many、otherなど)。
すでに翻訳済みの文字列はどうなりますか?
そのまま残ります。翻訳されるのは、空またはfuzzyのPOエントリ、完成したターゲットのないXLIFFユニット、指定言語のないString Catalogエントリのみです。JSON、.strings、strings.xmlでは、すべての値が原文として扱われます。
どの言語に翻訳できますか?
41言語に対応しています。スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語(ブラジルとポルトガル)、オランダ語、ポーランド語、ロシア語、ウクライナ語、トルコ語、アラビア語、ヘブライ語、ヒンディー語、インドネシア語、ベトナム語、タイ語、日本語、韓国語、中国語(簡体字・繁体字)などです。
無料で使えますか?
どの作業でも、最初の文字列は無料で翻訳され、アカウント不要で画面に表示されます。ジョブ全体とダウンロードは $5 の一回払いのみです。週 $19 の使い放題(Unlimited プラン)なら、サイト内のすべてのツールをご利用いただけます。小規模な作業は例外で、300 文字列までの作業はダウンロードも含めてすべて無料です。
ファイルは非公開ですか?
作業内容を開けるのはご本人だけです。文字列は翻訳のためだけにAIモデルのプロバイダーへ送信され、その際はデータが学習に使われない経路を利用します。アカウントなしでアップロードしたジョブは7日後に削除されます。ジョブはいつでもご自身で削除できます。
2026年10月23日更新 · APPFACT STUDIO LTD