6.41. Gettext-0.17

Gettext 软件包包含国际化和本地化的工具。 这些工具允许在编译程序的时候使用 NLS (本国语言支持),可以使程序的输出使用用户设置的语言。

预计编译时间: 5.8 SBU
所需磁盘空间: 125 MB

6.41.1. 安装 Gettext

应用补丁来修复文件的权限,属主和一个内部bug:

patch -Np1 -i ../gettext-0.17-upstream_fixes-2.patch

为编译 Gettext 做准备:

./configure --prefix=/usr \
            --docdir=/usr/share/doc/gettext-0.17

编译这个软件包:

make

要测试结果 (需要很长时间,大约 3 SBU), 请执行:

make check

安装这个软件包:

make install

6.41.2. Gettext 的内容

安装的程序: autopoint, config.charset, config.rpath, envsubst, gettext, gettext.sh, gettextize, hostname, msgattrib, msgcat, msgcmp, msgcomm, msgconv, msgen, msgexec, msgfilter, msgfmt, msggrep, msginit, msgmerge, msgunfmt, msguniq, ngettext, recode-sr-latin, and xgettext
安装的库:: libasprintf.{a,so}, libgettextlib.so, libgettextpo.{a,so}, libgettextsrc.so, and preloadable_libintl.so

简要描述

autopoint

将标准的 gettext infrastructure 文件拷贝到源码包中

config.charset

产生一个依赖于系统的字符编码表

config.rpath

输出依赖于系统的变量, 描述如何在可执行程序中设置库文件的实时查找路径。

envsubst

替换 shell 格式化字符串中的环境变量

gettext

通过在消息列表中查找, 来将一种自然语言的消息翻译成用户的本地语言

gettext.sh

主要作为一个shell的函数库来为 gettext 服务

gettextize

拷贝所有的标准 Gettext 文件到软件包的顶层目录下, 以进行国际化。

hostname

用不同的格式显示一个网络主机名

msgattrib

根据翻译目录中消息的属性过滤它们,并且操作这些属性。

msgcat

将给定的 .po 文件合并到一起

msgcmp

比较两个 .po文件,看它们是否包含相同的 msgid 字符串

msgcomm

找出不同 .po文件中的相同信息

msgconv

把一个翻译列表转化成另一种字符编码

msgen

建立一个英文翻译目录

msgexec

对一个翻译列表中的所有翻译执行同一个命令

msgfilter

对一个翻译列表中的所有翻译使用同一个过滤器

msgfmt

从翻译列表生成一个二进制的消息列表

msggrep

将一个翻译列表中的所有符合给定格式或者属于给定源文件的消息展开

msginit

生成一个新的.po文件, 并使用用户环境中的消息来对这个文件进行初始化。

msgmerge

将两个翻译合并成一个

msgunfmt

将二进制翻译文件反编译成源文件

msguniq

将翻译目录中重复的翻译合并成一个

ngettext

显示依赖于数字格式的文本文件的本国语言翻译

recode-sr-latin

把塞尔维亚(Serbian)文本从西里尔字母(Cyrillic) 重新编码成拉丁(Latin)文

xgettext

从源文件中展开消息行, 用来创建起始翻译模板

libasprintf

定义autosprintf 类,使 C 的函数以 C++ 程序可使用的结构输出, 与 <string> 字符串和 <iostream> 流一起使用。

libgettextlib

包含多个 gettext 程序使用的函数,是私有库

libgettextpo

用来写处理 .po 文件的程序。当 Gettext 自带的标准程序(如 msgcommmsgcmpmsgattribmsgen) 不能满足要求时, 可以使用这个库。

libgettextsrc

包含多个 gettext 程序使用的函数,是私有库

preloadable_libintl

一个库文件,计划由LD_PRELOAD使用, 在未翻译的信息记录中帮助 libintl 工作。