我现在的文化如下:
var culture = Thread.CurrentThread.CurrentCulture.DisplayName;
Run Code Online (Sandbox Code Playgroud)
问题是我总是用英文命名:
如何以该特定语言获取文化的DisplayName?
谢谢你,米格尔
如果您只是尝试获取一种文化的本地化语言(没有国家/地区),则可以使用以下代码段:
CultureInfo culture = Thread.CurrentThread.CurrentCulture;
string nativeName = culture.IsNeutralCulture
? culture.NativeName
: culture.Parent.NativeName;
Run Code Online (Sandbox Code Playgroud)
如果要使用特定的本地化语言名称,则可以使用以下命令:
string language = "es-ES";
CultureInfo culture = new CultureInfo(language);
string nativeName = culture.IsNeutralCulture
? culture.NativeName
: culture.Parent.NativeName;
Run Code Online (Sandbox Code Playgroud)
如果想要有标题案例名称(例如 Français 而不是 français),请使用以下行:
string result = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(nativeName);
Run Code Online (Sandbox Code Playgroud)
作为一种方法:
private static string GetTitleCaseNativeLanguage(string language)
{
CultureInfo culture = new CultureInfo(language);
string nativeName = culture.IsNeutralCulture
? culture.NativeName
: culture.Parent.NativeName;
return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(nativeName);
}
Run Code Online (Sandbox Code Playgroud)
或者作为扩展方法:
public static string GetNativeLanguageName(this CultureInfo culture, bool useTitleCase = true)
{
string nativeName = culture.IsNeutralCulture
? culture.NativeName
: culture.Parent.NativeName;
return useTitleCase
? CultureInfo.CurrentCulture.TextInfo.ToTitleCase(nativeName)
: nativeName;
}
Run Code Online (Sandbox Code Playgroud)
DisplayName 将以当前.NET框架的位置语言显示.
您可以使用NativeName(或者甚至可能只是Name我没有尝试过这个)而不是DisplayName,应该这样做.
编辑
用以下代码测试后:
// set the current culture to German
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
var native = Thread.CurrentThread.CurrentCulture.NativeName;
var display = Thread.CurrentThread.CurrentCulture.DisplayName;
var name = Thread.CurrentThread.CurrentCulture.Name;
Run Code Online (Sandbox Code Playgroud)
结果是:
native ="Deutsch(Deutschland)"
display ="德语(德国)"
name ="de-DE"
| 归档时间: |
|
| 查看次数: |
10045 次 |
| 最近记录: |