elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  -
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: -  (Leído 4,213 veces)
xadap
Visitante


Email
-
« en: 28 Agosto 2005, 18:02 pm »

-


« Última modificación: 1 Septiembre 2021, 09:00 am por __ann » En línea

Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: multilenguaje al estilo amsn?
« Respuesta #1 en: 29 Agosto 2005, 04:38 am »

En VB es muy sencillo, creas un archivo de recursos y luego creas las tablas de cadenas para cada idioma.

Luego cargas las cadenas usando LoadResString y carga la cadena del idioma que tenga la máquina en donde se ejecuta el programa. Si el idioma de la computadora no está definido entonces usa el idioma del programa.

Ando por dial up así que no tengo mucho tiempo, en todo caso mañana pongo un ejemplo más claro.

Saludos.


En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
xadap
Visitante


Email
Re: multilenguaje al estilo amsn?
« Respuesta #2 en: 29 Agosto 2005, 19:34 pm »

-
« Última modificación: 1 Septiembre 2021, 09:17 am por __ann » En línea

programatrix


Desconectado Desconectado

Mensajes: 3.287


Ver Perfil WWW
Re: multilenguaje al estilo amsn?
« Respuesta #3 en: 29 Agosto 2005, 20:39 pm »

Creas varios ficheros llamado:
Español, Inglés, Frances.
Y pones por ejemplo en el de español:
Este es mi programa
Es el mejor
Es bonito
Y en el de ingles:
This is my program
It`s the best
Is beutefull
Dependiendo de lo que hay escogido el user abes el fichero de idiomas para modo lectura vas obteniendo linea por linea y la metes en una variable. Y luego vas sacandolo.
¿Que no sabes acceder a un fichero modo lectura?
Supergoogle seguro que te ayuda  ;)
Saludos  :D
En línea

xadap
Visitante


Email
Re: multilenguaje al estilo amsn?
« Respuesta #4 en: 30 Agosto 2005, 00:33 am »

-
« Última modificación: 1 Septiembre 2021, 09:17 am por __ann » En línea

Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: multilenguaje al estilo amsn?
« Respuesta #5 en: 30 Agosto 2005, 01:18 am »

1. Agregas un nuevo archivo de recursos (Proyecto -> Agregar archivo de recursos)

2. En el explorador de proyectos vas a Documentos Relacionados y haces doble click en el archivo de recursos, entonces se abre el editor de recursos.

Debería aparecerte algo como esto:



3. En la barra de herramientas vas a ver un icono con las letras "abc", ese ícono corresponde a las tablas de cadenas, haces click y se te abre el editor de cadenas.

El editor de cadenas es una tabla compuesta por dos columnas como mínimo, la primera es el id. que es el identificador de recurso, con ese id se lo reconocerá dentro del programa en la llamada a LoadResString. La otra columna indica el idioma de la cadena. De manera predeterminada va a estar el idioma de la máquina en donde se ejecuta el VB.

4. El segundo icono de la barra de herramientas del editor de cadenas también tiene el icono "abc", esto te permite crear una nueva tabla de cadenas. Hace click y luego seleccionas el idioma que querés que tenga la nueva tabla de cadenas, luego comienzas a escribir las cadenas en ese idioma.

Cuando termines cerrás la tabla de cadenas y guardas el archivo de recursos desde el editor de recursos (icono del diskette :P).

Fijate que en la parte de Tabla de cadenas (String table ya que tengo el VB en inglés) te aparecen dos, la predeterminada (idioma de la pc) no especifica nada, en las demás especifica en qué idioma son.

Si le das doble click a cualquiera de las tablas te va a volver a abrir el editor de cadenas, pero en este caso no te aparecerán dos columnas sino tres, el ID, el idioma predeterminado y el otro que creaste, en este caso Inglés (Estados Unidos).

La siguiente imagen ilustra lo que digo (una imagen vale más que mil palabras xD)



Esto y la función LoadResString es lo único que necesitamos para hacer un idioma multilenguaje :). Fijate el Id., en este caso es 101, este identificador es único para las dos cadenas sólo que al llamar a LoadResString especificando el ID 101 devolverá la cadena que corresponda al idioma de la pc en donde se ejecuta, o de lo contrario la predeterminada (en mi caso es Español (Argentina)).

Entonces yendo al código sería así:

Código:
Private Sub Form_Load()
  lblCaption = LoadResString(101)
End Sub

En el caso anterior lo que hace es mostrar en la etiqueta lblCaption lo que se encuentra en la cadena con el ID 101, pero el idioma depende del que esté en la pc que se ejecute. Si el idioma de la máquina en donde se ejecuta es Inglés (Estados Unidos) entonces mostrará "This is a string", en el caso que el idioma no esté definido en la tabla de cadenas mostrará el predeterminado, es decir "Esto es una cadena".

Ahora sería incómodo cargar en cada control la cadena que le correponde, se haría un código muy largo pero eso se puede solucionar de una forma sencilla, y en realidad es algo muy útil cuando no se quiere andar agregando código cuando se agrega un control.

Se puede usar la propiedad Tag de cada control para almacenar el Id de recurso, y cuando se carga el formulario cargar todas las cadenas de cada control usando la colección Controls del formulario.

Por ejemplo, creamos 5 etiquetas no importa el nombre, a la propiedad Tag de cada una le ponemos 101, 102, 103, 104, 105 respectivamente. Luego en la tabla de cadenas escribimos las cadenas para cada una de esas etiquetas, siempre utilizando ese Identinficador.

Entonces usando el siguiente código al inicio del formulario cargará las cadenas automáticamente:

Código:
Private Sub Form_Load()
        Dim csControl

  For Each csControl In Controls
    If TypeOf csControl Is Label Then
      'Si el control es un control Label
      '
      If CStr(csControl.Tag) <> vbNullString Then
        'Si la propiedad tag no está vacía, es decir que contiene el id.
        '
        csControl.Caption = LoadResString(Val(csControl.Tag))
      End If
    End If
  Next
End Sub

Y de esta manera nunca más tendremos que agregar otro código, sólo especificar el id de cadena en la propiedad Tag de cada control Label que queramos. Si fuera un TextBox es casi lo mismo, pero supongo que te darás cuenta como hacerlo ;).

Saludos.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
xadap
Visitante


Email
Re: multilenguaje al estilo amsn?
« Respuesta #6 en: 30 Agosto 2005, 21:45 pm »

-
« Última modificación: 1 Septiembre 2021, 09:17 am por __ann » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como se llaman este estilo de imagenes? (otro estilo XD) « 1 2 »
Diseño Gráfico
Jnex 16 11,756 Último mensaje 18 Marzo 2009, 02:16 am
por JERRY110982
adjuntar fotos en amsn ubuntu 10.4
GNU/Linux
edu z 7 3,960 Último mensaje 6 Mayo 2010, 18:35 pm
por Festor
Mi cam se ve blanco -AMSN & OpenSuse (SOLUCIONADO en amsn en msn no)
Dudas Generales
usuario oculto 0 3,648 Último mensaje 8 Julio 2010, 23:35 pm
por usuario oculto
Amsn no me carga...
Mensajería
rdzlcs 1 3,500 Último mensaje 16 Diciembre 2010, 14:32 pm
por Axus
amsn « 1 2 3 »
GNU/Linux
<<<-Basura->>> 20 12,442 Último mensaje 19 Mayo 2011, 22:15 pm
por Foxy Rider
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines