localeNameToLCID 函数 (winnls.h)

区域设置名称 转换为 区域设置标识符

语法

LCID LocaleNameToLCID(
  [in] LPCWSTR lpName,
  [in] DWORD   dwFlags
);

参数

[in] lpName

指向以 null 结尾的字符串的指针,该字符串表示区域设置名称或以下预定义值之一。

[in] dwFlags

在 Windows 7 之前:保留;应始终为 0。

从 Windows 7 开始: 可设置为 LOCALE_ALLOW_NEUTRAL_NAMES 以允许返回中性 LCID。

返回值

如果成功,则返回与区域设置名称对应的区域设置标识符。

如果提供的区域设置名称对应于用户默认的自定义区域设置,则此函数将返回 LOCALE_CUSTOM_DEFAULT

如果区域设置名称对应于不是用户默认的自定义区域设置、暂时性区域设置或 CLDR (Unicode 通用区域设置数据存储库) 区域设置,则函数返回 LOCALE_CUSTOM_UNSPECIFIED

如果函数不成功,则返回 0。 若要获取扩展错误信息,应用程序可以调用 GetLastError,如果任何参数值无效,则返回ERROR_INVALID_PARAMETER。

注解

对于自定义区域设置(包括 Microsoft 创建的区域设置),应用程序应优先选择区域设置名称而不是区域设置标识符。 有关详细信息 ,请参阅弃用 LCID

从Windows 8开始:如果你的应用将语言标记从 Windows.Globalization 命名空间传递到此函数,它必须首先通过调用 ResolveLocaleName 来转换标记。

示例


#include "stdafx.h"
#include "windows.h"
#include "stdio.h"

int _cdecl main(
    int argc,
    char *argv[])
{
    WCHAR strNameBuffer[LOCALE_NAME_MAX_LENGTH];
    DWORD error = ERROR_SUCCESS;
    LCID  lcid;

    // Get the name for locale 0x10407 (German (German), with phonebook sort)
    if (LCIDToLocaleName(0x10407, strNameBuffer, LOCALE_NAME_MAX_LENGTH, 0) == 0)
    {
        // There was an error
        error = GetLastError();
    }
    else
    {
        // Success, display the locale name we found
        wprintf(L"Locale Name for 0x10407 is %s\n", strNameBuffer);
    }

    // Get the LCID for the locale
    lcid = LocaleNameToLCID(strNameBuffer, 0);
    if (lcid == 0)
    {
        // There was an error
        error = GetLastError();
    }
    else
    {
        // Success, print the round trip LCID
        wprintf(L"LCID for %s is 0x%x\n", strNameBuffer, lcid);
    }
}

/* This code example produces the following output:

Locale Name for 0x10407 is de-DE_phoneb
LCID for de-DE_phoneb is 0x10407

*/


要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winnls.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

DownlevelLocaleNameToLCID

NLS:基于名称的 API 示例

国家语言支持

国家语言支持函数