app名称显示“中文版”“english”等后缀是uni-app构建时自动拼接语言名所致,需在构建前删除locale文件中"name"字段、确保manifest.json的name为纯字符串并禁用插件自动生成逻辑。

App名称在iOS/Android上显示“中文版”“English”等后缀
这是 uni-app 默认行为:打包时会自动把 locale 对应的语言名(如 zh-Hans → “简体中文”,en-US → “English”)拼接到 App 名称后面,仅出现在原生启动屏和系统应用列表中。它和你的页面翻译无关,也不影响 $t() 或 i18n 实例。
uni.setLocale 不是控制这个后缀的开关
调用 uni.setLocale('en-US') 不会移除后缀,反而可能触发 Android 重启、iOS 静默失败——它只写 native 层 locale 标识,对 App 名称渲染无任何控制权。这个后缀由 uni-app 构建时读取 locale/ 目录下语言文件的 name 字段或内置映射决定,运行时无法动态修改。
真正有效的三步操作
要去掉后缀,必须在构建前干预:
- 删掉或注释掉
locale/目录下所有 JSON 文件里的"name"字段(例如{"name": "简体中文", "common": {...}}→ 改成{"common": {...}}) - 确认
manifest.json中的name字段是纯字符串,不带占位符(如"name": "我的应用",而非"name": "%app.name%") - 如果用了条件编译或插件自动生成多语言包,检查其输出逻辑是否往
name写了值;有则关闭该功能
改完重新打包,后缀就消失了。注意:这不会影响任何运行时翻译功能,$t('button.submit') 照常工作。
为什么 H5 和小程序没这问题
因为它们没有原生应用名概念,manifest.json 的 name 只用于桌面 PWA 或小程序展示,不参与构建时拼接。App 端独有此行为,本质是 5+ Runtime 在生成 native 启动信息时的默认 fallback 逻辑——当找不到显式配置的 App 名称时,就拿语言名补位。











