asc-localize-metadata

asc-localize-metadata

热门

结合 LLM 翻译与 asc CLI,自动将 App Store 元数据(应用描述、关键词、新功能文本、副标题等)翻译并同步至多语言版本。适用于需要对 App 的 App Store 商店页面进行本地化、翻译应用描述或向 App Store Connect 添加新语言语系的场景。

946Star
50Fork
更新于 2026/7/31
SKILL.md
只读
名称
asc-localize-metadata
描述

结合 LLM 翻译与 asc CLI,自动将 App Store 元数据(应用描述、关键词、新功能文本、副标题等)翻译并同步至多语言版本。适用于需要对 App 的 App Store 商店页面进行本地化、翻译应用描述或向 App Store Connect 添加新语言语系的场景。

asc localize metadata

使用此 Skill 提取英语(或任何源语言)的 App Store 元数据,通过 LLM 自动翻译,并将译文同步回 App Store Connect — 全流程自动化。

命令探索与输出规范

  • 执行命令前,始终先使用 --help 确认具体 asc 版本的参数选项:
    • asc localizations --help
    • asc localizations download --help
    • asc localizations upload --help
    • asc apps info edit --help
  • 优先使用显式的长参数(--app--version--version-id--type--app-info)。
  • 默认输出格式为 JSON;仅在人工核对步骤中使用 --output table
  • 推荐使用确定性的 ID 进行操作。除非用户明确同意,否则不要通过 head -1 盲选第一行。

前置条件

  • 已配置身份认证(通过 asc auth login 命令或设置 ASC_* 环境变量)
  • 掌握你的 App ID(可通过 asc apps list 查询)
  • App Store Connect 中至少包含一个已填好元数据的源语种(通常为 en-US)

支持的语言区域 (Locales)

App Store Connect 支持版本本地化与 App 信息本地化的语言列表:

ar-SA, ca, cs, da, de-DE, el, en-AU, en-CA, en-GB, en-US,
es-ES, es-MX, fi, fr-CA, fr-FR, he, hi, hr, hu, id, it,
ja, ko, ms, nl-NL, no, pl, pt-BR, pt-PT, ro, ru, sk,
sv, th, tr, uk, vi, zh-Hans, zh-Hant

两类元数据说明

1. 版本本地化字段(Version Localizations,随每个版本更新)

字段包含:description(应用描述)、keywords(关键词)、whatsNew(新功能)、supportUrl(支持网址)、marketingUrl(营销网址)、promotionalText(宣传文本)

2. App 信息本地化字段(App Info Localizations,App 级别,持久生效)

字段包含:name(应用名称)、subtitle(副标题)、privacyPolicyUrl(隐私政策网址)、privacyChoicesUrl(隐私选择网址)、privacyPolicyText(隐私政策文本)

操作工作流

第一步:获取与确认相关 ID

# 查询 App ID
asc apps list --output table

# 查询最新版本 ID
asc versions list --app "APP_ID" --state READY_FOR_DISTRIBUTION --output table
# 或查询可编辑版本的 ID:
asc versions list --app "APP_ID" --state PREPARE_FOR_SUBMISSION --output table

# 查询 App Info ID(适用于应用名称/副标题等 App 级别的字段)
asc apps info list --app "APP_ID" --output table

注意事项:

  • 版本本地化字段(应用描述、关键词、新功能等)是基于具体版本的。
  • App 信息字段(应用名称、副标题、隐私政策网址/文本)是 App 级别的,使用时需要传入 --type app-info
  • 如果手中只有名称(App 名称、版本号),需要精确匹配获取 ID 时,可使用 asc-id-resolver Skill。

第二步:下载源语言文本

# 将版本本地化文本下载为本地的 .strings 文件
# (包括 description, keywords, whatsNew, promotionalText, supportUrl, marketingUrl 等)
asc localizations download --version "VERSION_ID" --path "./localizations"

# 将 App 信息本地化文本下载为本地的 .strings 文件
# (包括 name, subtitle, privacyPolicyUrl, privacyChoicesUrl, privacyPolicyText 等)
asc localizations download --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"

运行后会生成如 ./localizations/en-US.strings./app-info-localizations/en-US.strings 文件。如果下载不可用,可以单独读取各个字段:

# 列出版本本地化信息,查看现有的语种及对应内容
asc localizations list --version "VERSION_ID" --output table

第三步:使用 LLM 进行翻译

根据以下规范,将源文本翻译为各个目标语言:

翻译指导原则
  • 语气与语体:务必使用正式、礼貌的措辞。若目标语言区分敬称与平称,必须统一使用敬称(如俄语:«вы»、德语:«Sie»、法语:«vous»、西班牙语:«usted»、荷兰语:«u»、意大利语:«Lei»、葡萄牙语正式 «você» 等)。App Store 应用描述属于专业文案,严禁使用非正式或口语化的表达。
  • description(应用描述):翻译自然流畅,结合当地市场习惯微调语气。保留原有的排版格式(换行、列表符号、Emoji 等)。字数控制在 4000 字符以内。
  • keywords(关键词)切勿字面硬译。须研究目标语言用户的真实搜索习惯。多个关键词用逗号隔开,总长不超过 100 字符。避免重复,且不要包含 App 本身名称(苹果会自动合并)。
  • whatsNew(新功能):翻译更新日志。保持简洁明了。不超过 4000 字符。
  • promotionalText(宣传文本):翻译营销卖点/吸睛文案。不超过 170 字符。该字段无需提交新版本即可随时更新。
  • subtitle(副标题):翻译或地道改编一句话卖点。限制 30 字符以内 — 空间非常吃紧,可能需要意译或二次创作。
  • name(应用名称):通常保留原 App 名称。仅在用户明确要求翻译时才进行翻译。限制 30 字符以内。
LLM 翻译 Prompt 模板

对每个目标语种,使用以下提示词方案:

Translate the following App Store metadata from {source_locale} to {target_locale}.

Rules:
- description: Natural, fluent translation. Preserve formatting (line breaks, bullets, emoji). Max 4000 chars.
- keywords: Do NOT literally translate. Choose keywords native speakers would search for in the App Store. Comma-separated, max 100 chars total. Do not include the app name.
- whatsNew: Translate release notes naturally. Max 4000 chars.
- promotionalText: Translate marketing tagline. Max 170 chars.
- subtitle: Adapt tagline creatively to fit 30 chars max.
- name: Keep the original app name unless explicitly requested to translate it. Max 30 chars.
- Use formal, polite language and formal "you" forms (Russian: вы, German: Sie, French: vous, Spanish: usted, Dutch: u, etc.). App Store copy is professional marketing — never use informal register.
- Respect cultural context. A playful tone in English may need adjustment for formal markets (e.g., ja, de-DE).

Source ({source_locale}):
description: """
{description}
"""

keywords: {keywords}

whatsNew: """
{whatsNew}
"""

promotionalText: {promotionalText}

name: {name}

subtitle: {subtitle}

第四步:上传翻译内容

方案 A:通过 .strings 文件批量上传(推荐)

在对应的目录下为每个目标语种新建 .strings 文件。

版本本地化示例:

// nl-NL.strings
"description" = "Je app-beschrijving hier";
"keywords" = "wiskunde,kinderen,tafels,leren";
"whatsNew" = "Bugfixes en verbeteringen";
"promotionalText" = "Leer de tafels van vermenigvuldiging!";

然后上传版本本地化内容:

asc localizations upload --version "VERSION_ID" --path "./localizations"

App 信息本地化示例:

// nl-NL.strings
"subtitle" = "Leer tafels spelenderwijs";

然后上传 App 信息本地化内容:

asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"
方案 B:通过单条命令逐项更新(精细控制)
# 版本本地化字段(精细控制模式)。
# 建议显式传入 version ID 以确保准确性。
asc apps info edit --app "APP_ID" --version-id "VERSION_ID" --locale "nl-NL" \
  --description "Je beschrijving..." \
  --keywords "wiskunde,kinderen,tafels" \
  --whats-new "Bugfixes en verbeteringen"

针对 App 级别的字段:

# 副标题与应用名称(App 信息本地化)通过 app-info 本地化功能管理。
# 请使用修改 app-info 本地化 .strings 文件并上传的流程,因为不存在直接按命令行修改 app-infos 本地化的子命令。
#
# 1) 编辑文件:./app-info-localizations/nl-NL.strings
# "subtitle" = "Leer tafels spelenderwijs";
#
# 2) 执行上传:
asc localizations upload --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --path "./app-info-localizations"

第五步:核对与验证

# 检查是否所有语种均已正确添加
asc localizations list --version "VERSION_ID" --output table

# 检查 App 信息本地化状态
asc localizations list --app "APP_ID" --type app-info --app-info "APP_INFO_ID" --output table

字符数限制(上传前必须校验!)

字段 字符数上限
应用名称 (Name) 30
副标题 (Subtitle) 30
关键词 (Keywords) 100(用逗号分隔)
应用描述 (Description) 4000
新功能 (What's New) 4000
宣传文本 (Promotional Text) 170

在上传前务必校验翻译后的文本是否超限。文本在 App Store 显示时被硬截断会严重影响专业度。如果译文超长,请进行针对性精简缩写,千万不要在句中直接截断。

完整示例:为 Roxy Math 添加荷兰语 (nl-NL) 和俄语 (ru)

# 1) 精确解析并获取 ID(不要自动截取第一行数据)
# 如果手中只有应用名称,可以使用 asc-id-resolver Skill。
asc apps list --output table
APP_ID="APP_ID_HERE"

asc versions list --app "$APP_ID" --state PREPARE_FOR_SUBMISSION --output table
VERSION_ID="VERSION_ID_HERE"

asc apps info list --app "$APP_ID" --output table
APP_INFO_ID="APP_INFO_ID_HERE"

# 2) 下载英语源文本(或指定的其它源语种文本)
asc localizations download --version "$VERSION_ID" --path "./localizations"
asc localizations download --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --path "./app-info-localizations"

# 3) 读取 en-US.strings,并调用 LLM 翻译为 nl-NL 和 ru

# 4) 将 nl-NL.strings 和 ru.strings 分别写入以下路径:
#    - ./localizations/ (版本本地化字段)
#    - ./app-info-localizations/ (副标题/应用名称/隐私政策等字段)

# 5) 批量上传全部本地化文件
asc localizations upload --version "$VERSION_ID" --path "./localizations"
asc localizations upload --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --path "./app-info-localizations"

# 6) 验证上传结果
asc localizations list --version "$VERSION_ID" --output table
asc localizations list --app "$APP_ID" --type app-info --app-info "$APP_INFO_ID" --output table

Agent 执行规范

  1. 始终从读取源语言文本开始 — 绝不要凭记忆或主观猜测直接翻译。
  2. 先检查现有本地化内容 — 除非用户要求更新现有的翻译,否则不要直接覆盖已有语种。
  3. 区分版本本地化与 App 信息本地化 — 版本字段附属于 --version "VERSION_ID";而副标题/应用名称/隐私政策归属于 --app ... --type app-info
  4. 优先使用确定性 ID — 除非用户显式要求,否则不要通过 head -1 选取 ID;应使用 --output table 供交互选择或借助 asc-id-resolver
  5. 上传前严格校验字符长度 — 统计每个字段的字符数。若超出上限,必须重新润色缩写。
  6. 关键词须特殊处理 — 严禁逐字直译。需调研符合当地语境与搜索习惯的关键词。站在当地用户在 App Store 搜软件的角度思考。
  7. 上传前先展示译文供确认 — 汇总所有“字段 × 语种”的翻译对照表提交给用户审核。未经用户确认切勿直接推送。
  8. 多语种翻译时建议逐个处理 — 这样更方便复核并及时发现问题。
  9. 若某语种上传失败 — 记录错误信息,继续处理其它语种,并在最后汇总展示失败详情。
  10. 更新已有本地化内容时 — 先下载当前版本,展示修改后的 Diff 差异,取得授权后再执行上传。

补充说明

  • 版本本地化字段与具体版本绑定。如果版本不存在,请先创建版本。
  • promotionalText 支持随时更新,无需提交新版本。
  • whatsNew 仅适用于版本更新,首次上架的版本无需填写。
  • 手中只有 App/版本名称而无 ID 时,请搭配使用 asc-id-resolver Skill。
  • 涉及非翻译类的元数据同步操作,请使用 asc-metadata-sync Skill。
  • 如需本地化订阅或内购 (IAP) 的显示名称,请使用 asc-subscription-localization Skill。