复数

    语言环境信息如下:

    模板如下:

    1. <p>{{ $tc('car', 2) }}</p>
    2. <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>
    

    结果如下: