コンテンツにスキップ

plural

plural は、ICU 複数形メッセージのためのコアマクロです。 同じロジックには、コンポーネントマクロ形式の Plural もあります。

主な課題が、複数形カテゴリに応じて文言を選ぶことなら、これを使ってください。 単独で翻訳済み文字列を生成することもできますし、複数形がより大きなメッセージの一部であるなら t`...` テンプレートリテラルの中に埋め込むこともできます。

フレームワークに依存しない Lingui の意味論については、公式の plural リファレンス を参照してください。

ソース
<p>
  {$plural(count, {
    one: "# item",
    other: "# items",
  })}
</p>
結果

2 items

ロケール
<script lang="ts">
import { plural, t } from "lingui-for-svelte/macro";
let count = $state(2);
</script>
<!-- 単独使用: 複数形文字列を直接生成する -->
<p>
{$plural(count, {
one: "# item",
other: "# items",
})}
</p>
<!-- 埋め込み: plural はより大きな翻訳単位の一部 -->
<p>
{$t`Cart: ${plural(count, {
one: "# item",
other: "# items",
})}`}
</p>

.svelte ファイルでは、単独でリアクティブに使うなら $plural を使います。 $t`...` の中にネストする場合は、$ 接頭辞なしの plural を使います。

完全な説明と plural.eager というエスケープハッチについては リアクティブマクロ を参照してください。

厳密な件数に一致させるには、数値キーをそのまま使います。 完全一致は、カテゴリキーより優先されます。

plural(count, {
0: "No items",
one: "# item",
other: "# items",
});

コンポーネントマクロ Plural では、同じ一致をアンダースコア付きプロパティ(_0="No items")で表します。 関数形式では数値キーをそのまま使うので、アンダースコアは不要です。

  • メッセージが数値件数に依存する
  • ICU 複数形の標準的な振る舞いを使いたい
  • 現在のファイルでは関数形式のほうが自然に読める