#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 ###