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 <jfs@debian.org>
#
# 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 user-es@packages.debian.org)"
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:
pgpvtBY2pbRlA.pgp
Description: PGP signature