As configurações de localidade são preferências do usuário relacionadas à sua cultura.
Nomes de localidade
Em todas as variantes atuais do unix que eu conheço (mas não em algumas antiguidades), os nomes de localidades seguem o mesmo padrão:
- Um código de idioma com duas letras minúsculas ISO 639-1 ou um código de idioma com três letras ISO 639-2 se o idioma não possuir código de duas letras. Por exemplo,
enpara inglês, dealemão, jajaponês, ukucraniano, berberbere,…
- Para muitos idiomas, mas não todos, um sublinhado
_seguido por um código de país com duas letras maiúsculas ISO 3166 . Assim: en_USpara inglês dos EUA, inglês en_UKbritânico, francês fr_CAcanadense (Quebec), de_DEalemão da Alemanha, de_ATalemão da Áustria, ja_JPjaponês (do Japão), etc.
- Opcionalmente, um ponto
.seguido do nome de uma codificação de caracteres , como UTF-8, ISO-8859-1, KOI8-U, GB2312, Big5, etc. Com GNU libc, pelo menos, (eu não sei como difundido este é), caso e pontuação é ignorada na codificação de nomes. Por exemplo, o zh_CN.UTF-8chinês mandarim (simplificado) é codificado em UTF-8, enquanto o zh_CNchinês mandarim é codificado em GB2312 e o zh_TWchinês taiwanês (tradicional) é codificado em Big5.
- Opcionalmente, um sinal de arroba
@seguido pelo nome de uma variante. O significado de variantes depende da localidade. Por exemplo, muitos países europeus têm uma @eurovariante de localidade em que o sinal de moeda é € e a codificação é aquela que inclui esse caractere (ISO 8859-15 ou ISO 8859-16), em oposição à variante sem adornos do sinal de moeda mais antigo. Por exemplo, en_IE(inglês, Irlanda) usa a codificação latin1 (ISO 8859-1) e £ como símbolo da moeda, enquanto en_IE@eurousa a codificação latin9 (ISO 8859-15) e € como o símbolo da moeda.
Além disso, existem dois nomes de código de idioma que existem em todos os sistemas do tipo unix: Ce POSIX. Esses nomes são sinônimos e significam computador, ou seja, configurações padrão apropriadas para dados analisados por um programa de computador.
Configurações de localidade
As seguintes categorias de localidade são definidas pelo POSIX :
LC_CTYPE: o conjunto de caracteres usado pelos aplicativos do terminal: dados de classificação (quais caracteres são letras, pontuação, espaços, inválidos etc.) e conversão de maiúsculas e minúsculas. Os utilitários de texto normalmente atendem LC_CTYPEà determinação dos limites de caracteres.
LC_COLLATE: ordem de agrupamento (ou seja, classificação). Essa configuração é de uso muito limitado por vários motivos:
- A maioria dos idiomas possui regras complexas que dependem do que está sendo classificado (por exemplo, palavras do dicionário e nomes próprios podem não usar a mesma ordem) e não podem ser expressadas por
LC_COLLATE.
- Existem poucos aplicativos em que a ordem de classificação adequada é importante, executada pelo software que usa as configurações de localidade. Por exemplo, os processadores de texto armazenam o idioma e a codificação de um arquivo no próprio arquivo (caso contrário, o arquivo não seria processado corretamente em um sistema com diferentes configurações de localidade) e não se preocupa com as configurações de localidade especificadas pelo ambiente.
LC_COLLATEpode ter efeitos colaterais desagradáveis, principalmente porque causa a ordem de classificação A <a <B <..., que faz com que "entre A e Z" inclua as letras minúsculas de a a y. Em particular, expressões regulares muito comuns, como [A-Z]quebram alguns aplicativos .
LC_MESSAGES: o idioma das mensagens informativas e de erro.
LC_NUMERIC: formatação numérica: separador decimal e milhares.
Muitos aplicativos codificam .como separador decimal. Isso LC_NUMERICnão é muito útil e potencialmente perigoso:
- Mesmo se você configurá-lo, ainda verá o formato padrão com bastante frequência.
- É provável que você entre em uma situação em que um aplicativo produz saída dependente da localidade e outro aplicativo espere
.ser o ponto decimal ou ,um separador de campos.
LC_MONETARY: como LC_NUMERIC, mas para montantes em moeda local.
Muito poucos aplicativos usam isso.
LC_TIME: formatação de data e hora: nomes de dias da semana e meses, relógio de 12 ou 24 horas, ordem das partes da data, pontuação etc.
O GNU libc, que você encontrará no Linux não incorporado, define categorias de código de idioma adicionais:
LC_PAPER: o tamanho do papel padrão (definido por altura e largura).
LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION: Eu não sei de qualquer aplicativo que usa estes.
Variáveis ambientais
Os aplicativos que usam configurações de localidade os determinam a partir de variáveis de ambiente.
- Em seguida, o valor da
LANGvariável de ambiente é usado, a menos que seja substituído por outra configuração. Se LANGnão estiver definido, o código do idioma padrão é C.
- Os
LC_xxxnomes podem ser usados como variáveis de ambiente.
- Se
LC_ALLestiver definido, todos os outros valores serão ignorados; isso é útil principalmente para definir LC_ALL=Caplicativos de execução que precisam produzir a mesma saída, independentemente de onde eles são executados.
- Além disso, o GNU libc usa
LANGUAGE para definir fallbacks para LC_MESSAGES(por exemplo, LANGUAGE=fr_BE:fr_FR:enpara preferir o francês belga ou, se não estiver disponível, o francês, ou se o inglês não estiver disponível).
Instalando localidades
Os dados de localidade podem ser grandes, portanto, algumas distribuições não os enviam de forma utilizável e requerem uma etapa de instalação adicional.
- No Debian, para instalar localidades, execute
dpkg-reconfigure localese selecione na lista na caixa de diálogo ou edite /etc/locale.gene execute locale-gen.
- No Ubuntu, para instalar localidades, execute
locale-genos nomes das localidades como argumentos.
Você pode definir seu próprio código de idioma .
Recomendação
As configurações úteis são:
- Defina
LC_CTYPEo idioma e a codificação em que você codifica seus arquivos de texto. Verifique se os seus terminais usam essa codificação.
Para a maioria dos idiomas, apenas a codificação é importante. Há poucas exceções; por exemplo, uma maiúscula iestá Ina maioria dos idiomas, mas İem turco ( tr_TR).
- Defina
LC_MESSAGESpara o idioma em que você deseja ver as mensagens.
- Defina
LC_PAPERcomo en_USse você deseja que US Letter seja o tamanho de papel padrão e praticamente qualquer outra coisa (por exemplo en_GB), se você deseja A4.
- Opcionalmente, defina o
LC_TIMEseu formato de hora favorito.
Como explicado acima, evite configurar LC_COLLATEe LC_NUMERIC. Se você usar LANG, substitua explicitamente essas duas categorias, configurando-as para C.
LC_PAPER. E posso atualizar isso no sistema sem reiniciar?