如何声明自定义复数规则 vue-i18n Vue 3?

问题描述 投票:0回答:2

我有一个复数规则 https://kazupon.github.io/vue-i18n/guide/pluralization.html#accessing-the-number-via-the-pre-defined-argument 但以表格形式声明

setup() {
    const { t, locale } = useI18n({
      pluralizationRules: {
        ru: function (choice, choicesLength) {
          if (choice === 0) {
            return 0;
          }

          const teen = choice > 10 && choice < 20;
          const endsWithOne = choice % 10 === 1;

          if (choicesLength < 4) {
            return !teen && endsWithOne ? 1 : 2;
          }
          if (!teen && endsWithOne) {
            return 1;
          }
          if (!teen && choice % 10 >= 2 && choice % 10 <= 4) {
            return 2;
          }

          return choicesLength < 4 ? 2 : 3;
        },
      },
    });
    return { t, locale };
  },

不改变任何东西 (即,0 - секунд,1 - секунда,其余为 секунд)

  • 我该如何解决这个问题

我需要

...1 секунда

...2-...3-...4 секунды

...0-...5-...6-...7-...8-...9 секунд

<i18n>
{
  "en": {
    "seconds":"{count} seconds | {count} second | {count} seconds"
  },
  "ru":{
    "seconds":"{count} секунд | {count} секунда | {count} секунд"
  }
}
</i18n>
vue.js internationalization vue-i18n
2个回答
4
投票

我很快查看了 vue-i18n 的来源,发现有

pluralRules
pluralizationRules
具有相同的类型。对我来说,它可以使用
pluralRules
而不是
pluralizationRules


0
投票

尝试使用以下方法修复您的

<i18n>
文件:

"ru":{
    "seconds":"{count} секунд | {count} секунда | {count} секунды | {count} секунд"
  }
© www.soinside.com 2019 - 2024. All rights reserved.