Aplicación Multilenguaje [ECHO]
Publicado: 25 Nov 2014, 03:30
Un buen día con todos, he realizado un pequeño ejemplo de una aplicación MULTILENGUAJE, incluye tambien para mensajes, solo está para ingles y español pero es adaptable para los idiomas que se quieran agregar al ini, adjunto el archivo INI.
No he comentado el código pero ESPERO que lo entiendan, no tengo casi mucho tiempo.

De seguro existe una mejor manera de hacerlo, espero que pongan ejemplos
Saludos...
No he comentado el código pero ESPERO que lo entiendan, no tengo casi mucho tiempo.

Código: Seleccionar todo
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>
#include <GuiTab.au3>
Opt("GUICloseOnESC", 0) ; no cierra la ventana al presionar ESC
Opt("GUIOnEventMode", 1)
Global $guiPrincipal, $cmbIdioma, $btnMensaje, $lblTexto1, $lblLenguaje, $tabPrincipal, $tabItemLista, $tabItemValores, $tabItemFinal
Global $grupo, $rdoOpcion1, $rdoOpcion2, $menu, $mItemAbrir, $menuAyuda, $mItemInformacion, $mItemSalir,$menuVer, $mItemStatus
$guiPrincipal = GUICreate("Ventana MultiIdioma", 551, 307, 205, 147)
$cmbIdioma = GUICtrlCreateCombo("Español", 392, 56, 145, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
GUICtrlSetData($cmbIdioma, "English")
$btnMensaje = GUICtrlCreateButton("Mensaje", 368, 224, 139, 25)
$lblTexto1 = GUICtrlCreateLabel("Este es un pequeño ejemplo en el que se trata de mostrar una ventana multi idioma", 8, 32, 395, 17)
$lblLenguaje = GUICtrlCreateLabel("Seleccione el idioma", 440, 32, 101, 17)
$tabPrincipal = GUICtrlCreateTab(16, 64, 329, 185)
$tabItemLista = GUICtrlCreateTabItem("Lista")
$tabItemValores = GUICtrlCreateTabItem("Valores")
GUICtrlSetState(-1, $GUI_SHOW)
$tabItemFinal = GUICtrlCreateTabItem("Final")
GUICtrlCreateTabItem("")
$grupo = GUICtrlCreateGroup("Grupo Ejemplo", 352, 112, 185, 105)
$rdoOpcion1 = GUICtrlCreateRadio("Opcion Uno", 376, 144, 113, 17)
$rdoOpcion2 = GUICtrlCreateRadio("Opcion dos", 376, 168, 113, 17)
GUICtrlSetState($rdoOpcion2, $GUI_CHECKED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$menu = GUICtrlCreateMenu("&Archivo")
$mItemAbrir = GUICtrlCreateMenuItem("Abrir", $menu)
GUICtrlSetState(-1, $GUI_DEFBUTTON)
$menuAyuda = GUICtrlCreateMenu("Ayuda")
$mItemGuardar = GUICtrlCreateMenuItem("Guardar", $menu)
GUICtrlSetState(-1, $GUI_DISABLE)
$mItemInformacion = GUICtrlCreateMenuItem("Informacion", $menuAyuda)
$mItemSalir = GUICtrlCreateMenuItem("Salir", $menu)
GUICtrlCreateMenuItem("", $menu, 2) ; crea una línea separadora
$menuVer = GUICtrlCreateMenu("Ver", -1, 1) ; es creado antes del menú "?"
$mItemStatus = GUICtrlCreateMenuItem("Statusbar", $menuVer)
GUICtrlSetState(-1, $GUI_CHECKED)
_cargarEventos()
;cargo el idioma que haya utilizado la ultima vez---------------------------
If Iniread(@ScriptDir & "\idioma.ini", "Idioma", "english", "") = 1 Then
_GUICtrlComboBox_SelectString($cmbIdioma,"English"); selecciono el item
_cargarIdioma("English")
EndIf
;---------------------------------------------------------------------------
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func _cargarEventos()
GUISetOnEvent($GUI_EVENT_CLOSE, "_cerrarInterfaz")
GUICtrlSetOnEvent($cmbIdioma, '_idiomaSeleccion')
GUICtrlSetOnEvent($btnMensaje, '_mensaje')
GUICtrlSetOnEvent($mItemSalir, '_cerrarInterfaz')
GUICtrlSetOnEvent($tabPrincipal, '_clicTab')
EndFunc ;==>_cargarEventos
Func _clicTab()
If _GUICtrlTab_GetCurSel($tabPrincipal) = 0 Then MsgBox(64, "Nombre Programa", _mensajesMultiIdiomas("clicTab0"), -1, $guiPrincipal)
If _GUICtrlTab_GetCurSel($tabPrincipal) = 1 Then MsgBox(64, "Nombre Programa", _mensajesMultiIdiomas("clicTab1"), -1, $guiPrincipal)
If _GUICtrlTab_GetCurSel($tabPrincipal) = 2 Then MsgBox(64, "Nombre Programa", _mensajesMultiIdiomas("clicTab2"), -1, $guiPrincipal)
EndFunc
Func _idiomaSeleccion()
If GUICtrlRead($cmbIdioma) = "español" Then
IniWrite(@ScriptDir & "\idioma.ini", "Idioma", "español", "1")
IniWrite(@ScriptDir & "\idioma.ini", "Idioma", "english", "0")
_cargarIdioma("Español")
ElseIf GUICtrlRead($cmbIdioma) = "English" Then
IniWrite(@ScriptDir & "\idioma.ini", "Idioma", "español", "0")
IniWrite(@ScriptDir & "\idioma.ini", "Idioma", "english", "1")
_cargarIdioma("English")
EndIf
EndFunc ;==>_idiomaSeleccion
Func _cargarIdioma($idiomaSeleccionado)
Local $controles[23] = [$guiPrincipal, $btnMensaje, $lblTexto1 _
, $lblLenguaje, $tabItemLista, $tabItemValores, $tabItemFinal _
, $grupo, $rdoOpcion1, $rdoOpcion2, $menu, $mItemAbrir, $menuAyuda, $mItemGuardar, $mItemInformacion _
, $mItemSalir, $menuVer, $mItemStatus]
Local $claveYvalor = IniReadSection(@ScriptDir & "\idioma.ini", $idiomaSeleccionado)
For $i = 1 To $claveYvalor[0][0]
For $i = 0 To 22
GUICtrlSetData($controles[$i], $claveYvalor[$i + 1][1])
Next
Next
EndFunc ;==>_cargarIdioma
Func _mensaje()
If GUICtrlRead($rdoOpcion1) = $GUI_CHECKED Then MsgBox(64, "Nombre Programa", _mensajesMultiIdiomas("mensajeClicOpcion1"), -1, $guiPrincipal)
If GUICtrlRead($rdoOpcion2) = $GUI_CHECKED Then MsgBox(64, "Nombre Programa", _mensajesMultiIdiomas("mensajeClicOpcion2"), -1, $guiPrincipal)
EndFunc ;==>_mensaje
Func _mensajesMultiIdiomas($razonDeMensaje)
Local $textoMensaje
Local $claveYvalor = IniReadSection(@ScriptDir & "\idioma.ini", GuiCtrlRead($cmbIdioma))
For $i = 1 To $claveYvalor[0][0]
If $claveYvalor[$i][0] = $razonDeMensaje Then
$textoMensaje = $claveYvalor[$i][1]
ExitLoop
EndIf
Next
Return $textoMensaje
EndFunc ;==>_mensajesMultiIdiomas
Func _cerrarInterfaz()
Exit
EndFunc ;==>_cerrarInterfaz

Saludos...
