如何使用子目录中的RESX文件来本地化WPF应用程序

时间:2019-03-09 00:35:18

标签: c# wpf localization resx

我的团队有一些使用XAML编写的WPF项目。我们最近向每个项目添加了大量本地特定的RESX文件。为了使事情整洁,我被要求将这些文件存储在[Project]> Localization> [locale]

现在,当我们在非美国语言环境中运行应用程序时,将从相应的RESX文件中提取字符串。我们试图更新RESX文件属性中的命名空间,并将它们设置为Public,以便创建结果设计器。 使工作正常的唯一方法是将语言环境RESX文件直接移到项目的Properties目录中。

反正有没有更新XAML以在子目录中搜索语言环境RESX文件的情况?

编辑 XAML Codebase and Solution Explorer

我已附上问题图片以进行澄清。

我们尝试过的一些代码更改:
1)我们尝试为xmlns:res =“ clr-namespace:[PROJECT] .CoreUI。 Localization
设置命名空间。 2)尝试将命名空间设置为xmlns:res =“ clr-namespace:[PROJECT]。 CoreUI
3)我们还试图更改RESX文件的自定义工具命名空间,以匹配当前的命名空间 My.Properties CoreUI.Properties

我们还确认,例如,Resources.resx和Resources.ru.resx的访问修饰符均设置为Public,并且两个构建操作均显示“嵌入式资源”

2 个答案:

答案 0 :(得分:0)

首先必须在名称空间中包含文件夹,并提及项目名称,例如:

xmlns:resx="clr-namespace:Prism_Modules.MyResources;assembly=Prism_Modules"

还必须包括:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

最后,您应该将资源中的值调用为:

<dxb:BarButtonItem x:Name="menuFile" Content="{x:Static resx:Resources.mnuFile}"  }" />

答案 1 :(得分:0)

将.resx文件移动到另一个文件夹/项目时,公开资源成员的.Designer.cs文件仍将指向旧名称空间,Visual Studio还将其放置在.resx文件之外。

要解决此问题,我只删除了生成的.Designer.cs文件,然后在打开并保存.resx文件后,就使用适当的命名空间生成了Designer.cs文件,通常我甚至可以从其他项目中引用它。要为没有资源语言/文件的.Designer.cs文件生成文件,只需打开.resx文件并使用Access Modifier组合框,VS就会为您创建它。

希望我能帮上忙。