Задать вопрос
@dominy

Как обявить кастомный PluralizationRule vue-i18n Vue3?

Здравствуйте, у меня есть правило для pluralization из https://kazupon.github.io/vue-i18n/guide/pluraliza...
Но объявив его в виде
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>
  • Вопрос задан
  • 283 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
nuykon
@nuykon
Full Stack Developer
"ru":{
    "seconds":"{count} секунд | {count} секунда | {count} секунд"
  }

так у вас тут описано только три кейса, а должно быть четыре:
return 0 | return 1 | return 2 | return 3
0 | 1,21,31... | 2-4, 22-24... | 5-20, 25-30...
"ru":{
    "seconds":"ноль секунд | одна секунда | {n} секунды | {n} секунд"
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы