linux中的locale,LANG
Locale是根據計算機用戶所使用的語言,所在國家或者地區,以及當地的文化傳統所定義的一個軟件運行時的語言環境.?
可以發現locale
命令中,可以顯示多個LC_*
和LANG
.
1 LANG
LANG
變量是language的簡稱,在一個系統變量,它決定系統的默認語言的,即系統的菜單、程序的工具欄語言、輸入法默認語言等.
LANG
在登錄系統後就被讀取並生效,unbuntu中,是從下面這個文件中讀取的.
看一下格式:zh_CN.UTF-8
,其中zh_CN
這個組合,在很多地方都可以看到,而完整的表達是:
語言[_地域[.字符集]][@修正值]
在ubuntu中,這些組合在/usr/share/i18n/locales
其中i18n
來源是英文單詞 internationalization的首末字符i和n,18為中間的字符數,是“國際化”的簡稱.指讓產品(出版物,軟件,硬件等)無需做大的改變就能夠適應不同的語言和地區的需要.對程序來說,在不修改內部代碼的情況下,能根據不同語言及地區顯示相應的界面. 在全球化的時代,國際化尤為重要,因為產品的潛在用戶可能來自世界的各個角落.通常與i18n相關的還有L10n(“本地化”的簡稱).
這些文件的內容主要對12個小項目的格式的定義:
LC_CTYPE #用戶所使用的語言符號及其分類 LC_NUMERIC #數字 LC_TIME #時間顯示格式 LC_COLLATE #比較和排序習慣 LC_MONETARY #LC_MONETARY LC_MESSAGES #信息主要是提示信息,錯誤信息, 狀態信息, 標題, 標簽, 按鈕和菜單等 LC_PAPER #默認紙張尺寸大小 LC_NAME #姓名書寫方式 LC_ADDRESS #地址書寫方式 LC_TELEPHONE #電話號碼書寫方式 LC_MEASUREMENT #度量衡表達方式 LC_IDENTIFICATION #對自身包含信息的概述
例如:en_HK
文件的LC_IDENTIFICATION
部分:
而zh_CN
的LC_TIME
部分為:
對應的中文就是,星期一...等.這就是在中文的linux下date
等命令,輸出特定的信息的格式,例如:
將LANG
設定為不同的值,那麽輸出的形式也不同.
而不同文件的不同的小項目可能都是不同的.因而,完成了本地化的過程.
2 locale
LANG
變量,只能全局的改變上述的12個條目,也就是說:
LC_CTYPE #用戶所使用的語言符號及其分類 LC_NUMERIC #數字 LC_TIME #時間顯示格式 LC_COLLATE #比較和排序習慣 LC_MONETARY #LC_MONETARY LC_MESSAGES #信息主要是提示信息,錯誤信息, 狀態信息, 標題, 標簽, 按鈕和菜單等 LC_PAPER #默認紙張尺寸大小 LC_NAME #姓名書寫方式 LC_ADDRESS #地址書寫方式 LC_TELEPHONE #電話號碼書寫方式 LC_MEASUREMENT #度量衡表達方式 LC_IDENTIFICATION #對自身包含信息的概述
這12個條目的值,默認都等於LANG
的值.
在linux環境變量中,這12個值都可以單獨的設置:
LC_*="*"
export LC_*
即可單獨的設置某一項.
其中又有LC_ALL
可以統一的設置上述的12個小項,三者的優先級為:
LC_ALL
>LC_*
>LANG
3 LC_ALL=C
而LC_ALL=C
的含義是:"C"是系統默認的locale,"POSIX"是"C"的別名.所以當我們新安裝完一個系統時,默認的locale就是C或POSIX.
4 改文件名為英文
安裝linux系統的時候,如果語言選擇的是中文,那麽安裝結束以後,用戶目錄下的桌面,下載等文件夾都是中文,不利於終端下操作,因此會將這些文件夾改為英文:
export LANG=en_US
xdg-user-dirs-gtk-update
export LANG=zh_CN
5 其他
很多文章介紹說,locale
和LANG
的值還涉及到中文輸入的問題.沒找到這方面的例子.
因此,目前最多的還是界面和終端中不同語言環境的顯式格式上的區別.
linux中的locale,LANG