Nuxt 3中@nuxtjs/i18n如何原样获取翻译文件中的数组?
解决Nuxt3 @nuxtjs/i18n无法获取原始数组/对象翻译的问题
在Nuxt3的@nuxtjs/i18n中,$tm方法的设计目标是解析包含插值、复数等动态语法的翻译消息,返回的是编译后的AST结构,这和Nuxt2中$t直接返回原始数据的行为不同。要获取翻译文档中的原始数组或对象,你可以用以下两种方式:
方法1:使用getMessage方法
通过useI18n组合式函数提供的getMessage接口,直接获取当前语言下的原始翻译值:
<script setup> const { getMessage } = useI18n() // 假设你的翻译键是 'demo.array' const targetArray = getMessage('demo.array') // 对于对象同样适用 const targetObject = getMessage('demo.object') </script>
方法2:直接访问messages对象
如果你需要指定语言获取,或者更直接地访问原始翻译数据,可以直接操作messages对象:
<script setup> const { locale, messages } = useI18n() // 获取当前语言的数组 const currentLangArray = messages.value[locale.value]['demo.array'] // 也可以指定特定语言,比如英文 const enArray = messages.value.en['demo.array'] </script>
注意事项
- 确保你的翻译文件中对应的键值确实是数组或对象类型,没有混入需要编译的语法(比如
{xxx}插值)。 - 如果你的翻译项同时包含动态语法和数组结构,建议单独拆分静态结构和动态内容,避免解析冲突。
内容的提问来源于stack exchange,提问作者Jenos
相关产品推荐
相关产品推荐

