2011-12-13 62 views
0

我有为英语(MyResourcesFile1.resx)和法语(MyResourcesFile1.fr.resx)创建的.resx文件。两者都有公开的Access Modifier,他们都是Embedded ResourceSilverlight无法正确读取我的资源文件

在app.xaml.cs偶数Application_Startup包含:

var languageInfo = new CultureInfo("fr"); 
    Thread.CurrentThread.CurrentCulture = languageInfo; 
    Thread.CurrentThread.CurrentUICulture = languageInfo; 

在Silverlight的代码,我使用的Visual Studio有提供生成的属性很多地方。

string myString = MyResourcesFile1.MyPropertyValue; 

不幸的是,它只需要英文文件中的本地化字符串。为什么?

回答

1

我最终通过阅读大量的Microsoft文档使其发挥作用。

Visual Studio 2010没有(尚未)添加支持的Silverlight项目语言的菜单。为了使您的应用程序能够处理所有资源文件,需要对其进行修改。第一步是用NotePad打开项目解决方案。完成后,搜索支持的文化。在括号内可以添加所需的语言(不需要添加默认语言)。所以我现在看起来像这样:

<SupportedCultures>fr 
</SupportedCultures> 

重新加载项目并编译。如果您像在应用程序启动时那样设置线程,则会正确加载并显示资源。我认为它不能动态改变,但对我来说这不是必要的。

0

其中一个选项是放在App.xaml.cs中的设置文化中,您可以在其中设置对象标记。

<object ...> 
    ... 
    <param name="culture" value="de-de" /> 
    <param name="uiculture" value="de-de" /> 
    ... 
</object> 
+0

Silverlight程序集不包含LocalizationManager。这似乎是一个习俗班。 –

+0

我检查了源代码,它似乎下载XAP文件,从它获取资源并加载它们。但是,由于我的资源文件已经在主程序中,它们怎么没有加载? –

+0

它们已加载。这是所需的资源没有被选中。 – DigitWolf