Alternar o idioma de saída do comando do idioma nativo para o inglês


84

Como posso alternar o idioma de saída do comando do meu idioma nativo para o inglês, para que eu possa postar minha pergunta Ask Ubuntu com saída de comando em inglês (mensagens de erro)?


5
Isso é um pouco enganador. Na verdade, não é necessário que as pessoas façam isso . (Se você acha que devemos exigir que os OPs se sobrecarreguem dessa maneira, poste na meta antes de instruir alguém a fazê-lo.) Eles podem mudar LANGassim, e isso pode ajudar, mas não exigimos que as mensagens de erro copiadas sejam em inglês. Exigimos que o autor tenha escrito em inglês (embora geralmente o traduzamos em vez de fechar perguntas). Portanto, uma pergunta escrita em inglês com o texto do terminal em espanhol é boa, enquanto uma pergunta escrita em espanhol com o texto do terminal em inglês não é.
Elias Kagan

4
@EliahKagan sim, você está certo, mas de qualquer maneira eu acho que é útil.
precisa saber é o seguinte

2
Eu concordo, é útil que as pessoas possam fazer isso, e bom que você tenha postado esta pergunta! No entanto, é gente importante saber que não exigem -los a fazer isso (mas não exigem que as perguntas e as próprias respostas ser escritos em Inglês).
Elias Kagan

8
@EliahKagan Pelo contrário, é muito importante postar mensagens de erro reais e é altamente preferível publicá-las em inglês, porque é isso que o público principal deste site pode reconhecer e testar. (E nunca, nunca postar uma mensagem de erro traduzidas-re Sempre copiar-colar, porque o texto exato, pontuação, mesmo espaçamento pode ser significativo..)
Gilles

Respostas:


74

export LC_ALL=Cbasta. Toda saída de comando subsequente será em inglês.

Mais informações: O que "LC_ALL = C" faz?

Se você deseja reverter para o idioma nativo, desative a LC_ALLvariável:

unset LC_ALL

13

função bash para terminal

Aqui está minha função bash para alternar entre os locais DE e EN.

Você pode estender esse código com seus idiomas preferidos. Para usar isso, coloque-o em seu ~/.bashrc(ou ~/.bash_profile) -

Ligue _configure_locale ENpara mudar para o inglês.

function _configure_locale() { # [profile]
    local profile=${1:-EN}
    case ${profile} in
      DE|DE_DE|de_DE)
          LC_ALL="de_DE.UTF-8"
          LANG="de_DE.UTF-8"
          LANGUAGE="de_DE:de:en_US:en"
          ;;
      EN|EN_US|en|en_US)
          LC_ALL="en_US.UTF-8"
          LANG="en_US.UTF-8"
          LANGUAGE="en_US:en"
          ;;
      *)
          echo "ALERT" "${FUNCNAME}: unknown profile '${profile}'"
          ;;
      esac
      LC_PAPER="de_DE.UTF-8"; # independent from locale
      LESSCHARSET="utf-8";    # independent from locale
      MM_CHARSET="utf-8"      # independent from locale
      echo "locale settings" "${LANG}";
      export LC_ALL LANG LANGUAGE LC_PAPER LESSCHARSET MM_CHARSET
}

Em geral eu sugiro mudar todos os 3 variáveis de ambiente LC_ALL, LANG, LANGUAGEpara evitar misbehaviours de alguns programas.

Adaptação ao seu idioma

Estender o código para o seu idioma nativo é bastante simples. Você pode encontrar os valores necessários chamando o seguinte comando

env |egrep -e 'LC_ALL|LANG'

O script precisa mudar para outro idioma que não seja o alemão (DE)? Eu procuro uma solução independente do idioma nativo.
BUZZ-Dee

@ BuZZ-dEE: Você pode (e provavelmente deveria) facilmente adaptar isso jogando fora casee especificando a entrada para estar em conformidade com o <lang>_<country>formato. Então você pode simplesmente passar, assumindo UTF-8. Se você está realmente interessado em uma solução organizada, provavelmente deve verificar a entrada do usuário locale -apara garantir que a localidade solicitada esteja realmente instalada.
bitmask

@ zumbido-dee: ver resposta atualizados
H.-Dirk Schmitt

7

Abra um terminal Ctrl+ Alt+ Te digite:

LANG=en_US.UTF-8 bash

ou :

LC_ALL=C bash

Agora a saída do terminal está no idioma inglês. Você pode conferir com locale.

É possível fazer um comando para fazer isso com uma permanentealias . Abra o .bashrcarquivo com seu editor preferido e insira o seguinte código:

alias basheng='LANG=en_US.UTF-8 bash'

ou :

alias basheng='LC_ALL=C bash'

Reinicie o shell Bash. Agora você tem o comando basheng. Digite-o no Bash para obter um shell Bash em inglês. Para deixar o tipo de shell inglês exit.

Fonte:


A configuração nãoLANG é suficiente para arriscar toda a saída.
bitmask

@bitmask é isso: LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bashmelhor?
BUZZ-Dee

2
Na verdade, deveria ser LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL.
bitmask

Apenas LC_ALL = C bash funciona para mim.
liquide

5

Isso é configurado através de configurações de localidade , que podem ser definidas via variável de ambiente. Existem quatro camadas de variáveis; o primeiro definido tem precedência:

  • LANGUAGE- não use, raramente é útil e pode causar erros. Infelizmente, algumas versões do Ubuntu o definem, então você pode precisar desmarcá-lo.
  • LC_ALL- substitui as configurações específicas da categoria, destinadas principalmente a serem usadas pelos programas que desejam executar no código do idioma padrão. Não deve ser usado como configurações globais.
  • Variáveis específicas de categoria começando com LC_: LC_CTYPE, LC_MESSAGES, LC_TIME, ....
  • LANG - define o código do idioma padrão para todas as categorias, destinadas a serem usadas nas configurações globais do usuário.

O código do idioma "simples", com todas as mensagens não traduzidas, formatos padrão de hora e número, ASCII como o conjunto de caracteres etc. é chamado C. Este código de idioma está presente em todos os sistemas.

Portanto, para executar um programa com mensagens em inglês, execute

unset LANGUAGE; LC_MESSAGES=C myprogram --option

ou

unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram

Para executar um programa com toda a localização desativada, execute

env -u LANGUAGE LC_ALL=C myprogram --option

mas lembre-se de que isso altera a codificação de caracteres para ASCII (portanto, não Unicode, latin-1 etc.).

Consulte Para que devo definir meu código de idioma e quais são as implicações disso? para uma visão geral mais detalhada das localidades.


Não use LANGUAGE ?? Não sei em qual sistema operacional você está, mas no Ubuntu LANGUAGE é usado por padrão o tempo todo, através do instalador e de várias GUIs. Quais erros são esses, btw? Também li a resposta que você vinculou e , mesmo que contenha informações gerais úteis, a recomendação simplesmente não é um bom conselho para um desktop Ubuntu.
Gunnar Hjalmarsson

@GunnarHjalmarsson O principal problema LANGUAGEé que ele tem precedência LC_ALL, o que causa bugs porque os programas configuram LC_ALLpara obter uma saída previsível e depois ficam confusos porque não estão obtendo a saída esperada.
Gilles

Bem, as GUIs do Ubuntu definem LANG e LANGUAGE de forma consistente (e LC_MESSAGES herda de LANG), o que deve evitar esse tipo de confusão. O motivo pelo qual LANGUAGE está definido é que o Suporte ao idioma tem uma interface para definir uma lista de prioridades.
Gunnar Hjalmarsson

@GunnarHjalmarsson I know. Definir LANGUAGEé uma má idéia, no entanto, porque os benefícios são muito pequenos, enquanto os bugs podem ser irritantes e difíceis de encontrar. Você está certo, porém, devo mencionar a falta de definição LANGUAGE.
Gilles

As respostas aqui não são um local adequado para debater questões de design. Tais discussões são mais bem realizadas em, por exemplo, ubuntu-devel-discuss . Para ser útil aos usuários, eu realmente acho que uma resposta deve ser baseada no design atual, seja você ideal ou não. E observe que "algumas versões" são todas as versões suportadas da área de trabalho e derivados do Ubuntu, possivelmente com a exceção do Kubuntu.
Gunnar Hjalmarsson

1

A maneira mais fácil é abrir o terminal pressionando Alt + F2 e executando este comando:

env LANGUAGE=en gnome-terminal

1

na tua ~/.bashrc

unset LC_ALL
export LC_MESSAGES=C

então

source ~/.bashrc

Verifique-o

$ locale
LANG=pl_PL.utf8
LANGUAGE=
LC_CTYPE="pl_PL.utf8"
LC_NUMERIC="pl_PL.utf8"
LC_TIME="pl_PL.utf8"
LC_COLLATE="pl_PL.utf8"
LC_MONETARY="pl_PL.utf8"
LC_MESSAGES=C
LC_PAPER="pl_PL.utf8"
LC_NAME="pl_PL.utf8"
LC_ADDRESS="pl_PL.utf8"
LC_TELEPHONE="pl_PL.utf8"
LC_MEASUREMENT="pl_PL.utf8"
LC_IDENTIFICATION="pl_PL.utf8"
LC_ALL=

Por que desconfigurar primeiro?

LC_ALL Substitui configurações individuais de LC_ *: se LC_ALL estiver definido, nenhuma das opções abaixo terá efeito.

https://help.ubuntu.com/community/Locale


Não sei por que essa resposta foi prejudicada. Sim, poderia usar mais explicações, mas, diferentemente da resposta aceita, mostra como torná-la permanente e é mais específica.
Xerus

0
  1. Clique no ícone de roda dentada à esquerda (configurações do sistema no painel Unity)
  2. Clique em Suporte ao idioma
  3. Selecionar formatos regionais
  4. Defina "Exibir números, datas e valor da moeda ..." para inglês.
  5. Saia da sessão e faça login novamente (obrigatório!)

Feito.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.