使用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) 离线打包自行在原生工程中配置。