PO 文件翻译器(中文版)
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_00c9b356/chenlin-po-translator-zh。
技能介绍
要解决的问题
gettext 的 .po 文件同时承载两样东西:待翻译的源文本,和程序运行时依赖的骨架。msgctxt、flags 决定条目如何被解析,%s、%1$s、{name} 这些占位符会被代码在运行时填充。翻译时一旦动了它们,轻则界面直接显示成 %s,重则抛出 IndexError 崩在用户面前。传统做法是给模型套一层 XML 批处理索引、把文件切成小块省 token,代价是切片边界一旦落到多行字符串中间,条目就废了。这个技能反其道而行:整份 .po 直接读进去,不做索引。
核心能力
- 只动译文:产出
msgstr,msgid、msgctxt、注释与flags一律原样保留。 - 占位符校验:译完逐条核对两侧占位符的种类与数量必须一致,对不上就停下该条并回显差异。
- 术语表硬约束:给定术语表时,表内译法优先级高于自由翻译,同一概念全文统一。
- 上下文消歧:用
msgctxt区分同名不同义的词条。 fuzzy保守处理:保留#, fuzzy标记不静默删除,仅在用户明确要求时移除。- 条目不增不减:不合并、不拆分、不省略。
关键步骤
- 识别输入:贴入文本直接解析,给路径就用 Read 读入。
- 加载术语表(如有)。
- 逐条翻译,遇
msgctxt消歧,遇fuzzy走保守路由。 - 占位符校验。
- 输出完整
.po文本,用户要求写回时用 Edit/Write 落盘。
中文 UI 的本地化差异
- 简洁优先:按钮和菜单常用 2–4 字,不用「请对文件进行保存」这类啰嗦译法。
- 标点本地化:用全角标点,但菜单项和按钮末尾通常不加句号,标题与提示句才加。
- 语气中性友好:
Cannot→ 「无法」而非「不能」,Failed to→ 「未能」而非「失败于」。 %s周围去空格:与英文源最大的差异点,也是机器翻译最常翻车处。File %s saved→文件%s已保存,去掉空格但保留%s本身。
适用边界
- 只做
.po翻译,写代码、改架构、跑测试这类越界请求会被礼貌拒绝。 - 默认目标语言为中文,仅在本轮明确指定时切换。
- 非 UTF-8 或出现乱码的文件不强行翻译,先请求确认编码。
- 超过 200 条的大文件分批处理,单批失败只重跑该批,单条异常标记
fuzzy后继续。
使用场景
- 接手英文开源项目,需要把 .po 里所有空的 msgstr 补成中文
- 上游仓库新增一批英文字符串,要为 .po 新条目补上中文译文
- 同一词条 Open 在菜单和正文中含义不同,需按 msgctxt 分别确定译法
- 团队提供统一术语表,要求全文中同一术语必须使用表内指定译法
适合人员
- 独立开源开发者,需要给自己的工具补上中文本地化
- 维护多语言 CLI 或桌面工具的开发者,定期处理 .po 新增条目
- 本地化团队翻译工程师,需要守住术语一致性与占位符安全