LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1094|回复: 4

求助:gettext问题!!!!

[复制链接]
发表于 2006-4-9 16:25:27 | 显示全部楼层 |阅读模式
实验网上一关于gettext的例子,怎么输出中文有点不对啊,各位帮忙看看!!
下面为源程序,程序名为:this_app.c
#include <locale.h>
#include <libintl.h>
#define _(String) gettext(String)
#define N_(String) gettext(String)
#define __(String) gettext(String)

int main()
{
setlocale(LC_ALL, "");
bindtextdomain("this_app", "/usr/share/locale");
textdomain("this_app");
printf(_("Somt String"));

}

运行:xgettext -a -o this_app.po this_app.c
this_app.c:9: warning: Empty msgid.  It is reserved by GNU gettext:
                       gettext("") returns the header entry with
                       meta information, not the empty string.

修改this_app.po文件,翻译中文:
#: this_app.c:12
msgid "Somt String"
msgstr "一些字符串"

运行 msgfmt -o this_app.mo this_app.po
msgfmt: this_app.po: warning: Charset "CHARSET" is not a portable encoding name.
                              Message conversion to user's charset might not work.

运行:cp this_app.mo /usr/share/locale/zh_CN/LC_MESSAGES
执行文件: LC_ALL=zh_CN ./this_app

输出:
涓?浜涘瓧绗︿覆

这么会是一些乱码啊???

我用的是RedHat 9.0系统.
小弟先谢谢了!!
发表于 2006-4-9 17:37:05 | 显示全部楼层
xgettext -k_ -o this_app.po this_app.c
使用参数 -k_ 这样只扫描_("XXX")这样的字串。参数-a的话好像是引号括起来的都扫描了

修改this_app.po文件,一定不要忘记把"Content-Type: text/plain; charset=CHARSET\n"
这行的CHARSET替换成你翻译时用的编码,如UTF-8,或GB2312什么的。

再试一试吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-10 23:41:21 | 显示全部楼层
谢谢啊:)可以用了,呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-10 23:42:10 | 显示全部楼层
谢谢啊:)可以用了,呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-10 23:42:20 | 显示全部楼层
谢谢啊:)可以用了,呵呵
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表