<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Silverlight 2中多語(yǔ)言支持實(shí)現(xiàn)(上)

      引言

      最近項(xiàng)目要在Silverlight 2應(yīng)用程序中實(shí)現(xiàn)本地化,原以為這個(gè)過(guò)程非常簡(jiǎn)單,卻沒(méi)想到實(shí)現(xiàn)的時(shí)候一波三折,好在結(jié)果還算不錯(cuò)。需求是這樣的,用戶第一次訪問(wèn)的時(shí)候,默認(rèn)為英文,當(dāng)用戶選擇一種顯示語(yǔ)言后,記錄在本地,下次用戶訪問(wèn)時(shí)直接顯示已經(jīng)選擇的語(yǔ)言。現(xiàn)在我把整個(gè)實(shí)現(xiàn)的過(guò)程記錄下來(lái),希望對(duì)大家有所幫助。

      本文為Silverlight 2中多語(yǔ)言支持實(shí)現(xiàn)第一部分。

      準(zhǔn)備工作

      我們發(fā)現(xiàn)在Silverlight 2中提供了ResourceManager類,這意味著可以通過(guò)資源文件來(lái)實(shí)現(xiàn),首先在Silverlight項(xiàng)目中建立一個(gè)文件夾,命名為Resources,添加一個(gè)資源文件Strings.resx,并添加幾個(gè)值,如下圖所示:

      TerryLee_0007

      該文件將作為默認(rèn)資源文件,設(shè)置Access Modifier為Public,它將會(huì)生成Strings.Designer.cs文件,如下圖所示:

      TerryLee_0008 

      現(xiàn)在再創(chuàng)建幾個(gè)其它語(yǔ)言的資源文件,如中文、法語(yǔ)、挪威語(yǔ)等,注意資源文件的命名方式,都是以Strings+語(yǔ)言文化構(gòu)成,有關(guān)每一種語(yǔ)言文件的代碼,大家可以查閱MSDN。

      TerryLee_0009

      其它這些文件的Access Modifier的設(shè)置為No Code generation。有了前面這些準(zhǔn)備工作,接下來(lái)進(jìn)行實(shí)現(xiàn)。

      實(shí)現(xiàn)

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

      TerryLee_0011

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

      TerryLee_0012

      最后我們只剩下一步工作,就是指定當(dāng)前線程的語(yǔ)言文化和UI語(yǔ)言文化,這一點(diǎn)我們可以在Application_Startup事件中來(lái)實(shí)現(xiàn),我們?cè)O(shè)置為zh-CN,如下代碼所示:

      TerryLee_0010

      至此工作完成,可是當(dāng)我們編譯時(shí)卻發(fā)現(xiàn)有這樣的錯(cuò)誤:

      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類型的構(gòu)造函數(shù)訪問(wèn)性不是public,打開(kāi)Strings.Design.cs文件可以看到,它的構(gòu)造函數(shù)是internal的,這一點(diǎn)好辦,手工修改為public(也許該問(wèn)題將會(huì)在RTM中解決)。但是要注意,每次當(dāng)修改完Resource文件后,它會(huì)再次變?yōu)閕nternal類型。

      TerryLee_0013

      問(wèn)題出現(xiàn)

      現(xiàn)在編譯成功,可是當(dāng)運(yùn)行時(shí)卻并沒(méi)有出現(xiàn)我們想要的結(jié)果。我們首先會(huì)想到,資源文件編譯后是否下載到了本地,也就是是否打包到了xap文件中,這一點(diǎn)很好證實(shí),我們可以解壓xap文件來(lái)看看,果然不出所料,如下圖所示:

      TerryLee_0014

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

      TerryLee_0015

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

      問(wèn)題解決

      我們打開(kāi)Silverlight項(xiàng)目文件(.csproj),可以看到有SupportedCultures這樣一項(xiàng),如果在這里進(jìn)行了設(shè)置,再編譯Silverlight項(xiàng)目時(shí)將會(huì)自動(dòng)打包資源文件,如下圖所示,我們添加一項(xiàng)zh-CN:

      TerryLee_0016

      現(xiàn)在再解壓xap文件看看效果,可以看到,現(xiàn)在zh-CH資源文件已經(jīng)打包在了xap文件中:

      TerryLee_0017

      運(yùn)行程序,可以看到已經(jīng)顯示為中文了:

      TerryLee_0018 

      到這里,終于可以松一口氣了,下面接著實(shí)現(xiàn)其它功能。

      添加本地存儲(chǔ)

      現(xiàn)在我們要實(shí)現(xiàn)本地存儲(chǔ)功能,這個(gè)不是什么難事,可以通過(guò)Silverlight 2中的隔離存儲(chǔ)來(lái)實(shí)現(xiàn)。在用戶選擇一種語(yǔ)言后保存到本地:

      TerryLee_0019

      然后在應(yīng)用程序啟動(dòng)時(shí),讀取該配置:

      TerryLee_0020

      好了,現(xiàn)在我們來(lái)看一下效果:

      英文

      TerryLee_0021

      中文:

      TerryLee_0018 

      總結(jié)

      至此,簡(jiǎn)單的多語(yǔ)言支持算是實(shí)現(xiàn)了,其實(shí)還有其它的問(wèn)題沒(méi)有解決,我將在下一篇分析。最后再啰唆一句:Silverlight 2 Beta 2對(duì)于多語(yǔ)言支持的支持實(shí)在是...

      posted @ 2008-06-19 01:05  TerryLee  閱讀(10317)  評(píng)論(44)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产成人高清亚洲一区91| 亚洲色婷婷一区二区三区| 久热这里只有精品12| 十八禁在线观看视频播放免费| 久久精品国产亚洲精品| 亚洲爆乳WWW无码专区| 视频一区视频二区视频三区| 欧美黑人XXXX性高清版| 永寿县| 国偷自产一区二区免费视频 | 国产精品老熟女一区二区| 亚洲精品国产综合麻豆久久99| 国产精品香港三级国产av| 亚洲av无码精品色午夜蛋壳| 亚洲精品国产字幕久久麻豆| 国产精品一区二区AV| 内射一区二区三区四区| 乌兰浩特市| 日本免费视频| 国产叼嘿视频一区二区三区| 日韩三级一区二区在线看| 国产精品天堂蜜av在线播放| 中文字幕第一页国产精品| 精品人妻大屁股白浆无码| 欧美日本激情| 久久99精品久久久久久青青| 精品综合久久久久久97| 免费十八禁一区二区三区| 91无码人妻精品一区| 亚洲综合色区另类av| 强开少妇嫩苞又嫩又紧九色| 蜜臀一区二区三区精品免费 | 自拍偷区亚洲综合第二区| 久久亚洲国产欧洲精品一| 日本高清视频网站www| 午夜福利看片在线观看| 免费无码一区无码东京热| 起碰免费公开97在线视频| 内射老妇bbwx0c0ck| 久久精品蜜芽亚洲国产av| 宜良县|