插件国际化进阶
当插件面向全球用户,把界面文案抽离为可翻译资源是必要的一步。进阶方案支持动态切换与社区贡献翻译。
核心要点
设计文案
- 建立
lang/目录,按语言存 JSON(如en.json/zh.json),键名统一 - 用辅助函数取文案,避免硬编码字符串:
ts
const t = (key: string) => locale[app.language]?.[key] ?? locale.en[key];
new Setting(el).setName(t("enable-feature"));进阶技巧
- 动态切换:监听
app.workspace.on("css-change")或语言设置变更,重绘设置面板 - 复数/插值:复杂文案用模板函数处理变量与单复数
- 社区贡献:把
lang/放在仓库,鼓励 PR 补充翻译,降低维护成本 - RTL 支持:阿拉伯语等需额外处理布局方向
注意事项
- 默认回退到
en,缺失键不报错 - Obsidian 内置
app.language已是用户语言代码(如zh-cn),直接复用