uni-app的国际化即 多语言切换 使用vue-i18n
vue和js里的内容国际化是与web通行的方案。
main.js 引入并初始化 VueI18n
注意 推荐使用vue-i18n@9.1.9固定版本
安装 vue-i18n
,可以通过以下命令安装:
npm install vue-i18n
1.在main.js中引入i18n
import App from './App' import messages from './locale/index' let i18nConfig = { locale: 'en', // 设置默认语言, messages } // #ifndef VUE3 import Vue from 'vue' import './uni.promisify.adaptor' Vue.use(uView) import VueI18n from 'vue-i18n' Vue.use(VueI18n) const i18n = new VueI18n(i18nConfig) Vue.config.productionTip = false App.mpType = 'app' const app = new Vue({ i18n, ...App }) app.$mount() // #endif // 导入 uView 组件 import uView from '@/uni_modules/uview-ui' import MqttConnection from './utils/mqttConnection.js'; const brokerUrl = 'wxs://mqtt.rare-soft.com:443/mqtt' const clientId = new Date().getTime() const mqttConnA = new MqttConnection(brokerUrl, clientId); Vue.prototype.$mqttConn = mqttConnA; // #ifdef VUE3 import { createSSRApp } from 'vue' import { createI18n } from 'vue-i18n' const i18n = createI18n(i18nConfig) export function createApp() { const app = createSSRApp(App) app.use(i18n) return { app } } // #endif
2.创建一个local 目录 然后配置语言json文件
uni-app.zh-Hans.json 文件
{ "common": { "uni.app.quit": "再按一次退出应用", "uni.async.error": "连接服务器超时,点击屏幕重试", "uni.showActionSheet.cancel": "取消", "uni.showToast.unpaired": "请注意 showToast 与 hideToast 必须配对使用", "uni.showLoading.unpaired": "请注意 showLoading 与 hideLoading 必须配对使用", "uni.showModal.cancel": "取消", "uni.showModal.confirm": "确定", "uni.chooseImage.cancel": "取消", "uni.chooseImage.sourceType.album": "从相册选择", "uni.chooseImage.sourceType.camera": "拍摄", "uni.chooseVideo.cancel": "取消", "uni.chooseVideo.sourceType.album": "从相册选择", "uni.chooseVideo.sourceType.camera": "拍摄", "uni.previewImage.cancel": "取消", "uni.previewImage.button.save": "保存图像", "uni.previewImage.save.success": "保存图像到相册成功", "uni.previewImage.save.fail": "保存图像到相册失败", "uni.setClipboardData.success": "内容已复制", "uni.scanCode.title": "扫码", "uni.scanCode.album": "相册", "uni.scanCode.fail": "识别失败", "uni.scanCode.flash.on": "轻触照亮", "uni.scanCode.flash.off": "轻触关闭", "uni.startSoterAuthentication.authContent": "指纹识别中...", "uni.picker.done": "完成", "uni.picker.cancel": "取消", "uni.video.danmu": "弹幕", "uni.video.volume": "音量", "uni.button.feedback.title": "问题反馈", "uni.button.feedback.send": "发送" }, "ios": {}, "android": {} }
3.修改底部导航
(1)在pages.json 中 使用 %%占位
(2)在App.vue中使用uni.setTabBarItem 方法修改
4.在manifest.json 中设置默认语言(和 pages.json 一致)
5.页面模板中使用 $t()
获取,并传递国际化json文件中定义的key,js中使用 this.$t('')
<template> <view class="container"> <view class="title">{{$t('index.title')}}</view> </view> </template> <script> export default { data() { return { } } } </script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?