(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的用法、下拉框、弹出消息

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容