网上有很多关于Silverlight国际化的说明,包括MSDN的示例,都没有强调一点,下面以红色标示,
基础国际化知识请先参考MSDN相关章节,关键步骤要点说明为:
1、资源多个资源文件,默的一个名为Resource.resx
默认的一个声明要为public;
程序集信息/非特定语言选择默认的(一般为english)。
2、项目属性文件csproj(用文本编辑器打开)
添加非特定语言外要支持的语言:
<SupportedCultures>zh-CN;jp</SupportedCultures>
3、作成包装类(参考MSGN示例)如:LocalizedStrings
4、App.xaml中(注意加粗部分替换成你的相应内容):
<Application.Resources>
<local:LocalizedStrings xmlns:local ="clr-namespace:SilverlightApplicationLocale" x:Key="LocalizedStrings" />
</Application.Resources>
5、程序引用(注意加粗部分替换成你的相应内容):
<Button Content="{Binding Path=Resource.Hello, Source={StaticResource LocalizedStrings }}"
6、通过引用的HTML传递local信息:
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="RichEdit.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50826.0" />
<param name="autoUpgrade" value="true" />
<param name="culture" value="ja" />
<param name="uiculture" value="ja" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="获取 Microsoft Silverlight" style="border-style:none"/>
</a>
</object>
PS:
若程序动态改变区域:
private void Application_Startup(object sender, StartupEventArgs e)
{
CultureInfo c = new CultureInfo("zh-CN");
Thread.CurrentThread.CurrentUICulture = c;
Thread.CurrentThread.CurrentCulture = c;
}