內容目錄
一個應用軟體的 多語言化 (M17N)或本地語言支援,通過 2 個步驟完成。
國際化 (I18N): 使一個軟體能夠處理多個語言環境。
本地化 (L10N):使一個軟體處理一個特定的語言環境。
提示 | |
---|---|
在 multilingualization(多語言化)、internationalization(國際化)和 localization(本地化)中,有17, 18, 或 10 個字母在"m" 和 "n", "i" 和 "n", 或 "l" 和 "n"中間,它們相應表示為 M17N, I18N 和 L10N。細節參見 國際化和本地化 。 |
程式支援國際化的行為,是透過配置環境變數 "$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" 章節。
sort
(1) 和 ls
(1)的字元排序受語言環境 locale 影響。匯出
LANG=en_US.UTF-8
,排序用字典
A->a->B->b...->Z->z
順序,而匯出
LANG=C.UTF-8
,排序使用 ASCII 二進位制
A->B->...->Z->a->b...
順序。
ls
(1) 的日期格式受語言環境影響(參見 節 9.3.4, “定製時間和日期的顯示”)。
date
(1)程式的日期格式受語言環境的影響。例如:
$ 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:198, I:245 | 1723 | 使用 dbus 的輸入方式框架 |
ibus-mozc | V:1, I:3 | 944 | 日文 |
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 | 2761 | 中文(zh_CN) |
ibus-chewing | V:0, I:0 | 247 | 中文 (zh_TW) |
ibus-libzhuyin | V:0, I:0 | 40995 | 中文 (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 | 161 | 多語言:Keyman 引擎,超過 2000 種語言 |
ibus-table | V:0, I:1 | 2176 | IBus 表引擎 |
ibus-m17n | V:0, I:1 | 395 | 多語言:印度語、阿拉伯語和其它 |
plasma-widgets-addons | V:50, I:100 | 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
。