VB.NET - Comprobación idioma

ArcheR

Buenas.

Me he exprimido el coco y no he dado con una solución a esta duda, a ver si alguno tiene algo xD El tema es que me gustaría saber si hay alguna forma en VB.NET de que, al ejecutar una aplicación, ésta compruebe si en el Windows del PC que se está ejecutando el programa está instalado un idioma determinado. Por ejemplo, si tiene instalado el japonés para poder leer kanjis y cosas así.

Ya digo que he buscado y rebuscado, pero nada. Gracias por adelantado.

NeB1

http://www.recursosvisualbasic.com.ar/htm/listado-api/62-obtener-idioma.htm

http://www.canalvisualbasic.net/foro/visual-basic-6-0/saber-el-idioma-del-so-1397/

ArcheR

Vaya, ya veo que no me extrujé el coco lo suficiente xDD De todas formas no es exactamente lo que buscaba, pues, por lo que veo así por encima, eso te saca el idioma que tienes en ese momento activado, pero yo quiero saber si lo tiene instalado simplemente, no activado, porque hay gente (como yo) que por ejemplo tiene instalado el japonés para que los kanjis se visualicen correctamente, pero no lo tiene como idioma principal, lógicamente.

Pero vamos, que partiendo de ahí puedo ir mirando a ver si va saliendo la cosa. Gracias!

ArcheR

Bueno, respondo a mí mismo porque he dado con la tecla.

Gracias a #2, descubrí la clase CultureInfo, pero investigando dicha clase, me di cuenta de que, entre otras muchas cosas, lo que me saca es el idioma DEL SO, mientras que lo que yo busco es el idioma del TECLADO, más concretamente conocer qué idiomas de teclado tengo instalados, y comprobar si entre ellos está uno determinado.

Enredando y googleando encontré que cada idioma tiene un LCID, un identificador único. En Google revisé el del Japonés y vi que era el 1041. Como dije antes, CultureInfo no trata la información de idiomas del teclado, sino del SO. Sin embargo, sí lo hace la clase InputLanguage, que te permite conocer tanto el idioma que tienes activado en ese momento, como una lista de todos los que tengas.

Con esto ya fue fácil. Simplemente busqué en la lista de idiomas de teclado instalados si estaba el 1041 (Japonés) y listo. Dejo el código por si a alguien más puede interesarle:

Imports System.Globalization 'Hay que importarlo

---------------------

Dim i As Integer 'Para el bucle
Dim jp As Integer 'Para comprobar si esta instalado o no

    jp = 0
    For i = 0 To (InputLanguage.InstalledInputLanguages.Count - 1)
        If InputLanguage.InstalledInputLanguages(i).Culture.LCID = 1041 Then
            jp = 1
        End If
    Next

    Select Case jp
        Case 0
            Me.TextBox1.Text = "NO ESTA INSTALADO EL JAPONES"
        Case 1
            Me.TextBox1.Text = "ESTA INSTALADO EL JAPONES"
    End Select
NeB1

Si que tenías razón, no lo había mirado lo suficiente.

Usuarios habituales

  • NeB1
  • ArcheR