Windows:从区域设置字符串获取LCID?

时间:2010-07-13 19:10:57

标签: c++ windows localization

我有表示区域设置的字符串数据,例如“fr”或“en”。我需要将其转换为适当的LCID值,例如0x80c0x409。有功能或宏吗?

我在Windows 7上使用C ++。

2 个答案:

答案 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中。实际上,我找不到任何合适的函数herehere

我想最好的办法是添加一个包含所有缩写及其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,而不适用于桌面操作系统!因此我也查看了错误的文档!