He "aseado" un poco el código, ya que parece que estamos ante un posible código-útil
Código: Seleccionar todo
; ------------------------------------------------------------------------------------
; Uso de idiomas utilizando ideas del foro Autoit.es (Ximorro, Jamaro Nov-2011)
; ------------------------------------------------------------------------------------
; http://www.emesn.com/autoitforum/viewtopic.php?p=12225#p12138
; http://www.emesn.com/autoitforum/viewtopic.php?f=12&t=2938&p=12124&hilit=idioma#p12057
; ------------------------------------------------------------------------------------
; Includes
#include <file.au3>
#include <array.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
Global $Form1, $Tab1, $TabSheet1, $TabSheet2, $TabSheet3, $TabSheet4, $Button1, $Button2, $Button3, $Button4, $Combo1,$Label1,$Label2
Global $tForm1, $tTabSheet1, $tTabSheet2, $tTabSheet3, $tTabSheet4, $tButton1, $tButton2, $tButton3, $tButton4, $tLabel1
Global $mensaje, $Titulo, $error1, $textolargo, $Nombre, $Apellido, $Profesion
; -------------------- INICIO CARGA DE IDIOMAS --------------------
; Se define los archivos de idioma.
Global $ArchIdiomaPpal=@ScriptDir &"\"&"leng_sp.txt" ; Archivo de idioma que se utiliza por defecto, en caso de no existir alguna definición en el idioma seleccionado
Global $ArchIdiomaUsado=@ScriptDir &"\"&"leng_en.txt" ; Archivo de idioma seleccionado
Global $aRecords ; datos leidos del archivo de idioma
; Se carga los idiomas Defecto y Usado. De esta manera el idioma "usado" sustituye al "defecto" en el
CargaIdioma($ArchIdiomaPpal)
CargaIdioma($ArchIdiomaUsado)
; -------------------- FIN CARGA DE IDIOMAS --------------------
#Region ### START Koda GUI section ### Form=C:\Documents and Settings\Usuario\Mis documentos\Javier\AutoIt_Archivos\_XMLDomWrapper\MiValenbisi\PruebasIdioma\Prueba_Idioma.kxf
$Form1 = GUICreate("Form1", 624, 450, 192, 114)
$Tab1 = GUICtrlCreateTab(40, 30, 541, 381)
$TabSheet1 = GUICtrlCreateTabItem("TabSheet1")
$Button1 = GUICtrlCreateButton("Button1", 180, 260, 261, 61)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Label1 = GUICtrlCreateLabel("Label1", 100, 90, 436, 36)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Label2 = GUICtrlCreateLabel("Label2", 100, 140, 436, 36)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$TabSheet2 = GUICtrlCreateTabItem("TabSheet2")
$Button2 = GUICtrlCreateButton("Button2", 200, 270, 221, 61)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$TabSheet3 = GUICtrlCreateTabItem("TabSheet3")
$Button3 = GUICtrlCreateButton("Button3", 190, 280, 221, 61)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$TabSheet4 = GUICtrlCreateTabItem("TabSheet4")
$Button4 = GUICtrlCreateButton("Button4", 210, 290, 201, 51)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
GUICtrlCreateTabItem("")
$Combo1 = GUICtrlCreateCombo("", 440, 0, 131, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
; --- Modificación del GUI ---
GUICtrlSetData($Combo1, "leng_en.txt|leng_sp.txt", "leng_en.txt") ; Valores de los idiomas en el combo
ActualizaTextos() ; Se deja el GUI con los nombres creados en KODA y con esta función se actualiza los textos.
; --- Fin Modificación del GUI ---
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1, $Button2, $Button3, $Button4
Exit
Case $Combo1
$ArchIdiomaUsado=@ScriptDir &"\"&GUICtrlRead($Combo1)
ConsoleWrite(@ScriptLineNumber & " - " & "El lenguaje usado actual es: " & $ArchIdiomaUsado & @CRLF & @CRLF)
CargaIdioma($ArchIdiomaUsado)
GUISetState(@SW_SHOW)
ActualizaTextos()
EndSwitch
WEnd
Func ActualizaTextos()
WinSetTitle($Form1,"",$tForm1) ; El nombre de la ventana no se puede cambiar con GuiCtrlSetData
GUICtrlSetData($TabSheet1,$tTabSheet1)
GUICtrlSetData($Button1,StringFormat($tButton1,$tTabSheet1))
GUICtrlSetData($Label1,StringFormat($mensaje,$Titulo,$tLabel1,$error1))
GUICtrlSetData($Label2,StringFormat($textolargo,$Nombre,$Apellido,$Profesion))
GUICtrlSetData($TabSheet2,$tTabSheet2)
GUICtrlSetData($Button2,StringFormat($tButton2,$tTabSheet2))
GUICtrlSetData($TabSheet3,$tTabSheet3)
GUICtrlSetData($Button3,StringFormat($tButton3,$tTabSheet3))
GUICtrlSetData($TabSheet4,$tTabSheet4)
GUICtrlSetData($Button4,StringFormat($tButton4,$tTabSheet4))
EndFunc
Func CargaIdioma($ArchIdioma)
; Lee el archivo de texto guardándolo en una matriz
If Not _FileReadToArray($ArchIdioma,$aRecords) Then
MsgBox(4096,"Error", " Error leyendo archivo a Matriz error:" & @error)
Exit
EndIf
;_ArrayDisplay($aRecordsUsado,@ScriptLineNumber &" Elementos leidos")
; Separa los datos leidos del archivo clave=texto
For $x=1 to UBound($aRecords)-1
$array=StringSplit($aRecords[$x],"=")
Assign($array[1],$array[2],2) ; Crea la variable de clave/valor
ConsoleWrite(@ScriptLineNumber & " - " & $array[1] & " - " & @tab & $array[2] & @crlf)
Next
;_ArrayDisplay($aRecordsU,@ScriptLineNumber &" Elementos separados")
EndFunc
Supongo que la única manera es creando con Global o Dim TODAS las variables, no pudiéndose hacer automáticamente conforme lo lea del archivo de idioma....