- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux下的本地化与国际化 gettext
Linux下的本地化与国际化 – 2. gettextGNU gettext是一套GNU下的国际化工具,几乎支持所有Linux下的计算机语言。在gettext的帮助下,可以轻松完成程序的国际化。一、相关文件.pot po的模版,可由xgettext生成.po翻译的源,可由msginit + .pot生成.gmo编译后的po,可由msgfmt + .po生成.mo 同上,只是gmo通常指的是未安装的mo,可由 install + .gmo生成二、相关工具xgettext从源代码中提取需要翻译的字串,生成pot文件msginit替换pot中的Entry信息,如译者,文件编码等msgmerge合并现有的.po文件msgfmt把.po文件生成.gmo或.mo文件三、相关函数bindtextdomain(const char *domain, const char *dirname) 通过domain与dirname绑定mo文件的域textdomain?(const char *domainname) 指定gettext所用的域gettext(const char *msgid): 由locale与textdomain指定的domain得到翻译后的字串ngettext(const char *msgid1, const char *msgid2, unsigned long int n): 通过n返回单数的msgid1 或复数的msgid2dgettext(const char *domain, const char *msgid) 指定domain的gettextdngettext(const char *domain, const char *msgid, unsigned long int n); 指定domain的ngettextdcgettext(const char *domain, const char *msgid, int category): 指定domain与category的gettextdcngettext(const char *domain, const char *msgid1, const char *msgid2, unsigned long int n, int category): 指定domain与category的ngettextgettext的dirname, locale domain, category, 在磁盘上的结构为dirname/locale/category/domain.mo如/usr/share/locale/zh_CN/LC_MESSAGES/gettext_demo.mo默认的category为LC_MESSAGES 四、实例1. 新建文件gettext_demo.cview plaincopy to clipboardprint?#include?locale.h??#include?libintl.h??#include?stdio.h????#define?_(string)?gettext(string)????const?char?*DOMAIN??=?gettext_demo;??const?char?*DIRNAME?=?languages;?????int?main(int?argc,?char?**argv)?{??????/×?设置locale与系统一致?*/????setlocale(LC_ALL,?);??????/×?添加域?gettext_test?在目录?po?*/????bindtextdomain(DOMAIN,?DIRNAME);??????/×?设定默认域为?gettext_test?*/????textdomain(DOMAIN);??????/×?gettext(Hello?World)?*/????puts(_(Hello));????return?0;??}??2. 制作zh_CN.UTF-8的语言包gettext_demo$ lsgettext_demo.cgettext_demo$ mkdirpogettext_demo$ cdpo由xgettext生成potgettext_demo/po$ xgettext -k_? ——package-name gettext_demo ——package-version 0.1 ../×.c? -o gettext_demo.potgettext_demo/po$ lsgettext_demo.pot由gettext_demo.pot生成zh_CN.pogettext_demo/po$ msginit#因为我的系统locale为zh_CN.UTF-8,因此msginit自动生成针对
文档评论(0)