silverlight:Silverlight 2中多语言支持实现(上)

  引言  最近项目要在Silverlight 2应用中实现本地化原以为这个过程非常简单却没想到实现时候波 3折好在结果还算不错需求是这样用户第次访问时候默认为英文当用户选择种显示语言后记录在本地下次用户访问时直接显示已经选择语言现在我把整个实现过程记录下来希望对大家有所帮助

  准备工作  我们发现在Silverlight 2中提供了ResourceManager类这意味着可以通过资源文件来实现首先在Silverlight项目中建立个文件夹命名为Resources添加个资源文件Strings.resx并添加几个值如下图所示:

Silverlight 2中多语言支持实现(上)

  该文件将作为默认资源文件设置Access Modier为Public它将会生成Strings.Designer.cs文件如下图所示:

Silverlight 2中多语言支持实现(上)

  现在再创建几个其它语言资源文件如中文、法语、挪威语等注意资源文件命名方式都是以Strings+语言文化构成有关每种语言文件代码大家可以查阅MSDN

Silverlight 2中多语言支持实现(上)

  其它这些文件Access Modier设置为No Code generation有了前面这些准备工作接下来进行实现

  实现  有了上面这些资源我们很容易想到利用Silverlight中静态资源来绑定到UIControl控件上面首先定义资源文件:

Silverlight 2中多语言支持实现(上)

  绑定到UIControl控件上如我们放置 3个按钮:

Silverlight 2中多语言支持实现(上)

  最后我们只剩下步工作就是指定当前线程语言文化和UI语言文化点我们可以在Application_Startup事件中来实现我们设置为zh-CN如下代码所示:

Silverlight 2中多语言支持实现(上)

  至此工作完成可是当我们编译时却发现有这样:

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

  很明显Strings类型构造访问性不是public打开Strings.Design.cs文件可以看到构造ernal点好办手工修改为public(也许该问题将会在RTM中解决)但是要注意每次当修改完Resource文件后它会再次变为ernal类型

Silverlight 2中多语言支持实现(上)

  问题出现  现在编译成功可是当运行时却并没有出现我们想要结果我们首先会想到资源文件编译后是否下载到了本地也就是是否打包到了xap文件中点很好证实我们可以解压xap文件来看看果然不出所料如下图所示:

Silverlight 2中多语言支持实现(上)

  在xap文件中除了Silverlight项目集的外并没有任何和资源文件有关东西种“暴力”办法可以解决这个问题那就是我们拷贝Silverlight项目binDebug文件夹下资源文件手工进行打包xap文件并且需要在xap文件AppManest.xaml文件夹中手工加入AssemblyPart如下代码所示:

Silverlight 2中多语言支持实现(上)

  事实证明这样确实可以得到多语言支持问题在于每次编译后xap文件都会重新生成总是这样手工打包也不是长久的计所以必须想办法彻底解决问题也许到了Silverlight 2.0 RTM这个问题已经不存在了

  问题解决  我们打开Silverlight项目文件(.csproj)可以看到有SupportedCultures这样如果在这里进行了设置再编译Silverlight项目时将会自动打包资源文件如下图所示我们添加项zh-CN:

Silverlight 2中多语言支持实现(上)

  现在再解压xap文件看看效果可以看到现在zh-CH资源文件已经打包在了xap文件中:

Silverlight 2中多语言支持实现(上)

  运行可以看到已经显示为中文了:

Silverlight 2中多语言支持实现(上)



  到这里终于可以松口气了下面接着实现其它功能

  添加本地存储  现在我们要实现本地存储功能这个不是什么难事可以通过Silverlight 2中隔离存储来实现在用户选择种语言后保存到本地:

Silverlight 2中多语言支持实现(上)

  然后在应用启动时读取该配置:

Silverlight 2中多语言支持实现(上)

  好了现在我们来看下效果:

  英文

Silverlight 2中多语言支持实现(上)

  中文:

Silverlight 2中多语言支持实现(上)

  整理总结  至此简单多语言支持算是实现了其实还有其它问题没有解决我将在下篇分析最后再啰唆句:Silverlight 2 Beta 2对于多语言支持支持实在是...



Tags:  silverlight2 silverlight.2.0 silverlight是什么 silverlight

延伸阅读

最新评论

发表评论