Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GetUserDefaultUILanguage API在Win8.1上为加拿大法语返回不正确的语言_C++_Windows_Api - Fatal编程技术网

C++ GetUserDefaultUILanguage API在Win8.1上为加拿大法语返回不正确的语言

C++ GetUserDefaultUILanguage API在Win8.1上为加拿大法语返回不正确的语言,c++,windows,api,C++,Windows,Api,我将windows 8.1系统的语言设置为法语加拿大(Fr ca),并使用API获取用户默认语言,但它返回的值1036(Fr Fr)不正确,应该是3084(Fr ca)。并且在windows 10上返回正确的值(3084)。您知道如何在Window 8.1中获得Fr ca的正确值吗?我从您提到的相同系统中试验了相同的结果: Windows 7返回“fr”(操作系统只允许选择“法语”) 即使在语言配置中选择了“français(Canada)”,Windows 8.1仍返回“fr”。 Window

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

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

Windows 7返回“fr”(操作系统只允许选择“法语”) 即使在语言配置中选择了“français(Canada)”,Windows 8.1仍返回“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资源的系统优先级列表。在Windows8.1的情况下,可能没有专门针对法属加拿大的UI资源。在所有情况下,它都依赖于法语。。。最后,如果资源没有翻译,它将从安装盘(在我的例子中是en-US)获取“安装语言”