Language [UDF] v1.0

  • Hallo Liebe AutoIt'ler
    Wie einige mitbekommen haben, habe ich vor ein paar Tagen etwas im Forenteil "Talk" gepostet.
    Hier ist nun dass "End" Ergebniss.
    Aus Combination und Verstehen von 2 Möglichkeiten die mir von BugFix und Blume dargelegt wurden hab ich folgendes gescriptet.

    Eine UDF die ermöglicht das die vorgegebenen Buttons Ihre Beschrieftung / Namen durch eine ComboBox zu der Jeweiligen Wunschsprache ändert.
    Derweilen sit sie noch etwas unflexible und zu 100% noch erweiterbar, doch für den Anfang (v1.0) bin ich der Meinung, sie Euch zu "Präsentieren"

    autoit.de/wcf/attachment/18282/

    autoit.de/wcf/attachment/18257/
    autoit.de/wcf/attachment/18277/
    autoit.de/wcf/attachment/18287/

    LangUDF.au3
    [autoit]


    #cs ----------------------------------------------------------------------------
    |
    AutoIt Version: 3.3.8.1 |
    Author: Pascal Vollenweider (Skilkor) |
    |
    Script Function: |
    |
    $sPath = (@ScriptDir & '\Language\') |
    |
    _LanguageID(First ID, Last ID, GUICtrlRead($gCombo)) |
    First ID: First Variable |
    Last ID: Last Variable |
    |
    $cLang_Name[0] = Dutch.lang |
    $cLang_Name[1] = English.lang |
    $cLang_Name[2] = French.lang |
    $cLang_Name[3] = German.lang |
    $cLang_Name[4] = Italian.lang |
    $cLang_Name[5] = Portuguese.lang |
    $cLang_Name[6] = Spanish.lang |
    $cLang_Name[7] = Swedish.lang |
    |
    $Lang_File_List[0] = Numbers / Anzahl |
    $Lang_File_List[1] = Dutch.lang |
    $Lang_File_List[2] = English.lang |
    $Lang_File_List[3] = French.lang |
    $Lang_File_List[4] = German.lang |
    $Lang_File_List[5] = Italian.lang |
    $Lang_File_List[6] = Portuguese.lang |
    $Lang_File_List[7] = Spanish.lang |
    |
    $lRead[1][0] = $cLang |
    $lRead[2][0] = $cNew |
    $lRead[3][0] = $cNext |
    $lRead[4][0] = $cBack |
    $lRead[5][0] = $cOpen |
    $lRead[6][0] = $cSave |
    $lRead[7][0] = $cSaveAs |
    $lRead[8][0] = $cClose |
    $lRead[9][0] = $cOpt |
    |
    $lRead[1][1] = Sprache / Lang |
    $lRead[2][1] = Neu / New |
    $lRead[3][1] = Weiter / Next |
    $lRead[4][1] = Zurück / Back |
    $lRead[5][1] = Öfnen / Öffnen |
    $lRead[6][1] = Speichern / Save |
    $lRead[7][1] = Speichern unter / SaveAs |
    $lread[8][1] = Schliessen / Close |
    $lRead[9][1] = Optionen / Option |
    |
    $idArray[0] = ID 3 |
    $idArray[1] = ID 4 |
    $idArray[2] = ID 5 |
    $idArray[3] = ID 6 |
    $idArray[4] = ID 7 |
    $idArray[5] = ID 8 |
    $idArray[6] = ID 9 |
    $idArray[7] = ID 10 |
    $idArray[8] = ID 11 |
    |
    #ce ----------------------------------------------------------------------------

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

    #region ### include ###
    #include <Array.au3>
    #include <File.au3>
    #endregion ### include ###
    ;==========
    #region ### Global ###
    #region ### Global Variables ###
    Global $sPath = (@ScriptDir & '\Language\')
    Global $sFilter = ('*.lang')
    Global $gDefault = ('Fehler')
    Global $sCombo = ''

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

    Global $lRead, $lTemp, $gCombo, $varLang, $cLang, $cNew, $cNext, $cBack, $cOpen, $cSave, $cSaveAs, $cClose, $cOpt, $idArray, $Combo_Read, $Lang_File_List
    #endregion ### Global Variables ###
    ;==========
    #region ### Global Array ###
    Global $cLang_Name[8] = ['Dutch.lang', 'English.lang', 'French.lang', 'German.lang', 'Italian.lang', 'Portuguese.lang', 'Spanish.lang', 'Swedish.lang']
    Global $Lang__Name[8] = ['Dutch', 'English', 'French', 'German', 'Italian', 'Portuguese', 'Spanish', 'Swedish']
    Global $Lang_Names = 'Dutch|English|French|German|Italian|Portuguese|Spanish|Swedish'
    Global $lInfo_Key[2] = ['Name', 'Version']
    Global $lLang_Key[9] = ['$cLang', '$cNew', '$cNext', '$cBack', '$cOpen', '$cSave', '$cSaveAs', '$cClose', '$cOpt']
    Global $lLang_Key2[9] = ['$cLang', '$cNew', '$cNext', '$cBack', '$cOpen', '$cSave', '$cSaveAs', '$cClose', '$cOpt']

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

    Global $lInfo_ValueDut[2] = [$cLang_Name[0], '1.0']
    Global $lInfo_ValueEng[2] = [$cLang_Name[1], '1.0']
    Global $lInfo_ValueFre[2] = [$cLang_Name[2], '1.0']
    Global $lInfo_ValueGer[2] = [$cLang_Name[3], '1.0']
    Global $lInfo_ValueIta[2] = [$cLang_Name[4], '1.0']
    Global $lInfo_ValuePor[2] = [$cLang_Name[5], '1.0']
    Global $lInfo_ValueSpa[2] = [$cLang_Name[6], '1.0']
    Global $lInfo_ValueSwe[2] = [$cLang_Name[7], '1.0']
    Global $lInfo_cValue[8] = [$lInfo_ValueDut, $lInfo_ValueEng, $lInfo_ValueFre, $lInfo_ValueGer, $lInfo_ValueIta, $lInfo_ValuePor, $lInfo_ValueSpa, $lInfo_ValueSwe]

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

    Global $ValueDut[9] = ['sprog', 'nyt', 'mere', 'Tilbage', 'åbent', 'Gem', 'Gem til', 'Luk', 'Indstillinger']
    Global $ValueEng[9] = ['Laguage', 'New', 'Next', 'Back', 'Open', 'Save', 'SaveAs', 'Close', 'Option']
    Global $ValueFre[9] = ['Langue', 'Nouveau', 'Suivant', 'Retour', 'Open', 'Save', 'Enregistrer sous', 'Fermer', 'options']
    Global $ValueGer[9] = ['Sprache', 'Neu', 'Weiter', 'Zurück', 'Öffnen', 'Speichern', 'Speichern unter', 'Schliessen', 'Optionen']
    Global $ValueIta[9] = ['lingua', 'nuovo', 'di più', 'indietro', 'aperto', 'salvare', 'Salva', 'chiudere', 'Opzioni']
    Global $ValuePor[9] = ['linguagem', 'novo', 'mais', 'de volta', 'abrir', 'salvar', 'Guardar para', 'fechar', 'opções']
    Global $ValueSpa[9] = ['Idioma', 'Nuevo', 'Próximo', 'Espalda', 'Abierto', 'Ahorrar', 'Ahorrar nuevo', 'Cerrar', 'Opción']
    Global $ValueSwe[9] = ['språk', 'nytt', 'mer', 'Tillbaka', 'öppet', 'Spara', 'Spara till', 'Stäng', 'alternativ']
    Global $lValue[8] = [$ValueDut, $ValueEng, $ValueFre, $ValueGer, $ValueIta, $ValuePor, $ValueSpa, $ValueSwe]

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

    #endregion ### Global Array ###
    #endregion ### Global ###
    ;==========
    #region ### Suche nach .lang Dateien ###
    $Lang_File_List = _FileListToArray($sPath, $sFilter, 1) ;Gibt die Namen der gefundenen .lang Files zurück
    #endregion ### Suche nach .lang Dateien ###
    ;==========
    #region ### @OSLang ###
    $OSLang = _Language()
    Func _Language() ;Abfrage der Sprache des Betriebssystemes
    Select
    Case StringInStr("0413 0813", @OSLang)
    Return "Dutch"

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

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

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

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

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

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

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

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

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

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

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

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

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

    Case StringInStr("0416 0816", @OSLang)
    Return "Portuguese"

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

    Case StringInStr("040a 080a 0c0a 100a 140a 180a 1c0a 200a 240a 280a 2c0a 300a 340a 380a 3c0a 400a 440a 480a 4c0a 500a", @OSLang)
    Return "Spanish"

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

    Case StringInStr("041d 081d", @OSLang)
    Return "Swedish"

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

    Case Else
    Return "Other (can't determine with @OSLang directly)"

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

    EndSelect
    EndFunc ;==>_Language
    #endregion ### @OSLang ###
    ;==========
    #region ### Language Set ###
    $SysLangRead = _SysLangRead()
    Func _SysLangRead() ;Automatische Zuteilung der Sprache über das Auslessen der Systemsprache
    Local $iLang

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

    Switch $OSLang
    Case 'Dutch'
    $iLang = 1
    Case 'English'
    $iLang = 2
    Case 'French'
    $iLang = 3
    Case 'German'
    $iLang = 4
    Case 'Italian'
    $iLang = 5
    Case 'Portuguese'
    $iLang = 6
    Case 'Spanish'
    $iLang = 7
    Case 'Swedish'
    $iLang = 8
    EndSwitch

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

    If Not $iLang Then ;|_
    MsgBox(0, $gDefault, 'Language not Found. Set English as Standard', 5) ;| Falls die Systemsprache nicht in den .lang Files vorhanden ist, wird 'Englsih' als Standard Gesetzt
    $iLang = 2 ;|_
    EndIf

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

    If $Lang_File_List[$iLang] = $cLang_Name[$iLang - 1] Then ;| Bei übereinstimmung des Systemsprache und .lang Files
    For $i = 0 To UBound($lLang_Key) - 1 ;|
    $lRead = IniReadSection($sPath & $cLang_Name[$iLang - 1], 'Language') ;| .lang Auslessen und Key zuteilung
    Next ;|
    EndIf ;|

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

    $lRead[1][0] = $cLang ;|
    $lRead[2][0] = $cNew ;|
    $lRead[3][0] = $cNext ;|
    $lRead[4][0] = $cBack ;|Ausgelessene .lang Array zu Variablen zuteilung
    $lRead[5][0] = $cOpen ;|
    $lRead[6][0] = $cSave ;|
    $lRead[7][0] = $cSaveAs ;|
    $lRead[8][0] = $cClose ;|
    $lRead[9][0] = $cOpt ;|

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

    EndFunc ;==>_SysLangRead
    #endregion ### Language Set ###
    ;==========
    #region ### _LanguageID ###
    Func _LanguageID($id1, $id2, $_Combo_Lang) ;Funktion zur Auslessung der zugewiessenen ID's
    Local $idArray[$id2 - $id1]

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

    For $i = 0 To UBound($idArray) - 1
    $idArray[$i] = $i + $id1
    Next
    _LanguageSet($idArray, $_Combo_Lang)
    EndFunc ;==>_LanguageID
    #endregion ### _LanguageID ###
    ;==========
    #region _LanguageSet ###
    Func _LanguageSet($ID, $_Combo_Lang) ; Funktion zur Setzung der Sprache (Label / Button Beschrieftung)
    Local $sLang

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

    Switch $_Combo_Lang
    Case 'Dutch'
    $sLang = 1
    Case 'English'
    $sLang = 2
    Case 'French'
    $sLang = 3
    Case 'German'
    $sLang = 4
    Case 'Italian'
    $sLang = 5
    Case 'Portuguese'
    $sLang = 6
    Case 'Spanish'
    $sLang = 7
    Case 'Swedish'
    $sLang = 8
    EndSwitch

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

    If $_Combo_Lang = $Lang__Name[$sLang - 1] Then ; Bei übereinstimmung der ComboBox und des .lang File, werden die Key angaben der .lang gesetzt
    For $i = 0 To UBound($ID) - 1
    $ic_Read = IniRead($sPath & $cLang_Name[$sLang - 1], 'Language', $lLang_Key2[$i], '')
    GUICtrlSetData($ID[$i], $ic_Read)
    Next
    EndIf
    EndFunc ;==>_LanguageSet
    #endregion _LanguageSet ###

    [/autoit]

    autoit.de/wcf/attachment/18267/

    test.au3
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------
    #include 'LangUDF.au3'

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

    GUICreate('Test', 370, 100, -1, -1)
    #region ### Möglichkeit 1 ###
    ;~ $lRead[1][0] = GUICtrlCreateLabel('Sprache', 10, 13, 80, 17)
    ;~ $lRead[2][0] = GuiCtrlCreateButton('Neu', 100, 70, 80, 20)
    ;~ $lRead[3][0] = GuiCtrlCreateButton('Weiter', 100, 40, 80, 20)
    ;~ $lRead[4][0] = GuiCtrlCreateButton('Zurück', 190, 40, 80, 20)
    ;~ $lRead[5][0] = GuiCtrlCreateButton('Öffnen', 10, 40, 80, 20)
    ;~ $lRead[6][0] = GuiCtrlCreateButton('Speichern', 10, 70, 80, 20)
    ;~ $lRead[7][0] = GuiCtrlCreateButton('Speichern unter, 280, 70, 80, 20)
    ;~ $lRead[8][0] = GuiCtrlCreateButton('Schliessen', 190, 70, 80, 20)
    ;~ $lRead[9][0] = GuiCtrlCreateButton('Optionen', 280, 40, 80, 20)
    #endregion ### Möglichkeit 1 ###
    #region ### Möglichkeit 2 ###
    ;~ $lRead[1][0] = GUICtrlCreateLabel($lRead[1][1], 10, 13, 80, 17)
    ;~ $lRead[2][0] = GuiCtrlCreateButton($lRead[2][1], 100, 70, 80, 20)
    ;~ $lRead[3][0] = GuiCtrlCreateButton($lRead[3][1], 100, 40, 80, 20)
    ;~ $lRead[4][0] = GuiCtrlCreateButton($lRead[4][1], 190, 40, 80, 20)
    ;~ $lRead[5][0] = GuiCtrlCreateButton($lRead[5][1], 10, 40, 80, 20)
    ;~ $lRead[6][0] = GuiCtrlCreateButton($lRead[6][1], 10, 70, 80, 20)
    ;~ $lRead[7][0] = GuiCtrlCreateButton($lRead[7][1], 280, 70, 80, 20)
    ;~ $lRead[8][0] = GuiCtrlCreateButton($lRead[8][1], 190, 70, 80, 20)
    ;~ $lRead[9][0] = GuiCtrlCreateButton($lRead[9][1], 280, 40, 80, 20)
    #endregion ### Möglichkeit 2 ###
    #region ### Möglichkeit 3 ###
    $cLang = GUICtrlCreateLabel($lRead[1][1], 10, 13, 80, 17)
    $cNew = GUICtrlCreateButton($lRead[2][1], 10, 40, 80, 20)
    $cNext = GUICtrlCreateButton($lRead[3][1], 10, 70, 80, 20)
    $cBack = GUICtrlCreateButton($lRead[4][1], 100, 40, 80, 20)
    $cOpen = GUICtrlCreateButton($lRead[5][1], 100, 70, 80, 20)
    $cSave = GUICtrlCreateButton($lRead[6][1], 190, 40, 80, 20)
    $cSaveAs = GUICtrlCreateButton($lRead[7][1], 190, 70, 80, 20)
    $cClose = GUICtrlCreateButton($lRead[8][1], 280, 40, 80, 20)
    $cOpt = GUICtrlCreateButton($lRead[9][1], 280, 70, 80, 20)
    $gCombo = GUICtrlCreateCombo('', 95, 10, 80, 20)
    GUICtrlSetData($gCombo, $Lang_Names, $OSLang)
    #endregion ### Möglichkeit 3 ###
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $gCombo
    _LanguageID($cLang, $gCombo, GUICtrlRead($gCombo))
    Case $cClose
    Exit
    EndSwitch
    WEnd

    [/autoit]


    Viele werden sicher Denken "Mann wieso so Kompliziert?" nun, es gibt sicher noch Kompliziertere Wege.

    Ich Hoffe ich habe alles Nötige vorgelegt / vordeffiniert um die "udf" gut zu verwenden o. nicht vergessen. :P

    Bei Fehlern (Sei es Rechtschreibung oder unverständliche angaben der UDF) so bitte ich um Rückmeldung.
    Für Ideen und Vorschläge, sowie zusätzliche .lang Files steht die Tür immer offen, allso nur raus damit. :D

    Greez
    Skilkor

    *Edit*
    Test exe & Lang Files.zip hinzugefügt

    *Edit II*
    LanguageUDF.au3 und LanguageUDF Spoiler Aktualisiert

  • Hey CyRoX
    Danke für deine Rückmeldung :D
    Das mit den beschreibungen kann ich sicherlich noch machen :D

    Was _StringAsign angeht, so wie ich das sehe, ist es sicherlich eine Gute möglichkeit zu Kürzen oder ID's zuzu weisen.

    Ich möchte aber nicht Spezifisch ID's zuweisen, da dies dem Verwender der UDF einen grossen teil an Freiraum der Scripting art wegnehme, deswegen habe ich es auch so gemacht, das ich die ID's auslessen lasse, somit, kann der benutzer auch einfach sagen, von verlecher Variable er Beginnen und Ende möchte.

    Spoiler anzeigen
    [autoit]


    ;$cLang = First Variable
    ;$gCombo = Last Variable
    _LanguageID($cLang, $gCombo, GUICtrlRead($gCombo))

    [/autoit]


    Somit lesse ich jede Variable vom Anfang bis Ende aus und kann dem user ne gewisse freiheit geben.

    Greez

  • Schöne UDF, aber wie bereits angesprochen wurde, wäre eine Beschreibung der einzelnen Funktionen schön.
    Schau dir mal http://www.autoitscript.com/wiki/UDF-spec an wegen der Variablen Bezeichnung bei UDF´s und
    https://autoit.de/index.php?page=Thread&amp;threadID=18191 kann dir helfen,
    die Beschreibung zu den Funktionen zu erstellen

  • Hey TheLuBu
    Danke für den hinweiss :D
    Das Programm "DescribeIt" wird sicher nützlich sein.

    Allerdings denke ich nicht das ich es auf die jetzige UDF anwenden werde, da ich gestern beim verwenden der UDF was herausgefunden habe.... und das gefählt mir ganz und garnicht.
    Was ich herrausgefunden habe:
    Als ich die UDF verwenden wollte und NICHT jedes Array davon gebrauchen konnte, Setzte die UDF trotzdem alles nach reihe ein, was dazu führte das es nichtmehr die Beschriftung hatte welche vorgesehen war.

    Ergo, ich muss die gesammte UDF nocheinmal überarbeiten.
    Jetz habe ich allerdings einen vorteil, ich weiss mehr oder minder wie, da ich das wissen der "v1.0" habe.
    Es betrübt mich, dases nicht so funktioniert wie gedacht, janu, ich muss den Rückschlag wegstecken und weiter gehen ^^

    Greez