構造Linux系統的圖形化安裝程式(二)(轉)

BSDLite發表於2007-08-15
構造Linux系統的圖形化安裝程式(二)(轉)[@more@]  圖形環境的啟動及中文化

  本文是構造Linux的圖形化安裝程式系列文章的第二部分,主要介紹在安裝程式裝入記憶體之後,如何啟動圖形環境並設定中文語言環境。文中除了介紹安裝程式對這兩個功能的具體程式設計實現,還介紹了Linux中文化的一些基本知識,包括如何定製安裝程式顯示中所需要的Locale環境(Glibc和X Window系統兩部分),po檔案的處理。

  在安裝程式的第二階段執行結束之後,整個安裝程式已經被調入了記憶體,這時控制從安裝程式的載入程式轉到了安裝程式的主程式執行。這時的安裝程式就像是一個從Linux的控制檯環境啟動的程式,這個程式進行自動檢測並進行基本的裝置配置。為了進行圖形化安裝,安裝程式的主程式會啟動XFree86子系統並設定,同時設定當前的語言環境為中文環境。

  1. 多語言環境支援

  為了在Linux下實現多語言支援,必須在定製安裝程式時,引入與glibc和圖形環境兩者對應的多語言環境支援。對於glibc環境而言,它是整個Linux中文化的基礎,我們需要在/usr/share/locale目錄下儲存Locale資訊,在/usr/share/consolefonts目錄下儲存字型資訊,在/usr/lib/gconv目錄下儲存字元轉換模組的資訊。

  對於X Windows環境,我們需要在/usr/X11R6/lib/X11/locale目錄下儲存X Locale的配置,同時在/usr/X11R6/lib/X11/fonts目錄下儲存正常顯示所需要的字型集。

  在安裝程式啟動之後,必須正確設定LC_*變數同時呼叫setlocale函式。為了能顯示中文,安裝程式還必須載入正確的中文字型。

  1.1. 國際化的基本概念

  國際化(Internationalization,簡寫為I18N)是指軟體在設計結構和機制上支援多語言的擴充套件特性,其功能和程式碼設計不針對某一特定語言和地域。Locale是ANSI C語言中最基本的支援國際化的標誌,對中文Linux來說,支援中文Locale是最基本的要求。

  1.1.1. Locale環境

  Locale的命名規則:_.

  對於zh_CN.GB2312而言,zh表示中文,CN表示大陸地區,GB2312表示使用的字符集為GB2312。

  Locale使用一組分類,使用者可以獨立的操縱每一組分類。使用者既能用設定環境變數的方法,也能使用setlocale設定它們。這些分類都儲存在/usr/share/locale下。它們包含了:

  LC_COLLATE用於比較和排序。

  LC_CTYPE用於字元分類和字串處理,控制所有字元的處理方式,包括字元編碼,字元是單位元組還是多位元組,如何列印等。

  LC_MONETORY用於格式化貨幣單位。

  LC_NUMERIC用於格式化非貨幣的數字顯示。

  LC_TIME用於格式化時間和日期。

  LC_MESSAGES用於控制程式輸出時所使用的語言,主要是提示資訊,錯誤資訊,狀態資訊, 標題,標籤, 按鈕和選單等。

  LC_ALL它不是環境變數,只是一個宏,可使用setlocale設定所有的LC_*環境變數。這個變數設定之後,可以廢除LC_*和LANG的設定值,使得這些變數的設定值與LC_ALL的值一致。

  LANG它的值用於指定上面環境變數沒有設定的所有變數值。如果指定了上面任何一個變數的值,則會廢除對應的LANG值的預設設定。

  還可以包括其他的環境變數LC_ADDRESS,LC_IDENTIFICATION,LC_PAPER,LC_NAME,LC_TELEPHONE,LC_MEASUREMENT。

  標準Locale:"C"這是標準的C Locale。它所指定的屬性和行為由ISO C標準所指定。它是程式啟動時預設使用Locale。

  "POSIX"這是標準的POSIX Locale。它是標準的C Locale的別名。

  ""空名字是讓程式選擇當前環境設定值。

  設定一箇中文環境需要正確的設定上述Locale變數,舉例來說,在使用zh_CN.GB2312環境時,使用locale命令,所見到的系統環境為:
CODE:
  LANG="zh_CN.GB2312"
   LC_CTYPE="zh_CN.GB2312"
   LC_NUMERIC="zh_CN.GB2312"
   LC_TIME="zh_CN.GB2312"
   LC_COLLATE="zh_CN.GB2312"
   LC_MONETARY="zh_CN.GB2312"
   LC_MESSAGES="zh_CN.GB2312"
   LC_PAPER="zh_CN.GB2312"
   LC_NAME="zh_CN.GB2312"
   LC_ADDRESS="zh_CN.GB2312"
   LC_TELEPHONE="zh_CN.GB2312"
   LC_MEASUREMENT="zh_CN.GB2312"
   LC_IDENTIFICATION="zh_CN.GB2312"
   LC_ALL=

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-960250/,如需轉載,請註明出處,否則將追究法律責任。

構造Linux系統的圖形化安裝程式(二)(轉)
請登入後發表評論 登入
全部評論

相關文章