darktable 中文本地化:界面还是英文?4 个问题改对
【免费下载链接】darktabledarktable is an open source photography workflow application and raw developer项目地址: https://gitcode.com/GitHub_Trending/da/darktable
darktable 是开源的摄影工作流应用,能洗 RAW、做后期。它的界面文本走 gettext 翻译:英文原文在msgid,中文译文在msgstr,都存在po/zh_CN.po里。改对这几个文件,中文界面就完整了。下面按你实际会遇到的四个卡点来拆。
darktable 的安装/引导画面,用于确认你装的是哪个版本
界面一半英文一半中文,为什么
现象:菜单是中文,但某个对话框、某条提示还是英文。
原因:那条文本对应的msgstr是空的,或者上游改了msgid导致旧译文失效。不是你的系统问题,是这条翻译缺了。
操作:把界面上的英文原词复制下来,在po/zh_CN.po里搜它(搜msgid那一行)。找到了就补上msgstr;找不到,说明这条还没进翻译模板,先记下。
验证:改完这一条,先别急着全量编译,往下看第三节,单独编译、单独跑一遍确认。
某个翻译看起来不对,改哪一行
现象:译文能看懂,但别扭,比如把专业词直译了。
原因:msgstr的值本身没问题,只是措辞不自然。
操作:在po/zh_CN.po里搜对应的msgid,只改下面那行msgstr的内容。条目长这样(这是你本地副本里的操作,仓库是只读的,别想着改上游):
msgid "first instance" msgstr "第一个实例"规则两条:msgid里有几个%s占位符,译文就得保留几个、顺序别乱;引号和特殊字符要正确转义,别让msgstr断行。
验证:改完保存,回到第三节编译,第四节跑起来看这一处。
改完 po 文件,怎么重新生成语言包
现象:.po是文本,darktable 运行时只认编译后的.mo二进制。
原因:.po必须用 gettext 工具编译成.mo,光改文本没用。
操作:先装好 gettext(msgfmt命令)。然后在项目根目录下执行:
msgfmt -c po/zh_CN.po -o po/zh_CN.mo-c会顺手检查格式错。注意 darktable 加载时按程序名找文件,所以这个.mo落地时得叫darktable.mo,放到zh_CN/LC_MESSAGES/里,也就是最终路径形如po/zh_CN/LC_MESSAGES/darktable.mo。
验证:msgfmt没报错、生成了po/zh_CN.mo,就对了。有报错,按提示行号回po/zh_CN.po改。
编译好了,怎么让 darktable 用上
现象:.mo生成完,界面还是老样子。
原因:darktable 只在它认识的目录里找.mo,得告诉它去哪儿找。
操作:两种办法,按需选。
- 临时验证(不动安装目录):在启动时带上目录参数,指向你放
.mo的根。比如.mo放在po/zh_CN/LC_MESSAGES/darktable.mo,就:
darktable --localedir po- 装到系统语言目录,让以后默认生效:
Linux: /usr/share/locale/zh_CN/LC_MESSAGES/darktable.mo macOS: darktable.app/Contents/Resources/locale/zh_CN/LC_MESSAGES/darktable.mo Windows: darktable\share\locale\zh_CN\LC_MESSAGES\darktable.mo验证:启动后进偏好里找「界面语言」,选中中文;若它显示成系统语言,双击那一项可重置回系统语言。改对的话,之前缺的那句、别扭的那句,都变中文了。
常见误区
- 只改
.po不编译:不生成.mo,界面永远不变。 .mo命名用zh_CN.mo:darktable 按程序名darktable.mo加载,名字错了等于没放。- 直接改上游仓库的翻译文件:仓库是只读的,改翻译在你本地副本或你自己的分支里做。
- 把占位符
%s删掉或换顺序:一删,界面里那个数字/名称的位置就错位了。 - 以为英文没翻就是软件坏了:多半只是那条
msgstr空着,补上即可。
【免费下载链接】darktabledarktable is an open source photography workflow application and raw developer项目地址: https://gitcode.com/GitHub_Trending/da/darktable
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考