Vue项目实战05:18n实现多语言自动切换-浏览器语言设置「建议收藏」

Vue项目实战05:18n实现多语言自动切换-浏览器语言设置「建议收藏」什么是vue-i18ni18n是Internationalization这个英文的简写,即国际化的意思,vue-i18n是一款针对于vue开发的国际化插件,让项目支持多语言切换,以适应不同地区用户的需求。安装vue-i18n直接在项目中执行安装命令:npminstallvue-i18n–save​全局引入vue-i18n在项目中引入vue-i18n,实例化vue-i18n将需要加载的语言包通过require导入,这里看个人需求我只需要中英日文,所以引入zh-CN.js和en-US.j

大家好,又见面了,我是你们的朋友全栈君。

什么是vue-i18n

i18n是 Internationalization 这个英文的简写,即国际化的意思,vue-i18n是一款针对于vue开发的国际化插件,让项目支持多语言切换,以适应不同地区用户的需求。

安装vue-i18n

直接在项目中执行安装命令:npm install vue-i18n --save
在这里插入图片描述

​全局引入vue-i18n

在项目中引入vue-i18n,实例化vue-i18n将需要加载的语言包通过require导入,这里看个人需求我只需要中英日文,所以引入zh-CN.js和en-US.js ja-JP.js,分别对应中文和英文 日文,你也可以提供多语言包,最后别忘记了将实例挂载至Vue。

步骤

1.在src下新建locale文件夹

在这里插入图片描述
在locale下建lang文件夹—-用来存放自己设置的多语言文件
index.js 入口文件
index.js里放置内容如下

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import { 
    localRead } from '@/libs/util'
import { 
    Locale } from 'vant'
import customZhCn from './lang/zh-CN'
import customJaJp from './lang/ja-JP'
import customEnUs from './lang/en-US'
import zhCN from 'vant/lib/locale/lang/zh-CN'
import enUS from 'vant/lib/locale/lang/en-US'
import jaJP from 'vant/lib/locale/lang/ja-JP'

Vue.use(VueI18n)

// 自动根据浏览器系统语言设置语言
const navLang = navigator.language.substring(0, 2)
const localLang = navLang || false
let lang = localLang || localRead('local') || 'zh'

Vue.config.lang = lang

Vue.locale = () => { 
   }
const messages = { 
   
  'zh': Object.assign(zhCN, customZhCn),
  'en': Object.assign(enUS, customEnUs),
  'ja': Object.assign(jaJP, customJaJp)
}
// 实例化i18n并引入语言文件。
const i18n = new VueI18n({ 
   
  locale: lang, // 语言标识  // 默认语言
  messages
})

const vantLocales = lang => { 
   
  if (lang === 'zh') { 
   
    Locale.use(lang, zhCN)
  } else if (lang === 'en') { 
   
    Locale.use(lang, enUS)
  } else if (lang === 'ja') { 
   
    Locale.use(lang, jaJP)
  }
}
vantLocales(i18n.locale)

export default i18n

import { localRead } from '@/libs/util' 由来
在这里插入图片描述

export const localSave = (key, value) => { 
   
  localStorage.setItem(key, value)
}

export const localRead = (key) => { 
   
  return localStorage.getItem(key) || ''
}




在main.js里引入 并挂载

import i18n from '@/locale'

Vue.use(i18n)


new Vue({ 
   
  router,
  i18n, // 挂载
  render: h => h(App)
}).$mount('#app')




定义语言包

语言包已json格式书写,数据以键值对的形式呈现,所以每个语言包的键都是对应的,只是值不想同,为避免编码问题问题,我们键统一用英文,所以创建语言包的时候我们先从英文开始,搞定之后直接复制再修改对应的值就好了,最后记得export导出对象。定义数据的形式可以根据个人需求来,我喜欢把相同的放一起,这样找起来方便点。如果你觉得每次都要通过lang来获取数据比较麻烦,我们可以再优化下,把export const lang=改写成module.exports= 模式,这样就可以直接获取对象中的对象了。
Vue项目实战05:18n实现多语言自动切换-浏览器语言设置「建议收藏」

页面渲染

静态渲染时,用双大括号包裹,把数据当成变量引入,$t用来调用语言包中键对应的值。如果用的是element-ui动态绑定值,双引号即可。动态渲染时,我们可以借助计算属性,再拿这个计算属性去遍历DOM元素即可。
在这里插入图片描述
//动态渲染

computed:{ 
   
 navlist(){ 
   
 return this.$t('nav')
 }
}


以上是根据浏览器自动切换语言

点击切换

//手动切换语言
change(){ 
   
 if (this.$i18n.locale === 'zh-CN') { 
   
 this.$i18n.locale = 'en-US';
 localStorage.setItem('lang','en-US') 
 }else { 
   
 this.$i18n.locale = 'zh-CN';
 localStorage.setItem('lang','zh-CN')
 }
},

可以参考这篇文章 https://www.shangyouw.cn/shezhi/arc59448.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135814.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue项目刷新当前页面的方法

    vue项目刷新当前页面的方法尝试了几种刷新页面的方法,比如1、浏览器直接刷新(会出现短暂的白页面现象)2、设置一个空白页面,需要刷新的时候跳转到空页面再从空页面跳回来(些许麻烦)3、使用provide/inject(目前觉得最实用,主讲此方法)…

    2022年8月31日
  • 【第一篇】Vue的初次邂逅

    【第一篇】Vue的初次邂逅  因为最近需要使用到Vue,所以打算将Vue的学习资料详细整理一份,感兴趣的小伙伴可以一起来哦。一、Vue基础介绍1.什么是Vue.jsVue.js是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App,Vue语法也是可以用于进行手机App开发的,需要借助于Weex)Vue.js是前端的主流框架之一,和Angular.js、Rea…

    2022年6月4日
  • 伴随矩阵求逆矩阵(已知A的伴随矩阵求A的逆矩阵)

    在之前的文章《线性代数之矩阵》中已经介绍了一些关于矩阵的基本概念,本篇文章主要就求解逆矩阵进行进一步总结。余子式(Minor)我们先看例子来直观的理解什么是余子式(Minor,后边将都用英文Minor,中文的翻译较乱)。minorexample这个例子(我们假设矩阵为A)中我们看到A[1,1]的minor就是将A[1,1]所在的行和列删除后剩下的矩阵的行列式,假设我们把A[…

    2022年4月13日
  • java递归如何退出_递归删除数组某个元素

    java递归如何退出_递归删除数组某个元素###Java递归删除文件publicstaticvoidmain(String[]args){Filefile=newFile(“D:\\dir”);recursiveDelete(file);}###recursiveDelete方法privatestaticvoidrecursiveDelete(Filefile){if(file.isDirectory())…

    2022年9月18日
  • 几款.Net加密/加壳工具的比较

    几款.Net加密/加壳工具的比较前言  使用过.NET的程序员都知道,.NET是一个巨大的跨时代进步,它开发效率高、功能强、界面观、耐用、新的语言C#已经提交为行业规范、CLR共公运行库资源丰富,这所有的特点标志着它成为主流编程语言是必然的。     可是它也有一个缺点,那就是编译好的程序集可以完全反编译成源代码,这给一些不法份子提供了很好的机会,试想想,您辛苦的劳动成果就这样给了别人;所以如何保护我们的知识产

    2022年6月27日
  • 前缀索引使用

    前缀索引使用前缀索引使用1.前缀索引索引通常会使用字段的整体用作关键字,但是有些时候,即使使用字段的前段部分数据也是可以去识别某些记录的,而这种方式就是前缀索引,可以更快的去搜索某些数据建立前缀索引的语法:ALTERTABLE表名ADDKEY(字段名(N));N就是要用字段的前几位建立索引。既然我们使用了前缀索引,那么我们肯定就要确认N为多少的时候的辨识度是极限接近最高辨识度的,否则前缀…

    2022年5月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号