如何给开源软件提交第一个翻译?本地化贡献完整指南
【免费下载链接】BambuStudioPC Software for BambuLab and other 3D printers项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio
写给从没做过翻译贡献的你:跟着三个真实任务——修一处翻译、加一门新语言、注册可翻译字符串——走完整条流程,独立提交第一次开源软件翻译。
修一处现有翻译的完整步骤(PO 文件)
这节解决"发现一条翻译写错了,怎么修并提交"的问题,全程走完,你就熟悉本地化的整条链路了。
- 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/ba/BambuStudio(拉取全部源码和翻译文件) - 找到你要修的语言目录,比如中文就是 bbl/i18n/ 下的
zh_CN/BambuStudio_zh_CN.po,用 PoEdit 以"编辑翻译"模式打开 - 在 PoEdit 里搜到原文,改译文,保存(保存时自动生成同名
.mo二进制文件) - 把生成的
.mo文件复制到 resources/i18n/ 对应语言目录,重命名为BambuStudio.mo(软件运行时按这个文件名加载翻译) - 把改动的
.po和.mo两个文件一起提交到原目录
⚠️ 按钮类文案别在译文里加括号备选译法(如"切片(Slice)"),按钮会被撑宽到遮挡。 ⚠️ 界面出现乱码时别怀疑自己的译文,那多半是软件编码 bug,直接报 issue。
新增一门语言的操作清单
这节解决"项目还没有某门语言,从零建一个翻译目录"的问题。
- 拿基础模板:取 bbl/i18n/ 下的
BambuStudio.pot(含全部待翻译原文) - 在 PoEdit 里选"创建新翻译",选目标语言(如法语
fr),翻译完成后得到fr.po - 重命名为
BambuStudio_fr.po,点保存,自动生成BambuStudio_fr.mo - 在
bbl/i18n/下新建语言子目录fr/,放入 PO 文件 - 在
resources/i18n/下同样建fr/,放入BambuStudio.mo - 把 PO 和 MO 一起提交
⚠️ 目录名和文件名前缀必须用同一个语言代码(fr对应BambuStudio_fr.po),对不上就加载不到。 ⚠️ 新语言不必一次译完,未翻译的条目会回退显示英文,先提交能译的部分。
写新代码时让文案可被翻译(标记宏 + 注册文件)
这节面向开发者,只讲两件事:用宏标记字符串、把文件登记进列表。
- 标记可翻译字符串,
L()宏只负责标记,运行时由_(s)或_CHB(s)取出译文:
auto message = L("This will be localized"); auto shown = _(message); // 界面显示译文- 把新文件路径追加到 bbl/i18n/list.txt(
xgettext只扫描这份清单里的文件,漏登记等于白写) - 重新生成模板:
xgettext --keyword=L --from-code=UTF-8 --no-location --debug -f bbl/i18n/list.txt -o bbl/i18n/BambuStudio.pot(按清单提取所有 L() 字符串到 POT 模板) - 把新模板合并进各语言文件:
msgmerge --no-wrap -N -o BambuStudio_xx.po BambuStudio_xx.po BambuStudio.pot(-N表示新字符串标为未译,不做模糊匹配) - 用
msgfmt --check-format -o BambuStudio.mo BambuStudio_xx.po生成 MO 文件,同时校验占位符格式
⚠️ 动态拼接出来的字符串扫不到,运行时用L()登记标记即可,别指望xgettext能提取。
翻译红线清单
- ✅ "filament" 等核心术语全文统一译法,别一处"耗材"一处"丝材"
- ⚠️
%1%、%%这类格式占位符一个字符都别动,改了就崩溃 - ✅ 标点跟原文走:原文没句号不加,有句号不丢
- ⚠️ 别擅自加换行符(
\n)和多余空格,尤其参数名 - ✅ 参数描述不带单位;单位用国际单位制缩写(
s不是sec) - ⚠️ 按钮文案只留一个确定译法,括号备选会让按钮异常加宽
自测验证:跑起来确认翻译生效
这节解决"怎么确认我的改动静物见效果",PoEdit 的保存动作就是测试开关。
- 在 PoEdit 里保存文件,
.mo即已生成 - 把它复制到
resources/i18n/xx/并重命名BambuStudio.mo - 启动 Bambu Studio,在语言设置里切到该语言,逐条核对你改过的文案
- 看到乱码就报 issue(软件 bug,不是译错)
下一步:提交合并后,运行第 3 节的msgmerge同步最新模板,从"未翻译"列表里挑 10 条空白条目继续译——这就是你的第二次贡献。
【免费下载链接】BambuStudioPC Software for BambuLab and other 3D printers项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考