多國語言程式設計之資源轉換

2021-04-13 14:18:19 字數 1942 閱讀 5351

2023年12月14日 10:54:00

湖南省公安高等專科學校內保教研室(410006) 楊霞    1. 多國語言程式設計之資源轉換問題    不同國家的人使用著不同語言的作業系統。在microsoft windows下,語言用**頁來識別,不同語言用不同**頁來表示,如"簡體中文"用**頁936表示,而"美國英語"則用**頁1252表示。    在用visual c++開發應用程式時,與語種相關資訊一般儲存在資源檔案(*.rc檔案)中,因此,要編制不同語種應用程式(如中文應用程式、英文應用程式),實質上是要求編寫出不同語種的資源檔案。在實際程式設計中,我們可將不同語種的資源檔案編譯成相應的動態連線庫。這樣,在使用時,可根據作業系統所使用**頁異同,選用由相應語種的資源檔案編譯而成的動態連線庫,即可使應用程式正常執行。這就是所謂的多國語言程式設計問題。    在開發中文應用程式時,常要求應用程式在中文作業系統和英文作業系統+外掛程式漢字平台這兩種環境中都能正常執行。但由於工作環境不同,往往導致同一應用程式,在某種環境下能正常工作,在另一種環境下則不能正常工作。如中文版的microsoft word軟體, 在中文作業系統下能正常執行,但在英文作業系統+外掛程式漢字平台這種環境下,顯示的就是一堆亂碼。    要解決這一問題,需為不同語種作業系統編制不同語種資源檔案,實際上這也是多國語言程式設計問題。所不同的是,由於此時所顯示資訊並不需隨語種而變(無論在哪種環境下都只顯示中文資訊),因此,編制多個語種資源檔案可以有很簡單的方法,此即本文所要討論的資源轉換問題。該問題可簡單地描述為:如果已有了某一語種的資源檔案,在資源內容不變的情況下,如何將其轉換為另一語種的資源檔案。例如,已有了簡體中文(**頁為936)的資源檔案,在資源內容不變的情況下,如何將其轉換為美國英語(**頁為1252)的資源檔案。    2. 如何進行資源轉換    下面以將資源檔案從**頁936(簡體中文)轉換到**頁1252(美國英語)為例進行說明。    容易想到但會帶來災難性後果的方法是,直接修改資源屬性。這種方法過程是將vis ual c++的workspace視窗切換到resource view,選中某項資源,單擊右鍵,從彈出選單中選擇"properties"命令,此時系統將會彈出一對話方塊。在彈出的對話方塊中,修改language 項的值,將其由"簡體中文"改為"美國英語"。如此對resource view中其他各項資源進行修改,將所有資源項的language屬性都改為"美國英語"。但是,經此種修改後,再開啟資源,會發現資源裡的內容變成了一堆不可讀的亂碼。更致命的是,即使將資源的language項的屬性重新設為"簡體中文",資源內容仍是不可讀的一堆亂碼。也就是說,我們根本無法恢復資源原來內容。因此,如果在修改前沒有將資源備份,此種修改帶來的後果將是災難性的。    正確的方法是,以某文字編輯器(如edit、notepad)開啟資源檔案,在其中查詢詞"la nguage",找到後可看到如下內容:    //    // chinese (p. r. c.) resources    #if !defined(afx_resource_dll) || defined(afx_targ_chs)    #ifdef _win32    language lang_chinese, sublang_chinese_simplified    #pragma code_page(936)    #endif //_win32    這段**表示當前使用的**頁為936,所代表的語種為簡體中文。將以上**段用如下**段替換    //    // english (u.s.) resources    #if !defined(afx_resource_dll) || defined(afx_targ_enu)    #ifdef _win32    language lang_english, sublang_english_us    #pragma code_page(1252)    #endif //_win32    以上**說明資源使用**頁為1252,所代表語種為美國英語。    經過上面簡單修改,即可將**頁為936資源檔案轉換為**頁為1252的資源檔案,而資源內容不變。

android程式設計切換多國語言

displaymetrics dm resources.getdisplaymetrics configuration config resources.getconfiguration locale locale getsetlanguagelocale context config.locale...

移植多國語言

二 移植zi輸入法 1 開啟zi開關 1 檔案 make ztenc26 07b gprs.mak 修改輸入法為mmi zi input method mmi zi input methods none,mmi t9,or mmi zi 2 在mmi features.h裡面開啟相應的zi語言輸入法...

Rails多國語言

下載 zh tw.yml 到 config locale 下,就有預設的正體中文翻譯 config environment.rb 的 config.i18n.default locale zh tw 可以修改預設的語系 參考投影片 rails i18n 使用方法 i18n.t 在 view 中可以直...