es、fr、ko、pl、pt)可以缺条目,缺失时界面显示英文,等译者补上。
两种目录
源文本
大部分文本直接在调用处用英文书写。UI 基础组件(标签、按钮、菜单、对话框、提示)会把收到的字符串送进源文本目录,所以下面这些都会自动翻译:tx / txTemplate 的参数,T、Button、Dialog 的文本子节点,以及 label、title、description、tooltip、placeholder、message、hint、aria-label 等属性或对象键。
运行时拼出来的文本用 tx 标签,它会查找带命名占位符的模板:
src/platform/locales/text/zh.json
action.<id> 消息键,则优先使用)。英文标题在 Find Action 中仍然可以搜索。
消息
带键的消息使用简化的 ICU 语法:{name}参数(数字按语言区域格式化);{n, plural, =0 {none} one {# file} other {# files}};{g, select, a {…} other {…}};{n, number}。
en.json)随包内置,是缺失键的兜底;其他语言按需懒加载。
规则
- 每条新字符串都要同时加到
en和zh。 源文本对应text/en.json(英文映射到自身)和text/zh.json;消息键对应en.json和zh.json。 - 改写措辞会丢掉翻译。 源文本的键就是英文原文,所以在调用处改了措辞,也要同步更新目录条目。
- 删掉不再使用的条目。 如果某条目录条目的文本在
src/、Rust crate 或languages/中都找不到了,测试会失败。 - 整句翻译。 不要把英文单词拼进译文(
${kind.toLowerCase()}、${n === 1 ? "" : "s"});每种变体写一条文本,或者用复数消息。 - 精确查找时不要用未加标签的模板字符串:
`Cannot open ${path}`永远无法被翻译,请用tx标签。 - 后端文本(错误消息等)只要字面量出现在源码中就算被使用;和其他文本一样补上翻译。
- 中文术语:同一概念沿用
text/zh.json和zh.json中已有的译法,不要让一个英文术语出现两种译名。
测试
开发时可以单独运行:
插件
插件在自己的包里携带翻译,机制在plugins/README.md 的 Translations 一节中面向插件作者说明。本页的规则针对 IDE 自身的 UI。