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)?
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)?
Respostas:
export LC_ALL=C
basta. 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_ALL
variável:
unset LC_ALL
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 EN
para 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
, LANGUAGE
para evitar misbehaviours de alguns programas.
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'
case
e 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 -a
para garantir que a localidade solicitada esteja realmente instalada.
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 .bashrc
arquivo 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:
LANG
é suficiente para arriscar toda a saída.
LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bash
melhor?
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL
.
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.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.
LANGUAGE
é que ele tem precedência LC_ALL
, o que causa bugs porque os programas configuram LC_ALL
para obter uma saída previsível e depois ficam confusos porque não estão obtendo a saída esperada.
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
.
A maneira mais fácil é abrir o terminal pressionando Alt + F2 e executando este comando:
env LANGUAGE=en gnome-terminal
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.
LANG
assim, 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 é.