国际化(i18n)
界面文案通过 Qt 的翻译系统(QTranslator + .ts / .qm)实现中英文切换;文档本身通过 mkdocs i18n 插件以 docs/zh、docs/en 两个目录实现。
代码中的国际化
- 标记字符串:所有用户可见文本使用
QCoreApplication.translate(context, text),context通常用页面类名,便于在.ts中归类。 - 翻译源文件:
i18n/zh_CN.ts与i18n/en_US.ts是 XML 格式的翻译源,可用 Qt Linguist 编辑,也可通过脚本批量更新。 - 编译为
.qm:用lrelease把.ts编译成二进制.qm,程序运行时由core.settings.apply_language()加载对应.qm并installTranslator。 - 中文为源语言:当语言为
zh_CN时卸载翻译器,直接显示源码中的中文字符串。
Example
新增页面时,在构造函数中:
python
btn.setText(QCoreApplication.translate("XinGongneng", "计算"))
然后在 i18n/en_US.ts 的对应 <message> 中填写英文译文。
文档中的国际化
- 文档分为
docs/zh/(默认)与docs/en/两个独立目录,结构完全一致。 mkdocs.yml使用i18n插件(docs_structure: folder),依据子目录名zh/en构建对应语言站点。- 导航里的中文文本通过
nav_translations映射为英文,无需在en/目录重复维护导航。 - 新增文档页面时,务必在
zh/与en/同步创建,保持文件名与相对路径一致。
Warning
删除或重命名 zh/ 下的页面后,要同步更新 en/ 与 mkdocs.yml 的 nav,否则 mkdocs build --strict 会报断链。