.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 ..
答案 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")));