Функция GetLocaleInfo

Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" ( _
    ByVal Locale As Long, _
    ByVal LCType As Long, _
    ByVal lpLCData As String, _
    ByVal cchData As Long) As Long

GetLocaleInfo возвращает информацию о локальном контексте

Возвращаемое значение

В успешном случае возвращается число символов, записанных в буфер. Если параметр cchData равен 0, то возвращается число байт или символов, необходимых для хранения информации о локали. В случае ошибки возвращается 0. Для получения кода ошибки используйте функцию GetLastError, которая может вернуть следующие коды ошибок: ERROR_INSUFFICIENT_BUFFER, ERROR_INVALID_FLAGS, ERROR_INVALID_PARAMETER. Функция всегда возвращает информацию в текстовом формате. Если информация представлена в числовых значениях, то функция конвертирует число в текст, используя десятичную систему. Параметр LOCALE_FONTSIGNATURE возвращает строку без завершающего нулевого символа. В других случаях строки с завершающим нулевым символом.

Параметры

locale
Идентификатор локального контекста для получения информации. Может принимать одно из следующих значений
LOCALE_SYSTEM_DEFAULT Системный локальный контекст по умолчанию
LOCALE_USER_DEFAULTПользовательский локальный контекст по умолчанию
LCType
Тип получаемого параметра, используя константу LCTYPE. Список констант LCTYPE ищите в документации
lpLCData
Буфер, получающий запрашиваемую информацию
cchData
Задает размер буфера lpLCData. Если cchData равен 0, то функция возвращает число байт или символов, необходимых для хранения нужной информации

Пример

Const LOCALE_USER_DEFAULT = &H400
Const LOCALE_SENGCOUNTRY = &H1002   ' название страны на английском
Const LOCALE_SENGLANGUAGE = &H1001  ' название языка на английском
Const LOCALE_SNATIVELANGNAME = &H4  ' название языка на местном языке
Const LOCALE_SNATIVECTRYNAME = &H8  ' название страны на местном языке

Private Sub Form_Load()
    MsgBox "Вы живете в " _
    & GetInfo(LOCALE_SENGCOUNTRY) _
    & " (" & GetInfo(LOCALE_SNATIVECTRYNAME) _
    & ")," & vbCrLf & "и говорите на " _
    & GetInfo(LOCALE_SENGLANGUAGE) _
    & " (" & GetInfo(LOCALE_SNATIVELANGNAME) & ").", vbInformation
End Sub

Public Function GetInfo(ByVal lInfo As Long) As String
    Dim Buffer As String, Ret As String
    Buffer = String$(256, 0)
    Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, lInfo, Buffer, Len(Buffer))
    If Ret > 0 Then
        GetInfo = Left$(Buffer, Ret - 1)
    Else
        GetInfo = ""
    End If
End Function

Смотри также

GetSystemDefaultLCID, GetUserDefaultLCID

Категория

Поддержка национальных языков