.NET ResourceManager.GetResourceSet:“en-GB”不在英语资源上工作

时间:2014-11-18 10:29:25

标签: .net localization

.NET中是否有办法进行以下调用:

ResourceManager.GetResourceSet(new CultureInfo("en-GB"), true, false)
 ResourceManager.GetResourceSet(new CultureInfo("en-US"), true, false)

也适用于非英国(仅限" en")资源,如:

Resources.en.resx

没有" en-GB.resx / en-US.resx" - 上面定义的文件调用将始终返回null。如果找不到更具体的文件(如en-GB.resx或en-US.resx),我希望它们回退到默认的en.resx。

注意:将GetResourceSet(tryParaments)的第三个参数设置为true将返回默认的未标记的Resources.resx文件,即使在CultureInfos父属性中设置了en ..

1 个答案:

答案 0 :(得分:0)

您必须从不变文化中获取所有密钥,然后您才能查找所有翻译。所以后备工作。

var keys = Resources.ResourceManager
    .GetResourceSet(CultureInfo.InvariantCulture, true, true)
    .Cast<DictionaryEntry>()
    .Select(entry => entry.Key)
    .Cast<string>();

var enUsResources = keys.ToDictionary(
    key => key, 
    key => Resources.ResourceManager.GetString(key, CultureInfo.GetCultureInfo("en-US")));