<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
    主站蜘蛛池模板: 高h视频在线免费观看| 免费黄网站在线看| 国产L精品国产亚洲区久久 | 亚洲日本国产精华液| 国产精品成人免费视频网站京东 | 波多野结衣在线免费观看| 亚洲精品久久无码| 亚洲午夜国产精品无码老牛影视| 18禁黄网站禁片免费观看不卡| 久久精品国产亚洲AV天海翼| 亚洲精品字幕在线观看| 成人免费视频一区二区三区| 精精国产www视频在线观看免费| 亚洲伦理一二三四| 久久亚洲av无码精品浪潮| 可以免费看黄视频的网站| caoporn成人免费公开| 亚洲综合伊人制服丝袜美腿| 国产亚洲AV手机在线观看| 在线观看成人免费| 日本免费人成网ww555在线 | 18pao国产成视频永久免费| 一区二区视频免费观看| 亚洲乱码中文论理电影| 国产成人麻豆亚洲综合无码精品| 特级做A爰片毛片免费69| 成全高清在线观看免费| 无人视频免费观看免费视频| 亚洲国产福利精品一区二区| 国产av无码专区亚洲av果冻传媒| 成人毛片免费视频| 91香蕉成人免费网站| 国内精品一级毛片免费看| 黄色网址在线免费观看| 久久亚洲国产成人影院| 亚洲日本中文字幕| 久久久综合亚洲色一区二区三区| 亚洲v国产v天堂a无码久久| 成年女人毛片免费播放视频m| 亚洲一区在线免费观看| 野花香高清在线观看视频播放免费 |