猿问

获取不同语言的语言名称

我有以下内容:


if (currentUICulture.Equals(CultureInfo.GetCultureInfo("fr-FR")))

    _EnglishLabel = "Anglais";

else

    _EnglishLabel = "English";

问问自己这段代码是否可以针对任意数量的当前文化进行优化。


我可以尝试针对当前的 UI 文化来实现这一点,如下所示:


_EnglishLabel = new CultureInfo("en-US").DisplayName;

但是如果我不应该通过 给出英语currentUICulture,而是通过作为参数传递的任意文化......


换句话说,如何获得


new CultureInfo("en-US").GetDisplayName(myArbitraryCulture);

附言。


慕运维8079593
浏览 111回答 1
1回答

元芳怎么了

可以检索已安装框架语言的翻译。工作原理没有记录,但内部实现可以在参考源中看到(例如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")); // Engelskavar englishName = culture.GetDisplayName(CultureInfo.GetCultureInfo("en")); // Englishvar germanName = culture.GetDisplayName(CultureInfo.GetCultureInfo("de")); // English <- German not installed为了涵盖所有语言(或任意语言集合),我建议使用非本机方法,因为内置方法并不真正支持您的用例。
随时随地看视频慕课网APP
我要回答