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: ...

Responder a