Polyglot
アプリとサイトの文言を43言語に翻訳し、1つずつチェックします。翻訳にはご自身のモデルを使用します。
- Linux or macOS
- Python 3.9+
- Local LLM
- 6 file formats

機能
Polyglot は、アプリやサイトがすでに持っている英語の文字列を、ご自身で実行するモデルを使って最大 42 の言語に書き出し、各プラットフォームが期待するファイルとフォルダに配置します。すべての文字列はチェック済みで返されます。プレースホルダー、タグ、保持すべき名前が欠落していたり、その言語の文字体系でなかったりする場合、その文字列は再依頼され、それでも失敗する文字列は破損したまま出荷されるのではなく、除外されて報告されます。
- お使いのフォーマット。 JSON メッセージファイル(i18next、vue-i18n、next-intl、react-intl)、Flutter ARB、Android strings.xml、Apple .strings、gettext .po、Markdown 文書に対応し、values-de、de.lproj、app_de.arb、locale/de に書き出します。
- 文字列ごとにチェック。 %1$s、{name}、{{count}}、HTML タグ、改行、URL、保持すべき名前は正確に復元される必要があります。正しい文字体系であること、空や暴走した回答がないこと、英語のまま残っていないことを確認します。
- 実際の複数形。ロシア語にはone、few、many、otherがあり、アラビア語には6種類、日本語には1種類の形があります。Androidの複数形とICUメッセージは、各言語固有のルールに従います。
- 変更分のみ。 正常な翻訳はすべて記憶されるため、英語の文字列を 1 つ編集すると、ファイル全体ではなくその 1 文字列だけが送信されます。
- トーンと用語。 プロダクトの説明、トーン、翻訳しない名前、用語集をすべてのリクエストに含め、コメントもメモとして一緒に送られます。
- モデルもマシンもあなたのもの。 OpenAI-compatible なサーバーなら何でも利用できます。vLLM、llama.cpp、Ollama、LM Studio、または選択すればホスト型 API も可能です。単語単位の課金はありません。
実モデルでテスト済み
- 実際のモデル、6 形式、5 スクリプト: 70 文字列のサンプルアプリを JSON、Flutter ARB、Android、Apple .strings、gettext、Markdown の各形式で、ドイツ語、ロシア語、日本語、アラビア語、スペイン語に翻訳します。オープンな Qwen モデル(Qwen3.8-Flash-Next、4 ビット量子化)を vLLM で自社マシンに構築して使用しました。混雑した共有サーバー上で 7.5 分間実行し、350 文字列中 346 文字列が入力時のチェックを通過しました。
- 通過しなかった 4 文字列は、モデルの誤りではなくチェック側の誤りでした。ドイツ語の外来語、メールアドレス、日本語の複数形メッセージです。チェックを修正し、次の実行ではその 4 文字列のみを送信し、350 文字列すべてを 45 秒で書き出しました。
- 複数形を初回で正しく: ロシア語は one、few、many、other、アラビア語は 6 形式、日本語は単一形式。
- 全42言語:サンプルの22件のWeb文字列を、Polyglotが対応する全言語(アムハラ語から繁体字中国語まで)へ翻訳。15分で924件中924件の文字列を書き上げました。
- チェックが見逃すもの:クメール語では、「オフラインです」が「オンラインです」と返ってきました。クメール語として完璧だったため、チェックを通過したのです。だからこそ、ドキュメントでは最も重要な文字列についてはネイティブスピーカーによる確認を求めています。
中身
翻訳エンジン
モデルへのバッチ送信、チェック、問題点を明示したリトライ、翻訳メモリ、言語の並列処理。
6つのフォーマット
各プラットフォームのエスケープ、フォルダ構造、複数形ルールを保持するリーダーとライター。
チェック機能
単体でも利用可能:既存の翻訳を英語のソースに対してチェックできます。
サンプルアプリ
設定ファイル付きの小さなアプリを6つのフォーマットで用意。自分のプロジェクトで試す前に確認できます。
動作環境
- Python 3.9 以降が動作する Linux または macOS。pip での追加インストールは不要です。
- 多言語対応の指示モデルを備えた OpenAI-compatible モデルサーバー。当社の環境ではオープンな Qwen モデル(Qwen3.8-Flash-Next、4 ビット量子化)を使用しています。
よくあるご質問
- チェック機能はアプリを壊す要素を検出しますが、意味の誤りは検出しません:ストアの商品ページ、課金ページ、法務文書はネイティブスピーカーに読んでもらいましょう。
- gettextの複数形エントリは、このバージョンでは英語のままです。
- 速度はモデルの性能に依存します。
- チェック機能は無料でオープンソースです:GitHubのtranslation-checks。キットには翻訳エンジン、6つのフォーマット、複数形対応、翻訳メモリ、1年間のアップデートが含まれます。
現場ノートより
よくある質問
対応言語は?
英語から、アラビア語、アムハラ語、ブルガリア語、チェコ語、ドイツ語、ギリシャ語、スペイン語、ペルシャ語、フィンランド語、フィリピン語、フランス語、スコットランド・ゲール語、ヘブライ語、ハイチ・クレオール語、ハンガリー語、アルメニア語、インドネシア語、イタリア語、日本語、クメール語、カンナダ語、韓国語、マケドニア語、マレー語、オランダ語、ノルウェー語、オロモ語、パンジャブ語、ポーランド語、ポルトガル語(ブラジル)、ルーマニア語、ロシア語、スロバキア語、スロベニア語、セルビア語、スウェーデン語、タイ語、トルコ語、ウクライナ語、ベトナム語、簡体字中国語、繁体字中国語。
GPUは必要ですか?
Polyglot自体には不要です。モデルサーバーの構成によります。小さなモデルならCPUでも動作しますが遅くなります。GPUがあれば、多言語での大容量ファイルの処理は数分で終わります。
モデルが間違えた文字列はどうなりますか?
問題点を明示したうえで、その文字列だけを再依頼します。それでも失敗した場合はファイルから除外されるため、アプリではその文字列のみ英語が表示され、実行ログには除外理由が記載されます。壊れたデータが書き込まれることはありません。
ホスト型のAPIを利用できますか?
はい。OpenAI-compatibleなチャットエンドポイントを持つサービスなら可能です。ベースURLとモデル名をpolyglot.jsonに設定し、キーをファイルに保存してください。
更新済み: