Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получить столицу через LanguageId + Api / 8 сообщений из 8, страница 1 из 1
12.09.2006, 13:03
    #33980649
miki1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить столицу через LanguageId + Api
Есть ли константа для локальных установок в Api которая позволила бы
получить столицу через LanguageId
...
Рейтинг: 0 / 0
12.09.2006, 13:21
    #33980744
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить столицу через LanguageId + Api
Столицу?! А если я живу в России и работаю на английской винде?
ЗЫ. Локальные установки - в поиске.
...
Рейтинг: 0 / 0
12.09.2006, 13:34
    #33980807
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить столицу через LanguageId + Api
Райцентр устроит? Если серьезно, можно выяснить только город, соответствующий выбранному часовому поясу.
...
Рейтинг: 0 / 0
12.09.2006, 13:36
    #33980817
miki1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить столицу через LanguageId + Api
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
12.09.2006, 13:52
    #33980879
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить столицу через LanguageId + Api
miki1Melkiades
через Api можно получить огромное количество данных не только
по системным локальным установкам но и по другим языкам
эти данные встроены

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

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

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

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


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