Spachauswahl auf GUI

  • Hallo,

    ich hab eine GUI, die alle Texte aus einer INI holt..das klappt auch super soweit:

    [autoit]


    $SelectedLanguage = "DEUTSCH"
    ;Sprachen
    $LTitle = IniRead(@ScriptDir & "\Languages\Languages.ini",$SelectedLanguage,"Title","Titel")
    $LIEold = IniRead(@ScriptDir & "\Languages\Languages.ini",$SelectedLanguage,"IEOld","Internet Explorer zu alt. Mindestens Version 7")
    $LNoAdmin = IniRead(@ScriptDir & "\Languages\Languages.ini",$SelectedLanguage,"NoAdmin","Keine Administratorenrechte.")
    $LError = IniRead(@ScriptDir & "\Languages\Languages.ini",$SelectedLanguage,"Error","Fehler")

    [/autoit]

    Stelle ich die Variable $SelectedLanguage um, starte das Programm neu so klappt auch das. Nun wollte ich aber oben ind er GUI Landesfähnchen einblenden und beim Klick auf dieses soll die GUI in der neuen Sprache angezeigt werden.

    Kann mir da jemand helfen wie das geht?

    Danke

  • Hmm ... mit

    [autoit]

    GUICtrlSetData()

    [/autoit]

    wird es ein wenig ungemüdlich wenn dein Programm mal größer ist. Nimm lieber eine INI-Datei. Damit geht es viel einfacher. Das mache ich auch.

  • @MehmeX:

    Nun wollte ich aber oben ind er GUI Landesfähnchen einblenden und beim Klick auf dieses soll die GUI in der neuen Sprache angezeigt werden.


    und wie willst du zur Laufzeit ohne GuiCtrlSetData Beschriftungen ändern?

    mfg autoBert

  • Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #region - GUI Create
    GUICreate('Test')
    $Deutsch = GUICtrlCreateIcon(@ScriptDir&"\deutsch.ico", "Deutsch", 1, 1)
    $Englisch = GUICtrlCreateIcon(@ScriptDir&"\englisch.ico", "Englisch", 1, 1)
    GUISetState()
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    #region - GUI SelectLoop
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Deutsch
    Changelanguage ("DEUTSCH")
    Case $Englisch
    Changelanguage ("ENGLISCH")
    EndSwitch
    WEnd
    #endregion

    [/autoit] [autoit][/autoit] [autoit]

    Func Changelanguage ($SelectedLanguage)
    $LTitle = IniRead(@ScriptDir & "\Languages\Languages.ini",$SelectedLanguage,"Title","Titel")
    $LIEold = IniRead(@ScriptDir & "\Languages\Languages.ini",$SelectedLanguage,"IEOld","Internet Explorer zu alt. Mindestens Version 7")
    $LNoAdmin = IniRead(@ScriptDir & "\Languages\Languages.ini",$SelectedLanguage,"NoAdmin","Keine Administratorenrechte.")
    $LError = IniRead(@ScriptDir & "\Languages\Languages.ini",$SelectedLanguage,"Error","Fehler")

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData( $Button1, $LTitle)
    GUICtrlSetData( $Button2, $LIEold)
    GUICtrlSetData( $Button3, $LNoAdmin)
    GUICtrlSetData( $Button4, $LError)
    EndFunc

    [/autoit]


    Quick & Dirty

  • Hier habe mal ein Testscript für dich geschrieben.

    Edit: Ich habe es nochmal überarbeitet, so das man auch die Sprache innerhalb der GUI auswählen kann. Nicht zu vergessen, das man das Programm halt neu starten muss.

  • Super, Danke. Hab es nun so gelöst dass nach einem Klick auf die Fahne das Programm beendet und mit der Option $SelectedLanguage wieder gestartet wird...

    [autoit]


    $setLangDeutsch = GUICtrlCreatePic(@ScriptDir & "\Languages\Fahnen\Deutsch.jpg",0,0,21,15)
    $setLangEnglish = GUICtrlCreatePic(@ScriptDir & "\Languages\Fahnen\English.jpg",31,0,21,15)
    .......
    Case $setLangEnglish
    WinClose($LTitle)
    run(@ScriptDir & "\AIS2011.exe English")
    Case $setLangDeutsch
    WinClose($LTitle)
    run(@ScriptDir & "\AIS2011.exe Deutsch")

    [/autoit]

    Der Parameter wird dann beim Start ausgelesen und die Sprache aus der Ini ausgelsen. Wird kein Parameter erkannt wird Deutsch ausgewählt.
    Danke für die Unterstützung.

  • @MehmeX: Auch wenn das Programm größer wird, und man evtl mehrere hundert Labels etc hat könnte man es mit GuictrlsetData schnell verändern, indem man die Labels etc in ein Array schreibt und einmal durchläuft.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake