我想创建一个动态滑块,这取决于页面。
security_signin: {
slide1: 'Kitten1',
slide2: 'Kitten2',
},
signup: {
slide1: 'Kitten1',
slide2: 'Kitten2',
slide3: 'Kitten3'
}
问题是我想在我的组件中呈现我的滑块,它是滑块数量的函数。
这是这样的:
<slide v-for="(item, index) in $t('message.'+page).length">
<p v-html="$t('message.'+page+'.slide'+index)"></p>
</slide>
然而,我无法以这种方式正确访问消息。因为$t('message.'+page).length
返回了第一张幻灯片的长度(在Kitten1的情况下为7)。
有没有一种方法可以访问i18n而不重新创建它的示例?
4条答案
按热度按时间izkcnapc1#
这非常简单,从
$i18n
访问messages属性。例如:更详细地说,
$i18n.messages
保存了您所有的翻译,例如:为您选择的区域设置子集,
$i18n.fallbackLocale
用于备用区域设置,$i18n.locale
用于当前区域设置。您应该获取JavaScript对象。要非常小心,当您使用
$t()
翻译时,任何丢失的翻译都将从后备语言环境中恢复。但是当你直接访问javascript对象时,你就给予了这个安全网。某些区域设置可能缺少键。在这种情况下,
fallbackLocale
就足够了,因为我们不想访问转换,只想访问元素的数量。klh5stk12#
$t()
总是返回字符串。所以我发现的解决方案是在我的组件中导入消息,并直接从那里使用它:
pgvzfuti3#
你正在使用对象而不是数组,但是JavaScript对象没有
length
属性-你可以尝试使用数组:u4vypkhs4#
Vue 3版本
在定义之后,你可以从全局对象中获取你的消息。