Klipper
KlipperScreen HDMI 屏幕旋转
KlipperScreen 安装教程
Klipper——纵维立方Mega Zero 升级
CANOpen协议栈 —— CANOpenNode
MKS Robin Nano V3.1
KlipperScreen 的本地化——多语言支持
KlipperScreen 架构分析
Klipper 配置参考
Klipper参考文档
mainsail 前端界面语言选择
mainsail 前端控制界面源码分析
OracSlicer 编译环境搭建 —— windows
KlipperScreen 源码分析
BigTreeTECH 安装Klipper
Klipper 源码分析
OrcaSlicer 通过配置文件添加自定义打印机
Klipper 风扇/气泵/断料/堵料配置
Klipper 挤出头温度调节
如何覆盖Klipper 的G-code 指令
Klipper 3D打印机调试笔记
切片软件中挤出头移动速度的决定因素
螺杆挤出机生产过程中气泡问题的控制
自适应网床调平
Klipper 重新定义M84命令 强制移动
KlipperScreen 的Network 模块出现No module named 'sdbus'问题
klipper 自动配置 mcu 的串口id
使用 udisksctl 的可靠 USB 自动挂载方案(基于 systemd-run)
Klipper 断电续打
本文档使用 MrDoc 发布
-
+
首页
KlipperScreen 的本地化——多语言支持
KlipperScreen 的本地化(多语言支持)主要基于 **GNU gettext** 技术实现,结合模块化的翻译文件管理,以下是具体实现方式和操作流程: --- ### **1. 技术基础:GNU gettext** - **PO/MO 文件机制** - **`.pot` 模板文件**:从源代码中提取所有需翻译的字符串(通过 `xgettext` 工具生成)。 - **`.po` 翻译文件**:针对每种语言(如 `zh_CN`、`fr_FR`),将字符串翻译为目标语言并保存为 `.po` 文件。 - **`.mo` 编译文件**:将 `.po` 文件编译为二进制格式,供程序运行时加载。 --- ### **2. 翻译文件目录结构** KlipperScreen 的翻译文件默认存放在以下路径中: ```bash KlipperScreen/ks_includes/locales ├── zh_CN/ # 中文简体目录 │ └── LC_MESSAGES/ │ ├── KlipperScreen.po # 翻译文本 │ └── KlipperScreen.mo # 编译后的二进制文件 ├── KlipperScreen.pot └── ... # 其他语言 ``` --- ### **3. 本地化实现步骤** #### **(1) 提取可翻译字符串** 开发者通过以下命令从代码中提取字符串生成 `.pot` 模板文件: ```bash xgettext --from-code=UTF-8 -o locales/KlipperScreen.pot $(find . -name "*.py") ``` #### **(2) 创建或更新翻译文件** - **新建语言**:复制 `.pot` 文件到对应语言目录,重命名为 `.po` 文件(如 `zh_CN.po`)。 - **更新翻译**:使用 `msgmerge` 工具同步最新字符串: ```bash msgmerge -U zh_CN.po KlipperScreen.pot ``` #### **(3) 编辑翻译内容** 使用工具(如 [Poedit](https://poedit.net/) 或文本编辑器)编辑 `.po` 文件,填充翻译内容: ```po #: panels/menu.py:120 msgid "Print" msgstr "打印" # 中文翻译 ``` #### **(4) 编译为 MO 文件** 通过 `msgfmt` 命令将 `.po` 文件编译为机器可读的 `.mo` 文件: ```bash msgfmt zh_CN.po -o KlipperScreen.mo ``` #### **(5) 配置语言环境** 在 KlipperScreen 的配置文件(`~/.KlipperScreen/settings.ini`)中设置语言: ```ini [main] language: zh_CN # 指定中文简体 ``` --- ### **4. 动态切换语言** - **运行时切换**:通过界面设置菜单直接选择语言(需提前安装对应语言的 MO 文件)。 - **自动检测**:若未配置 `language` 参数,KlipperScreen 会尝试读取系统环境变量 `LANG`。 --- ### **5. 社区翻译协作** - **官方仓库集成**:KlipperScreen 的翻译文件托管在 GitHub,社区用户可通过 Pull Request 提交翻译更新。 - **翻译平台**:部分社区使用 [Weblate](https://weblate.org/) 等在线工具协作翻译(如非官方翻译项目)。 --- ### **6. 注意事项** 1. **编码格式**:所有文件需保存为 **UTF-8** 编码,避免乱码。 2. **占位符保留**:翻译时需保留字符串中的变量(如 `%s`、`%d`),例如: ```po msgid "Progress: %d%%" msgstr "进度:%d%%" ``` 3. **未翻译回退**:若某语言缺失翻译,KlipperScreen 会自动回退到英语显示。 4. **测试验证**:修改后需重启 KlipperScreen 服务以生效: ```bash sudo systemctl restart KlipperScreen ``` --- ### **示例:添加中文支持** 1. 下载中文翻译文件(如社区维护的 `zh_CN.po`)到 `translations/zh_CN/LC_MESSAGES/`。 2. 编译生成 `KlipperScreen.mo` 文件。 3. 配置 `settings.ini` 中 `language = zh_CN`。 4. 重启服务后,界面将切换为中文。 --- 通过这一流程,KlipperScreen 实现了灵活的本地化支持,用户和开发者可以轻松扩展新语言或维护现有翻译。
qingkai
2025年1月22日 14:02
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码