basata sulla risposta di @ hans-holzbart a Programmatic way to get all the available languages (in satellite assemblies) ma fisso non restituisce l'InvariantCulture troppo e avvolto in un metodo riutilizzabile:
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; //do not use "==", won't work
ResourceSet rs = rm.GetResourceSet(culture, true, false);
if (rs != null)
result.Add(culture);
}
catch (CultureNotFoundException)
{
//NOP
}
}
return result;
}
utilizzando tale metodo, è possibile ottenere un elenco di stringhe di aggiungere un po 'ComboBox con il seguente:
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;
}
fonte
2015-08-22 22:43:08
non credo che si ha realmente bisogno .net nel titolo e hanno un tag per .net. – spinon
Anche guardando attraverso SO questo sembra un duplicato a: http://stackoverflow.com/questions/1283602/getting-a-list-of-available-languages-resx-files – spinon
Sì, è un duplicato ma questo ha una risposta migliore –