用VS2005實現軟體多語言版本的迅捷開發

2021-04-12 13:15:22 字數 2894 閱讀 8542

vs2005徹底改變了開發軟體多語言版本費時費力的現狀,現在用vs2005可以方便地實現乙個針對世界上所有語言的地方版本。

1. 文化和區域

世界分為若干個文化和區域,應用程式必須知道這些文化和區域的區別。文化是基於使用者的語言和文化習慣的一組特性。rfc 1766定義了文化的名稱,這些名稱根據語言和國家或區域的不同在世界各地使用。例如en-au、en-ca、en-gb和en-us分別用於表示澳大利亞、加拿大、英國和美國的英語。

2. currentculture和currentuiculture

應用程式中的文化分為兩種型別:使用者介面的文化和數字及日期格式的文化。文化與執行緒相關,有了這兩種文化型別,就可以把兩個文化設定應用於執行緒。用執行緒設定文化時,thread類提供了屬性currentculture和currentuiculture。屬性currentculture用於設定與格式化和排序選項一起使用的文化,而屬性currentuiculture用於設定使用者介面的語言。

使用windows控制面板中的「區域和語言」選項,使用者就可以改變currentculture的預設設定。使用這個配置,還可以改變文化的預設數字、時間和日期格式。currentuiculture不依賴於這個配置,而依賴於作業系統的語言。

3. 應用程式載入的過程

對於乙個本地化的軟體,.net應用程式都有currentculture和currentuiculture兩個屬性,當它載入時,這兩個屬性預設為作業系統中預定義的值。.net應用程式會去程式目錄下尋找有文化名稱為名字的目錄,以及尋找相對應的語言包(附屬資源程式集),檔名為assemblyname.resources.dll,如果找到就會載入,如果找不到就會去用預設的(不變的)文化語言包,如果這個語言包也找不到——程式當然會報錯。

4. 多語言版currentuiculture

每個窗體都有乙個可以設定為 true 或 false 的 localizable 屬性。將該屬性設定為 true,就建立了該窗體的多語言版本,visual studio 2005 將在幕後為您建立和維護一組已本地化的資源檔案。接著,將窗體的language 屬性更改為特定語言(如"中文 (簡體)"),則 visual studio 會新建乙個本地化資源檔案,編譯後將自動生成該語言的語言包。因此您需要作的就是,更改language 屬性後,直接用該種語言編輯窗體.您可以修改該窗體上的字串、控制項的大小以及位置、甚至替換。這樣的特性,可以允許您的軟體的中文版和英文風格炯異。

圖:

5. 不在窗體上的本地化資源

您可以將程式中需要本地化的東西都放在這個資源檔案中,在c#程式中您可以以assemblyname.properties.resource.resourcename的方式直接引用它。

那專案資源檔案中的資源怎樣本地化呢?你只需要複製該檔案,用新的名稱命名,如resources.zh-chs.resx,注意到新的名稱新增加的部分必須是文化名。接著你在ide中本地化這個新的資源檔案就可以了,剩下的事情,vs2005都幫我們去作了。

6. 多語言版currentculture

多語言版currentculture主要體現在對一些函式,尤其是format、tostring函式的使用上,很多函式同string、date類一樣,提供在格式化為本地格式的過載函式,這些函式一般帶有iformatprovider引數,允許用程式設計的方式提供不同文化的格式化的結果。例如:下面的**生成了法語法國地區的數字與日期的格式化字串。

intval 

=12345678

;val.tostring("n

", newcultureinfo(

"fr-fr")

datetime d 

=new

datetime(

2003

, 08

, 09

);d.tostring("d

", newcultureinfo(

"fr-fr

"));

7. 程式設計改變當前currentuiculture和currentculture

對於許多大型的專案,會產生程式設計動態改變當前應用程式的文化的需求,在.net中,這似乎也簡單:

//set culture for formatting

thread.currentthread.currentculture 

=ci;

//set culture for resources

thread.currentthread.currentuiculture 

=ci;

1。c#高階程式設計(第3版)【全文**】第17章。

我看的是csdn上的全文**,可惜的是第3版,知識已經有點老舊。

2。msdn中《資源與本地化》:http://www.microsoft.com/china/msdn/library/netframework/netframework/issuesbasicinstincts.mspx?mfr=true

Google Reader多語言版功能更新

據google reader官方部落格報道,google reader已經在全球所有語言 包括中文版 推出了原先英文版的新增功能,包括 好友閱讀共享 共享備註 字母排序等等新功能。我終於可以在使用了九個月的英文版後切換回中文版的google reader了。實際上,早在去年12月google rea...

Unlocker 1 7 6多語言版發布

相信許多使用者在進行檔案或目錄的刪除時都碰過底下的問題,就是被系統告知,檔案被某個程式所占用,無法順利被刪除,但是令人百思不得其解的是,該檔案到底是被誰所占用呢?是那個程式導致使用者無法將檔案刪除呢?現在就讓 unlocker 來幫你解決吧!unlocker 是乙個免費的右鍵擴充工具,使用者在安裝後...

遊戲實現多語言版本 國際化

自從換了專案組之後一直都很忙,沒什麼時間寫部落格了,目前這個專案是自己挑的,希望多花點時間,把它做好。因為專案還沒有對外公開,關於專案就不透露資訊,只能說一些實現方式。到新專案之後第乙個著手做的就是多語言版本,也就是國際化。多語言的實現最基本的實現方式就是根據id去讀語言配置,不同的語言新建乙個語言...