Перечислите языки, поддерживаемые спутниковыми сборками

Вот строка кода, которая помогает найти сборку для требуемой культуры:

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)));
}
Другие вопросы по тегам