У меня есть микросервис в .Net-Core, который должен обрабатывать некоторые ресурсы в файле resx и возвращать их в соответствии с культурой, которую я предоставляю при вызове API, поэтому я не буду использовать культуру текущего потока, нокогда я вызываю метод GetString (key, culture), он всегда возвращает язык по умолчанию.У меня есть 2 файла resx на данный момент: resource.resx и resource.it-IT.resx, если я вызываю API со строкой культуры it-IT, я всегда получаю перевод в файле resource.resx, а не в resource.it-IT.resx file
Файлы resx находятся в другом проекте под названием Localization
У меня есть общий метод, в котором я передаю Enum, который мне нужно локализовать, и тип файла, в котором локализациясохраняется, затем я составляю ключ ресурса и вызываю метод GetString.Я также попытался изменить культуру текущего потока с помощью
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(cultureName);
public static string GetDisplayName(this Enum e, Type resourceType, string cultureName)
{
var rm = new ResourceManager(resourceType);
var resourceDisplayName = rm.GetString(e.GetType().Name + "_" + e, CultureInfo.CreateSpecificCulture(cultureName));
return string.IsNullOrWhiteSpace(resourceDisplayName) ? string.Format("[[{0}]]", e) : resourceDisplayName;
}
. Я исследовал немного больше, и в диспетчере ресурсов при его проверке у меня есть 3 resourceSet
resource
resource.it
resource.it-IT
Если я проверяю внутри этих 3-х наборов ресурсов, у меня все ресурсы всегда на английском, кажется, что менеджер ресурсов не загружает итальянский файл resx