如何在 Vuejs 中的某些特定文本(变量)中强制翻译 i18n

DFX*_*yễn 6 javascript python internationalization vue.js vue-i18n

在正常情况下,我们只需将翻译属性附加到变量上,例如

this.name = this.$t('language.name');
Run Code Online (Sandbox Code Playgroud)

但我想有时用一种特定的语言来具体说明(例如:法语)。我们可以在 中做这样的事情vue.js吗?

this.name = this.$t('language.name', locale: fr);
Run Code Online (Sandbox Code Playgroud)

cod*_*ist 6

使用旧包kazupon/vue-i18n,应该可以执行以下操作:

$t(key, locale)
Run Code Online (Sandbox Code Playgroud)

使用后继包时intlify/vue-i18n-next,答案取决于您使用的是 Vue I18n 的Legacy API还是较新的Composition API


使用按照正常设置指南中所述旧版 API ,此处t()说明了该函数的用法。

这意味着您仍然可以使用以下调用将密钥转换为特定区域设置(例如“fr”):

$t(key, locale)
Run Code Online (Sandbox Code Playgroud)

例子:

$t('message.key', 'fr')
Run Code Online (Sandbox Code Playgroud)

通过使用选项调用来使用组合 API(如此处所述,函数的用法与此处所述不同。您不能再将区域设置字符串作为第二个参数传递,但区域设置可以在createI18n()legacy: falset()TranslateOptions您不能再将语言环境字符串作为第二个参数传递,但可以在对象。不幸的是,没有t(key,TranslateOptions) 变体,只有以下变体:

$t(key, plural, TranslateOptions)
$t(key, defaultMsg, TranslateOptions)
$t(key, interpolations, TranslateOptions)
Run Code Online (Sandbox Code Playgroud)

所以最简单的解决方案是例如:

$t('message.key', 1, { locale: 'fr' })
Run Code Online (Sandbox Code Playgroud)