云端打包配置国际化
从HBuilderX1.9.5开始,云端打包支持配置部分国际化功能,应用会根据当前系统设置的语言自动选择配置的国际化字符,如果不配置则使用应用默认配置的信息。
国际化支持的语言
应用内置支持以下语言:
- 英文
- 中文(简体)
国际化支持的内容
目前云端打包支持的国际化内容包括:
- 应用名称
在桌面显示的应用名称,配置国际化后,切换系统语言则会显示对应国际化配置的应用名称。 - iOS平台隐私访问描述信息
应用第一次使用涉及到用户隐私的功能是弹出授权确认框上显示的信息,提交App store审核时此信息必须准确描述获取此权限的原因。
切换系统语言时弹出的授权确认框会显示对应国际化配置的描述信息,不配置国际化则总是使用HBuilderX可视化界面配置的描述信息。(注意:系统授权弹窗国际化只受系统语言设置影响,app 内设置语言不受影响)
manifest.json国际化配置
HBuilderX暂时还不支持可视化界面配置,需在“源码视图”中手动添加配置。
打开项目的manifest.json文件,切换到“源码视图”。
uni-app项目在"app-plus"->"locales"节点,5+ APP项目在"plus"->"locales"节点配置以下信息:
"locales": {
"en": { // 英文
"name": "HBuilder", // 应用名称
"android": {
"strings": { //Android平台自定义字符串
"CustomKey": "CustomValue",
//...
}
},
"ios": {
"privacyDescription": { //iOS平台隐私访问描述信息
"NSPhotoLibraryUsageDescription": "access to the user’s photo library(read)",
//...
},
"infoPlist": { //iOS平台自定义InfoPlist.strings
"CustomKey": "CustomValue",
//...
}
}
}
"zh": { // 中文(简体)
}
}
其中locales下的键名(key)可以取值:
- 语言代码,通常为两个或三个字母,参考ISO 639规范,示例如下
语言名称 | 语言代码 |
---|---|
中文 | zh |
英文 | en |
日语 | ja |
韩语 | ko |
法语 | fr |
西班牙语 | es |
- 语言代码-地区代码,地区代码为两个字母,参考ISO 3166-2规范,示例如下
地区名称 | 地区代码 |
---|---|
中国 | CN |
中国台湾 | TW |
中国香港 | HK |
美国 | US |
英国 | GB |
日本 | JP |
韩国 | KR |
法国 | FR |
西班牙 | ES |
android -> strings
Android平台配置自定义strings.xml文件,HBuilderX2.5.0+版本支持。
用于配置strings.xml国际化文件,可在此节点下配置使用uni原生插件使用的自定义国际化键值对。
"strings": {
"CustomKey1": "CustomValue1",
"CustomKey2": "CustomValue2",
"CustomKey3": "CustomValue3"
}
也可以配置内部业务逻辑使用的国际化字符串
应用启动时引导用户允许权限的提示语
字符串键名 | 字符串键值 |
---|---|
dcloud_permission_write_external_storage_message | 引导用户开启“读写手机存储”权限提示语 |
dcloud_permission_read_phone_state_message | 引导用户开启“获取设备信息”权限提示语 |
配置应用启动时申请权限详细配置参考:https://ask.dcloud.net.cn/article/36549
html页面中input(type=file)打开的选择页面国际化字符串
字符串键名 | 字符串键值 |
---|---|
dcloud_choose_an_action | 选择页面标题,默认中文为“选择操作” |
图片选择plus.gallery.pick国际化字符串(多图)
字符串键名 | 字符串键值 |
---|---|
dcloud_gallery_library_name | 媒体选择器 |
dcloud_gallery_all_dir_name | 所有图片和视频 |
dcloud_gallery_all_video | 所有视频 |
dcloud_gallery_all_image | 所有图片 |
dcloud_gallery_select_title | 选择图片和视频 |
dcloud_gallery_select_video_title | 选择视频 |
dcloud_gallery_select_image_title | 选择图片 |
dcloud_gallery_video_dir_name | 所有视频 |
dcloud_gallery_msg_amount_limit | 已达到选择数量上限 |
dcloud_gallery_msg_size_limit | 请压缩和剪切后上传,文件最大只支持 |
dcloud_gallery_select_null | 请选择文件 |
dcloud_gallery_done | 完成 |
dcloud_gallery_count_string | 个 |
dcloud_gallery_preview | 预览 |
dcloud_gallery_select | 选择 |
dcloud_gallery_video | 视频 |
dcloud_gallery_cant_play_video | 没有可以播放的程序 |
dcloud_gallery_read_external_storage | 需要打开读取存储权限 |
ios -> privacyDescription
iOS平台配置隐私权限描述国际化。
建议将manifest.json页面切换到“模块权限配置”项,在“iOS隐私信息访问的许可描述”栏下配置应用需要使用到的隐私描述信息:
输入完成后切换到代码视图,uni-app项目在"app-plus"->"distribute"->"ios"->"privacyDescription"节点,5+ APP项目在"plus"->"distribute"->"apple"->"privacyDescription"节点下可看到输入的内容:
将"privacyDescription"节点下的内容拷贝到"locales"节点下要配置语言下的"ios"->"privacyDescription"节点下,并将值翻译为对应语言的描述。
完整可配置的隐私项可参考苹果官网https://developer.apple.com/documentation/bundleresources/information_property_list中以“NS”开头、“Description”结尾的项。
ios -> infoPlist
iOS平台配置自定义InfoPlist.Strings文件,HBuilderX2.3.4+版本支持。
用于配置InfoPlist.Strings国际化文件, 可在此节点下配置使用uni原生插件使用的自定义国际化键值对。
"infoPlist": {
"CustomKey1": "CustomValue1",
"CustomKey2": "CustomValue2",
"CustomKey3": "CustomValue3"
}
应用内国际化处理
这里不描述应用如何动态切换语言(相关方法请参考其它标准H5方案),仅考虑如果获取当前系统的语言环境,业务代码根据语言环境进行国际化处理。
5+ APP项目
所有js都运行在系统Webview环境中,可以直接使用H5标准API获取当前系统设置的语言:
var lan = navigator.language||navigator.browserLanguage;
console.log(lan);
详细规范参考:https://developer.mozilla.org/zh-CN/docs/Web/API/NavigatorLanguage/languages
uni-app项目
可以调用5+ API(plus.os.language)获取当前系统设置的语言:
var lan = plus.os.language;
console.log(lan);
通常可以在App.vue页面的onLaunch中获取。
5+ API规范参考:http://www.html5plus.org/doc/zh_cn/device.html#plus.os.language
5+ API的国际化支持说明
大多数5+ API都不会涉及到国际化问题,除非有部分界面相关的API,5+ Runtime内部已经支持国际化,即根据当前系统设置的语言会自动处理国际化。
可能存在部分界面未完成国际化处理,我们会根据反馈情况确定优先级进行支持。
uni-app应用开发国际化说明参考https://ask.dcloud.net.cn/article/35872