news 2026/9/13 23:48:31

darktable 中文本地化:界面还是英文?4 个问题改对

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
darktable 中文本地化:界面还是英文?4 个问题改对

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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 23:48:30

sqlmap安全测试使用指南

注入测试 找到登录接口,判别字段username password 然后输入指令 python sqlmap.py -u "https://xxx" --data"usernametest&passwordtest" --batch --level5 --risk3 --threads4 --force-ssl --flush-session查看有哪些库表 python sqlma…

作者头像 李华
网站建设 2026/9/13 23:46:56

DeepSeek V4.1 Flash发布:轻量模型反超旗舰,API升级与计费要点

9月10日,DeepSeek发布了V4.1 Flash。有点反常识的是:这是它新架构系列里尺寸最小的一款,官方却说在基准测试里超过了包括V4 Pro在内的旗舰模型。据报道,9月11日腾讯旗下WorkBuddy、CodeBuddy已全量接入,OpenCode同步接…

作者头像 李华
网站建设 2026/9/13 23:37:57

嵌入式AI编程:重构STM32开发流程的五层耦合方法

1. 这不是“用AI写代码”,而是重构嵌入式开发的认知框架 你搜“AI编程 STM32”,刷出来的大多是“让ChatGPT帮你生成GPIO初始化代码”这类短视频标题。但真正跑通一个带AI能力的STM32项目,比如用本地模型做实时语音关键词唤醒、用轻量级Transf…

作者头像 李华
网站建设 2026/9/13 23:37:55

小白也能看懂:AI大模型何时调用RAG?5大场景+收藏必备指南

本文详细解析了AI大模型在何种场景下会使用RAG技术,包括知识时效性断层、私有数据需求、高事实性要求、长尾查询和动态更新需求。通过“全能助理”的生动比喻,将复杂概念转化为通俗易懂的实例,帮助读者快速理解RAG的作用和限制,是…

作者头像 李华
网站建设 2026/9/13 23:37:53

GD32H759 + RT-Thread 工控实战--第1篇 CAN总线

前言 本篇开始调试GD32H7的CAN,目标为跑通回环、自发收、以及与上位机通讯。需要额外2条杜邦线、一块candlelight USB-CAN模块。本篇为边开发边记载,所以阅读顺序可能不那么愉快。 一、驱动代码编写与kconfig修改 1.1 为何要自己编写can驱动 首先rt-t…

作者头像 李华