GTK+ 程序使用gettext国际化小结

    gettext软件包是GNU工程中解决国际化问题的重要工具,支持C/C++和JAVA语言,它在开源 界应用相当广泛,GNOME/GTK+的国际化问题都是用它来解决的,正常的情况下GNU/LINUX系统是默认安装这一软件包的。

    首先,应用程序要包含两个头文件,并且做一下定义:

#include  < glib / gi18n.h >
#include 
< locale.h >

#define  PACKAGE "main"  // 软件包名  最后生成的.mo文件名应该命名为这个
#define  LOCALEDIR "./locale"  // locale所在目录

然后在主函数中加入以代码:
setlocale (LC_ALL,  "" );
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);

然后在程序代码中使用 _( )  括起需要进行国际化的字符串即可。

生成po文件:
    xgettext -j -k_ -o main.po *.c
-j 参数表示不覆盖生成过的po文件
-k 指定翻译字符以何种宏定义括起,我们在前面使用的是 _( ) 所以用 -k_
输入文件可以是*.c表示扫描所有的c文件,如果是glade生成的UI文件,可以使用 *.glade

进行翻译:
    打开po文件,msgid后面的内容为代码中的英文, msgstr后面的内容为要翻译的中文,翻译好后保存为UTF8格式。

生成mo文件:
    msgfmt -o main.mo main.po

用于我们指定的 LOCALEDIR为 ./locale,所以我们将生成的mo文件拷到 ./locale/zh_CN/LC_MESSAGES下。

最后启动你的应用程序就行了。
   
    

   
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值