Tengo una pregunta acerca de la creación de un multi-idioma de la aplicación y el uso de los archivos de recursos. Voy a explicar lo que he hecho y lo que me gustaría que el producto final que se desea.

Estoy haciendo esto VB.Net y el uso de Visual Studio 2008

Después de la creación de un nuevo proyecto, he añadido un archivo de recursos para el proyecto (Add -> Nuevo Elemento, Selecciona el Archivo de Recursos, denominado Resource1.resx).

Yo, a continuación, haga doble clic en el archivo de recursos y es capaz de añadir algunos nombres y valores. Por ejemplo,

Nombre – lblFirstName, valor – Juan
Nombre – lblLastName, valor – Smith

En mi formulario, tengo 2 etiquetas: FirstName y LastName

En el Código, he añadido

FirstName.Text = My.Resources.Resource1.lblFirstName
LastName.Text = My.Resources.Resource1.lblLastName 

Si ejecuto este código, funciona bien. Juan y Smith se muestran en las etiquetas.

Ahora para mi pregunta. Dicen que en lugar de su nombre y apellido de las etiquetas (botones, elementos de menú, etc.) en realidad fueron las palabras que iba a ser diferentes en idiomas diferentes. Lo que me gustaría es tener algo como

EnglishText.resx
SpanishText.resx
GermanText.resx

Cada archivo de recursos de contener los mismos nombres, sólo diferentes valores. Dependiendo de qué idioma se selecciona, se decidió por el usuario (en un menú), ¿cómo puedo conseguir la coincidencia de archivo de recursos a ser utilizados.

Básicamente lo que quiero sería

FirstName.Text = My.Resources.<Language Specific Resource File>.lblFirstName

Es algo como esto posible? Es este un enfoque aceptable? Hay una manera mejor de hacer esto?

Cualquier consejo o sugerencia será muy apreciada. Yo intente comprobar a menudo para ver si hay preguntas de seguimiento o si más información debe ser proporcionada.

InformationsquelleAutor | 2009-08-27

3 Comentarios

  1. 2
    Imports System.Globalization
    Imports System.Resources
    
    Public Class Form1
        Public rm As Resources.ResourceManager
    
        Private Property CultureInfo As CultureInfo
        Public Function getRMValue(ByVal strValue As String)
            Dim strLanguage As String
    
            If IsNothing(rm) Then
                strLanguage = CultureInfo.CurrentCulture.ToString.ToUpper.Substring(0, 2)
                If strLanguage = "EN" Then
                    rm = My.Resources.English.ResourceManager
                Else
                    rm = My.Resources.Turkce.ResourceManager
                End If
            End If
            getRMValue = rm.GetString(strValue)
        End Function
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        End Sub
        Private Sub btnBye_Click(sender As Object, e As EventArgs) Handles btnBye.Click
            MessageBox.Show(getRMValue("messagebox"))
    
        End Sub
    End Class

    Recurso de captura de pantalla

    • Bienvenido a Desbordamiento de Pila! Normalmente las respuestas será mejor recibido si se incluye una breve descripción, incluso de simples respuestas.
  2. 0

    Digamos, tiene 3 idiomas que usted podría hacer algo como esto:

    If LanguageChanger<change this to the way you let people change languages> = "English" Then
    Language = My.Resources.EnglishText 
    else if LanguageChanger = "Spanish" Then 
    Language = My.Resources.SpanishText
    else if LanguageChanger = "German" Then 
    Language = My.Resources.GermanText
    End if

    Entonces, usted puede utilizar:

    FirstName.Text = Language.lblFirstName

    Sólo he hecho esto desde dentro de esta forma, no es probado así que lo siento si no funciona

Dejar respuesta

Please enter your comment!
Please enter your name here