NOMBRE
locale − Descripción del soporte para múltiples idiomas
SINOPSIS
#include <locale.h>
DESCRIPCIÓN
Una localización (locale) es un conjunto de reglas culturales e idiomáticas que abarcan aspectos tales como el idioma usado para mensajes, diferentes juegos de caracteres, convenios lexicográficos, etc. Un programa debe poder determinar su localización y actuar apropiadamente 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 localizació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 categorías
como primer argumento para la función
setlocale() es posible modificar uno de los
siguientes atributos para que usen la localización
adecuada:
LC_COLLATE
Usado para cambiar el comportamiento de las funciones strcoll() y strxfrm(), que comparan cadenas de caracteres usando el alfabeto local. Por ejemplo, el carácter Alemán ß (’ese aguda alemana’) 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. */
/* Caracter usado como punto decimal. */ | |||||
/* 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;
/* Símbolo monetario local. */ | |||||
/* Caracter usado como punto decimal. */ | |||||
/* Separador de miles. */ | |||||
/* Igual que el campo ’grouping’(arriba) */
| |||||
/* Signo para valores positivos. */ | |||||
/* Signo para valores negativos. */ | |||||
/* Dígitos fraccionales internacionales. */ | |||||
/* Dígitos fraccionales locales. */ | |||||
/* 1 si el símbolo monetario precede a un |
valor positivo, 0 si lo sucede. */
/* 1 si un espacio separa el símbolo |
monetario de un valor positivo. */
/* 1 si el símbolo monetario precede a |
un valor negativo, 0 si lo sucede. */
/* 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;
};
CONFORME A
POSIX.1
Las funciones gettext de GNU están especificadas en
LI18NUX2000.
VÉASE TAMBIÉN
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)