本地化UWP应用程序

6
我有一个资源文件,它位于名为Strings的文件夹中,其中包含用于文化方面的子文件夹。请参见此图像:

enter image description here

在appxmanifest中,我将默认语言设置为"en"。但不幸的是,该语言并没有随着系统语言的更改而变化。
我错过了什么吗?
仓库链接:https://github.com/NPadrutt/MoneyManager 编辑:正如评论中建议的那样,在App.cs中的OnLaunched方法中添加以下代码即可解决问题:
        ApplicationLanguages.PrimaryLanguageOverride = GlobalizationPreferences.Languages[0];

你尝试过使用“de-DE”和“en-US”吗?此外,在App.xaml.cs中的OnLaunched方法中,尝试调用ApplicationLanguages.PrimaryLanguageOverride = Windows.System.UserProfile.GlobalizationPreferences.Languages[0];或强制指定语言,如ApplicationLanguages.PrimaryLanguageOverride =“de-DE”。也许这会有所帮助? - sibbl
我尝试了"de-DE"和"en-US",但没有成功。但是调用PrimaryLanguageOverride就解决了问题。谢谢=) - NPadrutt
你能分享任何语言的 resw 文件吗?并且你是否已经提供了带有 UID 的字段? - Apoorv
答案已经在第一个评论中找到。我进行了编辑,但我想如果我有一个单独的答案,更容易找到。 无论如何,谢谢。(仅供记录:repo的链接在原问题中=)) - NPadrutt
2个回答

5

如评论中所建议,在App.cs的OnLaunched方法中添加以下代码即可解决问题:

    ApplicationLanguages.PrimaryLanguageOverride = GlobalizationPreferences.Languages[0];

你为什么要强制使用系统语言而不是遵循用户的语言偏好呢? - Peter Torr - MSFT
也许我没有理解你的意思,但从我的角度来看,如果用户的电脑语言是德语,那么应用程序应该是德语的。除非你在应用程序中提供了一个设置来覆盖它,但目前我还没有这样做。 - NPadrutt
请参见我以前的回答中提供的附加信息。 - Peter Torr - MSFT

1
这与操作系统语言(语言包)无关,而是用户首选语言相关:
  • 开始
  • 设置
  • 时间和语言
  • 区域和语言
  • 添加语言
  • 设为默认
这将为应用程序设置语言偏好,而不影响Windows Shell等的语言。
Windows有两个语言概念--系统语言,这是开始菜单、资源管理器和大多数Win32应用程序使用的语言,以及用户首选语言列表,这是UWP应用程序默认使用的语言。在许多情况下,系统语言== UPLL中唯一的语言,因为用户只关心一种语言,但如果他们会说多种语言,则UPLL可能非常有用。例如,假设用户会说法语和西班牙语,其系统语言为法语。您的应用程序默认为英语,并翻译为西班牙语。如果您试图强制将其设置为系统语言(法语),则用户将获得英语(他们不理解)。如果您什么也不做,他们将获得西班牙语(他们理解)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接