C 本地化實現多語言

2021-08-28 15:46:20 字數 2887 閱讀 4279

visual studio 對於.net 程式的本地化提供了完整的支援,這裡僅介紹實現多語言版本本地化程式的簡單步驟.

注意黑體處為關鍵點.

一. 窗體本地化

對於windows 窗體,你需要做的第一步是確定你的預設介面語言,預設語言是指當執行程式無法找到已定義的本地化資源時,預設使用的語言,由於.net使用utf-8作為預設編碼,一般情況下在任何語言的系統上都能正常顯示.

像往常一樣在窗體上加入你需要的控制項,並設定好屬性,控制項的text屬性同樣會自動生成為資源(雙擊form1.resx看看吧~),簡單吧,我們來看下一步,本地化窗體.

下面我們來新增英語環境下的窗體.在窗體屬性視窗中找到language屬性(挨著localizable),選擇英語(美國),現在我們把窗體上的各個字串翻譯成英文,並修改窗體的預設字型為arial,字型大小8,完成後你會看到窗體檔名下面多出乙個form1.en-us.resx,這裡用來儲存已本地化為英文的資源.編譯程式,拷貝到英文系統下執行程式看看,效果怎麼樣?(什麼?你沒有英文環境?好吧,後面會提供解決辦法)

現在你已經成功的實現了中文簡體與英文美國的完美支援,如果需要其他語種的支援,選擇language屬性列表中相應的語種重複上述步驟即可.需要注意的是.net使用的是unicode編碼,需要用unicode編碼其他語種後輸入到介面上,否則特別像繁體字容易出現亂碼.

需要注意的情況:如果需要在窗體上新增刪除控制項,必須把窗體語言屬性(language)修改為預設後才可以進行修改.

下面我們來看一下資源檔案如何處理

二. 資源本地化

在工程名稱上右鍵,選擇新增新專案,生成resource1.resx檔案,雙擊開啟該檔案,預設為字串資源器,在這裡你可以定義字串資源,在字串值中輸入hello world(不包含雙引號),現在就可以在**中直接用resource1.string1來引用了,注意這裡的資源也是同窗體一樣,是預設語言下的資源,在解釋如何新增其他語言前,我們先介紹一下.net解析資源的步驟

.net 資源檔名(這裡是resource1.resx)由根名稱(即resource1),本地語言名稱(預設情況下還沒有)及副檔名組成,在讀取資源時,資源管理器會根據當前環境決定需要的本地語言名稱,例如英語,然後試圖以全名讀取資源,美國英語的本地名稱為en-us(語言名稱可以從msdn中查詢cultureinfo資訊得到),那麼資源全名為resource1.en-us.resx,如果存在該檔案,則載入該檔案作為資源檔案,如果沒有則使用預設值resource1.resx,確定好資源檔案後開始查詢指定的資源(例如string1),如果在本地資源檔案中沒有找到,則向上查詢上一級的本地資源檔案,最終找到根名稱resource1為止.資訊參考文章最後所附連線.

現在我們來新增美國英語資源,使用專案選單新增新項,新增乙個新的資源檔案,命名為resource1.en-us.resx,雙擊開啟,把resource1.resx中的資源翻譯成英語填入其中,在**中新增乙個窗體載入事件,在事件處理**中新增一行messagebox.show(resource1.string1);編譯執行程式,觀察在中文簡體系統和英文系統下的顯示內容.

不停的在不同語言系統環境下切換很麻煩,下面提供可以在一台電腦上測試不同語種的解決方案.

三. 切換顯示語言

c# 窗體程式使用cultureinfo來管理當前語言,這裡cultureinfo分為兩種,一種決定語言格式,一種決定語言資源(這裡我們僅需要後者),只需簡單的設定如下兩個變數即可改變程式顯示語言:

system.threading.thread.currentthread.currentculture;

system.threading.thread.currentthread.currentuiculture;

在窗體初始化之前,我們設定

system.threading.thread.currentthread.currentuiculture = new system.globalization.cultureinfo(en-us);

即可把程式執行語言切換為美國英語,編譯程式試試看吧

演練:本地化 windows 窗體

visual studio 專案系統為本地化 windows 窗體應用程式提供相當大的支援。下面是兩種使用 visual studio 開發環境生成資源檔案的方法:

使專案系統為可本地化的使用者介面元素(如窗體上的文字和影象)生成資源檔案。然後將該資源檔案生成到附屬程式集中。

新增乙個資源檔案模板然後使用 xml 設計器該模板。採取後一種方法的原因之一是為了生成在對話方塊和錯誤資訊中出現的可本地化字串。然後,必須編寫**以這些資源。

本演練主題在乙個 windows 應用程式專案中演示這兩種過程。

還可以將文字檔案轉換為資源檔案;有關資訊,請參見文字檔案格式中的資源和資源檔案生成器 (resgen.exe)。

使 visual studio 生成資源檔案

2. 在「屬性視窗中,將窗體的 localizable 屬性設定為 true。

language 屬性已經設定為「(預設值)。

3. 將 button 控制項從「工具箱的「windows 窗體選項卡拖到窗體上,然後將其 text 屬性設定為 hello world。

4. 將該窗體的 language 屬性設定為「德語(德國)。

5. 將該按鈕的 text 屬性設定為 hallo welt。

6. 將該窗體的 language 屬性設定為「法語(法國)。

7. 將該按鈕的 text 屬性設定為 bonjour le monde。如果需要的話,可調整該按鈕的大小以容納較長的字串。

8. 儲存和生成解決方案。

9. 單擊「解決方案資源管理器中的「顯示所有檔案按鈕。

資源檔案出現在 form1.vb、form1.cs 或 form1.jsl 下面。form1.resx 是預設區域性的資源檔案,它將生成到主程式集中。form1.de-de.resx 是在德國講的德語的資源檔案。form1.fr-fr.resx 是在法國講的法語的資源檔案。

uwp 多語言和本地化

1.在專案根目錄建立strings資料夾,再strings資料夾建立需要的語言名子目錄,再新增資源檔案resources.resw,目錄構如 strings en us resources.resw strings zh cn resources.resw 2.在各語言的resources.resw...

iOS的多語言本地化適配

nsarray languages nslocale preferredlanguages nsstring language languages objectatindex 0 系統預設語言 規則 未設定語言,則跟隨系統預設語言 設定乙個 klanguagekey 用於記錄語言型別 static ...

unity3d NGUI 本地化 多語言

ngui的本地化操作 localization uilocalize language selection 主要部分 在需要本地化的uilabel上繫結uilocalize,填寫key 在本地化檔案中,各語言txt檔案中的key一一對應 english.txt flag flag us langua...