LOCALE(7) Manual del Programador de Linux LOCALE(7)
locale - Descripción del soporte para múltiples idiomas
#include <locale.h>
Una localización (locale) es un conjunto de reglas culturales e
idiomáticas que abarcan aspectos tales como el idioma usado para men‐
sajes, diferentes juegos de caracteres, convenios lexicográficos, etc.
Un programa debe poder determinar su localización y actuar apropiada‐
mente para poder ser transportado a diferentes culturas.
El fichero de cabecera <locale.h> declara los tipos de datos, funciones
y macros utilizados en esta tarea.
Las funciones que se declaran son setlocale() para establecer la local‐
ización actual, y localeconv() 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 cate‐
gorÃas como primer argumento para la función setlocale() es posible
modificar uno de los siguientes atributos para que usen la local‐
ización adecuada:
LC_COLLATE
Usado para cambiar el comportamiento de las funciones strcoll()
y strxfrm(), que comparan cadenas de caracteres usando el alfa‐
beto local. Por ejemplo, el carácter Alemán à (‘ese aguda ale‐
mana’) se alfabetiza como "ss".
LC_TYPE
Modifica el comportamiento de las funciones que manipulan y
clasifican caracteres, tales como isupper() y toupper(), y las
funciones de caracteres multi-byte como mblen() o wctomb().
LC_MONETARY
Modifica la información devuelta por localeconv() que describe
el formato en que los números deben ser impresos, incluyendo
detalles tales como el uso del punto o la coma decimal. Esta
información es usada internamente por la función strfmon().
LC_MESSAGES
Cambia el idioma en el que se muestran los mensajes, y cómo
debe ser una respuesta afirmativa o negativa. La biblioteca de C
de GNU contiene las funciones gettext(), ngettext(), y rpmatch()
para facilitar el uso de esta información. La familia GNU de
funciones gettext también obedecen a la variable de entorno
LANGUAGE.
LC_NUMERIC
cambia la información empleada por las familias de funciones
printf() y scanf() cuando se les informa de que utilicen las
caracterÃsticas locales. Esta información también puede
obtenerse con la función localeconv().
LC_TIME
Modifica el comportamiento de la función strftime() para
mostrar la hora actual usando el formato local apropiado; por
ejemplo, en casi toda Europa se utiliza el formato de 24 horas
mientras que en Estados Unidos se emplea el de 12 horas.
LC_ALL Todas las categorÃas anteriores.
Si el segundo argumento de la función setlocale() es una cadena
vacÃa, "", se usa la localización predeterminada. Esta localización
se determina de la siguiente forma:
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().
Dicha estructura tiene la siguiente declaración:
struct lconv
{
/* Información numérica no monetaria. */
char *decimal_point; /* Caracter usado como punto decimal. */
char *thousands_sep; /* Separador de miles. */
/* Cada elemento indica el número de dÃgitos en cada grupo;
los elementos con Ãndices altos están hacia la izquierda.
Un elemento con valor CHAR_MAX indica que a partir de esa
posición no se deben agrupar mas dÃgitos.
Un elemento con valor 0 indica que se debe usar el elemento
anterior para todos los grupos hacia la izquierda. */
char *grouping;
/* Información monetaria. */
/* Los primeros tres caracteres son el sÃmbolo monetario según
ISO 4217. El cuarto caracter es el separador. El quinto
caracter es ’ ’. */
char *int_curr_symbol;
char *currency_symbol; /* SÃmbolo monetario local. */
char *mon_decimal_point; /* Caracter usado como punto decimal. */
char *mon_thousands_sep; /* Separador de miles. */
char *mon_grouping; /* Igual que el campo ‘grouping’(arriba) */
char *positive_sign; /* Signo para valores positivos. */
char *negative_sign; /* Signo para valores negativos. */
char int_frac_digits; /* DÃgitos fraccionales internacionales. */
char frac_digits; /* DÃgitos fraccionales locales. */
char p_cs_precedes; /* 1 si el sÃmbolo monetario precede a un
valor positivo, 0 si lo sucede. */
char p_sep_by_space; /* 1 si un espacio separa el sÃmbolo
monetario de un valor positivo. */
char n_cs_precedes; /* 1 si el sÃmbolo monetario precede a
un valor negativo, 0 si lo sucede. */
char n_sep_by_space; /* 1 si un espacio separa el sÃmbolo
monetario de un valor negativo. */
/* Posiciones de los signos positivo y negativo:
0 Paréntesis rodean a la cantidad y al sÃmbolo monetario.
1 El signo precede a la cantidad y al sÃmbolo monetario.
2 El signo sucede a la cantidad y al sÃmbolo monetario.
3 El signo precede en forma inmediata al sÃmbolo monetario.
4 El signo sucede en forma inmediata al sÃmbolo monetario. */
char p_sign_posn;
char n_sign_posn;
};
POSIX.1
Las funciones gettext de GNU están especificadas en LI18NUX2000.
setlocale(3), localeconv(3), locale(1), localedef(1), nl_langinfo(3),
gettext(3), ngettext(3), rpmatch(3), strfmon(3), strcoll(3),
strxfrm(3), strftime(3)
Linux 24 abril 1993 LOCALE(7)