Skill: munich949/tax-digital-localization (version 1.0.0)

--- name: tax-digital-localization description: 用于财税数字化系统程序内文案与相关本地化内容的翻译与轻量润色。适用于将中文页面功能名、表单标签、按钮文案、菜单项、状态词、校验提示、错误提示、成功提示、系统通知，以及发票、税务、申报、合规相关系统文案翻译为目标国家常用语言，尤其适合越南、马来西亚、新加坡、波兰、意大利、德国等市场。用户提到国际化、i18n、多语言、页面翻译、按钮翻译、提示语翻译、系统文案翻译、发票系统翻译、税务系统翻译或给出明显属于程序界面的中文文案时，都应使用此 skill。 --- # Tax Digital Localization ## Overview 将中文程序内文案翻译为适合目标国家上线使用的最终译文，重点服务财税、发票、申报、合规类系统。 默认源语言为中文，按目标国家映射固定目标语言，输出默认只返回可直接落入程序的最终译文。 ## Default Mapping 按目标国家映射固定目标语言： - 越南 -> 越南语 - 马来西亚 -> 马来语 - 新加坡 -> 英语 - 波兰 -> 波兰语 - 意大利 -> 意大利语 - 德国 -> 德语 如果用户明确指定了目标语言，则以用户指定为准。 如果用户没有给出目标国家，也没有指定目标语言，先用一句话追问，不要自行猜测。 ## Scope 优先处理以下程序内文案： - 页面名称 - 菜单项 - 按钮 - 表单标签 - 状态词 - 校验提示 - 错误提示 - 成功提示 - Toast、弹窗、确认提示 - 发票、税务、申报、合规相关 UI 文案 默认不处理长篇市场文案、合同条款、法律意见、完整产品说明书和本地法规解读，除非用户明确要求。 ## Resource Routing 始终先参考 [ui-patterns.md](./references/ui-patterns.md)。 文案涉及发票、税务、申报、税号、合规，或出现“提交、申报、作废、红冲、认证、校验、开票、抵扣”等高风险语义时，再读取 [tax-terms.md](./references/tax-terms.md)。 按目标国家读取对应的 locale reference： - [vietnam.md](./references/locales/vietnam.md) - [malaysia.md](./references/locales/malaysia.md) - [singapore.md](./references/locales/singapore.md) - [poland.md](./references/locales/poland.md) - [italy.md](./references/locales/italy.md) - [germany.md](./references/locales/germany.md) 不要一次性加载所有国家文件，只读取当前目标国家需要的那一份。 ## Risk Check 先判断当前请求属于哪一种模式： - `轻量翻译`：普通页面标题、菜单、按钮、状态词、一般提示语，不涉及税务制度、发票动作、合规后果，也不存在明显专业歧义。 - `高风险术语`：涉及发票、税务、申报、税号、合规、认证、校验、作废、红冲、抵扣、开票、报送、调整金额、票据状态等语义，或任一关键词可能对应多种业务译法，翻错会影响业务理解。 只要满足以下任一条件，就按 `高风险术语` 处理： - 包含财税或票税数字化动作 - 涉及金额、税号、票据状态、申报状态、认证状态 - 涉及不可逆动作或合规后果 - 某个关键词明显可能有多种专业译法 - 出现本地官方系统、标准、平台、编号或回执名称 ## Workflow 1. 识别输入属于哪类程序文案。 2. 确认目标国家或目标语言。 3. 先执行 `Risk Check`，判断属于 `轻量翻译` 还是 `高风险术语`。 4. `轻量翻译` 时，只按 `ui-patterns` 和目标国家 locale 生成可直接用于程序的译文。 5. `高风险术语` 时，先按 `tax-terms` 校准语义，再按目标国家 locale 调整表达。 6. 如果是 `高风险术语`，且术语存在明显业务或法定歧义，在可联网时优先查证公开的一手或权威资料，再输出译文。 7. 输出最终译文。 ## Rules - 按语义翻译，不要机械逐字直译。 - 优先保证程序可用、用户易懂、术语一致。 - 页面标题、按钮、菜单优先短而清楚。 - 系统提示语优先明确动作和结果，不要写成市场文案。 - 财税高风险词优先准确，宁可略正式，也不要轻佻或模糊。 - 如果涉及本地官方系统、标准、编号、回执或门户名称，优先保留 locale 文件中的官方名称或缩写，不要自由改写。 - 如果输入是一组文案，保持原有顺序。 - 如果输入是键值对，只翻译 value，保持 key 不变。 ## Preservation 默认保持以下内容不变： - 变量占位符：`{name}`、`${count}`、`%s`、`%d`、`{{invoiceNo}}` - ICU 占位结构：`{count, plural, ...}` - HTML、XML、Markdown 结构 - 编程键名、枚举值、错误码、接口字段名 - 数字、日期格式占位符、货币代码、税率百分比 - 缩写型产品名或品牌名 - 原有换行和列表结构 ## Output 默认只输出最终译文，不做解释。 仅在以下情况额外补一行 `注意项：`： - 原文有明显歧义 - 直译会造成财税语义误解 - 占位符限制导致语序不自然 - 译文长度可能显著影响界面展示 - 高风险术语经过查证后，仍存在本地法定名称不确定 ## Examples 示例 1 输入：目标国家：新加坡；文案：提交发票 输出：Submit Invoice 示例 2 输入：目标国家：马来西亚；文案：保存并继续 输出：Simpan dan Teruskan 示例 3 输入：目标国家：德国；文案：税号不能为空 输出：Die Steuernummer darf nicht leer sein. 示例 4 输入：目标国家：越南；文案：发票提交失败，请稍后重试 输出：Gửi hóa đơn thất bại, vui lòng thử lại sau. 示例 5 输入：目标国家：越南；文案：此发票已无可调整金额，请确认 输出：Hóa đơn này không còn số tiền có thể điều chỉnh. Vui lòng xác nhận.

path: agents/openai.yaml
content: interface:
  display_name: "Tax Digital Localization"
  short_description: "Localize Chinese tax-system copy for 6 markets"
  default_prompt: "Use $tax-digital-localization to localize these Chinese tax-system strings for Singapore."


path: references/ui-patterns.md
content: # UI Patterns

本文件用于约束程序内文案的通用翻译风格，优先级高于逐字直译。

- 优先让用户一眼看懂，而不是保留中文句法。
- 优先写成真实产品会使用的文案，而不是教科书式翻译。
- 优先保持简洁，尤其是按钮、菜单、状态标签。
- 同一轮任务中，术语必须保持前后一致。

## UI Copy Patterns

### Buttons

- 使用短动词或动词短语。
- 避免把按钮译成长句。
- `保存`、`提交`、`继续`、`取消` 等操作词优先保持直接。

### Page Titles And Menu Items

- 优先名词或稳定短语。
- 避免加入中文里没有的解释性成分。
- 如果是功能模块名称，保持像真实导航项。

### Status Labels

- 优先短词或短语。
- 一组状态要保持平行，例如“草稿 / 已提交 / 已失败 / 已完成”。
- 不要把状态译成带主语的完整句子。

### Validation And Error Messages

- 明确指出问题是什么。
- 如有必要，指出下一步动作。
- 不要加入多余情绪化语气或市场化修饰。

### Success And Confirmation Messages

- 成功提示要短。
- 确认提示要明确动作后果。
- 删除、作废、提交类确认文案优先清楚表达不可逆或后续影响。

## Preservation

- 占位符与参数名
- HTML、XML、Markdown 结构
- 键名、代码、字段标识
- 数字、金额、税率、日期占位

如果结构中既有可见文案，又有程序标识，只翻译用户看得见的部分。

## Length

- 按钮和菜单尽量短。
- 表单标签优先短于系统提示语。
- 错误提示可以略长，但仍要避免绕弯。
- 如果目标语言天然更长，优先保留关键信息，不要为了追求逐字完整而牺牲可读性。

## Fallback

如果中文过于抽象，先尽量选择中性、稳妥、可上线的表达。
如果无法在不猜业务的情况下给出高质量译文，再使用一行 `注意项：` 标出歧义点。


path: references/tax-terms.md
content: # Tax Terms

本文件用于处理财税数字化系统中的高风险术语，目标不是建立大而全词典，而是帮助判断语义边界，避免把关键业务词译错。

## Reference Lens

涉及财税专业术语时，优先采用企业级、合规型表达：

- 财税与会计语义，参考 `PwC`、`Deloitte`、`KPMG`、`EY` 的专业口径
- 票税数字化与税务技术语义，参考 `Avalara`、`Sovos`、`TaxJar` 的产品口径

如果无法确认某词是否存在严格法定译名，优先选择中性、准确、可上线的表达，不要臆造看似官方的术语。

## Verification Rule

本文件用于高风险术语，不用于所有普通 UI 文案。

如果术语只是一般产品操作词，直接翻译即可，不必查证。
如果术语同时满足“财税相关”与“存在多种专业含义”这两个条件，则应优先查证公开的一手或权威资料，再决定译法。

优先查证这些来源：

- `PwC`、`Deloitte`、`KPMG`、`EY` 的公开专业内容
- `Avalara`、`Sovos`、`TaxJar` 的公开产品或术语内容
- 目标国家公开税务或电子发票资料

查证目标是确认语义边界，不是机械复制某家厂商措辞。

## Semantic Distinctions

### 发票

- `发票` 通常优先理解为 `invoice`
- `开票` 强调“生成 / 开具”动作，不等于“提交”
- `提交发票` 强调向系统或平台发送

### 税号

- `税号` 不总是简单等于某一种英文缩写
- 如果业务上下文不够明确，优先用中性表达，如“税务识别号码 / 税务编号”这一类语义
- 不要把所有 `税号` 都机械处理成同一个本地官方名词

### 申报、提交、上报

- `提交` 偏动作层，强调 send / submit
- `申报` 偏税务流程层，通常比一般“提交”更正式
- `上报` 可能强调向监管或上级平台报送，不等于普通表单提交

### 校验、验证、认证

- `校验` 更偏规则检查或数据核验
- `验证` 更偏一般验证或确认
- `认证` 可能涉及身份、资质、证书或税务流程专名
- 如果中文只写“认证”而上下文不清楚，不要自作主张翻成过于具体的概念

### 作废、撤回、取消、删除

- `作废` 常带业务失效语义，不等于普通删除
- `撤回` 强调收回已经提交的动作
- `取消` 偏一般取消操作
- `删除` 偏数据移除

### 红冲、冲销、调整

- 这些词通常不是普通的 `cancel`
- 如果上下文明确涉及负向调整、贷项、反向处理，要优先保持专业含义
- 如果上下文不足，不要把它们简化为普通“取消”

## Decision Rule

遇到高风险术语时：

1. 先判断中文词在当前界面到底表示什么业务动作
2. 再选择目标语言中最稳妥的产品表达
3. 如果本地严格法定名称不确定，优先中性准确，不要伪造“官方叫法”
4. 如果歧义无法消除，输出译文后追加一行 `注意项：` 简要说明


path: references/locales/singapore.md
content: # Singapore Locale

## Default Language

默认输出英语。

## Style

- 使用清楚、简洁、国际化的商务英语
- 不使用口语化 `Singlish`
- 优先采用企业软件常见表达，而不是文学化或宣传化英文

## Translation Guidance

- 保留新加坡官方生态中的专有名词，不要翻译或自由改写：`InvoiceNow`、`GST InvoiceNow`、`Peppol ID`、`UEN`、`IRAS`。
- 涉及税务发票时，优先使用 IRAS 常见表达，如 `tax invoice`、`GST registration number`、`invoice data`。
- 按钮优先短动词短语
- 菜单、模块名优先稳定名词短语
- 错误提示直接说明问题
- 财税相关文案保持专业、稳健、不过度延展
- 网络或平台动作优先精确区分 `register`、`submit`、`transmit`、`validate`，不要一律写成宽泛的 `process`。

## Cautions

- 不要无故加入本地俚语
- 不要把所有税务动作都泛化为 `submit` 或 `process`
- 如果中文术语业务边界不明，先给中性准确表达
- 面向政府或合规流程的提示语应更偏 plain English，而不是客服式客套表达。

## Quick Examples

- `保存` -> `Save`
- `继续` -> `Continue`
- `提交发票` -> `Submit Invoice`
- `税号不能为空` -> `Tax number cannot be empty.`
- `注册 InvoiceNow` -> `Register for InvoiceNow`


path: references/locales/malaysia.md
content: # Malaysia Locale

## Default Language

默认输出马来语。

## Style

- 使用标准、清楚、适合企业软件的马来语
- 按钮优先短动词
- 页面和菜单名称保持稳定、易扫读
- 提示语避免冗长和宣传腔

## Translation Guidance

- 保留马来西亚官方生态中的系统名和品牌名，不要翻译或改写：`e-Invois`、`MyInvois`、`MyInvois e-POS`、`HASiL`、`LHDN`。
- 涉及税号时，首次可写 `Nombor Pengenalan Cukai (TIN)`；后续优先沿用 `TIN`。
- 操作按钮优先使用常见产品用语
- 提示语要清楚说明失败原因或下一步动作
- 发票与税务相关文案优先准确，不用口语化表达
- 如果中文是中性系统文案，目标文案也保持中性
- 如果界面直接承接 MyInvois API 或官方状态值，保留 `Submitted`、`Valid`、`Invalid`、`Cancelled` 等官方英文状态；一般用户提示语再用自然马来语解释。

## Cautions

- 不要混入随意英语，除非用户明确要求英语界面
- 不要使用俚语或过度口语化表达
- 不要为了逐字对应而让句子失去产品可读性
- 对外显示文案可以是马来语，但官方系统名、字段缩写和状态枚举要以官方写法为准。

## Quick Examples

- `保存` -> `Simpan`
- `继续` -> `Teruskan`
- `提交发票` -> `Hantar e-Invois`
- `税号不能为空` -> `Nombor cukai tidak boleh kosong`
- `前往 MyInvois` -> `Pergi ke MyInvois`


path: references/locales/poland.md
content: # Poland Locale

## Default Language

默认输出波兰语。

## Style

- 使用自然、专业、适合 B2B 软件的波兰语
- 按钮与状态词尽量简洁
- 错误提示清楚直接，不堆砌客套语
- 财税术语优先准确、稳定

## Translation Guidance

- 涉及波兰电子发票官方生态时，保留系统名和官方缩写：`KSeF`、`faktura ustrukturyzowana`、`numer KSeF`、`UPO`。
- 明确区分企业自有发票编号与 `numer KSeF`，不要都翻成同一个“发票号”概念。
- 页面功能名与菜单名优先名词短语
- 操作按钮优先清晰动词
- 系统提示语优先说明结果和所需动作
- 遇到高风险税务词，优先稳妥，不要用过度随意的表达
- 如果文案描述的是 KSeF 内流转，优先使用贴近官方流程的表达，如“发送到 KSeF”“接收于 KSeF”“UPO 确认”。

## Cautions

- 注意词形变化带来的长度与可读性
- 不要为了贴近中文结构而写得生硬
- 如果本地法定叫法不明确，优先选择中性企业软件表达
- 行政与税务状态提示可以比普通产品文案稍正式，但不要写成长句。

## Quick Examples

- `保存` -> `Zapisz`
- `继续` -> `Kontynuuj`
- `提交发票` -> `Prześlij fakturę`
- `税号不能为空` -> `Numer podatkowy nie może być pusty`
- `KSeF 编号` -> `Numer KSeF`


path: references/locales/italy.md
content: # Italy Locale

## Default Language

默认输出意大利语。

## Style

- 使用自然、专业、适合企业软件的意大利语
- 按钮文案保持简洁
- 系统提示语要明确，不要翻得过于绕
- 财税语义优先准确，其次再考虑修辞

## Translation Guidance

- 涉及意大利电子发票官方生态时，保留官方名称：`fattura elettronica`、`Sistema di Interscambio (SdI)`、`Codice Destinatario`、`PEC`、`Fatture e Corrispettivi`。
- 如果文案涉及投递或回执，优先使用官方流程词，如 `scarto`、`ricevuta di consegna`、`impossibilità di consegna`。
- 页面模块名优先使用稳定短语
- 操作按钮优先使用清楚的动词
- 表单标签尽量短
- 错误提示要说明问题本身，不要加入无关修饰
- 明确区分 `Codice Destinatario` 与 `PEC Destinatario`，不要统一弱化成一般“接收地址”。

## Cautions

- 不要把中文内部流程词翻得像市场口号
- 不要为了追求书面感而牺牲界面可读性
- 如果某术语可能有严格业务含义，优先用中性稳妥表达
- 意大利税务流程文案可以带适度行政风格，但按钮和菜单仍保持短促清晰。

## Quick Examples

- `保存` -> `Salva`
- `继续` -> `Continua`
- `提交发票` -> `Invia fattura`
- `税号不能为空` -> `Il numero fiscale non può essere vuoto`
- `收件人代码` -> `Codice Destinatario`


path: references/locales/vietnam.md
content: # Vietnam Locale

## Default Language

默认输出越南语。

## Style

- 采用自然、清楚、适合企业软件的产品语言
- 按钮和状态词尽量短
- 系统提示语优先直接说明结果和下一步
- 避免过度书面化或过度口语化

## Translation Guidance

- 涉及税务机关或电子发票平台时，优先使用越南语官方术语，如 `hóa đơn điện tử`、`mã số thuế`、`cơ quan thuế`。
- 如果业务需要区分税务机关编码流程，明确区分 `hóa đơn điện tử có mã của cơ quan thuế` 与 `hóa đơn điện tử không có mã của cơ quan thuế`。
- 页面功能名优先用稳定短语
- 操作按钮优先直接动词
- 校验与错误提示保持明确，不绕弯
- 财税语义优先准确，不为求短而牺牲清晰度
- 查询、核验、编码等动作优先使用本地常见产品词，如 `tra cứu`、`xác thực`、`cấp mã`，不要硬套英语化表达。

## Cautions

- 不要把中文内部术语直接音译
- 不要为了“看起来专业”而强行堆砌生僻词
- 如果占位符导致语序别扭，优先保留占位符格式，再在不破坏格式的前提下调整语序
- 提示语可以接受完整句式；确认类和报错类文案可用 `Vui lòng ...` 保持清楚直接。

## Quick Examples

- `保存` -> `Lưu`
- `继续` -> `Tiếp tục`
- `提交发票` -> `Gửi hóa đơn`
- `税号不能为空` -> `Mã số thuế không được để trống`
- `发票查询` -> `Tra cứu hóa đơn`


path: references/locales/germany.md
content: # Germany Locale

## Default Language

默认输出德语。

## Style

- 使用清楚、正式度适中、适合企业软件的德语
- 按钮文案尽量短
- 提示语优先明确动作结果
- 财税类表达优先稳健和准确

## Translation Guidance

- 涉及德国电子发票官方生态时，保留官方名称和缩写：`E-Rechnung`、`XRechnung`、`ZUGFeRD`、`OZG-RE`、`ZRE`、`Peppol`。
- 如果是政府或公共部门提交场景，优先使用 `einreichen`、`übermitteln` 这类更准确的动作词，而不是宽泛的 `senden`。
- 页面与菜单项优先名词短语
- 操作按钮优先动词或固定操作短语
- 校验和错误提示要直接指出问题
- 涉及发票、税务、申报时，优先保持专业语义完整
- 当复合词过长影响 UI 时，优先拆成清楚短语，但不要改动官方标准名本身。

## Cautions

- 注意德语名词大小写
- 不要为了直译中文而生成过长复合结构
- 如果严格法定名词不明确，先给自然、稳妥、企业软件可用的表达
- `XRechnung` 是官方标准名，不要翻成解释性描述替代原名。

## Quick Examples

- `保存` -> `Speichern`
- `继续` -> `Weiter`
- `提交发票` -> `Rechnung einreichen`
- `税号不能为空` -> `Die Steuernummer darf nicht leer sein.`
- `提交 XRechnung` -> `XRechnung einreichen`


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)