【问题标题】:Silverlight doesn't read my resource file correctlySilverlight 没有正确读取我的资源文件
【发布时间】:2011-12-13 23:15:30
【问题描述】:

我为英语 (MyResourcesFile1.resx) 和法语 (MyResourcesFile1.fr.resx) 创建了 .resx 文件。两者都有Access Modifier 公开,他们都是Embedded Resource

在 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;

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

【问题讨论】:

    标签: c# silverlight c#-4.0 silverlight-4.0 localization


    【解决方案1】:

    通过阅读大量 Microsoft 文档,我终于让它工作了。

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

    <SupportedCultures>fr
    </SupportedCultures>
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • Silverlight 程序集不包含 LocalizationManager。它似乎是一个自定义类。
      • 我检查了源代码,它似乎下载了 XAP 文件,从中获取资源并加载它们。但是,由于我的资源文件已经在主程序集中,为什么没有加载它们?
      • 它们已加载。就是没有选择需要的资源。
      • 资源被选中如你所见我直接把CultureInfo放到了2个线程中。
      猜你喜欢
      • 1970-01-01
      • 2022-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 2016-02-26
      • 2019-06-16
      相关资源
      最近更新 更多