vue项目国际化(多语言)

记录一下笔记,以下vue项目案例使用vue-cli搭建 ;

一.安装依赖

1. 使用npm命令安装所需依赖vue-i18n , 此demo安装的版本为vue-i18n@8.24.2;

# 安装命令
npm i vue-i18n@8.24.2
  1. 安装完成之后在入口文件先引入一下 , 检查是否安装成功;

main.js

import VueI18n from "vue-i18n"
console.log(VueI18n); // 浏览器看到打印就表示安装成功啦
  1. 发现引入报错, 经测试可能是vue-cli版本环境的问题 , 所以改变引入路径;
// main.js
import VueI18n from 'vue-i18n/dist/vue-i18n'
console.log(VueI18n); // 这样就成功了

二.配置多语言包

  1. 安装成功后,就可以在src目录下创建配置文件了 , 文件格式结构如下:
src


language

config 配置文件

zh.js 中文文件

zh-hk.js 中文繁体

en.js 英语文件

index.js

  1. 以下代码为简单配置的demo
    language > config > zh.js
module.exports = {
   language:{
        name:"中文简体"
   },
   login:{
         userTip:"请登录",
         registerFree:"免费注册",
         forget:"忘记密码"
   }
}

language > config > zh-hk.js

module.exports = {
   language:{
        name:"中文繁體-香港"
   },
   login:{
         userTip:"登錄",
         registerFree:"註冊",
         forget:"忘記密碼"
   }
}

language > config > en.js

module.exports = {
   language:{
        name:"English"
   },
   login:{
         userTip:"EnglishLogin",
         registerFree:"register",
         forget:"Forget Password"
   }
}
language > index.js

import Vue from 'vue/dist/vue.min.js';
import VueI18n from 'vue-i18n/dist/vue-i18n';
import Cookies from 'js-cookie';

Vue.use(VueI18n);

// 存储在本地,刷新后不会丢失
const language = Cookies.get('language') || 'zh';
Cookies.set( 'language' , language )
const i18n = new VueI18n({
locale: language, // 语言标识
messages: {
zh: require('./config/zh'), // 中文
'zh-hk': require('./config/zh-hk'), // 中文繁体-香港
en: require('./config/en'), // 英文
}
});

export default i18n;

3. 最后挂载到vue实例上

...
// 引入配置文件index
import i18n from "./language"

new Vue({
el: '#app',
router,
store,
i18n, // 挂载到vue实例
components: { App },
template: '<App/>'
})

4.挂载成功后就可以直接在组件中使用定义好的变量了:
template中使用

<li><a href="javascript:;">语言切换/{{ $t('language.name') }}</a></li>

script中使用:

console.log(this.$t('language.name'));


三. 在页面编写切换按钮
1. 最好写个下拉框选择 , 此demo就简单写了  默认是展示 中文简体

<li><a href="javascript:;">语言切换/{{ $t('language.name') }}</a></li>

2. 给按钮添加点击事件

<li><a href="javascript:;" @click="changeLang">语言切换/{{ $t('language.name') }}</a></li>

方法一 : 使用i18n的locale直接赋值切换:

changeLang(){ let currentLang = Cookie.get('language'); if(currentLang === 'zh'){ this.i18n.locale = 'zh-hk'; Cookie.set('language','zh-hk') }else if(currentLang === 'zh-hk'){ this.i18n.locale = 'en'; Cookie.set('language','en') }else if(currentLang === 'en'){ this.$i18n.locale = 'zh'; Cookie.set('language','zh') }}

方法二 : 修改本地存储数据 后 刷新页面切换:

changeLang(){ let currentLang = Cookie.get('language'); if(currentLang === 'zh'){ Cookie.set('language','zh-hk') }else if(currentLang === 'zh-hk'){ Cookie.set('language','en') }else if(currentLang === 'en'){ Cookie.set('language','zh') } location.reload(); // 刷新页面}

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

推荐阅读更多精彩内容