Перечислите языки, поддерживаемые спутниковыми сборками
Вот строка кода, которая помогает найти сборку для требуемой культуры:
Assembly.GetExecutingAssembly().GetSatelliteAssembly(new CultureInfo(cultureCode))
Но как найти языки, для которых существуют сателлитные сборки для приложения, скажем, если есть 3 языковых поддержки, для которых созданы 3 разные папки, теперь я хочу, чтобы эти папки и языки поддерживались в нем. Я использую это в раскрывающемся списке, из которого пользователь может выбрать язык, и раскрывающиеся значения должны быть динамически загружены в соответствии с поддерживаемыми сателлитными сборками.
1 ответ
Я решил вышеупомянутую проблему следующим решением:
Это будет одним из решений на основе следующего утверждения:
Каждая сателлитная сборка для определенного языка называется одинаковой, но находится в подпапке, названной в честь конкретной культуры, например, fr или fr-CA.
public IEnumerable<CultureInfo> GetSupportedCulture()
{
//Get all culture
CultureInfo[] culture = CultureInfo.GetCultures(CultureTypes.AllCultures);
//Find the location where application installed.
string exeLocation = Path.GetDirectoryName(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path));
//Return all culture for which satellite folder found with culture code.
return culture.Where(cultureInfo => Directory.Exists(Path.Combine(exeLocation, cultureInfo.Name)));
}