uni-app国际化中文系统下启动图和IOS权限弹窗中英混杂问题
uni-app国际化中文系统下启动图和IOS权限弹窗中英混杂问题
信息类别 | 详细信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC版本号 | windows10 |
HBuilderX | 正式 |
HBuilderX版本 | 3.96 |
手机系统 | iOS |
手机版本号 | iOS 16 |
手机厂商 | 苹果 |
手机机型 | iphone Xs Max |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码:
多语言相关的代码和配置都是按照官方文档来的。见截图。
操作步骤:
跟应用代码无关
预期结果:
如果manifest默认语言=跟随系统,回退语言=en,框架组件显示内容应该与手机os语言保持一致,不应该出现多语言混杂。
实际结果:
启动图和框架提示语都应该跟OS语言一致
bug描述:
IOS语言=en,一切正常。框架组件提示语和启动图都是英文。
IOS语言=中文,出现异常。启动图的app名字是英文,IOS用户跟踪和相册读取权限NSUserTrackingUsageDescription和NSPhotoLibraryUsageDescription的提示语是中英混杂。其它框架弹窗提示都正确显示了中文。
尝试过几种manifest设置组合,但同样问题。
默认语言=跟随系统;回退语言=en
默认语言=回退语言(全部是en,或者全部是zh-Hans)
是不是设置了manifest.json 的国际化英文
没太明白您的问题。app是支持国际化的,包括了英文、中文简体和中文繁体。manifest的配置就是按照官方文档来的,选的是
“locale”: “auto”
“fallbackLocale”: “en”
目前测试,如果手机的os语言=en,那么启动图片(含APP名字)和框架组件提示语都是英文;如果手机的os语言改成中文,那么启动图片的app名字还是英文,框架组件的提示语是中英混杂(如我上传的截图)
{ “name” : “%app.name%”, “appid” : “”, “description” : “”, “versionName” : “1.0.0”, “versionCode” : “100”, “locale”: “zh-Hans” // 设置默认语言, } manifest.json里可以设置国际化
“locale”: “auto” “fallbackLocale”: “en”
你的这个设置,是uniapp x的,你是uniappx还是uniapp 啊
uniapp,不是uniapp x。
manifest设置是按照官方的国际化文档设置的(在manifest图形化界面勾选的,没有手工修改源码视图)。
“locale”: “auto”
“fallbackLocale”: “en”
目前问题是:手机OS语言设置英文,就全部显示英文。如果手机OS语言设置中文简体,部分框架组件(比如启动图中的app名字、NSUserTrackingUsageDescription权限弹窗(标题是中文,副标题是英文)。
启动图和框架权限弹窗的中英文混杂问题,能否烦请官方回复一下可能的原因?
app名字、权限字符串都已经在manifest里面按照官方文档设置并检查确认了多次,仍然有这个问题。
目前是英文状态下都正常,中文状态下出现中英混杂(只发现了启动图和NSUserTrackingUsageDescription权限弹窗有这个问题)。
比较急,谢谢帮助!
能否请官方、或者成功上线过IOS英文版的同学提供一下帮助和经验分享,如何解决中文状态下启动图splash和IOS NSUserTrackingUsageDescription弹窗提示语都是中英混杂的问题?
大佬解决了吗?我这边也出类看下似的情况。帮忙看下:https://ask.dcloud.net.cn/question/190343
你好,可以尝试 配置完应用的语言后, 需要重新提交打包自定义基座
反馈的bug是新版hbuilderx已经修复了?还是不确定,只是让重新试试?
你好,请问 IOS权限弹窗中英混杂 这个问题解决了吗
在 uni-app
中,国际化(i18n)是一个常见的需求,尤其是在多语言环境下。如果你在中文系统下遇到启动图和 iOS 权限弹窗中英混杂的问题,可能是由于以下原因导致的:
1. 启动图问题
启动图通常是在 manifest.json
中配置的,默认情况下,启动图是静态图片,无法根据语言动态切换。如果你希望根据语言显示不同的启动图,可以通过以下方式解决:
解决方案:
- 动态设置启动图:在
App.vue
的onLaunch
生命周期中,根据当前语言动态设置启动图。你可以使用uni.setNavigationBarTitle
或其他相关 API 来动态设置启动图。
onLaunch: function() {
const lang = uni.getSystemInfoSync().language;
if (lang === 'zh-Hans') {
// 设置中文启动图
uni.setNavigationBarTitle({
title: '中文启动图'
});
} else {
// 设置英文启动图
uni.setNavigationBarTitle({
title: 'English Splash Screen'
});
}
}
- 使用多套启动图:在
manifest.json
中配置多套启动图,根据语言动态选择。
{
"app-plus": {
"splashscreen": {
"autoclose": true,
"waiting": true,
"images": {
"zh-Hans": "/static/splash-zh.png",
"en": "/static/splash-en.png"
}
}
}
}
2. iOS 权限弹窗中英混杂问题
iOS 权限弹窗的内容通常是由系统根据应用的 Info.plist
文件中的描述信息生成的。如果出现中英混杂的情况,可能是由于 Info.plist
中的描述信息没有正确配置。
解决方案:
- 配置
Info.plist
文件:在manifest.json
中配置plus
节点的iOS
权限描述信息,确保使用正确的语言。
{
"plus": {
"iOS": {
"infoPlist": {
"NSPhotoLibraryUsageDescription": "请允许访问相册以保存图片",
"NSCameraUsageDescription": "请允许访问相机以拍摄照片",
"NSMicrophoneUsageDescription": "请允许访问麦克风以录制音频"
}
}
}
}
- 使用多语言配置:如果你需要支持多语言,可以在
Info.plist
中使用多语言配置。uni-app
支持在manifest.json
中配置多语言描述信息。
{
"plus": {
"iOS": {
"infoPlist": {
"NSPhotoLibraryUsageDescription": {
"zh-Hans": "请允许访问相册以保存图片",
"en": "Please allow access to the photo library to save pictures"
},
"NSCameraUsageDescription": {
"zh-Hans": "请允许访问相机以拍摄照片",
"en": "Please allow access to the camera to take photos"
},
"NSMicrophoneUsageDescription": {
"zh-Hans": "请允许访问麦克风以录制音频",
"en": "Please allow access to the microphone to record audio"
}
}
}
}
}
3. 检查语言设置
确保你的应用正确获取了系统语言,并根据语言动态切换内容。你可以使用 uni.getSystemInfoSync().language
来获取系统语言。
const lang = uni.getSystemInfoSync().language;
if (lang === 'zh-Hans') {
// 中文逻辑
} else {
// 英文逻辑
}
4. 使用 uni-i18n
插件
uni-app
提供了 uni-i18n
插件,可以帮助你更好地管理多语言资源。你可以通过 uni-i18n
插件来动态切换语言,并确保所有 UI 元素都根据当前语言显示。
import Vue from 'vue';
import VueI18n from 'vue-i18n';
import en from './lang/en.json';
import zh from './lang/zh.json';
Vue.use(VueI18n);
const i18n = new VueI18n({
locale: uni.getSystemInfoSync().language, // 设置默认语言
messages: {
en,
zh
}
});
export default i18n;