簡體中文本地化
依據「Arch 之道」:我們不會為你配置好一切,因為「喜好和需求,每人皆不同」,但是會儘量確保讓配置時方便和簡單。事實上,甚至遠比使用某些 Linux 中文版本容易。
本文儘可能提供了各種常見軟體的中文化指導。但實際應用中,你可能遇到各種各樣的麻煩。遇到了麻煩,不要氣餒,解決問題本身就是一種樂趣。你可以通過各種渠道尋求幫助:
- Google 等搜尋引擎
- Arch 官方論壇
- Arch Linux 中文社區
基本中文支持[編輯 | 編輯原始碼]
要正確顯示中文,必需設置正確的 locale 並安裝合適的中文字體。
locale 設置[編輯 | 編輯原始碼]
安裝中文 locale[編輯 | 編輯原始碼]
Linux 中通過 locale 來設置程序運行的本地化環境。根據地區和字符編碼的不同,常用的中文 locale 有:
zh_CN.GB18030 zh_CN.UTF-8 zh_HK.UTF-8 zh_SG.UTF-8 zh_TW.BIG-5 zh_TW.UTF-8
推薦使用 UTF-8 的 locale 而非老舊的各地區編碼。需要修改 /etc/locale.gen
文件來設定系統中可以使用的 locale(取消對應項前的注釋符號「#
」即可):
en_US.UTF-8 UTF-8 zh_CN.UTF-8 UTF-8 zh_SG.UTF-8 UTF-8
然後執行 locale-gen
命令,便可以在系統中使用這些 locale。可以通過 locale
命令來查看當前使用的 locale:亦可通過 locale -a
命令來查看目前可以使用的 locale。
配置中文 locale[編輯 | 編輯原始碼]
配置全局 locale (可選)[編輯 | 編輯原始碼]
首先設置一個英文的全局 locale。這並不是必須的,只是為了防止 TTY 中出現豆腐塊(見下方注意):
$ cat /etc/locale.conf
LANG=en_US.UTF-8
LANG
這個環境變量代表默認的區域設置,具體的含義見 Locale#LANG:默認的區域設置
/etc/locale.conf
裡把全局的 LANG locale 設置成中文 LANG=zh_CN.UTF-8
,因為 TTY 下沒有 CJK 字體,這樣設置會導致 TTY 中顯示豆腐塊(除非你使用的內核打了 cjktty 補丁能繪製中文字體,比如linux-lilyCNRepo)。每個用戶單獨的 locale 可以在 ~/.bashrc
、~/.xinitrc
或 ~/.xprofile
中設置:
.bashrc
:每次使用終端時會應用此處的設置。.xinitrc
:每次使用 startx 或 SLiM 來啟動 X 窗口系統時會應用此處的設置。.xprofile
:每次使用 GDM 等顯示管理器時會應用此處的設置。
為圖形界面配置中文 locale[編輯 | 編輯原始碼]
不推薦 /etc/locale.conf
使用全局中文 locale,會導致 TTY 中顯示出豆腐塊。
如前所述,建議在 ~/.xinitrc
或 ~/.xprofile
裡單獨設置中文 locale,即添加下面兩行到文件的最開頭(如果不確定使用哪個文件,都添加):
export LANG=zh_CN.UTF-8 export LANGUAGE=zh_CN:en_US
~/.xinitrc
中,請注意將其放在 exec _example_WM_or_DE_
行之前,此為常見錯誤。export LC_ALL
來覆蓋所有 locale 設置,LC_ALL
應該僅用於診斷調試,全局設置 LC_ALL
會為診斷語言設置問題帶來不必要的困難。中文字體[編輯 | 編輯原始碼]
安裝字體[編輯 | 編輯原始碼]
除了設置好 locale,還需要安裝中文字體。
常用的自由(OFL、GPL或其他自由軟體協議)中文字體有:
- adobe-source-han-sans-cn-fonts包
- adobe-source-han-serif-cn-fonts包
- noto-fonts-cjk包
- wqy-microhei包
- wqy-microhei-lite包
- wqy-bitmapfont包
- wqy-zenhei包
- ttf-arphic-ukai包
- ttf-arphic-uming包
系統字體將默認安裝到 /usr/share/fonts
。如果沒有 root 權限或只打算自己使用某些字體,可以直接複製這些字體到 ~/.fonts
目錄(或其子目錄)下面,並把該路徑加入 /etc/fonts/local.conf
中。具體參見後面章節。
另見:[1]
中文字體配置[編輯 | 編輯原始碼]
Fontconfig 設置[編輯 | 編輯原始碼]
Fontconfig 的用戶配置文件是 $XDG_CONFIG_HOME/fontconfig/fonts.conf
,或存放於 $XDG_CONFIG_HOME/fontconfig/conf.d/
。全局配置文件是 /etc/fonts/conf.d
。推薦修改前者。
Font Configuration/Chinese 提供了中文字體的 Fontconfig 示範。
另見:
修正簡體中文顯示為異體(日文)字形[編輯 | 編輯原始碼]
安裝 noto-fonts-cjk包 或 adobe-source-han-sans-otc-fonts包(思源黑體)或 adobe-source-han-serif-otc-fonts包(思源宋體)後,在某些情況下(框架未定義地區)漢字字形與國標標準不符,例如關、復等字字形過窄,門的字形為豎點插入橫折鉤而非左上斜點等。
這是因為每個程序中可以設置不同的默認字體,比如 Arial 或者 Tahoma,而這些字體的屬性由 fontconfig 控制,其使用順序是據地區代碼以 A-Z 字母表順序成默認排序,由於 ja-JP
在 zh_{CN,HK,SG,TW}
之前,故優先顯示日文字形。
可選用以下方法解決(以簡體中文為例):
- 確保桌面環境的語言區域設置正確。例如,KDE可能會生成錯誤的語言配置文件,相應修復即可。
- 只安裝符合簡體中文國標標準的字體,例如思源字體的簡體中文變體包 adobe-source-han-sans-cn-fonts包和adobe-source-han-serif-cn-fonts包,或者 noto-fonts-scAUR。
- 在
locale.conf
中添加LANG=zh_CN.UTF-8
,以將簡體中文設置為默認語言。由於對 Locale 定義了框架內地區(即 CJK 優先度),使得默認的優先級被忽略。 - 手動調整優先級,將中文字形調整到日文字形之前。[2]在
/etc/fonts/conf.d/
或/etc/fonts/conf.avail/
下創建文件,例如64-language-selector-prefer.conf
,也可以修改或創建~/.fonts.conf
或在~/.config/fontconfig/conf.d/
創建後綴為.conf的文件(僅對該用戶生效)。例如針對noto-fonts-cjk包的規則,寫入:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <alias> <family>sans-serif</family> <prefer> <family>Noto Sans CJK SC</family> <family>Noto Sans CJK TC</family> <family>Noto Sans CJK JP</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Noto Sans Mono CJK SC</family> <family>Noto Sans Mono CJK TC</family> <family>Noto Sans Mono CJK JP</family> </prefer> </alias> </fontconfig>
如果安裝的是 adobe-source-han-sans-otc-fonts包,寫入:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <alias> <family>sans-serif</family> <prefer> <family>Source Han Sans SC</family> <family>Source Han Sans TC</family> <family>Source Han Sans HW</family> <family>Source Han Sans K</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Source Han Sans SC</family> <family>Source Han Sans TC</family> <family>Source Han Sans HW</family> <family>Source Han Sans K</family> </prefer> </alias> </fontconfig>
注意,如果你是在 /etc/fonts/conf.avail
目錄下創建的 xml 文件,則將該 xml 文件軟連結到 /etc/fonts/conf.d
下,例如:
# ln -s /etc/fonts/conf.avail/64-language-selector-prefer.conf /etc/fonts/conf.d/64-language-selector-prefer.conf
然後更新字體緩存即可生效:
# fc-cache -fv
執行以下命令檢查,如果出現 NotoSansCJK-Regular.ttc: "Noto Sans CJK SC" "Regular"
則表示設置成功:
# fc-match -s | grep 'Noto Sans CJK'
中文輸入法[編輯 | 編輯原始碼]
常用的中文輸入法平台有 IBus、fcitx、fcitx5 和 scim。具體安裝配置參見各自條目。
終端中文支持[編輯 | 編輯原始碼]
引導中文支持[編輯 | 編輯原始碼]
GRUB2支持引導選擇界面的中文顯示,請見 GRUB2。
man 手冊頁的簡體中文翻譯[編輯 | 編輯原始碼]
安裝 man-pages-zh_cn包 軟體包。
軟體中文化配置[編輯 | 編輯原始碼]
Firefox[編輯 | 編輯原始碼]
簡體中文用戶安裝 firefox-i18n-zh-cn包。
繁體中文用戶安裝 firefox-i18n-zh-tw包。
Libreoffice[編輯 | 編輯原始碼]
簡體中文用戶安裝 libreoffice-fresh-zh-cn包 或 libreoffice-still-zh-cn包。
繁體中文用戶安裝 libreoffice-fresh-zh-tw包 或 libreoffice-still-zh-cn包。
PDF 閱讀器[編輯 | 編輯原始碼]
多數 PDF 查看器已經支持中文。但也有部分需要安裝額外的語言包/字體:
Acrobat 的字體為 acroread-fontsAUR,或者可以安裝 acroread-fonts-systemwideAUR 以使用系統範圍的字體。
okular、evince 等 poppler 相關的閱讀器及 Inkscape、Krita、MyPaint 等可以處理 pdf 的圖像處理工具需要安裝 poppler-data包。
Java[編輯 | 編輯原始碼]
對於 Sun Java 用戶,在 /opt/java/jre/lib/fonts
中建立 fallback
目錄,然後連結或拷貝若干中文字體到該目錄就能使 java 程序正確顯示中文。例如,在已經安裝 jreAUR 和 opendesktop-fonts包 的情況下,使用執行下面的命令即可:
# ln -s /usr/share/fonts/TTF/odosung.ttc /opt/java/jre/lib/fonts/fallback/ # cd /opt/java/jre/lib/fonts/fallback/ # mkfontdir # mkfontscale
vim[編輯 | 編輯原始碼]
如果 locale 是 utf8 編碼,用 vim 打開其他中文編碼的文件可能會亂碼。需要在 ~/.vimrc
做如下設置:
~/.vimrc
... set fileencodings=utf8,cp936,gb18030,big5 ...
中文視頻字幕[編輯 | 編輯原始碼]
MPlayer[編輯 | 編輯原始碼]
要使 MPlayer 正確顯示字幕,關鍵是要使字幕文件的編碼和 mplayer config 裡使用的編碼相一致。字幕文件編碼為 gbk,則 subcp=cp936
;字幕文件編碼為 utf-8,則 subcp=utf8
。如果字幕文件編碼為 utf-8,而設置成 subcp=cp936
,則會出現部分亂碼的情況。另一種更為簡單的方法是設置成 subcp=enca:zh:ucs-2
,由 enca 負責字幕的編碼顯示問題。
修改 ~/.mplayer/config
:
~/.mplayer/config
font='文泉驛正黑' subcp=enca:zh:ucs-2
使用下面的命令手動加載字幕:
$ mplayer xxx.avi -sub xxxxx.srt
如果使用圖形前端(比如 SMPlayer),會更簡單一些,只要在設置對話框裡設定預設字幕編碼和字體即可。
xine[編輯 | 編輯原始碼]
xine 也可以顯示中文字幕,但需要製作自己的中文字體。具體可以參考:[3]。
gstreamer[編輯 | 編輯原始碼]
在 totem 1.4.0,由於使用 gstreamer0.10,應該是可以自動加載同名的 srt 字幕。
LaTeX[編輯 | 編輯原始碼]
首先需要安裝 CJK 包,然後需要安裝合適的字體。具體可以參考:[4]。
亂碼問題[編輯 | 編輯原始碼]
避免亂碼基本原則:使用 utf-8 代替 gbk/gb2312。
文件名亂碼[編輯 | 編輯原始碼]
安裝 convmv包,使用 convmv
命令轉換編碼格式。示例:
$ convmv -f GBK -t UTF-8 --notest --nosmart file
-f
指定原始編碼,-t
指定輸出編碼。使用 convmv --list
可查詢所有支持的編碼。
--notest
表示非測試而是要進行轉碼(如果不使用該參數只會列印出轉換結果而不會實際轉碼),--smart
表示如果已經是 UTF-8 則忽略。
文件內容亂碼[編輯 | 編輯原始碼]
使用 iconv
命令轉換格式。示例:
$ iconv -f GBK -t UTF-8 -o new-file origin-file
-f
指定原始編碼,-t
指定輸出編碼。使用 iconv -l
可查詢所有支持的編碼。-o
指定輸出文件。
zip 壓縮包亂碼[編輯 | 編輯原始碼]
避免方法:非 utf8 編碼環境下(一般 windows 下的中文環境即是)不使用 zip 進行壓縮(建議使用 7z)。 解決方案:安裝使用 unzip-iconvAUR[損壞的連結:package not found] 或者 unzip-natspecAUR 取代原版的 unzip包 來解壓縮,示例:
$ unzip -O gbk file.zip
file.zip
是壓縮文件,gbk
是該文件的編碼格式,以 -O
指定(原版 unzip 無 -O
選項)。
MP3 文件標籤亂碼[編輯 | 編輯原始碼]
對於用 GStreamer 做後端的播放器,如 Rhythmbox,totem,設置如下的環境變量後即可正確讀取 mp3 中 GBK 編碼的 ID3 tag:
export GST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030 export GST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030
對於 Beep media player,可以在 pefenrence->plugins->media
中選中 MPEG Audio plugin 然後點擊下方的 Penfenrences,此時會出現一個對話框,選擇 title,將 Disable ID3v2 和 Convert non-UTF8 ID3 tags to UTF8 前的選擇框選中。然後在 ID3 encoding 中填入 gbk
。這樣 bmp 就能正確顯示 GBK 編碼的 ID3 tag。
Quod Libet 播放器支持 tag 編輯及設置 ID3v2 編碼。可以在 ~/.quodlibet/config
中設置
~/.quodlibet/config
... id3encoding = gbk ...
最為徹底的解決方法為將編碼為 gbk 的 id3 tag 轉化為 utf8 編碼。首先安裝 python-mutagen包,然後利用下面的命令轉換:
$ mid3iconv -e gbk XXX.mp3
Windows 分區下的中文文件名亂碼[編輯 | 編輯原始碼]
一般是因為掛載的字符集與 locale 不同,可以修改 /etc/fstab
(如果不了解請仔細閱讀 fstab)。如果 locale 是 utf8,修改為:
/etc/fstab
... /dev/sdxx /media/win ntfs defaults,iocharset=utf8 0 0
如果 locale 是 GBK,則應該是:
/etc/fstab
... /dev/sdxx /media/win ntfs defaults,iocharset=cp936 0 0 ...
Samba 亂碼[編輯 | 編輯原始碼]
用 Arch 作為 Samba 伺服器時,在 /etc/samba/smb.conf
中加入下面一行就可以解決 Windows 客戶端亂碼問題:
/etc/samba/smb.conf
... unix charset=gb2312 ...
ftp 亂碼[編輯 | 編輯原始碼]
很多 ftp 站點是 GBK 編碼。如果使用 UTF8 的 locale,下載的文件名可能會亂碼。對於 lftp,在 .lftp/rc
下做如下設置:
.lftp/rc
... set ftp:charset "gbk" set file:charset "UTF-8" ...
對於 gftp,可以在 .gftp/gftprc
中做如下設置即可:
.gftp/gftprc
... remote_charsets=gb2312 ...
但下載下來的文件名仍然是亂碼,需要打補丁編譯。補丁地址為: https://www.teatime.com.tw/%7Etommy/linux/gftp_remote_charsets.patch
翻譯軟體[編輯 | 編輯原始碼]
- stardict包:星際譯王。
- sdcv包:命令行的星際譯王。
- ydcv包:命令行的有道詞典。
- youdao-dictAUR:有道詞典(圖形界面),屏幕取詞翻譯。
- GoldenDict(goldendict-gitAUR):默認都不帶字典,可下載相應字典包(支持 Babylon 的詞庫格式
.BGL
,已經不再維護的 StarDict 的詞庫格式(.ifo
/.dict
/.idx
/.syn
),dictd 的詞庫格式(.index
/.dict
(.dz
) ,ABBYY Lingvo 的詞庫格式(.dsl
/.lsa
/.dat
),mdict 的詞庫格式等等。可在網際網路上下載這些詞典的詞庫文件導入的 GoldenDict 使用(可能有版權問題)。 - moedictAUR:一個跨多平台的漢語詞典,除漢字、詞、成語等,還包含客家話、閩南話、簡單的外文翻譯、筆順書寫等等,萌典在線地址。
- linedictAUR:一個通過爬取有道翻譯網頁得到結果的在線英漢詞典,部分支持英漢翻譯,模仿 dmenu 在屏幕頂端顯示結果,使用方便,由於 ydcv包 使用的 api 已失效,而有道新的 api 有免費使用次數限制,linedictAUR 是一個較好的替代品。