: Yes, the reason is that Debian woody recently upgraded to glibc 2.1.99 : (i.e. the upcoming glibc_2.2) with new and improved locale handling, but : is incompatible with the locale files for glibc 2.1.x. I haven't upgraded : to woody yet, so I am not sure if Debian's glibc_2.1.99 comes with the : new Chinese locale files.
Hello, In the end of this mail I will attach my personal opinions on the new coming glibc-2.2. :-)) Please note that my focus is in "glibc-2.2", so please ignore the words "RedHat-7.0" :-)) : Yes, that is indeed the reason. I had wanted to write one myself for a : very long time now, but I just haven't got the time to write it yet, and : now that school has started, I have hardly any time to work on Debian : lately. (My apologies.) Here is part of what I wanted to write: : : http://www.debian.org/zh/faq : http://www.debian.org/zh/devel/zhongwenhua : : and also a quick-and-easy step-by-step procedure for installing Chinese : support in Debian. (Yes, apparently, after installing task-chinese-* : packages, the user still needs to do some manual configurations before : he/she can experience the full Chinese environment.) : : Yes, if you have time, we would love to include your contributions. : Thanks a million! This web page might be a little useful: http://xcin.linux.org.tw/i18n/ T.H.Hsieh ============================================================================ [EMAIL PROTECTED]: thhsieh (居士) 看板: Linux 標題: [doc] I18N in glibc-2.2 (used in RedHat-7.0) 時間: Mon Oct 2 13:35:36 2000 各位好: 先聲明,我沒有裝過 RedHat-7.0, 也沒用過或看過。但我知道 RedHat-7.0 已經改用了 glibc-2.2, 而我剛好對於 glibc-2.2 的 I18N 的改變略知一 二,故本文的目的主要是將焦點擺在 glibc-2.2 的 I18N 改變的部分,給 各位參考。本文所提的,也許就和各位在 RedHat-7.0 [EMAIL PROTECTED] [EMAIL PROTECTED] RedHat 可能將某些部分自行做了改變,而這就不在本文 討論的範圍了。 先定義什麼是舊版的 glibc, 正確來說是目前最通行的 glibc, 版本號碼是 2.1.X, 目前大部分的 GNU/Linux 如 Debian-2.2, RedHat-6.X, Slackware-7, Mandrack, 甚至 CLE-0.8, 0.9 等等,用的都是 glibc-2.1.X。而 RedHat-7.0 可能是首度採用 glibc-2.2 的了。 在 glibc-2.1.X 中,有關 locale 與 I18N 的資料全部放在 /usr/share/locale 下。以 zh_TW.Big5 locale 為例,其編譯好的 locale data 就是在 /usr/share/locale/zh_TW.Big5 裏頭內含 LC_CTYPE, LC_TIME .... [EMAIL PROTECTED] LC_MESSAGES 的目錄。 而未編譯前的 source 是放在 (如果您有安裝的話) /usr/share/i18n/locale/zh_TW /usr/share/i18n/charmap/BIG5 (或 BIG5_1984) [EMAIL PROTECTED] GNU/Linux 系統的 zh_TW.Big5 locale 有 沒有裝,就直接去看 /usr/share/locale/zh_TW.Big5 [EMAIL PROTECTED] LC_CTYPE 的檔? 然而,在 glibc-2.2 [EMAIL PROTECTED] 中,在 /usr/share/locale 目 錄中已找不到 zh_TW.Big5 目錄,相反的,您只會[EMAIL PROTECTED] zh_TW 的目錄,而 裏頭只有 LC_MESSAGES 的目錄。至於其他的 LC_CTYPE, LC_TIME 等檔案,全部 移到了 /usr/lib/locale/zh_TW.big5 (請各位注意大小寫) 理由是,在舊版中,所有的 LC_CTYPE, LC_MESSAGES, LC_TIME 等檔案,都是與硬體平台無關的,故可以放在 /usr/share/locale 裏頭。但新版 中,只有 LC_MESSAGES 與硬體平台無關,故還是放在 /usr/share/locale, 但其 他的 LC_CTYPE, LC_TIME .... 都與硬體平台有關,所以放在 /usr/lib/locale 裏。 雖然 LC_MESSAGES 仍然放在 /usr/share/locale [EMAIL PROTECTED] [EMAIL PROTECTED] CLE [EMAIL PROTECTED] glibc-2.1.X 的功能尚未完全齊全,故不是很適合按照標準來做。按照標準,LC_MESSAGES 只是 程式的訊息翻譯部分,它只和地區的用語、文化有關,而與文字的編碼方式 (encoding) 無關,故在台灣地區的用語 (訊息翻譯),我們叫它 zh_TW 即可 (同樣的,在大陸 的用語,就叫 zh_CN 即可)。然而,這個台灣地區的用語,最後是由什麼內碼呈現 出來,則無關緊要。因為在不同 locale 下 (或不同的 LC_MESSAGES 的設定下), 系統內部會自動轉換。習慣上我們多半是以 Big5 來顯示台灣地區用語,但如果有 人希望用 GB 碼顯示台灣地區用語也可以,只要設 LC_MESSAGES=zh_TW.GB2312 即 可。因此,這裏的重點是在「地區用語」,與內碼無關,故它是放在 /usr/share/lib/zh_TW/LC_MESSAGES 裏頭。 以上是理想的情況,在實際情況,就我所知目前 glibc-2.2 的內碼轉換系統 Big5 與 GB2312 間仍有問題需要解決,也許未來的版本可以完全克服此困難。 至於其他的 LC_TIME, LC_CTYPE 等等,就與使用的內碼有密切的關係了,故它們 都是放在 /usr/lib/locale/zh_TW.big5/ 的目錄下。理論上,由於我們的 zh_TW.big5 locale 已經被 glibc-2.2 接受了, 故只要是安裝 glibc-2.2 的系統,預設就會有這個 locale, 故我們不需要像過去 的 CLE 那樣,要額外再安裝了。然而,在實際上我們不清楚 RedHat-7.0 有沒有在 這點做了改變,或者他們的安裝套件有疏漏了?有興趣的朋友可以回去看看。 但為什麼這裏是 zh_TW.big5, 而不是過去 CLE 的 zh_TW.Big5 呢?原因是按照 glibc-2.2 [EMAIL PROTECTED]@點我們並沒有按照這樣 的標準,但實際上並沒有太大的關係。對於已經習慣於 CLE 標準的朋友 (事實上 我們大部分都是如此),可以自行將此目錄改名: mv /usr/lib/locale/zh_TW.big5 /usr/lib/locale/zh_TW.Big5 結果仍然是可以用。 但要如何知道我們系統中有安裝好 zh_TW.Big5 (或 zh_TW.big5) locale 呢? 理論上,在 glibc-2.2 [EMAIL PROTECTED] 您除了可以看看 /usr/lib/locale/zh_TW.big5 (或 zh_TW.Big5) /usr/share/locale/zh_TW [EMAIL PROTECTED] locale -a 的指令,看看其中是否有 zh_TW.big5 (或 zh_TW.Big5) 這個 locale。我建議,未 來我們若要檢查 GNU/Linux 系統中 locale 有沒有安裝?正不正常?可以採用這個 指令 (這個指令在 glibc-2.1.X 中也找得到)。 [EMAIL PROTECTED] glibc-2.2 所有的套件都 安裝完整的話,應該會有 /usr/share/i18n 的目錄,裏頭是所有 locale 的 source, [EMAIL PROTECTED]@樣的。裏頭的 locales 子目錄應該會[EMAIL PROTECTED] zh_TW 檔,而 charmaps 子目錄應該會[EMAIL PROTECTED] BIG5 檔,請將 這兩個檔都拿出來,然後執行這個指令: localedef -i zh_TW -f BIG5 zh_TW.Big5 如此就會在 /usr/lib/locale [EMAIL PROTECTED] zh_TW.big5 的子目錄,然後您再將它改 名為 zh_TW.Big5 即可。 [EMAIL PROTECTED] glibc-2.2 的 zh_TW 與 BIG5 這兩個源始檔,其格式已 [EMAIL PROTECTED] CLE 的 rpm 過來裝,也不能拿 srpm 過 來 build, 而在 ftp://xcin.linux.org.tw/pub/xcin/i18n/i18n_tool.tar.gz 裏頭的東東也都不能用,總之您必須使用 glibc-2.2 內附的才行。另外,當您在用 localedef 編譯時,還要注意 /usr/share/i18n/locales/zh_CN 這個檔也要存在,原因是現在 zh_TW 內部分資料必須參考到 zh_CN 。 大至上是如此,希望對大家有幫助 :-))

