próximo acima anterior sumário índice
Next: Problemas com a libc Up: Biblioteca de funções libc Previous: Biblioteca de funções libc   Sumário   Índice Remissivo

Configurando o suporte internacional

Resumidamente, podemos dizer que as funções que tratam informações dependentes da língua ou do país podem ter seu comportamento modificado, bastando para tanto estabelecer algumas variáveis de ambiente. E que funções são essas? Podemos citar as de formatação de datas, valores monetários e mensagens de erro do sistema. Se você não sabe o que é uma variável de ambiente, sugiro que leia o manual com o comando

    man environ

O padrão POSIX permite usar diversas variáveis de configuração, cada uma delas definindo o tratamento dado a um tipo de informação, a saber

LC_COLLATE

Define regras para comparação entre caracteres no alfabeto local. Por exemplo, a letra `ã' deve ser tratada como idêntica ao `a' no Português quando ordenamos alfabeticamente.

LC_CTYPE

Define regras para comparação entre caracteres maiúsculos e minúsculos. Se estivermos trabalhando com o código ASCII, sabemos que o código numérico de uma letra minúscula é 32 a mais do que a maiúscula correspondente, mas para uma letra acentuada esta regra não é válida!

LC_MONETARY

Muda o comportamento das funções de formatação de valores monetários e permite descobrir, por exemplo, o símbolo da moeda local, ou se usa ponto ou vírgula como separador de milhares e de casas decimais.

LC_MESSAGES

Estabelece a língua em que as mensagens serão apresentadas e como é uma resposta afirmativa ou negativa (S/N).

LC_NUMERIC

Estabelece o comportamento das funções de leitura/escrita de valores numéricos permitindo, por exemplo que usemos a vírgula decimal.

LC_TIME

Define a formatação de datas e horas.

LC_ALL

Define de uma só vez todas as categorias. Se usarmos LC_ALL, não precisaremos definir nenhuma das outras, a não ser que queiramos um comportamento diferente para aquele ítem específico.

LANG

Define de uma só vez todas as categorias, se LC_ALL não estiver definida. Também é usada pelo comando man para compor os caminhos pelos quais ele procurará as páginas do manual. Veja as observações a respeito desta variável nas seções [*] (Locale), [*] (Locale) e [*] (Locale).

Maiores informações podem ser obtidas no manual do sistema com o comando

    man 7 locale

O `7' no comando anterior é necessário para evitar confusão com uma função homônima da linguagem Perl. Note que as configurações acima afetam, em princípio, apenas as funções disponíveis na biblioteca de funções da linguagem C. Na prática, todos os programas que rodam em Linux usam aquela biblioteca, mas o sistema operativo não provê, catálogos de mensagens em diversas línguas para todos os programas.

A identificação da língua e do local é feita por dois códigos de duas letras, separados por um sinal ``_''. Se omitirmos o código de país, assume-se o país padrão para a língua informada, mas deve haver um catálogo correspondente. Deste modo, o código ``pt_PT'' significa Português de Portugal, enquanto ``pt_BR'' significa Português do Brasil. Escolher uma combinação língua/local basta então colocar em seu arquivo /etc/profile uma linha contendo

    LC_ALL="pt_PT"
    export LC_ALL

Usuários brasileiros devem usar ``pt_BR'' ao invés de ``pt_PT''. Teste o resultado com os comandos a seguir (/inexistente é o nome de um arquivo que não existe):

    echo ÁÉÍÓÚ | tr '[:upper:]' '[:lower:]'
    tar tf /inexistente
    ls -l /
    date
    cal 1 1999

O resultado do primeiro deverá ser ``áéíóú''. Os comandos tar e ls devem retornar mensagens em Português e cal deve mostrar um calendário de janeiro de 1999, com do se te qu qu se sá no cabeçalho dos dias da semana.

Na distribuição Debian, certifique-se de ter instalado o pacote ``locales'', que pertence ao grupo ``admin''. O nome do arquivo que contém o pacote (na versão 2.0 da distribuição) é locales_2.0.7t-1.deb e em meu CD está no diretório debian/main/binary-i386/admin.


próximo acima anterior sumário índice
Next: Problemas com a libc Up: Biblioteca de funções libc Previous: Biblioteca de funções libc   Sumário   Índice Remissivo
Cyro Mendes de Moraes Neto 1999-12-30