22.2. 使用語系
前一頁 | 章 22. 在地化 - i18n/L10n 使用與安裝 | 下一頁

## 22.2. 使用語系

語系設定值由三個元件所組成：語言代號、城市代號及編碼。語系名稱組成的方式如下：

    LanguageCode_CountryCode.Encoding

`LanguageCode` 與 `CountryCode` 用來表示城市及特定語言。表格 22.1, “常用語言及城市代碼” 提供了幾個 `LanguageCode`_`CountryCode` 的範例：

表格 22.1. 常用語言及城市代碼

語言代號_城市代號 | 說明
--- | ---
en_US | 英文，美國
ru_RU | 俄文，俄國
zh_TW | 繁體中文，台灣

完整可用的語系清單可用以下指令查詢：

    % locale -a | more

查詢目前使用的語系設定：

    % locale

語言特定的字元集如 ISO8859-1, ISO8859-15, KOI8-R 及 CP437 在 multibyte(3) 有詳細說明。可用的字元集可在 IANA Registry 查詢。

某些語言，如中文或日文，無法使用 ASCII 字元表示，會需要使用寬 (Wide) 字元或多位元組 (Multibyte) 字元來擴充的語言編碼。EUC 與 Big5 即是使用寬子元或多位元組字元的例子。舊的應用程式會誤判這些字元為控制字元，新的應用程式則通常可以辨識這些字元，依實作的需要，使用者可能需要開啟寬字元或多位元組字元支援或者使用正確的字元設定來編譯應用程式。

### 注意:

FreeBSD 使用 Xorg 相容的語系編碼。

本節剩餘的部份將說明各種在 FreeBSD 系統上設定語系的方法。下一節將會探討如何尋找以及編譯使用 i18n 支援的應用程式。

### 22.2.1. 設定登入 Shell 的語系

語系設定可在使用者的 `~/.login_conf` 或使用者的 Shell 的啟動檔設定：`~/.profile`, `~/.bashrc` 或 `~/.cshrc`。

有兩個環境變數需要設定：

- `LANG` 用來設定語系

- `MM_CHARSET` 用來設定應用程式所使用的 MIME 字元集

除了使用者的 Shell 設定外，這些變數也應針對特定應用程式設定以及 Xorg 設定。

兩種可以完成所需變數設定的方法有：登入類別 (Login class) 法 (較建議) 及 啟動檔 (Startup file) 法。以下兩節將示範如何使用這兩個方法。

#### 22.2.1.1. 登入類別 (Login Class) 法

第一種方式，同時也是建議使用的方法，它可以對任何可能的 Shell 設定需要的語系及 MIME 字元集變數。此設定也可由每位使用者自行設定或者由超級管理者為所有使用者設定。

以下精簡範例示範在一個使用者的家目錄中的 `.login_conf` 設定 Latin-1 編碼使用的兩個環境變數：

    me:\
    	:charset=ISO-8859-1:\
    	:lang=de_DE.ISO8859-1:

以下使用者的 `~/.login_conf` 範例設定了繁體中文於 BIG-5 編碼使用到的環境變數。有一部份應用程式無法正確處理中文、日文及韓文的語系變數，因此需要額外多做一些設定：

    #Users who do not wish to use monetary units or time formats
    #of Taiwan can manually change each variable
    me:\
    	:lang=zh_TW.Big5:\
    	:setenv=LC_ALL=zh_TW.Big5,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=gcin": #Set gcin as the XIM Input Server

或者，超級使用者可以設定所有系統使用者的語系。以下在 `/etc/login.conf` 中的變數可用來設定語系及 MIME 字元集：

    language_name|Account Type Description:\
    	:charset=MIME_charset:\
    	:lang=locale_name:\
    	:tc=default:

若套用之前的 Latin-1 編碼範例如下：

    german|German Users Accounts:\
    	:charset=ISO-8859-1:\
    	:lang=de_DE.ISO8859-1:\
    	:tc=default:

請參考 login.conf(5) 以取得更多有關這些變數的詳細資訊。

每次編輯 `/etc/login.conf` 之後，請記得要執行以下指令來更新登入類別的能力資料庫(Capability database)：

    # cap_mkdb /etc/login.conf

##### 22.2.1.1.1. 變更登入類別的工具

除了手動編輯 `/etc/login.conf` 之外，尚有需多工具可用來為新建立的使用者設定語系。

當使用 `vipw` 來新增使用者時，可指定 `language` 來設定語系：

    user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh

當使用 `adduser` 來新增使用者時，可對所有使用者或指定的使用者事先設定預設的語言。

若所有新的使用者都使用同樣的語言，可在 `/etc/adduser.conf` 設定 `defaultclass=`language``。

要在建立使用者時覆蓋預設的設定，可在出現此提示時輸入需要的語系：

    Enter login class: default []:

或執行 `adduser` 時指定語系：

    # adduser -class language

若使用 `pw` 來新增使用者，則可指定語系如下：

    # pw useradd user_name -L language

#### 22.2.1.2. Shell 啟動檔 (Startup File) 法

第二種方法，較不建議使用，因每一種使用到的 Shell 都需要手動設定，而每一種 Shell 都有不同的設定檔以及語法。例如將一位使用者的 `sh` shell 設定為德語，需要將下列行加到 `~/.profile`，若要設定給使用該 Shell 的所有使用者則必須將下列行加到 `/etc/profile` 或 `/usr/share/skel/dot.profile`：

    LANG=de_DE.ISO8859-1; export LANG
    MM_CHARSET=ISO-8859-1; export MM_CHARSET

然而，在 `csh` shell 所使用的設定檔名稱及語法不同。同樣的設定需加入下列行至 `~/.csh.login`, `/etc/csh.login` 或 `/usr/share/skel/dot.login`：

    setenv LANG de_DE.ISO8859-1
    setenv MM_CHARSET ISO-8859-1

更複雜一點的情況，Xorg 的 `~/.xinitrc` 語系設定會依使用的 Shell 而有所不同。第一個例子是針對 `sh` shell 而第二個則是針對 `csh` shell：

    LANG=de_DE.ISO8859-1; export LANG

    setenv LANG de_DE.ISO8859-1

### 22.2.2. Console 設定

已有許多語系的字型可在 Console 使用，要查看可用的字型清單，可輸入 `ls /usr/share/syscons/fonts`。要設定 Console 的字型，可在 `/etc/rc.conf` 指定去掉 `.fnt` 字尾的字型名稱 `font_name`：

    font8x16=font_name
    font8x14=font_name
    font8x8=font_name

鍵盤對應表 (Keymap) 及螢幕對應表 (Screenmap) 用可加入下行到 `/etc/rc.conf` 來設定：

    scrnmap=screenmap_name
    keymap=keymap_name
    keychange="fkey_number sequence"

要查看可用的螢幕對應表，可輸入 `ls /usr/share/syscons/scrnmaps`。在設定螢幕對應表 `screenmap_name` 時請去掉 `.scm` 字尾。在 VGA Adapter 的字型字元矩陣擴充位元 8 到位元 9 時會需要使用螢幕對應表與相關的字型對應來解決，因此若螢幕字型使用位元 8 的欄位，字母會移出虛擬繪圖區 (Pseudographics area)。

要查看可用的鍵盤對應表，可輸入 `ls /usr/share/syscons/keymaps`。在設定鍵盤對應表 `keymap_name` 時請去掉 `.kbd` 字尾。若要不重開機測試鍵盤對應用可使用 kbdmap(1)。

`keychange` 項目用在當功能鍵序列無法定義在鍵盤對應表時，可設定對應選擇終對機類型的功能鍵。

接下來，在 `/etc/ttys` 為所有虛擬終端機項目設定正確的 Console 終端機類型。表格 22.2, “已定義供特定字元集使用的終端機類型” 摘要了可用的終端機類型：

表格 22.2. 已定義供特定字元集使用的終端機類型

字元集 | 終端機類型
--- | ---
ISO8859-1 or ISO8859-15 | `cons25l1`
ISO8859-2 | `cons25l2`
ISO8859-7 | `cons25l7`
KOI8-R | `cons25r`
KOI8-U | `cons25u`
CP437 (VGA 預設值) | `cons25`
US-ASCII | `cons25w`

對於使用寬字元或多位元組字元的語言，需從 Port 套件集安裝支援該語言的 Console。 可用的 Port 摘要在 表格 22.3, “Port 套件集中可用的 Console”。安裝完成之後，請參考 Port 的 `pkg-message` 或操作手冊來取得設定及使用說明。

表格 22.3. Port 套件集中可用的 Console

語言 | Port 位置
--- | ---
繁體中文 (BIG-5) | chinese/big5con
中文/日文/韓文 | chinese/cce
中文/日文/韓文 | chinese/zhcon
日文 | chinese/kon2
日文 | japanese/kon2-14dot
日文 | japanese/kon2-16dot

若在 `/etc/rc.conf` 有開啟 moused，可能會需要額外的設定。預設 syscons(4) 驅動程式的滑鼠游標會佔用字元集 `0xd0`-`0xd3` 的範圍，若語言有使用到此範圍，可加入以下行到 `/etc/rc.conf` 來移動游標的範圍：

    mousechar_start=3

### 22.2.3. Xorg 設定

章 5, X Window 系統 會說明如何安裝並設定 Xorg。當要設定 Xorg 在地化時，可從 FreeBSD Port 套件集中取得其他可用的字型及輸入法。應用程式特定的 i18n 設定像是字型與選單，可以在 `~/.Xresources` 中調校且可允許使用者在圖型化應用程式選單檢視其所選擇的語言。

X 輸入法 (X Input Method, XIM) 協定是 Xorg 針對輸入非英語字元的標準。表格 22.4, “可用的輸入法” 摘要了在 FreeBSD 套件集中可用的輸入法應用程式。也可使用其他如 Fcitx 及 Uim 應用程式。

表格 22.4. 可用的輸入法

語言 | 輸入法
--- | ---
中文 | chinese/gcin
中文 | chinese/ibus-chewing
中文 | chinese/ibus-pinyin
中文 | chinese/oxim
中文 | chinese/scim-fcitx
中文 | chinese/scim-pinyin
中文 | chinese/scim-tables
日文 | japanese/ibus-anthy
日文 | japanese/ibus-mozc
日文 | japanese/ibus-skk
日文 | japanese/im-ja
日文 | japanese/kinput2
日文 | japanese/scim-anthy
日文 | japanese/scim-canna
日文 | japanese/scim-honoka
日文 | japanese/scim-honoka-plugin-romkan
日文 | japanese/scim-honoka-plugin-wnn
日文 | japanese/scim-prime
日文 | japanese/scim-skk
日文 | japanese/scim-tables
日文 | japanese/scim-tomoe
日文 | japanese/scim-uim
日文 | japanese/skkinput
日文 | japanese/skkinput3
日文 | japanese/uim-anthy
韓文 | korean/ibus-hangul
韓文 | korean/imhangul
韓文 | korean/nabi
韓文 | korean/scim-hangul
韓文 | korean/scim-tables
越南文 | vietnamese/xvnkb
越南文 | vietnamese/x-unikey

前一頁 | 上一層 | 下一頁
章 22. 在地化 - i18n/L10n 使用與安裝 | 起始頁 | 22.3. 尋找 i18n 應用程式

本文及其他文件，可由此下載： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。

若有 FreeBSD 方面疑問，請先閱讀 FreeBSD 相關文件，如不能解決的話，再洽詢 <questions@FreeBSD.org>。
關於本文件的問題，請洽詢 <doc@FreeBSD.org>。