在Windows 10(以及更早版本--这似乎是在Win8?中引入的?)的“语言设置”控制面板中有一个“首选语言”列表。通过编程获取该列表的正确方法是什么?
我可以看到它存储在注册表的HKEY_CURRENT_USER\Control Panel\International\User Profile\Languages
中,但我假设它不打算直接读取。
我发现了一个API GetUserPreferredUILanguages
,听起来是正确的--但是它返回了错误的结果。
具体来说,在控制面板和注册表项中,我当前有en-NZ en-US it-IT
列表,但API返回en-GB
en-US
,我不知道它是从哪里得到的(或者为什么缺少意大利语)。GetUserDefaultLocaleName
API确实正确地返回了en-NZ
,但它似乎也是从其他地方获得的--当我重新排列控制面板中的语言列表时,注册表会更新,但API返回值不会改变。
我确实想要完整的语言列表,而不仅仅是一个单一的答案。(另外,出于好奇,API是从哪个控制面板获得答案的?)
1条答案
按热度按时间dgiusagp1#
您可以使用
bcp47langs.dll
中未记录的GetUserLanguages
API,该API自Windows 8起可用。PS:也有
GetUserLanguageInputMethods
存在,可以获得一种语言的输入法列表:键盘布局的字符串格式:
<LangID>:<KLID>
文本服务的字符串格式为:
<LangID>:{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
代表"西蒙·穆里尔"摆姿势。