在我的应用中使用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-US =“ weather”。用户正在切换到en-US。 ViewModel =>工作正常。结果主义者“气候”
用户按下按钮并引发事件=>错误的输出。结果是“气候”。
但这是要抓住的地方:这是随机的。重新启动应用程序:正在运行。重新开始:不工作。是否与具有其他语言环境的UI线程相关?
Debug.WriteLine(ApplicationLanguages.PrimaryLanguageOverride); => en-US
Debug.WriteLine(Windows.ApplicationModel.Resources.ResourceLoader.GetForCurrentView().GetString("MyStringFromResources")); => returns string for es-ES
每次加载错误的语言时,以下QualifierValues都会存储在ResourceContext中:
var loader = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView();
var qualvalues = loader.QualifierValues;
Debug.WriteLine(qualvalues["language"]);
输出为(加载错误的lang时):
; en-US; es-ES
以某种方式在ResourceContext.QualifierValues中添加了 empty 语言限定符。但是为什么它是随机的?