1 回答
![?](http://img1.sycdn.imooc.com/5458471300017f3702200220-100-100.jpg)
TA贡献1798条经验 获得超7个赞
可以检索已安装框架语言的翻译。工作原理没有记录,但内部实现可以在参考源中看到(例如CultureData)。对于已安装文化以外的目标文化,将返回英语后备语言。
在此基础上,我们可以使用以下内容(同样,仅适用于已安装的框架语言):
public static string GetDisplayName(this CultureInfo culture, CultureInfo locale)
{
var rm = new ResourceManager("mscorlib", typeof(object).Assembly);
var resourceKey = $"Globalization.ci_{culture.Name}";
return rm.GetString(resourceKey, locale);
}
例如,安装了瑞典语和英语:
var culture = CultureInfo.GetCultureInfo("en");
var swedishName = culture.GetDisplayName(CultureInfo.GetCultureInfo("sv")); // Engelska
var englishName = culture.GetDisplayName(CultureInfo.GetCultureInfo("en")); // English
var germanName = culture.GetDisplayName(CultureInfo.GetCultureInfo("de")); // English <- German not installed
为了涵盖所有语言(或任意语言集合),我建议使用非本机方法,因为内置方法并不真正支持您的用例。
- 1 回答
- 0 关注
- 110 浏览
添加回答
举报