更改显示语言后查找所选语言 LCID
Find selected language LCID after changing display language
我有一台 Windows 7 机器,它安装了多种语言,使用
控制面板
地区和语言
键盘和语言
Install/Uninstall 种语言
当我使用更改显示语言时
控制面板
地区和语言
键盘和语言
选择显示语言
一切都正确显示。
我需要阅读已选择的语言。
我找到的注册表项都指向原始语言(0409) English - United States 而不是所选语言(0404) Chinese - Taiwan.
有谁知道如何找到所选语言的 LCID?
如果我能得到 LCID,我就能用英语显示所选语言(这是我的最终目标)。
编辑:
正如 Mark Ransom 所建议的,您可以使用 GetUserDefaultLCID
int wmain()
{
LCID lcid = GetUserDefaultLCID();//LOCALE_USER_DEFAULT;
cout << "lcid: " << lcid << endl;
wchar_t buf[100];
if (GetLocaleInfo(lcid, LOCALE_ILANGUAGE, buf, 100)) wcout << buf << endl;
if (GetLocaleInfo(lcid, LOCALE_SENGLANGUAGE, buf, 100)) wcout << buf << endl;
if (GetLocaleInfo(lcid, LOCALE_SISO639LANGNAME, buf, 100)) wcout << buf << endl;
return 0;
}
我的 Windows 8 上的输出:
lcid: 1028
0404
Chinese (Traditional)
zh
此外,如果用户在程序 运行 中间更改了系统语言,则 WM_INPUTLANGCHANGE
消息将发送到应用程序:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms632629%28v=vs.85%29.aspx
我有一台 Windows 7 机器,它安装了多种语言,使用 控制面板 地区和语言 键盘和语言 Install/Uninstall 种语言
当我使用更改显示语言时 控制面板 地区和语言 键盘和语言 选择显示语言 一切都正确显示。
我需要阅读已选择的语言。 我找到的注册表项都指向原始语言(0409) English - United States 而不是所选语言(0404) Chinese - Taiwan.
有谁知道如何找到所选语言的 LCID? 如果我能得到 LCID,我就能用英语显示所选语言(这是我的最终目标)。
编辑:
正如 Mark Ransom 所建议的,您可以使用 GetUserDefaultLCID
int wmain()
{
LCID lcid = GetUserDefaultLCID();//LOCALE_USER_DEFAULT;
cout << "lcid: " << lcid << endl;
wchar_t buf[100];
if (GetLocaleInfo(lcid, LOCALE_ILANGUAGE, buf, 100)) wcout << buf << endl;
if (GetLocaleInfo(lcid, LOCALE_SENGLANGUAGE, buf, 100)) wcout << buf << endl;
if (GetLocaleInfo(lcid, LOCALE_SISO639LANGNAME, buf, 100)) wcout << buf << endl;
return 0;
}
我的 Windows 8 上的输出:
lcid: 1028
0404
Chinese (Traditional)
zh
此外,如果用户在程序 运行 中间更改了系统语言,则 WM_INPUTLANGCHANGE
消息将发送到应用程序:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms632629%28v=vs.85%29.aspx