Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Вернуть ID языка OS

Ответить
Настройки темы
Вернуть ID языка OS

Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Написал функцию ... я правильно всё сделал, если язык OS английский эта функция правильно покажет ?

Код: Выделить весь код
Global Const $aID_LAND[14] = [0419, 0409, 0809, "0c09", 1009, 1409, 1809, "1c09", 2009, 2409, 2809, "2c09", 3009, 3409]
Global $aReturnValueIdLand[2] = ["Rus", "Eng"]

MsgBox(64, Default, "LangOS - " & _Global_Lang_Sistem())

Func _Global_Lang_Sistem()
    For $i = 1 To UBound($aID_LAND) - 1
        If $aID_LAND[0] = @OSLang Then Return($aReturnValueIdLand[0])
        If $aID_LAND[$i] = @OSLang Then Return($aReturnValueIdLand[1])
    Next
    Return($aReturnValueIdLand[1])
EndFunc

Отправлено: 16:02, 15-01-2010

 

Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата FlatX007:
я правильно всё сделал, если язык OS английский эта функция правильно покажет ? »
Знаеш, у меня например макрос @OSLang постоянно показывает, что у меня русский, хотя установлен укр. Поэтому советую тебе лучше написать функцию на основании получении информации из реестра. Тут: HKEY_CURRENT_USER\Keyboard Layout\Preload под пунктом 1 показан код текущего языка ввода в системе.

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 17:02, 15-01-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата beve:
у меня например макрос @OSLang постоянно показывает, что у меня русский »
Что именно он показывает? возможно это из за внешней локализаций системы (мод)?

Цитата beve:
под пунктом 1 показан код текущего языка ввода в системе »
@OSLang не возвращает код языка ввода, а код языка системы, с клавиатурной раскладкой это не связано.

У меня @OSLang это 0419 (рус.), а в реестре по указанному тобой адресу в первом параметре прописано 0409 (анг.), это у меня раскладка по умолчанию в системе.

Я лично использую такую функцию:

Код: Выделить весь код
$sOSLang_Str = _OSGetLangString(-1)
ConsoleWrite("+ [Get @OSLang string] (Default): " & $sOSLang_Str & @CRLF)

$sOSLang_Str = _OSGetLangString("English_United_States")
ConsoleWrite("> [Get lang code by specific string]: " & $sOSLang_Str & @CRLF)

$sOSLang_Code = _OSGetLangString($sOSLang_Str)
ConsoleWrite("! [Get string by specific lang code]: " & $sOSLang_Code & @CRLF)

; #FUNCTION# ====================================================================================================
; Name...........:  _OSGetLangString
; Description....:  Retrieves Operating System language, or converts passed in parameter language code/string.
; Syntax.........:  _OSGetLangString($sOSLang_Code=-1)
; Parameters.....:  $sOSLang_Code - [Optional] If this parameter <> -1,
;                                              then this function will return converted code <-> string language.
;
; Return values..:  Success - Return language code/string depending on $sOSLang_Code parametr (see it's description).
;                   Failure - Returns 0 and set @error to 1 if invalid language code/string passed.
; Author.........:  G.Sandler (a.k.a MrCreatoR)
; Modified.......:
; Remarks........:
; Related........:  @OSLang
; Link...........:
; Example........:  1. $sOSLang_Str = _OSGetLangString(-1) ;Will return current OS language
;                   2. $sOSLang_Str = _OSGetLangString("English_United_States") ;Will return 0409
;                   3. $sOSLang_Str = _OSGetLangString(0409) ;Will return "English_United_States"
; ===============================================================================================================
Func _OSGetLangString($sOSLang_Code=-1)
    If $sOSLang_Code == 0 Then Return SetError(1, 0, 0)

    Local $aOSLang_Codes = StringSplit( _
        "0436|41c|0401|0801|0c01|1001|1401|1801|1c01|2001|2401|2801|2c01|3001|3401|3801|3c01|4001|042b|042c|082c|" & _
        "042d|0423|0402|0403|0404|0804|0c04|1004|1404|041a|0405|0406|0413|0813|0409|0809|0c09|1009|1409|1809|1c09|2009|2409|" & _
        "2809|2c09|3009|3409|0425|0438|0429|040b|040c|080c|0c0c|100c|140c|180c|0437|407|0807|0c07|1007|1407|408|040d|0439|" & _
        "040e|040f|0421|0410|0810|0411|043f|0457|0412|0426|0427|042f|043e|083e|044e|0414|0814|0415|0416|0816|0418|0419|044f|" & _
        "081a|0c1a|041b|0424|040a|080a|0c0a|100a|140a|180a|1c0a|200a|240a|280a|2c0a|300a|340a|380a|3c0a|400a|440a|480a|4c0a|" & _
        "500a|0441|041d|081d|0449|0444|041e|041f|0422|0420|0443|0843|042a", "|")

    Local $aOSLang_Strings = StringSplit( _
        "Afrikaans|Albanian|Arabic_Saudi_Arabia|Arabic_Iraq|Arabic_Egypt|Arabic_Libya|Arabic_Algeria|Arabic_Morocco|" & _
        "Arabic_Tunisia|Arabic_Oman|Arabic_Yemen|Arabic_Syria|Arabic_Jordan|Arabic_Lebanon|Arabic_Kuwait|Arabic_UAE|" & _
        "Arabic_Bahrain|Arabic_Qatar|Armenian|Azeri_Latin|Azeri_Cyrillic|Basque|Belarusian|Bulgarian|Catalan|Chinese_Taiwan|" & _
        "Chinese_PRC|Chinese_Hong_Kong|Chinese_Singapore|Chinese_Macau|Croatian|Czech|Danish|Dutch_Standard|Dutch_Belgian|" & _
        "English_United_States|English_United_Kingdom|English_Australian|English_Canadian|English_New_Zealand|English_Irish|" & _
        "English_South_Africa|English_Jamaica|English_Caribbean|English_Belize|English_Trinidad|English_Zimbabwe|" & _
        "English_Philippines|Estonian|Faeroese|Farsi|Finnish|French_Standard|French_Belgian|French_Canadian|French_Swiss|" & _
        "French_Luxembourg|French_Monaco|Georgian|German_Standard|German_Swiss|German_Austrian|German_Luxembourg|" & _
        "German_Liechtenstei|Greek|Hebrew|Hindi|Hungarian|Icelandic|Indonesian|Italian_Standard|Italian_Swiss|Japanese|" & _
        "Kazakh|Konkani|Korean|Latvian|Lithuanian|Macedonian|Malay_Malaysia|Malay_Brunei_Darussalam|Marathi|Norwegian_Bokmal|" & _
        "Norwegian_Nynorsk|Polish|Portuguese_Brazilian|Portuguese_Standard|Romanian|Russian|Sanskrit|Serbian_Latin|" & _
        "Serbian_Cyrillic|Slovak|Slovenian|Spanish_Traditional_Sort|Spanish_Mexican|Spanish_Modern_Sort|Spanish_Guatemala|" & _
        "Spanish_Costa_Rica|Spanish_Panama|Spanish_Dominican_Republic|Spanish_Venezuela|Spanish_Colombia|Spanish_Peru|" & _
        "Spanish_Argentina|Spanish_Ecuador|Spanish_Chile|Spanish_Uruguay|Spanish_Paraguay|Spanish_Bolivia|Spanish_El_Salvador|" & _
        "Spanish_Honduras|Spanish_Nicaragua|Spanish_Puerto_Rico|Swahili|Swedish|Swedish_Finland|Tamil|Tatar|Thai|Turkish|" & _
        "Ukrainian|Urdu|Uzbek_Latin|Uzbek_Cyrillic|Vietnamese", "|")

    For $i = 1 To $aOSLang_Codes[0]
        If $sOSLang_Code = -1 Then
            If @OSLang = $aOSLang_Codes[$i] Then Return $aOSLang_Strings[$i]
        Else
            If $sOSLang_Code = $aOSLang_Codes[$i] Then Return $aOSLang_Strings[$i]
            If $sOSLang_Code = $aOSLang_Strings[$i] Then Return $aOSLang_Codes[$i]
        EndIf
    Next

    Return SetError(1, 0, 0)
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 17:47, 15-01-2010 | #3


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Creat0R »
- спасибо конечно (функцию пихну в архив) ...но меня интесовал ответ на мой вопрос
Мне все языки совершенно не нужны.

Отправлено: 17:57, 15-01-2010 | #4


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
У меня @OSLang это 0419 (рус.), а в реестре по указанному тобой адресу в первом параметре прописано 0409 (анг.), это у меня раскладка по умолчанию в системе. »
Так и у меня там в реестре расскладка по умолчанию, я думал ему это и нужно... не так я понял.
Цитата Creat0R:
У меня @OSLang это 0419 (рус.) »
У меня Тоже постоянно 0419, притом так всегда и показывает, хотя язык менял и на англ, и на рус и на укр, но во время запуска скрипта или уже скомпелированого в exe файла, все равно показывает 0419! Установлен пунто свитчер, но он на время теста не был запущен. Выходит так, что в трее показывает, например укр, но во время запуска windows сам поменял туда сюда язык, на мгновение стал англ потом рус, потом опять вернулся на укр, а в окне сообщения - 0419.

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 18:16, 15-01-2010 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата FlatX007:
если язык OS английский эта функция правильно покажет ? »
Да, и это легко проверить, подставив вместо @OSLang 0409
Но зачем глобально объявлять переменные массива?

beve, Ты путаешь язык раскладки клавиатуры с языком установленным в системе.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 19:23, 15-01-2010 | #6


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
beve, Ты путаешь язык раскладки клавиатуры с языком установленным в системе. »
Выходит если у меня система на русском языке, то макрос @OSLang поэтому и возвращает код русского языка? Точно, путал, причем, с самого начала... думал, что у меня не работает, вот это да...

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 23:11, 15-01-2010 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Вернуть ID языка OS

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Переключения языка в XP roots Microsoft Windows 2000/XP 1 23-01-2010 18:17
Офис и Текст - Добавление языка в Windows XP Thelearning Microsoft Windows 2000/XP 6 01-10-2009 13:44
Интерфейс - Два Языка В UNICODE CtrlSoft Microsoft Windows Vista 2 03-12-2007 15:07
Индикатор языка Flash Millennium Microsoft Windows 2000/XP 13 01-12-2004 11:06
Переключение языка Trojn Хочу все знать 3 21-06-2003 15:18




 
Переход