コンテンツにスキップ

selectOrdinal

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

文言が 1st2nd3rd のような序数カテゴリに依存する場合に使ってください。 単独で翻訳済み文字列を生成することもできますし、序数部分がより大きなメッセージの一部であるなら t`...` テンプレートリテラルの中に埋め込むこともできます。

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

ソース
<p>
  {$selectOrdinal(place, {
    one: "#st",
    two: "#nd",
    few: "#rd",
    other: "#th",
  })}
</p>
結果

2nd

ロケール
順位
<script lang="ts">
import { selectOrdinal, t } from "lingui-for-svelte/macro";
let place = $state(2);
</script>
<!-- 単独使用: 序数字符列を直接生成する -->
<p>
{$selectOrdinal(place, {
one: "#st",
two: "#nd",
few: "#rd",
other: "#th",
})}
</p>
<!-- 埋め込み: selectOrdinal はより大きな翻訳単位の一部 -->
<p>
{$t`Ranked ${selectOrdinal(place, {
one: "#st",
two: "#nd",
few: "#rd",
other: "#th",
})}`}
</p>

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

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

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

selectOrdinal(place, {
1: "1st",
2: "2nd",
3: "3rd",
other: "#th",
});

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

  • 出力が序数カテゴリに依存する
  • 現在のファイルではコンポーネントプロパティより関数形式のほうが読みやすい
  • 公式 Lingui Core と一貫した記述子意味論を使いたい