Estoy planteando como integrar el soporte del euro al programa
"castellanizar" de user-es. Pero para ello, debido a la gran variedad de
sistemas posibles y de configuraciones variadas, me gustar�a hacer una
peque�a encuesta para la que os adjunto un programa (euro-test).

        La idea es ver, entre los usuarios de Debian en espa�ol, qui�n
tiene configurado bien el s�mbolo de euro (en consola y X) y qui�n no y
por qu�. 

        Aquellos que quieran participar lo tiene f�cil, guardan el
programa y lo ejecutan en consola y luego en X, diciendo en ambos casos
que guarde los resultados, luego me enviais el fichero "euro-test.log"
resultante.

        De paso, podreis ver si vuestro sistema tiene soporte para
visualizar o no el euro y si lo teneis correctamente configurado.

        Un saludo a todos y gracias de antemano a los que me echeis una
mano en esto.

        Javi

PS: Al hilo de esto revisar� el documento de euro-howto de Jose Carlos
Garcia Sogo y lo pondr�, posiblemente, como una receta en La Espiral
#!/bin/sh

# Euro test
# Tests for the availability of euro sign in GNU/Linux systesm
#
# (c) 2001 Javier Fern�ndez-Sanguino Pe�a <[EMAIL PROTECTED]>
#
# TODO
# - Join final information on X and console (it's more or less similar)
# - add UTF support?

function print_euro_iso8859_15 {
        gettext "Imprimiendo el caracter euro (ISO8859-15): "
        printf "\xa4\n"
}

function print_euro_utf {
        gettext "Imprimiendo el caracter euro (UTF): "
        printf "\xe2\x82\xac\n"
}

function read_answer {
        gettext "�Puede ver el caracter euro en la l�nea anterior? (s/N) "
        read sino
        case "$sino" in
        s*|S*|y*|Y*)    answer=1;;
        *)      answer=0;;
        esac
}
function test_euro_font {
        print_euro_iso8859_15
        read_answer
        [ $answer = 1 ] && { 
                gettext -s "Su fuente tiene soporte de euro (ISO8859-15)"
                eurofont="iso8859"
                return 0
        }
        print_euro_utf
        read_answer
        [ $answer = 1 ] && { 
                gettext -s "Su fuente tiene soporte de euro (UTF-8)"
                eurofont="utf"
                return 0
        }
        gettext -s "Su fuente no tiene soporte de euro."
        eurofont=""
        return 1
}

function test_euro_key {
        gettext  "Pulse la combinaci�n de teclas Alt Gr+e: "
        read test
        read_answer
        [ $answer = 1 ] && {
                gettext -s "Su teclado est� configurado para soportar el euro."
                eurokey=1
                return 0
        }
        gettext -s "Su teclado no est� configurado para soportar el euro."
        eurokey=0
        return 1
}

function set_console_euro_font {
        gettext -s "Instalando una fuente con soporte de euros"
        if [ -f /usr/bin/consolechars ] 
        then
                consolechars -f lat0-16 || {
# Test with other lat0/lat9 fonts??
# This part takes the first one available (might be too ugly)
                        for i in /usr/share/consolefonts/lat0*; do
                        consolechars -f $i && break
                        done
                }
        else
# TODO: Make it work also with setfont (old console-tools package)
                gettext -s "No puedo instalar una fuente nueva, no encuentro el 
programa consolechars"
        fi
}

function set_console_euro_key {
        gettext -s "Reconfigurando el teclado"
        if [ -f /bin/loadkeys ] ; then
        loadkeys euro.inc.gz || {
                gettext -s "Error al reconfigurar el teclado"
                if [ ! -f /usr/share/keymaps/i386/include/euro.inc.gz ]
                then
                        gettext -s "Su sistema no tiene la definici�n de euros 
instalada"
                else
                        gettext -s "Su definici�n de euros no es correcta o no 
ha podido ser cargada"
                fi
                gettext -s "Intentando carga manual"
                echo -e "altgr keycode 18 = currency \n altgr keycode 46 = cent 
" | loadkeys - 
        }
        else
                gettext -s "No encuentro loadkeys, no es posible reconfigurar 
el teclado"
        fi
                
}

function set_X_euro_font {
        gettext -s "Comprobando fuentes instaladas en X"
        X_fonts=`xlsfonts | grep iso8859-15$`
        if [ ! -z "$X_fonts" ] 
        then
# We could take the first font here and launch a new xterm with it
                gettext -s "Las siguientes fuentes con soporte euro est�n 
instaladas en tu sistema:"
                echo $X_fonts
                if [ "$ARG" = "X" ] 
                then
                        gettext -s "No ha sido posible ejecutar un terminal con 
fuente con soporte en euros (segundo intento)."
                else
                        gettext -s "Se va a ejecutar de nuevo este programa con 
un terminal que las cargue"
                        gettext -s "(utilizando 'xterm -fn 
\"nombre_de_fuente\")"
                        xfont=`echo $X_fonts | cut -f 1 -d " "`
                        xterm -fn "$xfont" -e $0 X
                fi 
                exit 0
        else
                gettext -s "No tienes fuentes instaladas con soporte euro"
                gettext -s "Instala los paquetes: xfonts-base-transcoded, 
xfonts-100dpi-transcodecd"    
                gettext -s "y xfonts-75dpi-transcoded"
        fi
}

function set_X_euro_key {
        gettext -s "Reconfigurando el teclado en X"
        echo "keycode 0x1A = e  E currency currency" | xmodmap -
}

function test_euro_console {
        gettext -s "Probando en entorno de texto (consola)"
        test_euro_font || set_font=1
        [ $set_font = 1 ] && { 
                set_console_euro_font 
                test_euro_font 
        }
        test_euro_key ||  set_key=1
        [ $set_key = 1 ] &&  { 
                set_console_euro_key
                test_euro_key
         }
# TODO: Is this necessary? (restore the console font)
        [ $set_font = 1 ] && consolechars -d 
        if [ ! -z "$eurofont" -a $eurokey = 1 -a $set_font = 0 -a $set_key = 0 
] 
        then
                gettext -s "ENHORABUENA! Su sistema est� preparado para 
representar euros (en consola)."
        else
                gettext -s "Para poder representar euros en su sistema deber�:"
                [ $set_font = 1  -a -z "$eurofont" ] && gettext -es "\tInstalar 
una fuente de consola para euros."
                [ $set_font = 1 -a ! -z "$eurofont" ] && gettext -es "\tPoner 
como fuente de su consola una con soporte de euros."
                [ $set_key = 1 -a $eurokey = 1 ] && gettext -es "\tConfigurar 
su teclado para que AltGr+E genere el simbolo euro."
                [ $set_key = 1 -a $eurokey = 0 ] && gettext -es "\tInstalar 
soporte a su teclado para generar la combinaci�n de euro"
        fi
}

function test_euro_X {
        gettext -s "Probando en entorno gr�fico (X)"
        test_euro_font || set_font=1
        [ $set_font = 1 ] && { 
                set_X_euro_font 
                test_euro_font 
        }
        test_euro_key ||  set_key=1
        [ $set_key = 1 ] &&  { 
                set_X_euro_key
                test_euro_key
         }
        if [ ! -z "$eurofont" -a $eurokey = 1 -a $set_font = 0 -a $set_key = 0 
] 
        then
                gettext -s "ENHORABUENA! Su sistema est� preparado para 
representar euros (en X)."
        else
                gettext -s "Para poder representar euros en su sistema deber�:"
                [ $set_font = 1  -a -z "$eurofont" ] && gettext -es "\tInstalar 
una fuente de X para euros."
                [ $set_font = 1 -a ! -z "$eurofont" ] && gettext -es "\tPoner 
como fuente de su terminal X una con soporte de euros."
                [ $set_key = 1 -a $eurokey = 1 ] && gettext -es "\tConfigurar 
su teclado para que AltGr+E genere el simbolo euro."
                [ $set_key = 1 -a $eurokey = 0 ] && gettext -es "\tInstalar 
soporte a su teclado para generar la combinaci�n de euro"
        fi
# TODO: Add info on X packages with euro keys
        if [ "$ARG" = "X" ] ; then
                gettext -s "Pulse <ENTER> para terminar"
                read
        fi
}

function info_system {
        gettext -s "Informaci�n del sistema (enviar a [EMAIL PROTECTED])"
        if [ -f /etc/debian_version ]
        then
                version=`cat /etc/debian_version`
                gettext -es "Version Debian GNU/Linux: $version"
        fi
        case $1 in
        "console" )
                gettext -s "Informaci�n de paquetes en consola (puede tardar 
unos segundos):"
                dpkg -l console-tools |grep ^i 
                dpkg -l console-data |grep ^i 
                if [ -f /etc/console-tools/config ] ; then
                        echo "------- /etc/console-tools/config ------------"
                        cat /etc/console-tools/config
                        echo "------- /etc/console-tools/config ------------"
                fi
                ;;
        "X" )
                gettext -s "Informaci�n de paquetes de X (puede tardar unos 
segundos):"
                dpkg -l xfree* |grep ^i
                dpkg -l xbase* |grep ^i
                dpkg -l xfonts* |grep ^i
                for config in /etc/X11/XF86Config-4 /etc/X11/XF86Config
                do
                if [ -f $config ] ; then
                        echo "------- $config ------------"
                        grep -2 -i xkb $config
                        echo "------- $config ------------"
                fi
                done
                ;;
        esac
}

# Program starts here
TEXTDOMAIN="user-es"
ARG=$1

OUTFILE="./euro-test.log"
set_font=0
set_key=0
eurokey=0
eurofont=""

if [ -z "$DISPLAY" ] 
then
        test_euro_console
else
        test_euro_X
fi

gettext "�Desea que se genere un fichero con los resultados del test? (s/N) "
read sino
case "$sino" in
s*|S*)  
        gettext -s "La generaci�n de resultados llevar� unos segundos."
        gettext "Comenzando generaci�n de resultados..."
        date=`date`
        echo "Resultados obtenidos en $date" >>$OUTFILE
        if [ ! -z "$eurofont" -a $eurokey = 1 -a $set_font = 0 -a $set_key = 0 
] 
        then
                echo "RES: El sistema esta configurado para funcionar con 
euros" >>$OUTFILE
        else
                echo "RES: El sistema no esta configurado correctamente" 
>>$OUTFILE
                [ $set_font = 1  -a -z "$eurofont" ] && echo -e "\tFuente no 
instalada" >>$OUTFILE
                [ $set_font = 1 -a ! -z "$eurofont" ] && echo -e "\tFuente no 
configurada" >>$OUTFILE
                [ $set_key = 1 -a $eurokey = 1 ] && echo -e "\tTeclado no 
configurado" >>$OUTFILE
                [ $set_key = 1 -a $eurokey = 0 ] && echo -e "\tNo hay soporte 
de teclado" >>$OUTFILE
        fi
        if [ -z "$DISPLAY" ] 
        then
                info_system console >>$OUTFILE
        else
                info_system X >>$OUTFILE
        fi
        gettext -s "..terminada."
        gettext -s "Env�e el fichero $OUTFILE al desarrollador del paquete."
        ;;
*)      ;;
esac

Attachment: pgpUA1wRjHhtz.pgp
Description: PGP signature

Responder a