当前位置: 首页 > news >正文

vue使用vue-i18n实现国际化

我使用的是vue2.6版本,具体使用其他版本可以进行修改

一、安装

npm install vue-i18n -D

二、配置

1、文件配置

①在src下创建 i18n 目录

②在 i18n 目录下创建 langs 文件夹 和 index.js文件,具体如下

2、index.js代码如下,这里使用了较多语言,具体按项目定

import Vue from "vue";
import VueI18n from "vue-i18n";
//引入自定义语言配置
import de from "./langs/de";
import en from "./langs/en";
import es from "./langs/es";
import fr from "./langs/fr";
import jp from "./langs/jp";
import ko from "./langs/ko";
import th from "./langs/th";
import tw from "./langs/tw";
import vi from "./langs/vi";
import zh from "./langs/zh";
Vue.use(VueI18n); // 全局注册国际化包
// 准备翻译的语言环境信息
const i18n = new VueI18n({locale: localStorage.getItem("lang") || "zh", //将语言标识存入localStorage或sessionStorage中,首次默认中文显示,非首次则以localStorage为准messages: {de,en,es,fr,jp,ko,th,tw,vi,zh},silentTranslationWarn: true, //解决vue-i18n黄色警告"value of key 'xxx' is not a string"和"cannot translate the value of keypath 'xxx'.use the value of keypath as default",可忽略globalInjection: true, // 全局注入fallbackLocale: "zh", // 指定的locale没有找到对应的资源或当前语种不存在时,默认设置当前语种为中文
});
const temLang = localStorage.getItem("lang");
if (!temLang) {localStorage.setItem('lang', 'zh')
}
export default i18n;

3、zh.js文件实例,其他语言文件按这格式不变

// 中文
export default {loginTitle: "账号登入",registerTitle: "账号注册",loginTip: "欢迎回来!使用您的电子邮箱或手机号登入",registerTip: "使用您的电子邮箱或手机号进行注册",userNamePlc: "请输入账号",userPassPlc: "请输入密码",login: "登入",register: "注册",overtime: "登录超时,请重新登录",loginSuccess: "登入成功",registerSuccess: "注册成功",userNameTip: "请输入账号",userPassTip: "请输入密码",userOldPassTip: "请输入旧密码",userNewPassTip: "请输入新密码",userPassAgainTip: "请再次输入新密码",errorPassTip: "两次密码不一致",userPassSureTip: "请再次输入密码",jumpPageText: "当前页面需要登录查看,请登录",
};

4、为了方便使用,添加了个hooks文件,可以在vue页面引用此文件获取当前语言

// 语言配置
import { ref, computed, getCurrentInstance } from "vue";export function useLang() {const vm = getCurrentInstance();const lang = ref(localStorage.getItem("lang") || "zh");const langList = ref([{label: "English",src: require("../assets/images/lang/en.png"),value: "en",},{label: "简体中文",src: require("../assets/images/lang/zh.png"),value: "zh",},{label: "繁體中文",src: require("../assets/images/lang/tw.png"),value: "tw",},{label: "ไทย",src: require("../assets/images/lang/th.png"),value: "th",},{label: "日本語",src: require("../assets/images/lang/jp.png"),value: "jp",},{label: "Español",src: require("../assets/images/lang/es.png"),value: "es",},{label: "Français",src: require("../assets/images/lang/fr.png"),value: "fr",},{label: "Deutsch",src: require("../assets/images/lang/de.png"),value: "de",},{label: "한국어",src: require("../assets/images/lang/ko.svg"),value: "ko",},{label: "Tiếng Việt",src: require("../assets/images/lang/vi.svg"),value: "vi",},]);// 获取当前语言对象const getLangObject = computed(() => {return langList.value.find((item) => item.value === lang.value);});// 设置语言const setLan = (val) => {localStorage.setItem("lang", val);lang.value = val;vm.proxy.$i18n.locale = val; //切换为英文// location.reload();};return { lang, setLan, langList, getLangObject };
}

 5、main.js配置

import Vue from "vue";
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
import App from "./App.vue";
import router from "./router";
import store from "@/store/index";
import i18n from "./i18n";
import "./permission";
Vue.use(ElementUI);
Vue.use({i18n: (key, value) => i18n.t(key, value),
});
Vue.config.productionTip = false;
new Vue({router,store,i18n,render: (h) => h(App),
}).$mount("#app");

三、使用

1、template模板使用

<template>{{ $t("loginTitle") }}
</template>

2、setup中使用,这里使用的vue2.6,和其他会有些差别

import { getCurrentInstance } from "vue";
const vm = getCurrentInstance();console.log(vm.proxy.$t("loginTitle"))

 3、js文件中使用

import i18n from "./i18n";i18n.t('loginTitle')

http://www.lryc.cn/news/441932.html

相关文章:

  • 微信小程序如何设置左侧导航栏跟随页面滑动
  • 个人小结(2.0)
  • 探索自动化的魔法:Python中的pyautogui库
  • YOLOv9改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
  • EasyExcel的基本使用——Java导入Excel数据
  • Apache Iceberg 试用
  • 速通汇编(六)认识栈,SS、SP寄存器,push和pop指令的作用
  • 【Python机器学习】NLP信息提取——值得提取的信息
  • 代理IP批理检测工具,支持socks5,socks4,http和https代理批量检测是否可用
  • AI视觉算法盒是什么?如何智能化升级网络摄像机,守护全方位安全
  • 【Vue】VueRouter路由
  • idea多模块启动
  • 23:SPI二:W25Q64存储器模块的使用
  • 论文解读《COMMA: Co-articulated Multi-Modal Learning》
  • 10款电脑加密软件超好用推荐|2024年常用电脑加密软件排行榜
  • 用户态缓存:环形缓冲区(Ring Buffer)
  • Harmony应用 ArkTs AES 加密方法之GCM对称加密
  • 热成像在战场上的具体作用!!!
  • 2024年09月20日《每日一练》
  • 使用 SSCB 保护现代高压直流系统的优势
  • Linux基础命令——文件系统的日常管理
  • uniapp使用高德地图设置marker标记点,后续根据接口数据改变某个marker标记点,动态更新
  • 坦白了,因为这个我直接爱上了 FreeBuds 6i
  • 006.MySQL_查询数据
  • 【C#生态园】从图像到视觉:Emgu.CV、AForge.NET、OpenCvSharp 全面解析
  • 1、无线通信的发展概况
  • 虚拟机安装xubuntu
  • 携手鲲鹏,长亮科技加速银行核心系统升级
  • 新鲜的Win11/10镜像,全系列下载!
  • iPhone 16系列:摄影艺术的全新演绎,探索影像新境界