首页 > 解决方案 > 如何使用子目录中的 RESX 文件本地化 WPF 应用程序

问题描述

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

现在,当我们在非 en-US 语言环境中运行应用程序时,会从相应的 RESX 文件中提取字符串。我们尝试在 RESX 文件的属性中更新命名空间,并将它们设置为 Public,以便创建生成的设计器。我们可以让事情正常工作的唯一方法是将语言环境 RESX 文件直接移动到项目的 Properties 目录中。

无论如何更新 XAML 以在子目录中搜索区域设置 RESX 文件?

编辑 XAML 代码库和解决方案资源管理器

我附上了问题的图片以供澄清。

我们尝试了一些代码更改:
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 并且两个 Build Actions 都显示“嵌入式资源”

标签: c#wpflocalizationresx

解决方案


谢谢您的帮助!

我的同事实际上偶然发现了这里的另一个帖子,我们在无数次搜索中不知何故错过了:

将翻译后的 resx 文件放在 Visual Studio 中的不同文件夹中?

简而言之,我们正在考虑将项目搜索到 RESX 文件的子目录中。实际上,我们需要 RESX 文件来搜索已创建的设计器在链的更上游。

<ItemGroup>
<EmbeddedResource Include="Localization\ar\Resources.ar.resx" >
<ManifestResourceName>$(TargetName).Properties.%(Filename)</ManifestResourceName>
</EmbeddedResource>

输入 ManifestResourceName 似乎告诉 RESX 文件我们已经创建了一个 Designer,而不是创建一个新的。

再次感谢大家的帮助!


推荐阅读