ResourceLoader не работает надежно, случайное переключение между языками - PullRequest
0 голосов
/ 23 января 2019

При установке в моем приложении языка с помощью ApplicationLanguages.PrimaryLanguageOverride это повлияет только на некоторые настройки локали:

ApplicationLanguages.PrimaryLanguageOverride = "en-US";
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().Reset();
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForViewIndependentUse().Reset();


XAML => x:UID => Working fine after a restart
C# => with ResourceLoader.GetForCurrentView().GetString("MyStringFromResources") not working realbily.

Например: es-ES (по умолчанию и система) MyStringFromResources = "clima", en-США = "погода".Пользователь переходит на en-US.ViewModel => работает нормально.результат ist "климат"

Пользователь нажимает кнопку и вызывает событие => неверный вывод.результат - "клима".

Но здесь есть одна загвоздка: это случайно.Перезапуск приложения: оно работает.Начните снова: не работает.Связано ли это с потоком пользовательского интерфейса, имеющим другую локаль?

Debug.WriteLine(ApplicationLanguages.PrimaryLanguageOverride); => en-US
Debug.WriteLine(Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView().GetString("MyStringFromResources")); => returns string for es-ES

Каждый раз, когда загружается неправильный язык, в ResourceContext сохраняются следующие значения QualifierValues:

var loader = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView();
var qualvalues = loader.QualifierValues;
Debug.WriteLine(qualvalues["language"]);

Вывод (когда загружен неправильный язык):

; en-US; es-ES

Каким-то образом к языку добавлен квалификатор языка empty ResourceContext.QualifierValues.Но почему это случайно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...