Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: amchacon en 9 Mayo 2013, 14:59 pm



Título: Detectar idioma Sistema Operativo
Publicado por: amchacon en 9 Mayo 2013, 14:59 pm
Tal como suena, busco alguna manera de detectar el idioma que usa el usuario... Tanto en Windows como en Linux.


Título: Re: Detectar idioma Sistema Operativo
Publicado por: anonimo12121 en 9 Mayo 2013, 15:36 pm
no se pero supongo que habrá algun fichero en el SO que declaré el lenguaje, Suponiendo esto deberás buscar cual es y abrirlo.


Título: Re: Detectar idioma Sistema Operativo
Publicado por: 0xDani en 9 Mayo 2013, 15:48 pm
En Linux (y no se si en otros Unix-Like) normalmente tienes la variable de entorno LANG, que contiene un string que te dice el idioma, hay algunos en esta tabla (http://publib.boulder.ibm.com/infocenter/tivihelp/v1r1/index.jsp?topic=%2Fcom.ibm.itsmc.doc_5.3.3%2Fans5000054.htm).

Puedes obtener el valor de esta variable así:

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int main(int argc, char **argv)
  5. {
  6. printf("LANG string: %s\n", getenv("LANG"));
  7.  
  8. return 0;
  9. }
  10.  

Saludos.


Título: Re: Detectar idioma Sistema Operativo
Publicado por: leosansan en 9 Mayo 2013, 18:00 pm
Tal como suena, busco alguna manera de detectar el idioma que usa el usuario... Tanto en Windows como en Linux.

Creo que te podría servir, aunque admite otras opciones en cuanto a país e idioma:

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include<locale.h>
  4. int main()
  5. {
  6.    setlocale(LC_ALL, "Spanish");
  7.    char idioma[30]={0},idioma2[10],pais[30];
  8.    GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SENGCOUNTRY , pais,
  9.    sizeof(pais));
  10.    printf( "Usted vive en %s\n",pais );
  11.    GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SNATIVELANGNAME  , idioma,
  12.    sizeof(idioma));
  13.    GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME  , idioma2,
  14.    sizeof(idioma2));
  15.    printf( "Y su idioma es %s  %s",idioma,idioma2 );
  16.    return 0;
  17. }

Saluditos!. ....  (http://st.forocoches.com/foro/images/smilies/ciao.gif)


Título: Re: Detectar idioma Sistema Operativo
Publicado por: amchacon en 9 Mayo 2013, 19:40 pm
Gracias, ambos funcionan de maravilla (el ingles no lo he probado, pero el español me lo detecta bien).

Código
  1. unsigned int Lenguaje::ObtenerIdiomaSistema()
  2. {
  3.    #ifdef WINDOWS
  4.  
  5.    char idioma[30]={0};
  6.    GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SNATIVELANGNAME  , idioma,
  7.    sizeof(idioma));
  8.  
  9.     if (idioma[0] == 'e' && idioma[1] == 's')
  10.       return Espanyol;
  11.    else
  12.        return English;
  13.  
  14.    #else
  15.  
  16.    char* Informacion = getenv("LANG");
  17.  
  18.    if (Informacion[0] == 'e' && Informacion[1] == 's')
  19.        return Espanyol;
  20.    else
  21.        return English;
  22.  
  23.    #endif
  24. }