当前位置: 首页 > news >正文

【前端开发】国际化开发工具i18n的使用教程

场景

让项目能够适应多国语言根据系统语言环境展示不同语种,以vue项目为例子

步骤

1. i18n安装
npm install --save vue-i18n #默认安装最新版本
npm install --save vue-i18n@8.27.1  #指定版本
2. 语言文件添加

添加一个文件夹 /lang (文件名可以自己随意取)用以放相关配置文件

1.语言对应文件

在lang文件夹下新建 zh.json, en.json等json文件以键值对形式存放字段对应的语言文本。

zh.json:

{"homePage": {"about": "关于"}
}

en.json:

{"homePage": {"about": "about"}
}

新建一个配置文件index.js:

import Vue from 'vue'
import Element from 'element-ui'
import VueI18n from 'vue-i18n'
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
import en from './en.json'
import zh from './zh.json'const messages = {en: {...en,...enLocale},zh: {...zh,...zhLocale}
}
let lang = localStorage.getItem('lang')
let locale = lang === 'en_US' ? 'en' : 'zh'Vue.use(VueI18n)
const i18n = new VueI18n({locale: locale, // 设置默认语言messages,silentTranslationWarn: true
})Vue.use(Element, {i18n:(key,val)=>i18n.t(key,val)
})export default i18n
3. 在入口文件(main.js)和全局组件文件(App.vue)中配置

main.js:

import Vue from 'vue'
import App from './App.vue'
import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import i18n from './lang' // 导入
Vue.config.productionTip = falseVue.use(Element)
new Vue({render: h => h(App),i18n // 注册
}).$mount('#app')

App.vue:
每次挂载都获取一下系统语言,以防语言切换后缓存刷新不及时

 mounted() {let lang = localStorage.getItem('lang')if (lang == 'en_US') {this.$i18n.locale = "en"} else {this.$i18n.locale = "zh"this.locale = null}}
4. 代码中使用

在代码中展示文本的位置以{{$t('')}}的格式替换文本

<el-menu-item index="3">{{ $t('homePage.about') }}</el-menu-item>

参考链接

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL 数据库深度解析:安装、语法与高级查询实战
  • BMC解决方案丨服务器故障诊断与预测平台方案设计与实现
  • 计算机毕业设计选题推荐-医疗就诊平台-在线医疗问诊系统-Java/Python项目实战
  • 【Android】根据URI获取文件扩展名或MimeType
  • Android SurfaceFlinger——共享内存读写流程(五十五)
  • 探索微服务架构中的动态服务发现与调用:使用 Nacos 与 Spring Cloud OpenFeign 打造高效订单管理系统
  • 如何将 Parallels Desktop 许可证密钥移至新的 Mac?
  • Android 获取通话记录
  • 【Verilog 数字系统设计教程】Verilog 基础:硬件描述语言入门指南
  • 登录校验组件 Spring Security OAuth2 详解
  • 【CVPR‘24】BP-Net:用于深度补全的双边传播网络,新 SOTA!
  • IOS 17 基于UITabBarController实现首页TabBar
  • 在URL链接中指定浏览器跳转到PDF文件的指定页码
  • python计算机视觉——第四章 照相机模型与增强现实
  • OpenCV绘图函数(8)填充凸多边形函数fillConvexPoly()的使用
  • hexo+github搭建个人博客
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Bootstrap JS插件Alert源码分析
  • Git 使用集
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • node入门
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • React+TypeScript入门
  • Service Worker
  • Spring Boot快速入门(一):Hello Spring Boot
  • ucore操作系统实验笔记 - 重新理解中断
  • vue-router的history模式发布配置
  • vue总结
  • Webpack 4x 之路 ( 四 )
  • windows下如何用phpstorm同步测试服务器
  • 半理解系列--Promise的进化史
  • 关于extract.autodesk.io的一些说明
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 简单基于spring的redis配置(单机和集群模式)
  • 批量截取pdf文件
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #pragma pack(1)
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (WSI分类)WSI分类文献小综述 2024
  • (ZT)一个美国文科博士的YardLife
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (四)汇编语言——简单程序
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)Google的Objective-C编码规范
  • *2 echo、printf、mkdir命令的应用
  • .NET CORE Aws S3 使用
  • .Net Core 笔试1
  • .Net Core中Quartz的使用方法