Locale (Português)

Status de tradução:
Esse artigo é uma tradução de
Locale
. Data da última tradução: 2024-01-11. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Variáveis de ambiente
Localização
Locales
, por vezes chamados em português de
localidades
, são usados pelo
glibc
e outros programas ou bibliotecas conscientes de locales para renderizar texto, exibindo corretamente valores monetários regionais, formatos de hora e data, idiossincrasias alfabéticas e outros padrões específicas para locales.
Gerando locales
Nomes de locales geralmente possuem a forma
idioma[território][.código][@modificador]
, sendo
idioma
um
código de idiomas da ISO 639
,
território
um
código de países da ISO 3166
e
.código
uma
codificação de caracteres
ou identificador de codificação como
ISO-8859-1
ou
UTF-8
. Veja
setlocale(3)
.
Para uma lista de locales habilitados, execute:
$ locale -a
Antes que um locale possa ser habilitado no sistema, ele deve ser gerado. Isso pode ser alcançado descomentando as entradas corretas em
/etc/locale.gen
e executando
locale-gen
. Da mesma forma, comentar entradas desabilita seus respectivos locales. Ao fazer alterações, considere quaisquer localizações necessárias para outros usuários no sistema, bem como
#Variáveis
específicas.
Por exemplo, descomente
pt_BR.UTF-8 UTF-8
para português brasileiro:
/etc/locale.gen
...
#ps_AF UTF-8  
pt_BR.UTF-8 UTF-8  
#pt_BR ISO-8859-1
...
Salve o arquivo e gere o locale:
# locale-gen
Nota
locale-gen
também é executado em toda atualização de
glibc
.
[1]
UTF-8
é recomendado sobre outras codificações de caracteres.
[2]
Configurando o locale
Para exibir o locale atualmente configurado e suas configurações ambientais relacionadas, digite:
$ locale
O locale a ser usado, escolhido dentre os previamente gerados, é configurado em arquivos
locale.conf
. Cada um desses arquivos deve conter uma lista, separada por nova linha, de atribuições de
variáveis de ambiente
, tendo o mesmo formato que a saída de
locale
.
Para listar os locales disponíveis que foram gerados previamente, execute:
$ localedef --list-archive
Alternativamente, use
localectl(1)
:
$ localectl list-locales
Configurando o locale do sistema
Para configurar o locale do sistema, escreva variável
LANG
no
/etc/locale.conf
, sendo que
pt_BR.UTF-8
pertence à
primeira coluna
de uma entrada não comentada em
/etc/locale.gen
:
/etc/locale.conf
LANG=
pt_BR.UTF-8
Alternativamente, execute:
# localectl set-locale LANG=
pt_BR.UTF-8
Veja
#Variáveis
e
locale.conf(5)
para detalhes.
Sobrepondo locale do sistema por sessão de usuário
O locale para todo sistema pode ser sobrescrito em cada sessão de usuário criando ou editando
$XDG_CONFIG_HOME/locale.conf
(normalmente
~/.config/locale.conf
).
A precedência desses arquivos
locale.conf
é configurada em
/etc/profile.d/locale.sh
.
Dica
Isso também pode permitir manter os logs em
/var/log/
em inglês enquanto usa o idioma local na variável do usuário.
Você pode criar um arquivo
/etc/skel/.config/locale.conf
para que qualquer novos usuários adicionados usando
useradd
e a opção
-m
vai ter
~/.config/locale.conf
gerado automaticamente.
Fazer alterações de locale imediatas
Uma vez que os arquivos
locale.conf
de sistema e de usuários terem sido criados ou editados, seus novos valores terão efeito para novas sessões na autenticação. Para fazer o ambiente atual usar as novas configurações, desconfigure
LANG
e carregue
/etc/profile.d/locale.sh
:
$ unset LANG
$ source /etc/profile.d/locale.sh
Nota
A variável
LANG
tem que ser desconfigurada primeiro, do contrário
locale.sh
não vai atualizar os valores de
locale.conf
. Apenas variáveis novas e alteradas serão atualizadas; variáveis removidas de
locale.conf
ainda estão configuradas na sessão.
Outros usos
As variáveis de locale também podem ser definidas com os métodos padrão como explicado em
Variáveis de ambiente
.
Por exemplo, para testar ou depurar um aplicativo em particular durante o desenvolvimento, ele poderia ser iniciado com alguma coisa como:
$ LANG=C ./meu_aplicativo.sh
Da mesma forma, para definir o locale para todos os processo executados pela shell atual (por exemplo, durante a instalação do sistema):
$ export LANG=C
Variáveis
Os arquivos
locale.conf
oferecem suporte às seguintes variáveis de ambiente.
LANG
LANGUAGE
LC_ADDRESS
LC_COLLATE
LC_CTYPE
LC_IDENTIFICATION
LC_MEASUREMENT
LC_MESSAGES
LC_MONETARY
LC_NAME
LC_NUMERIC
LC_PAPER
LC_TELEPHONE
LC_TIME
O significado completo das variáveis
LC_*
acima pode ser localizado na página man
locale(7)
, enquanto os detalhes de suas definições estão descritas em
locale(5)
.
Nota
Os programas seguem a
ordem de prioridade
ao procurar por valores dependente do locale.
LANG: locale padrão
O locale configurado para essa variável será usado para todas as variáveis
LC_*
que não forem configuradas explicitamente.
Dica
Suponha que você use inglês estando na Espanha e queira que seus programas tratem números e datas de acordo com as convenções espanholas, e apenas as mensagens devem ser em inglês. Então você pode definir a variável
LANG
como
es_ES.UTF-8
e a variável
LC_MESSAGES
(interface do usuário para tradução de mensagens) como
en_US.UTF-8
.
LANGUAGE: locales reservas
Os programas que usam
gettext
para traduções respeitam a opção
LANGUAGE
além das variáveis usuais. Isso permite que usuários para especificar uma
lista
de locales que serão usados naquela ordem. Se uma tradução para o locale preferido não está disponível, outro de um locale similar será usado em vez do padrão. Por exemplo, um usuário australiano pode querer usar a ortografia britânica em vez da americana:
locale.conf
LANG=en_AU.UTF-8
LANGUAGE=en_AU:en_GB:en
Nota
Muitos aplicativos não nomeiam ou apelidam seu locale em inglês como
en
ou
en_US
, mas em vez disso a tornam o locale padrão, que é
C
. Se em
LANGUAGE
um locale diferente do inglês for colocado após o inglês (ex.,
LANGUAGE=en_US:en:es_ES
), então os aplicativos podem escolher o locale secundário, apesar das strings em inglês estarem disponíveis.
[3]
A solução é sempre colocar explicitamente o código do idioma
C
após o inglês. Por exemplo,
LANGUAGE=en_US:en:C:es_ES
.
LC_TIME: formato de data e hora
Se
LC_TIME
estiver configurado para
en_US.UTF-8
, por exemplo, o formato de data será "MM/DD/AAAA". Caso prefira usar o formato de data da
ISO 8601
de "AAAA-MM-DD", use:
locale.conf
LC_TIME=en_DK.UTF-8
Você pode imprimir o carimbo de data/hora (em ingês,
timestamp
) atual usando o formato de data e hora de seu locale com
date +"%c"
.
glibc
2.29 corrigiu um erro,
en_US.UTF-8
começou a mostrar no formato de 12 horas, como era a intenção. Se você quiser usar o formato de 24 horas, use
LC_TIME=C.UTF-8
.
Nota
Os programas não necessariamente respeitam essa variável para formatar a data. Por exemplo,
date(1)
usa seus próprios parâmetros para fazê-lo, e o
Firefox
parou de usar
LC_TIME
entre as versões 57 e 84 (
Bug 1429578
).
LC_COLLATE: colação
Essa variável governa as regras de colação usadas para ordenação e expressões regulares.
Configurar o valor para
C
pode, por exemplo, fazer o comando
ls
ordenar arquivos iniciados com ponto primeiro, seguidos por nomes de arquivos em maiúsculo e minúsculo:
locale.conf
LC_COLLATE=C
Veja também
[4]
.
Para evitar problemas potenciais, o Arch costumava definir
LC_COLLATE=C
em
/etc/profile
, mas esse método está agora obsoleto.
LC_ALL: solução de problemas
O locale configurado para essa variável sempre sobrescreverá
LANG
e todas outras variáveis
LC_*
, independentemente de estarem definidas ou não. Se
LC_ALL
for definido para
C
, também vai sobrescrever
LANGUAGE
.
LC_ALL
é a única variável
LC_*
que
não pode
ser definida em arquivos
locale.conf
: ela é feita para ser usada apenas para propósito de testar ou solucionar problemas, por exemplo, em
/etc/profile
.
Nota
LC_ALL=C.UTF-8
, ao contrário de
LC_ALL=C
, não sobrescreve
LANGUAGE
. Veja o
bug 16621 do glibc
e o
bug 62815 do gettext
.
Solução de problemas
Para problemas de codificação, confira
Character encoding#Troubleshooting
.
Meu sistema ainda está usando o idioma errado
É possível que as variáveis de ambiente sejam redefinidas em outros arquivos além de
locale.conf
. Veja
Variáveis de ambiente#Definindo variáveis
para detalhes.
Se você está usando um ambiente gráfico, como o
GNOME
, suas configurações de idioma podem estar sobrescrevendo as configurações em
locale.conf
.
KDE
Plasma também permite alterar o idioma da interface de usuário por meio de configurações do sistema. Se o ambiente gráfico ainda está usando o idioma padrão após a modificação,
excluir o arquivo em
~/.config/plasma-localerc
(anteriormente:
~/.config/plasma-locale-settings.sh
) deve resolver o problema.
Se você estiver usando um gerenciador de exibição em combinação com
accountsservice
, siga as instruções em
Gerenciador de exibição#Definir o idioma para sessão de usuário
.
LightDM
usará automaticamente
accountsservice
para definir o locale de um usuário se estiver instalado. Caso contrário, LightDM armazena a configuração da sessão do usuário em
~/.dmrc
. É possível que uma configuração de locale indesejada também seja recuperada de lá.
Usar um locale personalizado causa problemas
Ao instalar um locale que não é oficialmente suportado (por exemplo,
locale-en_xx
AUR
), alguns problemas podem ocorrer, como
teclas compostas ou "dead keys" não funcionarem em alguns aplicativos
ou
aplicativos relatando locales ausentes
.
Depois de instalar um código de idioma personalizado, será necessária intervenção manual para resolver esses problemas.
Existem
duas abordagens
(substitua
en_XX.UTF-8
pelo identificador de seu locale personalizado):
Definir LC_CTYPE
Defina
LC_CTYPE
para um locale oficialmente suportado, como
en_US.UTF-8
:
/etc/locale.conf
LANG=en_XX.UTF-8
LC_CTYPE=en_US.UTF-8
Modificar o banco de dados Xlib
Modifique o banco de dados Xlib adicionando o seguinte:
/usr/share/X11/locale/locale.dir
en_US.UTF-8/XLC_LOCALE en_XX.UTF-8
en_US.UTF-8/XLC_LOCALE: en_XX.UTF-8
/usr/share/X11/locale/compose.dir
en_US.UTF-8/Compose en_XX.UTF-8
en_US.UTF-8/Compose: en_XX.UTF-8
Veja também
Locales - glibc wiki
Gentoo:Localization/Guide
Artigo wiki do Gentoo supostamente de 2008, ou anterior
Teste de colação interativa da ICU
Free Standards Group Open Internationalisation Initiative
Definição de Locale da
The Single UNIX Specification
por The Open Group
Variáveis de ambiente de local