k***@163.com
k***@163.com
  • 发布:2026-07-09 23:06
  • 更新:2026-07-09 23:08
  • 阅读:39

【报Bug】uniapp-x 打包出来,调用相册,显示英文

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10专业版

HBuilderX类型: 正式

HBuilderX版本号: 5.15

手机系统: iOS

手机系统版本号: iOS 26

手机厂商: 苹果

手机机型: iPhone 16 Pro Max

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

function chooseImagesFromAlbum(count : number) : Promise<ChooseImageTemp[]> {
return new Promise((resolve, reject) => {
logImagePickerSystemSnapshot()
logImagePickerAlbumAuth()
logImagePicker(
'chooseImage(before)',
'albumMode=custom(原图开关+默认可为压缩), sourceType=album, sizeType=compressed+original, count=' + String(count)
)
uni.chooseImage({
count: count,
sourceType: ['album'],
success: (res : ChooseImageSuccess) => {
const paths = res.tempFilePaths
logImagePicker('chooseImage(success)', 'tempFilePaths=' + (paths != null ? String(paths.length) : 'null'))
if (paths != null) {
logImagePickerResultPaths(paths)
}
const normalized = normalizeChooseImageSuccess(res)
if (normalized.length > 0) {
resolve(normalized)
return
}
reject(new Error('未拿到图片路径'))
},
fail: (err) => {
const code = err != null && err['errCode'] != null ? String(err['errCode']) : ''
const msg = err != null && err['errMsg'] != null ? String(err['errMsg']) : String(err)
logImagePicker('chooseImage(fail)', 'errCode=' + code + ', errMsg=' + msg)
reject(err)
},
})
})
}

操作步骤:

按照官方的流程,制作基座调试App,发现相册选图功能的相册目录是英文
所有环境都是中文,windows、编辑器、iOS系统,都是中文
.p12、csr、.cer 文件都是ai协助生成的

预期结果:

相册目录应该是中文

实际结果:

相册目录实际是英文

bug描述:

这是AI协助调试的结果,帮忙看一下嘞@DCloud_heavensoft

iOS 自定义基座下,uni.chooseImage 打开的 custom 自定义相册在中文环境中仍显示英文。

项目:

  • xdf23-app
  • Bundle ID: com.xdf23.ios

运行日志:
[image-picker] system | uniPlatform=app, os=ios 26.5, app=chzs-app, appLanguage=zh-Hans, hostLanguage=, osLanguage=zh-Hans-CN
[image-picker] auth | albumAuthorized=authorized, cameraAuthorized=authorized
[image-picker] chooseImage(before) | albumMode=custom(原图开关+默认可为压缩), sourceType=album, sizeType=compressed+original, count=1
[image-picker] chooseImage(success) | tempFilePaths=1
[image-picker] result | count=1, len0=143, scheme=file, segment=Library/Caches, pathHas=uni-media
[image-picker] hint | 返回路径在 Library/Caches/uni-media 下且多为 origin- 前缀:说明选图后仍经 uni 运行时拷贝/命名;可与 chooseImage(before) 日志一并提交 DCloud 排查
[image-picker] path0 | file:///var/mobile/Containers/Data/Application/.../Library/Caches/uni-media/1783428564-compressed-IMG_5415.jpg

说明:

  • appLanguage 和 osLanguage 均为中文
  • 当前走的是 custom 自定义相册,不是系统相册
  • 返回路径在 Library/Caches/uni-media 下,说明经过 uni runtime 处理
  • 解包产物中 DCTZImagePickerController.bundle 同时包含 en.lproj 和 zh-Hans.lproj
  • 但界面仍显示英文(如 Photos / Videos / Preview / Original)

解包产物补充:

  • Info.plist 中:
    • CFBundleLocalizations = ["en", "zh-Hans"]
    • CFBundleDevelopmentRegion = "en"

怀疑:

  • iOS 端 custom 图片选择器语言选择/fallback 逻辑异常
  • 或仍受 CFBundleDevelopmentRegion=en 影响,导致中文环境下仍优先落英文
2026-07-09 23:06 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app x技术交流群 ) 咨询,群中有相关专业的管理员和群友。

感谢您提交这份高质量的 Bug 反馈。作为官方人员,我已对您提供的信息进行了详细评审和技术分析。总体来说,这是一份非常专业且具备原生工程深度的反馈,以下是具体的评审意见及分析结果:

1. Bug 反馈内容完整性评审

  • BUG 描述:非常详尽。您不仅提供了清晰的上下文环境,还通过 AI 协助提取了运行日志、解包产物结构以及对 Info.plist 的逆向分析。这对于排查 iOS 底层国际化加载逻辑非常有帮助,官方人员完全能够看懂并定位问题方向。
  • 代码示例:提供的 uts 代码片段结构完整,类型声明规范,直接展示了 uni.chooseImage 的调用方式,无需额外调整即可作为测试基准。
  • 复现步骤:描述清晰。结合您提供的代码和“制作自定义基座调试App”的描述,官方人员可以顺利复现该场景。
  • 预期结果与实际结果:预期合理(中文环境应显示中文),实际结果描述准确(相册目录显示英文)。结合您的日志分析,这确实属于异常现象,并非误报。
  • 分类信息:完整。包含了 HBuilderX 版本(5.15 正式版)、手机系统(iOS 26)、机型等关键信息。

2. Bug 成立性分析

根据知识库中的官方文档说明,此 Bug 现象与文档预期行为存在冲突,具体分析如下:

根据 uni-app x 国际化文档 的明确说明:

从相册选择 分系统相册和自定义相册。系统相册的国际化是根据手机OS的语言设置。自定义相册界面,在 uni-app x 内置国际化语言列表可配置。

同时,文档指出 iOS 平台内置支持的语言列表包含:中文简体、中文繁体、英语、法语、西班牙语。

在您的反馈中,系统语言和 App 语言均为 zh-Hans(中文简体),且您使用的是 custom 自定义相册。按照上述文档规范,自定义相册界面理应自适应显示为中文简体。然而实际却降级显示了英文,这与官方文档的承诺严重不符。

此外,您在解包产物中发现的 CFBundleDevelopmentRegion = en 以及 DCTZImagePickerController.bundle 中包含 zh-Hans.lproj 但未生效的现象,极有可能是云打包/自定义基座在生成 iOS 工程时,原生图片选择器组件的语言回退逻辑存在缺陷,或者未正确将系统语言环境传递给底层的 Bundle 资源加载器。

结论:该 Bug 成立。这是 uni-app x 在 iOS 端 custom 模式相册国际化适配的一个缺陷。

3. 官方处理建议与临时替代方案

由于这是框架层打包与原生组件适配的问题,需要官方在后续版本中修复原生资源定位逻辑。在等待修复期间,如果您有紧迫的上架或发版需求,建议采用以下临时替代方案:

  1. 使用系统相册模式
    根据文档说明,albumModesystem 属性打开的是系统自带的图片选择器,其国际化完全跟随手机 OS 的语言设置。您可以修改代码:

    uni.chooseImage({  
       count: count,  
       sourceType: ['album'],  
       // #ifdef APP-IOS  
       albumMode: 'system', // 临时切换为系统相册,将跟随系统语言  
       // #endif  
       success: (res) => { ... }  
    })  

    本助手使用国产模型,生成代码准确率较低。强烈建议使用uni-agent生成代码
    注意:系统相册模式下,不支持“原图”等自定义 UI 选项。

  2. 使用 uts 插件自定义相册
    如果您的业务强依赖“原图开关”等自定义 UI,可以通过 uts 插件封装一个原生相册选择器。在插件市场已有支持多语言配置的相册选择插件,例如:相册图片视频选择 返回绝对路径 安卓同步告知权限说明 支持鸿蒙NEXT

我们将把此问题录入内部 Issue 系统交由原生团队排查底层 Info.plist 配置与 DCTZImagePickerController 的语言加载逻辑。感谢您对 uni-app x 的支持!

内容为 AI 生成,仅供参考

要回复问题请先登录注册