c# - 如何使用子目录中的 RESX 文件本地化 WPF 应用程序
问题描述
我的团队有一些使用 XAML 编写的 WPF 项目。我们最近为每个项目添加了大量本地特定的 RESX 文件。为了保持整洁,我被要求将这些文件存储在 [Project]>Localization>[locale]
现在,当我们在非 en-US 语言环境中运行应用程序时,会从相应的 RESX 文件中提取字符串。我们尝试在 RESX 文件的属性中更新命名空间,并将它们设置为 Public,以便创建生成的设计器。我们可以让事情正常工作的唯一方法是将语言环境 RESX 文件直接移动到项目的 Properties 目录中。
无论如何更新 XAML 以在子目录中搜索区域设置 RESX 文件?
我附上了问题的图片以供澄清。
我们尝试了一些代码更改:
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 都显示“嵌入式资源”
解决方案
谢谢您的帮助!
我的同事实际上偶然发现了这里的另一个帖子,我们在无数次搜索中不知何故错过了:
将翻译后的 resx 文件放在 Visual Studio 中的不同文件夹中?
简而言之,我们正在考虑将项目搜索到 RESX 文件的子目录中。实际上,我们需要 RESX 文件来搜索已创建的设计器在链的更上游。
<ItemGroup>
<EmbeddedResource Include="Localization\ar\Resources.ar.resx" >
<ManifestResourceName>$(TargetName).Properties.%(Filename)</ManifestResourceName>
</EmbeddedResource>
输入 ManifestResourceName 似乎告诉 RESX 文件我们已经创建了一个 Designer,而不是创建一个新的。
再次感谢大家的帮助!
推荐阅读
- parallel-processing - 在所有处理器上运行 for 循环并在 Julia 中增加一个变量
- javascript - jQuery 调整大小和文档就绪组合
- selenium - “org.openqa.selenium.WebDriverException:会话 [4c1df58d0fbcc5da00e18fe779040941] 由于超时而终止”,在 SeleniumGrid 中使用 ChromeDriver
- heroku - Heroku:无法创建票证
- c# - 带有 Windows 身份验证的 ASP.NET Core 2.1 自定义 RoleProvider
- spring-mvc - 使用 restTemplate.getForObject 时不允许使用 405 方法
- coq - Ltac:在包含用户定义符号的假设上与 ltac 匹配
- video - 如何拦截来自 src='some server/video.mp4' 的请求
- java - NoSuchMethodException:对于 jdk1.8.0 中的 sun.misc.Launcher$AppClassLoader.addAppURL(java.net.URL)
- mysql - MySQL,根据 JSON 数组中的值选择记录