i18n.md 2.1 KB
Newer Older
Q
qiang 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
使用uni-app做出海App的开发者越来越多,大家都关心国际化的问题。

## 框架内置组件和API国际化

uni-app 从 3.1.5 版本开始框架内置组件开始完善国际化支持,这些组件内置如下语言:

* 中文简体
* 中文繁体
* 英语
* 法语
* 西班牙语

组件和接口显示会根据系统语言环境自动切换,未支持的系统语言环境会显示为英文

## 应用内容国际化
vue和js里的内容国际化是通行方案。
uni-app基于vue.js,有成熟的i18n插件,[这里是uni-app开发者分享的i18n插件的使用](https://ask.dcloud.net.cn/article/35102)

## pages.json的国际化
pages.json不属于vue部分,其中的原生tabbar和原生导航栏里也有文字内容。这部分内容的国际化方案如下:
- 底部tabbar,用uni.setTabBarItem的api动态设置文字;
- 顶部的title,用uni.setNavigationBarTitle动态设置文字(如果每个页面都需要设置,可以使用 Vue.mixin);如果App端用了titleNView的文字按钮,通用的做法是换成图标,如果必须使用文字,app端可用setstyle,参考[https://ask.dcloud.net.cn/article/35374](https://ask.dcloud.net.cn/article/35374);h5端用dom操作可动态修改。
- 当然也可以不使用原生导航栏,前端自定义title(渲染速度没有原生快),也不会涉及这些问题。

## 应用中原生ui界面的国际化
应用中调用到相册选择、扫码、地图等包含界面的原生能力时,这些原生界面的ui无法在前端控制。
- 地图部分,可以使用web-view组件内嵌google的web地图,也可以用uni-app的原生插件机制封装google原生地图sdk。
- 扫码部分,App 3.1.5+ 已内置国际化,低版本可以不用uni封装好的界面API,而是使用plus.barcode,自定义扫码界面,[参考](https://ask.dcloud.net.cn/article/35036)
- 其他原生ui界面如相册选择,无法国际化,可以自己开发一个原生插件来替代之。

## 应用名称及iOS隐私提示语的国际化
云打包详见[https://ask.dcloud.net.cn/article/35860](https://ask.dcloud.net.cn/article/35860)
离线打包自行在原生工程中配置。