复数
语言环境信息如下:
模板如下:
<p>{{ $tc('car', 2) }}</p>
<p>{{ $tc('apple', 1) }}</p>
输出如下:
<p>car</p>
<p>cars</p>
<p>no apples</p>
<p>one apple</p>
<p>10 apples</p>
你无需明确指定复数的数字。可以通过预定义的命名参数 {count}
和/或 {n}
在语言环境信息中访问该数字。如有必要,你可以覆盖这些预定义的命名参数。
模板如下:
<p>{{ $tc('apple', 10, { count: 10 }) }}</p>
<p>{{ $tc('apple', 10) }}</p>
<p>{{ $tc('banana', 1, { n: 1 }) }}</p>
<p>{{ $tc('banana', 1) }}</p>
<p>{{ $tc('banana', 100, { n: 'too much' }) }}</p>
输出如下:
<p>10 apples</p>
<p>10 apples</p>
<p>1 banana</p>
<p>1 banana</p>
<p>too much bananas</p>
自定义复数
然而,这种复数并不适用于所有语言 (例如,斯拉夫语言具有不同的复数规则)。
为了实现这些规则,你可以覆盖 函数。
这将有效地实现这一目标:
const messages = {
ru: {
car: '0 машин | 1 машина | {n} машины | {n} машин',
banana: 'нет бананов | 1 банан | {n} банана | {n} бананов'
}
}
格式为 0 things | 1 thing | few things | multiple things
.
你的模板仍然需要使用 $tc()
,而不是 $t()
:
<p>{{ $tc('car', 1) }}</p>
<p>{{ $tc('car', 2) }}</p>
<p>{{ $tc('car', 4) }}</p>
<p>{{ $tc('car', 12) }}</p>
<p>{{ $tc('car', 21) }}</p>
<p>{{ $tc('banana', 0) }}</p>
<p>{{ $tc('banana', 4) }}</p>
<p>{{ $tc('banana', 11) }}</p>
<p>{{ $tc('banana', 31) }}</p>
结果如下: