Coroidは、自社製品の翻訳にも使用する同じエンジンで、13言語に対応して翻訳を実行します。カタログはリポジトリ内のファイルとして保持され、変更が生じると通常のタスクとしてpull requestに送信されます。新規、変更、または破損した文字列のみがモデルに渡されます。
翻訳データは以下の場所に格納されます:品質管理 → 翻訳。一覧には各プロジェクト、翻訳が設定済みかどうか、最新のスキャン結果が表示されます。プロジェクトを開くとワークベンチが利用できます。
- ストアフロント
- ドキュメントサイト
- モバイルアプリ
| ロケール | 未記載 | 古いデータ |
|---|---|---|
| de | 0 | 2 |
| fr | 14 | 0 |
| ja | 14 | 1 |
| ar | 14 | 0 |
- 翻訳タスクQAおよびプルリクエスト · 変更された文字列のみ公開済み
- 翻訳監査定期実行 · すべてのカタログおよびロケールページ下書き
品質管理 → 1つのプロジェクトの翻訳:各ロケールごとの最新の翻訳チェック、および翻訳と翻訳監査の制御。参考データ。
リポジトリで必要な要件
Coroidが対応するカタログ形式は以下の通りです:
| 形式 | 用途 |
|---|---|
| ICU JSON | ICU複数形・選択処理を含むメッセージファイル |
| i18next JSON | i18nextおよびreact-i18nextのカタログで、複数形接尾辞も対応 |
| Vue i18n JSON | vue-i18nのメッセージで、リンク付きメッセージやパイプ式複数形も対応 |
| Rails YAML | config/locales/*.yml、および%{name}補間処理と複数形キーも対応 |
| gettext PO | .poファイルと.potテンプレートで、Plural-Forms言語ごとに管理 |
| MarkdownおよびMDX | 言語フォルダー内のドキュメントページ(docs/en/…):テキスト、画像説明、指定されたフロントマター項目が翻訳対象で、コードやマークアップはそのまま維持されます。 |
| カスタム | その他の形式も、リポジトリ内の小さなアダプターコマンドを通じて対応可能 |
まだ翻訳の必要がない場合でも、プロジェクトにi18nが設定されていなければ、Coroidが導入を支援します。
設定
「セットアップ」タブでは3つの手順を案内します。
- 検出。Coroidは検出タスクを準備します。ピン留めされた翻訳エンジンをリポジトリ上で実行し、使用技術スタック、カタログ、ソース言語、不明な点を記録します。
- 選択。「既存のi18nを採用」を選ぶと、現在のフレームワークとカタログを維持しつつ、Coroidのチェック機能とデルタエンジンを追加できます。「i18nを導入」を選ぶと、Coroidがフレームワークの設定、代表的な文字列の抽出、ロケールルーティング、フォールバック機能、右から左への表示対応までを行います。
- 作成。Coroidは仕様書と受け入れ基準を含むセットアップタスクを作成し、最終的には他のタスクと同様にレビューするpull requestが生成されます。
- ストアフロント
- ドキュメントサイト
- モバイルアプリ
- 検出
- 2選択
- 3作成
現在のフレームワークとカタログを維持しつつ、Coroidの翻訳チェック機能とデルタエンジンを追加します。
フレームワークを接続し、代表的な文字列を抽出してから、ロケールルーティング、フォールバック、RTL動作を設定します。
- ソースロケール
- en
- ターゲットロケール
- de, fr, ja, ar
検出後のセットアップタブ:既存のi18nを採用するか、新たに導入し、ソースロケールとターゲットロケールを設定。参考データ。
そのpull requestがデフォルトブランチにマージされるとセットアップが完了し、Coroidが同期を開始します。それまではワークベンチ内の他の機能がこの設定を前提とすることはありません。
リポジトリファイル
セットアップ処理により「.coroid/i18n.json」が作成されます。これはリポジトリの構成を記述するもので、プルリクエストを通じて更新されます:
{
"version": 1,
"cli": { "version": "1.7.0", "sha256": "…" },
"sourceLocale": "en",
"targetLocales": ["de", "fr", "ja", "ar"],
"catalogs": [
{
"id": "ui",
"format": "i18next-json",
"source": "messages/{locale}.json"
}
],
"localeTier": { "ja": "escalation" }
}cliエンジンの正確なバージョンとチェックサムが記録されます。Coroidは実行前に必ずそのバージョンをダウンロードして検証するため、更新によって予期せぬ出力変化が生じることはありません。sourceLocaleソース言語は任意で指定可能です。例えばスウェーデン語をソースとし、英語やドイツ語に翻訳するケースも同様に動作します。localeTierロケールごとの翻訳品質レベルを指定できます。利用者が直接モデルを選択するのではなく、あらかじめ設定した階層を選択します。
このファイルには用語集、保護対象用語、製品コンテキスト、ロケールごとの指示事項なども記載できます。
変更するには、「設定」タブで変更案を作成し、変更を提案を選択してください。Coroidが該当ファイルを適用し、影響を受ける翻訳を修正するタスクを起動します。
同じタブには、リポジトリではなくCoroid自体に属する設定もあります。例えば、提案ピッカーを開けるサイトの制限、提案のデフォルトでのレビュー有無、プロジェクトの翻訳費用上限などです。
すべての変更をチェック
翻訳データは2種類の品質管理プロセスを通じて検証されます。「概要」タブから追加できます。
- 翻訳はタスクQAおよびプルリクエスト時に実行され、変更が及んだ文字列のみをチェックします。
- 翻訳監査は定期的に実行され、すべてのカタログとロケールをチェックします。必要に応じてロケール対応ページのブラウザテストも行い、右から左へのレイアウト、テキストのオーバーフロー、未翻訳のテキストがページ上に残っていないかを確認します。
新たなチェック項目を追加するとポリシー案が作成されます。内容をレビューした後、「品質ポリシー」で有効化してください。
各問題はIssueコード付きのファインディングとして報告されます:
| コード | 意味 | デフォルトでブロック |
|---|---|---|
missing | 該当文字列に翻訳が存在しない | はい |
invalid_syntax | 翻訳がパースできない(例:ICU形式が破損しているなど) | はい |
placeholder_mismatch | プレースホルダーがソースと一致しない | はい |
plural_categories | このロケールで必要な複数形が欠落しています | はい |
stale | 文字列が翻訳された後にソースが変更されました | いいえ |
コントロールの設定で、どのコードをブロックするかを指定できます。用語集や長さ・禁止語ルールは、ファイルで設定された場合にそれぞれのコードを報告します。
missingui · checkout.total · fr未翻訳staleui · nav.deals · de翻訳後にもソースが変更されたplaceholder_mismatchui · cart.items · jaプレースホルダーがソースと一致しないplural_categoriesui · cart.count · arこのロケールでは複数形の表現が欠落している
翻訳チェックによる品質上の問題点:各問題点には1つのコードが割り当てられる。参考データ。
翻訳処理でタスクがブロックされると、開発者エージェントが毎回同じ方法で修復します。つまり、該当タスクの翻訳セッションを開始し、変更された文字列に対してエンジンを実行するだけで、ターゲットカタログを手動で編集することはありません。
翻訳モデル
翻訳機能は AI プロファイル内で独自の役割を持ちます。翻訳者、Architect、Developer、QA、Reviewer と並ぶ役割です。デフォルトでは翻訳モデルである Hy-MT2 を使用し、組織のポリシーが許す限り GPT-6 Luna をフォールバックとして利用します。他の役割と同様に、AI プロファイル内でこのマッピングを変更可能です。
エンジンは文字列をサイズ別にバッチ処理し、返信内容をプレースホルダーや複数形ルールに照らして検証します。失敗した文字列は再試行またはエスカレーションされます。
コスト
翻訳機能はすべてのプランで利用可能です。翻訳リクエストは Coroid の翻訳ゲートウェイを経由し、エージェント実行と同様に組織へのモデル利用料として課金されます。セットアップタスクも他のタスクと同様にプランのエージェント時間にカウントされます。
デフォルトの翻訳者ルートを使用すると、1,000文字列あたり1言語につき約2セントのコストがかかります。2,000文字列のカタログを10言語に翻訳する場合、測定結果では約0.33ドルの費用がかかりました。
- 変更された部分のみにコストが発生します。エンジンはソーステキストをキーにしたキャッシュを保持するため、変更されていない文字列は再度送信されません。
- 各タスクには翻訳制限が設けられています。セッションはタスクの支出上限に達すると停止し、デフォルトでは1ドルです。プロジェクト側でより低い上限を設定可能です。 設定 → アクセスと支出。
- チェック項目はモデル呼び出しを行いません。翻訳コントロールおよび監査機能はカタログを読み取るだけで、翻訳は行いません。
Coroid 外での翻訳
エンジンはコマンドラインツールです。coroid-i18n。独自の CI 環境で同じ固定バージョンを OpenRouter キーと共に実行可能です。Coroid 内ではタスクが常に翻訳ゲートウェイを利用するため、支出や制限が一箇所で管理されます。