locale

2009-05-13 05:14:31来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


locale 是一組 C 程式語言處理自然語言(文字)的程式介面, 也可以簡單的說,locale 就是一組地區性語言的資訊。由國家語言和各地習俗影響所決定的慣例,或代表一個地理區域的定義所組成,這些慣例包含文字、日期、數字、貨幣格式和排序等等。這代表著 locale 可讓程式的輸出可以直接反應地方區域性的文化。C 語言的 locale 定義,分為下列各大類:


  • LC_ALL 指定所有的 Locale

  • LC_CTYPE 字元定義 (包含字元分類與轉換規則)

  • LANG 語言顯示

  • LC_MESSAGES 訊息顯示

  • LC_TIME 時間格式

  • LC_NUMERIC 數字格式

  • LC_MONETARY 貨幣格式

  • LC_COLLATE 字母順序與特殊字元比較

其中與一般使用者息息相關的,是字元定義 (LC_CTYPE) 與語言顯示 (LANG)。LC_CTYPE 直接關係到某些字元或內碼在目前的 locale 下是否可列印?要如何轉換字碼?對應到哪一個字?.... 等等。LANG 則關係到軟體的訊息輸出是不是符合地域性,例如 :我們需要的是中文。而一個真正完整支援 locale 系統, 是當使用者在 shell prompt 下,直接設好環境變數後,則馬上就能切換到那個語言了。當 LC_MESSAGES、LC_TIME、LC_NUMERIC、 LC_MONETARY 等沒有設定的時候,會直接取用 LANG 的環境設定值。
設定 Locale 的字元定義為台灣地區的 Big5 繁體中文碼定義, 有了正確的 locale 的定義後,使得任何地區的語文,只要在加入適當的 locale data 之後,C Library 就能正確地處理軟體顯示訊息, 而我們使用的中文當然也不例外,而目前常用的中文 locale data 就是 zh_TW.Big5,代表的就是中文語系(zh)台灣地區(TW) 使用Big5編碼系統(Big5)。
Note: locale 命名規則:語言_地區名.字元編碼名稱
當一個程式啟動時,系統會預設給它一個初始 locale,稱為 POSIX 或 C locale。在此 locale 下,程式的表現會與傳統的 C 語言中一樣, 使用英文做訊息輸出,只能處理英文等 ASCII 碼等等。如果該程式有支援 I18N,也就是說它有按照 I18N 的標準來寫,則它在啟動後就會馬上呼叫系統函式來改變它的 locale, 如此它就搖身一變,變成可以處理該 locale 所代表的地區語文了。
zh_TW.Big5 是目前台灣內廣泛使用的 locale, zh 是華語(Chinese),1998 年 ISO639 裡面以兩個英文字母來代表語言編碼, 這個縮寫據筆者所知沒有任何含義,而 TW 代表的就是台灣(Taiwan) 地區的縮寫,最後的 Big5 則是編碼方式。
locale 設定檔在編譯後, 則是儲存在 /usr/share/locale/ 目錄下, 以 zh_TW.Big5 locale 為例,該目錄中就包含了 LC_COLLATE、LC_CTYPE、 LC_TIME。
而 LC_MESSAGES 則是儲存在 /usr/local/share/locale/zh_TW/LC_MESSAGES/ 或是 /usr/X11R6/share/locale/zh_TW.Big5/ 底下。由於 LC_MESSAGES 類別掌管的是程式訊息輸出所用的語言,而且不同程式間的訊息都不會一樣,因此它不能像其他類別一樣,只提供單一一個資料檔即可。相反的,在這裏所採取的方式是由各應用程式自行提供它們的訊息資料檔, 並統一放在各 locale 的 LC_MESSAGES 的目錄下。例如 mutt 程式,其訊息的部分除了英文以外,可能還同時提供了繁體中文、簡體中文、 日文、法文等翻譯,因此,在以上這些語文所代表的 locale 中, 其底下的 LC_MESSAGES 目錄中都會有一份屬於 mutt 程式的訊息資料檔。 換句話說,在 I18N 架構下,程式訊息部分是與程式分離的, 如此才能分別對各 locale 做 ``區域化'' (即翻譯成各地區的語言)。 如此,當 mutt 在執行時,系統會根據目前它的 LC_MESSAGES locale 設定去找找看有沒有它的訊息資料檔存在,有的話就以該語言做訊息輸出, 否則的話則以 C locale 的方式 (即英文) 來輸出訊息。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD内核读书笔记-4.7-2

下一篇:freebsd 的硬盘安装