0
1. 新建一个Resouce文件,就叫"MyStrings.resx"

2. 在VS双击这个资源文件,右上角有一个下拉框:Access Modifier,改成Public

3. 打开"MyStrings.Designer.cs",把构造函数从Internal设成 Public

4. 拷贝"MyStrings.resx"添加其它的语言,例如简体中文,就是MyStrings. zh-CN.rest,注意不要生成MyStrings.Designer.cs;法语就是MyStrings.fr.resx

5. 在资源管理器中打开工程文件*.csproj 文件,找到"SupportedCulture",用UltraEdit编辑成支持的语言(默认的不要),例如:<SupportedCultures>zh-CN;fr</SupportedCultures>

6. 绑定到XAML的UIElement即可
Silverlight4多语言实时切换

上面的步骤不能实现即时多语言动态切换,要实现这个功能,最好实现INotifyPropertyChanged接口,参考这篇文章,以及MSDN杂志的这篇文章。 

如何取得语言的本国显示,如法语 fr 显示为 française

让用户选择语言,这个下拉框ComboBox需要绑定,语言的索引可能是“fr”,“de”之类的,而显示的DisplayMember就应该是本国语言了,法语就是française,德语就是Deutsch。

CultureInfo _culture =new CultureInfo("fr");
_culture.NativeName //通过它取得法语的“法语”

Thread.CurrentThread.CurrentUICulture = culture;
Thread.CurrentThread.CurrentCulture = culture;
其它园友的文章参考

关于Silverlight多语言(国际化)的实现,园子里已经有很多人说过了,比如:

Silverlight通过MVVM实现多语言实时切换(含源代码),Silverlight 2中多语言支持实现(上),Silverlight 2中多语言支持实现(下),Silverlight多语言处理流程,玩转Silverlight本地化,MSDN:本地化基于 Silverlight 的应用程序

我只想说相对于Flex的国际化silverlight真的做的很糟糕,居然要手工修改工程文件.csproj添加多语言:

Flex对国际化的支持比较完整,使用上也很方便。唯一的小问题是支持额外的语言需要要执行一次copylocale命令行。

Silverlight对国际化的支持是有问题的,虽然可以使用,但要做很多手工工作,并且需要一些work around才能成功执行。

(这儿有详细的比较: 《Flex/Silverlight的技术比较》)

Telerik的多语言

针对微软的Silverlight国际化的心不在焉,也给了一些厂商机会来改善,比如下面这个:telerik提供的silverlight控件就有LocalizationManager来提供多语言和国际化支持



下面是他们的详细信息:

http://blogs.telerik.com/silverlightteam/posts/09-05-13/localization_for_radcontrols_for_silverlight_and_wpf.aspx

http://blogs.telerik.com/blogs/posts/10-03-01/internationalization_globalization_in_silverlight_4.aspx

http://blogs.telerik.com/silverlightteam/posts/09-05-30/enhancing_the_localization_support_of_radcontrols_for_silverlight_and_wpf.aspx

http://www.telerik.com/help/silverlight/telerik.windows.controls-telerik.windows.controls.localizationmanager.html
关闭 返回顶部
联系我们
Copyright © 2011. 聚财吧. All rights reserved.