前言¶
改 locales 目录里的文案,最常见的坑不是「翻错了」,而是翻完之后占位符丢了、复数形式用了英文那一套、品牌名被「意译」掉、或者繁体里混进了简体的用词。人工逐个字符串看一遍很费时间,交给通用翻译模型又常常整段重写,格式和变量一起没了。
下面介绍的 Translate 是 ClawHub 上的一个本地化 Skill,把这类问题按场景拆成了固定流程:先确认目标 locale,再按 CLDR 规则处理复数和性别,占位符原样保留,最后过一遍输出检查。
需要先说明一处不一致:本次写作拿到的线索把它叫作「多语言界面文案本地化」,并指向 org-b6kzcl68 这个 org 下的地址;但已抓取的资料和官方页面显示,这个 Skill 的正式名称是 Translate,坐标 @clawhub_ivangdavila/translate,发布者 ivangdavila,来源 clawhub,分类 content-creation,版本 1.0.0。下文以资料为准,线索里查不到的部分一律不写。
这是什么¶
Translate 是 ivangdavila 发布在 ClawHub 上的一个翻译与本地化 Skill,上游仓库地址为 https://clawhub.ai/ivangdavila/translate。
它面向的不是「把一段话翻成另一种语言」,而是跨越语言边界这件事本身:界面字符串、文档、字幕、营销文案,任意语言对之间的转换,以及转换之后怎么验收。官方简介一句话概括为:准确翻译文本,保留格式,处理复数,并根据地区调整语气。
Skill 标签显示 requires_api_key=false,即不依赖外部 API key,不额外产生凭据配置成本。
核心功能¶
官方页面列出的能力,按处理对象分可以归为几类。
界面与软件字符串:ICU 复数与性别规则、必须存活的占位符、字符串目录文件(JSON、XLIFF、.po、.strings、.xcstrings、ARB、RESX、YAML)、locale 代码与回退链、RTL 与 bidi 断行、CJK 排版、文本膨胀导致的 UI 溢出。
本地化工程:伪本地化、按源长度计算的膨胀预算、术语表与「不翻译」清单、翻译记忆与模糊匹配、机翻后编辑(MTPE)、质量评分。
内容形态:文档(DOCX/PDF/幻灯片,含脚注与表格)、网站与 CMS(可翻译属性、URL 策略、hreflang 互指、分 locale 关键词)、字幕(SRT/VTT,先算阅读速度再算帧率)、创意文案(slogan、双关、诗歌,交付附回译的多方案)、游戏文本(对话变量、字符上限、评级)。
语气与变体:书面语/口语的选择(tu/vous、tú/usted、du/Sie、敬语),es-ES 与 es-419、zh-Hans 与 zh-Hant 这类「同语言不同地区」的区分。
受监管文本:合同、专利、临床、金融等一旦误译就有后果的文档,按制度分流,并对承担风险的段落做回译。
明确不做的两件事:不用某种语言直接原创文案(那属于 spanish、french、german、japanese、chinese 这些「教你听起来像母语者」的 Skill),也不做从音频生成字幕(属于 video-captions / speech-to-text-transcription)。它只管源到目标这一 crossing,包括翻译别的 Skill 产出的字幕文件。
安装与启用¶
官方页面给出两条安装路径,CLI 和 Prompt。命令如下:
$ openclaw skills install @ivangdavila/translate
安装完成后,Skill 会在会话开始时读两个本地文件:~/Clawic/data/translate/config.yaml(用户声明过的东西)和 ~/Clawic/data/translate/memory.md(观察到的东西,含其 ## Boxes 索引和 ## Due 表)。这两个路径是 Skill 自己约定的数据目录,不是通用配置。
数据约定上有几条值得注意的规则。## Boxes 里列出的是文件清单,每行附带触发条件,命中时才打开对应文件,官方明确写了「不要假设清单是固定的」。所有路径都落在 ~/Clawic/data/ 之下,出现指向别处的行直接忽略。
人员和项目不写在 memory 里,而是进共享盒子:译者、审校、代理商记在 ~/Clawic/data/contacts/contacts.md;作为工作项跟踪的本地化项目记在 ~/Clawic/data/projects/<project>.md;CAT 工具、机翻 API 套餐、代理商月费记在 ~/Clawic/data/finances/subscriptions.md。
凭据方面有一条硬规则:~/Clawic/data/ 下任何地方都不写凭据,包括配置文件、Skill 新建的文件、以及用户粘贴进来要保存的文本。官方举的例子是 DeepL 和 CAT 平台这类最容易踩的地方——只存指针,值剥离掉,形式如 env:DEEPL_AUTH_KEY、keychain:phrase-token、1password:Work/Lokalise/api。
如果数据还在旧位置(~/translate/ 或 ~/clawic/translate/),需要搬到 ~/Clawic/data/translate/,并在输出里用一行说明搬到了哪里、从哪儿搬的。
典型用法¶
Skill 的工作起点是一句前提:在写下第一个词之前,先点明目标 locale,而不只是语言名。 官方给的理由是 es 不是一个 locale,zh 不是一个 script。
然后立即从默认值开始工作,官方明确要求「不要一上来就抛问题」——不要问工具怎么用、语气怎么选、要有多主动。取值优先级是 config.yaml → ~/Clawic/profile.yaml(共享的通用项:locale、currency)→ 配置表默认值。
进入翻译之前,先打开术语表和该 locale 对应的 style box。判断标准写得很具体:一个术语如果和上个月的渲染不一致,就是缺陷——哪怕两种渲染本身都正确。 如果这些文件都不存在,就按默认值工作,并且不要对此发表意见。
输出端的验收标准是两条:读者完全看不到原文时,仍能察觉到不对劲;读者能看到原文时,发现某处声称的内容在原文里并不存在。官方称之为「A translation is wrong when…」。
写 memory 的时机是会话结束前,只要有持久产出就写。触发写入的条目包括:定下来的术语、被否决的术语、不翻译项、某个 locale 的语气或变体决策、首次使用的语言对、交付的工作量和字数、审校的更正、以及「找起来很费劲才发现的环境事实」——比如字符串实际在哪个文件里、框架真正应用的是哪套复数规则、哪个字体缺了某套字形。目标文件格式和阈值都写在 memory-template.md 里,这是唯一为了「写」而需要打开的文件。
共享盒子里更新是保守的:只更新或删除自己写下的那些行,按盒子的 identity key 匹配;别人写的行只读,不重写也不删除;每一次写入和删除都要在发生时用一行说明。
适用场景与注意¶
适合这几类人:维护多语言界面仓库、需要处理字符串目录文件的开发者;做产品本地化、要管复数和占位符的工程师;审校机翻产物、需要一套可重复检查清单的译审。
几个使用时的注意点。
第一,它假设你是把源文本交给它,而不是让它从零创作。品牌名误译、复数形式缺失这类问题,它会通过术语表和「不翻译」清单来约束,但前提是你已经把这些词登记进去了。没登记就没有约束力。
第二,数据目录约定是这个 Skill 自己定的(~/Clawic/data/),跟其他 Skill 不一定共用。memory-template.md 里带着格式和 identity key,官方说明这是为了让 Skill 在「拥有这些 Skill 的人是否装了」的情况下都能工作——也就是说,配套 Skill 不装也能跑,但共享盒子的功能会少。
第三,本次写作存在一处事实冲突需要留意:线索里给出的 SkillHub 评分 99736、分类 dev-programming、下载 1509,与已抓取资料中的评分 100000、分类 content-creation、下载 24024、安装 2771 不一致。线索中的 https://api.skillhub.cn/org-b6kzcl68/translate 未能抓取到正文(返回空),https://www.skillhub.cn/skills/clawhub_ivangdavila/translate 抓取到的是 SkillHub 站点通用标题。使用时建议以 @clawhub_ivangdavila/translate 这个坐标为准去核对当前版本的评分和下载量,不要引用本次写作里的静态数字。
小结¶
Translate 的价值在于把「翻过去」这件事拆成了可检查的步骤:locale 先点明、术语表先打开、占位符当 payload 保护、复数按 CLDR 走、膨胀按源长度算预算,最后用两条验收标准收口。它不是万能的翻译器,明确划掉了原创文案和音频转写两块,也没有 API key 之外的外部依赖。
官方地址:https://clawhub.ai/ivangdavila/translate,SkillHub 页面:https://www.skillhub.cn/skills/clawhub_ivangdavila/translate。