欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vuei18n国际化使用 3步走快速上手

程序员文章站 2022-05-16 09:29:18
...

目录结构

vuei18n国际化使用 3步走快速上手

准备翻译文件(本地化语言环境信息)

locale/lang.js 中准备中英文对照文本: (当然 你也可以将中英文分开 分别放在zh.js / en.js中)

const locale = {
	'zh-CN': {
		web: {
			title: '标题',
			content: '内容',
		}
	},
	en: {
		web: {
			title: 'title',
			content: 'content'
		}
	}
}

export default locale;

创建i18n实例

locale/index.js 中创建i18实例:

import Vue from 'vue';
import VueI18n from 'vue-i18n';
import messages from './lang';

Vue.use(VueI18n);

export function createI18n(lang = 'zh-CN') {
    return new VueI18n({
    	// 配置语言环境
        locale: lang,
        // 配置预设语言环境
        fallbackLocale: 'zh-CN',
        // 对照文本(本地化语言环境信息)
        messages,
        // 是否取消本地化失败时输出的警告(true: 禁止本地化失败警告)
        silentTranslationWarn: true,
    });
}

export default createI18n;
  1. i18n相关参数 可以参考 API参考
  2. 这里其实是运用了函数式编程的思想, 封装了一个工厂函数, 返回一个配置好的i18n实例。 这样做的好处是: 确保该组件的独立。仅在需要用的时候 直接调用, 获取返回值, 而没有其他行为。

挂载到vue上

通过cookie获取当前语言环境

// main.ts中
import Cookies from 'js-cookie';
let lang = Cookies.get('lang') || 'zh-CN';
  1. 这里是通过相应中的cookie获取当前的语言环境的;
  2. 安利一波js-cookie插件, 可以轻松的获取cookie中的值, 省的自己慢慢切了;

入口文件main.ts中挂载

// main.ts中
import Vue from 'vue';
import App from './app.vue';
import createI18n from '@/locale';

const i18n = createI18n(lang); // 这个lang就是上面从cookie中获取到的语言环境

new Vue({
		...vue相关的全家桶就不说了,
        i18n,
        render: h => h(App),
    });

使用$t

<template>
	<div>
	    <head>{{ $t('web.title') }}</head>
	    <div>{{ $t('web.content') }}</div>
	</div>
</template>

当然 i18n远不止这些功能和设置, 还是很强大的一款插件, 详情可以查看文档 Vue i18n

好啦今天就分享到这里~!