📄 using-localization.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy, see www.w3.org" /><title>使用本地化语言</title><meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" /><link rel="HOME" title="FreeBSD 使用手册" href="index.html" /><link rel="UP" title="本地化-I18N/L10N使用和设置" href="l10n.html" /><link rel="PREVIOUS" title="基础知识" href="l10n-basics.html" /><link rel="NEXT" title="编译I18N程序" href="l10n-compiling.html" /><link rel="STYLESHEET" type="text/css" href="docbook.css" /><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"alink="#0000FF"><div class="NAVHEADER"><table summary="Header navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><th colspan="3" align="center">FreeBSD 使用手册</th></tr><tr><td width="10%" align="left" valign="bottom"><a href="l10n-basics.html"accesskey="P">Prev</a></td><td width="80%" align="center" valign="bottom">Chapter 14.本地化-I18N/L10N使用和设置</td><td width="10%" align="right" valign="bottom"><a href="l10n-compiling.html"accesskey="N">Next</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="USING-LOCALIZATION" name="USING-LOCALIZATION">14.3.使用本地化语言</a></h1><p>I18N不是FreeBSD特有的,它是一个规则。我们鼓励你帮助FreeBSD完善这一规则。</p><p>本地化设置需要具备三个条件:语言代码(Language Code)、国家代码(CountryCode)和编码(Encoding) 。本地名字可以用下面这些部分来构造:</p><pre class="PROGRAMLISTING"><var class="REPLACEABLE">语言代码</var>_<var class="REPLACEABLE">国家代码</var>.<varclass="REPLACEABLE">编码</var></pre><div class="SECT2"><h2 class="SECT2"><a id="AEN19415" name="AEN19415">14.3.1. 语言和国家代码</a></h2><p>为了用特殊的语言来对FreeBSD系统进行本地化(或其他类<spanclass="TRADEMARK">UNIX</span>®系统),用户必须要知道相应的国家和语言代码(国家代码告诉应用程序使用哪一种语言规范)。此外,WEB浏览器,SMTP/POP服务器,web服务器等都是以这个为基础的。下面就是一个国家和语言代码的例子:</p><div class="INFORMALTABLE"><a id="AEN19423" name="AEN19423"></a><table border="0" frame="void" class="CALSTABLE"><col /><col /><thead><tr><th>语言/国家代码</th><th>描述</th></tr></thead><tbody><tr><td>en_US</td><td>美国英语</td></tr><tr><td>ru_RU</td><td>俄语</td></tr><tr><td>zh_CN</td><td>简体中文</td></tr></tbody></table></div></div><div class="SECT2"><h2 class="SECT2"><a id="AEN19439" name="AEN19439">14.3.2. 编码</a></h2><p>一些语言不使用ASCII编码,它们使用8位,更宽或多位的字符,更多的信息可以看看<spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">multibyte</span>(3)</span> 。比较老的应用程序可能会无法认出它们,把它们误认为是控制字符。比较新的应用程序通常会认出8位字符。 根据执行情况,用户可能需要使用更宽或多位字符支持的标准来重新编译这个应用程序,或者将它正确配置。<ahref="../../../../ports/index.html" target="_top">FreeBSD Ports collection</a>已经为每一个语言提供了相应的程序。可以在各自的FreeBSD port中参考一下I18N的文档。</p><p>需要特别指出的:用户需要看看应用程序的文档以决定如何配置才能正确设置configure/Makefile/compiler。</p><p>记住下面这些:</p><ul><li><p>特定语言的简单C字符集(参考<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">multibyte</span>(3)</span>),以及ISO-8859-1, ISO-8859-15, KOI8-R,CP437.</p></li><li><p>宽字节或多字节编码,如EUC, Big5。</p></li></ul><p>你可以在<a href="http://www.iana.org/assignments/character-sets" target="_top">IANARegistry</a>检查一下现行的字符集列表。</p><div class="NOTE"><blockquote class="NOTE"><p><b>Note:</b> FreeBSD 4.5及以后的版本使用X11兼容的本地编码来代替。</p></blockquote></div></div><div class="SECT2"><h2 class="SECT2"><a id="AEN19464" name="AEN19464">14.3.3. I18N应用程序</a></h2><p>在FreeBSD Ports和Package系统里面,I18N应用程序已经使用<var class="LITERAL">I18N</var>来命名。然而它们不是总支持需要的语言。</p></div><div class="SECT2"><h2 class="SECT2"><a id="SETTING-LOCALE" name="SETTING-LOCALE">14.3.4.本地化设置</a></h2><p>通常只要在登入shell里面设置<tt class="ENVAR">LANG</tt>为本地化,一般通过设置用户的<ttclass="FILENAME">~/.login_conf</tt> 或用户shell的启动文件(<ttclass="FILENAME">~/.profile</tt>,<tt class="FILENAME">~/.bashrc</tt>, <ttclass="FILENAME">~/.cshrc</tt>)。没有必要设置<tt class="ENVAR">LC_CTYPE</tt>,<ttclass="ENVAR">LC_CTIME</tt>。 更多的信息请参考特定语言的FreeBSD文档。</p><p>你应当在你的配置文件中设置下面两个变量:</p><ul><li><p><tt class="ENVAR">LANG</tt> 为<spanclass="TRADEMARK">POSIX</span>®设置本地化语言功能。</p></li><li><p><tt class="ENVAR">MM_CHARSET</tt>应用程序的MIME字符集。</p></li></ul><p>这包括用户的shell配置,特定的应用配置和X11配置。</p><div class="SECT3"><h3 class="SECT3"><a id="AEN19492" name="AEN19492">14.3.4.1. 设置本地化的方法</a></h3><p>有两种方法来设置本地化,接下来都会描述。 第一种(被推荐的一种)就是在<ahref="using-localization.html#LOGIN-CLASS">登入分类</a> 里面指定环境变量。第二种方法是把环境变量加到shell的<ahref="using-localization.html#STARTUP-FILE">启动文件</a>里面。</p><div class="SECT4"><h4 class="SECT4"><a id="LOGIN-CLASS" name="LOGIN-CLASS">14.3.4.1.1.登入分类方法</a></h4><p>这种方法允许把本地化名称和MIME字符集的环境变量赋给可能的shell,而不是加到每个特定shell的启动文件里面。<a href="using-localization.html#USR-SETUP">用户级设置 Level Setup</a>允许普通用户自己完成这个设置,而<ahref="using-localization.html#ADM-SETUP">管理员级设置</a>需要超级用户权限。</p><div class="SECT5"><h5 class="SECT5"><a id="USR-SETUP" name="USR-SETUP">14.3.4.1.1.1. 用户级设置</a></h5><p>这有一个设置用户根目录文件<tt class="FILENAME">.login_conf</tt>的小例子,它为上述两个变量设置了Latin-1编码。</p><pre class="PROGRAMLISTING">me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:</pre><p>这是一个为<ttclass="FILENAME">.login_conf</tt>设置繁体中文的BIG-5编码的例子。应该设置下面的大部分变量,因为很多软件都没有为中文,日文和韩文设置正确的本地化变量。</p><pre class="PROGRAMLISTING">#Users who do not wish to use monetary units or time formats#of Taiwan can manually change each variableme:\ lang=zh_TW.Big5:\ lc_all=zh_TW.Big:\ lc_collate=zh_TW.Big5:\ lc_ctype=zh_TW.Big5:\ lc_messages=zh_TW.Big5:\ lc_monetary=zh_TW.Big5:\ lc_numeric=zh_TW.Big5:\ lc_time=zh_TW.Big5:\ charset=big5:\ xmodifiers="@im=xcin": #Setting the XIM Input Server</pre><p>更多的信息参考<a href="using-localization.html#ADM-SETUP">管理员级设置</a>和<spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">login.conf</span>(5)</span></p></div><div class="SECT5"><h5 class="SECT5"><a id="ADM-SETUP" name="ADM-SETUP">14.3.4.1.1.2. 管理员级设置</a></h5><p>检查用户的登入分类在 <ttclass="FILENAME">/etc/login.conf</tt>里面是否设置了正确的语言。主要确定下面的几个设置:</p><pre class="PROGRAMLISTING"><var class="REPLACEABLE">language_name</var>:<varclass="REPLACEABLE">accounts_title</var>:\ :charset=<var class="REPLACEABLE">MIME_charset</var>:\ :lang=<var class="REPLACEABLE">locale_name</var>:\ :tc=default:</pre><p>再次使用前面的Latin-1编码的例子:</p><pre class="PROGRAMLISTING">german:German Users Accounts:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:\ :tc=default:</pre><h4 class="BRIDGEHEAD"><a id="AEN19533" name="AEN19533"></a>使用<spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">vipw</span>(8)</span>改变登入类型。</h4><p>使用<tt class="COMMAND">vipw</tt>添加新用户,看起来像下面这样:</p><pre class="PROGRAMLISTING">user:password:1111:11:<varclass="REPLACEABLE">language</var>:0:0:User Name:/home/user:/bin/sh</pre><h4 class="BRIDGEHEAD"><a id="AEN19544" name="AEN19544"></a>用<spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">adduser</span>(8)</span>改变登入类型。</h4><p>用<tt class="COMMAND">adduser</tt>添加新用户看起来像下面这样:</p><ul><li><p>在<tt class="FILENAME">/etc/adduser.conf</tt>里面设置<var class="LITERAL">defaultclass= <var class="REPLACEABLE">语言</var></var>。应该记住,你必须为使用其它语言的所有用户设置<var class="LITERAL">缺省</var>类别。</p></li><li><p>每一次使用<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">adduser</span>(8)</span>的时候,一个特定语言的可选择性回答会像下面这样给出:</p><pre class="SCREEN"><samp class="PROMPT">Enter login class: default []:</samp></pre><br /><br /></li><li><p>如果你打算给每一个用户使用另外一种语言,你应该这样:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">adduser -class <varclass="REPLACEABLE">language</var></kbd></pre></li></ul><h4 class="BRIDGEHEAD"><a id="AEN19575" name="AEN19575"></a>使用<spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">pw</span>(8)</span>改变登入类型。</h4><p>如果你使用<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">pw</span>(8)</span>来添加新用户,应该这样使用:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">pw useradd <varclass="REPLACEABLE">user_name</var> -L <var class="REPLACEABLE">language</var></kbd></pre></div></div>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -