diff --git a/zh_CN.GB2312/books/porters-handbook/book.sgml b/zh_CN.GB2312/books/porters-handbook/book.sgml index 7f749ba7f0..4f46a52ef6 100644 --- a/zh_CN.GB2312/books/porters-handbook/book.sgml +++ b/zh_CN.GB2312/books/porters-handbook/book.sgml @@ -2,7 +2,7 @@ The FreeBSD Documentation Project The FreeBSD Simplified Chinese Project - Original Revision: 1.745 + Original Revision: 1.748 $FreeBSD$ --> @@ -3540,7 +3540,7 @@ ${PREFIX}/man/ja/man4/baz.4.gz 包括 323、 40、 41 和 50。 - + WITHOUT_NLS 表示不需要国际化支持, 这可以节省编译所消耗的时间。 @@ -3556,9 +3556,8 @@ ${PREFIX}/man/ja/man4/baz.4.gz WITH_OPENSSL_PORT - 使用从 security/openssh - 中安装的 OpenSSL 版本, 并覆盖原先随基本系统安装的 - OpenSSL 版本。 + 使用通过 security/openssl + 安装, 并代替原先随基本系统安装的 OpenSSL 版本。 @@ -4379,6 +4378,91 @@ PORTVERSION= 1.0 + + 使用 GNU <literal>gettext</literal> + + + 基本用法 + + 如果您的 port 需要使用 gettext, + 只要将 USE_GETTEXT 设置为 yes, + 您的 port 就会增加对 devel/gettext 的依赖。 + USE_GETTEXT 也可以指定为所需的 + libintl 库的版本, + 它是 gettext 的基本组成部分, + 尽管如此, 强烈建议您不要 使用这个功能: + 您的 port 应能与目前版本的 + devel/gettext 配合工作。 + + 在 port 中相当常见的情况下, 会需要同时使用 + gettextconfigure。 + 一般而言, GNU configure 能够自动定位到 gettext。 + 如果它没有成功地完成这项工作, 则可以通过类似下面这样的 + CPPFLAGSLDFLAGS 将 + gettext 的位置告诉它: + + USE_GETTEXT= yes +GNU_CONFIGURE= yes +CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ + LDFLAGS="-L${LOCALBASE}/lib" + + + + 可选用法 + + 一些软件产品提供了禁用 NLS 的能力, + 例如, 在 configure 时, 指定 + 参数。 如果您 port + 的软件支持这种配置, 则应根据 WITHOUT_NLS + 的设置来有条件地使用 gettext。 + 对于比较简单和不太复杂的 port, 您可以使用下列结构: + + GNU_CONFIGURE= yes + +.if !defined(WITHOUT_NLS) +USE_GETTEXT= yes +PLIST_SUB+= NLS="" +.else +CONFIGURE_ARGS+= --disable-nls +PLIST_SUB+= NLS="@comment " +.endif + + 您要做的下一件事是合理地安排装箱单文件, + 使其根据用户配置来决定是否将消息编录 (message catalog) + 文件放入最终的装箱单。 前面已经介绍了在 Makefile + 中所需的写法, 这种做法在 高级 + pkg-plist 用法 这节中进行了介绍。 + 简单地说, 在 pkg-plist + 中出现的 %%NLS%% 均会在禁用 NLS 时自动替换为 + @comment , + 反之则替换为空串。 这样, 在最终的装箱单中带 %%NLS%% 的行, + 在 NLS 关闭的情况下就会变为注释, 反之, 这些前缀就会自动删掉。 + 现在需要做的事情就是把 %%NLS%% 插到 pkg-plist + 中的消息编录文件的那些行开头, 例如: + + %%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo +%%NLS%%share/locale/no/LC_MESSAGES/foobar.mo + + 在比较复杂的情形中, 您可能需要使用更高级的技术, 例如 动态生成装箱单 等。 + + + + 处理消息编录目录 + + 在安装消息编录文件时还有一个需要注意的地方。 这些文件会放到 + LOCALBASE/share/locale + 下与语言对应的目录中, 这些目录一般您的 port 不需要创建和删除。 + 最常用的语言的目录已经在 /etc/mtree/BSD.local.dist + 中列出; 也就是说, 它们是基本系统的一部分。 其他一些语言的目录, 则由 devel/gettext 控制。 + 您最好查看一下 pkg-plist, + 以确定是否正在安装某种不常用语言的文件。 + + + 使用 <literal>perl</literal>