MULTI-IDIOMA
BASADO EN DLL DE RECURSOS

Fecha: 05/Ene/2005 (26 de Diciembre de 2004, corregido 5 Enero de 2005)

Autor: MARIO ALBERTO YOUNG ([email protected])

 


Siempre quise hacer mis apps con soporte de varios idiomas pero nunca encontré ninguna forma fácil así que me di en la tarea de investigar, así que me puse a mirar como hacia el programa de Emule(p2p) y la respuesta fue muy sencilla ellos cargan sus idiomas desde una dll que contiene solo strings y la app simplemente carga los string y los pone en los labels y en todos. Pero todo era desde C++ así que la pregunta fue ¿Como hacer eso en Visual Basic? y es muy muy sencillo con las funciones api y aquí está la respuesta de la forma que es la que pienso que es la mejor para hacer app con soporte de varios idiomas ya que la dll queda muy pequeña y su app queda de varios idiomas solo con unos cambios muy sencillos.

También se puede mejorar a su antojo. explicare las funciones que hice:

"LoadStringEx(resstring As Long, library As Long) As String" con esta función cargamos los strings desde una dll, (parametros : el ID de el string y el Long que retorna LoadLibrary) sirve con cualquier DLL que tenga string de recursos uuuujuuuuuu!

"LoadLanguage(dll_res As String)" con esta función cargo los string y los pongo en los labels, (parametros : path de la dll)

En eso se basa todo... la dll se compila sin punto de entrada para no tener nada de código solo sus strings de recursos.

Recomiendo por experiencia NO editar los recursos en el editor de recursos de VC++ ya que mete cosas que no entiendo muy bien para que o porque las pone y también en algunos casos pone los ID de recursos de forma como rara y es mejor hacerlo con un editor de texto o abrirlo como texto y NO como recursos en vc++.

Bueno eso es todo por hoy bajen el código para ver todo funcionar. Y suertes varias con sus app con varios idiomas ya que es muy fácil      :)

Requerimientos :

Compilador de C++ (yo use el .net7 pero sirve cualquiera)

Visual Basic 5/6

NOTA: el compilador de C++ no es para programar en C++ es solo para editar y compilar, no se asusten     :P


ir al índice

Fichero con el código de ejemplo: mario_multi_lang.zip - 12 KB