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)?

BuZZ-dEE
fonte
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
Eric Carvalho
fonte
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'
H.-Dirk Schmitt
fonte
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:

BuZZ-dEE
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.

Gilles
fonte
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
Gunnar Hjalmarsson
fonte
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

rofrol
fonte
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.

Robin Hsu
fonte