locale - descripción del soporte para múltiples
idiomas
Una localización regional (locale) es un conjunto de reglas
culturales e idiomáticas que abarcan aspectos tales como el idioma
usado para mensajes, diferentes conjuntos de caracteres, convenciones
lexicas, etc. Un programa debe poder determinar su localización y
actuar en consecuencia para poder portarse a diferentes culturas.
El encabezado <locale.h> declara tipos de datos,
funciones y macros útiles para esta tarea.
Las funciones que se declaran son setlocale(3) para
establecer la localización actual, y localeconv(3) para
obtener información acerca de formatos numéricos.
Un programa puede necesitar varias categorías de
información local, las cuales se determinan utilizando macros. Usando
una de estas categorías como primer argumento para la función
setlocale(3) es posible modificar uno de los siguientes atributos
para que usen la localización adecuada:
- LC_ADDRESS
(extensión de GNU, a partir de glibc 2.2)
- Modifica la configuración que describe los formatos (como por
ejemplo las direcciones postales) utilizados para describir ubicaciones y
elementos relacionados con la geografía. Las aplicaciones que
necesitan esta información pueden usar nl_langinfo(3) para
obtener elementos no estándar, como _NL_ADDRESS_COUNTRY_NAME
(nombre del país, en su configuración regional) y
_NL_ADDRESS_LANG_NAME (nombre del idioma, en el idioma de su
configuración regional), que devolverían cadenas como
'Deutschland' y 'Deutsch' para configuraciones regionales en
alemán. En <langinfo.h> figuran otros nombres de
elementos.
- LC_COLLATE
- Esta categoría rige las reglas de clasificación utilizadas
para la ordenación y las expresiones regulares, incluidas las
clases de equivalencia de caracteres y los elementos de
clasificación de varios caracteres. Esta categoría de
configuración regional cambia el comportamiento de las funciones
strcoll(3) y strxfrm(3), que se utilizan para comparar
cadenas en el alfabeto local. Por ejemplo, la s sostenida alemana se
clasifica como 'ss'.
- LC_CTYPE
- Esta categoría determina la interpretación de secuencias de
bytes como caracteres (por ejemplo, caracteres de un solo byte o
multibyte), clasificaciones de caracteres (por ejemplo, alfabéticos
o dígitos) y el comportamiento de las distintas clases de
caracteres. En los sistemas glibc, esta categoría también
determina las reglas de transliteración de caracteres para
iconv(1) y iconv(3). Cambia el comportamiento de las
funciones de clasificación y manejo de caracteres, como
isupper(3) y toupper(3), y las funciones de caracteres
multibyte como mblen(3) o wctomb( 3).
- LC_IDENTIFICATION
(extensión GNU, desde glibc 2.2)
- Modifica la parte de la configuración relacionada con los metadatos
de la configuración regional. Las aplicaciones que necesitan esta
información pueden usar nl_langinfo(3) para recuperar
elementos no estándar, como _NL_IDENTIFICATION_TITLE
(título de este documento de configuración local) y
_NL_IDENTIFICATION_TERRITORY (territorio geográfico al que
se aplica este documento local), esto retornará cadenas como
'Configuración regional en inglés para EE. UU.' y 'EE. UU.'.
En <langinfo.h> se encuentran otros nombres de
elementos.
- LC_MONETARY
- Esta categoría determina el formato utilizado para los valores
numéricos relacionados con temas monetarios. Esto cambia la
información devuelta por localeconv(3), que describe la
forma en que normalmente se muestran los números, con detalles como
punto decimal o bien con coma decimal. Esta información es
utilizada internamente por la función strfmon(3).
- LC_MESSAGES
- Esta categoría afecta el idioma en el que se muestran los mensajes
y el aspecto de una respuesta afirmativa o negativa. La biblioteca GNU C
contiene las funciones gettext(3), ngettext(3) y
rpmatch(3) para facilitar el uso de esta información. La
familia de funciones GNU gettext también observa la variable de
entorno LANGUAGE (que contiene una lista de configuraciones
regionales separadas por dos puntos) si la categoría está
configurada en una configuración regional válida distinta de
"C". Esta categoría también afecta al
comportamiento de catopen(3).
- LC_MEASUREMENT
(extensión de GNU, a partir de glibc 2.2)
- Modifica las configuraciones relacionadas con el sistema de medidas local
(es decir, unidades métricas frente unidades habituales de EE.
UU.). Las aplicaciones pueden usar nl_langinfo(3) para obtener el
elemento _NL_MEASUREMENT_MEASUREMENT no estándar, que
devuelve un puntero a un carácter que tiene el valor 1
(métrico) o 2 (unidades habituales de EE. UU.).
- LC_NAME
(extensión de GNU, desde glibc 2.2)
- Modifica la configuración que describe los formatos utilizados para
dirigirse a las personas. Las aplicaciones que necesitan esta
información pueden usar nl_langinfo(3) para recuperar
elementos no estándar, como los elementos _NL_NAME_NAME_MR
(saludo general para hombres) y _NL_NAME_NAME_MS (saludo general
para mujeres), que devuelverían cadenas como ' Herr' y 'Frau' en la
configuración regional alemana. Otros nombres de elementos se
enumeran en <langinfo.h>.
- LC_NUMERIC
- Esta categoría determina las reglas de formato utilizadas para
valores numéricos no monetarios—por ejemplo, el separador de
miles y el carácter para separar los miles (un punto en la
mayoría de los países de habla inglesa, pero una coma en
muchas otras regiones). Afecta a funciones como printf(3),
scanf(3) y strtod(3). Esta información también
se puede leer con la función localeconv(3).
- LC_PAPER
(extensión de GNU, desde glibc 2.2)
- Modifica las configuraciones relacionadas con las dimensiones del
tamaño de papel estándar (por ejemplo, carta estadounidense
versus A4). Las aplicaciones que necesitan las dimensiones pueden
obtenerlas usando nl_langinfo(3) para recuperar los elementos no
estándar _NL_PAPER_WIDTH y _NL_PAPER_HEIGHT, que
devuelven valores int que especifican las dimensiones en
milímetros.
- LC_TELEPHONE
(extensión de GNU, desde glibc 2.2)
- Modifica la configuración que describe los formatos que se
utilizarán con los servicios telefónicos. Las aplicaciones
que necesitan esta información pueden usar nl_langinfo(3)
para recuperar elementos no estándar, como
_NL_TELEPHONE_INT_PREFIX (prefijo internacional utilizado para
llamar a números en esta configuración regional), que
devuelvería una cadena como '49' para Alemania. (Otros nombres de
elementos se enumeran en <langinfo.h>.)
- LC_TIME
- Esta categoría rige el formato utilizado para los valores de fecha
y hora. Por ejemplo, la mayor parte de Europa utiliza un formato de 24
horas, frente al de 12 horas que se utiliza en Estados Unidos. La
configuración de esta categoría afecta al comportamiento de
funciones como strftime(3) y strptime(3).
- LC_ALL
- Todas las categorías anteriores.
Si el segundo argumento de setlocale(3) es una cadena
vacía, "", para la configuración regional
predeterminada, se determina mediante estos pasos:
- (1)
- Si la variable de entorno LC_ALL existe y tiene un valor no nulo,
se usa este valor.
- (2)
- Si existe una variable de entorno con el mismo nombre que una de las
categorías, y su valor es no nulo, se usa ese valor para dicha
categoría.
- (3)
- Si la variable de entorno LANG, existe y su valor no es
vacío, se usa dicho valor.
Se puede obtener información sobre el formato
numérico local usando la estructura struct lconv devuelta por
la función localeconv(3). Dicha estructura tiene la siguiente
declaración:
struct lconv {
/* Información numérica (no monetaria) */
char *decimal_point; /* Separador de decimales */
char *thousands_sep; /* Separador de miles */
char *grouping; /* Cada elemento corresponde a la cantidad
de dígitos en un grupo. Se ordenan los
dígitos de izquierda a derecha
Un elemento con valor CHAR_MAX indica
que no se hará ninún reagrupamiento
adicional.
Un elemento con valor 0 indica que el
elemento anterior se usa para todos
los grupos más a su izquierda */
/* El resto de campos son para información monetaria */
char *int_curr_symbol; /* Los primeros tres caracteres son
un símbolo moentario de ISO 4217.
el cuarto es un separador. El
quinto es '\0'. */
char *currency_symbol; /* Símbolo de la moneda local */
char *mon_decimal_point; /* Radix character */
char *mon_thousands_sep; /* Igual que thousands_sep antes*/
char *mon_grouping; /* Igual que grouping antes */
char *positive_sign; /* Signo para valores positivos */
char *negative_sign; /* Signo para valores negativos */
char int_frac_digits; /* Dígitos fraccionales internac. */
char frac_digits; /* Dígitos fraccionales locales */
char p_cs_precedes; /* 1 si el símbolo de moneda
precede un valor positivo,
0 si va después */
char p_sep_by_space; /* 1 si un espacio separa el símbolo
de moneda de un valor positivo */
char n_cs_precedes; /* 1 si el símbolo de moneda precede
un valor negativo, 0 si va después. */
char n_sep_by_space; /* 1 si un espacio separa el símbolo
de moneda de un valor negativo.*/
/* Posiciones del los signos positivo y negativo:
0 La cantidad y el símbolo de moneda van entre parentesis.
1 El signo precede a la cantidad y al símbolo de la moneda.
2 El signo va después de la cantidad y del símbolo de moneda.
3 El signo preced inmediatamente al símbolo de la moneda.
4 El signo va inmediatamente después del signo de la moneda. */
char p_sign_posn;
char n_sign_posn;
};
POSIX.1-2008 estandarizó una serie de extensiones para la
API local, basadas en implementaciones que aparecieron por primera vez en
glibc 2.3. Estas extensiones fueron diseñadas para abordar el
problema de interrelación de las API de configuración regional
tradicionales con aplicaciones multiproceso y con aplicaciones que deben
manejar múltiples configuraciones regionales.
Las extensiones toman la forma de nuevas funciones para crear y
manipular objetos locales (newlocale(3), freelocale(3),
duplocale(3) y uselocale(3)) y varias nuevas funciones de
biblioteca con el sufijo '_l' (por ejemplo, toupper_l(3)) que
amplían las API tradicionales dependientes de la configuración
regional (por ejemplo, toupper(3)) para permitir la
especificación de un objeto de configuración regional que debe
aplicarse al ejecutar la función.
newlocale(3) y setlocale(3) utilizan la siguiente
variable de entorno y, por lo tanto, afecta a todos los programas
localizados sin privilegios:
- LOCPATH
- Lista de rutas, separados por dos puntos (':'), que deben usarse para
buscar datos locales. Si se establece esta variable, solo se utilizan los
archivos de datos locales individuales de LOCPATH y la ruta de
datos local predeterminada del sistema; no se utilizan los archivos
locales disponibles (consulte localedef(1)). Los archivos de datos
locales compilados individuales se buscan en subdirectorios que dependen
de la configuración regional utilizada actualmente. Por ejemplo,
cuando se utiliza en_GB.UTF-8 para una categoría, se
buscarán los siguientes subdirectorios, en este orden:
en_GB.UTF-8, en_GB.utf8, en_GB, en.UTF-8,
en.utf8 y en.
- /usr/lib/locale/locale-archive
- Ubicación habitual por defecto del archivo de la
configuración regional.
- /usr/lib/locale
- Ruta predeterminada habitual para archivos locales individuales
compilados.
iconv(1), locale(1), localedef(1),
catopen(3), gettext(3), iconv(3), localeconv(3),
mbstowcs(3), newlocale(3), ngettext(3),
nl_langinfo(3), rpmatch(3), setlocale(3),
strcoll(3), strfmon(3), strftime(3), strxfrm(3),
uselocale(3), wcstombs(3), locale(5),
charsets(7), unicode(7), utf-8(7)
La traducción al español de esta página del
manual fue creada por Diego Novillo <diego@cs.ualberta.ca>, Gerardo
Aburruzaga García <gerardo.aburruzaga@uca.es>, Miguel
Pérez Ibars <mpi79470@alu.um.es> y Marcos Fouces
<marcos@debian.org>
Esta traducción es documentación libre; lea la
GNU General
Public License Version 3 o posterior con respecto a las condiciones de
copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta
página del manual, envíe un correo electrónico a
debian-l10n-spanish@lists.debian.org.