Я должен программно перечислить доступные культуры в resx группе файлов, но класс ResourceManager, кажется, не помогает.
Я могу иметь:
Labels.resx
Labels.fr-FR.resx
Labels.ro-RO.resx
и так далее
Однако, как я могу найти эти три (или сколькими было бы), культуры во времени выполнения?
Ищите вспомогательные сборки в каталоге вашего приложения: для каждого подкаталога проверьте, соответствует ли его имя названию культуры и содержит ли он файл .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;
}