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

Vue3 国际化i18n

国际化i18n方案

  • 1. 什么是i18n
  • 2. i18n安装、配置及使用
    • 2.1 安装
    • 2.2 配置
    • 2.3 挂载到实例
    • 2.4 组件中使用
    • 2.5 语言切换

1. 什么是i18n

i18n 是“国际化”的简称。在资讯领域,国际化(i18n)指让产品(出版物,软件,硬件等)无需做大的改变就能够适应不同的语言和地区的需要。

对程序来说,在不修改内部代码的情况下,能根据不同语言及地区显示相应的界面。

在全球化的时代,国际化尤为重要,因为产品的潜在用户可能来自世界的各个角落。通常与i18n相关的还有L10n(“本地化”的简称)。

2. i18n安装、配置及使用

2.1 安装

npm i vue-i18n

2.2 配置

在这里插入图片描述
langs存放各语言文件

en.js

export default {messages:{home:'home',login:'login',userName:'userName',index:'index',monitor:'monitor',order:'order',census:'census',switchLanguage:'switchLanguage',date:'date',name:'name',address:'address'}
}

tc.js

export default {messages:{home:'首頁',login:'登錄',userName:'用戶名',index:'首頁',monitor:'數據監控',order:'訂單信息',census:'統計管理',switchLanguage:'切換語言',date:'日期',name:'姓名',address:'地址'}
}

zh.js

export default {messages:{home:'首页',login:'登录',userName:'用户名',index:'首页',monitor:'数据监控',order:'订单信息',census:'统计管理',switchLanguage:'切换语言',date:'日期',name:'姓名',address:'地址'}
}

message.js

//语言包
import zh from './langs/zh'
import en from './langs/en'
import tc from './langs/tc' //繁体export default { //语言包zh,en,tc
}

index.js

import { createI18n } from 'vue-i18n'
import zh from './langs/zh'
import en from './langs/en'
import tc from './langs/tc'
const messages = {en,zh,tc
}
const i18n = createI18n({legacy:false,locale:localStorage.getItem('lang') ||'zh',messages
})
export default i18n

2.3 挂载到实例

import { createApp } from 'vue'
import i18n from './locals'
createApp(App).use(i18n).mount("#app")

2.4 组件中使用

<template><div>{{title}}<!-- 二种引入方式 --><div>{{$t('messages.userName')}}</div><div v-t="'messages.userName'"></div></div>
</template>

2.5 语言切换

<script setup>
import { useI18n } from 'vue-i18n'
const { locale } = useI18n();import { ref, reactive } from 'vue'
let title = ref('订单信息');
const langArr = ['home', 'login', 'userName', 'index', 'monitor', 'order', 'census', 'switchLanguage', 'date', 'name', 'address'];
const changeLang = type => {locale.value = type;localStorage.setItem('lang', type)
}
</script><template><ul><li @click="changeLang('zh')">中文</li><li @click="changeLang('en')">英文</li><li @click="changeLang('tc')">繁体</li></ul><ul><li v-for="item in langArr" :key="item">{{ item + ':' }} {{ $t('messages.' + item) }}</li></ul>
</template><style scoped></style>

中文:
在这里插入图片描述
英文:
在这里插入图片描述
繁体:
在这里插入图片描述

http://www.lryc.cn/news/386192.html

相关文章:

  • 算法金 | 使用随机森林获取特征重要性
  • 网络安全的重要性
  • Leetcode40 无重复组合之和
  • 详解MATLAB中处理日期和时间的函数
  • Java养老护理助浴陪诊小程序APP源码
  • go的singleFlight学习
  • 高电压技术-冲击高压发生器MATLAB仿真
  • 【STM32】SysTick系统滴答定时器
  • 编码遵循五大设计原则创建出更加健壮、可维护和可扩展的软件系统
  • 记录一个问题
  • ONLYOFFICE 8.1版本桌面编辑器测评:重塑办公效率的巅峰之作
  • 【shell脚本速成】python安装脚本
  • Redis报错:MISCONF Redis is configured to save RDB snapshots
  • 关于使用绿联 USB-A转RJ45 2.5G网卡提速的解决问题
  • Qt: QPushButton 按钮实现 上图标下文字
  • 使用阿里云效API操作流水线
  • 使用命令行创建uniapp+TS项目,使用vscode编辑器
  • ABC355 Bingo2
  • Spring+Vue项目部署
  • 【uml期末复习】统一建模语言大纲
  • Linux高级IO
  • go-admin-ui开源后台管理系统华为云部署
  • 点云入门知识
  • HTML静态网页成品作业(HTML+CSS+JS)——家乡莆田介绍网页(5个页面)
  • #### grpc比http性能高的原因 ####
  • 微软Edge浏览器搜索引擎切换全攻略
  • <Linux> 实现命名管道多进程任务派发
  • BigInteger 和 BigDecimal(java)
  • Linux 进程间通讯
  • 数据分析三剑客-Matplotlib