SETLOCALE(3)

NOME
setlocale - define a localização atual

SINÓPSE
#include <locale.h>

char *setlocale(int categoria, const char * localização);

DESCRIÇÃO
A função setlocale() é usada para definir ou verificar a localização atual do programa.

Se a localização for diferente de NULO, a localização atual do programa será modificado de acordo com os argumentos. O argumento categoria determina que partes da localização atual do programa devem ser modificadas.

LC_ALL
    para todo a localização.

LC_COLLATE
    para verificação de correspondências (casamento) de expressões regulares (determina o significado de expressões de intervalo e classes de equivalência) e composição de letras.

LC_CTYPE
    para verificação de correspondências de expressões regulares, classificação de caracteres, conversão, comparação sensível à caixa e funções de caracteres amplos.

LC_MESSAGES
    para mensagens localizáveis em linguagem natural.

LC_MONETARY
    para formatação monetária.

LC_NUMERIC
    para formatação de números (como o separador decimal e o de milhares).

LC_TIME
    para formatação de data e hora.

O argumento localização é um ponteiro para uma seqüencia de caracteres contendo a configuração necessária da categoria. Tal seqüencia pode ser tanto uma constante bem conhecida como 'C' ou 'da_DK' (veja abaixo), ou uma seqüencia qualquer retornada por alguma outra chamada de setlocale.

Se localização for "", cada parte da localização que deve ser modifica é definida de acordo com as variáveis de ambiente. Os detalhes dependem da implementação. Para a glibc, primeiro (independentemente da categoria), a variável de ambiente LC_ALL é inspecionada, depois a variável de ambiente com o mesmo nome como categoria (LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME), e, finalmente, a variável de ambiente LANG. A primeira variável de ambiente existente será usada. Se seu valor não for uma especificação válida da localização, a localização não será alterado, e setlocale retorna NULO.

As localizações 'C' ou 'POSIX' são localizações portáveis; sua parte LC_CTYPE corresponde ao conjunto de caracteres ASCII de 7 bits.

Um nome da localização está tipicamente no formato idioma[_território][.código][@modificador], onde idioma é um código de idioma ISO 639, território é um código de país ISO 3166, e código é o conjunto de caracteres ou um identificador de codificação como ISO-8859-1 ou UTF-8. Para uma lista de todos as localizações suportados, tente um 'locale -a', cf. locale(1).

Se localização for NULO, a localização atual é apenas testado, não modificado.

Durante a inicialização do programa principal, a localização portável 'C' é selecionado por padrão. Um programa pode ser tornado portável para todas as localizações através da chamada setlocale(LC_ALL, "" ) após a inicialização do programa, usando os valores retornados de uma chamada localeconv() para informações dependentes das localizações, usando funções multibyte e de caracteres amplos para processamento de texto se MB_CUR_MAX > 1, e usando strcoll(), wcscoll() ou strxfrm(), wcsxfrm() para comparar strings.

VALOR DE RETORNADOS
Uma chamada bem-sucedida a setlocale() retorna uma string 'opaca' que corresponde à localização definida. Essa string pode ser alocada no armazenamento estático. A string retornada é tal que uma chamada subseqüente a ela e a sua categoria associada irá restaurar parte da localização do processo. O valor de retorno é NULO se o pedido não puder ser atendido.

DE ACORDO COM
ANSI C, POSIX.1.

NOTAS
Linux (isto é, a GNU libc) suporta as localizações portáveis 'C' e 'POSIX' . Nos bons velhos tempos costumava haver suporte para a localização Latin-1 Europeu 'ISO-8859-1' (por exemplo, na libc-4.5.21 e na libc-4.6.27), e o Russo 'KOI-8' ('koi-8r', mais precisamente - por exemplo, na libc-4.6.27), de forma que uma variável de ambiente LC_CTYPE=ISO-8859-1 era suficiente para fazer o isprint() retornar a resposta correta. Atualmente, os europeus de línguas não inglesas têm um pouco mais de trabalho, e precisam instalar arquivos reais de localização.

VEJA TAMBÉM
locale(1), localedef(1), strcoll(3), isalpha(3), localeconv(3), strftime(3), charsets(4), locale(7).

TRADUZIDO POR LDP-BR em 12/06/2001.

  Tradução:
E. A. Tacão <tacao@conectiva.com.br>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>