Make your Debian Sid support chinese

How to make Debian support Chinese had already be the FAQ in my mailbox and ICQ history. Indeed, most debian packages already got good chinese support as other distribution. However, several different locale naming schema (Yup, Openi18n is trying to standardize it but it take time) and many other issues makes it is so troublesome that you need to modify many files and I always forget to mark the steps down. While my notebook harddisk is damaged recenlty, I need to do the setup again finally. And answer this FAQ here.

Notice: An updated chinese version was posted in
http://wiki.debian.org.hk/w/Make_Debian_support_Chinese. An english version was also created in http://wiki.debian.org.hk/w/Make_Debian_support_Chinese_(eng) due to many request. Forget every thing below and go to read the updated version.

BTW, I think it is better to keep it in english.

  1. Install the following packages:

    • xcin - Chinese input system
    • xfonts-intl-chinese - fonts needed by xcin
    • ttf-arphic-bkai00mp - Arphic free traditional chinese KaitiM fonts
    • ttf-arphic-bsmi00lp - Arphic free traditional chinese Mingti2L fonts
    • ttf-arphic-gkai00mp - Arphic free simplified chinese KaitiM fonts
    • ttf-arphic-gbsn00lp - Arphic free simplified chinese SungtiL fonts
  2. Add the following line in /etc/locale.gen (You can check /usr/share/i18n/SUPPORTED

    for a list of supported locales):

    en_US ISO-8859-1
    zh_TW BIG5
    zh_CN GB2312
    

    Then run "locale-gen".

    # locale-gen
    Generating locales...
      en_US.ISO-8859-1... done
      zh_CN.GB2312... doen
      zh_TW.BIG5... done
    Generation complete.
    #
    

    Confirm the following locale name is showed after typing "locale -a":

    C
    POSIX
    en_US
    en_US.iso88591
    zh_CN
    zh_CN.gb2312
    zh_TW
    zh_TW.big5
    
    
  3. In /etc/X11/Xsession.d, create a new file named "95xim" with following content:

    case "$LANG" in
    zh_TW)
        /usr/bin/xcin &
        XMODIFIERS="@im=xcin-zh_TW"
        ;;
    zh_TW.Big5)
        /usr/bin/xcin &
        XMODIFIERS="@im=xcin"
        ;;
    esac
    
    
    export XMODIFIERS
    
  4. Select language as "Chinese(.....)" with your gdm and login your account. If you use other X Display manager (i.e. xdm or kde) which don't allow you to select language, You may need to add the following line at the beginning of "/etc/X11/Xsession.d/95xim":

    export LANG=zh_TW.Big5
    

    If you are using "startx" to start X Window, type "export LANG=zh_TW.Big5" before "startx".

Notice: I don't mention about Microsoft Mingliu fonts, firefly patch or any other useful things because I want to keep this mini-howto simple and involve only official debian packages and planned to have a package to handle all the above steps later.

Notice: An updated chinese version was posted in
http://wiki.debian.org.hk/w/Make_Debian_support_Chinese. An english version was also created in http://wiki.debian.org.hk/w/Make_Debian_support_Chinese_(eng) due to many request. Forget every thing in this article and go to read the updated version.

回應

評論查看選項

選擇你喜歡的顯示回應的模式,並點選「儲存設定」,以啟用你所做的改變。

dpkg-reconfigure locales is b

dpkg-reconfigure locales is better Smiling

如果 debian 可以有一個 (by default in xfree86 or separate package) xim script 就好了... --> works out of the box Smiling

you can

You can but I always don't trust the debconf of locales coz the woody version is not work.

Of course, the testing and sid one is ok.

For the package, I planned to work on it later.

有一個類似的套件稱為 language-env,若設計妥當,可一次設足上文的設定與相關軟體。

現有的軟體安裝方案是 tasksel,但是納入太多不必要的軟體,裝了 chinese-t 等於強迫裝 kdelibs, tetex, cjk-latex, 兩種 XIM 輸入法軟體 xcin, chinput, 三種終端機中文系統 chdrv, yh, zhcon 還有一套 openoffice。光是中文軟體納入的系統便大的離譜。而且多數是用不著的系統。

language-env 可以依據現有安裝的軟體,加上相依軟體,例如使用者決定裝 kde,那麼才替他裝 kde-i18n-zhtw,使用者裝了 openoffice.org 才裝 openoffice.org-l10n-zh-tw,使用者裝了 mozilla 才依據自行決定的語系裝 mozilla-locale-zh-cn 、mozilla-locale-zh-hk 或 mozilla-locale-zh-tw 才對。language-env 同時也可以自動幫忙設置各系統設定檔,如 .bashrc / .inputrc 等。目前 language-env 還不支援中文,但新增支援不難,雖然 language-env 本身的架構與模組系統尚須改進,個人還是認為應該盡可能簡化 tasksel 中 chinese 的相吸性,留下必要的 locale/language-env/fonts,並提供自動化設定,對於新使用者較佳。

BTW, 上文中所提 LANG/XMODIFIERS 或許寫在 /etc/environment 即可。

debian-chinese-big5 與 debian-chiense-gb 現在不相通,因此我寫在這裡,希望有心人士看得到。個人認為同樣使用繁體中文的 debian.org.tw/debian.org.hk 應該可以進一步互通有無才是。
-DJ

關於 language-env

寫這份 mini-howto 時,我也有瞄過 language-env ,發覺 language-env 主要在 user level 配置個別 user 的設定檔,如 .bashrc 及 .xsession 等。但這都不是認為很重要的事。如果你有詳看的的 mini-howoto, 都會發覺幾乎全部都是在配置整個系統環境而非單一個用戶的環境。因為我認為理想的做法是如 RedHat 、 Mandrake 等,選了地方後,自動生成 locale ,入 X 時如選了中文,會自動跑 xcin 或 chinput 。 硬式地把 locale 設在每個 user 的設定檔並非一個好方法。

而 language-env 因為在用 user 身份來跑,它也不會自動 apt-get 需要的 package ,只是通知你有什麼 package 可以安,不太方便。

如果真的要包 package ,把決定跑 xim server 的 script 放在 /etc/X11/Xsession.d 比 /etc/environment 適合的多。後面硬改 LANG 是提醒喜用 kdm 的朋友罷了,本身我慣用 GDM 及 Gnome 。

幾年前已想過要令 Debian 支援中文方便點,不過一直沒有時間去搞。現時 Debian 已修正了很多問題,支援中文其實只欠以上簡單的幾步,也應該有人走走這幾步。當然這幾步要放入 Debian ,倒有很多功夫, 除了中港台外, Debian-i18n 及 X-strike 都會涉及。

我倒是覺得預設每個使用者使用全域統一的設定不是很好的作法。例如輸入法 ,並非繁體就一定用 xcin 簡體就非得用 chinput,還有 IIIMF/IMModules/UIM 等輸入法可選。

我之所以說 language-env 的架構需要改進,就是指現有的架構沒辦法自動設定全域的設定。如果藉由併入系統逐漸成熟的 DebConf/Apt ,在使用者安裝新的軟體時,便自動建議安裝相關的語系翻譯套件,以及藉由不同的桌面系統(KDE/Gnome)將相關的設定放在單一使用者的設定中才好。像是 XIM,擺在 /etc/environment 的確不妥,但是擺在 /etc/X11/Xsession.d 似乎也不夠妥當,因為使用者便無法設定單一帳號的 session,如果擺在 gnome-session ,那麼便可用 gnome-session-properties 客製化設定。其他的桌面環境也是如此。如果可以討論出實做細節,那麼應該如 Debian Menu Policy Manual 等建立 Debian I18N Policy。我希望可以有開發者一起來做這件事情。

Sarge 的 Installer 在安裝過程中便詢問地區與語系等細節,這些設定可以寫入 DebConf,並於之後安裝 Gnome/KDE 時參考 DebConf 的設定自動設定語系,現在的作法是安裝時選擇一次語系,安裝好後,必須按照類似上述 mini-howto 設定一次語系,裝了 KDE/Gnome,又要再設定一次,步驟與其他系統比起來顯得繁複。而 tasksel 雖然安裝了大量的軟體,卻還是需要許多客製最佳化的工作。

-DJ

這要看你怎寫 Xsession.d

這要看你怎寫 Xsession.d script 。我在 mini-to 寫的是最簡單的版本,我原意是 95xim 的 script 會先檢視 user home 目錄是否有 .xinput 之類的檔案, 有的話就執行或讀取其參數,沒有的話就用系統預設。做得好點, 可以寫多個 control center 客端做配置。

放在 gnome-session ,一來不用 Gnome 就用不了。二來有關 xim 的設定不是光把個 xim server 就夠了,還要設定環境變數 XMODIFIERS ,這不是 gnome-session-properties 可以辨到的。用 gnome-session-properties 也不夠 user-friendly 。

我不是否定 language-env 的作用,但可以讓 user 做少幾步, 為什麼不做?

mini-howto 提的只是供人參考自己設定,和給我一個工作 check list 罷了。我想做的是安一個 package 令 mini-howto 所提的全都自動設好。Debian-Installer, mozilla/openoffice.org 等的配合, 有很多方法去做到一次全設好。我倒從未想過要 user 自己去設 locale ,我今日中午才問過 foka ,叫一個 package 的 postinst 時把 locale 直接加入 /etc/locale.gen 再把 locale-gen 是否太糟暴的做法。

我想做到的是 user 需要手動的事越少越好。

我也不是否定您的 mini

我也不是否定您的 mini-howto,我們的的共識應該都是讓用戶動手的事情越少越好,但是很重要的也要注意單一用戶設定的彈性。我也一直強調 language-env 機制尚不健全。

當然我指 gnome-session 不單指 gnome, 既然您用 gnome,就以 gnome 為例子,我們才能有共識基礎。然而部份的桌面系統並沒有妥善的 session 機制,同時目前也沒有共用 session 設定機制,因此這個作法的確不好。

關於 xim 的設定,或許在 chinput/xcin 安裝的時,在 postinst 以 DebConf 詢問是否自動執行 xcin,以及將已安裝與預設的 XIM Server 寫到 DebConf(有點類似 xdm 的架構,我寫過一個基礎概念類似的命令稿),並寫到/etc/X11/Xsession.options,順道在 /etc/X11/Xsession.d/ 裝單一的命令稿,ex: /etc/X11/Xsession.d/99xcin, /etc/X11/Xsession.d/99chinput,於命令稿中自動確認單一使用者是否願意自動執行 xcin (ie: $HOME/.Xsession.options)。那麼至少在 xim 這個部份可以自動化。

至於基礎的字型與軟體,應該可以讓 tasksel 一次裝足,但是僅限於 "基本" 的軟體,我建議移掉非必要的軟體。如 openoffice/tetex/cjk-latex,這樣應該可以滿足 mini-howto 前三項工作。至於第四項單一語系設定(LANG),我認為留給 xdm 完成較為妥當。如 GDM

您覺得如何?如果我們達成共識,那麼您或我就提交 bugreport 或直接請 foka 幫忙更改,讓上述的作法實踐,希望趕在 Sarge 釋出前完成,這樣可以避免新的使用者需要參考許多 mini-howto/無痛起步法 才能順利使用中文系統。
-DJ

喔,上述意見基於增強現有的『官方』軟體。

是的,另外包裝套件實踐 [[http://wiki.debian.net/index.cgi?CustomDebian Custom Debian Distributions]] 也是一種可實際進行的作法,但是如此形同建立分支,而非善加利用現有的架構與技術。

-DJ

感謝!

好感謝閣下這篇文章,轉用debian咁耐,終於可以輸入中文了!:-)

SCIM

奇怪,我用開 SCIM+GNOME,所以只裝 scim-gtk2-immodule 及 scim-tables-zh 就行了,可以用到 UTF-8,又可以加其他 scim-table-* 做日文及韓文,不知道用你的方法設定 xcin 有甚麼好處?

沒有,這是舊文,我

沒有,這是舊文,我也沒有 xcin 很久。你在文中開頭可以找到這文最新版本的連結.. 是用 scim 。