我有一个复合应用程序,它有一个外壳窗口和一些模块,每个模块都使用 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 类的代码中使用的任何键都可以正常工作。