Vue-i18n与Vuex-i18n等vue的国际化方案

本文介绍了Vue项目的国际化方案,包括vue-i18n和vuex-i18n的基础资料、基本概念、特殊功能、常见方案及语法对比等内容。详细说明了初始化配置、语言信息使用、修改语言环境等操作,还提及了其他如vuex+自定义i18n等方案。

Vue-i18n与Vuex-i18n等国际化方案

文档时间:2021-01-04
vue-i18nvuex-i18n两者皆为vue项目的国际化方案。

基础资料

vue-i18n

主要可参考此官网,掌握基础知识。
官网:http://kazupon.github.io/vue-i18n/zh/introduction.html
git:https://github.com/kazupon/vue-i18n

vuex-i18n

vuex-i18n是使用vuex作为存储的本地化插件,并非vue-i18n的升级版本,语法有一定的差异,不通用。
npm:https://www.npmjs.com/package/vuex-i18n
git:https://github.com/dkfbasel/vuex-i18n

基本概念

不论使用哪种方案国际化,自然都需要掌握以下基础的几点:初始化配置 语言环境信息 模板中使用 脚本中使用 修改语言环境
至于更复杂的功能可自行查阅相关文档。
以下例子主要基于vue-i18n讲解,实际使用时,vuex-i18n差别不大。

1.初始化配置

首先,需要安装和初始化i18n模块,安装比较简单,但是初始化就有多种方式了,可挑选适合自己项目的方式。

npm install vue-i18n --save

或者

yarn add vue-i18n

简易初始化官网原文

// 通过选项创建 VueI18n 实例
const i18n = new VueI18n({
   
   
  locale: 'en', // 设置地区
  messages, // 设置地区信息
})
// 通过 `i18n` 选项创建 Vue 实例
new Vue({
   
    i18n }).$mount('#app')
通过插件方式初始化一

通过插件方式初始化,是较为推荐的方式,以下是例子一:
添加i18n.js文件

import Vue from 'vue'
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)

const i18n = new VueI18n({
   
   
      // 使用localStorage存储语言状态是为了保证页面刷新之后还是保持原来选择的语言状态
    locale: localStorage.getItem('lang') || 'en', // 定义默认语言
    messages: {
   
   
        'zh': require('@/assets/languages/zh.json'),
        'en': require('@/assets/languages/en.json')
    }
})

export default i18n

在main.js中引入

import i18n from '@/plugins/i18n' // 导入vue-i18n
new Vue({
   
   
  router,
  i18n, // 此处需要挂载上i18n,不要忘记
  render: h => h(App)
}).$mount('#app')

2.语言环境信息/翻译信息

即不同语言环境情况下的相关信息,最终会被显示在网页上。
一般的简介/教程,里都是直接定义个对象,实际项目使用中一般都使用文档,可以是js文件,也可以是json文件
每种语言单独对应一个文档,如此可以将文件交给不同的翻译。
此外,还可以用数据库存储翻译信息,然后在页面初始化时通过API同步到最新翻译,最好存储在vuex中。
en.js文件

//en.js
export default {
   
   
	common:{
   
   
		btnOK:"OK",
		btnCancel:"Cancel",
	},
	message:{
   
   
		greeting:"hello, world",
		hello: '{msg} world',
		hello2: '{0} world',
	},
	banana: 'no bananas | {n} banana | {n} bananas',//复数
}

zh.js文件

//zh.js
export default {
   
   
	common:{
   
   
		btnOK:"确定",
		btnCancel:"取消",
	},
	message:{
   
   
		greeting:"你好,世界",
		hello: '{msg} 世界',
	},
}

3.模板中使用

vue代码主要分为模板和脚本两部分,如何在模板中使用将直接决定显示效果。
尤其注意的是可以善用其多种format的写法。

<span>{
   
   {
   
   $t('message.greeting')}}</span>

强制翻译成某种语言,忽略全局设置

<span>{
   
   {
   
   $t('message.greeting', 'en')}}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值