コンテンツへスキップ

オープンソース · MIT · 独自の LLM キーを持ち込み

エージェントがローカライズし、コードが保証します。

コーディングエージェントが、ハードコードされた文字列をキーに移行して翻訳します。glot は決定論的なコードで LLM の出力をすべて検証し、壊れているもの、長すぎるものは正しい理由とともに拒否します。再試行が有効になるまで続けます。

アプリを開く

i18n スタックを検出し、文字列を抽出して翻訳し、チェックします。UIを変更するたびに再実行してください。

実際の glot バイナリです。この録画の LLM は、最初の試行で3つの文字列を意図的に誤るよう設定されています。拒否とそのメッセージは glot によるものです。

ベンチマーク、2026年10月18日

カタログに入った壊れた文字列

モデルと条件ごとに320件のICUメッセージ、8ロケール。プロンプトとモデルは同一。

モデルと条件別の、壊れていた翻訳メッセージの割合
モデル生のプロンプトglot使用時
Claude Haiku 5.514.1%0%
Claude Sonnet 5.58.8%0%
glot使用時、1.9%(Haiku)と3.1%(Sonnet)の文字列は再試行後に拒否され、壊れた状態で出荷される代わりに未翻訳のまま残されました。独立した審査(FormatJS + Intl.PluralRules)でも同様の結果です。 完全なレポートを読む

使い方

3つのステップ。エージェントでも実行できます。

または3つすべてを一度に、冪等に実行: npx glot-i18n localize。

  1. 1

    検出

    i18n ライブラリとカタログを検出し、glot.toml とコーディングエージェントが読むルールを書き出します。

    $ npx glot-i18n init

    next-intl · messages/{locale}.json

    wrote glot.toml, CLAUDE.md rules

  2. 2

    抽出

    ハードコードされた UI 文字列をキーに移行し、next-intl または react-i18next 用にコンポーネントを書き換えます。

    $ npx glot-i18n i18nize

    42 strings → keys in 9 components

    app/checkout/page.tsx +12 −12

  3. 3

    翻訳と検証

    差分のみ。各出力は検証され、拒否された場合は理由とともにモデルに戻されます。再試行後も無効な場合は、何も書き込まれません。

    $ npx glot-i18n translate

    ✗ refused pl inbox.unread: missing few, many

    ✓ fixed pl attempt 2 · check passed

保証の内容

LLM が提案し、書き込む内容はコードが決めます。

各カードは、glot が出力するそのままの、実際の拒否例を表示しています。

  • プレースホルダーとタグ

    ソースと同じセット。追加も翻訳もされません。ICU、i18next、MessageFormat 2。

    fr "Bon retour, {nom} !"

    glot により拒否: Placeholder `{nom}` does not exist in the source; remove it or fix its name (the source only has {name}).

  • CLDR 複数形

    対象ロケールに必要なすべてのカテゴリ:ポーランド語は4つ、アラビア語は6つ。

    pl "{count, plural, one {…} other {…}}"

    glot により拒否: `{count, plural, …}` is missing plural categories required by pl: few, many.

  • コードとしての用語集

    リポジトリ内の用語集ファイル glossary.toml:必須翻訳と禁止翻訳、翻訳対象外の用語。

    fr "Ouvrez votre espace"

    glot により拒否: Glossary: `Workspace` must be translated as `Espace de travail` in fr.

  • ピクセル幅

    お使いのアプリの実際のフォントとボックスで計測します。幅が広すぎる場合は拒否され、切り詰められることはありません。

    de "Zahlungserinnerung an den Kunden senden"

    glot により拒否: Too wide for its box in the app: one line of 120px at Geist 14px/400; it renders 276px wide.

  • ロックファイル

    glot.lock はソースとターゲットをハッシュ化します。差分だけを翻訳し、手動編集は決して上書きされません。

    $ glot translate --locales fr

    glot により拒否: 1 edited by hand

  • CIチェック

    glot check はすべてのルールをオフラインで全カタログに対して実行し、PRアノテーション付きで終了コード 1 で終了します。

    $ glot check --format github

    glot により拒否: ::error file=messages/de.json,line=12,title=glot tag_mismatch::[de] home.cta: Markup tags differ from the source: missing `<b>`

ピクセル予算

ボタンに収まる翻訳

ドイツ語は英語より約3分の1長くなります。glot fit は、各ロケールで実行中のアプリを描画し、すべてのテキストをそのボックスに対して計測し、意味とプレースホルダーを保つ短いバリアントを求め、そして再描画します。

  • 文字数から推測するのではなく、ブラウザで計測
  • 短縮されたバリアントも、バリデータと用語集の検証を通過します
  • 固定回数の試行で停止し、コストが際限なく増えることはありません
修正前 · 112 px のボタンからはみ出る
Zahlungserinnerung sendenAls bezahlt markierenArchivieren

"Zahlungserinnerung senden"

glot fit 後、1回の反復 · 収まる
MahnungAls bezahlt markierenArchivieren

"Mahnung" · claude-haiku-5-5 · $0.0002

デモアプリでの実行例、ドイツ語ロケール。

インストール不要で試せます

glot を壊せますか?

翻訳を編集してください。glot の翻訳を検証するのと同じバリデーターを WebAssembly にコンパイルしたものが、キー入力のたびにブラウザー内で実行されます。

壊れた翻訳から始める

バリデーターを読み込んでいます…

まだ拒否はありません。チャレンジを試してください。

ピクセル幅と用語集には、お使いのアプリとリポジトリが必要です。CLI でお試しください。

エージェント

お使いのエージェントでそのまま使えます

glot mcp を使うと、エージェントはキー、その使用箇所、用語集を参照できます。エージェントが追加するすべての文字列は同じバリデーターを通ります。

エージェントごとのセットアップ

アプリ内編集

アプリ内のテキストを Alt+クリック

開発用オーバーレイが、クリックしたテキストの背後にあるキーを特定し、すべてのロケールで表示しつつ、リアルタイムのバリデーター問題を示し、カタログファイルに保存します。

  • AI アクション: 提案、短縮、よりフォーマルに、すべて翻訳
  • コンテナーからはみ出すテキストを検出
  • 開発時のみ、gzip 圧縮で約 6 kB
キー、ソース、5言語の翻訳を表示する glot のオーバーレイ ポップオーバー

比較

glot が、ホスト型翻訳プラットフォームや他の開発者向けツールとどう異なるか。

機能glotLokaliseCrowdinLingo.devTolgee
価格無料(MIT)+ お使いの LLM の利用料月額 $149 から、14日間の試用14日間の試用後は有料プラン、オープンソースは無料自分のキーで使う CLI は無料、ホスト型エンジンは基本料金 $0 + 使用量無料プランとセルフホストは無料、クラウドは月額 €58 から
オープンソース
独自の LLM キーを使用
すべての文字列を決定論的に検証
Git を信頼できる唯一の情報源(ロックファイル)
コーディングエージェント向けの MCP サーバー
アプリ内でのインコンテキスト編集
描画済みピクセル予算による調整

2026年10月18日時点で、各社の公開サイトとドキュメントを確認しました。「一部」は、機能が限定的、プランによって異なる、または連携経由で提供されることを意味します。「なし」は、公開ドキュメントにその機能が見当たらなかったことを意味します。プランは変更されることがあるため、すべてのセルは出典にリンクしています。

すべてのセルの出典と日付

料金はいくらですか?

glotはMITライセンスで無料です。LLMプロバイダーへの支払いは、お客様自身のキーで行います。当社の実行では、既定のモデルで850件の文字列のコストは$0.035でした。glot translate --dry-runで事前に見積もれ、予算を設定すると上限を設けられます。

ランタイムの依存関係は追加されますか?

いいえ。アプリは next-intl、i18next、FormatJS をプレーンなJSONカタログと一緒にそのまま使用します。glotはリポジトリとCI内のファイルに対して動作します。

モデルが文字列を繰り返し間違える場合はどうなりますか?

glotは失敗の正確な理由を送り返して2回再試行し、その後フォールバックモデルを試します。それでも失敗した場合は何も書き込まれず、そのキーは拒否として報告され、未翻訳のままになります。

コードは私のマシンの外に出ますか?

翻訳対象の文字列とそのコンテキストは、お使いのLLMプロバイダーに送信されます。ソースファイルは送信されません。glotの開発元に送られるものはなく、テレメトリもありません。

Webアプリは必要ですか?

いいえ。CLIとMCPサーバーですべてのジョブをローカルで処理します。アプリは、チーム向けの共有ダッシュボード、レビュー、GitHub同期を追加します。

リリースのたびに、すべての言語を出荷。

リポジトリで1つのコマンドを実行するだけです。壊れたものがカタログに入ることはありません。

クイックスタートを読む