Next
Previous
Contents
A biblioteca padrão de funções do Linux suporta Internacionalização e
Localização segundo o padrão POSIX (Portable Operating System Interface).
Trata-se de uma norma estabelecida pelo IEEE (Institute of Electrical and
Electronics Engineers) para intercomunicação entre diferentes sistemas
operativos. Existe também um padrão estabelecido pelo ANSI (American National
Standards Institute) para a linguagem de programação C que permite escrever
programas com 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 .
Até meados de 1997 todas as distribuições de Linux usavam a mesma biblioteca
libc, que estava na versão 5, desenvolvida a partir de uma versão
mais antiga da libc do projeto GNU. Esta biblioteca possuia suporte muito
limitado à internacionalização e normalmente nenhum dos catálogos de locais
era incluído na distribuição, ficando o inglês como língua padrão.
A versão 6 da libc do Linux baseia-se na versão 2 da libc do projeto GNU. O
suporte à internacionalização foi muito melhorado, além de incluir outros
atributos que não interessam para os fins deste HOWTO. Se sua distribuição for
a Debian versão 2, Red Hat versão 5 ou qualquer outra que use a nova libc,
então não há mais nada a fazer além do descrito na seção anterior.
Mas se você usa uma distribuição ainda baseada na libc 5 (Slackware, Caldera
1.x ou uma versão mais antiga de Debian ou Red Hat) é preciso instalar a
coleção de locais. Não tente copiar a coleção de uma distribuição mais
recente, pois os formatos dos arquivos são incompatíveis. Pegue na página do
Portuguese HOWTO o arquivo locales-pt.tgz . Para instalá-lo na
distribuição Slackware, basta (como usuário root) usar o comando
installpkg locales-pt.tgz
e para outras distribuições use o comando
tar xzf locales-pt.tgz -C /
Verifique se há dois subdiretórios do /usr/share/locale chamados
pt_BR e pt_PT . Basta então configurar a variável de ambiente
LC_ALL, como já descrito.
Next
Previous
Contents
|