<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

    http://www.netadmin.com.cn/kt_article_show.php?article_id=13205&categ_code=10071001



    在 UNIX 的世界中,形成了「程序國際化」與「數據本土化」的標準,程序代碼只要寫過一遍,就可以適用于所有的語文與編碼系統,只要系統有支持該語文與編碼系統所需的「本土數據」即可。即采取的概念就是「程序」與「數據」分離并分開維護的方式。

    「程序國際化」簡稱 I18N,其意為 InternationalizatioN 一字中頭尾字母 "I" 與"N" 中間夾 18 個英文字母,故名。它是在系統底層的函式庫 (即 libc 函式庫) 中實作一組標準的函式接口,可以讓程序存取該地區語系的種種信息。有了這些信息,程序本身不僅可以不需要修改,就足以處理各國的語文,同時程序本身甚至連各地區語文的各項細節 (如編碼方式 .... 等) 都不需要知道,因為這些全部都是由系統函式庫提供的。

    「資料本土化」簡稱 L10N,其意為 LocalizatioN 一字中頭尾字母 "L" 與 "N" 中間夾 10 個英文字母,故名。它是將地區語文的各項細節數據分門別類,安裝在系統底層的數據庫中,以便讓系統函式庫存取,以提供給上頭的應用程序使用。這些用來描述各地區語文的數據,我們稱之為「地區環境數據庫 (locale)」,或簡稱「地區環境」它們包括以下的類別 (categories):

    1. LC_COLLATE: 該地區文字排序規則,以及正規化表示式 (regular expression)的比對依據。

    2. LC_CTYPE: 該地區所使用的編碼系統、字集、與文字分類、轉換等信息。

    3. LC_MESSAGES: 各應用程序區域化的訊息顯示。

    4. LC_MONETARY: 該地區所通行的貨幣格式。

    5. LC_NUMERIC: 該地區所通行的數字表示格式。

    6. LC_TIME: 該地區所通行的時間、日期表示格式。

    · 對于同一個地區語文而言,除了 LC_MESSAGES 之外,其它所有的類別都是固定的,故這些類別的數據就只需準備一份即可,它們是由系統底層函式庫直接提供,可以讓所有的應用程序分享。至于 LC_MESSAGES 訊息顯示的部分,由于各應用程序的訊息都不同,故這部分的數據是由應用程序自身提供,而不像其它類別一樣由系統函式庫提供。

    ·在這些類別中,決定一個程序是否在該地區已「本土」化的最重要因素,一是 LC_CTYPE,二是 LC_MESSAGES。前者賦與程序處理該地區文字的能力,后者賦與程序用該地區的語文來顯示的能力。

    · 在實際中,將程序所有的訊息集中放在一個文件檔中,而該文件文件的訊息開始時只會用程序原作者慣用的語言來表示。如果希望該程序也能顯示其它語文的訊息時,我們只需要去做翻譯的工作即可,而不必真的去修改程序代碼本身。因此,訊息翻譯與程序維護可以分頭進行,翻譯的工作不需要由程序原作者、或有經驗的程式設計師來做,只需他熟悉該語文,并對該程序有一定的熟悉度即可。故基本上,任何人都可以參與翻譯的工作。當程序編譯安裝完成后,已翻譯成各國語文的訊息文件也會一并安裝入系統的區域化數據庫中。當程序啟動,需要做訊息顯示時,它會呼叫系統提供的函式介面,依目前的語系設定來正確抓取該語文的訊息并顯示出來。萬一目前的語系設定找不到相對應的訊息翻譯文件時,則程序會自動以其原始的語系來顯示。

    地區環境數據庫名稱和語系設定

    各地區所屬的地區環境數據庫名稱格式如下:

    _[.]

    其中 [.] 有時候會省略。以我們臺灣地區所使用的為例:

    zh_CN.UTF-8其意即為「中文語系」(zh)「中國」(CN)「使用UTF-8編碼系統」。如果將后頭的 [.] 省略掉,就是這個樣子

    zh_CN

    ·如果我們不特別做語系的設定,則程序在啟動時,會以系統預設的語系來運作,一般而言其地區環境數據庫名就是 "C" 或 "POSIX",也就是原始 C 語言所采用的編碼系統 (ASCII) 與英文訊息等等。如果希望改變程序運作的語系,則我們必須在程序啟動前先做好環境語系的設定,也就是設好各類別的環境變量。例如:

    LC_CTYPE=zh_CN.UTF-8; export LC_CTYPE

    LC_MESSAGES=zh_CN.UTF-8; export LC_MESSAGES

    ·假如希望程序可以處理 EUC-TW 的文字,但仍以 Big5 中文顯示訊息時,就這樣設定:

    LC_CTYPE=zh_TW.euctw; export LC_CTYPE

    LC_MESSAGES=zh_TW.Big5; export LC_MESSAGES

    · 在多數情況下,通常會希望一口氣將所有的類別設定成相同的語系,也就是讓我們的整體環境全部處于同一個語系下。當然我們可以用上述的方式一個個類別分別設定,但除此之外系統還提供了另外兩個環境變量,以方便我們的作業。一是 LANG,另一個是 LC_ALL。例如我們這樣設:

    LC_ALL=zh_CN.UTF-8; export LC_ALL

    其效果就完全等價于將所有的類別全部設定了。而 LANG 的用法也是一樣,所達到的效果也類似,但意義稍有不同,這里要留意優先級的差別。一般系統對這些環境變數的優先級是:LC_ALL > LC_* > LANG

    ·也就是說,任何一個 LC_ 類的變量設定后,會使 LANG 的設定的相對應類別失效。如果我們完全不設任何的 LC_ 類的環境變量,只單單這么設

    LANG=zh_CN.UTF-8; export LANG

    則所有的類別都會以 LANG 的設定來運作,除非我們特別去設了某個 LC_ 的環境變數,如此這個類別就會以新的設定來運作 (但其它的類別不變)。相似的道理,如果我們設了 LC_ALL 的環境變量,則所有的類別設定,包括 LANG 的設定全部會失效,而改以 LC_ALL 的設定來運作。

    posted on 2007-03-22 12:51 jinfeng_wang 閱讀(607) 評論(0)  編輯  收藏 所屬分類: ZZ 、Linux
    主站蜘蛛池模板: 亚洲国产成人va在线观看网址| 在线不卡免费视频| 自拍偷自拍亚洲精品第1页| 国产在亚洲线视频观看| 国产无遮挡裸体免费视频| 亚洲欧美不卡高清在线| 大学生高清一级毛片免费| 亚洲永久网址在线观看| 成人午夜视频免费| 亚洲成av人在线观看网站| 永久黄网站色视频免费| 无码亚洲成a人在线观看| 亚洲国产精品尤物yw在线 | 亚洲一区中文字幕在线观看| 51视频精品全部免费最新| 亚洲日本国产精华液| 丁香花免费完整高清观看| tom影院亚洲国产一区二区| 天天摸夜夜摸成人免费视频| 鲁啊鲁在线视频免费播放| 怡红院亚洲怡红院首页| 性xxxx视频免费播放直播| 亚洲第一成年网站大全亚洲| 成人免费看黄20分钟| 美女又黄又免费的视频| 亚洲精品无码MV在线观看| 无码AV片在线观看免费| 久久久久久亚洲精品影院| 又黄又爽无遮挡免费视频| 免费无码H肉动漫在线观看麻豆| 精品无码一区二区三区亚洲桃色 | 日韩免费观看一区| 精品国产成人亚洲午夜福利| 免费人成网站在线高清| 永久在线观看免费视频| 亚洲www在线观看| 中文字幕精品无码亚洲字| 免费在线观看视频网站| 美女裸免费观看网站| 久久亚洲私人国产精品| 日韩激情淫片免费看|