vue+iview+i18n国际化

复制代码
npm install vue-i18n
npm install js-cookie --save

第一步:

新建src/language文件夹 和src/language/config,在language下新建文件index.js,在language/config下新建zh.js(中文) en.js(英文) 文件。


image.png

第二步:

index.js文件

复制代码
import Vue from 'vue/dist/vue.min.js';
import VueI18n from 'vue-i18n/dist/vue-i18n';
import Cookies from 'js-cookie';
import iviewEN from 'iview/dist/locale/en-US';
import iviewZH from 'iview/dist/locale/zh-CN';

// 存储在本地,刷新后不会丢失
const language = Cookies.get('language') || 'zh';
Cookies.set( 'language' , language )

Vue.use(VueI18n)
const messages = {
    'zh':{
        ...require('./config/zh.js'),
        ...iviewZH
    },
    'en':{
        ...require('./config/en.js'),
        ...iviewEN
    }
}
const getLanguage = function () {
    let lang = navigator.browerLanguage?navigator.browerLanguage:navigator.language||navigator.userLanguage
    lang = lang?lang:'zh'
    if(Cookies.get('language')){
        lang = Cookies.get('language')
    }
    return lang
}
const i18n = new VueI18n({
    locale:getLanguage(),
    messages
})
export default i18n;

en.js 英文翻译文件

复制代码
module.exports = {
    navbar: {
        English: 'English',
        Chinese: 'chinese',
        Tc: 'traditional Chinese',
        homepage: 'home page',
        personal: 'personal',
        logout: 'logout',
        language: 'language'
    }
}

zh.js 英文翻译文件

复制代码
module.exports = {
  //头部
  navbar:{
    English:'英文',
    Chinese:'中文',
    Tc:'繁体',
    homepage:'首页',
    personal:'个人中心',
    logout:'退出登录',
    language:'语言'   
  } 
}

第三步

在main.js引入,挂载

复制代码
import VueI18n from "vue-i18n"
import i18n from "./language"
Vue.use(VueI18n)//注入到所有的子组件
const app = new Vue({
  el: '#app',
  router,
  store,
  i18n,//挂载
  components: { App },
  template: '<App/>'
})

第四步 使用

复制代码
<Dropdown trigger="click" @on-click="handleClickDropdown2">
              <a href="javascript:void(0)" style="color:#ffffff">
                <div class="demo-avatar">
                  {{lang}}
                </div>
              </a>
              <DropdownMenu slot="list">
                <DropdownItem name="ch">{{$t('navbar.Chinese')}}</DropdownItem>
                <DropdownItem name="en">{{$t('navbar.English')}}</DropdownItem>
                <DropdownItem name="tw">{{$t('navbar.Tc')}}</DropdownItem>
              </DropdownMenu>
 </Dropdown>

export default{
    data(){
        return{
            lang:''
        }
    },
    methods:{
        //语言选择
      handleClickDropdown2(name){
        if(name === 'ch'){
          this.lang="中文"
          this.$i18n.locale = 'zh'//这是在locale里Index.js定义的中文变量
        }else if(name === 'en'){
          this.lang="English"
          this.$i18n.locale = 'en'
        }else if(name === 'tw'){
          this.lang='繁體'
          this.$i18n.locale = 'tw'
        }
      },
    }
}

第五步 在js中使用

在main.js里给vue对象赋值给一个变量

复制代码
window.vm=new Vue({
  el: '#app',
  router,
  i18n,
  store,
  components: { App },
  template: '<App/>'
}).$mount('#app')

在js里使用

复制代码
<div class="demo-avatar">{{lang}}</div>

export default{
    data(){
        return{
            lang:window.vm.$t('navbar.language')//使用国际化
        }
    }
}

最后编辑于:2025-06-15 10:17:27
© 著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务

相关推荐
MATLAB代码顾问3 小时前
5大智能算法优化标准测试函数对比(Python实现)
开发语言·python
wuminyu4 小时前
专家视角看Java字节码加载与存储指令机制
java·linux·c语言·jvm·c++
万粉变现经纪人4 小时前
如何解决 pip install llama-cpp-python 报错 未安装 CMake/Ninja 或 CPU 不支持 AVX 问题
开发语言·python·开源·aigc·pip·ai写作·llama
清风明月一壶酒4 小时前
OpenClaw自动处理Word文档全流程
开发语言·c#·word
其实防守也摸鱼5 小时前
CTF密码学综合教学指南--第五章
开发语言·网络·笔记·python·安全·网络安全·密码学
网络工程小王5 小时前
【LangChain 大模型6大调用指南】调用大模型篇
linux·运维·服务器·人工智能·学习
qq_571099355 小时前
学习周报四十三
学习
callJJ6 小时前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
小郑加油6 小时前
python学习Day12:pandas安装与实际运用
开发语言·python·学习
AC赳赳老秦6 小时前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw