(4) 多语言就是这么简单

目标:实现前端多语言


经过前面三章,想必大家对于使用vue和element已经有了极大的信心,这很好

本章我们演示下如何实现中日英三种语言的切换


老规矩,我们还是先看官网,找找思路

可以看到,实现多语言,是用了vue-i18n这个插件

并且我们注意到,这个i18n有5.x 和其他的版本,处理方式有区别


我们先安装vue-i18n这个库,方法和安装element很相似

先打开一个新的Terminal窗口

输入安装命令 npm install vue-i18n -save,回车

很快安装好了。打开package.json文件,确认下版本。

(如安装时有怪问题,可尝试将整个项目目录的权限,对所有用户设置为“完全控制”, 

安装包出现混乱时,可关闭idea,删除node_modules目录下所有文件,打开项目,执行cnpm install)


第一步,先在src目录下创建一个langs目录,里面放我们自定义的多语言资源文件

先创建简体中文的,命名为zh-CN.js 

注意这个名字不是乱写的,参考文档https://element.eleme.cn/#/zh-CN/component/i18n ,最底下有

同样的,我们创建en.js和ja.js两个文件,内容是英文和日文

然后我们在langs下添加index.js文件,内容如下

import Vuefrom 'vue'

import VueI18nfrom 'vue-i18n'

import elementEnLocalefrom 'element-ui/lib/locale/lang/en' // element-ui lang

import elementZhLocalefrom 'element-ui/lib/locale/lang/zh-CN'// element-ui lang

import elementJaLocalefrom 'element-ui/lib/locale/lang/ja'// element-ui lang

import enLocalefrom './en'

import zhLocalefrom './zh-CN'

import jaLocalefrom './ja'

Vue.use(VueI18n)

let lang ='zh-CN' //默认中文

Vue.config.lang =lang

// vue-i18n 6.x+写法

Vue.locale = () => {}

const messages = {

'zh-CN':Object.assign(elementZhLocale, zhLocale),

'en':Object.assign(elementEnLocale, enLocale),

'ja':Object.assign(elementJaLocale, jaLocale)

}

const i18n =new VueI18n({

locale:lang,

messages

})

export default i18n


这个代码先不要花太多时间看,复制过去,先把功能实现,不要迷失在细节里


然后我们在main.js里引用这个index.js,如下图

把MyComponent.vue里面,之前写死的中文改成多语言的写法

好了,查看一下浏览器页面,发现,并没有什么变化。

(因为正常显示了资源文件里的中文,和以前写死的内容一致)

现在把langs/index.js里的let lang ='zh-CN',改成let lang ='en',好了,看到英文了

把en改成ja试试,日文也出来了,符合预期!

非常好,我们已经实现了多语言,现在可以喝杯咖啡了!


不过,现在多语言还没有流畅的切换,还不够高级!

歇口气,我们继续


为了实现自由切换,我们需要一个下拉框

在components目录下新建文件LangSelect.vue

从这里复制个下拉框的代码进去 https://element.eleme.cn/#/zh-CN/component/select

稍微改改,变成这样

多语言控件做好了,我们把它添加到App.vue里面

页面布局有点丑,先不要管这些细节

切换一下下拉框试试

可以了,中日英三种语言流畅的切换!


不过,还没完,前面讲了多语言在template部分的写法有两种

控件里面的,是:label="$t('myComponent.date')" 这样

控件外面的,是<el-button type="primary" @click="onSubmit">{{$t('myComponent.add')}}</el-button>这样

还有一种,在js代码里,如果我们要弹出一个多语言的消息,写法是这样

效果如下

ok,多语言我们已经搞定了,顺便还学习了 watch的用法、下拉框、弹出消息

是时候放松一下了,本章完

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容