based on @ hans-holzbart's answer to the Programmatic way to get all available languages โโ(in assembly builds) , but fixed so as not to return an InvariantCulture and wrapped in a reusable method:
public static IEnumerable<CultureInfo> GetAvailableCultures() { List<CultureInfo> result = new List<CultureInfo>(); ResourceManager rm = new ResourceManager(typeof(Resources)); CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures); foreach (CultureInfo culture in cultures) { try { if (culture.Equals(CultureInfo.InvariantCulture)) continue;
with this method you can get a list of strings to add to some ComboBox with the following:
public static ObservableCollection<string> GetAvailableLanguages() { var languages = new ObservableCollection<string>(); var cultures = GetAvailableCultures(); foreach (CultureInfo culture in cultures) languages.Add(culture.NativeName + " (" + culture.EnglishName + " [" + culture.TwoLetterISOLanguageName + "])"); return languages; }
George Birbilis
source share