本系統在很大程度上是國際化的軟體,而且能以彈性的方式針對當地的需求進行修改。換句話說,國際化 (I18N) 允許特定的當地語系化 (L10N)。I18N 與 L10N 這兩個縮寫是取首尾兩個字母,兩字母中間再加上省略的字母數目。
設定位於 /etc/sysconfig/language
中所定義的 LC_
變數。設定範圍除了本地語言支援外,還包括訊息 (語言)、字元集、排序順序、時間和日期、數字及貨幣等類別。每種類別都可以用自己的變數來直接定義,或用在 language
檔案中的主要變數來間接定義 (請參閱 locale man 頁面)。
RC_LC_MESSAGES
、RC_LC_CTYPE
、RC_LC_COLLATE
、RC_LC_TIME
、RC_LC_NUMERIC
、RC_LC_MONETARY
這些變數會傳送到外圍程序,但不會包含 RC_
字首,並代表列出的類別。相關外圍程序設定檔會列於下面。目前的設定可以用 locale 指令來顯示。
RC_LC_ALL
此變數 (如果設定) 會覆寫先前所提到的變數值。
RC_LANG
如果沒有設定前面的變數,則此為備用變數。依照預設,只會設定 RC_LANG
。這讓使用者更容易輸入自己的值。
ROOT_USES_LANG
有 yes
或 no
兩個變數。如果設為 no
的話,則 root
永遠可在 POSIX 環境中作業。
變數可以用 YaST sysconfig 編輯器來設定 (請參閱第 20.3.1 節「使用 YaST Sysconfig 編輯器變更系統組態」)。這樣的變數值中包含語言碼、國碼、編碼及修飾元。個別的元件會以特定的字元來連接:
LANG=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]
您必須將語言與國碼一起設定。語言設定必須符合http://www.evertype.com/standards/iso639/iso639-en.html和http://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
,便會改用西班牙文來顯示訊息。
如果您對區域設定的系統預設值不滿意,可以根據 Bash 指令碼語法在 ~/.i18n
中變更設定值。~/.i18n
中的項目會覆寫 /etc/sysconfig/language
中的系統預設值。使用相同變數名稱,但不用 RC_
名稱空間字首,例如,以 LANG
取代 RC_LANG
:
LANG=cs_CZ.UTF-8 LC_COLLATE=C
按照規定,在訊息類別中的檔案僅會儲存於對應的語言目錄中 (像是 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
,讓系統能辨識分隔符號定義。
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
。