v0.5.0 — 21 种界面语言
v0.5.0 — 2026-09-15
类型:feat
- 界面支持 21 种语言(按 DSH 官方
ctx.locale规范 + dsh-better-sidebar 的词典规范实现):简繁中文(含zh-HK/zh-MO/zh-TW)、英语、日语、韩语、德语、法语、意大利语、葡萄牙语、俄语、荷兰语、波兰语、瑞典语、土耳其语、印尼语、越南语、泰语、印地语、阿拉伯语。- 语言跟随
ctx.locale的 active(宿主侧偏好优先,浏览器语言兜底)并实时切换;解析顺序是「精确 tag → 主语言子标签 → 英文」,zh-Hant-*归到港式繁体。 - 词典同时注册进 DSH 的 locale 注册表(
ctx.locale.register('dsh-ide-git', …)),宿主侧消费者读到的与面板完全一致。 - 英文始终是键完整的那本:任何未覆盖的语言都回退英文,不会露出键名。
- 语言跟随
- 结构:中文与英文是文件内的
ZH/EN,其余语言在LOCALES表里一门一条,每条前面有一行/* locale: <tag> */标记;查找从「中文就 ZH、否则 EN」改成表驱动的dictionaryFor()。加一门语言现在是追加一个条目,不改任何逻辑。 - 新增守护测试:冒烟测试强制每本词典的键集与中文完全相等——缺键会静默回退英文,面板就成了半翻译状态,这正是它要挡住的(上游 dsh-better-sidebar 用同一条规则,
tests/locales.spec.ts)。 - 代价是客户端半从约 90 KB 涨到 316 KB(gzip 后 70 KB):DSH 的客户端半是无构建单文件,词典只能内嵌,不能像上游那样切懒加载 chunk。
- 语言文案为机器辅助翻译,欢迎在 issue / PR 里修正——每门语言只改一处,互不影响。
- 只改客户端半:硬刷新页面即可,不需要重启。