ルール

Max PrilutskiyCEO 兼 共同創業者読了目安 3分

ルールとは、ローカライゼーションエンジンが対象ロケールに適用する、名前付きの言語ルールを1つ指します。たとえば「住所では Straße を Str. と略す」であって、「もっとカジュアルにする」のような曖昧な指示ではありません。ルールは rulesets で管理されます。これは組織所有のコンテナで、エンジンにアタッチして適用します。つまり、1つのルールセットで、必要なすべてのエンジンを一貫して制御できます。

以前は instructions と呼ばれていました

ダッシュボードでは現在、これらをルールと呼び、ルールセットとしてまとめています。REST API では、個別のルールは引き続き /instructions で公開されており、フィールド名も変わっていません。変わったのは、ルールを記述する場所です。rulesetId が ownerEngineId に置き換わりました。

仕組み#

ルールセットはエンジンではなく、組織に属します。エンジンに紐づけることで、そのルールが適用されます。ルールがエンジン側にコピーされることはありません。

オブジェクトフィールド
ルールセット名前、説明。ルールは好きなだけ保持できます。
ルール名前、対象ロケール(または *)、テキスト。

翻訳リクエストが届くと、エンジンは紐づけられているすべてのルールセットから、リクエストの targetLocale に一致する対象ロケールを持つルールをすべて集め、ブランドボイスや用語集とあわせて LLM プロンプトに含めます。ルール同士が競合することはありません。一致したルールはすべて含まれ、ロケールの一致度が高い順に並ぶため、より適切なガイダンスが先に効きます。

フィールド説明
名前ルールを識別するための短いラベル(例: 「ドイツ語の敬称表現」)
対象ロケールこのルールの適用対象となるロケール、またはすべてのロケールを対象にする場合は *(ダッシュボードでは任意のロケール)
テキスト自然言語で記述する言語ルール

1つのロケールに複数のルールを設定可能

1つのロケールに必要なだけルールを作成できます。各ルールは1つの論点だけを扱うようにしてください。そうすることで、個別にテストでき、rules AI評価 でスコア化しやすくなり、安心して削除できます。

ルールセットは組織所有です#

操作効果
ルールセットを作成する組織レベルに作成され、紐づけるまでは何にも適用されません
エンジンに紐づけるその中のすべてのルールが、そのエンジンの翻訳に適用されます
複数のエンジンに紐づける同じルールがすべてのエンジンに適用されます。1回編集すれば、すべてのエンジンに反映されます
1つのエンジンに複数のルールセットを紐づけるそれぞれのルールがまとめて適用されます
エンジンから紐づけを外すそのエンジンでは適用されなくなります。ルールセットとそのルール自体は保持されます。
ルールセットを削除するまだ適用中のエンジンがある間は削除できません。先に紐づけを外してください。削除すると、そのルールも一緒に削除されます。
エンジンを削除するルールセットとルールは残ります。これらはエンジンではなく組織に属しているためです。

ルールセットは Infrastructure → Rulesets で管理します。ルールセットの Rules タブではそのルールを確認でき、Settings タブには組織のエンジン一覧が表示されるため、そこでルールセットをエンジンに適用したり、適用を停止したりできます。反対に、エンジンの Settings タブには Rulesets セクションがあり、そのエンジンに適用されているルールセットを確認でき、Add ruleset から別のルールセットを追加できます。

あらかじめ用意されたルール#

Lingo.dev では、すぐに使えるルールのカタログを厳選して提供しています。多くのチームで必要とされながら、見落とされがちなロケール規約をまとめたものです。これらはルールセットを介さず、エンジンに直接適用され、必要に応じていつでも適用解除できます。

ダッシュボードには事前定義ルール専用の画面はありません。カタログの参照や項目の適用は、API または MCP サーバー から行ってください。

呼び出しMCP ツール目的
GET /predefined-instructionspredefinedInstructions_listカタログを一覧表示
GET /engines/:id/predefined-instructionsengines_listPredefinedInstructionsエンジンに適用されている事前定義ルールを一覧表示
PUT /engines/:id/predefined-instructionspredefinedInstructions_setForEngineエンジンに適用されているセットを置き換える — ids の完全な一覧を送信し、含まれていないものはすべて適用解除されます
DELETE /engines/:id/predefined-instructions/:predefinedInstructionIdpredefinedInstructions_detachエンジンへの項目の適用を一つ停止する
GET /predefined-instructions/:id/engines?organizationId=predefinedInstructions_listEnginesその項目を適用している組織のエンジンを一覧表示

各カタログ項目には、対象ロケール、名前、説明、type(standard、convention、または preference)と category があります。同じ groupKey を共有する項目は、同じロケールに対する代替候補です。エンジンに適用できるのはそのうち一つまでで、二つを選ぶリクエストは拒否されます。適用と適用解除には、エンジンに対する engine:edit が必要です。カタログは、サインインしていれば誰でも閲覧できます。

厳選されたルールは、あなた自身のルールより前にプロンプトへ配置されます。そのため、自分で書いたルールはベースラインとぶつかるのではなく、それを補足したり上書きしたりできます。

ルールとブランドボイスの違い#

どちらも翻訳結果を左右しますが、役割のレベルが異なります。

ブランドボイスルール
範囲全体のトーン、スタイル、丁寧さ特定の1つの言語ルール
ロケールごとロケールごとに1つのテキスト、各エンジンでロケールごとに1つのボイス1つのロケールに複数のルールを設定可能
適用最も一致度の高い1つのテキスト一致するすべてのルールを組み合わせる
ワイルドカードはい(* はデフォルトのボイスとして機能します)はい(* はすべてのロケールに適用されます)
例「くだけた du を使い、技術的なトーンにする」「住所では常に Straße を Str. に省略する」

ブランドボイスを使う と、その言語でプロダクトがどう話すかを定義できます。たとえば、丁寧さ、レジスター、文体などです。

ルールを使う と、略語、句読点、単位表記、ロケール固有の文法パターンなど、モデルが見落としがちな具体的な慣習をルール化できます。

両者は一緒に機能します。ブランドボイスが全体の話し方を決め、ルールが細かなケースを補います。

効果的なルールの書き方#

各ルールは、1つの明確で曖昧さのない記述にしてください。エンジンはその全文を LLM プロンプトに含めるため、わかりやすさが重要です。

良いルール#

text
Always use the Oxford comma in English lists.
text
In Japanese, use full-width parentheses ()instead of half-width ().
text
For German addresses, abbreviate "Straße" to "Str." and
"Nummer" to "Nr."
text
When translating percentage values for French, add a
non-breaking space before the percent sign: 42 %.

避けたいこと#

  • ブランドボイスと重なる曖昧なガイダンス(「もっとカジュアルにする」など) - その場合は代わりにブランドボイスへ書いてください
  • 関連のない慣習を1つのルールにまとめないでください。個別にテストできるよう、それぞれ別のルールに分けましょう
  • 用語集と矛盾するルール - エンジンの階層では用語集の用語が優先されます

ワイルドカードロケール#

すべてのロケールにルールを適用するには、対象ロケールを *(ダッシュボードでは任意のロケール)に設定します。言語に依存しない規約に便利です。

text
Never translate product feature names: "Smart Compose",
"Quick Actions", "Flow Builder".
text
Preserve Markdown formatting in all translated strings.
Keep bold (**), italic (*), and link syntax [text](url) intact.

エンジンがリクエストを処理するときは、ロケール固有のルールとワイルドカードルールの両方が含まれます。どちらかが上書きされるのではなく、組み合わせて適用されます。

API でルールを使う#

ルールは localize endpoint を呼び出すと自動的に適用されます。エンジンは、そのエンジンに適用されているルールセットから、リクエストの targetLocale に一致するすべてのルール(さらに * ルールも含む)を集め、加えてそのエンジンに適用された 事前定義ルール も合わせて適用します。追加のパラメーターは必要ありません。

呼び出し目的
POST /rulesets組織用のルールセットを作成する
GET /organizations/:id/rulesets組織のルールセットを、ルール数とエンジン数付きで一覧表示する
GET /rulesets/:id/rulesルールセット内のルールを一覧表示する
POST /instructions with rulesetIdルールセットにルールを追加する
PUT /engines/:id/rulesetsエンジンが適用するルールセット一式を置き換える
DELETE /engines/:id/rulesets/:rulesetIdエンジンへの1つのルールセットの適用を停止する
GET /engines/:id/instructionsルールセット経由でエンジンに適用されているすべてのルールを一覧表示(事前定義ルールは別途表示)

ownerEngineId の POST /instructions も引き続き利用できます。これはエンジン専用のルールセットに書き込み、エンジンにルールセットがなければ新しく作成します。基本的には rulesetId の利用をおすすめします。

アクセス#

org:ruleset:read と org:ruleset:edit は、ルールセットとその中のルールを管理するための権限です。ルールセットをエンジンに適用するには、そのエンジンに対する engine:edit も必要です。ルールセット単位の付与では、組織内のすべてのルールセットではなく、特定の一つのルールセットに対して読み取りと編集の権限を付与できます。付与の設定はダッシュボードではなく、API または MCP から行います。Roles & Permissions を参照してください。

MCP 経由でルールを管理する#

Lingo.dev MCP server を使っている場合、AI コーディングアシスタントからルールやルールセットを直接作成、更新、削除できます。

text
"Create a ruleset called German conventions and apply it to
the marketing engine."
text
"Add a rule to that ruleset: always abbreviate Straße to Str.
in addresses."
text
"Add a wildcard rule: never translate the term Smart Compose."
text
"List the predefined rules for German and attach the ones
you recommend to the marketing engine."

次のステップ#