DCloud_App_Array
DCloud_App_Array
  • 发布:2019-04-20 17:07
  • 更新:2024-07-28 10:29
  • 阅读:74705

应用云端打包国际化处理

分类:HTML5+

云端打包配置国际化

从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

10 关注 分享
9***@qq.com 磐石 BoredApe c***@qq.com 1***@qq.com f***@126.com hgdc 冷月i y***@foxmail.com 2***@qq.com

要回复文章请先登录注册

延津小马

延津小马

回复 w***@ghcx.ltd :
我也遇到相同问题了,求教
2022-10-13 10:17
延津小马

延津小马

回复 w***@ghcx.ltd :
老铁,你这问题解决了吗
2022-10-13 10:16
第一次改BUG

第一次改BUG

自定义语言可以国际化应用名称和许可描述吗
2022-09-19 11:03
qian0314

qian0314

请问
"strings" : {
//Android平台自定义字符串
"NSPhotoLibraryUsageDescription" : "“Orangemarket”あなたの同意が必要で、あなたのアルバムにアクセスすることができます。商品情報を入手するのに便利です。",
"NSPhotoLibraryAddUsageDescription" : "“Orangemarket”商品の共有図を保存するのに便利なように、あなたの同意が必要です。",
"NSCameraUsageDescription" : "“Orangemarket”あなたの同意が必要で、あなたのアルバムにアクセスすることができます。商品情報を入手するのに便利です。"
}
这里是应该用 NSPhotoLibraryAddUsageDescription 还是 dcloud_feature_barcode2_no_camera_permission 呀??
2022-08-22 15:15
keledjh

keledjh

回复 聪冲冲冲 :
应该是不行的,只能再用一个弹窗信息提示目的
2022-07-14 15:37
聪冲冲冲

聪冲冲冲

回复 keledjh :
请问解决了吗?我也是配置了权限提示不生效
2022-07-06 13:00
w***@ghcx.ltd

w***@ghcx.ltd

请问uniapp IOS 配置国际化后,系统为英语,桌面显示应用名称是英语,但是App通用启动界面logo图片下面的应用名称还是中文是怎么回事,需要怎样配置才能显示对应语言的应用名称啊?
2022-05-12 12:05
keledjh

keledjh

如下配置strings,自定义基座和正式打包都不能生效,升级多个版本,测试过vivo华为多个手机,都是只能显示系统默认提示,不明白怎么回事。
"app-plus" : {

"locales" : {
"zh" : {
// 中文(简体)
"name" : "穿越健康", // 应用名称
"android" : {
"strings" : {
//Android平台自定义字符串
"dcloud_permission_external_storage_message" : "允许手机存储权限读写相册,用于用户分享下载照片保存运行状态信息",
"dcloud_permission_write_external_storage_message" : "允许手机存储权限读写相册,用于用户分享下载照片保存运行状态信息",
"dcloud_permission_read_external_storage_message" : "允许手机存储权限读写相册,用于用户分享下载照片保存运行状态信息",
"dcloud_permission_read_phone_state_message" : "获取设备Id,用于推送消息、统计访问信息",
"dcloud_choose_an_action" : "请选择"
}
}
},
2022-04-30 20:08
8***@qq.com

8***@qq.com

ios -> infoPlist 自定义uni原生插件不生效,已重新打包测试,安卓是生效的
2022-03-24 20:31
冷月i

冷月i

图片选择器 full image 希望处理一下~
2022-01-21 18:45