Linux下的本地/国际化gettext

gettext 是一套 GNU下的国际化工具,在gettext的帮助下,我们可以轻松完成程序的国际化。

程序的国际化/本地化是指根据用户语言和区域的不同程序可以使用针对用户的交互信息。如,中文用户,则语言会变成中文,时间会显示北京时间,货币会显示RMB。

gettext 的工作流程:比如我们写一个C程序,通常printf等输出信息都是English的。如果我们在程序中加入gettext支持,在需要输出的字符串上用gettext函数,程序运行是就可以先调用gettext函数处理字符串,替换成对应的其它语言的字符串。

gettext套件的工具包括: gettext,xgettext,msgfmt…:

  • gettext : 进行translate,根据LC_MESSAGES环境变量的值和TEXTDOMAIN查找字串对应的本地表示。
  • xgettext : 从程序中抽取调用gettext进行本地化的字符串,生成一份.po结尾的配置文件。
  • msgfmt : 将配置好的本地化配置文件进行转换成gettext使用的格式。

简单的例子:

first_gettext.c:

制作po文件:

常用参数:

-k 参数-可以只搜索某些字符串,没有用的信息省略。

-l 参数-可以针对某一语言生成po文件,中文为例:

上面命令会生成 zh_CN.po 文件,可由此修改生成mo文件

修改生成的 first_gettext.po 文件,将其中的 CHARSET 换成 UTF-8:

翻译其中的字符串:

生成mo文件:

创建存放mo文件的目录,(例子使用./locale):

编译:

验证:设置环境变量LC_MESSAGES或LANG为zh_CN。然后运行程序即可。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注