c++ - GetUserDefaultUILanguage API 在 Win8.1(加拿大法语)上返回不正确的语言

标签 c++ windows api

我将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/

相关文章:

windows - Windows 8 通过电话号码搜索联系人

node.js - AWS Lambda nodejs 函数中的事件对象为空

c++ - C 中的可变参数函数

windows - 在数据库中存储 X509 证书 - 是或否?

c++ - 如何将具有指针成员的非 QObject 类公开给 QML?

c++ - 您如何构建和引用 libpng?

ruby-on-rails - Rails 中的 REST API 参数验证

javascript - 从页面检查 Firebug 以获取网络面板的结果

c++ - 使用 Blink 作为前端布局引擎——从哪里开始?

C++ 重构 : change method name, 输入和输出