10.4. 語言與國家專用的設定

SUSE Linux 在很大程度上是國際化的軟體,而且能以彈性的方式針對當地的需求進行修改。換句話說,國際化 (I18N) 允許特定的當地語系化 (L10N)。I18N 與 L10N 這兩個縮寫是取首尾兩個字母,兩字母中間再加上省略的字母數目。

設定位於 /etc/sysconfig/language 中所定義的 LC_ 變數。設定範圍除了本地語言支援外,還包括訊息 (語言)、字元集排序順序時間和日期數字貨幣等類別。每種類別都可以用自己的變數來直接定義,或用在 language 檔案中的主要變數來間接定義 (請參閱 locale man 頁面)。

RC_LC_MESSAGESRC_LC_CTYPERC_LC_COLLATERC_LC_TIMERC_LC_NUMERICRC_LC_MONETARY

這些變數會傳送到外圍程序,但不會包含 RC_ 字首,並代表列出的類別。相關外圍程序設定檔會列於下面。目前的設定可以用 locale 指令來顯示。

RC_LC_ALL

此變數 (如果設定) 會覆寫先前所提到的變數值。

RC_LANG

如果沒有設定前面的變數,則此為備用變數。依預設,SUSE Linux 僅會設定 RC_LANG。這讓使用者更容易輸入自己的值。

ROOT_USES_LANG

yesno 兩個變數。如果設為 no 的話,則 root 永遠可在 POSIX 環境中作業。

變數可以用 YaST sysconfig 編輯器來設定 (請參閱 節 8.3.1, "使用 YaST Sysconfig 編輯器變更系統組態")。這樣的變數值中包含語言碼、國碼、編碼及修飾元。個別的元件會以特定的字元來連接:

  LANG=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]

10.4.1. 一些範例

您必須將語言與國碼一起設定。語言設定必須符合 http://www.evertype.com/standards/iso639/iso639-en.htmlhttp://www.loc.gov/standards/iso639-2/ 中的標準 ISO 639。國碼列在 http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html 中的 ISO 3166。

只有設定那些可以在 /usr/lib/locale 中找到的可用描述檔案的值,才會有意義。您可以用 localedef 指令從 /usr/share/i18n 中的檔案建立其他描述檔。描述檔包含在 glibc-i18ndata 套件中。en_US.UTF-8 (針對美式英文) 的描述檔可以用以下指令建立:

localedef -i en_US -f UTF-8 en_US.UTF-8
LANG=en_US.UTF-8

如果安裝期間選擇美式英文的話,則此為預設設定。如果您選擇了其他語言,則仍然可以使用該語言,但會以 UTF-8 做為字元編碼。

LANG=en_US.ISO-8859-1

這會將語言設成英文、國家設成美國、字元集設成 ISO-8859-1。此字元集並不支援歐元符號,但有時對於尚未支援 UTF-8 的程式卻非常實用。然後,有些程式將會評估定義字元集的 (此例為 ISO-8859-1) 的字串,像是 Emacs。

LANG=en_IE@euro

上方範例在語言設定中明確包括歐元符號。嚴格來說,這個設定現在已不再使用,因為 UTF-8 也涵蓋歐元符號。它只有在應用程式不支援 UTF-8 而只支援 ISO-8859-15 時才有用。

SUSEconfig 會讀取 /etc/sysconfig/language 中的變數,並將必要的變更寫入 /etc/SuSEconfig/profile/etc/SuSEconfig/csh.cshrc 中。/etc/profile 將讀取 /etc/SuSEconfig/profile,或將之做為來源/etc/SuSEconfig/csh.cshrc 則是 /etc/csh.cshrc 的來源。這讓這些設定能在整個系統中使用。

使用者可以適當地編輯自己的 ~/.bashrc 來覆寫系統預設值。例如,若不要讓整個系統的程式訊息皆使用 en_US 時,請加入 LC_MESSAGES=es_ES,便會改用西班牙文來顯示訊息。

10.4.2. ~/.i18n 中的地區設定

如果您不滿意地區系統預設值,請變更 ~/.i18n 中的設定。~/.i18n 中的項目會覆寫 /etc/sysconfig/language 中的系統預設值。使用相同變數名稱,但不用 RC_ 名稱空間字首,例如,用 LANG 取代 RC_LANG

10.4.3. 語言支援的設定

按照規定,在訊息類別中的檔案僅會儲存於對應的語言目錄中 (像是 en),以便有備用可用。如果您將 LANG 設為 en_US,而且 /usr/share/locale/en_US/LC_MESSAGES 中的訊息檔案不存在的話,則它會回到 /usr/share/locale/en/LC_MESSAGES 中。

您也可以定義備用鍊,例如,不列塔尼文之於法文,或是加里斯亞文之於西班牙文之於葡萄牙文:

LANGUAGE="br_FR:fr_FR"

LANGUAGE="gl_ES:es_ES:pt_PT"

如有需要,請改用挪威文變體 Nynorsk 與 Bokmal (讓其他備用為):

LANG="nn_NO"

LANGUAGE="nn_NO:nb_NO:no"

或者

LANG="nb_NO"

LANGUAGE="nb_NO:nn_NO:no"

請注意,在挪威文中,會以不同方式處理 LC_TIME

如果無法適當的辨識界定位數群組的分隔符號,可能會發生問題。如果 LANG 設定為類似 de 的兩個字母的語言碼,但卻使用 /usr/share/lib/de_DE/LC_NUMERIC 中的定義檔 glibc,就會發生這種情形。因此,LC_NUMERIC 必須設定為 de_DE,讓系統能辨識分隔符號定義。

10.4.4. 如需詳細資訊

  • The GNU C Library Reference Manual 的 "Locales and Internationalization" 一章。包含在 glibc-info 中。

  • Markus Kuhn 所寫的 UTF-8 and Unicode FAQ for Unix/Linux,目前網址如下:http://www.cl.cam.ac.uk/~mgk25/unicode.html

  • Unicode-Howto,Bruno Haible 著:/usr/share/doc/howto/en/html/Unicode-HOWTO.html