Test Foro de elhacker.net SMF 2.1

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í:


#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv)
{
printf("LANG string: %s\n", getenv("LANG"));

return 0;
}


Saludos.
Título: Re: Detectar idioma Sistema Operativo
Publicado por: leosansan en 9 Mayo 2013, 18:00 PM
Cita de: 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.

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

Código (cpp) [Seleccionar]
#include <windows.h>
#include <stdio.h>
#include<locale.h>
int main()
{
   setlocale(LC_ALL, "Spanish");
   char idioma[30]={0},idioma2[10],pais[30];
   GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SENGCOUNTRY , pais,
   sizeof(pais));
   printf( "Usted vive en %s\n",pais );
   GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SNATIVELANGNAME  , idioma,
   sizeof(idioma));
   GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME  , idioma2,
   sizeof(idioma2));
   printf( "Y su idioma es %s  %s",idioma,idioma2 );
   return 0;
}


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 (cpp) [Seleccionar]
unsigned int Lenguaje::ObtenerIdiomaSistema()
{
   #ifdef WINDOWS

   char idioma[30]={0};
   GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SNATIVELANGNAME  , idioma,
   sizeof(idioma));

    if (idioma[0] == 'e' && idioma[1] == 's')
      return Espanyol;
   else
       return English;

   #else

   char* Informacion = getenv("LANG");

   if (Informacion[0] == 'e' && Informacion[1] == 's')
       return Espanyol;
   else
       return English;

   #endif
}