powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить столицу через LanguageId + Api
8 сообщений из 8, страница 1 из 1
Получить столицу через LanguageId + Api
    #33980649
miki1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли константа для локальных установок в Api которая позволила бы
получить столицу через LanguageId
...
Рейтинг: 0 / 0
Получить столицу через LanguageId + Api
    #33980744
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столицу?! А если я живу в России и работаю на английской винде?
ЗЫ. Локальные установки - в поиске.
...
Рейтинг: 0 / 0
Получить столицу через LanguageId + Api
    #33980807
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Райцентр устроит? Если серьезно, можно выяснить только город, соответствующий выбранному часовому поясу.
...
Рейтинг: 0 / 0
Получить столицу через LanguageId + Api
    #33980817
miki1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkiades
через Api можно получить огромное количество данных не только
по системным локальным установкам но и по другим языкам
эти данные встроены
Получить их вот наша задача

Вопрос стоит так
существует ли такая константа для получения
столицы по определённому языку

пример перебора языков в системе и некоторые установки по языкам:
для показа Unicode нужны соответствующие контроли и изменения в коде


'Модуль
Option Explicit

Public Const LOCALE_SLANGUAGE As Long = &H2 'localized name of language
Public Const LOCALE_SABBREVLANGNAME As Long = &H3 'abbreviated language name
Public Const LCID_INSTALLED As Long = &H1 'installed locale ids
Public Const LCID_SUPPORTED As Long = &H2 'supported locale ids
Public Const LCID_ALTERNATE_SORTS As Long = &H4 'alternate sort locale ids

Public Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(Destination As Any, _
Source As Any, _
ByVal Length As Long)

Public Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long

Public 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

Public Declare Function EnumSystemLocales Lib "kernel32" _
Alias "EnumSystemLocalesA" _
(ByVal lpLocaleEnumProc As Long, _
ByVal dwFlags As Long) As Long


Public Function GetUserLocaleInfo(ByVal dwLocaleID As Long, _
ByVal dwLCType As Long) As String

Dim sReturn As String
Dim nSize As Long

'call the function passing the Locale type
'variable to retrieve the required size of
'the string buffer needed
nSize = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))

'if successful..
If nSize Then

'pad a buffer with spaces
sReturn = Space$(nSize)

'and call again passing the buffer
nSize = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))

'if successful (nSize > 0)
If nSize Then

'nSize holds the size of the string
'including the terminating null
GetUserLocaleInfo = Left$(sReturn, nSize - 1)

End If

End If

End Function


Public Function EnumSystemLocalesProc(lpLocaleString As Long) As Long

'application-defined callback function for EnumSystemLocales

Dim pos As Integer
Dim dwLocaleDec As Long
Dim dwLocaleHex As String
Dim sLocaleName As String
Dim sLocaleAbbrev As String

'pad a string to hold the format
dwLocaleHex = Space$(32)

'copy the string pointed to by the return value
CopyMemory ByVal dwLocaleHex, lpLocaleString, ByVal Len(dwLocaleHex)

'locate the terminating null
pos = InStr(dwLocaleHex, Chr$(0))

If pos Then
'strip the null
dwLocaleHex = Left$(dwLocaleHex, pos - 1)

'we need the last 4 chrs - this
'is the locale ID in hex
dwLocaleHex = (Right$(dwLocaleHex, 4))

'convert the string to a long
dwLocaleDec = CLng("&H" & dwLocaleHex)

'get the language and abbreviation for that locale
sLocaleName = GetUserLocaleInfo(dwLocaleDec, LOCALE_SLANGUAGE)
sLocaleAbbrev = GetUserLocaleInfo(dwLocaleDec, LOCALE_SABBREVLANGNAME)
End If

'add the data to the list
Form1.List1.AddItem " " & dwLocaleHex & vbTab & _
dwLocaleDec & vbTab & _
sLocaleAbbrev & vbTab & _
sLocaleName

'and return 1 to continue enumeration
EnumSystemLocalesProc = 1

End Function



'Форма
'Добавить Text1, Command1 listbox

Option Explicit

Private Sub Command1_Click()

Dim LCID As Long

'get the user's current default ID
LCID = GetSystemDefaultLCID()

'show the current localized name of language
Text1.Text = GetUserLocaleInfo(LCID, LOCALE_SLANGUAGE) & vbTab & _
GetUserLocaleInfo(LCID, LOCALE_SABBREVLANGNAME)


'add a list caption, and enumerate the
'installed system locales
List1.AddItem "Installed Locales:"
List1.AddItem " hex" & vbTab & "dec" & vbTab & "abv" & vbTab & "language"
Call EnumSystemLocales(AddressOf EnumSystemLocalesProc, LCID_INSTALLED)


'add a list caption, and enumerate the
'supported system locales
List1.AddItem ""
List1.AddItem "Supported Locales:"
List1.AddItem " hex" & vbTab & "dec" & vbTab & "abv" & vbTab & "language"
Call EnumSystemLocales(AddressOf EnumSystemLocalesProc, LCID_SUPPORTED)

End Sub
...
Рейтинг: 0 / 0
Получить столицу через LanguageId + Api
    #33980879
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miki1Melkiades
через Api можно получить огромное количество данных не только
по системным локальным установкам но и по другим языкам
эти данные встроены

Встроены куда? Допустим, как справедливо заметил Antonariy, есть данные по часовым поясам, но это вам ничего не дает. Где вы видели в Windows перечисление столиц государств? На основании чего вы полагаете, что они встроены?
Заведите в своей программе табличку "государство - столица", и будеть вам счастье.
...
Рейтинг: 0 / 0
Получить столицу через LanguageId + Api
    #33980920
miki1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я только спросил существует ли такая константа

в перечеслении констант API существуют установки для дат ,валют ,
знаков разделения , названия алтернативных календарей и ещё куча всего
как на английском так и на родном языке

Мне лень делать таблицу страна-столица
...
Рейтинг: 0 / 0
Получить столицу через LanguageId + Api
    #33981442
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно страна-столица. Но автор ведь хочет язык -столица! А как насчет того, что по-испански говорят в Испании, Мексике, Бразилии? А по-английски в Англии, США, Австралии, Новой Зеландии? По-немецки в Германии и Австрии?

miki1, делай таблицу.
...
Рейтинг: 0 / 0
Получить столицу через LanguageId + Api
    #33981498
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ее даже и делать не надо. Вот она.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить столицу через LanguageId + Api
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]