用i18n 实现vue2+element UI的国际化多语言切换详细步骤及代码

这篇具有很好参考价值的文章主要介绍了用i18n 实现vue2+element UI的国际化多语言切换详细步骤及代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、i18n的安装

这个地方要注意自己的vue版本和i1n8的匹配程度,如果是vue2点几,记得安装i18n的@8版本,不然会自动安装的最新版本,后面会报错哦,查询了下资料,好像最新版本是适配的vue3。

npm install vue-i18n@8 --save

二、新建i18n相关文件夹及文件

用i18n 实现vue2+element UI的国际化多语言切换详细步骤及代码,vue.js,前端,i18n,vue2国际化,多语言切换

在src下面新建i18n文件夹,然后在里面新建index.js,里面的内容如下

import Vue from 'vue';
import VueI18n from 'vue-i18n';
import locale from 'element-ui/lib/locale';
Vue.use(VueI18n);
// 引入自定义的各个语言配置文件
import zh from './config/zh';
import en from './config/en';

//element-ui自带多语言配置
import zhLocale from 'element-ui/lib/locale/lang/zh-CN';
import enLocale from 'element-ui/lib/locale/lang/en';

const messages = {
    en: {
      ...en,
      ...enLocale
    },
    zh: {
      ...zh,
      ...zhLocale
    },
}  
// 创建vue-i18n实例i18n
const i18n = new VueI18n({
    // 设置默认语言
    locale: localStorage.getItem('locale') || 'zh', // 语言标识,页面对应显示相同的语言
    // 添加多语言(每一个语言标示对应一个语言文件)
    messages:messages,
})
// 非 vue 文件中使用这个方法
const translate = (localeKey) => {
    const locale = localStorage.getItem("language") || "zh"
    const hasKey = i18n.te(localeKey, locale)  // 使用i18n的 te 方法来检查是否能够匹配到对应键值
    const translatedStr = i18n.t(localeKey) 
    if (hasKey) {
        return translatedStr
    }
    return localeKey
}

locale.i18n((key, value) => i18n.t(key, value)) //为了实现element插件的多语言切换
// 暴露i18n
export {
    i18n,
    translate
};

新建i18n文件夹里面新建config文件夹,然后在里面新建en.js和zh.js

en.js代码

const en = {
    login:{ 
    	title:'I am the title',
    }
}
export default en;

zh.js代码

const zh = {
    login:{ 
    	title:'我是标题',
    }
}
export default zh;

三、在main.js引入

主要是引入以后要在new Vue的地方加入 i18n,

import {i18n} from './i18n/index.js'; 

new Vue({
    el: '#app',
    i18n,  
    router,
    store,
    mounted() {
        window.isfitVue = this;
    },
    components: { App },
    template: '<App/>'
})

四、功能切换

<template>
<div>
	<el-select  v-model="languageValue" @change="changeLanguage" placeholder="请选择">
          <el-option
            v-for="item in languageOptions"
            :key="item.value"
            :label="item.label"
            :value="item.value">
          </el-option>
     </el-select>
</div>
</template>
<script>
export default {
	data() {
	    return {
	      languageValue:'',
	      languageOptions:[],
	    }
    },
	created() {
		//最开始请求的时候看缓存是什么状态
		if(this.$i18n.locale=='zh'){
	      this.languageValue='中文简体';
	      this.languageOptions=[{value:'en',label:'English'}]
	    }else{
	      this.languageValue='English';
	      this.languageOptions=[{value:'zh',label:'中文简体'}]
	    }
	},
	methods: {
	    // 多语言切换
	    changeLanguage(type){
	      console.log(type);
	      // 此处做了语言选择记录,存在localStorage中,这里的作用只有一个当我重新请求页面
	      //的时候先取localStorage的记录值
	      localStorage.setItem('locale',type)
	      this.$i18n.locale = type; // 修改页面需要显示的语言
	      if(this.$i18n.locale=='zh'){
	        this.languageValue='中文简体';
	        this.languageOptions=[{value:'en',label:'English'}]
	      }else{
	        this.languageValue='English';
	        this.languageOptions=[{value:'zh',label:'中文简体'}]
	      }
	    },
   }
}
</script>

五、在vue文件里面的使用

在template中直接使用

<div>{{$t("login.title")}}</div>
//或者
<el-input :placeholder="$t('login.title')" ></el-input>

在script中加上this就行

this.$t('login.title'),

六、在单独的js文件中使用

//导入 ,这里的路径自己找一下自己的文件路径
import { translate as $t } from "../../../../../i18n/index.js"  
//使用
name: $t('login.title'),

七、如果需要在js文件中获取当前保存的状态,也就是this.$i18n.locale

//导入,记得切换自己的路径
import { i18n } from "../i18n/index.js"
//使用
console.log(i18n.locale)
if(i18n.locale=='en'){

}

八、写在最后

这里面基本都是我使用的时候遇到问题单独去查的资料,但是都写得比较分散,比如我遇到了最开始的安装问题,或者遇到了在js里面使用的问题,又需要去单独的查资料说怎么使用的问题,所以想着说把自己遇到的问题都写成一个合集,希望能帮助到更多跟我一样的小伙伴,最后,如果有帮到您记得留言或点赞哦,会觉得很开心,觉得自己帮助到了人~~文章来源地址https://www.toymoban.com/news/detail-633182.html

到了这里,关于用i18n 实现vue2+element UI的国际化多语言切换详细步骤及代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot - SpringBoot整合i18n实现消息国际化

    在我们开发WEB项目的时候,项目可能涉及到在国外部署或者应用,也有可能会有国外的用户对项目进行访问,那么在这种项目中, 为客户展现的页面或者操作的信息就需要根据客户系统的环境来使用不同的语言,这就是我们所说的项目国际化。 1. MessageSource源码 Spring中定义了

    2024年02月03日
    浏览(39)
  • next.js app目录 i18n国际化简单实现

    最近在用next写一个多语言的项目,找了好久没找到简单实现的教程,实践起来感觉都比较复杂,最后终于是在官方文档找到了,结合网上找到的代码demo,终于实现了,在这里简单总结一下。 此教程适用于比较简单的项目实现,如果你是刚入门next,并且不想用太复杂的方式去

    2024年04月22日
    浏览(29)
  • Spring之国际化:i18n

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需写作干货注入能量… 热爱写作,愿意让自己成为更好

    2024年02月03日
    浏览(41)
  • Vue3中,国际化插件vue-i18n使用记录,配合VSCode自动化翻译插件i18n Ally

    说明文档: vue-i18n 版本说明: vue: 3.0.0+ vue-i18n: 9.x版 src 目录下新建目录 lang ,存放 i18n 的配置。 新建目录名称: lang (语言)、 locales (语系设定)、 i18n ,这些名称都可被VSCode图标插件( vscode-icons )检测到并美化。 lang 目录下,新建 index.js 文件,引入 vue-i18n 。 语言的配置信

    2024年02月12日
    浏览(28)
  • spring6-国际化:i18n | 数据校验:Validation

    1.1、i18n概述 国际化也称作i18n,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数。由于软件发行可能面向多个国家,对于不同国家的用户,软件显示不同语言的过程就是国际化。通常来讲,软件中的国际化是通过配置文件来实现的,假设要支撑两种语言,

    2024年02月08日
    浏览(36)
  • 微信小程序-切换语言(国际化i18n)的方法封装

    最近做的一个小程序的项目, 涉及到了 多语言的切换 , 就想到了之前vue用的多语言插件i18n, 就尝试着在微信开放社区搜了一下, 没有具体的实现, 但是提供了大致的实现思路, 如下: 又结合了很多大佬的分享经验, 试着去封装了一个微信的i18n方法 首先, 我们需要明确一下需要实

    2024年02月05日
    浏览(37)
  • SpringBoot 国际化(i18n) 支持中文键(KEY)的解决方法

    前言: 项目中要解决“中英文”切换的问题,想法是输入key例如“你好”,然后去国际化文件找对应的中文key,然后进行输出,如果没有定义这个key,则输出“你好”。但是中文key在properties文件中会已unicode编码输出,使用中文key时获取不到对应的value。 解决方法: 重构$.

    2024年02月16日
    浏览(25)
  • 语言包 I18n 使用(如何搭配element-ui)

    1.安装依赖  yarn add vue-i18n@8.22.2 2.在src下创建lang文件夹,创建lib文件夹,lib下面放下面两个文件 en.js zh.js  在src下的lang文件夹的index中 在main.js中    结合element-ui 使用 需要在main.js修改一下内容 在src下的lang文件夹下的index文件中

    2024年02月11日
    浏览(32)
  • Vue实现多语言(i18n)

    安装i18n插件。 在src目录下,创建一个【language】文件夹,并创建两个语言包js文件。 中文语言包:【zh.js】 英文语言包:【en.js】 完善en.js文件和zh.js文件。两个文件的结构要相同。如果用Element-UI,这里导入。 en.js zh.js 在main.js引入插件。 在页面上使用和切换。 使用: 切换

    2024年02月15日
    浏览(37)
  • vue2+element-ui使用vue-i18n进行国际化的多语言/国际化

    注意:vue2.0要用8版本的,使用9版本的会报错 在src目录下,创建新的文件夹,命名为i18n zh.js en.js index.js main.js 使用方式一 效果图 使用方式二 效果图 使用方式三,在 效果图 ` 注意:这种方式存在更新this.$i18n.locale的值时无法自动切换的问题,需要刷新页面才能切换语言。解

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包