Я разрабатываю приложение, которое поддерживает несколько локалей.
Это делается через отдельную dll, которая имеет ресурс для каждого языка, каждый ресурс хранит перевод строки на определенный язык.
Это прекрасно работает в приложении WPF, каждый раз, когда в приложении требуется строка, в dll делается запрос, и он возвращает текст в соответствии с языком, выбранным в приложении.Если язык изменяется, текст, возвращаемый с языка dll, отражает изменение.
Теперь я создаю веб-сайт в ASP.Net с MVC, который использует тот же язык dll.
Проблема в том, что менеджер ресурсов на языке dll, насколько я понимаю, всегда возвращает текст для системной культуры. Я изменил cultureinfo, используемую менеджером ресурсов, но он не работает.
У кого-нибудь есть идеи, как мне это решить?Спасибо
ОБНОВЛЕНИЕ: Извините за поздний ответ.Нет доступа к Интернету в выходные дни ... Это первый раз, когда у меня есть проект, который использует одну и ту же DLL для веб-страниц и окон, и я ожидал, что поведение будет одинаковым, но это не так.По сути, у меня есть глобальный класс, в котором хранятся настройки пользователя и приложения, одним из которых является текущая cultureinfo, когда пользователь изменяет его, обновление менеджера языков является текущей переменной cultureinfo.Когда я вызываю код для получения строки языка,
resmgr.GetString (label, ci);
Где resmgr - это объект ResourceManager менеджера языков,ci - это объект cultureinfo, помечающий строку, которую я хочу получить, он возвращает текст метки / языка.У меня есть файл resx для каждой культуры, поддерживаемой проектом, и один для инварианта / значения по умолчанию. В приложении Windows работает нормально, но в Интернете и в некоторых модульных тестах, которые я сделал, этого нет, даже если я изменяю значение ci.Для новой культуры результат всегда совпадает с последовательностью из инвариантной культуры.Я попытался изменить текущую культуру потоков и текущую культуру пользовательского интерфейса, но это не сработало
ОБНОВЛЕНИЕ 2: Почему метод менеджера ресурсов GetResourceSet возвращает правильный набор ресурсов для культуры, передаваемой в приложении wpf, но такой жекод в модульном тестировании или в сети возвращает инвариантный набор ресурсов.Я что-то упускаю, просто не знаю, что это такое ....
ОБНОВЛЕНИЕ 3: Из-за использования IOC и потому, что языковая часть не является ссылкой, а копируется в папку, когда она завершает компиляцию,я обнаружил, что папки, созданные для каждого ресурса, не копируются в папку отладки модульного теста и в папку bin веб-сайта.Я исправил это, и теперь файл копируется, но проблема сохраняется.