[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Variables de entorno para Español



On Wed, 16 Sep 1998, Enrique Zanardi wrote:

> > export LESSCHARSET=latin1
> > export LC_ALL=es_ES
> > export LANG=es_ES
> 
> Esto se está convirtiendo en una PF (pregunta frecuente, o FAQ, en
> inglés).

En efecto. Porque es un lío, y me parece que no está documentado en ningún
sitio. Es algo así como el fichero /etc/environment. Resulta que ese
fichero es leído tanto por login(1) como por el servidor X Window (XDM
mejor dicho ?) para determinar el ambiente. Así que es mejor ponerse en
ese fichero (que no existe en la distribución) las variables de entorno
generales que se vayan a emplear tanto en un xel (consola o xterm) como en
X-Window, por ejemplo cuando lanzamos una aplicación desde un menú
proporcionado por un gestor de ventanas o escritorio (ahí no se lee
/etc/profile ni .bash_profile ni .zprofile ni .login ni nada parecido, no
hay ningún xel por medio). Por ejemplo, mi /etc/environment:
·············8<················································
# Este fichero es leído por /etc/X11/Xsession y por /bin/login
# para establecer las variables de ambiente comunes al xel y a
# una sesión X Window.

PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:
NLSPATH=/usr/X11R6/lib/X11/nls
LESSOPEN="|lesspipe.sh %s"
LESS=-gicsME
#LC_MESSAGES=es_ES        
#LC_CTYPE=es_ES.ISO8859-1 
MM_CHARSET=ISO-8859-1
LANG=es_ES

export PATH LESS LESSOPEN LANG MM_CHARSET NLSPATH
······················8<····································

Evite la sintaxis "export PATH=nosequé NLSPATH=nosecuántos ..."; login(1)
exige una variable por línea. Y XSession exige la línea con export (creo).

No copie lo de LESSOPEN si no tiene el programa o guión del xel
"lesspipe.sh" en algún sitio del PATH. Este guión, que yo sepa, no se
distribuye con less. Sirve para filtrar, de forma que less directamente
pueda mostrar ficheros comprimidos, archivados, o del tipo que sea.

No pongo variables como EDITOR o PAGER porque eso corresponde a
preferencias personales de cada uno, y se adecuan más a un ~/.profile o
~/.zshenv o lo que sea (ahora que lo pienso, debería quitar LESS); aunque
siempre un usuario puede sustituir una variable de ésas por otro valor.

Ahora en la Debian 2.0 parece que ya no hacen falta LESSCHARSET,
LC_MESSAGES ni LC_CTYPE. ¡Bien!

Ahora viene el lío del Montepío (y del Sindicato El Almendro): ¿cuál es el
valor más correcto para LANG?

a) es
b) es_ES
c) es_ES.ISO-8859-1

Yo diría que debería ser (c), porque es más completo. Además, según dice
Emacs:
  Some operating systems let you specify the language you are using by
setting a locale.  Emacs handles one common special case of this: if
your locale name for character types contains the string `8859-1' or
`88591', Emacs automatically enables European character display mode
and its syntax.

O sea, que con (c) nos ahorramos tener que poner lo de
(standard-display-european t) en uno de los ficheros de arranque de Emacs;
auntomáticamente mostrará caracteres acentuados (ISO-Latin1).

El problema es que las aplicaciones busquen en directorios llamados, por
ejemplo, /usr/share/nosecuantos/$LANG/... y que si LANG no coincide,
fallen. Lo bueno sería que separaran LANG en componentes y que si no
coincide uno, busquen en otro. Por ejemplo, que buscaran

	/usr/.../es_ES.ISO-8859-1/...
	/usr/.../es_ES/...
	/usr/.../es/...

en ese orden hasta que encontraran el catálogo de mensajes o lo que sea.
> 
> Si defines LC_ALL=es_ES, el sistema no tendrá en cuenta lo que tengas
> definido en las demás LC_*, ni lo que tengas en LANG, así que definir las
> dos está de más.

Bien dicho.
> 
> Lo correcto es definir LANG (la variable de menor prioridad) y dejar sin
> definir el resto, salvo casos de "extrema necesidad".

En efecto, las otras variables están pensadas para sustituir el caso
general sólo para una categoría. Por ejemplo, si en México se emplea el
punto decimal en vez de la coma, un mexicano podría definir (mientras no
hagan es_MX.ISO-8859-1):

	LC_NUMERIC=C
	LANG=es_ES.ISO-8859-1

> 
> (LESSCHARSET no es necesaria para un sistema Debian 2.0. El less ya sabe
> cuál es el "charset" a utilizar).

Bien hecho.

Por las pruebas que estoy haciendo, parece que funciona el 
es_ES.ISO-8859-1. Vean:

% printenv LANG # No tengo LC_* definidas, sólo LANG.
es_ES.ISO-8859-1
~% man janderklander
No existe entrada de manual para janderklander

[ ¡Bien! "man" me contesta en español. ]

~% man dircolors | head
Dando formato a dircolors(1), aguarde por favor...

[ man sigue hablando mi idioma. ]

DIRCOLORS(1L)                                       DIRCOLORS(1L)


NOMBRE
       dircolors  -  muestra  en la salida las órdenes necesarias
       para establecer la variable de entorno LS_COLORS

[ Y las páginas del Manual me salen en español. (manpages-es-0.5a.tgz) ]
% man --where dircolors
/usr/man/es/man1/dircolors.1.gz
········^^^ ¡Bien! Se ha tragado $LANG. Ha eliminado lo que sobra.

Espero que esto le sirva a alguien. Si es así, que me mande un chiste.
--
Gerardo Aburruzaga García - Profesor asociado de Metodología y Tecnología
de la Programación II del Departamento de Lenguajes y Sistemas Informáticos
Ingeniería Técnica de Informática de Gestión - Escuela Superior de Ingeniería
Analista del Centro Integrado de Tecnologías de la Información.
Universidad de Cádiz. En Cádiz, Andalucía, España, Europa.
-------------------------------------------------------------------------------
    Estación de tren: sitio donde el tren se para. Estación de trabajo: ...


Reply to: