Vue i18n 多参数复数化

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

嗨,我在我的 Vue 应用程序中使用 i18n 国际化。它适用于没有任何附加参数的简单语句,但是当我有附加参数时,它似乎根本不注册它们。例如,在我的语言环境中,我有以下消息:

en: {
  message: {
    imageMessage: "1 image downloaded on {date} ({space} Mb) | {n} images downloaded on {date} ({space} Mb)"
  }
}

这里

date
space
是附加参数,与复数无关。在我的 vue 模板中,我有以下代码:


$t('message.imageMessage', images.num, {date: images.date, space: images.space})

最终打印的消息是:

1 image downloaded on  ( Mb)
或以下形式:
5 images downloaded on  ( Mb)

有没有办法将这些附加参数也打印在消息中?

我尝试了一些其他权宜之计的解决方案,其中包括能够实现此目的的条件语句,但想知道是否有一种方法可以在没有任何额外逻辑的情况下实现此目的。

vuejs3 internationalization
1个回答
0
投票

这里的问题是调用$t的参数顺序改变了。

代替:

$t('message.imageMessage', images.num, {date: images.date, space: images.space})

您需要将它们传递为:

$t('message.imageMessage', {date: images.date, space: images.space}, images.num)

这里有 vue-i18n v9 的文档: https://vue-i18n.intlify.dev/guide/advanced/composition#pluralization

© www.soinside.com 2019 - 2024. All rights reserved.