我有表示区域设置的字符串数据,例如“fr”或“en”。我需要将其转换为适当的LCID值,例如0x80c
或0x409
。有功能或宏吗?
我在Windows 7上使用C ++。
答案 0 :(得分:4)
这些是LCID值,不确定LID的含义。您可以从Vista及以上版本的GetLocaleInfoEx()中获取它们。您需要传递一个区域设置名称,例如“en-US”,这是确定语言区域设置所必需的。例如:
#include "stdafx.h"
#include <windows.h>
#include <assert.h>
int _tmain(int argc, _TCHAR* argv[])
{
LCID lcid = 0;
BOOL ok = GetLocaleInfoEx(L"en-US", LOCALE_RETURN_NUMBER | LOCALE_ILANGUAGE, (LPWSTR)&lcid, sizeof(lcid));
assert(ok);
wprintf(L"LCID = %04x\n", lcid);
return 0;
}
输出:LCID = 0409
答案 1 :(得分:1)
显然不在Windows API中。实际上,我找不到任何合适的函数here或here。
我想最好的办法是添加一个包含所有缩写及其LCID的资源文本文件,然后自己编写一个LocaleStringToLCID函数。但我想知道你会在哪里找到两个字母的缩写。 MSDN页面http://msdn.microsoft.com/en-us/library/aa912040.aspx仅使用全长和TLA语言环境字符串。也许在这里:http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
我现在看到OP发布的链接http://msdn.microsoft.com/en-us/library/aa912040.aspx适用于Windows Mobile,而不适用于桌面操作系统!因此我也查看了错误的文档!