|Labs
デモを予約プラットフォーム
React (Lingo Compiler)
Alpha
React MCPReact (i18n)旧CLI(v0)
非推奨

Lingo.dev Compiler

  • 仕組み
  • セットアップ
  • Compiler クイックスタート

フレームワーク

  • Next.js 連携
  • Vite + React

ガイド

  • ロケールの切り替え
  • 自動複数形変換
  • 手動オーバーライド
  • ビルドモード
  • プロジェクト構成
  • 翻訳プロバイダー
  • カスタムロケールリゾルバー
  • 開発ツール

リファレンス

  • ベストプラクティス
  • 設定リファレンス
  • トラブルシューティング
  • 移行ガイド
  • 最適化
  • 出力形式

自動複数形変換

アルファ版

Lingo.dev Compiler は現在アルファ版です。安定性は保証されておらず、本番環境での利用は推奨されません。API はリリースごとに変更される可能性があります。

Lingo.dev Compiler は、JSX テキスト内の複数形を検出し、自動的に ICU MessageFormat に変換します。言語ごとに複数形ルールを手作業で書く代わりに、数値を含む自然なテキストを書くだけで、Compiler が LLM を使って適切な複数形を生成します。

仕組み#

1

Compiler が数値パターンを検出

AST 解析の過程で、Compiler は補間された数値と、数によって形が変わる語が並ぶテキストノードを特定します。たとえば You have {count} items には、数量に応じて変化する語の隣に数値変数が含まれています。

2

LLM が複数形を判定

小型で高速な LLM(pluralization.model で設定可能)がテキストを解析し、どの語に複数形の変化が必要かを判断します。そして、各対象ロケールに必要な CLDR plural categories を生成します。

3

ICU MessageFormat を生成

Compiler は、対象言語で必要となるすべての複数カテゴリに対応した ICU MessageFormat 文字列を生成します。

例#

元の JSX:

tsx
<p>You have {count} items in your cart</p>

英語向けに生成される出力:

text
{count, plural, one {You have 1 item in your cart} other {You have # items in your cart}}

ロシア語向けに生成される出力(複数カテゴリは 4 つ):

text
{count, plural, one {У вас # товар в корзине} few {У вас # товара в корзине} many {У вас # товаров в корзине} other {У вас # товаров в корзине}}

CLDR 複数カテゴリ#

言語によって、6 つある CLDR plural categories のうち使うカテゴリは異なります。Compiler は、各対象ロケールで必要なカテゴリだけを生成します。

カテゴリ説明該当言語
zero数量ゼロアラビア語、ラトビア語
one単数形英語、フランス語、ドイツ語、スペイン語
two双数形アラビア語、ヘブライ語、スロベニア語
few少数 / 少量ロシア語、チェコ語、ポーランド語
many多量ロシア語、アラビア語、ポーランド語
other汎用 / デフォルト(常に必須)すべての言語

英語では one と other を使います。ロシア語では one、few、many、other を使います。アラビア語では 6 つすべてのカテゴリを使います。Compiler はこれをロケールごとに自動で処理します。

設定#

複数形変換はデフォルトで有効です。Compiler オプションで設定できます。

ts
{
  pluralization: {
    enabled: true,
    model: "groq:llama-3.1-8b-instant",
  },
}
オプション型デフォルト説明
pluralization.enabledbooleantrue複数形の自動検出を有効または無効にします。
pluralization.modelstring"groq:llama-3.1-8b-instant"複数形検出に使う LLM モデル。検出は翻訳よりシンプルなため、小型モデルで十分です。

複数形変換を完全に無効にするには:

ts
{
  pluralization: {
    enabled: false,
  },
}

複数形変換を無効にすると、Compiler は数値を含むテキストを通常の文字列として翻訳します。そのため、複雑な複数形ルールを持つ言語では、すべての数量に対して文法的に正しい訳にならない場合があります。

複数形変換が適用されるケース#

Compiler は、次のようなケースで複数形パターンを検出します。

  • 補間された数値変数を含むテキスト: {count} items、{n} messages
  • 数値リテラルを含むテキスト: You have 5 items(動的 UI ではあまり一般的ではありません)

Compiler は、次のケースでは 複数形変換を行いません:

  • 数値への参照がないテキスト: Items in cart(分岐に使う数値がないため)
  • 数値が、数量によって変化する語と直接結び付いていないテキスト

JSX には自然なテキストを書いてください。複数形の検出と ICU 形式への変換は Compiler とその LLM が処理するため、ICU MessageFormat の構文を覚える必要はありません。

次のステップ#

設定リファレンス
複数形変換に関するすべてのオプション
翻訳プロバイダー
翻訳に使用する LLM を設定
手動オーバーライド
必要に応じて特定の翻訳を上書きする
ベストプラクティス
複数形変換を有効または無効にするタイミング

このページは役に立ちましたか?

Max PrilutskiyMax Prilutskiy·更新済み 4か月前·2分で読めます