none
(Ayuda) Implementar idioma RRS feed

  • Pregunta

  • Hola amigos,

    Tengo una aplicación que estoy integrando el idioma. Tengo una carpeta "Resources" algunos idiomas configurados así.

    Language.cs-CZ.resx

    Language.ES.resx > (Predeterminado - español)

    Language.EN.resx

    Me gustaria saber, como puedo cargar dicho idioma y al inicio de mi aplicación en un combox, puedo incluir los distintos lenguajes y en función del que seleccione cargue dicho idioma.

    miércoles, 23 de enero de 2019 10:49

Respuestas

  • porque la propiedad SelectItem no es del tipo boolean es del tipo string tampoco es una lista porque veo que lo estas indexando lo correcto seria algo a si

     Private Sub ComboIdioma_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboIdioma.SelectedIndexChanged
            Try
                If ComboIdioma.Text = "Español" Then
                    Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("es-ES")
                ElseIf ComboIdioma.Text = "Ingles" Then
                    Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")
                End If
                AplicarIdioma()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    
        End Sub

    • Marcado como respuesta Symantecc jueves, 31 de enero de 2019 16:58
    viernes, 25 de enero de 2019 22:45

Todas las respuestas

  • hola

    es una aplicacion winforms ?

    si es asi valida este articulo lo explica muy bien

    Aplicaciones multilenguaje, globalización y localización

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 23 de enero de 2019 14:16
  • Hay alguna manera de pasar el listbox a un combox?
    jueves, 24 de enero de 2019 18:07
  • Lo tengo de la siguiente manera con un combox. Los idiomas configurados en vez de ES-ES lo he puesto así,

    Español

    English

    Código: 

        Private Sub ComboIdioma_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboIdioma.SelectedIndexChanged
            Try
                Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo(CStr(ComboIdioma.SelectedItem))
                AplicarIdioma()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    
        End Sub

    Error cuando selecciono en el combox:

    No se admite la referencia cultural.

    Nombre del parámetro: name

    Español es un identificador de referencia cultural no válido.

    ¿Cómo puedo solucionar esto?

    Gracias

    viernes, 25 de enero de 2019 8:07
  • El problema es que la clase cultureInfo solo admite nombres en código iso de dos letras ejemplos español seria igual

    a es-ES  el ingles seria en-US lo que tienes que hacer es una consulta con un If que diga que si el valor seleccionado en en el combobox es español entonces el cultureinfo tenga como valor de parámetro es.ES 

    viernes, 25 de enero de 2019 13:28
  • Hola, lo he cambiado y lo he puesto así:

        Private Sub ComboIdioma_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboIdioma.SelectedIndexChanged
            Try
                If ComboIdioma.SelectedItem(0) Then
                    Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("es-ES")
                ElseIf ComboIdioma.SelectedItem(1) Then
                    Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")
                End If
                AplicarIdioma()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    
        End Sub

    Pero ahora me da otro error:

    La conversión tipo 'Char' en el tipo 'Bolean' no es válida.

    ¿Qué puedo hacer?

    viernes, 25 de enero de 2019 14:22
  • porque la propiedad SelectItem no es del tipo boolean es del tipo string tampoco es una lista porque veo que lo estas indexando lo correcto seria algo a si

     Private Sub ComboIdioma_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboIdioma.SelectedIndexChanged
            Try
                If ComboIdioma.Text = "Español" Then
                    Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("es-ES")
                ElseIf ComboIdioma.Text = "Ingles" Then
                    Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")
                End If
                AplicarIdioma()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    
        End Sub

    • Marcado como respuesta Symantecc jueves, 31 de enero de 2019 16:58
    viernes, 25 de enero de 2019 22:45
  • Gracias!

    Una pregunta, cómo guardaría el idioma que seleccionó el usuario para posterior cargarlo?

    y por otro lado, cómo podría detectar el lenguaje del usuario del sistema y aplicarle en el combox el idioma que es para cargarlo de forma automatica?

    • Editado Symantecc sábado, 26 de enero de 2019 17:58
    sábado, 26 de enero de 2019 17:43
  • La propiedad CultureInfo.InstalledUICulture te retorna un CultureInfo que representa la referencia cultural del Sistema por lo tanto cualquiera que sea el idioma del usuario con esta propiedad lo tendrás

    y la primera pregunta de como guardar el idioma que selecciono el usuario hay varias formas una es serializando la clase si no tienes conocimiento de esta opción en la pagina de msdn hay tutoriales al respeto

    o mas sencillo vete al explorador de soluciones y selecciona tu proyecto click derecho y despues click en propiedades despues click en configuracion y hay te salen opciones como una base de datos en 

    nombre pones el que quieras ejemplo 'lenguaje', en tipo pones el tipo de valor que vas a guardar, en ambito lo dejas a si en valor lo dejas en blanco despues en el codigo le asignas el valor y lo guardas de este modo

     Private Sub GuardarIdioma()
            My.Settings.Lenguaje = CultureInfo.GetCultureInfo("Aqui el idioma que selecciono el usuario")
            My.Settings.Save()
        End Sub

    despues de que lo guardes ya puedes aceder a el del mismo modo osea My.Settings.Lenguaje
    • Editado DANTE-3D sábado, 26 de enero de 2019 19:04
    sábado, 26 de enero de 2019 18:58