Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Определить родной язык юзера


Автор: Limonadni Joe 26.1.2005, 20:06
Задача такая: надо определить с наибольшей вероятностью, является ли английский (без разобщения частного случая на другие языки) родным языком юзера. Всё, что смог придумать - определить установлено ли в системе больше одной раскладки клавиатуры. Если раскладок больше одной, значит юзер не англичанин. Согласно не до конца понятому мной хелпу, выглядит это так:
Код

 b := GetKeyboardLayoutList(0, a);
 LayoutCount := GetKeyboardLayoutList(b, a);

Может у кого-то есть ещё какие-нибудь идеи? И правильно ли я делаю то, что делаю?

Автор: Snowy 27.1.2005, 12:03
GetLocaleStr(LOCALE_USER_DEFAULT,LOCALE_SABBREVCTRYNAME,'RUS');
Можно получить полное название или телефонный код страны...
Смотри Хелп по SDK - "LCTYPE Constants"
GetLocaleStr находится в SysUtils но если не хочешь его подключать - просто скопируй его оттуда - он всего строчки 4.

Автор: Limonadni Joe 27.1.2005, 12:56
Как я понял, в моём случае это может выглядеть так:
Код
s := GetLocaleStr(0, LOCALE_SABBREVLANGNAME, '');
// если первые две буквы s это 'EN', значит юзер может читать по-английски

Locale нам задавать не обязательно - результат от этого не зависит, да и Default тоже можно опустить.

Автор: Snowy 27.1.2005, 14:41
Точно не скажу, но скорее всего не EN, а USA. Здесь не язык, а страна.
Для языка используй LOCALE_SABBREVLANGNAME. Какие должны быть точно не скажу. Но результат получается 2 буквы, так что для русского и английского должны быть RU и EN.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)