|
@@ -1,4 +1,4 @@
|
|
-<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
|
<!ENTITY % general-entities SYSTEM "../general.ent">
|
|
@@ -8,134 +8,183 @@
|
|
<sect1 id="ch-scripts-locale" revision="systemd">
|
|
<sect1 id="ch-scripts-locale" revision="systemd">
|
|
<?dbhtml filename="locale.html"?>
|
|
<?dbhtml filename="locale.html"?>
|
|
|
|
|
|
- <title>Configuring the System Locale</title>
|
|
|
|
|
|
+ <title>配置系统 Locale</title>
|
|
|
|
|
|
<indexterm zone="ch-scripts-locale">
|
|
<indexterm zone="ch-scripts-locale">
|
|
<primary sortas="e-etc-locale-conf">/etc/locale.conf</primary>
|
|
<primary sortas="e-etc-locale-conf">/etc/locale.conf</primary>
|
|
</indexterm>
|
|
</indexterm>
|
|
|
|
|
|
- <para>The <filename>/etc/locale.conf</filename> below sets some
|
|
|
|
- environment variables necessary for native language support. Setting
|
|
|
|
- them properly results in:</para>
|
|
|
|
|
|
+ <para>下面将创建的 <filename>/etc/locale.conf</filename>
|
|
|
|
+ 设定本地语言支持必要的环境变量,将它们正确设定后,
|
|
|
|
+ 可以得到以下好处:</para>
|
|
|
|
|
|
<itemizedlist>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<listitem>
|
|
- <para>The output of programs translated into the native language</para>
|
|
|
|
|
|
+ <para>程序输出被翻译成本地语言</para>
|
|
</listitem>
|
|
</listitem>
|
|
<listitem>
|
|
<listitem>
|
|
- <para>Correct classification of characters into letters, digits and other
|
|
|
|
- classes. This is necessary for <command>bash</command> to properly accept
|
|
|
|
- non-ASCII characters in command lines in non-English locales</para>
|
|
|
|
|
|
+ <para>字符被正确分类为字母、数字和其他类别,
|
|
|
|
+ 这对于使 <command>bash</command> 正确接受命令行中的非 ASCII
|
|
|
|
+ 本地字符来说是必要的</para>
|
|
</listitem>
|
|
</listitem>
|
|
<listitem>
|
|
<listitem>
|
|
- <para>The correct alphabetical sorting order for the country</para>
|
|
|
|
|
|
+ <para>根据所在地区惯例排序字母</para>
|
|
</listitem>
|
|
</listitem>
|
|
<listitem>
|
|
<listitem>
|
|
- <para>Appropriate default paper size</para>
|
|
|
|
|
|
+ <para>适用于所在地区的默认纸张尺寸</para>
|
|
</listitem>
|
|
</listitem>
|
|
<listitem>
|
|
<listitem>
|
|
- <para>Correct formatting of monetary, time, and date values</para>
|
|
|
|
|
|
+ <para>正确格式化货币、时间和日期值</para>
|
|
</listitem>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</itemizedlist>
|
|
|
|
|
|
- <para>Replace <replaceable><ll></replaceable> below with the two-letter code
|
|
|
|
- for the desired language (e.g., <quote>en</quote>) and
|
|
|
|
- <replaceable><CC></replaceable> with the two-letter code for the appropriate
|
|
|
|
- country (e.g., <quote>GB</quote>). <replaceable><charmap></replaceable> should
|
|
|
|
- be replaced with the canonical charmap for your chosen locale. Optional
|
|
|
|
- modifiers such as <quote>@euro</quote> may also be present.</para>
|
|
|
|
-
|
|
|
|
- <para>The list of all locales supported by Glibc can be obtained by running
|
|
|
|
- the following command:</para>
|
|
|
|
|
|
+ <note><title>译注</title>
|
|
|
|
+ <para>译者强烈反对在 <filename>/etc/locale.conf</filename>
|
|
|
|
+ 中指定中文 locale。由于字符终端的局限性,它根本无法显示中文字符。
|
|
|
|
+ 使用中文 locale 将导致许多程序输出中文消息,
|
|
|
|
+ 结果在字符终端中都显示为问号。建议在
|
|
|
|
+ <filename>/etc/locale.conf</filename> 中指定英文 locale ,
|
|
|
|
+ 在 BLFS 中安装了图形环境后再将
|
|
|
|
+ <literal>LANG=zh_CN.UTF-8</literal> 写入
|
|
|
|
+ <filename>.xprofile</filename> 等图形界面配置文件,
|
|
|
|
+ 这样即可在字符终端中使用英文 locale ,而在图形界面中使用中文。
|
|
|
|
+ </para>
|
|
|
|
+ </note>
|
|
|
|
+
|
|
|
|
+ <para>将下面的 <replaceable><ll></replaceable>
|
|
|
|
+ 替换为所需语言的双字符代号(例如 <quote>en</quote>),
|
|
|
|
+ <replaceable><CC></replaceable> 替换为国家或地区的双字符代号
|
|
|
|
+ (例如 <quote>GB</quote>),
|
|
|
|
+ <replaceable><charmap></replaceable> 替换为您选定的 locale
|
|
|
|
+ 的标准字符映射。另外,还可以加入 <quote>@euro</quote>
|
|
|
|
+ 之类的可选修饰符。</para>
|
|
|
|
+
|
|
|
|
+ <para>Glibc 支持的所有 locale 可以用以下命令列出:</para>
|
|
|
|
|
|
<screen role="nodump"><userinput>locale -a</userinput></screen>
|
|
<screen role="nodump"><userinput>locale -a</userinput></screen>
|
|
|
|
|
|
- <para>Charmaps can have a number of aliases, e.g., <quote>ISO-8859-1</quote>
|
|
|
|
- is also referred to as <quote>iso8859-1</quote> and <quote>iso88591</quote>.
|
|
|
|
- Some applications cannot handle the various synonyms correctly (e.g., require
|
|
|
|
- that <quote>UTF-8</quote> is written as <quote>UTF-8</quote>, not
|
|
|
|
- <quote>utf8</quote>), so it is safest in most
|
|
|
|
- cases to choose the canonical name for a particular locale. To determine
|
|
|
|
- the canonical name, run the following command, where <replaceable><locale
|
|
|
|
- name></replaceable> is the output given by <command>locale -a</command> for
|
|
|
|
- your preferred locale (<quote>en_GB.iso88591</quote> in our example).</para>
|
|
|
|
|
|
+ <para>字符映射可能有多个别名,例如 <quote>ISO-8859-1</quote>
|
|
|
|
+ 也可以称为 <quote>iso8859-1</quote> 和 <quote>iso88591</quote>。
|
|
|
|
+ 某些程序不能正确处理一些别名(例如,只识别 <quote>UTF-8</quote>,
|
|
|
|
+ 不能识别 <quote>utf8</quote>),因此在多数情况下,为了保险起见,
|
|
|
|
+ 最好使用 locale 的规范名称。为了确定规范名称,执行下列命令,
|
|
|
|
+ 将 <replaceable><locale name></replaceable> 替换成
|
|
|
|
+ <command>locale -a</command> 对于您希望的 locale 的输出
|
|
|
|
+ (以 <quote>en_GB.iso88591</quote> 为例)。</para>
|
|
|
|
|
|
<screen role="nodump"><userinput>LC_ALL=<replaceable><locale name></replaceable> locale charmap</userinput></screen>
|
|
<screen role="nodump"><userinput>LC_ALL=<replaceable><locale name></replaceable> locale charmap</userinput></screen>
|
|
|
|
|
|
- <para>For the <quote>en_GB.iso88591</quote> locale, the above command
|
|
|
|
- will print:</para>
|
|
|
|
|
|
+ <para>对于 <quote>en_GB.iso88591</quote> locale,以上命令输出:</para>
|
|
|
|
|
|
<screen><computeroutput>ISO-8859-1</computeroutput></screen>
|
|
<screen><computeroutput>ISO-8859-1</computeroutput></screen>
|
|
|
|
|
|
- <para>This results in a final locale setting of <quote>en_GB.ISO-8859-1</quote>.
|
|
|
|
- It is important that the locale found using the heuristic above is tested prior
|
|
|
|
- to it being added to the Bash startup files:</para>
|
|
|
|
|
|
+ <para>这样就最终确定 locale 应设置为 <quote>en_GB.ISO-8859-1</quote>。
|
|
|
|
+ 在将以上启发方法获得的 locale 添加到 Bash 启动文件之前,
|
|
|
|
+ 一定要进行下列测试:</para>
|
|
|
|
|
|
<screen role="nodump"><userinput>LC_ALL=<locale name> locale language
|
|
<screen role="nodump"><userinput>LC_ALL=<locale name> locale language
|
|
LC_ALL=<locale name> locale charmap
|
|
LC_ALL=<locale name> locale charmap
|
|
LC_ALL=<locale name> locale int_curr_symbol
|
|
LC_ALL=<locale name> locale int_curr_symbol
|
|
LC_ALL=<locale name> locale int_prefix</userinput></screen>
|
|
LC_ALL=<locale name> locale int_prefix</userinput></screen>
|
|
|
|
|
|
- <para>The above commands should print the language name, the character
|
|
|
|
|
|
+ <!--para>The above commands should print the language name, the character
|
|
encoding used by the locale, the local currency, and the prefix to dial
|
|
encoding used by the locale, the local currency, and the prefix to dial
|
|
before the telephone number in order to get into the country. If any of the
|
|
before the telephone number in order to get into the country. If any of the
|
|
commands above fail with a message similar to the one shown below, this means
|
|
commands above fail with a message similar to the one shown below, this means
|
|
that your locale was either not installed in Chapter 6 or is not supported by
|
|
that your locale was either not installed in Chapter 6 or is not supported by
|
|
- the default installation of Glibc.</para>
|
|
|
|
|
|
+ the default installation of Glibc.</para-->
|
|
|
|
+ <para>以上命令应该输出语言名称、选定 locale 使用的字符编码、
|
|
|
|
+ 本地货币符号以及所在国家或地区的国际电话区号。
|
|
|
|
+ 如果以上某个命令失败并输出类似下面这样的消息,
|
|
|
|
+ 意味着您的 locale 在第 6 章中没有安装,或者不被 Glibc 的默认安装支持。
|
|
|
|
+ </para>
|
|
|
|
|
|
<screen><computeroutput>locale: Cannot set LC_* to default locale: No such file or directory</computeroutput></screen>
|
|
<screen><computeroutput>locale: Cannot set LC_* to default locale: No such file or directory</computeroutput></screen>
|
|
|
|
|
|
- <para>If this happens, you should either install the desired locale using the
|
|
|
|
|
|
+ <!--para>If this happens, you should either install the desired locale using the
|
|
<command>localedef</command> command, or consider choosing a different locale.
|
|
<command>localedef</command> command, or consider choosing a different locale.
|
|
Further instructions assume that there are no such error messages from
|
|
Further instructions assume that there are no such error messages from
|
|
- Glibc.</para>
|
|
|
|
|
|
+ Glibc.</para-->
|
|
|
|
+ <para>如果出现了这种消息,您应该用 <command>localedef</command>
|
|
|
|
+ 命令安装所需的 locale ,或重新选择一个不同的 locale 。
|
|
|
|
+ 后文假设 Glibc 没有输出类似错误消息。</para>
|
|
|
|
|
|
<!-- FIXME: the xlib example will became obsolete real soon -->
|
|
<!-- FIXME: the xlib example will became obsolete real soon -->
|
|
- <para>Some packages beyond LFS may also lack support for your chosen locale. One
|
|
|
|
|
|
+ <!--para>Some packages beyond LFS may also lack support for your chosen locale. One
|
|
example is the X library (part of the X Window System), which outputs the
|
|
example is the X library (part of the X Window System), which outputs the
|
|
following error message if the locale does not exactly match one of the character
|
|
following error message if the locale does not exactly match one of the character
|
|
- map names in its internal files:</para>
|
|
|
|
|
|
+ map names in its internal files:</para-->
|
|
|
|
+ <para>某些 LFS 以外的软件包可能缺乏对您选择的 locale 的支持,
|
|
|
|
+ 例如 X 库(X 窗口系统的一部分),它在您的 locale
|
|
|
|
+ 与它内部文件中的字符映射表名不完全匹配时,会输出以下错误消息:</para>
|
|
|
|
|
|
<screen><computeroutput>Warning: locale not supported by Xlib, locale set to C</computeroutput></screen>
|
|
<screen><computeroutput>Warning: locale not supported by Xlib, locale set to C</computeroutput></screen>
|
|
|
|
|
|
- <para>In several cases Xlib expects that the character map will be listed in
|
|
|
|
|
|
+ <!--para>In several cases Xlib expects that the character map will be listed in
|
|
uppercase notation with canonical dashes. For instance, "ISO-8859-1" rather
|
|
uppercase notation with canonical dashes. For instance, "ISO-8859-1" rather
|
|
than "iso88591". It is also possible to find an appropriate specification by
|
|
than "iso88591". It is also possible to find an appropriate specification by
|
|
removing the charmap part of the locale specification. This can be checked
|
|
removing the charmap part of the locale specification. This can be checked
|
|
by running the <command>locale charmap</command> command in both locales.
|
|
by running the <command>locale charmap</command> command in both locales.
|
|
For example, one would have to change "de_DE.ISO-8859-15@euro" to
|
|
For example, one would have to change "de_DE.ISO-8859-15@euro" to
|
|
- "de_DE@euro" in order to get this locale recognized by Xlib.</para>
|
|
|
|
-
|
|
|
|
- <para>Other packages can also function incorrectly (but may not necessarily
|
|
|
|
|
|
+ "de_DE@euro" in order to get this locale recognized by Xlib.</para-->
|
|
|
|
+ <para>某些情况下 Xlib 期望字符映射以带有规范连字符的大写形式给出,
|
|
|
|
+ 例如应该使用 <quote>ISO-8859-1</quote> 而不是
|
|
|
|
+ <quote>iso88591</quote>。
|
|
|
|
+ 有时也可以通过去除 locale 规范中的字符映射部分找到合适的规范,
|
|
|
|
+ 可以通过运行 <command>locale charmap</command> 确认。
|
|
|
|
+ 例如,您需要将 <quote>de_DE.ISO-8859-15@euro</quote>
|
|
|
|
+ 替换成 <quote>de_DE@euro</quote>,以获得 Xlib 能够识别的 locale。
|
|
|
|
+ </para>
|
|
|
|
+
|
|
|
|
+ <!--para>Other packages can also function incorrectly (but may not necessarily
|
|
display any error messages) if the locale name does not meet their expectations.
|
|
display any error messages) if the locale name does not meet their expectations.
|
|
In those cases, investigating how other Linux distributions support your locale
|
|
In those cases, investigating how other Linux distributions support your locale
|
|
- might provide some useful information.</para>
|
|
|
|
|
|
+ might provide some useful information.</para-->
|
|
|
|
+ <para>其他软件包在 locale 名不符合它们的期望时可能工作不正常
|
|
|
|
+ (但未必输出错误消息)。在这种情况下,探索一下其他 Linux
|
|
|
|
+ 发行版是如何支持您的 locale 的,可以得到一些有用的信息。</para>
|
|
|
|
|
|
- <para>Once the proper locale settings have been determined, create the
|
|
|
|
- <filename>/etc/locale.conf</filename> file:</para>
|
|
|
|
|
|
+ <para>在确定了正确的 locale 设置后,创建
|
|
|
|
+ <filename>/etc/locale.conf</filename> file:</para>
|
|
|
|
|
|
<screen><userinput>cat > /etc/locale.conf << "EOF"
|
|
<screen><userinput>cat > /etc/locale.conf << "EOF"
|
|
<literal>LANG=<replaceable><ll>_<CC>.<charmap><@modifiers></replaceable></literal>
|
|
<literal>LANG=<replaceable><ll>_<CC>.<charmap><@modifiers></replaceable></literal>
|
|
EOF</userinput></screen>
|
|
EOF</userinput></screen>
|
|
|
|
|
|
- <para>Note that you can modify <filename>/etc/locale.conf</filename> with the
|
|
|
|
- systemd <command>localectl</command> utility. To use
|
|
|
|
- <command>localectl</command> for the example above, run:</para>
|
|
|
|
|
|
+ <para>您也可以使用 systemd 的 <command>localectl</command> 工具修改
|
|
|
|
+ <filename>/etc/locale.conf</filename> 。如果希望使用
|
|
|
|
+ <command>localectl</command> 创建以上例子中的
|
|
|
|
+ <filename>locale.conf</filename>,运行:</para>
|
|
|
|
|
|
<screen role="nodump"><userinput>localectl set-locale LANG="<replaceable><ll>_<CC>.<charmap><@modifiers></replaceable>"</userinput></screen>
|
|
<screen role="nodump"><userinput>localectl set-locale LANG="<replaceable><ll>_<CC>.<charmap><@modifiers></replaceable>"</userinput></screen>
|
|
|
|
|
|
- <para>You can also specify other language specific environment variables such
|
|
|
|
|
|
+ <!--para>You can also specify other language specific environment variables such
|
|
as <envar>LANG</envar>, <envar>LC_CTYPE</envar>, <envar>LC_NUMERIC</envar> or
|
|
as <envar>LANG</envar>, <envar>LC_CTYPE</envar>, <envar>LC_NUMERIC</envar> or
|
|
any other environment variable from <command>locale</command> output. Just
|
|
any other environment variable from <command>locale</command> output. Just
|
|
separate them with a space. An example where <envar>LANG</envar> is set as
|
|
separate them with a space. An example where <envar>LANG</envar> is set as
|
|
- en_US.UTF-8 but <envar>LC_CTYPE</envar> is set as just en_US is:</para>
|
|
|
|
|
|
+ en_US.UTF-8 but <envar>LC_CTYPE</envar> is set as just en_US is:</para-->
|
|
|
|
+ <para>您也可以指定其他语言相关的环境变量,例如 <envar>LANG</envar>、
|
|
|
|
+ <envar>LC_CTYPE</envar>、<envar>LC_NUMERIC</envar> 或
|
|
|
|
+ <command>locale</command> 输出的其他环境变量,用空格将它们分割即可。
|
|
|
|
+ 例如,将 <envar>LANG</envar> 设置为 en_US.UTF-8,但
|
|
|
|
+ <envar>LC_CTYPE</envar> 设置为 en_US:</para>
|
|
|
|
|
|
<screen role="nodump"><userinput>localectl set-locale LANG="en_US.UTF-8" LC_CTYPE="en_US"</userinput></screen>
|
|
<screen role="nodump"><userinput>localectl set-locale LANG="en_US.UTF-8" LC_CTYPE="en_US"</userinput></screen>
|
|
|
|
|
|
- <note><para>Please note that the <command>localectl</command> command can
|
|
|
|
- be used only on a system booted with systemd.</para></note>
|
|
|
|
|
|
+ <note><title>译注</title>
|
|
|
|
+ <para>这种设置的好处是使得一些程序(如 <command>gcc</command>)
|
|
|
|
+ 不使用 UTF-8 引号。默认终端字体不包含 UTF-8 字形,因此 UTF-8
|
|
|
|
+ 引号会显示为一个白底黑字问号。如果希望使用 UTF-8 引号,
|
|
|
|
+ 参阅
|
|
|
|
+ <ulink url="&blfs-book;postlfs/console-fonts.html">BLFS</ulink>
|
|
|
|
+ 中的说明安装支持 UTF-8 符号的终端字体。
|
|
|
|
+ </para>
|
|
|
|
+ </note>
|
|
|
|
|
|
- <para>The <quote>C</quote> (default) and <quote>en_US</quote> (the recommended
|
|
|
|
|
|
+ <note><para>请注意 <command>localectl</command> 只能在使用 systemd
|
|
|
|
+ 引导的系统中使用。</para></note>
|
|
|
|
+
|
|
|
|
+ <!--para>The <quote>C</quote> (default) and <quote>en_US</quote> (the recommended
|
|
one for United States English users) locales are different. <quote>C</quote>
|
|
one for United States English users) locales are different. <quote>C</quote>
|
|
uses the US-ASCII 7-bit character set, and treats bytes with the high bit set
|
|
uses the US-ASCII 7-bit character set, and treats bytes with the high bit set
|
|
as invalid characters. That's why, e.g., the <command>ls</command> command
|
|
as invalid characters. That's why, e.g., the <command>ls</command> command
|
|
@@ -143,10 +192,19 @@ EOF</userinput></screen>
|
|
mail with such characters from Mutt or Pine results in non-RFC-conforming
|
|
mail with such characters from Mutt or Pine results in non-RFC-conforming
|
|
messages being sent (the charset in the outgoing mail is indicated as <quote>unknown
|
|
messages being sent (the charset in the outgoing mail is indicated as <quote>unknown
|
|
8-bit</quote>). So you can use the <quote>C</quote> locale only if you are sure that
|
|
8-bit</quote>). So you can use the <quote>C</quote> locale only if you are sure that
|
|
- you will never need 8-bit characters.</para>
|
|
|
|
-
|
|
|
|
- <para>UTF-8 based locales are not supported well by many programs.
|
|
|
|
- Work is in progress to document and, if possible, fix such problems, see
|
|
|
|
- <ulink url="&blfs-book;introduction/locale-issues.html"/>.</para>
|
|
|
|
|
|
+ you will never need 8-bit characters.</para-->
|
|
|
|
+ <para><quote>C</quote> (默认 locale)和 <quote>en_US</quote>
|
|
|
|
+ (推荐美式英语用户使用的 locale)是不同的。
|
|
|
|
+ <quote>C</quote> locale 使用 US-ASCII 7 位字符集,并且将最高位为 1
|
|
|
|
+ 的字节视为无效字符。因此,<command>ls</command>
|
|
|
|
+ 等命令会将它们替换为问号。另外,如果试图用 Mutt 或 Pine
|
|
|
|
+ 发送包含这些字符的邮件,会发出不符合 RFC 标准的消息
|
|
|
|
+ (发出邮件的字符集会被标为 <quote>未知 8 位</quote>)。
|
|
|
|
+ 因此,您只能在确信自己永远不会使用 8 位字符时才能使用
|
|
|
|
+ <quote>C</quote> locale。</para>
|
|
|
|
+
|
|
|
|
+ <para>许多程序不能很好地支持基于 UTF-8 的 locale,
|
|
|
|
+ 我们正在努力记录并(如果可能的话)修复它们,参阅
|
|
|
|
+ <ulink url="&blfs-book;introduction/locale-issues.html"/>。</para>
|
|
|
|
|
|
</sect1>
|
|
</sect1>
|