¿Cómo averiguar el lenguaje del móvil en el que se ejecuta nuestro juego?

Started by panreyes, April 04, 2013, 09:13:45 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

panreyes

Según esto:

[size=78%]http://developer.android.com/reference/java/util/Locale.html[/size]


desde Java está claro, pero desde nuestro código lo tenemos algo más complicado.
¿Alguna idea? ¿Se podría meter en una variable de entorno y recibirla con getenv("LANG"); como si fuera un Linux?

FreeYourMind

Josebita te llaman, funcion nueva xD

si se guardará en alguna carpeta se podria mirar, tal como hiciste en la caanoo

SplinterGU

Quote from: PiXeL on April 04, 2013, 09:13:45 AM
Según esto:

[size=78%]http://developer.android.com/reference/java/util/Locale.html[/size]


desde Java está claro, pero desde nuestro código lo tenemos algo más complicado.
¿Alguna idea? ¿Se podría meter en una variable de entorno y recibirla con getenv("LANG"); como si fuera un Linux?

get_env o getenv, no recuerdo como se llama, lo tienes en mod_sys
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

ambos se estan superando ultimamente, hagan un search, seguro que esta en la wiki, en el foro sin dudas, ya se hablo de esta funcion.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

panreyes

Quote from: SplinterGU on April 04, 2013, 09:03:45 PM
ambos se estan superando ultimamente, hagan un search, seguro que esta en la wiki, en el foro sin dudas, ya se hablo de esta funcion.
Si, getenv funciona perfectísimamente en Linux, pero no sirve para Android.

SplinterGU

deberia servir... quizas no esta implementada... pero deberia.... android no es mas que un linux.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

no tiene porque, tener unix detras no signfica que el so vaya funcionar igual ni usar las mismas funciones de sistema de toda la vida

josebita

Quote from: SplinterGU on April 05, 2013, 02:36:58 AM
deberia servir... quizas no esta implementada... pero deberia.... android no es mas que un linux.
Android usa el kernel Linux, pero a nivel de "usuario" (nosotros, como gente que programa para la plataforma) no se parece demasiado a la forma en que trabaja éste.
Ésto es lo que se obtiene en mi teléfono (Galaxy Nexus con Android 4.2.2 estándar):
Quotee8540@L2ZCVP4J:~$ adb shell
shell@android:/ $ export
ANDROID_ASSETS
ANDROID_BOOTLOGO
ANDROID_DATA
ANDROID_PROPERTY_WORKSPACE
ANDROID_ROOT
ANDROID_SOCKET_adbd
ANDROID_STORAGE
ASEC_MOUNTPOINT
BOOTCLASSPATH
EMULATED_STORAGE_SOURCE
EMULATED_STORAGE_TARGET
EXTERNAL_STORAGE
HOME
HOSTNAME
LD_LIBRARY_PATH
LOOP_MOUNTPOINT
MKSH
PATH
PS1
RANDOM
SHELL
TERM
USER
shell@android:/ $ echo $HOME
/data
shell@android:/ $ echo $HOSTNAME
android
shell@android:/ $ echo $PS1
$(precmd)$USER@$HOSTNAME:${PWD:-?} $
shell@android:/ $ echo $SHELL
/system/bin/sh
shell@android:/ $ echo $TERM
vt100
shell@android:/ $ echo $USER
shell
shell@android:/ $ echo $ANDROID_DATA
/data
shell@android:/ $
Así que no se puede obtener el idioma directamente mediante getenv.

Quizás sería interesante extender la mod_sys con rutinas específicas para cada plataforma: obtener idioma, sistema operativo y versión... cosas por el estilo. Por lo que tengo entendido no es muy fácil obtener el idioma del SO en Windows desde Bennu, ¿no?


[Edito] Jué... He escrito la mitad del post y luego me he puesto a otra cosa y se me ha olvidado acabarlo... Perdón a quien lo hubiera leído a medias.

panreyes

Por no añadir un módulo en Windows para leer el registro, hice esta chapuza:


if(os_id==os_win32) //windows
//qué lenguaje lleva este windows?
if(!fexists(getenv("TEMP")+"\lang.txt")) exec(1,"language.bat",0,0); end
fp=fopen(getenv("TEMP")+"\lang.txt",O_READ);
if(fp)
cadena_lenguaje=fgets(fp);
fclose(fp);
end
primera_letra_lenguaje=find(cadena_lenguaje,"0",0);
cadena_lenguaje_bien=""+cadena_lenguaje[primera_letra_lenguaje+2]+cadena_lenguaje[primera_letra_lenguaje+3];


switch(cadena_lenguaje_bien)
case "09": id_lenguaje="en"; end
case "0a": id_lenguaje="es"; end
case "10": id_lenguaje="it"; end
case "07": id_lenguaje="de"; end
case "0c": id_lenguaje="fr"; end
end
end



Y language.bat:

reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\Language /v Default | findstr Default > %TEMP%\lang.txt

emov2k4

Estimados,  alguna novedad al respecto a esto con Android ?? , no quiero hacer dos aplicaciones para el idioma.

Saludos

SplinterGU

quizas se le podria pedir a josebita que incluya alguna funcion para esto en android.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

panreyes

Josebita lo puede hacer. Yo tengo un parche rancio hecho en Java, que escribe un fichero al arrancar con el lenguaje y luego lo leo desde Bennu.


Es complicado de mostrar, pero pégale un vistazo a estos ficheros:
https://code.google.com/p/pixjuegos/source/browse/trunk/bennu-android/src/org/libsdl/app/SDLActivity.java#854
https://code.google.com/p/pixjuegos/source/browse/trunk/common-src/lenguaje.pr-#43

SplinterGU

por que en lugar de escribir un fichero no haces un setenv y luego recuperas con getenv desde bennugd?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

panreyes

Eso suena a solución inteligente, y ya sabes cómo soy yo de chapuzas xD

l1nk3rn3l

pregunta ...


donde esta los ultimos fuentes de bennugd para android es que vamos a portar algunas libs graficas
a android entonces requerimos un port ya hecho...




gracias