En todo su esplendor, la I18N no es específica de FreeBSD, y es una convención. Le animamos a que ayude a FreeBSD siguiendo esta convención.
Las opciones de localización se basan en tres términos principales: código de idioma, código de país y codificación. Los nombres de las “locales” se construyen a partir de estas tres partes como sigue:
CódigoDelIdioma
_CódigoDelPaís
.
Codificación
Para localizar un sistema FreeBSD a un idioma concreto (o cualquier otro sistema de tipo UNIX® que soporte I18N), los usuarios necesitar averiguar los códigos del país e idioma concreto (los códigos de país le dicen a las aplicaciones que variedad del idioma dado deben usar). Además, los navegadores web, servidores SMTP/POP, servidores web, etc toman decisiones basándose en ellos. Los siguientes son ejemplos de códigos de idioma/país:
Código de idioma/país | Descripción |
---|---|
en_US | Inglés - Estados Unidos de América |
ru_RU | Ruso de Rusia |
zh_TW | Chino tradicional de Taiwán |
Algunos idiomas usan codificaciones distintas al ASCII que son de 8 bits, caracteres anchos o multibyte; consulte multibyte(3) para conocer más detalles. Algunas aplicaciones más antiguas no los reconocen y los confunden con caracteres de control. Las aplicaciones modernas normalmente reconocen los caracteres de 8 bits. Dependiendo de la implementación, los usuarios pueden necesitar compilar una aplicación con soporte para caracteres anchos o multibyte, o configurarlo correctamente. Para poder introducir y procesar caracteres anchos o multibyte, la Colección de “Ports” de FreeBSD proporciona diferentes programas a cada idioma. Diríjase a la documentación de I18N del “ port” de FreeBSD correspondiente.
Específicamente, los usuarios necesitan mirar la documentación de la aplicación para decidir como configurarla correctamente o pasar valores correctos al configure/Makefile/compilador.
Algunas cosas a tener presentes son:
Los juegos de caracteres de tipo char de C específicos para el idioma (consulte multibyte(3)), v.g. ISO-8859-1, ISO-8859-15, KOI8-R, CP437.
Las codificaciones anchas o multibyte, v.g. EUC, Big5 .
Puede comprobar la lista activa de juegos de caracteres en el Registro IANA.
Las versiones 4.5 y posteriores de FreeBSD usan en su lugar codificaciones de la “locale” compatibles con X11.
En el sistema de paquetes y ports de FreeBSD, las
aplicaciones I18N se han denominado con I18N
en su nombre para una fácil
identificación. Sin embargo, no siempre soportan el
idioma necesitado.
Normalmente basta con exportar el valor del nombre de la
“locale” como LANG
en el
intérprete de órdenes de la sesión.
Esto se podría hacer en el fichero
~/.login_conf
del usuario o en el fichero de
inicio del intérprete de órdenes del usuario
(~/.profile
, ~/.bashrc
, ~/.cshrc
). No es necesario
configurar las otras variables de localización como
LC_CTYPE
o LC_CTIME
.
Diríjase a la documentación de FreeBSD
específica de su idioma para más
información.
Debería configurar las siguientes dos variables de entorno en sus ficheros de configuración:
LANG
para las funciones de la familia
setlocale(3) de POSIX®
MM_CHARSET
para el juego de caracteres
MIME de las aplicaciones
Esto comprende la configuración del intérprete de órdenes del usuario, la configuración específica de la aplicación y la configuración de X11.
Hay dos métodos para configurar las “ locales”, que se describen aquí abajo. El primero (que es el recomendado) es asignar las variables de entorno en una clase de sesión, y el segundo es añadir las asignaciones de las variables de entorno al fichero de inicio del intérprete de órdenes del sistema.
Este método permite asignar las variables de entorno necesarias para el nombre de las “locales ” y el juego de caracteres MIME de una sola vez para todos los posibles intérpretes de órdenes, en vez de añadir asignaciones específicas en los ficheros de inicio de cada uno de los intérpretes de órdenes. La configuración a nivel de usuario la puede realizar el propio usuario, mientras que la configuración a nivel de administrador precisa de permisos de superusuario.
Esto es un ejemplo minimalista de un fichero
.login_conf
de la carpeta de
inicio de un usuario, que contiene las dos variables
configuradas para la codificación Latin-1:
Esto es un ejemplo de un .login_conf
que configura las variables para el chino
tradicional en la codificación BIG-5. Observe
que se configuran muchas más variables porque
algunos programas no respetan correctamente las
variables de las “locales” para el chino,
el japonés y el coreano.
Consulte la configuración a nivel de administrador y login.conf(5) para conocer más detalles.
Compruebe que la clase de sesión en
/etc/login.conf
establece el
idioma adecuado. Asegúrese de que estas
opciones aparecen en /etc/login.conf
:
nombre_del_idioma
:título_cuentas
:\
:charset=juego_de_caracteres_MIME
:\
:lang=nombre de la locale
:\
:tc=default:Así que, si seguimos con nuestro ejemplo anterior que usaba Latin-1, tendría este aspecto:
Utilice vipw
para añadir
nuevos usuarios, y haga que la entrada tenga este
aspecto:
idioma
:0:0:Nombre de usuario:/home/usuario:/bin/shUtilice adduser
para
añadir nuevos usuarios, y haga lo siguiente:
Establezca defaultclass =
en
idioma
/etc/adduser.conf
. Recuerde
que en este caso debe introducir una clase
default
(por omisión)
para todos los usuarios de otros idiomas.
Una variante alternativa es contestar el idioma indicado cada vez que adduser(8) muestre
Enter login class: default
[]:
Otra alternativa es utilizar lo siguiente para cada usuario de un idioma diferente al que desee añadir:
#
adduser -class
idioma
Si utiliza pw(8) para añadir nuevos usuarios, llámelo de esta manera:
#
pw useradd
nombre_usuario
-L
idioma
No se recomienda este método porque precisa de una configuración diferente para cada intérprete de órdenes que se pueda elegir. Utilice en su lugar el método de las clases de sesión.
Para añadir el nombre de la “locale
” y el juego de caracteres MIME, simplemente
establezca las dos variables de entorno mostradas abajo
en los ficheros de inicio del intérprete de
órdenes /etc/profile
y/o
/etc/csh.login
. Aquí abajo
usaremos el idioma alemán como ejemplo:
En /etc/profile
:
LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET
O en /etc/csh.login
:
setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1
Como alternativa, puede añadir las
instrucciones anteriores a /usr/share/skel/
dot.profile
(similar a lo que se
utilizó antes en /etc/profile
), o /usr/share/skel/dot.login
(similar a lo que se utilizó antes en
/etc/csh.login
).
Para X11:
En $HOME/.xinitrc
:
LANG=de_DE.ISO8859-1; export LANG
O:
setenv LANG de_DE.ISO8859-1
En función de su intérprete de órdenes (vea más arriba).
Para todos los juegos de caracteres representables con el
tipo char en C, establezca los tipos de letra para la consola
adecuados para el idioma en cuestión en
/etc/rc.conf
con:
nombre_del_tipo_de_letra
font8x14=nombre_del_tipo_de_letra
font8x8=nombre_del_tipo_de_letra
Aquí, el nombre_del_tipo_de_letra
se toma del directorio /usr/share/
syscons/fonts
, sin el sufijo .fnt
.
Asegúrese también de configurar los mapas
de teclado y pantalla correctos para su juego de
caracteres C por medio de sysinstall
(/stand/sysinstall
en versiones de FreeBSD
anteriores a la 5.2).
Una vez dentro de sysinstall
, seleccione , y después . Como alternativa, puede añadir lo
siguiente en /etc/rc.conf
:
nombre_del_mapa_de_pantalla
keymap=nombre_del_mapa_de_teclado
keychange="secuencia número_tecla_de_función
"Aquí, el nombre_del_mapa_de_pantalla
se toma del directorio /usr/share/
syscons/scrnmaps
, sin el sufijo .scm
. Normalmente es necesario un mapa de pantalla
(“screenmap”) con un tipo de letra
correspondiente para poder extender de 8 a 9 bits la matriz
de caracteres de una tarjeta VGA en un área
pseudográfica, es decir, desplazar las letras fuera
de ese área si el tipo de letra de pantalla usa una
columna de 8 bits.
Si tiene habilitado el dæmon moused
por configurar esto en su /etc/
rc.conf
:
entonces estudie la información sobre el cursor del ratón del siguiente párrafo.
Por omisión, el cursor del ratón del controlador syscons(4) ocupa el intervalo 0xd0-0xd3 del juego de caracteres. Si su idioma usa este intervalo, necesita desplazar el intervalo del cursor fuera de él. En versiones de FreeBSD anteriores a la 5.0, introduzca la siguiente línea en la configuración del núcleo:
En FreeBSD 4.4 y posteriores, introduzca la siguiente
línea en /etc/rc.conf
:
Aquí, el nombre_del_mapa_de_teclado
se toma del directorio /usr/share/
syscons/keymaps
, sin el sufijo .kbd
. Si no está seguro de cual mapa de
teclado usar, puede usar kbdmap(1) para probar los mapas
de teclado sin reiniciar.
Normalmente se necesita el keychange
para programar las teclas de función para que
coincidan con el tipo de terminal seleccionado, porque las
secuencias de las teclas de función no se pueden
definir en el mapa de teclado.
Asegúrese también de configurar el tipo de
terminal consola correcto en /etc/ttys
para todas las entradas ttyv*
. Las
correspondencias predefinidas actualmente son:
Juego de caracteres | Tipo de terminal |
---|---|
ISO-8859-1 o ISO-8859-15 | cons25l1 |
ISO-8859-2 | cons25l2 |
ISO-8859-7 | cons25l7 |
KOI8-R | cons25r |
KOI8-U | cons25u |
CP437 (predeterminada en VGA) | cons25 |
US-ASCII | cons25w |
Para los idiomas en caracteres anchos o multibyte,
utilice el port correcto de FreeBSD en su directorio
/usr/ports/
.
Algunos ports aparecen como consola mientras que el sistema
los ve como una vtty serie, por lo tanto debe reservar
suficientes vtty tanto para X11 como la consola
pseudoserie. Aquí tiene una lista parcial de
aplicaciones para usar otros idiomas en la consola:idioma
Idioma | Ubicación |
---|---|
Chino tradicional (BIG-5) | chinese/big5con
|
Japonés | japanese/kon2-16dot o
japanese/mule-freewnn |
Coreano | korean/han |
Aunque X11 no es parte del Proyecto FreeBSD, hemos incluido aquí algo de información para usuarios de FreeBSD. Para más detalles, acuda al sitio web de Xorg o del servidor X11 que utilice.
En ~/.Xresources
, puede afinar
más las opciones de I18N específicas de la
aplicación (v.g., tipos de letra, menús, etc).
Instale el servidor Xorg
(x11-servers/xorg-server
o el servidor XFree86™
(x11-servers/XFree86-4-Server
),
y despúes instale los tipos de letra TrueType® del idioma. La
configuración de la “locale” correcta para el
idioma debería permitirle ver el idioma seleccionado en
menús y similares.
Hay algunos juegos de caracteres de tipo char de C que están normalmente codificados por hardware en las impresoras. Los juegos de caracteres anchos o multibyte precisan de una configuración especial y recomendamos el uso de apsfilter. También puede convertir el documento a los formatos PostScript® o PDF usando conversores específicos del idioma.
El sistema de ficheros rápido (FFS) de FreeBSD funciona bien a 8 bits, así que se puede usar con cualquier juego de caracteres de tipo char de C (vea multibyte(3)), pero no hay almacenado ningún nombre de juego de caracteres en el sistema de ficheros; es decir, son 8 bits en bruto y no sabe nada acerca del orden de codificación. Oficialmente, FFS no soporta todavía ninguna forma de juegos de caracteres anchos o multibyte. Sin embargo, algunos juegos de caracteres anchos o multibyte tienen parches independientes para habilitar dicho soporte en FFS. Son solamente soluciones temporales no portables o “hacks”, y hemos decicido no incluirlas en el árbol de código fuente. Diríjase a los sitios web de los respectivos idiomas para encontrar más información y los parches.
El sistema de ficheros MS-DOS®de FreeBSD tiene la capacidad configurable de convertir entre los juegos de caracteres MS-DOS®, Unicode y los juegos de caracteres seleccionados del sistema de ficheros de FreeBSD. Vea mount_msdos(8) para más detalles.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Si tiene dudas sobre FreeBSD consulte la
documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a
<doc@FreeBSD.org>.