Sprache ändern ohne neustart des Scripts

  • Hi,
    ich habe ein Script bei dem ich in den Optionen eine andere Sprache auswählen kann (Also English oder Deutsch usw.). Zur zeit muss das Script allerdings neugestartet werden damit die andere Sprache greift. Jetzt meine Frage: ist es möglich die Sprache ohne neustart zu ändern oder zumindestens das sich das Script automatisch neustartet?

    Danke für die Hilfe!

  • Es ist recht simpel die Sprache in ein Array einzulesen/einzuspeichern und dann
    auf Wunsch zu ändern.
    Beispiel: Alle 3 Sekunden soll die Sprache wechseln und/oder auf Buttondruck

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    Dim $lang[4]

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

    $lang[0] = "Hallo "
    $lang[1] = "Welt"
    $lang[2] = "Hello "
    $lang[3] = "World"

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

    Global $status = 0, $time = TimerInit()

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

    $Form1 = GUICreate("Change", 185, 85, 192, 124)
    $Button1 = GUICtrlCreateButton("Press Me", 32, 40, 97, 25, $WS_GROUP)
    $Label1 = GUICtrlCreateLabel($lang[2] & $lang[3], 8, 8, 148, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    If TimerDiff($time) > 3000 Then
    changelang()
    $time = TimerInit()
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    changelang()

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

    EndSwitch
    WEnd

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

    Func changelang()
    $status = Not $status
    If $status = 0 Then
    WinSetTitle($Form1, "", "Wechsel")
    GUICtrlSetData($Label1, $lang[0] & $lang[1])
    GUICtrlSetData($Button1, "Drück Mich")
    Else
    WinSetTitle($Form1, "", "Change")
    GUICtrlSetData($Label1, $lang[2] & $lang[3])
    GUICtrlSetData($Button1, "Press Me")
    EndIf
    EndFunc ;==>changelang

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Ich habe mir damals für jede Sprache eine Datei angelegt, in der die Bezeichnungen immer in der selben Zeile waren und dann bei einem Sprachwechsel die einfach nur neu ausgelesen.

  • Ich hab dazu noch eine UDF von mir rumfliegen. Falls ich diese in meiner Unordnung finde, dann kann ich ja das Snippet hier posten.