內容目錄
一個應用軟體的 多語言化 (M17N)或本地語言支援,通過 2 個步驟完成。
國際化 (I18N): 使一個軟體能夠處理多個語言環境。
本地化 (L10N):使一個軟體處理一個特定的語言環境。
![]() |
提示 |
---|---|
There are 17, 18, or 10 letters between "m" and "n", "i" and "n", or "l" and "n" in multilingualization, internationalization, and localization which correspond to M17N, I18N, and L10N. See Internationalization and localization for details. |
程式支援國際化的行為,是透過配置環境變數 "$LANG
"來支援本地化。語言環境的實際支援,依賴
libc
庫提供的特性,並要求安裝 locales
或
locales-all
軟體包。 locales
軟體包需要被適當的初始化。
如果 locales
或 locales-all
軟體包均沒有安裝,支援語言環境的特性丟失,系統使用 US 英語訊息,並按 ASCII 處理資料。這個行為和 "$LANG
" 被設定為
"LANG=
"、"LANG=C
" 或
"LANG=POSIX
" 相同。
GNOME 和 KDE 等現代軟體是多語言的。他們透過處理 UTF-8 資料來實現國際化,並透過
gettext
(1) 架構提供翻譯資訊來本地化。翻譯資訊可以由獨立的本地化軟體包來提供。
目前的 Debian 桌面 GUI(圖形使用者介面)系統通常在 GUI 環境中設定語言環境為
"LANG=xx_YY.UTF-8
"。這裡,"xx
" 是 ISO 639 語言程式碼 ,"YY
" 是
ISO 3166 國家地區程式碼。這些值由配置桌面的 GUI
對話方塊來設定,並改變程式的行為。參見 節 1.5.2, ““$LANG
”變量”
最簡單的文字資料表達是 ASCII,它對英語是足夠的,少於 127 個字元(使用 7 位描述)。
即使純英文文字也可能包含非 ASCII 字元,例如微微卷曲的左右引號在 ASCII 中是不可用的。
“double quoted text” is not "double quoted ASCII" ‘single quoted text’ is not 'single quoted ASCII'
為了支援更多字元,許多字符集和編碼系統被用來支援多語言。(參見 表格 11.2, “編碼值和用法的列表”)。
Unicode 字符集可以用 21 位碼點範圍來顯示幾乎所有人類已知的字元(例如,十六進位制的 0 到 10FFFF)。
文字編碼系統 UTF-8 將 Unicode 碼點適配到一個合理的 8 位資料流,並大部分相容 ASCII 資料處理系統。這個使 UTF-8 作為現代推薦的選擇。UTF 表示 Unicode 轉換格式(Unicode Transformation Format)。當 ASCII 純文字資料轉換為 UTF-8 資料,它有和原始 ASCII 完全一樣的內容和大小。所以配置 UTF-8 語言環境不會有任何丟失。
在 UTF-8
語言環境下相容的應用程式,你可以顯示和編輯外語文字資料,在所要求的字型和輸入法安裝和啟用後。例如在"LANG=fr_FR.UTF-8
"語言環境下,gedit
(1)
(GNOME 桌面的文字編輯器) 能夠顯示和編輯中文字元文字資料,而顯示的選單是法語。
![]() |
提示 |
---|---|
新標準的
" |
![]() |
注意 |
---|---|
一些程式在支援 I8N 後會消耗更多的記憶體。這是因為它們為了速度優化,而在內部使用 UTF-32(UCS4) 來支援 Unicode,並且每個獨立於語言環境所選的 ASCII 字元資料都會消耗 4 個位元組。再一次地,使用 UTF-8 語言環境並不會使你損失什麼。 |
為了讓系統訪問某一語言環境,語言環境資料必須從語言環境資料庫中編譯。
locales
軟體包 沒有
包含預先編譯的語言環境資料。你需要按下面的方法配置:
# dpkg-reconfigure locales
該過程包含 2 個步驟。
選擇所有需要的語言環境資料編譯為二進位制形式。(請確認至少包含一個 UTF-8 語言環境 )
透過建立 “/etc/default/locale
” 來設定系統預設的語言環境值給 PAM 使用(參見 節 4.5, “PAM 和 NSS”)。
設定在 "/etc/default/locale
" 裡的系統範圍的預設語言環境,可以被
GUI(圖形使用者介面)應用程式的 GUI 配置覆蓋。
![]() |
注意 |
---|---|
所使用的確切傳統編碼系統可以透過 “ |
locales-all
軟體包有所有預編譯的語言環境資料,但是不建立"/etc/default/locale
",你可能還需要安裝
locales
軟體包。
![]() |
提示 |
---|---|
一些 Debian 系發行版的 |
對於跨平臺的資料交換(參見 節 10.1.7, “可移動儲存裝置”),你需要使用特殊的編碼掛載檔案系統.舉個例子,不使用選項時,mount
(8)
假設 vfat 檔案系統 使用 CP437. 你需要給檔名提供明確的掛載選項來使用UTF-8 或 CP932.
![]() |
注意 |
---|---|
在 GNOME 這類的現代桌面環境下,當自動掛載一個熱拔插 U 盤時,你可以提供這樣的掛載選項。右擊桌面上的圖示,點選 "Drive" , "Setting", 輸入 "utf8" 到 "Mount options:". 當這個 U 盤下次掛載時,UTF-8 就可以了。 |
![]() |
注意 |
---|---|
如果你在升級一個系統,或者從老的非 UTF-8 系統遷移磁碟,非 ASCII 字元的檔名也許是使用老舊的 ISO-8859-1 或 eucJP 來編碼. 請尋求文字轉換工具把他們轉換到 UTF-8. 參見 節 11.1, “文字資料轉換工具”. |
在預設情況下,Samba 對新的客戶端(Windows NT, 200x, XP)使用
Unicode,但對老的客戶端(DOS 和 Windows 9x/Me)使用 CP850.可以在 "/etc/samba/smb.conf
"
檔案裡面,使用"dos charset
" 來改變老客戶端的這個預設編碼。比如說,CP932 表示為日語。
在 Debian 系統中顯示的許多文件和文字資訊有翻譯存在,比如錯誤資訊、標準程式輸出、選單和手冊頁。GNU gettext(1) 指令工具鏈是大部分翻譯活動的後端工具。
aptitude
(8) 裡,"Tasks" → "Localization" 提供一個有用的二進位制包擴充列表,
給應用程式增加本地化資訊和提供翻譯文件。
舉個例子,你可以安裝 manpages-LANG
包來獲得本地化 man
手冊頁資訊。從 "/usr/share/man/it/
" 來讀取
programname 義大利語的 man 手冊頁 ,執行下面的操作。
LANG=it_IT.UTF-8 man programname
透過 $LANGUAGE
環境變數,GNU gettext 能夠適應翻譯語言的優先順序列表。例如:
$ export LANGUAGE="pt:pt_BR:es:it:fr"
獲取更多資訊,參見 info gettext
,閱讀 "The LANGUAGE variable" 章節。
The sort order of characters with sort
(1) and
ls
(1) are affected by the locale. Exporting
LANG=en_US.UTF-8
sorts in the dictionary
A->a->B->b...->Z->z
order, while exporting
LANG=C.UTF-8
sorts in ASCII binary
A->B->...->Z->a->b...
order.
The date format of ls
(1) is affected by the locale (see
節 9.3.4, “定製時間和日期的顯示”).
The date format of date
(1) is affected by the locale.
For example:
$ unset LC_ALL $ LANG=en_US.UTF-8 date Thu Dec 24 08:30:00 PM JST 2023 $ LANG=en_GB.UTF-8 date Thu 24 Dec 20:30:10 JST 2023 $ LANG=es_ES.UTF-8 date jue 24 dic 2023 20:30:20 JST $ LC_TIME=en_DK.UTF-8 date 2023-12-24T20:30:30 JST
不同語言環境的數字標點不一樣.比如說,英語語言環境中, 一千點一顯示為
"1,000.1
",而在德語語言環境中,它顯示為 "1.000,1
".
你可以在電子表格程式裡面看到這個不同。
"$LANG
" 環境變數的每一個細節特徵能夠透過設定 "$LC_*
"
變數來覆蓋。這些環境變數又能夠透過設定 $LC_ALL
"變數而被再次覆蓋。細節參見
locale
(7) man 手冊頁。除非你有強烈的理由建立複雜的配置,請遠離他們並只使用
"$LANG
" 變數來設定一個 UTF-8 語言環境。
Debian 系統可以使用 keyboard-configuration
和
console-setup
軟體包調配多個國際化鍵盤佈局。
# dpkg-reconfigure keyboard-configuration # dpkg-reconfigure console-setup
對於 Linux 控制檯和 X 視窗系統,這將更新在 "/etc/default/keyboard
" 和
"/etc/default/console-setup
" 裡的配置引數。這個也會配置 Linux
控制檯字型。許多非 ASCII 字元,包括許多歐洲語言使用的重音字元,可以使用 死鍵、AltGr 鍵 和 組合鍵 來輸入它們。
Wayland 桌面系統上的 GNOME, 節 8.2.1, “Linux 控制檯和 X 視窗的鍵盤輸入”
不支援非英語的歐洲語言。IBus 不僅支援亞洲語言,也支援歐洲語言。GNOME
桌面環境的軟體包依賴關係透過"gnome-shell
"推薦"ibus
"
。"ibus
" 的程式碼已經更新整合 setxkbmap
和 XKB
選項功能。對多語言鍵盤輸入,你需要從 "GNOME Settings" 或 "GNOME Tweaks" 配置
ibus
。
![]() |
注意 |
---|---|
如果 ibus 啟用,即使在基於傳統的 X 的桌面環境下,透過 |
因 GNOME 桌面環境透過"gnome-shell
"
推薦"ibus
","ibus
"對於輸入法來說,是一個好的選擇。
輸入多種語言到應用程式的處理流程如下:
Keyboard Application | ^ | | +-> Linux kernel -> Input method (ibus) -> Gtk, Qt, X, Wayland +-- Engine--+
下面是 IBus 和它的引擎軟體包列表。
表格 8.1. IBus 和它的引擎軟體包列表
軟體包 | 流行度 | 大小 | 支援的語言環境 |
---|---|---|---|
ibus | V:195, I:239 | 1723 | 使用 dbus 的輸入方式框架 |
ibus-mozc | V:1, I:3 | 935 | 日文 |
ibus-anthy | V:0, I:1 | 8856 | 同上 |
ibus-skk | V:0, I:0 | 242 | 同上 |
ibus-kkc | V:0, I:0 | 210 | 同上 |
ibus-libpinyin | V:1, I:3 | 2760 | 中文(zh_CN) |
ibus-chewing | V:0, I:0 | 422 | 中文 (zh_TW) |
ibus-libzhuyin | V:0, I:0 | 40987 | 中文 (zh_TW) |
ibus-rime | V:0, I:0 | 73 | 中文( zh_CN/zh_TW) |
ibus-cangjie | V:0, I:0 | 119 | 中文 (zh_HK) |
ibus-hangul | V:0, I:2 | 264 | 韓文 |
ibus-libthai | I:0 | 90 | 泰文 |
ibus-table-thai | I:0 | 58 | 泰文 |
ibus-unikey | V:0, I:0 | 318 | 越南語 |
ibus-keyman | V:0, I:0 | 138 | 多語言:Keyman 引擎,超過 2000 種語言 |
ibus-table | V:0, I:1 | 2176 | IBus 表引擎 |
ibus-m17n | V:0, I:1 | 388 | 多語言:印度語、阿拉伯語和其它 |
plasma-widgets-addons | V:47, I:97 | 1992 | Plasma 5 的額外元件,包含有鍵盤指示器 |
![]() |
注意 |
---|---|
對於中文," |
我發現在英語環境("en_US.UTF-8
")下啟動日文輸入法非常有用. 下面是在 Wayland 上的
GNOME下使用 IBus 的做法:
安裝日文輸入法軟體包 ibus-mozc
(或 ibus-anthy
),以及
im-config
等推薦的軟體包。
選擇 "Settings" → "Keyboard" → "Input Sources" → 在"Input Sources"中單擊
"+
" → "Japanese" → "Japanese mozc (or anthy)",
然後單擊"Add"。如果它沒有被啟用。
你可以選擇許多輸入源。
重新登入使用者帳號。
右鍵單擊 GUI 工具條圖示,設定每一個輸入源。
使用SUPER-SPACE在安裝的輸入法之間進行切換. (SUPER鍵通常是Windows鍵.)
![]() |
提示 |
---|---|
如果你希望在日本物理鍵盤(shift- |
im-config
(8) 的使用者介面選單入口是 "Input method"。
此外,從使用者的 shell 來執行 "im-config
" 。
im-config
(8)如果指令是從root帳號執行的表現會有所不同。
im-config
(8) 讓最佳的輸入法作為系統預設而不需要使用者干預。
Linux 控制檯只能顯示有限的字元。(你需要使用特殊的終端程式,例如 jfbterm
(1),從而在非 GUI
控制檯中顯示非歐洲語言。)
只要需要的字型安裝並被啟用,GUI(圖形使用者介面)環境(章 7, GUI(圖形使用者介面)系統)能夠顯示任意 UTF-8 字元。(原始字型資料的編碼會被處理,並對使用者來說是透明的。)
在東亞語言環境下,方框繪製、希臘字元和西里爾字元可能會顯示得比你預期的樣子更寬,這樣會導致終端輸出排列不再整齊(參見 Unicode 標準附錄 #11)。
您可以繞過這個問題:
gnome-terminal
:首選項 → 配置檔案 → 配置名 →
相容性 → 寬度有歧義的字元 → 窄
ncurses
:設定環境變數 export
NCURSES_NO_UTF8_ACS=0
。