vue-admin-template项目实现中英文切换

实现效果:

1.安装

*注意版本号

javascript 复制代码
npm install vue-i18n@8.24.5 -S

2.新建文件夹

在src目录下新建lang文件夹,里面有3个文件

javascript 复制代码
//	index.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import Cookies from 'js-cookie'
import elementEnLocale from 'element-ui/lib/locale/lang/en' 
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'
import enLocale from './en'
import zhLocale from './zh'

Vue.use(VueI18n)

const i18n = new VueI18n({
  locale: Cookies.get('language') || 'zh', // set locale
  messages:{
    en: {
      ...enLocale,
      ...elementEnLocale
    },
    zh: {
      ...zhLocale,
      ...elementZhLocale
    }
  }
})

export default i18n

en.js 和 zh.js是页面中需要翻译的内容

3.在utils下面新建i18n.js文件

javascript 复制代码
// i18n.js
export function generateTitle(title) {
  const hasKey = this.$te('route.' + title)
  // $t :this method from vue-i18n, inject in @/lang/index.js
  const translatedTitle = this.$t('route.' + title)
  if (hasKey) {
    return translatedTitle
  }
  return title
}

4. 配置main.js

添加以下代码

javascript 复制代码
import i18n from './lang'
Vue.use(ElementUI, {
  i18n: (key, value) => i18n.t(key, value)
})
new Vue({
  el: '#app',
  router,
  store,
  i18n,
  render: h => h(App)
})

5. 配置store文件夹里面的文件

  1. app.js

    state里面增加

    javascript 复制代码
    language: Cookies.get('language') || 'zh',

    mutations里面增加

    javascript 复制代码
    // 中英文
    SET_LANGUAGE: (state, language) => {
      	state.language = language
    	Cookies.set('language', language)
    },

    actions里面增加

    javascript 复制代码
    // 中英文
     setLanguage({ commit }, language) {
        commit('SET_LANGUAGE', language)
     },
  2. getters.js

    getters里面增加

    javascript 复制代码
    language: state => state.app.language,

6. 设置语言版本页面使用

页面中使用 $t('')来渲染

html 复制代码
 <template>
    <div class="app-container">
        <div class="main-min">
            <span class="title">{{$t('set.languageSetting')}}</span>
            <div class="radio">
                <el-radio-group v-model="radio" @input=langInput>
                    <el-radio label="zh" border>{{$t('set.Chinese')}}</el-radio>
                    <el-radio label="en" border>{{$t('set.English')}}</el-radio>
                </el-radio-group>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            radio: 'zh',
        }
    },
    created(){
    	// 获取当前语言版本使用  this.$store.getters.language
        this.radio = this.$store.getters.language
    },
    methods: {
        langInput(lang){
            this.$i18n.locale = lang
            this.$store.dispatch('app/setLanguage', lang)
            this.$message({
                message: lang=='en' ? 'switch language success' : '切换成功',
                type: 'success'
            })
        }
    }
}
</script>

<style lang="scss">
// 页面样式
</style>

7.修改左侧路由导航栏

  1. 路由文件中meta里面的title一定对应en.js和zh.js文件中的名字
  2. 找到侧边栏文件目录

    引入i18n.js

    更改html部分代码
相关推荐
我又来搬代码了3 分钟前
【Android】【Compose】Compose知识点复习(一)
android·前端·kotlin·android studio
哆啦A梦15886 分钟前
【vue实战】商城后台管理系统 01 项目介绍
前端·javascript·vue.js
布茹 ei ai28 分钟前
5、基于 GEE 的 Sentinel-1 SAR 地震滑坡变化检测系统:2022 泸定地震案例
javascript·sentinel·遥感·gee·云平台
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ37 分钟前
java实现登录:多点登录互踢,30分钟无操作超时
java·前端
一字白首41 分钟前
Vue Router 进阶,声明式 / 编程式导航 + 重定向 + 404 + 路由模式
前端·javascript·vue.js
d111111111d43 分钟前
C语言中static修斯局部变量,全局变量和函数时分别由什么特性
c语言·javascript·笔记·stm32·单片机·嵌入式硬件·学习
广州华水科技1 小时前
单北斗变形监测在水库安全中的应用与维护该如何实施?
前端
GIS好难学1 小时前
0帧起手《Vue零基础教程》,从前端框架到GIS开发系列课程
前端·vue.js·前端框架
李瑞丰_liruifengv1 小时前
使用 Claude Agent SDK 写一个 DeepResearch Agent
javascript·aigc·agent