aboutsummaryrefslogtreecommitdiff
path: root/zh_CN.GB2312/books/porters-handbook
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2006-08-26 13:38:20 +0000
committerXin LI <delphij@FreeBSD.org>2006-08-26 13:38:20 +0000
commit053e8201e969812065f48d897e2459925dd47d8e (patch)
tree335fa506d0e827aadd14c08ab39f20c436c72c78 /zh_CN.GB2312/books/porters-handbook
parent3153806937585c8d1d3dacdcb697679e8c959869 (diff)
Notes
Diffstat (limited to 'zh_CN.GB2312/books/porters-handbook')
-rw-r--r--zh_CN.GB2312/books/porters-handbook/book.sgml94
1 files changed, 89 insertions, 5 deletions
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</programlisting>
包括 323、 40、 41 和 50。</entry>
</row>
- <row>
+ <row id="knobs-without-nls">
<entry><makevar>WITHOUT_NLS</makevar></entry>
<entry>表示不需要国际化支持, 这可以节省编译所消耗的时间。
@@ -3556,9 +3556,8 @@ ${PREFIX}/man/ja/man4/baz.4.gz</programlisting>
<row>
<entry><makevar>WITH_OPENSSL_PORT</makevar></entry>
- <entry>使用从 <filename role="package">security/openssh</filename>
- 中安装的 OpenSSL 版本, 并覆盖原先随基本系统安装的
- OpenSSL 版本。</entry>
+ <entry>使用通过 <filename role="package">security/openssl</filename>
+ 安装, 并代替原先随基本系统安装的 OpenSSL 版本。</entry>
</row>
<row>
@@ -4379,6 +4378,91 @@ PORTVERSION= 1.0</programlisting>
</sect2>
</sect1>
+ <sect1 id="using-gettext">
+ <title>使用 GNU <literal>gettext</literal></title>
+
+ <sect2>
+ <title>基本用法</title>
+
+ <para>如果您的 port 需要使用 <literal>gettext</literal>,
+ 只要将 <makevar>USE_GETTEXT</makevar> 设置为 <literal>yes</literal>,
+ 您的 port 就会增加对 <filename
+ role="package">devel/gettext</filename> 的依赖。
+ <makevar>USE_GETTEXT</makevar> 也可以指定为所需的
+ <literal>libintl</literal> 库的版本,
+ 它是 <literal>gettext</literal> 的基本组成部分,
+ 尽管如此, <emphasis>强烈建议您不要</emphasis> 使用这个功能:
+ 您的 port 应能与目前版本的
+ <filename role="package">devel/gettext</filename> 配合工作。</para>
+
+ <para>在 port 中相当常见的情况下, 会需要同时使用
+ <literal>gettext</literal> 和 <command>configure</command>。
+ 一般而言, GNU <command>configure</command> 能够自动定位到 <literal>gettext</literal>。
+ 如果它没有成功地完成这项工作, 则可以通过类似下面这样的
+ <envar>CPPFLAGS</envar> 和 <envar>LDFLAGS</envar> 将
+ <literal>gettext</literal> 的位置告诉它:</para>
+
+ <programlisting>USE_GETTEXT= yes
+GNU_CONFIGURE= yes
+CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
+ LDFLAGS="-L${LOCALBASE}/lib"</programlisting>
+ </sect2>
+
+ <sect2>
+ <title>可选用法</title>
+
+ <para>一些软件产品提供了禁用 NLS 的能力,
+ 例如, 在 <command>configure</command> 时, 指定
+ <option>--disable-nls</option> 参数。 如果您 port
+ 的软件支持这种配置, 则应根据 <link
+ linkend="knobs-without-nls"><makevar>WITHOUT_NLS</makevar></link>
+ 的设置来有条件地使用 <literal>gettext</literal>。
+ 对于比较简单和不太复杂的 port, 您可以使用下列结构:</para>
+
+ <programlisting>GNU_CONFIGURE= yes
+
+.if !defined(WITHOUT_NLS)
+USE_GETTEXT= yes
+PLIST_SUB+= NLS=""
+.else
+CONFIGURE_ARGS+= --disable-nls
+PLIST_SUB+= NLS="@comment "
+.endif</programlisting>
+
+ <para>您要做的下一件事是合理地安排装箱单文件,
+ 使其根据用户配置来决定是否将消息编录 (message catalog)
+ 文件放入最终的装箱单。 前面已经介绍了在 <filename>Makefile</filename>
+ 中所需的写法, 这种做法在 <link linkend="plist-sub">高级
+ <filename>pkg-plist</filename> 用法</link> 这节中进行了介绍。
+ 简单地说, 在 <filename>pkg-plist</filename>
+ 中出现的 <literal>%%NLS%%</literal> 均会在禁用 NLS 时自动替换为
+ <quote><literal>@comment&nbsp;</literal></quote>,
+ 反之则替换为空串。 这样, 在最终的装箱单中带 <literal>%%NLS%%</literal> 的行,
+ 在 NLS 关闭的情况下就会变为注释, 反之, 这些前缀就会自动删掉。
+ 现在需要做的事情就是把 <literal>%%NLS%%</literal> 插到 <filename>pkg-plist</filename>
+ 中的消息编录文件的那些行开头, 例如:</para>
+
+ <programlisting>%%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo
+%%NLS%%share/locale/no/LC_MESSAGES/foobar.mo</programlisting>
+
+ <para>在比较复杂的情形中, 您可能需要使用更高级的技术, 例如 <link
+ linkend="plist-dynamic">动态生成装箱单</link> 等。</para>
+ </sect2>
+
+ <sect2>
+ <title>处理消息编录目录</title>
+
+ <para>在安装消息编录文件时还有一个需要注意的地方。 这些文件会放到
+ <filename><makevar>LOCALBASE</makevar>/share/locale</filename>
+ 下与语言对应的目录中, 这些目录一般您的 port 不需要创建和删除。
+ 最常用的语言的目录已经在 <filename>/etc/mtree/BSD.local.dist</filename>
+ 中列出; 也就是说, 它们是基本系统的一部分。 其他一些语言的目录, 则由 <filename
+ role="package">devel/gettext</filename> 控制。
+ 您最好查看一下 <filename>pkg-plist</filename>,
+ 以确定是否正在安装某种不常用语言的文件。</para>
+ </sect2>
+ </sect1>
+
<sect1 id="using-perl">
<title>使用 <literal>perl</literal></title>