vue国际化在js中$t()报错
最近在做国际化的时候,发现在.vue里面写国际化语言没有报错,而且也可实现国际化,可是在js中引入$t()写法的时候,报错。
最后花了一个小时解决了,做一个笔记,以供后来学者遇到此类问题,仅供参考。
1,首先,我引入的国际化写法是在main.js中引入了,所以在.vue文件中引入国际化语言的写法,自然不会报错。
原因(我自己的理解):
所有的vue页面都有配置多语言,因为在main.js中已经把多语言i18n引入到new Vue()里面了,所以每个页面就配置了多语言所以这种写法$t('xxx') 或者
data或method里就可以生效。this.$t('xxx')
在
但是在js中就不一定生效,因为其他js中,直接就在 const 方法中引入多语言的写法,这个时候,应该是还没引入国际化语言。
解决办法:
1. 在国际化配置中加入index.js里面重新配置国际化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import Vue from 'vue' import Storage from 'vue-ls' ; import config from '@/defaultSettings' import VueI18n from 'vue-i18n' import enLocale from '@/components/lang/en-US' import zhLocale from '@/components/lang/zh-CN' Vue.use(VueI18n); Vue.use(Storage, config.storageOptions) const i18n = new VueI18n({ locale: Vue.ls. get ( "language" , "zh-CN" ), // 语言标识 //this.$i18n.locale // 通过切换locale的值来实现语言切换 messages: { 'en-US' : { ...enLocale, }, 'zh-CN' : { ...zhLocale, } } }) export default i18n |
2. 在需要翻译国际化的js中引入index.js文件
import i18n from '@/components/lang/index' 把该js中的多语言配置写法由以前的 this.$t('xxx') 改成 i18n.t('xxx')
然后问题就自然解决啦!
每天学习一点点,你就进步一点点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2019-03-29 java.util.UnknownFormatConversionException: Conversion = ''';
2016-03-29 JSP里比对单选框或复选框的数值而自动打勾
2016-03-29 checkbox的相关知识点
2016-03-29 firefox中 checkbox属性checked="checked"已有,但复选框却不显示打钩的原因