Tal como suena, busco alguna manera de detectar el idioma que usa el usuario... Tanto en Windows como en Linux.
no se pero supongo que habrá algun fichero en el SO que declaré el lenguaje, Suponiendo esto deberás buscar cual es y abrirlo.
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.
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:#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)
Gracias, ambos funcionan de maravilla (el ingles no lo he probado, pero el español me lo detecta bien).
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
}