我正在try xnec2c个gettext翻译.

gettext在构建时生成一个po/xnec2c.锅文件,我已将该.pot文件翻译为de_de,并将其放在/usr/share/locale/de de/lc messages/xnec2c.采购订单中(也try 为.pot.mo).

如果我调用xnec2c作为LC_ALL=de_DE ./xnec2c,那么我知道它得到了区域设置,因为小数点在浮点值中变成了逗号,而不是句点,但是文本没有被翻译.我也试过设置LC_MESSAGES=de_DE,但文本语言没有改变.

_()宏定义为:

#define _(String) dgettext (PACKAGE, String)

autoconfPACKAGEconfigure.ac中被定义为"xnec2c",它在config.h中正确地显示出来.

控制台输出使用vfprintf,如下所示,注意_(format)的使用:

vfprintf(stderr, _(format), args);

我已经验证了要打印的格式化字符串是否存在于已翻译的文本中.锅铲.

我该如何解决这个问题?我已经阅读了相当多的gettext文档,不确定下一步要try 什么.

(这里有"gtk"标签,因为我们也在使用翻译后的.glade文件,以防相关.)

以下是一些示例(机械翻译为de不是我的母语$LANG):

xnec2c.锅

#: src/callback_func.c:684
msgid "View Currents"
msgstr ""

#: src/callback_func.c:810
msgid "GNUplot files (*.gplot)"
msgstr ""

#: src/callbacks.c:88 src/callbacks.c:328 src/callbacks.c:2065
msgid "Really quit xnec2c?"
msgstr ""

/usr/share/locale/de de/lc messages/xnec2c.采购订单

msgid "View Currents"
msgstr "Ströme anzeigen"

msgid "GNUplot files (*.gplot)"
msgstr "GNUplot-Dateien (*.gplot)"

msgid "Really quit xnec2c?"
msgstr "Wirklich verlassen xnec2c?"

推荐答案

/usr/share/...以下的翻译文件应命名为xnec2c.mo,而不是.po.你提到已经try 过了,但既然你根本没有遇到msgfmt,你是否简单地将.po改名为.mo

重命名不起作用,文件的格式可能不正确..po需要使用msgfmt -vco xnec2c.mo xnec2c.po命令进行转换.

(-v表示详细,-c表示更严格的语法判断,-o表示输出)

C++相关问答推荐

找出文件是否包含给定的文件签名

如何将不同长度的位转换成字节数组?

使用NameSurname扫描到两个单独的字符串

为什么在C中进行大量的位移位?

Ruby C Api处理异常

C中的指针增量和减量(*--*++p)

如何在c++中包装返回空*的函数

在C语言中,是否可以使枚举数向后计数?

在为hashmap创建加载器时,我的存储桶指向它自己

如何识别Linux中USB集线器(根)和连接到集线器(根设备)的设备(子设备)?

如何按顺序将所有CSV文件数据读入 struct 数组?

CS50 pset 5的皱眉脸正确地处理了大多数基本单词,并且拼写判断不区分大小写.

在C中使用无符号整数模拟有符号整数

无算术运算符和循环的二进制乘法

意外的C并集结果

struct 中的qsort,但排序后的 struct 很乱

中位数和众数不正确

为什么 C 风格的类会产生额外的指令?

求数组元素的lcm的C程序

用 C 编写的基于文本的游戏的名称比较