¿Hay alguna forma de hacerlo? ¿O de redirigir temporalmente la salida de la consola a una variable de alguna forma?
Siempre te pasas 4 pueblos preguntando cosas raras ;D
no por el momento directamente, tal vez con un script, pero eso deja de ser portable.
Al final esa será la solución supongo, no es tan mala después de todo.
El objetivo es recuperar el lenguaje de Windows, a través del registro, con un reg query...
para eso te conviene sacar la salida a un archivo de texto y luego leerlo desde bennugd, asi hago en el instalador de la version windows.
yo haría un módulo que exportar la función de reg query a bennu para así poderla usar fácilmente desde bennu. :D.
Pero me da problemas la parte de "> fichero.txt"
Por ahora me funciona con un bat, luego pongo cómo lo solucioné. Es interesante que se autodetecte el idioma :)
Pixel, te he creado un módulo especial para ello, lo malo es que es para linux :D, es que ahora no tengo ese odioso sistema operativo de pago a mano y no he podido compilar el código fuente en él, te dejo la fantástica tarea de que lo portes si quieres, :D.
http://forum.bennugd.org/index.php?topic=1651.0
NOTA: a lo mejor en windows no va el set_locale de "locale.h" y hay que usar el "GetLocaleInfo" de la API de windows,
http://msdn.microsoft.com/en-us/library/dd318101%28VS.85%29.aspx
Quizás esto del idioma se podría incorporar a la mod_sys. Creo que es un problema bastante común y no parece difícil de añadir.
Aquí está una posible solución, tirando de exec:
http://www.windowsitpro.com/article/configuration/where-in-the-registry-is-the-language-setting-for-each-user-stored-.aspx
En BennuGD hago esto:
if(!fexists(getenv("TEMP")+"\lang.txt")) exec(1,"language.bat",0,0); end
Y language.bat contiene esto:
@rem recupera lenguaje de windows
@reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\Language /v Default | findstr Default > %TEMP%\lang.txt
Luego lo recupero y elijo el idioma dependiendo de lo que hayamos recogido, y en base a la lista que hay en el enlace de antes:
fp=fopen(getenv("TEMP")+"\lang.txt",O_READ);
if(fp)
cadena_lenguaje=fgets(fp);
fclose(fp);
end
cadena_lenguaje_bien=""+cadena_lenguaje[25]+cadena_lenguaje[26]+cadena_lenguaje[27]+cadena_lenguaje[28];
ops.lenguaje=0;
switch(cadena_lenguaje_bien)
case "0c0a": ops.lenguaje=1; end
case "0410": ops.lenguaje=2; end
case "0407": ops.lenguaje=3; end
case "040c": ops.lenguaje=4; end
end