Locale (Português) - ArchWiki

# Locale (Português)

From ArchWiki

Artigos relacionados

- Environment variables

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 `~/.config/locale.conf` (ou, em geral, `$XDG_CONFIG_HOME/locale.conf` ou `$HOME/.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`:

    $ 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 Environment variables.

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).

### 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.

### 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

### 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

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.

### 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 [3].

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.

`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`.

## Solução de problemas

### Meu terminal não possui suporte a UTF-8

A lista a seguir mostra alguns (não todos) terminais que oferecem suporte a UTF-8:

- gnustep-terminal
- konsole
- mlterm
- rxvt-unicode
- st
- termite
- VTE-based terminals
- xterm - Execute com o argumento `-u8` ou configure o recurso `xterm*utf8: 2`.

#### Gnome-terminal ou rxvt-unicode

Você precisa iniciar esses aplicativos a partir de um locale UTF-8 ou eles não terão suporte a UTF-8. Habilite o locale `pt_BR.UTF-8` (ou sua alternativa UTF-8 local) com as instruções acima e configure-o como o locale padrão, então reinicie.

### 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`, por exemplo `~/.pam_environment`. Veja Environment variables#Defining variables 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.

## Veja também

- Gentoo Linux Localization Guide
- Gentoo Wiki Archives: Locales
- Teste de colação interativa da ICU
- Free Standards Group Open Internationalisation Initiative
- The Single UNIX Specification definição de Locale por The Open Group
- Variáveis de ambiente de local

Category:

- Internationalization (Português)