gpt4 book ai didi

asp.net 从 .resx 获取所有资源而不指定区域性 (ResourceManager.GetResourceSet )

转载 作者:行者123 更新时间:2023-12-02 14:34:55 25 4
gpt4 key购买 nike

我第一次在堆栈溢出中遇到与我类似的问题:Loop through all Resources in ResourceManager - C# 。它只解决了我需要做的一部分。当您在资源文件中请求特定区域性的条目时,如果不存在该条目,它将默认返回中性区域性资源文件。

我需要循环遍历给定资源文件的每个条目,并且 GetResourceSet 需要区域性。例如,我有一个包含 3 个条目的中性资源文件,以及一个包含 1 个条目的中性文件附带的文化特定资源文件。

我的中立资源示例文件是 MyResource.resx,我的文化特定资源示例文件是 MyResource.en-gb.resx。以下代码显示了我当前如何尝试循环并访问所有资源条目。

Dim cultInfo as New CultureInfo(culture)
For Each entry As System.Collections.DictionaryEntry In myResourceManager.GetResourceSet(cultInfo, True, True)

Next

中性资源文件条目

  • 全名/全名
  • 电话号码/电话号码
  • 州/州

文化特定资源文件条目

  • 州/县

当我针对特定区域性调用 GetResourceSet 时,我只返回 1 个条目。我期待(并且希望)取回所有 3 个条目,其中一个特定于文化的条目被覆盖。这是我想要返回的内容:

  • 全名/全名
  • 电话号码/电话号码
  • 州/

我能做到这一点吗?谢谢。

最佳答案

ResourceManager 对象的 GetString 方法可以正确处理资源文件的遍历,以根据区域性查找给定键的正确值。可以使用 CultureInfo.InvariantCulture 获取基本/中性/默认资源文件,它为您提供资源文件的所有可能的键(假设您以这种方式设置资源文件)。

基于不变区域性,循环在 ResourceManager 的 GetResourceSet 方法中找到的 DictionaryEntry 对象,然后使用传入的特定区域性为每个键调用 GetString,您将根据区域性获得给定键的正确值.

For Each entry As DictionaryEntry In myResourceManager.GetResourceSet(CultureInfo.InvariantCulture, True, True)
Dim strKey as String = entry.Key.ToString()
Dim strValue as String = myResourceManager.GetString(entry.Key.ToString(), cultInfo)
Next

希望这有帮助!

关于asp.net 从 .resx 获取所有资源而不指定区域性 (ResourceManager.GetResourceSet ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5783374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com