Locale (Português) - ArchWiki

Jump to content

# Locale (Português)

7 languages

- Deutsch
- English
- Français
- 日本語
- Русский
- Türkçe
- 中文（简体）

From ArchWiki
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_xxAUR), 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

Category:

- Localization (Português)