Me acabo de pasar por el proyecto
nave y me he encontrado con la gratísima sorpresa de que ya se pueden tener instalados varios lenguajes a las vez con firefox. La verdad es que hacía muchísimo que no intentaba traducir el navegador, de modo que no sé hasta que punto es reciente la noticia. El caso es que viendo cómo hace para elegir uno u otro lenguaje, me he escrito un script para arrancar según cómo tengamos configuradas las locales en el ordenador, es decir, si nuestro usuario "X" tiene catalán por defecto, le saldrá firefox en catalán; si el "Y" tiene castellano, en castellano. De igual modo, si cambiamos la configuración del idioma en nuestro sistema, firefox "se enterará". Por supuesto, hay que instalar primero los paquetes de lenguaje en firefox.
Ahí va el script (como siempre, se agradecen sugerencias, correcciones, etc...):
#!/bin/sh
#
# run_firefox.sh: arranca firefox según la configuración de las locales
#
# Por defecto, el idioma original (siempre presente)
UILocale_default="en-US"
contentLocale_default="US"
LOCALE=`which locale`
# Si no has instalado firefox con un paquete de tu distribución,
# asegúrate de que "which firefox" te devuelve el ejecutable.
FIREFOX=`which firefox`
# En caso contrario, comenta la línea anterior, busca el ejecutable,
# descomenta la siguiente línea y pon la ruta apropiada.
#FIREFOX="$HOME/firefox/firefox"
# Averiguamos el valor de las locales.
if test -n "$LOCALE"; then
UILocale=`$LOCALE | sed -n '/^LC_MESSAGES/!b;s/^.*="\([^"]\{0,5\}\).*$/\1/;y/_/-/;p;q'`
contentLocale=`echo $UILocale | cut -d "-" -f2`
fi
# Ejecutamos firefox con la local. En caso de que no esté instalada esa local
# arrancamos el idioma por defecto.
$FIREFOX -UILocale $UILocale -contentLocale $contentLocale || \
$FIREFOX -UILocale $UILocale_default -contentLocale $contentLocale_default
Evidentemente, en vez de ejecutar "firefox" habrá que ejecutar "run_firefox.sh": lo metéis en un directorio del path, cambiáis la configuración de vuestros iconos, teclas de arranque, etc... y listo.
Espero que le sea de ayuda o interés a alguien.
EDITO:
He decidido cambiar el script para incluir la variable de entorno LANGUAGE. Hace tiempo envié al foro un mensaje en el que recuerdo que explicaba un poco las locales y también esta variable:
#!/bin/sh
lang_default="en"
country_default="US"
function locales() {
lang=`echo $1 | cut -c1,2`
country=`echo $1 | cut -c4,5`
UILocale=$lang-$country
contentLocale=$country
}
LOCALE=`which locale`
FIREFOX=`which firefox`
#FIREFOX="$HOME/firefox/firefox"
if test -n "$LANGUAGE"; then
language=`echo $LANGUAGE | tr ":" " "`
elif test -n "$LOCALE"; then
language=`$LOCALE | grep '^LC_MESSAGES' | cut -c14-18`
fi
for i in ${language} ${lang_default}-${country_default}; do
locales $i
EXE="$EXE $FIREFOX -UILocale $UILocale -contentLocale $contentLocale || "
done
eval $EXE test