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
#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 ----------------------------------------------------------------------------
#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 = ''
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']
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]
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]
#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"
Case StringInStr("0409 0809 0c09 1009 1409 1809 1c09 2009 2409 2809 2c09 3009 3409", @OSLang)
Return "English"
Case StringInStr("040c 080c 0c0c 100c 140c 180c", @OSLang)
Return "French"
Case StringInStr("0407 0807 0c07 1007 1407", @OSLang)
Return "German"
Case StringInStr("0410 0810", @OSLang)
Return "Italian"
Case StringInStr("0414 0814", @OSLang)
Return "Norwegian"
Case StringInStr("0415", @OSLang)
Return "Polish"
Case StringInStr("0416 0816", @OSLang)
Return "Portuguese"
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"
Case StringInStr("041d 081d", @OSLang)
Return "Swedish"
Case Else
Return "Other (can't determine with @OSLang directly)"
EndSelect
EndFunc ;==>_Language
#endregion ### @OSLang ###
;==========
#region ### Language Set ###
$SysLangRead = _SysLangRead()
Func _SysLangRead() ;Automatische Zuteilung der Sprache über das Auslessen der Systemsprache
Local $iLang
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
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
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 ;|
$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 ;|
EndFunc ;==>_SysLangRead
#endregion ### Language Set ###
;==========
#region ### _LanguageID ###
Func _LanguageID($id1, $id2, $_Combo_Lang) ;Funktion zur Auslessung der zugewiessenen ID's
Local $idArray[$id2 - $id1]
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
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
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.de/wcf/attachment/18267/
test.au3
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.8.1
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
#include 'LangUDF.au3'
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()
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $gCombo
_LanguageID($cLang, $gCombo, GUICtrlRead($gCombo))
Case $cClose
Exit
EndSwitch
WEnd
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.
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.
Greez
Skilkor
*Edit*
Test exe & Lang Files.zip hinzugefügt
*Edit II*
LanguageUDF.au3 und LanguageUDF Spoiler Aktualisiert