天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Silverlight 2中多語言支持實現(上)

引言

最近項目要在Silverlight 2應用程序中實現本地化,原以為這個過程非常簡單,卻沒想到實現的時候一波三折,好在結果還算不錯。需求是這樣的,用戶第一次訪問的時候,默認為英文,當用戶選擇一種顯示語言后,記錄在本地,下次用戶訪問時直接顯示已經選擇的語言。現在我把整個實現的過程記錄下來,希望對大家有所幫助。

本文為Silverlight 2中多語言支持實現第一部分。

準備工作

我們發現在Silverlight 2中提供了ResourceManager類,這意味著可以通過資源文件來實現,首先在Silverlight項目中建立一個文件夾,命名為Resources,添加一個資源文件Strings.resx,并添加幾個值,如下圖所示:

TerryLee_0007

該文件將作為默認資源文件,設置Access Modifier為Public,它將會生成Strings.Designer.cs文件,如下圖所示:

TerryLee_0008 

現在再創建幾個其它語言的資源文件,如中文、法語、挪威語等,注意資源文件的命名方式,都是以Strings+語言文化構成,有關每一種語言文件的代碼,大家可以查閱MSDN。

TerryLee_0009

其它這些文件的Access Modifier的設置為No Code generation。有了前面這些準備工作,接下來進行實現。

 

 

實現

有了上面這些資源,我們很容易想到利用Silverlight中的靜態資源來綁定到UI控件上面,首先定義資源文件:

TerryLee_0011

綁定到UI控件上,如我們放置三個按鈕:

TerryLee_0012

最后我們只剩下一步工作,就是指定當前線程的語言文化和UI語言文化,這一點我們可以在Application_Startup事件中來實現,我們設置為zh-CN,如下代碼所示:

TerryLee_0010

至此工作完成,可是當我們編譯時卻發現有這樣的錯誤:

Type 'Strings' is not usable as an object element because it is not public or does not define a public parameterless constructor or a type converter

很明顯Strings類型的構造函數訪問性不是public,打開Strings.Design.cs文件可以看到,它的構造函數是internal的,這一點好辦,手工修改為public(也許該問題將會在RTM中解決)。但是要注意,每次當修改完Resource文件后,它會再次變為internal類型。

TerryLee_0013

問題出現

現在編譯成功,可是當運行時卻并沒有出現我們想要的結果。我們首先會想到,資源文件編譯后是否下載到了本地,也就是是否打包到了xap文件中,這一點很好證實,我們可以解壓xap文件來看看,果然不出所料,如下圖所示:

TerryLee_0014

在xap文件中,除了Silverlight項目程序集之外,并沒有任何與資源文件有關的東西。有一種“暴力”的辦法可以解決這個問題,那就是我們拷貝Silverlight項目bin/Debug文件夾下的資源文件,手工進行打包xap文件,并且需要在xap文件的AppManifest.xaml文件夾中手工加入AssemblyPart,如下代碼所示:

TerryLee_0015

事實證明,這樣確實可以得到多語言的支持,問題在于每次編譯后,xap文件都會重新生成一次。總是這樣手工打包也不是長久之計,所以必須想辦法徹底解決問題,也許到了Silverlight 2.0 RTM,這個問題已經不存在了。

問題解決

我們打開Silverlight項目文件(.csproj),可以看到有SupportedCultures這樣一項,如果在這里進行了設置,再編譯Silverlight項目時將會自動打包資源文件,如下圖所示,我們添加一項zh-CN:

TerryLee_0016

現在再解壓xap文件看看效果,可以看到,現在zh-CH資源文件已經打包在了xap文件中:

TerryLee_0017

運行程序,可以看到已經顯示為中文了:

TerryLee_0018 

到這里,終于可以松一口氣了,下面接著實現其它功能。

添加本地存儲

現在我們要實現本地存儲功能,這個不是什么難事,可以通過Silverlight 2中的隔離存儲來實現。在用戶選擇一種語言后保存到本地:

TerryLee_0019

然后在應用程序啟動時,讀取該配置:

TerryLee_0020

好了,現在我們來看一下效果:

英文

TerryLee_0021

中文:

TerryLee_0018 

總結

至此,簡單的多語言支持算是實現了,其實還有其它的問題沒有解決,我將在下一篇分析。最后再啰唆一句:Silverlight 2 Beta 2對于多語言支持的支持實在是...

NET技術Silverlight 2中多語言支持實現(上),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 啦啦啦 中文 中国 免费 高清在线 | 亚洲国产精品99久久久久久 | 神马伦理2019影院不卡片 | 亚洲视频中文字幕在线观看 | 最近2019中文字幕免费版视频 | 极品 女神校花 露脸91 | 国产亚洲精品久久久久久禁果TV | 午夜福利小视频400 午夜福利网国产A | 97伦理97伦理2018最新 | a级成人免费毛片完整版 | 竹菊精品久久久久久久99蜜桃 | 草莓西瓜樱桃香蕉直播视频 | 伦理在线影院伦理电影 | 乱h好大噗嗤噗嗤烂了 | 精品亚洲麻豆1区2区3区 | 美女pk精子4 | 色狠狠色狠狠综合天天 | 中文字幕在线播放 | 成年色黄APP下载 | 亚洲精品一区二区在线看片 | 精品少妇爆AV无码专区 | 日韩欧美群交P内射捆绑 | avove旗袍丝袜高跟啪啪 | 大咪咪dvd | 女人的选择hd | 国内九一激情白浆发布 | 国语自产一区视频 | 欧美eee114 | 黄色三级视频在线观看 | 掀开奶罩边躁狠狠躁软学生 | 嗯啊好爽视频 | 波多野结衣 熟女 | 女厕所边摸边吃奶边做爽视频 | 成人区精品一区二区不卡AV免费 | 囯产精品久久久久久久久蜜桃 | 国产成人a视频在线观看 | 99视频免费播放 | 欧美日韩中文字幕综合图区 | 99久久国产视频 | 色婷婷狠狠97成为人免费 | 免费光看午夜请高视频 |