A variável de idioma 'LANGUAGE' - como definir o inglês como idioma principal? Um bug no gettext?

4

A variável "LANGUAGE" deve definir o idioma padrão e pode ser usada para especificar um conjunto de idiomas, onde o próximo idioma será usado se uma mensagem não estiver disponível no primeiro (anterior).

Por exemplo (a partir do exemplo gettext ) com 'sv : os programas de valor de 'variável mostrarão mensagens em sueco e se tal texto não for encontrado em alemão.

Eu quero usar o idioma inglês como meu idioma principal e outro (digamos, o idioma russo) como secundário:

export LANGUAGE=en:ru; blabla
blabla: команда не найдена
        ^^^^^^^^^^^^^^^^^^
**Russian error message used**

Ok. Vamos tentar outro pedido:

export LANGUAGE=ru:en; blabla
blabla: команда не найдена
        ^^^^^^^^^^^^^^^^^^
**Russian error message used again**

Em outras palavras, não importa em qual posição o idioma inglês foi especificado, ele sempre tem a prioridade mais baixa e uma mensagem será mostrada em qualquer outro idioma especificado se a mensagem for definida para esse idioma.

A pergunta: como posso especificar o idioma inglês como principal e qualquer outro idioma como secundário? E o que está acontecendo com a variável LANGUAGE?

P.S. 'LC_MESSAGES' está configurado para o idioma inglês, é claro.

    
por Sap 29.01.2015 / 19:43

2 respostas

4

Como foi discutido em esta pergunta a maioria dos programas não tem código de idioma 'inglês', mas usa o código de idioma padrão ('C') com mensagens em inglês. Então, se eu quiser usar alguns idiomas com o inglês preferido, então eu tenho que adicionar o local 'C' logo após o código do idioma inglês na lista. No meu caso, as 'LANGUAGES' devem ser:

LANGUAGES=en:C:ru


O que significa "Use inglês, depois padrão e, em seguida, russo". Portanto, cada programa que não tenha localidade em inglês (devido ao uso de localidade em inglês como localidade padrão) retornará à sua localidade padrão. Alguém pode pensar que não há nenhum efeito em especificar a localidade russa após 'default' porque a localidade padrão está sempre presente e a localidade russa nunca será escolhida. É verdade. Mas alguns programas (como navegadores e editores de texto) usam a variável 'LANGUAGES' para obter uma lista de idiomas falados pelo usuário (como idiomas para solicitar páginas HTML ou idiomas para verificação ortográfica) e nesses casos a língua russa ganhou seja supérfluo na lista de idiomas.

    
por 29.01.2015 / 21:18
0

Não há motivo para culpar apenas a variável LANGUAGE . Em primeiro lugar você tem que olhar através da saída de locale programm e observe que existem muitas variáveis que são responsáveis por coisas diferentes. Então, se você gostaria de receber mensagens em inglês, altere a variável LC_MESSAGES :

LC_MESSAGES=C type test
test is a shell builtin

type test
test встроена в оболочку
    
por 29.01.2015 / 20:15