Como funciona o programa “locale”?

2

O programa locale imprimirá as variáveis de código de idioma do processo que o iniciou, este é um exemplo de saída de locale quando iniciado a partir do shell:

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

De onde locale obtém essa informação (eu sei que essa informação não é locale das variáveis de ambiente herdadas do shell, porque o shell tem apenas 4 variáveis de ambiente de localidade)?

    
por James 12.06.2018 / 16:01

2 respostas

3

Ele obtém sabendo como as configurações de localidade são processadas, com base nos valores das variáveis de ambiente correspondentes.

Tomando a versão GNU como exemplo, ela começa por chamando setlocale (LC_ALL, "") para definir a localidade atual. Em seguida, ele passa por todas as localidade categorias , imprimindo o valor de cada um, com exceções especiais para LANG (impresso primeiro) e LC_ALL (impresso por último). Os valores são determinados observando os valores do ambiente e seguindo as regras que se aplicam às configurações de localidade:

  • se LC_ALL estiver definido, todas as categorias receberão o valor correspondente;
  • se uma categoria não tiver um valor definido no ambiente, utilizará o valor de LANG se tiver um, "POSIX" e o valor estiver entre aspas duplas .
por 12.06.2018 / 16:13
0

O programa locale imprime seus resultados com base nas variáveis de ambiente.

A saída listada contém códigos de idiomas não padrão que podem ser específicos do Linux.

Para entender como isso funciona, pode ser importante saber:

  • LC_ALL sobrescreve todas as outras variáveis explícitas do LC_ * no ambiente.

  • O LANG é usado como fallback se uma variável LC_XXX específica não estiver no ambiente.

por 12.06.2018 / 16:10

Tags