1、命令简介
gettext:GNU gettext是GNU翻译项目的一个重要步骤,因为它是我们可以构建许多其他步骤的资产。这个包为程序员、翻译人员甚至用户提供了一组集成良好的工具和文档。具体来说,GNU gettext实用程序是一组工具,它提供了一个框架来帮助其他GNU包生成多语言消息。这些工具包括一组关于如何编写程序以支持消息目录的约定,消息目录本身的目录和文件命名组织,支持检索已翻译消息的运行时库,以及一些以各种方式传递可翻译字符串集或已翻译字符串集的独立程序。
2、命令语法
gettext [OPTION] [[TEXTDOMAIN] MSGID] gettext [OPTION] -s [MSGID]...
3、命令描述
gettext
程序将自然语言消息翻译成用户的语言,通过在消息目录中查找对应的翻译内容来实现。
显示文本消息的本地语言翻译。
如果未提供TEXTDOMAIN参数,则会从环境变量TEXTDOMAIN确定域。如果在常规目录中未找到消息目录,则可以使用环境变量TEXTDOMAINDIR指定其他位置。当与-s选项一起使用时,该程序的行为类似于"echo"命令,但它不仅仅是将其参数复制到标准输出(stdout)。而是翻译在所选目录中找到的消息。标准搜索目录:/usr/share/locale。
4、命令选项
选项 | 说明 |
-d, --domain=TEXTDOMAIN | 从TEXTDOMAIN中检索已翻译的消息 |
-e | 启用某些转义序列的展开 |
-E | (与兼容性相关,已忽略) |
-h, --help | 显示帮助信息并退出 |
-n | 抑制尾随的换行符 |
-V, --version | 显示版本信息并退出 |
[TEXTDOMAIN] MSGID | 从TEXTDOMAIN检索与MSGID对应的已翻译消息 |
5、使用示例
gettext是一种常用于编写多语言程序的国际化和本地化系统。要让gettext工作,需要一个消息目录。
下面是创建消息目录的步骤:
1)修改源代码以使用gettext调用
$ cat test.sh
gettext -s "需要翻译的消息"
2)运行xgettext生成.pot(Portable Object Template)文件
$ xgettext -c /
这将创建一个类似下面的文件:
msgid "需要翻译的消息"
msgstr ""
3)翻译并创建.po(Portable Object)文件
$ msginit --locale=es --input=name.pot
必须修改.po文件并输入翻译后的消息。
msgid "需要翻译的消息"
msgstr "这是一个已翻译的消息"
4)创建.mo(Machine Object)文件
$ msginit --locale=es --input=es.pot
5)要查看翻译后的消息,用户必须更改LC_MESSAGE
变量。