我将Windows 8.1系统的语言设置为加拿大法语(Fr-ca),并使用GetUserDefaultUILanguage API获取用户默认语言,但它返回值1036(Fr-fr),这是不正确的,它应该是3084(Fr-ca)。它在 Windows 10 上返回正确的值(3084)。您知道如何在 Window 8.1 上获取 Fr-ca 的正确值吗?
最佳答案
我在您提到的相同系统中实验了相同的结果:
Windows 7 返回“fr-FR”(操作系统只允许选择“french”!) 即使在语言配置中选择了“français(加拿大)”,Windows 8.1 也会返回“fr-FR”。 Windows 10 返回“fr-CA”,并启用“français(加拿大)”进行 UI 显示。
MSDN API 文档在备注中提到了这一点:
This function returns only a language identifier. An application can retrieve the language name using the GetUserPreferredUILanguages function.
使用此 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)中获取“安装语言”。
关于c++ - GetUserDefaultUILanguage API 在 Win8.1(加拿大法语)上返回不正确的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40783624/