Silverlight 2中多语言支持实现(下)2011-09-17 cnblogs TerryLee引言最近项目要在Silverlight 2应用程序中实现本地化,原以为这个过程非常简单,却没想到实现的时候 一波三折,好在结果还算不错。需求是这样的,用户第一次访问的时候,默认为英文,当用户选择一种显 示语言后,记录在本地,下次用户访问时直接显示已经选择的语言。现在我把整个实现的过程记录下来, 希望对大家有所帮助。苦笑不得的缺陷在Silverlight 2中多语言支持实现(上)文章的最后,我们通过修改项目文件中SupportedCultures 来实现了多语言的支持,之所以能够成功,是因为前面的示例中只有两种语言English和Chinese,现在我 们再添加一个资源文件Strings.fr-FR.resx,让它能够支持French,如下图所示:

感谢我的同事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时该问题已经不 复存在。