При установке в моем приложении языка с помощью 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.Но почему это случайно?