我有代表地区的字符串数据,比如"fr“或"en”。我需要将其转换为适当的LCID值,如0x80c或0x409。有没有这样做的函数或宏?
我在Windows7上使用的是C++。
发布于 2010-07-14 05:15:00
这些是LCID值,不确定LID是什么意思。您可以从GetLocaleInfoEx()中获取它们,在Vista及更高版本中提供。您需要传递一个区域设置名称,如"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
发布于 2010-07-14 03:20:23
显然不在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,而不是桌面操作系统!因此,我也看错了文档!
https://stackoverflow.com/questions/3240556
复制相似问题