NOME
locale − Descrição de suporte multi-linguagem
SINOPSE
#include <locale.h>
DESCRIÇÃO
Um locale é um conjunto de regras de linguagem e cultura. Elas cobrem aspectos tais como linguagem para mensagens, conjuntos diferentes de caracteres, convenções lexicográficas, etc. Um programa precisa ser capaz de determinar seu locale e atuar de acordo, para ser portável para diferentes culturas.
O cabeçalho <locale.h> declara tipos de dados, funções e macros que são úteis nesta tarefa.
As funções que ele declara são setlocale() para configurar o locale corrente, e localeconv() para adquirir informação sobre formatação de números.
Há
categorias diferentes para informação de local
que um programa possa precisar; elas são declaradas
como macros. Usando-as como o primeiro argumento para a
função setlocale() , é
possível configurar um dos locales desejados:
LC_COLLATE
Isto é usado para mudar o comportamento das funções strcoll() e strxfrm(), que são usadas para comparar strings no alfabeto local. Por exemplo, o ’s’ afiado da língua alemã é colocado na lista como "ss".
LC_CTYPE
Isto muda o comportamento da manipulação de caracteres e das funcções de classificação, tais como isupper() e toupper(), e as funções de caracter multi−byte, tais como mblen() ou wctomb().
LC_MONETARY
muda a informação retornada por localeconv() , que descreve a maneira como os números geralmente impressos, com detalhes tais como ponto versus vírgula para separação de decimais. Esta informação é usada internamente pela função strfmon().
LC_MESSAGES
muda as mensagens de linguagem que são exibidas, e a aparência de uma resposta afirmativa ou negativa. A biblioteca GNU C contém a função rpmatch() para facilitar o uso dessa informação.
LC_NUMERIC
muda a informação usada pela família de funções printf() e scanf() , quando elas são avisadas para usar as configurações de locale. Esta informação também pode ser lida com a função localeconv()
LC_TIME
muda o comportamento da função strftime() para exibir a hora corrente em um formato localmente aceitável; por exemplo, a maioria da Europa usa o relógio de 24 horas, em vez do relógio de 12 horas como nos EUA.
LC_ALL |
Tudo o que está acima. |
Se o segundo argumento de setlocale() é uma string vazia, "", para o locale padrão, ele é determinado através dos seguintes passos:
1. |
Se há uma variável de ambiente LC_ALL não-nula, o valor de LC_ALL é usado. | ||
2. |
Se existe uma variável de ambiente com o mesmo nome que uma das categorias acima, e ela não é nula, seu valor é usado para aquela categoria. | ||
3. |
Se há uma variável de ambiente LANG não-nula, o valor de LANG é usado. |
Valores
relativos a formatação numérica local
se faz disponível em uma estrutura struct
lconv retornada pela função
localeconv(), que tem a seguinte
declaração:
struct lconv
{
/* Informação numérica
(não-monetária) */
/* caractere de separação de decimais */
| |||||
/* separador de milhar */ |
/* Cada elemento é um
número de dígitos em cada grupo;
elementos com índices maiores estão à
esquerda.
Um elemento com valor CHAR_MAX significa que mais nenhum
agrupamento está feito.
Um elemento com valor 0 significa que o elemento anterior
é usado para
todos os grupos à esquerda */
char *grouping;
/* Informação monetária */
/* Os primeiros
três caracteres são o símbolo
monetário do ISO 4217.
O quarto caractere é o separador. O quinto é
’ ’. */
char *int_curr_symbol;
/* Símbolo monetário local. */ |
/* Caractere de separação decimal. */ | |||||
/* Separador de milhar. */ | ||||||
/* Elemento de agrupamento (acima). */ | ||||||
/* Sinal para valores positivos. */ | ||||||
/* Sinal para valores negativos. */ | ||||||
/* Dígitos fracionários internacionais. */
| ||||||
/* Dígitos fracionários locais. */ |
/* 1 se currency_symbol precede
um valor positivo, 0 se sucede. */
char p_cs_precedes;
/* 1 se um espaço separa currency_symbol de um valor
positivo. */
char p_sep_by_space;
/* 1 se currency_symbol precede um valor negativo, 0 se
sucede. */
char n_cs_precedes;
/* 1 se um espaço separa currency_symbol de um valor
negativo. */
char n_sep_by_space;
/* Posições dos sinais positivo e negativo:
0 Parênteses rodeiam o valor e o currency_symbol.
1 A string de sinal precede o valor e o currency_symbol.
2 A string de sinal suceede o valor e o currency_symbol.
3 A string de sinal precede imediatamente o currency_symbol.
4 A string de sinal sucede imediatamente o currency_symbol.
*/
char p_sign_posn;
char n_sign_posn;
};
CONFORME
POSIX.1
VEJA TAMBÉM
setlocale(3), localeconv(3), locale(1), localedef(1), rpmatch(3), strfmon(3), strcoll(3), strxfrm(3), strftime(3)
TRADUZIDO POR LDP-BR em 21/08/2000.
Rubens de Jesus Nogueira <darkseid99 [AT] usa.net> (tradução) André L. Fassone Canova <lonelywolf [AT] blv.br> (revisão)