Получите все доступные культуры от .resx группы файлов

Я должен программно перечислить доступные культуры в resx группе файлов, но класс ResourceManager, кажется, не помогает.

Я могу иметь:

Labels.resx
Labels.fr-FR.resx
Labels.ro-RO.resx

и так далее

Однако, как я могу найти эти три (или сколькими было бы), культуры во времени выполнения?

6
задан Andrei Rînea 12 July 2010 в 08:46
поделиться

1 ответ

Ищите вспомогательные сборки в каталоге вашего приложения: для каждого подкаталога проверьте, соответствует ли его имя названию культуры и содержит ли он файл .resources.dll :

public IEnumerable<CultureInfo> GetAvailableCultures()
{
    var programLocation = Process.GetCurrentProcess().MainModule.FileName;
    var resourceFileName = Path.GetFileNameWithoutExtension(programLocation) + ".resources.dll";
    var rootDir = new DirectoryInfo(Path.GetDirectoryName(programLocation));
    return from c in CultureInfo.GetCultures(CultureTypes.AllCultures)
           join d in rootDir.EnumerateDirectories() on c.IetfLanguageTag equals d.Name
           where d.EnumerateFiles(resourceFileName).Any()
           select c;
}
7
ответ дан 10 December 2019 в 02:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: