GetUserDefaultUILanguage API在法语加拿大的Win8.1上返回错误的语言

时间:2016-11-24 10:15:52

标签: c++ windows api

我将我的Windows 8.1系统的语言设置为法语加拿大(Fr-ca),并使用here API获取用户默认语言,但它返回值1036(Fr-fr),这是不正确的,它应该是3084(Fr-ca)。它在Windows 10上返回一个正确的值(3084)。你知道如何在Window 8.1 for Fr-ca上获得正确的值吗?

1 个答案:

答案 0 :(得分:0)

我从您提到的相同系统中尝试了相同的结果:

Windows 7返回“fr-FR”(操作系统只允许选择“法语”!) 即使在语言配置中选择了“français(Canada)”,Windows 8.1也会返回“fr-FR”。 Windows 10返回“fr-CA”,启用了“français(Canada)”用于UI显示。

MSDN API文档提到了备注:

  

此函数仅返回语言标识符。应用程序可以   使用GetUserPreferredUILanguages检索语言名称   功能

使用此GetUserPreferredUILanguages方法时,您获得的结果可能更为明显:

对于Windows 7,列表返回:

  

FR-FR

对于Windows 8.1,列表返回:

  

fr-FR,en-US

对于Windows 10,列表返回:

  

fr-CA,fr-FR,en-US

因此,我解释API返回UI资源的系统优先级列表。在Windows 8.1的情况下,法国加拿大可能没有专门的UI资源。在所有情况下,它都依赖于法语法语...而且最后,如果资源没有翻译,它将从安装盘(在我的情况下,en-US)中获取“安装语言”。