Имя пользователя:
Пароль:
 

Название темы: Вернуть ID языка OS
Показать сообщение отдельно

Аватара для 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

Название темы: Вернуть ID языка OS