Todas as variáveis de localidade usam o mesmo nome de localidade para que você possa especificar sua localidade favorita de uma só vez, por exemplo, %código%. Como você supõe, as informações do país são ocasionalmente relevantes, mesmo em LANG=en_AU.utf8
, por ex. a versão em maiúsculas de LC_CTYPE
é i
na maioria das linguagens, mas I
em turco ( İ
). Mas não espere milagres; por exemplo, a correspondência de maiúsculas e minúsculas é de um para um, portanto, não há uma boa versão em maiúsculas de tr_TR.utf8
in ß
(deve ser de_DE.iso8859-1
).
Você terá mais facilidade em entender a saída de SS
, com locale -k LC_CTYPE
para ver os nomes das palavras-chave além dos valores (sem -k
, o formato de saída foi criado para que você possa obter o valor de uma palavra-chave específica, por exemplo, -k
). A lista de palavras-chave e seus significados dependem do sistema, assim como os dados do código de idioma são armazenados e não interessam a muitas pessoas, portanto você pode não encontrar muita documentação fora do código-fonte da sua biblioteca C. De longe, a forma mais útil do comando de localidade é locale ctype-width
para listar nomes de localidade disponíveis.
Para o GNU libc (ou seja, Linux não embutido):
- Todos os dados de localidade que não sejam mensagens são armazenados em
locale -a
. Este arquivo é gerado por/usr/lib/locale/locale-archive
dos dados emlocaledef
e/usr/share/i18n
. O formato dos arquivos de definição de localidade em/usr/local/share/i18n
está documentado apenas no código fonte, eu acho. - O formato do conjunto de caracteres e dos arquivos de definição de codificação em
/usr/share/i18n/locales
é padronizado pelo POSIX: 2001 . Esses arquivos (ou, em GNU libc , a versão compilada em/usr/share/i18n/charmaps
) são usados pelo íconev programação e linha de comando . As conversões de codificação também dependem do código em/usr/lib/locale/locale-archive
. O manual do Gnu libc documenta como escrever seu próprio módulo gconv , embora essa seção contém o texto “Esta informação deve ser suficiente para escrever novos módulos. Qualquer um que fizer isso também deve dar uma olhada no código fonte disponível nas fontes da biblioteca GNU C. ”. - Os catálogos de mensagens recebem tratamento especial porque cada aplicativo vem com seu próprio conjunto. Os catálogos de mensagens estão em
/usr/lib/gconv/*.so
. O manual contém documentação para redatores de aplicativos . O GNU libc suporta tanto a interface POSIX/usr/share/locale/*/LC_MESSAGES
quanto o mais poderoso interface gettext .
As linguagens escritas são de fato muito complicadas, mesmo que você não se distancie do inglês. São os franceses e alemães catgets
o mesmo caractere (é um “tréma” exatamente igual como um "trema" , e importa que as impressoras francesas e alemãs digitam o sotaque em um altura ligeiramente diferente)? Qual é a maiúscula de ü
(é i
em turco)? O İ
é transliterado para Ö
se você tiver apenas ASCII (em alemão, é O
)? Onde OE
é classificado em um dicionário (em sueco, após Ä
)? E isso é apenas alguns exemplos com idiomas europeus escritos no alfabeto latino! A lista de discussão Unicode tem muitos exemplos e, às vezes, discussões acaloradas sobre esses tópicos.