☰
Bambu Studio 多语言翻译完整指南:在哪里改 PO 文件,如何新增一门语言
2026/10/17 1:48:21 网站建设 项目流程

Bambu Studio 多语言翻译完整指南:在哪里改 PO 文件,如何新增一门语言

【免费下载链接】BambuStudioPC Software for BambuLab and other 3D printers项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio

你在设置里切换界面语言后,发现某个按钮的中文文案和实际功能对不上,该做的第一件事不是提 bug,而是打开bbl/i18n/下对应语言的 PO 文件——这是 Bambu Studio 翻译工作的全部入口。本文基于 GNU gettext 工具集与 PoEdit 编辑器,按任务拆解修改已有翻译、新增语言、为新代码标记字符串的具体做法,并给出验证生效与提交前的完整清单。

一、前置准备:GNU gettext 与 PoEdit 的安装配置

Bambu Studio 的本地化基于 GNU gettext 框架:gettext 是标准的字符串提取与翻译目录管理工具,负责从源码中提取待翻译文本;PoEdit 则是面向翻译者的可视化编辑器,用来编辑 PO 文件(可编辑的翻译目录)。准备工作一次完成即可:

  1. 安装 GNU gettext 安装包,并将它的 bin 目录加入系统 PATH,之后终端里能直接敲出xgettext、msgmerge等命令;
  2. 安装最新版 PoEdit;
  3. 在终端运行xgettext --version,能输出版本号说明环境就绪。

目录结构值得记牢:bbl/i18n/下每个语言一个子目录(如zh_CN/),存放形如BambuStudio_zh_CN.po的源文件;目录根部有模板文件BambuStudio.pot和文件清单list.txt;而程序运行时真正加载的编译产物 MO 文件,放在resources/i18n/<语言代码>/里。

二、三种常见的翻译任务

在哪里修改已有翻译(PO 文件)

以修正简体中文翻译为例:

  1. 用 PoEdit 以"Edit a translation"模式打开 bbl/i18n/zh_CN/BambuStudio_zh_CN.po;
  2. 搜索要修正的原文,在右侧翻译框直接修改译文。若原文为空的条目属于已废弃字符串,标记为 obsolete 即可;
  3. 保存,PoEdit 会立即生成同名的.mo文件(MO 是 PO 的二进制编译结果,供程序加载);
  4. 把生成的 MO 文件复制到resources/i18n/zh_CN/并重命名为BambuStudio.mo,这是程序读取的固定位置。

如何新增一门语言

  1. 获取模板文件 bbl/i18n/BambuStudio.pot,它包含全部待翻译字符串及其出处;
  2. 在 PoEdit 中选择"Create new translation",挑选目标语言(例如法语 fr);
  3. 逐条完成翻译,把文件重命名为BambuStudio_fr.po并保存,.mo文件随即生成;
  4. 将 PO 文件放入新建的bbl/i18n/fr/目录,MO 文件放入resources/i18n/fr/并改名为BambuStudio.mo。

语言目录名必须与 PO 文件中的语言代码一致,命名不匹配会导致程序加载不到该语言。

如何为新代码标记可翻译字符串

界面上出现的字符串都要用L()宏显式标记,它专用于翻译提取,底层定义为#define L(s) Slic3r::I18N::translate(s):

auto msg = L("This message to be localized"); std::string text = _(msg); // 运行时取翻译后的文本

取译文时使用_()或_CHB()宏。注意:若你新增了含L()宏的源文件,必须把它的路径登记到 bbl/i18n/list.txt(约 300 行文件清单)中,否则xgettext生成模板时会漏掉该文件里的全部字符串。

三、避坑清单:现象、原因与处理

现象:跑完 xgettext,模板里缺少新增的字符串。原因:新文件未登记进list.txt,或提取参数不完整。 处理:核对清单后用标准命令提取。--from-code=UTF-8保证中文等非 ASCII 字符被正确处理,--debug保证格式化字符串中%d、%s等占位符被正确识别:

xgettext --keyword=L --add-comments=TRN --from-code=UTF-8 --debug \ -o BambuStudio.pot -f list.txt

现象:切换语言后程序崩溃或弹出参数错误。原因:译文中的格式标记被手工改动。程序靠%1%、%%这类标记做动态替换,改动一个字符就会导致参数解析失败。 处理:把标记原样还原——%1%不要写成%1 %,%%不要简化成%。校对译文时先核标记,再核措辞。

现象:模板更新后合并,大量已有译文被标为模糊(fuzzy)。原因:原文发生过变更,精确匹配失败。 处理:用msgmerge -N -o new.po old.po new.pot合并,-N选项关闭模糊匹配,未精确命中的条目标记为待处理,PoEdit 会高亮提示你逐条复核。此外可用msgcat拼接多个 PO 文件,用msgen生成英文目录(源语言下原文与译文相同)。

现象:界面出现乱码,但 PO 文件检查无误。原因:按 doc/Localization_guide.md 的说明,这通常不是翻译错误,而是软件编码实现的 bug。 处理:不要动译文,提交 issue 并注明乱码出现的界面位置。

现象:翻译后按钮明显变宽、文案被截断。原因:在按钮文本里用括号附加了备选翻译(如"保存(存储)")。 处理:按钮只保留单一译文,备选表述不写进括号,避免撑破控件宽度。

四、验证与提交:如何确认翻译生效

图中为 Bambu Studio 的打印平台视图,界面中显示的平台标签与参数名称文字,正是切换语言后需要逐项核对的翻译内容。

最小验证路径

  1. 在 PoEdit 中保存 PO 文件,触发 MO 文件生成;
  2. 将 MO 文件重命名为BambuStudio.mo,放入resources/i18n/<语言代码>/目录;
  3. 启动 Bambu Studio,把界面语言切到目标语言,逐页走查界面元素,确认无缺失、无截断、无格式异常。

提交前检查项

英文术语推荐译法备注
filament耗材全文统一,不要时而是"线材"
layer层—
infill填充不要写成"内部结构"
support支撑全文术语一致
  • 格式标记%1%、%%与原文逐字一致;
  • 不额外添加换行符\n和空格;参数描述中不写单位词(如"层打印时间小于~"),单位一律用国际单位制缩写,写s而不是sec;
  • 句尾标点与原文对齐:原文无句号不加,有句号不丢;
  • PO 文件、MO 文件、list.txt的变更(如适用)同一次提交。

一门语言的翻译全部落地后,同一套流程可以复制到bbl/i18n/下的其余语言。想动手的话,从改掉你最常看到的那条中文文案开始,一次跑通保存、部署、验证的完整链路。

【免费下载链接】BambuStudioPC Software for BambuLab and other 3D printers项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询