au32multilangau3 Hilfe

  • Ich bin grade am erstellen eines Scripts, welches aus normalen AutoIt-Skript solche macht, die multilingual sind.
    Funktionieren soll das so:
    Programm liest Zeile für Zeile den Quelltext, ersetzt alle Strings, die in Anführungszeichen sind durch IniReads und schreibt die zugehörigen Texte in eine .ini
    Leider funktioniert das nicht so, wie ich mir das denke.

    Spoiler anzeigen
    [autoit]


    #include <String.au3>
    $file=FileOpenDialog("Datei auswählen",@ScriptDir,"AutoIt-Skripte (*.au3)",3)
    dim $i=0
    dim $count=1
    While True
    $i +=1
    ;~ MsgBox(0,"",$i)
    $oldline=FileReadLine($file,$i)
    MsgBox(0,"",$oldline)
    If @error = -1 Then ExitLoop
    $newline=$oldline
    ;~ While True
    $found=_StringBetween($oldline,"""","""")
    If not IsArray($found) Then MsgBox(0,"",$found)
    If IsArray($found) Then MsgBox(0,"",$found[0])
    ;~ MsgBox(0,"",$found[0])
    ;~ If @error Then ContinueLoop
    ;~ MsgBox(0,"","Vor iniwrite")
    If IsArray($found) Then IniWrite("lang.ini","german",$count,$found[0])
    $newline=StringRegExpReplace($oldline,"""*""","IniRead(""lang.ini"",""german""," & $count & ",""Error in language file"")")
    $count +=1
    ;~ WEnd
    ;~ MsgBox(0,"","multilang-" & $file)
    FileWriteLine($file & ".multilang.au3",$newline)
    WEnd

    [/autoit]


    Sorry für die vielen auskommentierten Befehle, ich bin noch am rumprobieren.
    Aktuell hat er natürlich noch Probleme mit mehreren Strings in einer Zeile, oder gar Anführungszeichen innerhalb von Strings.
    Er schreibt korrekt die Daten in die Ini-Datei, nur das ersetzen klappt nicht so, wie ich das möchte.
    Wo ist der Fehler?

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

  • So?

    Spoiler anzeigen
    [autoit]

    $file = FileOpenDialog("Datei auswählen", @ScriptDir, "AutoIt-Skripte (*.au3)", 3)
    If Not @error Then
    $file2 = FileRead($file)
    FileDelete($file)
    FileDelete("lang.ini")
    $file3 = StringRegExp($file2, """(.+?)""", 3)
    For $i = 0 To UBound($file3) - 1
    IniWrite("lang.ini", "german", $i, $file3[$i])
    $file2 = StringReplace($file2, '"' & $file3[$i] & '"', 'IniRead("lang.ini","german",' & $i & ',"Error in language file")')
    Next
    FileWrite($file, $file2)
    EndIf

    [/autoit]
  • Nice.
    Scheint zu funktionieren...
    leicht geändert...:

    [autoit]

    $file = FileOpenDialog("Datei auswählen", @ScriptDir, "AutoIt-Skripte (*.au3)", 3)
    $lang=InputBox("Sprache auswählen","In welcher Sprache ist dieses Programm?","german")
    If Not @error Then
    $file2 = FileRead($file)
    FileDelete($file)
    FileDelete("lang.ini")
    $file3 = StringRegExp($file2, """(.+?)""", 3)
    For $i = 0 To UBound($file3) - 1
    IniWrite("lang.ini", $lang, $i, $file3[$i])
    $file2 = StringReplace($file2, '"' & $file3[$i] & '"', 'IniRead("lang.ini",$lang,' & $i & ',"Error in language file")')
    Next
    $file2='$lang="german"' & @CRLF & $file2
    FileWrite(StringTrimRight($file,4) & " - multilang.au3", $file2)
    EndIf

    [/autoit]

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

  • Hehe super! Aber wenn man da eigene Script auswählt gibts Errors :rofl: ähm die Variablen der IniReads und so in den ' ' dürfen nicht berücksichtigt werden oder? Oder an was liegts?