英文版顺利过审,日文版却被拒,审核员说日文副标题里写了主语言版本里没有的承诺;或者你的西班牙语截图展示的是三个版本前就移除的功能,因为本地化团队拿不到最新设计稿;或者某些 locale 直接显示英文,因为翻译从来没确认过。App Store Connect 把每个 locale 当独立上架来审,所以单独一个翻译串出问题,就能把整个版本卡在 Rejected。
最快的修法:最常见的拒因是某个 locale 的副标题或描述里加了主语言从没写过的营销承诺(下面的 #1)。找到那个 locale,把字段改成对主语言的忠实翻译,重新提交即可。只要没动 binary,这就是一次 metadata-only 重交——不重打 build,也不用排 build 处理队列。
Apple 把这类问题归在 App Review Guideline 2.3.7(metadata 必须准确反映 App,不得含无关或误导性承诺)下。别和 2.3.8 搞混:2.3.8 说的是 metadata 要适合 4+ 受众(图标、截图、预览),那是另一种拒回。截至 2026 年 6 月,本地化已被当成信任问题而不仅是 ASO 手段——哪怕主语言完全干净,一个过期的翻译承诺也能引发好几轮来回。
修复分两步:一是审计(找出每一个偏离主语言的 locale),二是流程改造(停止让本地化”另起一条线”)。
你属于哪一类
| 拒回 / 上架页里的症状 | 最可能的原因 | 要重打 build 吗 |
|---|---|---|
| 审核员引用了某 locale 里、主语言没有的承诺 | #1 多加了承诺 | 不用(只改 metadata) |
| 截图展示老 UI / 已移除的功能 | #2 截图过期 | 不用 |
| 某 locale 页面显示英文 | #3 locale 没翻译 | 不用 |
| Custom Product Page 和主 locale 页矛盾 | #4 CPP 重叠 | 不用 |
| 关键词字段含英文 token 或竞品名 | #5 关键词字段 | 不用 |
| 设备设成该 locale 时 App 回退英文 | #6 App 内字符串缺失 | 要(新 build) |
常见原因
按命中率排序,#1 最常见。
1. 本地化标题 / 副标题为抢 ASO 加了新承诺
营销或地区团队为日区 ASO 在日文副标题加了 “#1 AI productivity app” 或 “with built-in voice assistant”。主语言从没这么写过。地区审核员一看 App 给他这地区不提供这能力,标记拒回。
如何判断:name 和 subtitle 在 App Store Connect → (你的 App) → App Information(跨版本共享);description、keywords、promotional text、“What’s New” 则在左侧边栏里那个具体版本的页面下(比如 1.0 Prepare for Submission 或正在审的版本)。在每处切换语言弹窗到每一个支持的 locale,把字段抄进一张表。逐行和主语言 diff。任何只在某个 locale 出现的名词、动词、数字承诺都标记。
2. 本地化截图展示老 UI 或不存在的功能
本地化团队半年前拿到截图模板,换上文字层就出货了。底图还停在 build 1.4 你现在已经 2.7。按钮位移、功能下线、深色模式变化——只在本地化上架页才能看到。
如何判断:从 App Store Connect 把每个 locale 的截图全下载下来(右键保存)。exiftool 看时间戳或者目视和你最新开发 build 的截图对比。任何”看起来比当前 build 老”的就是过期。
3. Locale 加了但本地化字段从没复核
你在 App Store Connect 里开了法语分发,但本地化标题还是主语言英文,因为没人填。审核员看到法区 App Store 页显示英文,标记为低质量上架。
如何判断:每个 locale 看 title 和 description 是否和主语言一字不差。是的话要么是没翻译要么是字段没覆盖。
4. Custom Product Pages / Variant Pages 和 locale 重叠
你为德区某广告活动建了 Custom Product Page,但页面截图还用美区文字。德区用户落到一个”自定义”页,视觉上和主上架页矛盾。
如何判断:App Store Connect → Custom Product Pages → 看每个页面适用的 locale。在真机上用德区 storefront 打开它,和主德区上架页对比。
5. 关键词字段混 locale 或含被禁词
关键词字段按 locale 算,上限 100 字符(逗号分隔、词之间不要空格——空格白白浪费字符)。有的团队把英文关键词粘进日文字段,或用了某地区有商标但他地区没的竞品名。地区审核员逮个正着。
如何判断:在 App Store Connect → (你的 App) → Pricing and Availability 看你发往哪些 storefront;再打开版本页,逐 locale 看 Keywords 字段(关键词是按版本算的,不在 App Information 下)。某 locale 字段含没翻译的英文 token、竞品品牌名,或和 name / subtitle 重复的词,都有风险。
6. App 内 locale 和上架页 locale 对不上
你在 App Store 页列出支持法语,但 App 设成 fr-FR 时回退英文。审核员发现不匹配,标 2.3.7(Metadata Accuracy)。
如何判断:模拟器设成法语跑一次 App。任何用户可见的字符串还是英文,上架页就在 over-promise。
动手前先确认
- 确认拒回到底只针对某 locale 还是全部 locale,文案在 Resolution Center 里不同。
- 锁定主语言(多数情况是 English U.S.)作为 canonical,所有其他 locale 与它对齐。
- 决定是仅改 metadata 重交,还是需要重打 build(比如上架页承诺的法语字符串 App 里真没有)。
- 改之前把当前所有 locale 字段截图归档,App Store Connect 不保留历史版本。
需要收集的信息
- 审核员拒回原文 + 涉及的 locale。
- 一张所有 locale 字段的电子表:title / subtitle / description / keywords / promo / 截图。
- 主语言版本各字段作为 ground truth。
- 本地化截图原文件(从 App Store Connect 下载)。
- Custom Product Pages 和 Variant Pages 清单及它们适用的 locale。
最短修复路径
Step 1:建 locale 矩阵
用 App Store Connect API 或网页 UI 提取所有本地化字段:
# App Store Connect API:列出某版本的所有本地化
curl -H "Authorization: Bearer $JWT" \
"https://api.appstoreconnect.apple.com/v1/appStoreVersions/$VERSION_ID/appStoreVersionLocalizations" \
| jq '.data[] | {locale: .attributes.locale, description: .attributes.description, keywords: .attributes.keywords, promotionalText: .attributes.promotionalText, whatsNew: .attributes.whatsNew}'
版本级资源(appStoreVersionLocalizations)持有 description、keywords、promotionalText、whatsNew、marketingUrl、supportUrl。name 和 subtitle 在另一个 appInfoLocalizations 资源上,因为它们跨版本共享——需要的话一并查询。注意:API 没有批量更新接口,所以修复时每个 locale 都要单独 PATCH /v1/appStoreVersionLocalizations/$LOCALIZATION_ID。
把所有字段导出 CSV。每行一个 locale,列是 name / subtitle / description / keywords / promo。主语言是第 1 行。
Step 2:逐 locale 对照主语言 diff
按表走每个 cell,问自己:
- 含主语言没有的名词、动词、承诺?标删。
- 含主语言没有的数字承诺(“#1”、“Best of 2026”)?标删。
- 和主语言一字不差(没翻译)?标重译。
- 提到竞品品牌名?标删。
Step 3:从真实本地化 build 重截截图
Xcode 里把模拟器设成目标 locale(Edit Scheme → Run → Options → App Language),跑你的 build,重截规范化截图集。不要在主语言截图上 Photoshop 加文字——必须从真实本地化运行里截。
自动化:
# fastlane snapshot 多 locale Snapfile
fastlane snapshot --languages "ja-JP,fr-FR,es-ES,zh-Hans"
Step 4:回填每个 locale 的上架字段
在 App Store Connect 的版本页上,切换语言弹窗逐 locale 改,改完点 Save:
- 承诺集是主语言的”翻译”而不是”扩展”。
- 关键词字段用 locale 本土 token,无竞品名,也不要和 name / subtitle 重复(Apple 把 name + subtitle + keywords 当成一个合并索引)。
- 截图来自当前版本的真实本地化 build。
name 和 subtitle 在 App Information 下单独改,因为它们跨版本共享。
Step 5:核对 Custom Product Pages 和 Variant Pages
每个 Custom Product Page / Variant 都要按同一套 canonical 承诺集核截图和文字。Variant 是和主上架一起审的,不一致直接拒。
Step 6:重新提交(binary 没动就 metadata-only)
拒回只动了 locale 字段的话,不需要新 build。版本还在 rejected 状态时,你可以原地改 metadata,再点一次 Submit for Review(或 Add for Review 后提交)——App Store Connect 允许用同一个 build、改好 metadata 重交。在 Resolution Center 里补一句说明,写清你在哪些 locale 改了什么。只有当你必须补 App 内缺失的本地化字符串时(#6),才先 Archive 新 build,因为那改动了 binary。
怎么确认已经修好
- locale 矩阵审计走完后零标记。
- 每个 locale 的截图都在当前发版窗口内。
- 每个 locale 的母语者读上架页,确认描述准确。
- 触发拒回的 locale 重交后状态回到 Waiting for Review。
如果还是没修好
- 在 Resolution Center 回复时附上 locale 矩阵,展示被标承诺的 before/after。
- 让审核员澄清具体哪个词或哪屏被标——某些 2.3.7 拒回比较模糊。
- 在 Pricing and Availability 临时关闭问题 locale 让其余上架,修好再开。
- 某 locale 审核员持续标记主语言里也有的承诺时,通过 Apple Developer Relations 升级。
预防建议
- 把本地化纳入发布分支,不要并行做;要求 metadata 翻译完成才能合 PR。
- 用
fastlane deliver或 App Store Connect API 从仓库里的单一真源文件(app-store/metadata/<locale>.txt)推送本地化字段。 - 每个翻译都配一个截图复核员,跑真实本地化 build 而不只是看文字。
- 发布清单加一条:每个 locale 都要从当前 build 重截或重核截图。
- 别为了 SEO 在某地区加单独承诺,短期排名提升远抵不过审核反复的代价。
常见问题
修一个本地化拒回需要重打 build 吗? 通常不用。如果只是 App Store 上架页文字或截图不对(#1 到 #5),改完 metadata 用同一个 build 重交即可。只有 #6——App 本身缺它声称支持的 App 内本地化字符串——才需要新 build。
为什么只有一种语言被拒,其他都过了? App Store Connect 把每个 locale 当独立上架审。只在日文字段里出现的承诺、截图或关键词,对看英文页的审核员是隐形的,所以主语言可以完全干净,单个 locale 仍然栽在 2.3.7。
这到底是 2.3.7 还是 2.3.8? 翻译承诺偏离或不准是 2.3.7(metadata 准确性)。2.3.8 是另一种拒回,说的是 metadata 要适合 4+ 受众(图标、截图、预览)。看 Resolution Center 原文引用的是哪一条。
能不能直接删掉出问题的语言、先上线? 可以,作为权宜之计。在 Pricing and Availability 把该 locale 关掉,让其余上架页先上线,修好字段后再开回来。这是绕过去,不是修好。
metadata-only 重交多久能审完? 截至 2026 年 6 月,多数审核约一天内完成,纯 metadata 改动通常更快,因为没有 build 要处理。metadata 修复没有单独的快审通道;只有真正紧急时才申请 Expedited Review。
审核员标的承诺主语言英文里也有,怎么办? 这多半是审核员看走眼或承诺本身有歧义。在 Resolution Center 回复时附上 locale 矩阵,展示主语言里同样有这句承诺,问清具体哪个词或哪屏被标;若反复出现,通过 Apple Developer Relations / Contact Us 升级。