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编辑成支持的语言(默认的不要),例如:zh-CN;fr
6. 绑定到XAML的UIElement即可
Silverlight4多语言实时切换
上面的步骤不能实现即时多语言动态切换,要实现这个功能,最好实现INotifyPropertyChanged接口,参考这篇文章,以及MSDN杂志的这篇文章。
如何取得语言的本国显示,如法语 fr 显示为 française
让用户选择语言,这个下拉框ComboBox需要绑定,语言的索引可能是“fr”,“de”之类的,而显示的DisplayMember就应该是本国语言了,法语就是française,德语就是Deutsch。
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来提供多语言和国际化支持
下面是他们的详细信息: