我尝试在App.xaml.cs中的Windows Metro应用程序中设置默认启动语言,但我找不到这样做的地方。通常我在C#中使用Thread.CurrentCulture来设置它,但我找不到Thread命名空间。我在这里缺少什么?
答案 0 :(得分:4)
这在Windows8 CP中非常有用:
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "de";
var resourceLoader = new ResourceLoader();
答案 1 :(得分:1)
如果仍然按需提供,我可以选择:
尝试在Package.appxmanifest中设置默认的App语言。使用VS打开清单并在相应的框中设置默认语言(应用程序UI - >默认语言)。
希望它有所帮助。
答案 2 :(得分:0)
您可以尝试在项目程序集上设置它。尝试右键单击项目,然后单击“装配信息...”并选择您的中性文化。
答案 3 :(得分:0)
您可以使用CultureInfo.DefaultThreadCurrentCulture属性设置默认线程文化。
答案 4 :(得分:0)
也许在App.xaml.cs中设置如下所示将有助于
Windows.Globalization.ApplicationPreferences.PreferredLanguage = "no";
其中“no”是挪威语的BCP47语言标记。
更新:Metro app语言在运行时更改
根据Windows 8 SDK示例“应用程序资源和本地化”
在应用程序运行时,语言,比例,对比度或其他设置可能会发生变化。为了处理这些事件,应该注册事件监听器以监听和响应变化。这可以通过存储状态和刷新页面或重新绘制特定资源来完成。
现在,在我的语言更改选择事件中,我将PreferredLanguage设置为:
Windows.Globalization.ApplicationPreferences.PreferredLanguage = "en";
this.Frame.Navigate(this.GetType());
我一直缺少的关键是App的OnLaunched活动中的代码:
ResourceManager.Current.DefaultContext.QualifierValues.MapChanged += async (s, m) =>
{
if (m.Key == "Language")
{
// react to language change
}
};
我没有将此事件注册放在Page的construtor或任何页面的事件中(因为它在SDK示例中),因为它可能已经多次注册。 仍然必须在某个地方注册此事件,以便语言更改在运行时生效。
答案 5 :(得分:0)
我认为您正在寻找的内容(在CP中)是Windows.Globalization.ApplicationPreferences.PreferredLanguage.
请注意,您的清单应列出您实际支持的所有语言。如果项目中的清单包含x-generate
,则VS将自动为您设置语言。
答案 6 :(得分:0)
打开Package.appxmanifest的代码视图 将资源更改为:
<Resources>
<Resource Language="x-generate" />
</Resources>