ResourceLoader无法可靠运行,在语言之间随机切换

时间:2019-01-23 09:00:49

标签: .net uwp localization

在我的应用中使用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 语言限定符。但是为什么它是随机的?

0 个答案:

没有答案
相关问题