ドキュメント

プロジェクトを翻訳する

プロジェクトの翻訳を設定し、品質管理を通じて常に最新の状態を保ち、そのコストを把握しましょう。

Coroidは、自社製品の翻訳にも使用する同じエンジンで、13言語に対応して翻訳を実行します。カタログはリポジトリ内のファイルとして保持され、変更が生じると通常のタスクとしてpull requestに送信されます。新規、変更、または破損した文字列のみがモデルに渡されます。

翻訳データは以下の場所に格納されます:品質管理 → 翻訳。一覧には各プロジェクト、翻訳が設定済みかどうか、最新のスキャン結果が表示されます。プロジェクトを開くとワークベンチが利用できます。

ストアフロント
設定済み · ソース: en · ターゲットロケール: 4件
概要セットアップ設定貢献者提案自動化
最新のスキャン問題点を表示実行内容を表示
ロケール未記載古いデータ
de02
fr140
ja141
ar140
  • 翻訳タスクQAおよびプルリクエスト · 変更された文字列のみ公開済み
  • 翻訳監査定期実行 · すべてのカタログおよびロケールページ下書き

品質管理 → 1つのプロジェクトの翻訳:各ロケールごとの最新の翻訳チェック、および翻訳と翻訳監査の制御。参考データ。

リポジトリで必要な要件

Coroidが対応するカタログ形式は以下の通りです:

形式用途
ICU JSONICU複数形・選択処理を含むメッセージファイル
i18next JSONi18nextおよびreact-i18nextのカタログで、複数形接尾辞も対応
Vue i18n JSONvue-i18nのメッセージで、リンク付きメッセージやパイプ式複数形も対応
Rails YAMLconfig/locales/*.yml、および%{name}補間処理と複数形キーも対応
gettext PO.poファイルと.potテンプレートで、Plural-Forms言語ごとに管理
MarkdownおよびMDX言語フォルダー内のドキュメントページ(docs/en/…):テキスト、画像説明、指定されたフロントマター項目が翻訳対象で、コードやマークアップはそのまま維持されます。
カスタムその他の形式も、リポジトリ内の小さなアダプターコマンドを通じて対応可能

まだ翻訳の必要がない場合でも、プロジェクトにi18nが設定されていなければ、Coroidが導入を支援します。

設定

「セットアップ」タブでは3つの手順を案内します。

  1. 検出。Coroidは検出タスクを準備します。ピン留めされた翻訳エンジンをリポジトリ上で実行し、使用技術スタック、カタログ、ソース言語、不明な点を記録します。
  2. 選択。「既存のi18nを採用」を選ぶと、現在のフレームワークとカタログを維持しつつ、Coroidのチェック機能とデルタエンジンを追加できます。「i18nを導入」を選ぶと、Coroidがフレームワークの設定、代表的な文字列の抽出、ロケールルーティング、フォールバック機能、右から左への表示対応までを行います。
  3. 作成。Coroidは仕様書と受け入れ基準を含むセットアップタスクを作成し、最終的には他のタスクと同様にレビューするpull requestが生成されます。
ストアフロント
まだ設定されていません · セットアップ中
概要セットアップ設定貢献者提案自動化
  1. 検出
  2. 2選択
  3. 3作成
検出済み: Next.js と next-intl · 3つの JSON カタログ · ソース: en
既存のi18nを採用する

現在のフレームワークとカタログを維持しつつ、Coroidの翻訳チェック機能とデルタエンジンを追加します。

i18nを導入する

フレームワークを接続し、代表的な文字列を抽出してから、ロケールルーティング、フォールバック、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文字列が翻訳された後にソースが変更されましたいいえ

コントロールの設定で、どのコードをブロックするかを指定できます。用語集や長さ・禁止語ルールは、ファイルで設定された場合にそれぞれのコードを報告します。

品質管理
最新の実行結果から、翻訳チェックに関連するファインディングのみを抽出したものです。
ポリシー問題点4実行履歴
  • 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 内ではタスクが常に翻訳ゲートウェイを利用するため、支出や制限が一箇所で管理されます。