Bambu Studio 本地化翻译完整指南从 PO 到 MO 的 7 步实战流程【免费下载链接】BambuStudioPC Software for BambuLab and other 3D printers项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio如果你要在 Bambu Studio 里做翻译、参与本地化开发先认清三种文件PO 是翻译底稿POT 是字符串模板MO 是软件运行时真正读取的编译产物。Bambu Studio 是 Bambu Lab 生态的 3D 打印切片软件用户遍布全球界面语言质量直接决定使用体验这就是本地化存在的意义。准备工作装好 gettext 工具链与 PoEdit整个流程只需要两个工具。GNU gettext 提供命令行能力xgettext、msgmerge等负责字符串提取和文件合并PoEdit 是翻译界面带语法检查提示。用系统包管理器或官网安装包安装即可。 Windows 用户注意装完 gettext 后要把gettext/bin目录加进 PATH 环境变量否则命令行找不到这些工具。git clone https://gitcode.com/GitHub_Trending/ba/BambuStudio把仓库拉到本地后面的 PO、POT、MO 文件都从这里拿。xgettext --version这条命令打印 gettext 版本号能跑通就说明工具链和 PATH 都配置好了。完成你的第一个翻译从 PO 文件到 MO 的完整动线这是最高频的操作改一处现有翻译。仓库里每种语言一个目录都挂在 bbl/i18n/ 下面。进入目标语言目录比如bbl/i18n/zh_CN/找到BambuStudio_zh_CN.po。PoEdit 里选Edit a translation编辑翻译打开它。别选新建翻译那会丢掉文件头部已有的元信息。修改译文。PoEdit 会自动高亮标点、空白这类常见错误。保存。PoEdit 立刻在旁边生成同名的.mo文件。把改后的 PO 提交回原目录把 MO 复制到 resources/i18n/zh_CN/重命名为BambuStudio.mo一起提交。⚠️ 软件运行时只认resources/i18n/下那个固定名字的 MO 文件PO 是给人看的底稿两者的去向别搞混。从零添加一门新语言POT 模板落地三步走新语言和改旧翻译的路径不同没有现成 PO 文件一切从模板开始。取基础模板 bbl/i18n/BambuStudio.pot——它包含全部待翻译字符串但不含任何译文。PoEdit 里选Create new translation创建新翻译选目标语言比如法语fr得到fr.po。翻译完成后做三件事文件重命名为BambuStudio_fr.po点保存自动生成BambuStudio_fr.moPO 提交到新目录bbl/i18n/fr/MO 复制到resources/i18n/fr/并改名BambuStudio.mo。 语言目录名用 ISO 代码fr、de、pt_BR照抄 bbl/i18n/ 里现有目录的命名习惯即可。开发者视角用 L() 宏标记可翻译字符串写新功能时所有要进入翻译流程的字符串都得先挂号。L(s)是标记宏运行时它就是字符串本身唯一作用是被 xgettext 扫描出来。真正取翻译结果用_(s)返回 wxWidgets 字符串或_CHB(s)返回 UTF-8 缓冲。const wxString label L(Slicing in progress); // 标记供 xgettext 提取 wxString shown _(L(Slicing in progress)); // 取 wxWidgets 译文 const char* utf8 _CHB(Slicing in progress); // 取 UTF-8 译文 踩坑提醒新写的源文件若包含L()调用必须把文件路径加进 bbl/i18n/list.txt。这个清单已列了 300 多个文件漏登记的话你的字符串永远不会出现在 POT 里。幕后机制xgettext 关键参数逐条拆解模板不是手写出来的是命令扫出来的。仓库 CMake 里的gettext_make_pot目标本质就是这一条命令xgettext --keywordL --add-commentsTRN --from-codeUTF-8 --debug -o BambuStudio.pot -f list.txt它只扫描清单文件里列出的源码把标记好的字符串抽进BambuStudio.pot。--keywordL只把L(...)当成可翻译标记来提取--add-commentsTRN紧跟TRN注释的字符串也一并收集--from-codeUTF-8声明源码字符串的编码是 UTF-8--debug输出调试信息保证%d、%s这类格式化串正确提取-f list.txt限定扫描范围为清单文件列出的源码 真实构建里 CMake 还会追加_L、_L_PLURAL复数等 keyword原理一致你手动维护翻译时不用碰。合并阶段常用三条命令一条一个用途msgmerge -N -o new.po old.po new.pot拿新模板刷新旧翻译-N表示精确匹配不到时不做模糊匹配宁可留空也不乱塞。msgcat -o new.po old.po把多个 PO 文件连接成一个。msgen -o new.po old.po生成英文目录原文和译文完全相同专供英文界面使用。翻译质量红线7 条碰不得的规则⚠️ 以下几条是社区明确写进 doc/Localization_guide.md 的硬性要求按钮文本不加括号备选。打印(切片)这种写法会把按钮撑宽界面直接变形。占位符原样保留。%1%不能改成%1 %%%不能简化成%动一个字符都可能让程序崩溃。不随意加换行符\n和空格参数名称的显示尤其敏感。术语全局一致。现有中文目录里filament统一译作材料不要一处材料一处耗材。单位用国际单位制缩写写s而不是sec。参数描述不带单位。对的是层打印时间小于错的是层打印时间小于 n 秒。标点跟随原文。原文结尾没有句号就不加有就不能漏。验证与交付用 MO 文件实测界面效果翻译得再漂亮最终要看界面。✅ 验证路径很短PoEdit 一保存就生成 MO复制进resources/i18n/语言/改名BambuStudio.mo启动软件看界面即可。排查乱码时换个思路如果某处显示的是乱码字符而不是正常的 Unicode 文本大概率是软件的编码 bug不是你翻译错了——按 bug 上报别回头改 PO。另外凡是用自动纠错或批量工具处理过的译文输出必须逐条人工校对这类工具帮倒忙的记录远多于立功的。去项目的 issue 区认领一门还没人做的语言或者给现有目录补上缺漏的译文——你的第一个翻译 PR就从这里开始。【免费下载链接】BambuStudioPC Software for BambuLab and other 3D printers项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考