Scroll to navigation

locale(7) Miscellaneous Information Manual locale(7)

NOMBRE

locale - descripción del soporte para múltiples idiomas

SINOPSIS

#include <locale.h>

DESCRIPCIÓN

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:

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.
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'.
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).
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.
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).
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).
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.).
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>.
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).
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.
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>.)
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).
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; };

Extensiones POSIX.1-2008 para la API local

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.

ENTORNO

newlocale(3) y setlocale(3) utilizan la siguiente variable de entorno y, por lo tanto, afecta a todos los programas localizados sin privilegios:

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.

ARCHIVOS

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

ESTÁNDARES

POSIX.1-2001.

VÉASE TAMBIÉN

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)

TRADUCCIÓN

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.

2 Mayo 2024 Páginas de Manual de Linux (no publicadas)