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) (Moderador: kub0x)
| | | |-+  Trabajar con Multilenguaje interno de VB.NET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Trabajar con Multilenguaje interno de VB.NET  (Leído 2,629 veces)
P4nd3m0n1um


Desconectado Desconectado

Mensajes: 1.419



Ver Perfil
Trabajar con Multilenguaje interno de VB.NET
« en: 14 Noviembre 2016, 19:53 pm »

Hace tiempo había visto que se podían crear múltiples formularios con diferentes idiomas para hacer traducciones de nuestro proyecto, pero no doy bien con su buen uso, o quizás sea algo muy beta, ya que tengo un programa que actualmente se traduce con un archivo .ini que tiene toda la información de las palabras utilizadas y quería utilizar el multilenguaje para evitar usar un archivo externo.

Creo un proyecto nuevo y agrego:

Código
  1. Language = "Seleccionar.." (Idioma a Traducir) en este caso EN y ES
  2. Localizable = True

Coloco dos botones uno que pasa al Español y otro al Ingles..

Imports System.Globalization
Imports System.ComponentModel
 
Código
  1. Public Class Form1
  2.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  3.        ''español
  4.        Dim l As New CultureInfo("es", True)
  5.        Dim resources As ComponentResourceManager = New ComponentResourceManager(Me.GetType)
  6.        For Each c As Control In Me.Controls
  7.            resources.ApplyResources(c, c.Name, l)
  8.        Next c
  9.    End Sub
  10.  
  11.    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  12.        ''ingles
  13.        Dim l As New CultureInfo("en", True)
  14.        Dim resources As ComponentResourceManager = New ComponentResourceManager(Me.GetType)
  15.        For Each c As Control In Me.Controls
  16.            resources.ApplyResources(c, c.Name, l)
  17.        Next c
  18.    End Sub
  19. End Class

y funciona sin problemas, ahora aplico lo mismo en un formulario de un proyecto que tiene 30 formularios más y no funciona..



En línea

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Trabajar con Multilenguaje interno de VB.NET
« Respuesta #1 en: 15 Noviembre 2016, 11:20 am »

Accede a 'Propiedades de proyecto' en el menú 'PROYECTO' y selecciona Recursos

Selecciona 'Cadenas'

En la columna 'Nombre',  en la primera fila pones 'Button1_Spanish' y en Valor pones 'Examinar'

En la columna Nombre, en la segunda fila pones 'Button2_English' yen Valor pones "Browse'

Ahora para obtener la cadena pones:
Código
  1.    Button1.Text = My.Resources.Button1_English

Código
  1.    Button1.Text = My.Resources.Button1_Spanish




También puedes acceder a los recursos desde el Explorador de soluciones.

haz clic en 'Mostrar todos los archivos'

Abre 'MyProyect'

Haz doble clic en Resources.resx



Para crear recursos desde código

Recursos de cadenas/Crear recursos mediante código



EJEMPLO
Crea cadenas en el recurso en tiempo de ejecución.
Código
  1. Imports System
  2. Imports System.Collections
  3. Imports System.Resources
  4.  
  5. Public Class Form1
  6.    Public Sub New()
  7.        'Añade cadenas al registro en tiempo de ejecución
  8.        MyClass.InitializeComponent()
  9.        ' First create the resource file and add strings.
  10.        Dim rw As ResourceWriter = New ResourceWriter("sample.resources")
  11.        rw.AddResource("4564", "Examinar")
  12.        rw.AddResource("4565", "Browse")
  13.        rw.AddResource("Title_Form2", "Diálogo")
  14.        rw.Close()
  15.    End Sub
  16.  
  17.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  18.        'Obtiene las cadenas del registro
  19.        Dim rr As ResourceReader = New ResourceReader("sample.resources")
  20.        Dim de As IDictionaryEnumerator = rr.GetEnumerator()
  21.        'Obtiene las cadenas en orden de enumeración
  22.        While de.MoveNext
  23.            Select Case de.Key.ToString
  24.                Case "4564" : MessageBox.Show(de.Value.ToString)
  25.                Case "4565" : MessageBox.Show(de.Value.ToString)
  26.            End Select
  27.        End While
  28.        rr.Close()
  29.  
  30.        'Abre el form2
  31.        Form2.ShowDialog()
  32.    End Sub
  33. End Class
  34. Public NotInheritable Class Form2 : Inherits Form
  35.  
  36.    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  37.        Dim rr As ResourceReader = New ResourceReader("sample.resources")
  38.        Dim de As IDictionaryEnumerator = rr.GetEnumerator()
  39.        'Obtiene la cadena para el título del formulario 2
  40.        While de.MoveNext
  41.            Select Case de.Key.ToString
  42.                Case "Title_Form2" : Me.Text = de.Value.ToString
  43.            End Select
  44.        End While
  45.        rr.Close()
  46.    End Sub
  47. End Class
  48.  


« Última modificación: 15 Noviembre 2016, 13:14 pm por okik » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
-
Programación Visual Basic
xadap 6 4,218 Último mensaje 30 Agosto 2005, 21:45 pm
por xadap
SBK-08 Superbike World Championship Multilenguaje
Juegos y Consolas
N@5h 0 1,286 Último mensaje 14 Agosto 2008, 17:55 pm
por N@5h
[Python] Aplicacion multilenguaje
Scripting
ovichan 0 2,442 Último mensaje 15 Agosto 2013, 04:34 am
por ovichan
Almacenamiento interno celulares
Hardware
elezekiel 3 2,750 Último mensaje 5 Abril 2021, 22:13 pm
por EdePC
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines