2011-12-13 78 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