複製鏈接
請複製以下鏈接發送給好友

區域設置

鎖定
區域設置 (locale)是特定於語言和地域的規則和數據的集合。區域設置包括有關排序規則、日期和時間格式設置、數字和貨幣約定,以及字符分類的信息。
中文名
區域設置
又    稱
本地化策略集
領    域
計算機

區域設置簡介

區域設置(locale),也稱作“本地化策略集”、“本地環境”,是表達程序用户地區方面的軟件設定。不同系統、平台、與軟件有不同的區域設置處理方式和不同的設置範圍,但是一般區域設置最少也會包括語言和地區。操作系統的區域設置通常比較複雜。區域設置的內容包括:數據格式、貨幣金額格式、小數點符號、千分位符號、度量衡單位、通貨符號、日期寫法、日曆類型、文字排序、姓名格式、地址等等。
區域設置的主要目標是讓用户選擇最適合他自己的設定。比如用以上的Windows作比喻:在控制面板的區域和語言選擇中,用户可以選擇自己的字符集排序方法;當瀏覽文件時,系統會使用“用户選擇的排序”來排列文件。 [1] 

區域設置實際落實

計算機中一套定義用户的語言、國家和用於定義用户希望在其用户界面上看到的各種可以改變的選擇的參數集合。通常一個區域設置標識符至少包括一個語言標識符和一個區域標識符。
UNIXWindows中,區域設置的控制是不同的。在UNIX下,通常通過環境變量來控制區域設置。這些環境變量包括:LC_ALL, LC_CTYPE, LC_TIME, 等等。你可以通過改變這些環境變量來控制你的程序或者命令所表現出來的區域設置,前提是這些程序或者命令必須是已經被國際化的和本地化的。在Windows下,你可以通過改變控制面板上的“語言/區域”中的區域的值來設定Windows的當前用户的區域設置。 [1] 

區域設置Ubuntu操作系統

在Ubuntu操作系統中,使用man locale-gen或man locale可獲得關於locale實現的細節。實際上是由glibc庫實現的。
locale相關(環境)變量生效的優先順序:
  1. LANGUAGE 指定個人對語言環境值的主次偏好,例如zh_CN:en_US:en
  2. LC_ALL 這不是一個環境變量,是一個可被C語言庫函數setlocale設置的宏,其值可覆蓋所有其他的locale設定。因此缺省時此值為空
  3. LC_xxx 可設定locale各方面(category)的值,可以覆蓋LANG的值。
  4. LANG 指定默認使用的locale值
可以把上述環境變量設在/etc/profile 或 /etc/environment等系統初始文件中。值得注意的是,若LANG或LC_ALL被設定為 "C",那麼LANGUAGE的值將被忽視。
除 C 和 POSIX這兩個locale名稱外,locale的名稱並未標準化。Linux平台與Windows系統的locale名稱有很大不同。Linux名稱的命名規則為:
language[_territory[.codeset]][@modifier]
其中language是ISO 639-1標準中定義的語言代碼,territory是ISO 3166-1標準中定義的國家和地區代碼,codeset是字符集的名稱 (如 UTF-8等),而 modifier 則是某些 locale 變體的修正符。 [1] 
bash中的使用示例:
$ LC_TIME=en_US.UTF-8 dateFri Oct 31 19:51:16 CST 2014$ LC_TIME=fi_FI.UTF-8 datepe 31.10.2014 19.52.00 +0800$ LC_TIME=zh_CN.UTF-8 date

區域設置Windows操作系統

Windows SDK規定,“語言”是與溝通有關的一組屬性的集合,包括所有允許的字符、通貨符號、日期時間格式等等。每個“語言”有一個語言名字與語言標識符。語言往往還需要指出國家/地區,如“英語(美國)”使用的語言名字是“en-US”。
每個區域設置(locale)是一個“語言”及一個排序規則。Windows XP支持超過150個區域設置(locale);Windows Vista支持超過200個區域設置(locale);Windows 7支持至少365個區域設置(locale)。每個區域設置(locale)有區域設置(locale)名字與區域設置(locale)標識符。例如:"de-DE_phoneb"是德國德語使用德式電話薄排序規則(該排序規則與拉丁字母序稍有不同)。 [1] 
參考資料
  • 1.    A Quick Primer On Unicode and Software Internationalization Under Linux and UNIX by Ed Trager