使用 vue-i18n 实现 Vue 的国际化

安装

  1. vue2的安装方式
npm install vue-i18n
  1. vue3的安装方式
npm install vue-i18n@next -S

使用方法

首先在项目src目录下新建lang文件夹,然后文件夹里需要新建index.js文件去使用vue-i18n,需要注意的是,vue-i18n的版本如果是8版本,语言文件用json,如果是9版本,语言文件用js文件,这里vue2和vue3使用方法有区别

  1. vue2
//index.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'

Vue.use(VueI18n)

// 注册i18n实例并引入语言文件
const i18n = new VueI18n({
    locale: 'zh_cn',
    messages: {
        'zh_cn': require('@/lang/zh_cn.json'),
        'en_us': require('@/lang/en_us.json')
    }
})

export default i18n

中英文语言文件json版参考:

//中文
{
	"header": {
		"item": ["地图导览", "园区介绍", "寻车指引", "海绵科普", "欢乐游玩", "交通地理", "园区环境"],
		"itemSub": [
			"MAP NAVIGATION",
			"INTRODUCTION INFO",
			"SEARCH GUIDE",
			"SPONGE SCIENCE",
			"HAPPY PLAY",
			"POSITIONING",
			"MEMBER SERVICES"
		]
	},
	"footer": {
		"back": "返回",
		"home": "首页"
	}
}
//英文
{
	"header": {
		"item": [
			"SHOPPING\nGUIDE",
			"PARKING\nSERVICE",
			"GRAND\nFEAST",
			"O' GARDEN\n ",
			"ACTIVITY\nREGISTRATION",
			"COUPONS\n ",
			"CUSTOMER\nSERVICE",
			"MEMBERSHIP\nSERVICE"
		],
		"itemSub": [
			"SHOPPING GUIDE",
			"PARKING SERVICE",
			"GOURMET PARADISE",
			"BOTANIC GARDEN",
			"ACTIVITY COURIER",
			"COUPON",
			"CUSTOMER SERVICE",
			"MEMBER SERVICES"
		]
	}
}

在main.js文件中使用import引入并且参考图片使用:

import i18n from '@/lang/';

在这里插入图片描述
引入完成以后就可以使用了,在vuex中新建state属性,以下操作参考图片
第一步:
在这里插入图片描述
第二步:
在这里插入图片描述
第三步:
在这里插入图片描述

//在页面中通过$t('值')的方式来获取语言文件中的值
格式:{{$t('值')}}
//最后通过点击页面中中英文切换的按钮去改变vuex中中英文的状态就可以了
  1. vue3
    在src目录下创建lang文件夹,再创建三个文件index.js、zh.js、en.js
    在这里插入图片描述
//index.js
import { createI18n } from 'vue-i18n';
import ZH from './zh.js';
import EN from './en.js';
const messages = {
  zh: { ...ZH  },
  en: { ...EN  },
};

const i18n = createI18n({
  legacy: false,
  globalInjection: true,
  locale: 'zh',
  messages
});

export default i18n;

中英文语言文件json版参考:

//使用export default导出
//zh.js
export default {
	person: {
		name: '测试',
		age: 30
	},
};
//en.js
export default {
	person: {
		name: 'test',
		age: 30
	},
};

然后在main.ts或main.js文件中引入
在这里插入图片描述

import i18n from  './lang/index'
app.use(i18n).mount("#app");

在需要使用的页面引入
在这里插入图片描述
在页面中使用,如下:
在这里插入图片描述

//页面代码
<template>
	<div class="item" @click="changeLang('zh')">
		中文
	</div>
	<div class="item" @click="changeLang('en')">
		英文
	</div>
	<div style="color: #fff;">{{$t('person.name')}}</div>
</template>
<script setup lang="ts">
	import { useI18n } from "vue-i18n";
	const { locale } = useI18n();
	const changeLang = (val) => {
	  locale.value = val;
	};
</script>

大功告成,点个赞吧!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值