Programm multilingual machen

  • Die Sprachdateien sollte man schon auslagern (.ini, .txt, sqlite oder so.).
    Alle Sprachdateien dauerhaft im Speicher zu parken ist unsinnig und schlecht erweiterbar.

    Einfaches Konzept:
    -> \Sprache Ordner im Skriptverzeichnis
    -> dort wird jede Sprache als .txt abgelegt
    -> in der Konfig. ini steht welche beim Startup geladen werden soll
    -> beim Startup wird die .txt eingelesen und die Variablen bekommen ihren Wert zugewiesen.

  • Tipp: So:

    Spoiler anzeigen

    Einfaches Konzept:
    -> \Sprache Ordner im Skriptverzeichnis
    -> dort wird jede Sprache als .txt abgelegt
    -> in der Konfig. ini steht welche beim Startup geladen werden soll
    -> beim Startup wird die .txt eingelesen und die Variablen bekommen ihren Wert zugewiesen.

    :D
    Einfach jeden Text deines Programmes in eine Variable tun und dann schaust du in der txt einfach jedesmal deine Variable nach, und änderst sie ggf.

  • wenn ich das richtig verstanden habe mein ihr so:

    [autoit]

    For $i = 1 To Anzahahlderbefehle
    $line = FileReadLine($lang,$i)
    $langpacks[$i]=$line
    Next

    [/autoit]
  • also mit txt dateien würd ich da nich rumhantieren.

    die einfachste lösung is ne ini. so z.B.

    [deutsch]
    button1=Hier klicken
    label1=gescriptet von Jurax
    [english]
    button1=click here
    label1=scripted by Jurax

    usw.
    dann nimmste einfach für die sprache die jeweilige sektion und fertig.
    einfach und effektiv.

  • Das wird von der Größe her bei mehreren Sprachen und vielen Einträgen ganz schnell sehr eng.
    Würde ich nicht empfehlen, auch weil jeder in der Hauptini rummurksen muss um eine Sprache selbst hinzuzufügen.

  • Nicht, wenn Du für jede Sprache eine separate ini erstellst.

    Bei Programmstart schaut das Prog lediglich in der Haupt-ini nach, welche Sprach-ini geladen werden soll.
    So mache ich es zumindest bei ein paar Programmen von mir und das klappt eigentlich wunderbar.

  • Zitat

    Hat jmd vll ne idee wie man sein Programm multilingual machen kann ohne ne ini?

    Spoiler anzeigen
    [autoit]

    If @OSLang <> 0405 Then
    $Sprache = _Sprache()
    Else
    $Sprache = "cs"
    EndIf

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

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

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("...........@OSLang cs .... .........@OSLang " & $Sprache, 390, 208, -1, -1)
    $Button1 = GUICtrlCreateButton("Tiskarna", 69, 24, 97, 41, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Zapnout", 69, 78, 97, 41, $WS_GROUP)
    $Button3 = GUICtrlCreateButton("Vypnout", 69, 133, 97, 41, $WS_GROUP)
    $Button4 = GUICtrlCreateButton(_GoogleTranslate("Tiskarna", "cs", $Sprache), 224, 24, 97, 41, $WS_GROUP)
    $Button5 = GUICtrlCreateButton(_GoogleTranslate("Zapnout", "cs", $Sprache), 224, 78, 97, 41, $WS_GROUP)
    $Button6 = GUICtrlCreateButton(_GoogleTranslate("Vypnout", "cs", $Sprache), 224, 133, 97, 41, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _GoogleTranslate($sText, $sFrom = "en", $sTo = "ja")
    Local Const $FileName = "Translation.jsn"
    Local Const $Pattern = '"translatedText":"([^"]+)"'
    Local $GoogleURL = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s%%7C%s"
    Local $File

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

    $GoogleURL = StringFormat($GoogleURL, $sText, $sFrom, $sTo)

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

    If Not InetGet($GoogleURL, $FileName, 1) Then Return SetError(1, 0, 0)

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

    $File = FileOpen($FileName, 4)
    FileGetSize($FileName)
    $Translation = FileRead($File, FileGetSize($FileName))
    FileClose($File)
    FileDelete($FileName)

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

    $Translation = BinaryToString($Translation, 4)

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

    If StringRegExp($Translation, $Pattern) Then
    $Translation = StringRegExp($Translation, $Pattern, 1)
    $Translation = $Translation[0]

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

    Return $Translation
    EndIf
    EndFunc ;==>_GoogleTranslate

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

    Func _Sprache()
    Select
    Case StringInStr("0413 0813", @OSLang)
    Return "nl"

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

    Case StringInStr("0409 0809 0c09 1009 1409 1809 1c09 2009 2409 2809 2c09 3009 3409", @OSLang)
    Return "en"

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

    Case StringInStr("040c 080c 0c0c 100c 140c 180c", @OSLang)
    Return "fr"

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

    Case StringInStr("0407 0807 0c07 1007 1407", @OSLang)
    Return "de"

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

    Case StringInStr("0410 0810", @OSLang)
    Return "it"

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

    Case StringInStr("0414 0814", @OSLang)
    Return "no"

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

    Case StringInStr("0415", @OSLang)
    Return "pl"

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

    Case StringInStr("408", @OSLang)
    Return "el"

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

    Case Else
    Return "en"

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

    EndSelect
    EndFunc ;==>_Sprache

    [/autoit]

    Ist eher als Scherz gedacht, :whistling:, nur Schade das Googel nicht besser übersetzt .

    - MfG OpaEd

    3 Mal editiert, zuletzt von opaed (29. April 2010 um 13:55)

  • Löst es doch so

    [autoit]


    Const $ConfigPath=@ScriptDir & "\ini\config.ini"

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

    If Not FileExists($ConfigPath) Then
    IniWrite($ConfigPath, "Language", "Lang", "German")
    EndIf

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

    $Language=IniRead($ConfigPath, "Language", "Lang", "")
    $Langpath=@ScriptDir & "\lang\"&$language&"\lang_"&$language&".ini"

    [/autoit]

    In der Config.ini steht dann ja dann in der Language German drinne, dann einfach auslesen lassen

    z.B. so

    [autoit]

    $start = GUICtrlCreateButton(IniRead($LangPath, $Language, "start", "start"), 248, 0, 75, 25, $WS_GROUP)

    [/autoit]

    Dann steht in der datei \lang\German\lang_german.ini in etwa dies

    Code
    [German]
    
    
    start=Starten ; falls Variable nicht gesetzt fügt er an die Stelle einfach nur start hin

    habe ich bei meinem String Starter so gemacht gehabt ^^

    Hier mal der Code

    Spoiler anzeigen
    [autoit]

    ;~ GUI und Windows Daten
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    #include <GuiListView.au3>
    #Include <Array.au3>
    #Include <File.au3>

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

    ;~ Internet
    #include <INet.au3>
    #include <IE.au3>

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

    ;~ Modern Menü
    #include <ModernMenu.au3>

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

    ;~ Tab Items
    #include <StaticConstants.au3>
    #include <TabConstants.au3>

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

    ;~ $_MD5Opcode wird für die Funktion _MD5() benötigt
    Global $_MD5Opcode = "0xC85800005356576A006A006A008D45A850E8280000006A00FF750CFF75088D45A850E8440000006A006A008D45A850FF7510E8710700005F5E5BC9C210005589E58B4D0831C0894114894110C70101234567C7410489ABCDEFC74108FEDCBA98C7410C765432105DC21000C80C0000538B5D088B4310C1E80383E03F8945F88B4510C1E0030143103943107303FF43148B4510C1E81D0143146A40582B45F88945F4394510724550FF750C8B45F88D44031850E8A00700008D43185053E84E0000008B45F48945FC8B45FC83C03F39451076138B450C0345FC5053E8300000008345FC40EBE28365F800EB048365FC008B45102B45FC508B450C0345FC508B45F88D44031850E84D0700005BC9C21000C84000005356576A40FF750C8D45C050E8330700008B45088B088B50048B70088B780C89D021F089D3F7D321FB09D801C1034DC081C178A46AD7C1C10701D189C821D089CBF7D321F309D801C7037DC481C756B7C7E8C1C70C01CF89F821C889FBF7D321D309D801C60375C881C6DB702024C1C61101FE89F021F889F3F7D321CB09D801C20355CC81C2EECEBDC1C1C21601F289D021F089D3F7D321FB09D801C1034DD081C1AF0F7CF5C1C10701D189C821D089CBF7D321F309D801C7037DD481C72AC68747C1C70C01CF89F821C889FBF7D321D309D801C60375D881C6134630A8C1C61101FE89F021F889F3F7D321CB09D801C20355DC81C2019546FDC1C21601F289D021F089D3F7D321FB09D801C1034DE081C1D8988069C1C10701D189C821D089CBF7D321F309D801C7037DE481C7AFF7448BC1C70C01CF89F821C889FBF7D321D309D801C60375E881C6B15BFFFFC1C61101FE89F021F889F3F7D321CB09D801C20355EC81C2BED75C89C1C21601F289D021F089D3F7D321FB09D801C1034DF081C12211906BC1C10701D189C821D089CBF7D321F309D801C7037DF481C7937198FDC1C70C01CF89F821C889FBF7D321D309D801C60375F881C68E4379A6C1C61101FE89F021F889F3F7D321CB09D801C20355FC81C22108B449C1C21601F289D021F889FBF7D321F309D801C1034DC481C162251EF6C1C10501D189C821F089F3F7D321D309D801C7037DD881C740B340C0C1C70901CF89F821D089D3F7D321CB09D801C60375EC81C6515A5E26C1C60E01FE89F021C889CBF7D321FB09D801C20355C081C2AAC7B6E9C1C21401F289D021F889FBF7D321F309D801C1034DD481C15D102FD6C1C10501D189C821F089F3F7D321D309D801C7037DE881C753144402C1C70901CF89F821D089D3F7D321CB09D801C60375FC81C681E6A1D8C1C60E01FE89F021C889CBF7D321FB09D801C20355D081C2C8FBD3E7C1C21401F289D021F889FBF7D321F309D801C1034DE481C1E6CDE121C1C10501D189C821F089F3F7D321D309D801C7037D"
    $_MD5Opcode &= "F881C7D60737C3C1C70901CF89F821D089D3F7D321CB09D801C60375CC81C6870DD5F4C1C60E01FE89F021C889CBF7D321FB09D801C20355E081C2ED145A45C1C21401F289D021F889FBF7D321F309D801C1034DF481C105E9E3A9C1C10501D189C821F089F3F7D321D309D801C7037DC881C7F8A3EFFCC1C70901CF89F821D089D3F7D321CB09D801C60375DC81C6D9026F67C1C60E01FE89F021C889CBF7D321FB09D801C20355F081C28A4C2A8DC1C21401F289D031F031F801C1034DD481C14239FAFFC1C10401D189C831D031F001C7037DE081C781F67187C1C70B01CF89F831C831D001C60375EC81C622619D6DC1C61001FE89F031F831C801C20355F881C20C38E5FDC1C21701F289D031F031F801C1034DC481C144EABEA4C1C10401D189C831D031F001C7037DD081C7A9CFDE4BC1C70B01CF89F831C831D001C60375DC81C6604BBBF6C1C61001FE89F031F831C801C20355E881C270BCBFBEC1C21701F289D031F031F801C1034DF481C1C67E9B28C1C10401D189C831D031F001C7037DC081C7FA27A1EAC1C70B01CF89F831C831D001C60375CC81C68530EFD4C1C61001FE89F031F831C801C20355D881C2051D8804C1C21701F289D031F031F801C1034DE481C139D0D4D9C1C10401D189C831D031F001C7037DF081C7E599DBE6C1C70B01CF89F831C831D001C60375FC81C6F87CA21FC1C61001FE89F031F831C801C20355C881C26556ACC4C1C21701F289F8F7D009D031F001C1034DC081C1442229F4C1C10601D189F0F7D009C831D001C7037DDC81C797FF2A43C1C70A01CF89D0F7D009F831C801C60375F881C6A72394ABC1C60F01FE89C8F7D009F031F801C20355D481C239A093FCC1C21501F289F8F7D009D031F001C1034DF081C1C3595B65C1C10601D189F0F7D009C831D001C7037DCC81C792CC0C8FC1C70A01CF89D0F7D009F831C801C60375E881C67DF4EFFFC1C60F01FE89C8F7D009F031F801C20355C481C2D15D8485C1C21501F289F8F7D009D031F001C1034DE081C14F7EA86FC1C10601D189F0F7D009C831D001C7037DFC81C7E0E62CFEC1C70A01CF89D0F7D009F831C801C60375D881C6144301A3C1C60F01FE89C8F7D009F031F801C20355F481C2A111084EC1C21501F289F8F7D009D031F001C1034DD081C1827E53F7C1C10601D189F0F7D009C831D001C7037DEC81C735F23ABDC1C70A01CF89D0F7D009F831C801C60375C881C6BBD2D72AC1C60F01FE89C8F7D009F031F801C20355E481C291D386EBC1C21501F28B4508010801500401700801780C5F5E5BC9C20800C814000053E840000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008F45EC8B5D0C6A088D4310508D"
    $_MD5Opcode &= "45F850E8510000008B4310C1E80383E03F8945F483F838730B6A38582B45F48945F0EB096A78582B45F48945F0FF75F0FF75ECFF750CE831F8FFFF6A088D45F850FF750CE823F8FFFF6A1053FF7508E8050000005BC9C210005589E55156578B7D088B750C8B4D10FCF3A45F5E595DC20C00"

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

    HotKeySet("^q", "_end")
    HotKeySet("^n", "_new_p")
    HotKeySet("^a", "_stringlist")

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

    #NoTrayIcon

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

    Global $AnzItems, $item[999999][5], $items[9999999]
    Global $Browser

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

    Const $ConfigPath=@ScriptDir & "\ini\config.ini"
    Const $StringPath=@ScriptDir & "\ini\string.trf"
    Const $VersionPath=@ScriptDir & "\ini\version.ini"
    Const $ChangelogPath=@ScriptDir & "\changelog.txt"
    Const $PassPath=@ScriptDir & "\ini\pass.ini"

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

    FileDelete("Updates\*.*")

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

    If Not FileExists("\ini") Then DirCreate(@ScriptDir & "\ini")

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

    ;~ If Not FileExists("\Updates") Then DirCreate(@ScriptDir & "\Updates")

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

    If Not FileExists($StringPath) Then
    FileWrite($StringPath, "String, Pfad zum Ordner, EXE Datei, Name*")
    FileWriteLine($StringPath, "")
    EndIf

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

    If Not FileExists($ConfigPath) Then
    IniWrite($ConfigPath, "Transparenz", "Tranz", 100)
    IniWrite($ConfigPath, "Anzahl", "Anzahl", 0)
    IniWrite($ConfigPath, "Language", "Lang", "German")

    IniWrite($ConfigPath, "Checks", "Update", "1")
    IniWrite($ConfigPath, "Checks", "Passwort", "1")
    IniWrite($ConfigPath, "Checks", "Transmeldung", "1")
    IniWrite($ConfigPath, "Checks", "WinMove", "1")
    EndIf

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

    $Language=IniRead($ConfigPath, "Language", "Lang", "")
    $Langpath=@ScriptDir & "\lang\"&$language&"\lang_"&$language&".ini"

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

    If Not FileExists($Langpath) Then
    If $Language="German" Then
    MsgBox(16, "Fehler Language Datei nicht gefunden!", "Die Language File '"&$Language&"' wurde nicht gefunden. Das Programm wird daher geschlossen!")
    EMail()
    ElseIf $Language="English" Then
    MsgBox(16, "Error Language File not found!", "The Language File '"&$Language&"' was not found. Programm was closed!")
    EndIf
    Exit
    EndIf

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

    If Not FileExists($PassPath) Then
    $pass=InputBox(IniRead($LangPath, $Language, "password", "password"), IniRead($LangPath, $Language, "pls_password", "pls_password"), "", "*")
    IniWrite($PassPath, "Passwort", "Passwort", _MD5($pass))
    Else
    If IniRead($ConfigPath, "Checks", "Passwort", "")=1 Then
    ; Prüfe ob Angabe richtig
    $res = InputBox(IniRead($LangPath, $Language, "password", "password"),IniRead($LangPath, $Language, "pls_password", "pls_password"),'','*')
    If IniRead($PassPath, "Passwort", "Passwort", "nix") <> _MD5($res) then
    MsgBox(16, IniRead($LangPath, $Language, "bad_password", "bad_password"), IniRead($LangPath, $Language, "bad_password1", "bad_password"))
    Exit
    EndIf
    EndIf
    EndIf

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

    dataload()
    #Region ### START Koda GUI section ### Form=Language wird hier meistens benutzt
    $MainWindow = GUICreate("", @DesktopWidth, 5, 0, 0, BitOR($WS_SYSMENU,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS, $WS_EX_TOOLWINDOW), BitOr($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    WinSetTrans($MainWindow, "", IniRead($ConfigPath, "Transparenz", "Tranz", 0) * 2.55)

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

    ;~ String eingabe um Programm zu starten
    $Stringl = GUICtrlCreateLabel(IniRead($LangPath, $Language, "string_label", "string_label"), 0, 0, 120, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor($Stringl, $GUI_BKCOLOR_TRANSPARENT)
    $eingabe = GUICtrlCreateInput(IniRead($LangPath, $Language, "string_input", "string_input"), 120, 0, 121, 21)

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

    ;~ Menü aufbauen
    ;~~ Menü "Optionen"
    $options = GUICtrlCreateMenu(IniRead($LangPath, $Language, "mainmenu", "mainmenu"))
    $new_programm = _GUICtrlCreateODMenuItem(IniRead($LangPath, $Language, "new_programm", "new_programm"), $options)
    _GUICtrlODMenuItemSetIcon($new_programm, @ScriptDir & "\gfx\add_programm.ico") ;~ Icon zuweissen
    _SetMenuIconBkColor(0xFFFFFF)
    _SetMenuBkColor(0xFFFFFF)

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

    $programmlistshow = _GUICtrlCreateODMenuItem(IniRead($LangPath, $Language, "specified", "specified"), $options)
    _GUICtrlODMenuItemSetIcon($programmlistshow, @ScriptDir & "\gfx\stringlist.ico") ;~ Icon zuweissen

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

    GUICtrlCreateMenuItem("", $options)
    $closed = _GUICtrlCreateODMenuItem(IniRead($LangPath, $Language, "closed", "closed"), $options)
    _GUICtrlODMenuItemSetIcon($closed, @ScriptDir & "\gfx\closed.ico") ;~ Icon zuweissen

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

    ;~~ Menü "Einstellungen"
    $options = GUICtrlCreateMenu(IniRead($LangPath, $Language, "options", "options"))
    $optionsedit= _GUICtrlCreateODMenuItem(IniRead($LangPath, $Language, "options", "options"), $options)
    _GUICtrlODMenuItemSetIcon($optionsedit, @ScriptDir & "\gfx\options.ico") ;~ Icon zuweissen
    ;GUICtrlSetState(-1, $GUI_DISABLE)

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

    ;~~ Menü "Help"
    $help = GUICtrlCreateMenu(IniRead($LangPath, $Language, "help", "help"))
    $link1 = _GUICtrlCreateODMenuItem(IniRead($LangPath, $Language, "homepage", "homepage"), $help)
    _GUICtrlODMenuItemSetIcon($link1, @ScriptDir & "\gfx\homepage.ico") ;~ Icon zuweissen

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

    $link2 = _GUICtrlCreateODMenuItem(IniRead($LangPath, $Language, "board", "board"), $help)
    _GUICtrlODMenuItemSetIcon($link2, @ScriptDir & "\gfx\board.ico") ;~ Icon zuweissen

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

    $changelog = _GUICtrlCreateODMenuItem(IniRead($LangPath, $Language, "changelog_read", "changelog_read"), $help)
    _GUICtrlODMenuItemSetIcon($changelog, @ScriptDir & "\gfx\changelog.ico") ;~ Icon zuweissen

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

    $updatecheck = _GUICtrlCreateODMenuItem(IniRead($LangPath, $Language, "update_check", "update_check"), $help)
    _GUICtrlODMenuItemSetIcon($updatecheck, @ScriptDir & "\gfx\ucheck.ico") ;~ Icon zuweissen
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    GUICtrlCreateMenuItem("", $help)
    $email = _GUICtrlCreateODMenuItem(IniRead($LangPath, $Language, "email-send", "email_send"), $help)
    _GUICtrlODMenuItemSetIcon($email, @ScriptDir & "\gfx\email.ico") ;~ Icon zuweissen

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

    $other = _GUICtrlCreateODMenuItem(IniRead($LangPath, $Language, "other", "other"), $help)
    _GUICtrlODMenuItemSetIcon($other, @ScriptDir & "\gfx\other.ico") ;~ Icon zuweissen

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

    ;~ Slider erstellen und Label mit Slider umstellen
    $Slider = GUICtrlCreateSlider(608, 0, 118, 21)
    GUICtrlSetLimit(-1, 100, 15)
    GUICtrlSetData($slider, 100)

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

    ;~ Tranzparenz aus Ini laden und $Slider einstellen
    GUICtrlSetData($Slider, IniRead($ConfigPath, "Transparenz", "Tranz", 0))
    $trans = GUICtrlCreateLabel(IniRead($LangPath, $Language, "transparency", "transpareny"), 512, 0, 94, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor($trans, $GUI_BKCOLOR_TRANSPARENT)
    $transprozent = GUICtrlCreateLabel("0%", 728, 0, 38, 19)
    GUICtrlSetFont(-1, 9, 400, 0, "Arial")
    GUICtrlSetBkColor($transprozent, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetData($transprozent, "100%")

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

    ;~ Tranzparenz aus Ini laden und $tranzprozent einstellen
    GUICtrlSetData($transprozent, IniRead($ConfigPath, "Transparenz", "Tranz", 0)&"%")

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

    ;~ Start Button um Programm mit dem eingegebenen String zu starten
    $start = GUICtrlCreateButton(IniRead($LangPath, $Language, "start", "start"), 248, 0, 75, 25, $WS_GROUP)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    ;********************************************************************************************
    ; Programmliste zeigen mit String zugehörigkeit
    ;********************************************************************************************

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

    $programmlist = GUICreate("", 281, 460, 0, 45, BitOR($WS_SYSMENU,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS, $WS_EX_TOOLWINDOW), BitOr($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $listviewbk = GUICtrlCreateLabel("", 0, 0, 276, 428)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $listview = GUICtrlCreateListView(IniRead($LangPath, $Language, "string", "string")&"|"&IniRead($LangPath, $Language, "name", "name"), 0, 0, 273, 425)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 150)

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

    $programmlistclose = GUICtrlCreateButton(IniRead($LangPath, $Language, "window_close", "window_close"), 176, 432, 99, 25, $WS_GROUP)
    $programmlistaktu = GUICtrlCreateButton(IniRead($LangPath, $Language, "update", "update"), 0, 432, 75, 25, $WS_GROUP)
    $auswahl_delete = GUICtrlCreateButton(IniRead($LangPath, $Language, "string_delete", "string_delete"), 80, 432, 91, 25, $WS_GROUP)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    ;********************************************************************************************
    ; "Neues Programm einfügen" Fenster öffnen
    ;********************************************************************************************

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

    $programme = GUICreate("", 286, 187, 0, 45, BitOR($WS_SYSMENU,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS, $WS_EX_TOOLWINDOW), BitOr($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    $Label1 = GUICtrlCreateLabel(IniRead($LangPath, $Language, "name_programm", "name_programm"), 8, 8, 143, 17)
    $Label2 = GUICtrlCreateLabel(IniRead($LangPath, $Language, "path_to_folder", "path_to_folder"), 64, 40, 86, 17)
    $Label3 = GUICtrlCreateLabel(IniRead($LangPath, $Language, "enter_string_one", "enter_string_one"), 72, 112, 81, 17)
    $Label4 = GUICtrlCreateLabel(IniRead($LangPath, $Language, "path_to_folder", "path_to_folder"), 48, 72, 98, 17)
    $Label5 = GUICtrlCreateLabel(IniRead($LangPath, $Language, "sample", "sample"), 72, 88, 79, 17)

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

    $gamename = GUICtrlCreateInput(IniRead($LangPath, $Language, "insert_name", "insert_name"), 160, 8, 121, 21)
    $programm1 = GUICtrlCreateInput(IniRead($LangPath, $Language, "specifying_path", "specifying_path"), 160, 40, 121, 21)
    $exedata = GUICtrlCreateInput(IniRead($LangPath, $Language, "sample_exe", "sample_exe"), 160, 80, 121, 21, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL))
    $Wort1 = GUICtrlCreateInput(IniRead($LangPath, $Language, "current_string", "current_string"), 160, 112, 121, 21)
    $stringgen = GUICtrlCreateButton(IniRead($LangPath, $Language, "generate_string", "generate_string"), 0, 136, 99, 25, $WS_GROUP)
    $tutorial = GUICtrlCreateButton(IniRead($LangPath, $Language, "tutorial", "tutorial"), 104, 136, 75, 25, $WS_GROUP)
    $programmesave = GUICtrlCreateButton(IniRead($LangPath, $Language, "save", "save"), 104, 160, 75, 25, $WS_GROUP)
    $programmeclose = GUICtrlCreateButton(IniRead($LangPath, $Language, "window_close", "window_close"), 184, 136, 99, 25, $WS_GROUP)

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

    ;********************************************************************************************
    ; "Changelog" Fenster öffnen
    ;********************************************************************************************

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

    $changelogwindow = GUICreate("Changelog", 405, 445, 302, 218)
    $changlogedit = GUICtrlCreateEdit("", 0, 0, 401, 441, BitOR($ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL))

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

    ;********************************************************************************************
    ; Other Menü Aufbauen und GUI Erzeugen
    ;********************************************************************************************

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

    $othermenu = GUICreate(IniRead($LangPath, $Language, "other_string_starter", "other_string_starter"), 400, 90, 302, 220)
    $PageControl = GUICtrlCreateTab(0, 0, 396, 88)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $otherss = GUICtrlCreateTabItem(IniRead($LangPath, $Language, "other_string_starter", "other_string_starter"))
    GUICtrlSetState(-1,$GUI_SHOW)
    $createdlabel = GUICtrlCreateLabel(IniRead($LangPath, $Language, "created", "created") & " AutoIt", 8, 32, 195, 24)
    GUICtrlSetFont(-1, 15, 400, 0, "Aharoni")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $writtenlabel = GUICtrlCreateLabel(IniRead($LangPath, $Language, "written", "written") & " Tak", 8, 56, 149, 24)
    GUICtrlSetFont(-1, 15, 400, 0, "Aharoni")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $idea = GUICtrlCreateTabItem(IniRead($LangPath, $Language, "idea", "idea"))
    $idealable = GUICtrlCreateLabel(IniRead($LangPath, $Language, "idea_by", "idea_by") & " Strom666", 48, 32, 274, 42)
    GUICtrlSetFont(-1, 20, 400, 0, "Arial Black")
    GUICtrlCreateTabItem("")

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

    ;*******************************************************************************************
    ; Options Fenster aufbauen
    ;*******************************************************************************************

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

    $optionswindow = GUICreate("", 286, 187, 0, 45, BitOR($WS_SYSMENU,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS, $WS_EX_TOOLWINDOW), BitOr($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    $optionsl = GUICtrlCreateLabel(IniRead($LangPath, $Language, "options", "options"), 8, 8, 273, 26)
    GUICtrlSetFont(-1, 14, 400, 4, "Arial")
    $winmove = GUICtrlCreateCheckbox(IniRead($LangPath, $Language, "checkboxes", "checkboxes"), 192, 40, 97, 17)
    $updatecheckc = GUICtrlCreateCheckbox(IniRead($LangPath, $Language, "checkboxes", "checkboxes"), 192, 64, 97, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $passcheckc = GUICtrlCreateCheckbox(IniRead($LangPath, $Language, "checkboxes", "checkboxes"), 192, 88, 97, 17)
    $tranzcheckc = GUICtrlCreateCheckbox(IniRead($LangPath, $Language, "checkboxes", "checkboxes"), 192, 112, 97, 17)
    checks()
    $speak = GUICtrlCreateCombo($Language , 192, 136, 97, 25)
    Local $file_A = _fileList(@ScriptDir & "\lang\", "*", 0)
    Local $a_A = _ArrayToString($file_A, "|")
    GUICtrlSetData($speak, $a_A)
    $winmovel = GUICtrlCreateLabel(IniRead($LangPath, $Language, "winmove_lable", "winmove_lable"), 8, 40, 150, 17)
    $updatecheckl = GUICtrlCreateLabel(IniRead($LangPath, $Language, "update_lable", "update_lable"), 8, 64, 150, 17)
    $passcheckl = GUICtrlCreateLabel(IniRead($LangPath, $Language, "password_lable", "passwort_lable"), 8, 88, 168, 17)
    $tranzparentl = GUICtrlCreateLabel(IniRead($LangPath, $Language, "transpareny_lable", "transpareny_lable"), 8, 112, 165, 17)
    $speakl = GUICtrlCreateLabel(IniRead($LangPath, $Language, "speak_lable", "speak_lable"), 8, 136, 47, 17)
    $savedoptions = GUICtrlCreateButton(IniRead($LangPath, $Language, "save", "save"), 8, 160, 75, 25, $WS_GROUP)
    $optionsclosed = GUICtrlCreateButton(IniRead($LangPath, $Language, "window_close", "window_close"), 96, 160, 107, 25, $WS_GROUP)

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

    ;~ GUI Transparenz aus Ini laden und einstellen
    WinSetTrans($programmlist, "", IniRead($ConfigPath, "Transparenz", "Tranz", 0) * 2.55)
    WinSetTrans($optionswindow, "", IniRead($ConfigPath, "Transparenz", "Tranz", 0) * 2.55)
    WinSetTrans($programme, "", IniRead($ConfigPath, "Transparenz", "Tranz", 0) * 2.55)

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

    ;********************************************************************************************
    ; Eigendlicher Code beginnt hier!
    ;********************************************************************************************

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

    While 1
    $msg = GUIGetMsg()

    ;~ GUI wie Taskleiste einklappen
    If IniRead($ConfigPath, "Checks", "WinMove", "1")=1 Then
    $WPos = WinGetPos($MainWindow)
    $MPos = MouseGetPos()
    If ($MPos[0] >= $WPos[0]) And ($MPos[0] <= ($WPos[0] + $WPos[2])) And ($MPos[1] >= $WPos[1]) And ($MPos[1] <= ($WPos[1] + $WPos[3])) Then
    WinSetOnTop($MainWindow, "", 1)
    WinMove($MainWindow, "", 0, 0, @DesktopWidth, 45, 3)
    Else
    WinSetOnTop($MainWindow, "", 1)
    WinMove($MainWindow, "", 0, 0, @DesktopWidth, 5, 3)
    EndIf
    Else
    WinSetOnTop($MainWindow, "", 1)
    WinMove($MainWindow, "", 0, 0, @DesktopWidth, 45, 3)
    EndIf

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


    ;~ Eingegebenen String mit Ini Einträgen abgleichen und Programm starten
    If $msg=$start Then
    dataload()
    For $i=1 to $AnzItems
    If GUICtrlRead($eingabe)==$item[$i][0] Then
    ShellExecute($item[$i][1] & $item[$i][2], "", $item[$i][1])
    EndIf
    Next
    EndIf

    ;~ Stringangaben Zeigen
    If $msg=$programmlistshow Then
    dataload()
    GUISetState(@SW_SHOW, $programmlist)

    $Read=GUICtrlRead($Slider)
    For $i=1 to $Read Step 1
    WinSetTrans($programmlist, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(100)

    For $i=1 to $AnzItems
    GUICtrlDelete($items[$i])
    $items[$i]=GUICtrlCreateListViewItem($item[$i][0]&"|"&$item[$i][3], $listview)
    Next
    EndIf

    ;~ Programmliste aktualisieren
    If $msg=$programmlistaktu Then
    dataload()
    For $i=1 to $AnzItems
    GUICtrlDelete($items[$i])
    $items[$i]=GUICtrlCreateListViewItem($item[$i][0]&"|"&$item[$i][3], $listview)
    Next
    EndIf

    If $msg=$auswahl_delete Then
    EndIf

    If $msg=$programmlistclose Then
    $Read=GUICtrlRead($Slider)
    For $i=$Read to 1 Step -1
    WinSetTrans($programmlist, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(10)
    GUISetState(@SW_HIDE, $programmlist)
    EndIf

    ;~ Neues Programm Hinzufügen Fenster öffnen
    If $msg=$new_programm Then
    GUISetState(@SW_SHOW, $programme)

    $Read=GUICtrlRead($Slider)
    For $i=1 to $Read Step 1
    WinSetTrans($programme, "", $i * 2.55)
    Sleep(10)
    Next
    EndIf

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

    ;~ String Generieren
    If $msg=$stringgen Then
    $Zeichen = Random(3, 10)

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

    $Wort = ""
    For $i = 1 to $Zeichen
    $Buchstabe = Random(65, 90) & Random(65, 90) & Random(65, 90) & Random(65, 90) & Random(65, 90) & Random(65, 90)
    If $Buchstabe > 57 AND $Buchstabe < 65 OR $Buchstabe > 90 AND $Buchstabe < 97 Then
    $i -= 1
    Else
    $Wort &= Chr($Buchstabe)
    EndIf
    Next
    GUICtrlSetData($Wort1, $Wort)
    EndIf

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

    ;~ Programm mit String in ini Schreiben
    If $msg=$programmesave Then
    save()
    EndIf

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

    If $msg=$tutorial Then
    tuthinweis()
    EndIf

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

    ;~ Neues Programm Hinzufügen Fenster schliessen
    If $msg=$programmeclose Then
    $Read=GUICtrlRead($Slider)
    For $i=$Read to 1 Step -1
    WinSetTrans($programme, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(1000)
    GUISetState(@SW_HIDE, $programme)
    EndIf

    ;~ Options Fenster aufbauen
    If $msg=$optionsedit Then
    GUISetState(@SW_SHOW, $optionswindow)
    $Read=GUICtrlRead($Slider)
    For $i=1 to $Read
    WinSetTrans($optionswindow, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(1000)
    If GUICtrlRead($updatecheckc)=$GUI_UNCHECKED Then
    MsgBox(16, IniRead($LangPath, $Language, "update_check", "update_check"), IniRead($LangPath, $Language, "update_check_false", "update_check_false"))
    EndIf
    EndIf

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

    If $msg=$savedoptions Then
    saveo()
    MsgBox(64, "Gespeichert", "Änderungen wurden gespeichert")
    EndIf

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

    ;~ Options Fenster schliessen
    If $msg=$optionsclosed Then
    $Read=GUICtrlRead($Slider)
    For $i=$Read to 1 Step -1
    WinSetTrans($optionswindow, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(1000)
    saveo()
    GUISetState(@SW_HIDE, $optionswindow)
    EndIf

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

    If $msg=$link1 Then
    GoLink1()
    EndIf

    If $msg=$link2 Then
    GoLink2()
    EndIf

    If $msg=$email Then
    email()
    EndIf

    ;~ Changelog Fenster öffnen
    If $msg=$changelog Then
    $changelogedit ="=========================================================================="&@CRLF
    $changelogedit &=" String Starter - Programm Changelog"&@CRLF
    $changelogedit &=" Copyright (c) by Tak"&@CRLF
    $changelogedit &=" E-Mail: tak90@gmx.de"&@CRLF
    $changelogedit &="==============================================================================="&@CRLF
    $changelogedit &=" + Neues Feature oder änderungen"&@CRLF
    $changelogedit &=" - Bug fix oder entfernungen"&@CRLF
    $changelogedit &=" # Neues Feature geplant"&@CRLF
    $changelogedit &=" * Änderung an informationen"&@CRLF
    $changelogedit &=" ! Wichtig - Bitte Lesen!"&@CRLF
    $changelogedit &="==============================================================================="&@CRLF&@CRLF

    GUISetState(@SW_SHOW, $changelogwindow)
    $Read=GUICtrlRead($Slider)
    For $i=1 to $Read Step 1
    WinSetTrans($changelogwindow, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(10)
    If Not FileExists($ChangelogPath) Then
    GUICtrlSetData($changelogedit, "No Changelog File Found!!!")
    Else
    GUICtrlSetData($changlogedit, $changelogedit & FileRead($ChangelogPath))
    EndIf
    EndIf

    ;~ Changelog Fenster schliessen
    If $msg=$GUI_EVENT_CLOSE Then
    $Read=GUICtrlRead($Slider)
    For $i=$Read to 1 Step -1
    WinSetTrans($changelogwindow, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(10)
    GUISetState(@SW_HIDE, $changelogwindow)
    EndIf

    ;~ Other Fenster öffnen
    If $msg=$other Then
    GUISetState(@SW_SHOW, $othermenu)

    $Read=GUICtrlRead($Slider)
    For $i=1 to $Read Step 1
    WinSetTrans($othermenu, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(100)
    EndIf

    ;~ Other Fenster schliessen
    If $msg=$GUI_EVENT_CLOSE Then
    $Read=GUICtrlRead($Slider)
    For $i=$Read to 1 Step -1
    WinSetTrans($othermenu, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(100)

    GUISetState(@SW_HIDE, $othermenu)
    EndIf

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

    ;~ Transparent Slider Lesen und Transparenz einstellen
    If $msg=$Slider Then
    $Read=GUICtrlRead($Slider)

    WinSetTrans($MainWindow, "", $Read * 2.55)
    WinSetTrans($programmlist, "", $Read * 2.55)
    WinSetTrans($programme, "", $Read * 2.55)
    WinSetTrans($optionswindow, "", $Read * 2.55)

    GUICtrlSetData($transprozent, 100/100*$Read&"%")
    EndIf

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

    ;~ String Starter schliessen und Werte in ini Speichern
    If $msg=$closed Then
    $Read=GUICtrlRead($Slider)
    For $i=$Read to 1 Step -1
    WinSetTrans($MainWindow, "", $i * 2.55)
    WinSetTrans($programmlist, "", $i * 2.55)
    WinSetTrans($programme, "", $i * 2.55)
    WinSetTrans($othermenu, "", $i * 2.55)
    WinSetTrans($optionswindow, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(100)

    IniWrite($ConfigPath, "Transparenz", "Tranz", GUICtrlRead($Slider))
    ConsoleWrite("Transparenz wurde auf "&GUICtrlRead($Slider)&"% gespeichert"&@CRLF)
    If IniRead($ConfigPath, "Checks", "Transmeldung", "")=1 Then
    MsgBox(64, IniRead($LangPath, $Language, "trans_check", "trans_check"), IniRead($LangPath, $Language, "trans_message_one", "trans_message")&" "&GUICtrlRead($Slider)&"% "&IniRead($LangPath, $Language, "trans_message_two", "trans_message"))
    EndIf
    Exit
    EndIf
    WEnd

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

    ;~ tutorial hinweis
    Func tuthinweis()
    $tut=FileRead(@ScriptDir & "\lang\"&$language&"\tut_"&$language&".txt")

    If Not FileExists(@ScriptDir & "\lang\"&$language&"\tut_"&$language&".txt") Then
    MsgBox(64,IniRead($LangPath, $Language, "tutorial_h", "tutorial_h"), "tut file not found!")
    Else
    MsgBox(64,IniRead($LangPath, $Language, "tutorial_h", "tutorial_h"), $tut)
    EndIf
    EndFunc

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

    ;~ Checks für Optionen
    Func checks()
    If IniRead($ConfigPath, "Checks", "WinMove", "1")=1 Then
    GUICtrlSetState($winmove, $GUI_CHECKED)
    Else
    GUICtrlSetState($winmove, $GUI_UNCHECKED)
    EndIf

    If IniRead($ConfigPath, "Checks", "Update", "1")=1 Then
    GUICtrlSetState($updatecheckc, $GUI_CHECKED)
    Else
    GUICtrlSetState($updatecheckc, $GUI_UNCHECKED)
    EndIf

    If IniRead($ConfigPath, "Checks", "Passwort", "1")=1 Then
    GUICtrlSetState($passcheckc, $GUI_CHECKED)
    Else
    GUICtrlSetState($passcheckc, $GUI_UNCHECKED)
    EndIf

    If IniRead($ConfigPath, "Checks", "Transmeldung", "1")=1 Then
    GUICtrlSetState($tranzcheckc, $GUI_CHECKED)
    Else
    GUICtrlSetState($tranzcheckc, $GUI_UNCHECKED)
    EndIf
    EndFunc

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

    ;~ Speichern von den Optionen
    Func saveo()
    If GUICtrlRead($winmove)=$GUI_CHECKED Then
    IniWrite($ConfigPath, "Checks", "WinMove", "1")
    Else
    IniWrite($ConfigPath, "Checks", "WinMove", "0")
    EndIf

    If GUICtrlRead($updatecheckc)=$GUI_CHECKED Then
    IniWrite($ConfigPath, "Checks", "Update", "1")
    Else
    IniWrite($ConfigPath, "Checks", "Update", "0")
    EndIf

    If GUICtrlRead($passcheckc)=$GUI_CHECKED Then
    IniWrite($ConfigPath, "Checks", "Passwort", "1")
    Else
    IniWrite($ConfigPath, "Checks", "Passwort", "0")
    EndIf

    If GUICtrlRead($tranzcheckc)=$GUI_CHECKED Then
    IniWrite($ConfigPath, "Checks", "Transmeldung", "1")
    Else
    IniWrite($ConfigPath, "Checks", "Transmeldung", "0")
    EndIf

    IniWrite($ConfigPath, "Language", "Lang", GUICtrlRead($speak))
    EndFunc

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

    ;~ daten aus der String.tft laden
    Func dataload()
    $File=FileOpen($StringPath, 0)
    $AnzItems=IniRead($ConfigPath, "Anzahl", "Anzahl", "")
    FileReadLine($file)
    For $i=1 to $AnzItems
    For $z=0 to 4
    $item[$i][$z]=FileReadLine($file)
    Next
    Next
    FileClose($file)
    EndFunc

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

    ;~ Neues Programm einfügen Fenster in den Vordergrund holen
    Func _new_p()
    GUISetState(@SW_SHOW, $programme)

    $Read=GUICtrlRead($Slider)
    For $i=1 to $Read Step 1
    WinSetTrans($programme, "", $i * 2.55)
    Sleep(10)
    Next
    EndFunc

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

    ;~ String Angaben Fenster in den Vordergrund holen wenn STRG+A gedrückt wurde
    Func _stringlist()
    dataload()
    GUISetState(@SW_SHOW, $programmlist)

    $Read=GUICtrlRead($Slider)
    For $i=1 to $Read Step 1
    WinSetTrans($programmlist, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(100)

    For $i=1 to $AnzItems
    GUICtrlDelete($items[$i])
    $items[$i]=GUICtrlCreateListViewItem($item[$i][0]&"|"&$item[$i][3], $listview)
    Next
    EndFunc

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

    ;~ _end ausführen wenn STRG+Q gedrückt wird
    Func _end()
    IniWrite($ConfigPath, "Transparenz", "Tranz", GUICtrlRead($Slider))
    $Read=GUICtrlRead($Slider)
    For $i=$Read to 1 Step -1
    WinSetTrans($MainWindow, "", $i * 2.55)
    WinSetTrans($programmlist, "", $i * 2.55)
    WinSetTrans($programme, "", $i * 2.55)
    WinSetTrans($othermenu, "", $i * 2.55)
    WinSetTrans($optionswindow, "", $i * 2.55)
    Sleep(10)
    Next
    Sleep(100)
    ConsoleWrite("Transparenz wurde auf "&GUICtrlRead($Slider)&"% gespeichert"&@CRLF)
    If IniRead($ConfigPath, "Checks", "Transmeldung", "")=1 Then
    $yesno=MsgBox(68, IniRead($LangPath, $Language, "trans_check", "trans_check"), IniRead($LangPath, $Language, "trans_message_one", "trans_message")&" "&GUICtrlRead($Slider)&"% "&IniRead($LangPath, $Language, "trans_message_two", "trans_message")&@CRLF&IniRead($LangPath, $Language, "trans_message_three", "trans_message"))
    If $yesno=7 Then
    IniWrite($ConfigPath, "Checks", "Transmeldung", "0")
    EndIf
    EndIf
    Exit
    EndFunc

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

    ;*******************************************
    ; Speicher Funktion für neues Programm
    ;*******************************************

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

    Func save()
    $dateiinhalt=FileRead($StringPath)
    $array1=stringsplit($dateiinhalt,@crlf,3)
    $reg=IniRead($ConfigPath, "Anzahl", "Anzahl",0)
    $array=number($reg)+1
    IniWrite($ConfigPath, "Anzahl", "Anzahl", $array)
    $dateiinhalt=_ArrayToString($array1,@crlf)
    filedelete($StringPath)
    FileWrite($StringPath, $dateiinhalt)
    FileWriteLine($StringPath, GUICtrlRead($Wort1))
    FileWriteLine($StringPath, GUICtrlRead($programm1))
    FileWriteLine($StringPath, GUICtrlRead($exedata))
    FileWriteLine($StringPath, GUICtrlRead($gamename))
    FileWriteLine($StringPath, "*")
    $s=GUICtrlRead($gamename)
    $u=GUICtrlRead($Wort1)
    MsgBox(0, IniRead($LangPath, $Language, "new_string_h", "new_string_header"), IniRead($LangPath, $Language, "new_string_message_one", "new_string_message_one")&GUICtrlRead($gamename)&IniRead($LangPath, $Language, "new_string_message_two", "new_string_message_two")&GUICtrlRead($Wort1)&IniRead($LangPath, $Language, "new_string_message_three", "new_string_message_three"))
    EndFunc

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

    ;********************************************
    ; Browser erstellen und öffnen!
    ;********************************************
    Func GoLink1()
    $Browser="http://autoit.de"
    Browsen()
    EndFunc

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

    Func GoLink2()
    $Browser="http://autoit.de/index.php?page=Thread&postID=135535&highlight=#post135535"
    Browsen()
    EndFunc

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

    Func Browsen()
    ShellExecute($Browser)
    EndFunc

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

    Func EMail()
    _INetMail("tak90@gmx.de", "Fehler/Hinweis melden", "")
    EndFunc

    ;*******************************************************
    ; MD5 Code
    ;*******************************************************
    ; MD5-Funktion um einen String mit MD5 zu verschlüsseln
    ;*******************************************************

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

    Func _MD5($Data)
    Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($_MD5Opcode) & "]")
    DllStructSetData($CodeBuffer, 1, $_MD5Opcode)

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

    Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]")
    DllStructSetData($Input, 1, $Data)

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

    Local $Digest = DllStructCreate("byte[16]")

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

    DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _
    "ptr", DllStructGetPtr($Input), _
    "int", BinaryLen($Data), _
    "ptr", DllStructGetPtr($Digest), _
    "int", 0)

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

    Local $Ret = DllStructGetData($Digest, 1)
    $Input = 0
    $Digest = 0
    $CodeBuffer = 0
    Return StringLower(StringTrimLeft($Ret, 2))
    EndFunc ;==>_MD5

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

    Func _fileList($s_path = "C:\", $s_pattern = "*", $i_opt = 0)
    Local $result = _FileListToArray($s_path, $s_pattern, $i_opt)
    If (Not IsArray($result)) and (@error = 1) Then
    MsgBox(0, "", "No Folders Found.")
    Exit
    EndIf
    Return $result
    EndFunc ;==>_fileList

    [/autoit]

    Und das was dann in der "\lang\German\lang_german.ini" steht

    Spoiler anzeigen

    [german]
    ; Passwörter :: Password
    new_password=Neues Passwort
    password=Passwort
    pls_password=Bitte gib ein Passwort ein
    bad_password=Falsches Passwort
    bad_password1=Sie haben ein falsches Passwort eingegeben, Programm wird geschlossen!

    ; String :: String
    string_label=String Eingeben:
    string_input=Bitte wählen

    ; Hauptmenü :: Main Menu
    mainmenu=Hauptmenü
    new_programm=Neues Programm (STRG+N)
    specified=String Angaben (STRG+A)
    closed=Beenden (STRG+Q)

    ; Einstellungs Menü :: Options Menu
    options=Einstellungen

    ; Hilfe Menü :: Help Menu
    help=Hilfe
    homepage=AutoIt Website
    board=Zum Forum Thema
    email-send=E-Mail an den Entwickler
    changelog_read=Changelog lesen
    update_check=Auf Aktualisierung prüfen
    other=Über String Starter

    ; Transparenz :: Transparency
    transparency=Sichtbarkeit

    ; Starten :: Start
    start=Starten

    ; Fenster Schliessen :: Window Close
    window_close=Fenster Schliessen


    ; Transparent Meldung :: Transpareny message
    trans_check=Transparenz Meldung!
    trans_message_one=Transparenz wurde mit
    trans_message_two=in die config.ini gespeichert!

    ;**************************;Fenster Aufbau :: Window Buildings;***************************************;

    ; Programmlisten Menü :: Programmlist Menu
    string=String
    name=Name
    update=Aktualisieren
    string_delete=String löschen


    ; Neues Programm Fenster :: New Programm Window
    name_programm=Name des Programms/Spiels:
    path_to_folder=Pfad zum Ordner:
    enter_string_one=String eingeben:
    file_type=EXE Datei Eingeben:
    sample=(z.B. firefox.exe)
    sample_exe=Datei (z.B. firefox.exe) angeben

    ; Options Fenster :: Options Window
    checkboxes=Standart: aktiv
    winmove_lable=Fenster einklappen?:
    update_lable=Auf Updates Prüfen?:
    password_lable=Passwort beim Start Prüfen?:
    transpareny_lable=Transparenz Meldung anzeigen?:
    speak_lable=Sprache:

    ; Input Felder :: Input fields
    insert_name=Name Eintragen
    specifying_path=Pfad Angeben
    enter_string_two=String Eingeben
    current_string=Aktueller String
    generate_string=String Generieren
    tutorial=Tutorial
    tutorial_h=Tutorial Hinweis!
    save=Speichern


    ; Über String Starter :: Other String Starter
    other_string_starter=Über String Starter
    created=Erstellt mit:
    written=Code by:
    idea=Idee
    idea_by=Idea by:

    ; Programme einspeichern :: Programm saved
    new_string_h=Neuer String gespeichert
    new_string_message_one=Ihr String für das Programm/Spiel "
    new_string_message_two=" lautet "
    new_string_message_three=". Alle Strings können Sie nochmal über das Hauptmenü abrufen.

    ; Updates :: Updates !!! UPDATE FUNKTION NICHT IMPLEMENTIERT !!!
    update_check=Update Check
    aktu_version=Sie benutzen die Aktuellste Version:
    new_version=Neues Update Verfügbar
    new_version_load=Ein neues Update ist Verfügbar! String Starter (Version:
    new_version_load_two=) Soll das Programm auf den neusten Stand gebracht werden?
    load_finish=Update geladen
    install=Das Update wurde geladen und wird nun Installiert. Programm wird dazu geschlossen.
    error=Fehler!
    error_server=Konnte aktuelle Version nicht vom Aktualisierungsserver abfragen.

    dann hoffe ich mal das ich dies so etwas erklären konnte

  • Ich werds jetzt so machen

    AutoIt
    [autoit]

    $var = IniReadSection(@ScriptDir & "\lang.ini","DE")
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else
    $basserror=$var[1][1]
    MsgBox(0,"",$basserror)
    EndIf

    [/autoit]

    Und so

    INI

    [DE]
    basserror=Sound konnte nicht Initialisiert werden!
    lizenz1=Mit dem ausführen dieses Programms stimmen sie der aktuellen lizenz zu.
    lizenz2=Wollen sie dieses Programm starten?
    close=Schließen
    playpause=Play|Pause
    stop=Stop
    andere Datei=Andere Datei
    neue Bib=Neue Bibliothek
    Lautstärke=Lautstärke
    listtabs=Dateiname|Pfad
    vorwärts=Vorwärts
    playlistespeichern=Playliste speichern
    playlisteladen=Playliste laden
    JSoundöffnen=JSound öffnen
    RCVL=Lautsprecher Rechts
    LCVL=Lautsprecher Links
    statbar1= INR-Multimediacenter gestartet
    gespielt=Gerade gespielt:
    urlangeben?!=Internetadresse angeben
    urlinput=Bitte URL angeben
    laden=Laden
    senderHinzufügen=Sender Hinzufügen
    opt=Optionen
    statbar2= Konnte ID3-Tags nicht Lesen!
    statbar3= Playliste gestartet
    FOD1=MP3-Datei öffnen...
    FOD2=Ordner wählen
    FSD=Playliste Speichern...
    FSD1.2=Playlisten (*.INRP)
    FOD3=Playliste laden...
    FOD3.2=Playlisten (*.INRP)
    radioerror=Sie haben kein Radio ausgewählt!
    input1=Bitte Sendernamen angeben
    input1.2=Sendername
    input2=Bitte Adresse angeben
    input2.2=Adresse
    senderaddfinisch=Sendername :
    senderaddfinisch2="Senderadresse : "
    senderaddfinisch3=Ist das Richtig?
    senderaddanswer=Hinzugefügt
    tagoutputerror=Konnte ID3-Tags nicht Lesen!
    [EN]
    [FR]

  • Also ich erstelle immer INI-Dateien für jede Sprache (deutsch.ini, english.ini, ...) und in der INI-Datei, wo die Einstellungen des Programm gespeichert sind, wird dann beim Start die entsprechende INI-Sprachdatei gelesen.

  • Ich hatte mal ein Skript geschrieben, was AutoIt-Skripte im Nachhinein multilingualisiert, d.h., alle Strings in inis packt, etc.
    Bin dabei aber leider kläglich gescheitert... (ist ne Weile her)

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Welchen Vorteil erhofft ihr euch von einer ini mit einer Section? Zumal man sowieso beim Startup alles auf einen Rutsch einlesen sollte.
    Imho macht das keinen Sinn. :whistling:

    Eine .txt Datei erfüllt die Aufgabe genauso gut und man hat die 32 bzw. 64 kb Beschränkung nicht.

  • Hab mal alles durchflogen und poste das:
    mach doch mit

    GuiCtrlDelete(Control Id)
    $Button1 = GuiCtrlCreateButton(....)

    BSP.:

    Spoiler anzeigen
    [autoit]

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

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("test", 390, 208, -1, -1)
    $Button1 = GUICtrlCreateButton("Tiskarna", 69, 24, 97, 41, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Zapnout", 69, 78, 97, 41, $WS_GROUP)
    $Button3 = GUICtrlCreateButton("Vypnout", 69, 133, 97, 41, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    GUICtrlDelete($Button1); löscht den Button
    $Button1 = GUICtrlCreateButton("text",69,24,97,41,$WS_GROUP); Erstellt einen Button mit deinem gewünschten text!
    Case $Button2
    GUICtrlDelete($Button2); löscht den Button
    $Button2 = GUICtrlCreateButton("text",69,24,97,41,$WS_GROUP); Erstellt einen Button mit deinem gewünschten text!

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

    Case $Button3
    GUICtrlDelete($Button3); löscht den Button
    $Button3 = GUICtrlCreateButton("text",69,24,97,41,$WS_GROUP); Erstellt einen Button mit deinem gewünschten text!

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

    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    @bbm1995. Wieso willst du die Controls löschen und neue anlegen? Für was gibt es GUICtrlSetData ?

  • Also, ich habe mir eine schöne Translate-UDf geschrieben. Die werde ich bei Gelegenheit dokumentieren und veröffentlichen.