gettext










body.skin-minerva .mw-parser-output table.infobox caption{text-align:center}

































gettext
開發者
GNU项目


穩定版本
0.19.8.1
(2016年6月11日,​2年前​(2016-06-11


源代码库
  • git.savannah.gnu.org/cgit/gettext.git
編輯維基數據鏈接
操作系统
跨平台
类型
软件开发,翻译
许可协议
LGPL(函数库),GPL(工具),GFDL/GPL(文档)
网站
http://www.gnu.org/software/gettext/

gettext是GNU国际化与本地化(i18n)函数库。它常被用于编写多语言程序。




目录






  • 1 开发


  • 2 翻译


  • 3 執行


  • 4 参考


  • 5 另见


  • 6 外部链接





开发


程序源代码需要进行修改以响应GNU gettext请求。多数编程语言均已通过字符封装的方式实现了对其的支持。为了减少输入量和代码量,此功能通常以标记别名“_”的形式使用,所以例如以下C语言代码:


printf(gettext("My name is %s.n"), my_name);

应当写作:


printf(_("My name is %s.n"), my_name);

gettext使用其中的字符串寻找对应的其他语言翻译,若没有可用翻译则返回原始内容。


除C语言外, GNU gettext还支持C++,Objective-C,Pascal/Object Pascal,sh脚本,bash脚本,Python,GNU CLISP,Emacs Lisp,librep,GNU Smalltalk,Java,GNU awk,wxWidgets(通过wxLocale类),YCP(YaST2语言),Tcl,Perl,PHP,Pike,Ruby以及R。用法均与在C语言上类似。


xgettext程序从源代码生成.pot文件,作为源代码中需翻译内容的模板。一个典型的.pot文件条目应当是这样的:


#: src/name.c:36
msgid "My name is %s.n"
msgstr ""

注释被直接放置在字符串前,用于帮助翻译者理解待翻译内容:


/// TRANSLATORS: Please leave %s as it is, because it is needed by the program.
/// Thank you for contributing to this project.
printf(_("My name is %s.n"), my_name);

本例中的注释是以 ///开头的,其作用是用于xgettext程序生成.pot模板文件。


xgettext --add-comments=///

在.pot文件中的注释应为以下形式:


#. TRANSLATORS: Please leave %s as it is, because it is needed by the program.
#. Thank you for contributing to this project.
#: src/name.c:36
msgid "My name is %s.n"
msgstr ""


翻译


翻译者需要工作的对象是.po文件,它是由msginit程序从.pot模板文件生成的。例如使用msginit初始化法语翻译文件时,我们运行以下命令:


msginit --locale=fr --input=name.pot

这将会使用指定的name.pot在当前目录创建一个fr.po,其中的一个条目应该是以下形式的:


#: src/name.c:36
msgid "My name is %s.n"
msgstr ""

翻译者需要手工或使用类似Poedit、gtranslator、OmegaT或Emacs等工具的相应模式编辑该文件。翻译完成后,文件应为如下的样子:


#: src/name.c:36
msgid "My name is %s.n"
msgstr "Je m'appelle %s.n"

最后.po文件需要使用msgfmt编译为.mo文件以用作发布。



執行


使用Unix类型操作系统的用户只需设置环境变量中的LC_MESSAGES(但是ubuntu linux 是用LANG),程序将自动从相应的.mo文件中读取语言信息。



参考





另见




  • 国际化和本地化

  • 翻译工具



外部链接



  • Gettext主页


  • 使用gettext本地化PHP网站 - 解些和示例。

  • Gettext Commons - Java gettext工具集

  • Autotools教程

  • gted - GetText EDitor和工具集成

  • Gorm PO文件编辑器

  • Windows 下的对应函数为 LoadString,直接读取适合当前 locale/lcid 设置的资源字符串





Popular posts from this blog

Guess what letter conforming each word

Port of Spain

Run scheduled task as local user group (not BUILTIN)