LOCALE(7)

NOME
locale - descrição de suporte multi-linguagem

SINÓPSE
#include <locale.h>

DESCRIÇÃO
Uma localização é 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 localização 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 uma localização, 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 das localizações 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 funçõ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 da localização. 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 atual 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 cadeia de caracteres vazia, "", para a localização 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) */
  char *decimal_point;		/* caractere de separação de decimais */
  char *thousands_sep;		/* 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
     é 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;
  char *currency_symbol;	/* Símbolo monetário local. */
  char *mon_decimal_point;	/* Caractere de separação decimal. */
  char *mon_thousands_sep;	/* Separador de milhar. */
  char *mon_grouping;		/* Elemento de agrupamento (acima). */
  char *positive_sign;		/* Sinal para valores positivos. */
  char *negative_sign;		/* Sinal para valores negativos. */
  char int_frac_digits;		/* Dígitos fracionários internacionais. */
  char frac_digits;		/* 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;
};

DE ACORDO COM
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.

  Tradução:
Rubens de Jesus Nogueira <darkseid99@usa.net>

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