uniapp实现国际化语言

关于设备语言

uni.getSystemInfo

osLanguage 操作系统语言

|------------|-------------|------------|
| 字段名称 | App-Android | App-iOS |
| osLanguage | zh-CN | zh-Hans-CN |

其他:hostLanguage 宿主语言(仅 UniMPSDK 支持,就是只支持小程序)

language 返回值说明

language的国际规范是BCP47规范,分为三段,主语言-次语言-地区。例如zh-Hans-CN,表示 中文-简体-中国大陆

但除了主语言外,后两者均可省略。在不同平台,它们的省略规则也不相同。

  • app-ios,不省略,返回zh-Hans-CN

  • app-android、web、微信小程序,省略次语言,返回zh-CN

  • uni-app框架和应用的多语言,以及支付宝小程序,则用zh-Hans来表示简体中文

所以获取语言后,不能直接字符串比较,需要拆段比较,npm上也有专门做BCP47语言规范比较的库。

uni.getLocale() 获取设备当前设置的语言

uni.setLocale(locale) 设置当前语言

  • App-Android、App-iOS 平台修改系统语言后会重启应用。

  • App-Android 平台设置新的语言后会自动重启应用。(ios要考虑一下)

国际化开发

1、安装i18n

官方推荐9.1.9版本 但是vue2不能装9.1.9

所以降到8.x.x安装

npm install vue-i18n@8.2.1

※2、准备国际化json文件

3、在main.js引入

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| JavaScript import en from '@/locale/en.json' import zhHans from '@/locale/zh-Hans.json' import zhHant from '@/locale/zh-Hant.json' const messages = { en, 'zh-Hans': zhHans, 'zh-Hant': zhHant } let i18nConfig = { locale: uni.getLocale(),// 获取已设置的语言 messages } import VueI18n from 'vue-i18n' Vue.use(VueI18n) const i18n = new VueI18n(i18nConfig) const app = new Vue({ i18n, ...App }) |

4、使用国际化语言

  • page.json 上 使用 "%tabbar.title1%"

pages.json 支持以下属性配置国际化信息

  • navigationBarTitleText
  • titleNView->titleText
  • titleNView->searchInput->placeholder
  • tabBar->list->text
  • vue中template 使用 $t('')

|-----------------------------------------------------------------------------------------------------------------------------------|
| JavaScript <template> <view class="home-page"> <!-- 搜索框 --> <view>{{ $t('home.title') }}</view> </view> </template> |

  • js中 使用this.$t('')

|------------------------------------------------------------------|
| JavaScript data() { return { title:this.$t('tabbar.title1') } }, |

相关推荐
普马萨特1 天前
uni-app x 定位踩坑实录:H5/小程序/App 统一经纬度与逆地理编码
uni-app
Geek_Vison2 天前
保险APP已经用了Flutter,还能接入小程序吗?
flutter·小程序·uni-app·mpaas·小程序容器
郑州光合科技余经理2 天前
本地生活平台搭建:跨业态用户标识怎么贯通
java·开发语言·前端·后端·uni-app·php·ai编程
2501_915909063 天前
iOS应用从开发到上架App Store的完整发布流程与步骤指南
android·ios·小程序·https·uni-app·webview
不爱说话郭德纲3 天前
从“点点点”到一键出包:我把 uni-app x Android 离线打包做成了脚本
android·前端·uni-app
snotJam3 天前
关于Uniapp的Android自定义基座使用
android·uni-app
今年下半年4 天前
【微信小程序】uni-app + Vue3 + Vite 的小程序项目实现「进入指定范围才能打卡」的考勤功能
微信小程序·uni-app·定位·考勤
郑州光合科技余经理8 天前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
遗憾随她而去.9 天前
uniApp跨端开发: 解决不同平台显示差异问题
uni-app
程序鉴定师12 天前
2026年深圳小程序/App开发公司技术选型指南:从架构设计到交付标准全维度评估
java·小程序·uni-app·php·objective-c