Why we built l10n
Crowdin/Weblate slowed our feedback loop. We wanted translations that behave like code.
l10nはLLMでコンテンツを翻訳し、すべてをリポジトリ内に保持し、出力をローカルで検証します。外部プラットフォームとのやり取りなしに、チームがレビューできるドラフトを生成します。
コンテンツと一緒にL10N.mdコンテキストファイルを配置します。l10nは依存関係を追跡するので、コンテキストやコンテンツが変更されると、影響を受ける翻訳だけが再生成されます。
エージェントセッションを調整するモデルと、正確に翻訳するモデルをそれぞれ選びます。OpenAI互換エンドポイント、Vertex AI、または自前でホストしたモデルを使用できます。
エージェントは組み込みの構文チェックと、あなたが定義したカスタムコマンドにアクセスできます。各翻訳後にバリデーションを実行し、エラー時にはリトライするので、レビュー前に正しい出力が得られます。
Agents use tools to automate verification after every translation.
Parse output to ensure it is valid before it is saved.
Guarantee critical tokens survive translation.
Bring your own validators with check_cmd and check_cmds.
Tool failures trigger retries until the output is valid.
TOMLフロントマターで翻訳ソース、ターゲット、出力パターンを定義します。
+++
[[translate]]
source = "site/src/_data/home.json"
targets = ["es", "de", "ko", "ja", "zh-Hans", "zh-Hant"]
output = "site/src/_data/i18n/{lang}/{basename}.{ext}"
+++
# Context for the translating agent...
翻訳、検証、更新が必要なものの追跡を行います。
--force ですべてを再翻訳できます。
ソースコンテンツまたは上位のL10N.mdコンテキストが変更されると、翻訳が更新されます。
JSON、YAML、PO構文チェックに加え、オプションで外部lintコマンドも実行可能。
コーディネーターと翻訳者のモデルを分離し、バリデーションエラー時にはリトライ。
ドラフトを素早く生成し、必要に応じてレビューし、すべてをGitで管理。
翻訳は初日から完璧である必要はありません。コードと同じように、反復を通じて改善されます。
LLMによる初回ドラフトは構造的に正しいものの、ニュアンスやトーン、ドメイン固有の表現を外すことがあります。それは設計通りです。レビューサイクルの度に — プルリクエストでのコメント、コンテキストファイルの更新、用語集の修正 — 次の翻訳実行にフィードバックされます。品質は一回で完成するのではなく、繰り返しの中で収束していきます。
LLMがコンテキストファイルに基づき、構造的に有効な初回パスを生成します。
チームがコードレビューと同じようにプルリクエストで問題を指摘します。
更新されたコンテキストと用語集の修正が次の実行にフィードバックされ、品質の差を縮めます。
各サイクルが本番品質との距離を縮めます。システムはプロダクトの声を学んでいきます。
これは製造業のカイゼン、プロの翻訳におけるポストエディティング(PEMT)、工学における逐次近似と同じ原則に従っています:十分に良いベースラインから始め、人間の判断をループに入れて体系的に改善していきます。
従来のツールは翻訳メモリ、つまり類似度でマッチングされる過去の翻訳の静的データベースに依存しています。l10nはそれをLLMコンテキストをメモリとして置き換えます:エージェントが読み取り、学習し、チームが時間をかけて改善できるコンテキストファイルです。曖昧なマッチを検索する代わりに、エージェントはあなたのプロダクトのトーン、用語、規約を理解します。そして開発者がコンパイルやlintでコード変更を検証するように、エージェントはあなたの環境にある同じツールを使って翻訳を検証します。CIでもローカルでも実行でき、エージェントはあなたのlinter、コンパイラ、バリデーターを使って自身の出力を修正します。
はい。l10nはCLIツールであり、ホスティングサービスではありません。OpenAI互換エンドポイント、Vertex AI、または自前のモデルを指定します。コスト、データ、品質はあなたがコントロールします。
現在、レビュアーはプルリクエストとdiffを通じて翻訳されたコンテンツを確認し、必要に応じてコンテキストファイルを更新して再翻訳を強制できます。将来的には、開発者がCodexのようなコーディングエージェントを使うのと同じように、l10nをローカルで実行することでループの一部になることを想定しています。