最近項目要在Silverlight 2應用程式中實作本地化,原以為這個過程非常簡單,卻沒想到實作的時候一波三折,好在結果還算不錯。需求是這樣的,使用者第一次通路的時候,預設為英文,當使用者選擇一種顯示語言後,記錄在本地,下次使用者通路時直接顯示已經選擇的語言。現在我把整個實作的過程記錄下來,希望對大家有所幫助。
本文為Silverlight 2中多語言支援實作第二部分。

感謝我的同僚Fabien幫我翻譯為French,同樣我們打開項目檔案,在SupportedCultures中添加一種語言文化fr-FR,我們可以用逗号或者分号來分割,如下代碼所示:
現在我們解壓xap檔案,可以看到fr-FR、zh-CN資源檔案都正确的打包在了xap檔案中,如下圖:
現在運作程式時,卻發現中文語言文化無法顯示,而法文能夠正常顯示:
這就是Silverlight 2 Beta 2在本地化方面支援的一個Bug,它隻能夠支援除預設語言之外的一種語言。有朋友可能會問,既然能夠支援除預設語言之外的一種語言,為什麼在這個示例中不是中文,而是法文呢?這主要是在SupportedCultures中設定的語言文化,在編譯後,打包到AppManifest.xaml中添加AssemblyPart時是按照語言文化的字母順序排列的,是以會預設支援最上面一種語言文化:
好了,現在大家知道了在Silverlight 2 Beta 2中最多隻能支援兩種語言,但願在RTM時該問題已經不複存在。
現在我們再來看一種另類的多語言實作,即如果為一個Silverlight項目同時生成支援不同語言文化的多個xap檔案。我們可以在解決方案中添加一個新的Build Tag,如下圖所示:
然後我們可以編輯Silverlight項目檔案.csproj,可以在我們建立的Build Tag下面添加一項SupportedCultures配置,并指定一種語言文化:
現在我們在Web測試項目中,配置一下xap檔案的輸出,隻需要點選Change按鈕就可以了,使Configuration Specific Folders變為Yes,如下圖所示:
這樣可以我們通過修改Build Tag,來實作在Web測試項目中同時輸出多個xap檔案,而這些xap檔案将支援不同的語言,并且不會互相覆寫,如下圖所示:
這樣我們就可以用一個Silverlight項目來輸出支援不同的語言文化的xap檔案。
通過這兩篇文章我分析了Silverlight 2 Beta 2中多語言支援的實作,以及目前版本存在的問題等。希望對大家有所幫助!
示例下載下傳
本文轉自lihuijun51CTO部落格,原文連結: http://blog.51cto.com/terrylee/83041,如需轉載請自行聯系原作者