vue使用i18n

在这里插入图片描述

🎈个人主页:靓仔很忙i
💻B 站主页:👉B站👈
🎉欢迎 👍点赞✍评论⭐收藏
🤗收录专栏:前端
🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!


1.安装模块,不引入6可能会报错
npm install vue-i18n@6

2.在src下创建一个lang文件夹存放相关文件

3.在lang文件夹下创建一个index.js文件

import Vue from "vue"; // 引入Vue
import VueI18n from "vue-i18n"; // 引入国际化的包
import ElementLocale from 'element-ui/lib/locale'
import enLocale from 'element-ui/lib/locale/lang/en' //引入el自带得国际化语言包,防止内部插件出现乱码
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'//引入el自带得国际化语言包,防止内部插件出现乱码
Vue.use(VueI18n); // 全局注册国际化包
 
 
// 准备翻译的语言环境信息
const i18n = new VueI18n({
  locale: localStorage.getItem('locale')||"zh", // 从cookie中获取语言类型 获取不到就是中文
  messages: {
    'zh': Object.assign(require('./zh.js')) ,   // 中文语言包
    'ja': Object.assign(require('./ja.js')) ,  // 英文语言包
  }
}); 
 
ElementLocale.i18n((key, value) => i18n.t(key, value))
export default i18n

4.在lang下创建js.js,zh.js
ja.js文件

module.exports = {
  home: {
    hello:"こんにちは!",
    welcome:'本システムへようこそ',
    jumpPage:'前のページにジャンプ',
    message:'多くの人はこの世界を改造しようとしているが、自分を改造しようとする人は少ない'
  },
  head:{
    switch:'言語の切り替え',
    changePwd:'パスワードの変更',
    personInfo:'個人情報',
    exit:'終了'
  },
  sys:{
    title:'バックグラウンド管理システム'
  }
 }

zh.js文件

/**zh.js文件**/
module.exports = {
    home: {
        hello:"您好!",
        welcome:'欢迎使用本系统',
        jumpPage:'跳转到前端页面',
        message:'大多数人想要改造这个世界,但却罕有人想改造自己'
      },
      head:{
        switch:'切换语言',
        changePwd:'修改密码',
        personInfo:'个人信息',
        exit:'退出'
      },
      sys:{
        title:'后台管理系统'
      }
   }

5.在main.js中引入下面代码

import i18n from "@/lang/index";
import locale from 'element-ui/lib/locale/lang/en'
Vue.use(ElementUI,{locale});
new Vue({
  router,
  store,
  i18n,
  render: h => h(App)
}).$mount("#app");

6.使用
6.1 src/components/Header.vue中添加如下代码,进行语言切换

<template>
...省略代码...
 <el-dropdown-menu slot="dropdown" style="width: 100px; text-align: center">
        <el-dropdown-item style="font-size: 14px; padding: 5px 0">
          <div style="text-decoration: none"  @click="switchLang">切换语言</div>
        </el-dropdown-item>
...省略代码...
</el-dropdown-menu> 
</template>
 
<script>
export default {
    methods: {
    switchLang(){
        if(this.$i18n.locale=="zh"){
          this.$i18n.locale="ja"
        }else{
          this.$i18n.locale="zh"
        }
      }
  },
};
</script>


6.2 代码中国际化
//将字符串直接替换为{{$t(‘xxx.xxx’)}}
//例如:src/views/Home.vue中template段代码替换如下

//将字符串直接替换为{{$t('xxx.xxx')}}
//例如:src/views/Home.vue中template段代码替换如下

  <template>
  <div style="color: #666;font-size: 14px;">
    <div style="padding-bottom: 20px">
      <b>{{$t('home.hello')}}{{ user.nickname }}</b>
    </div>
    <el-card>
      {{$t('home.welcome')}} | <a href="/front/home"><span style="color: #E6A23C">{{$t('home.jumpPage')}}</span></a>
      <el-divider />
      {{$t('home.message')}}
    </el-card>
  </div>
</template>    

相关推荐

  1. uniapp 使用vue-i18n实现传入变量国际化

    2024-04-08 21:10:03       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-08 21:10:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-08 21:10:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-08 21:10:03       82 阅读
  4. Python语言-面向对象

    2024-04-08 21:10:03       91 阅读

热门阅读

  1. VUE 实现路由的基本原理

    2024-04-08 21:10:03       27 阅读
  2. 如何进行Python代码的调试和测试?

    2024-04-08 21:10:03       29 阅读
  3. C# 一种基于 event 和 委托的事件机制

    2024-04-08 21:10:03       34 阅读
  4. pytest中文使用文档----11测试的参数化

    2024-04-08 21:10:03       32 阅读
  5. Llama Index的NodeParser详解

    2024-04-08 21:10:03       38 阅读
  6. 常用查找算法(一)

    2024-04-08 21:10:03       38 阅读
  7. day31 算法 贪心算法1

    2024-04-08 21:10:03       37 阅读
  8. k8s删除namespace失败一直处于Terminating状态

    2024-04-08 21:10:03       43 阅读
  9. RIPv1和RIPv2的区别

    2024-04-08 21:10:03       33 阅读
  10. Mysql底层原理一:事务

    2024-04-08 21:10:03       38 阅读