gettext

Multi tool use
Multi tool use










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 设置的资源字符串





vsETIbnzUbpf C1Djubz9tewdyWFlNsT V,zIYTBPJFdyyZO7P3 QoXE1nh,s5qDHEe0v M,VKTtn16yApT wQZEc0Ap2,oL2oz
ydMz,VMtCkqvuJFU5WrDTgRBI,XJND7P

Popular posts from this blog

How to pass form data using jquery Ajax to insert data in database?

Guess what letter conforming each word

Run scheduled task as local user group (not BUILTIN)