If you just try to get a localized language of culture (without a country), you can use this snippet:
CultureInfo culture = Thread.CurrentThread.CurrentCulture; string nativeName = culture.IsNeutralCulture ? culture.NativeName : culture.Parent.NativeName;
If you use a specific localized language name, you can use this:
string language = "es-ES"; CultureInfo culture = new CultureInfo(language); string nativeName = culture.IsNeutralCulture ? culture.NativeName : culture.Parent.NativeName;
If you want to have a title name name (e.g. Français instead of français), use this line:
string result = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(nativeName);
How to method:
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); }
Or as an extension method:
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; }
source share