3

我有一个复合应用程序,它有一个外壳窗口和一些模块,每个模块都使用 MEF(Microsfot Prism)加载到外壳上。Shell 本身有一个资源文件默认(Resource.resx)和其他语言(如 Resource.ar-SA.resx)也支持本地化。

  • 对于 Xaml:我用过x:Static Resource.KeyName
  • 在 c# 代码中:我曾经GetString(keyName, culture)获取所需的字符串。

为了支持本地化,我添加了一行代码来获取系统的当前文化并加载所需的 Resx 文件。用于设置当前文化。

Resource.Culture = 
    new System.Globalization.CultureInfo(System.Globalization.CultureInfo.CurrentCulture.Name); 

在 App.Xaml.cs 中

所有这些工作都很好。

同样,使用 MEF 加载的每个模块都有上面提到的资源文件。但是对于模块,在 Xaml 中为特定语言文件定义的资源键不起作用。它总是从默认(Resource.Resx)文件中获取值。但是使用 ResourceManager 类的代码中使用的任何键都可以正常工作。

4

1 回答 1

0

我最终将所有资源保存在一个“基础设施”项目中,因此所有资源都从一个地方加载,它只是让它变得更简单。

我的 xaml 绑定看起来像这样

获取对您的 resx 课程的参考。

xmlns:resources="clr-namespace:Infrastructure.resources;assembly=Infrastructure"

现在获取文本

Content="{x:Static resources:Resources.Activity_Regarding}"

你可能已经这样做了,但我看不到。您需要确保命名空间与您要使用的 resx 匹配。所以你的模块命名空间。

于 2013-02-08T16:04:54.433 回答