Come posso cambiare la lingua di output del comando dalla mia lingua madre all'inglese, in modo da poter pubblicare la mia domanda Ask Ubuntu con l'output del comando inglese (messaggi di errore)?
Come posso cambiare la lingua di output del comando dalla mia lingua madre all'inglese, in modo da poter pubblicare la mia domanda Ask Ubuntu con l'output del comando inglese (messaggi di errore)?
Risposte:
export LC_ALL=C
è abbastanza. Tutti gli output dei comandi successivi saranno in inglese.
Ulteriori informazioni: Cosa fa "LC_ALL = C"?
Se vuoi tornare alla lingua nativa, disattiva la LC_ALL
variabile:
unset LC_ALL
Ecco la mia funzione bash per passare da DE a EN locali.
Puoi estendere questo codice con le tue lingue preferite. Per usarlo, inseriscilo nel tuo ~/.bashrc
(o ~/.bash_profile
) -
Chiamalo con _configure_locale EN
per passare all'inglese.
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
}
In generale, vi suggerisco di cambiare tutte e 3 le variabili di ambiente LC_ALL
, LANG
, LANGUAGE
al fine di evitare misbehaviours di alcuni programmi.
L'estensione del codice alla tua lingua madre è abbastanza semplice. È possibile trovare i valori necessari invocando il comando seguente
env |egrep -e 'LC_ALL|LANG'
case
e specificando l'input per conformarti al <lang>_<country>
formato. Quindi puoi semplicemente passarlo attraverso, supponendo UTF-8. Se sei davvero appassionato di una soluzione ordinata, probabilmente dovresti controllare l'input dell'utente locale -a
per accertarti che la locale richiesta sia effettivamente installata.
Apri un terminale Ctrl+ Alt+ Te digita:
LANG=en_US.UTF-8 bash
oppure :
LC_ALL=C bash
Ora l'output del terminale è in lingua inglese. Puoi verificarlo con locale
.
È possibile eseguire un comando per farlo con un permanentealias
. Apri il .bashrc
file con il tuo editor preferito e inserisci il seguente codice:
alias basheng='LANG=en_US.UTF-8 bash'
oppure :
alias basheng='LC_ALL=C bash'
Riavvia la shell Bash. Ora hai il comando basheng
. Digitalo nel Bash per ottenere una shell Bash inglese. Per lasciare il tipo di shell inglese exit
.
Fonte:
LANG
è sufficiente per generare tutte le uscite.
LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bash
meglio?
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL
.
Questo è configurato tramite le impostazioni locali , che possono essere impostate tramite la variabile di ambiente. Esistono quattro livelli di variabili; il primo impostato ha la precedenza:
LANGUAGE
- non usarlo, è raramente utile e può causare bug. Sfortunatamente, alcune versioni di Ubuntu lo impostano, quindi potrebbe essere necessario disinserirlo.LC_ALL
- ignora le impostazioni specifiche della categoria, intese principalmente per essere utilizzate dai programmi che desiderano eseguire le impostazioni internazionali predefinite. Non pensato per essere usato come impostazioni globali.LC_
: LC_CTYPE
, LC_MESSAGES
, LC_TIME
, ....LANG
- imposta le impostazioni internazionali predefinite per tutte le categorie, pensate per essere utilizzate nelle impostazioni globali dell'utente.Viene chiamata la locale "semplice", con tutti i messaggi non tradotti, i formati di ora e numeri predefiniti, ASCII come set di caratteri, ecc C
. Questa locale è presente su tutti i sistemi.
Quindi, per eseguire un programma con messaggi in inglese, eseguire
unset LANGUAGE; LC_MESSAGES=C myprogram --option
o
unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram
Per eseguire un programma con tutta la localizzazione disattivata, eseguire
env -u LANGUAGE LC_ALL=C myprogram --option
ma attenzione che questo cambia la codifica dei caratteri in ASCII (quindi niente Unicode, latino-1, ecc.).
Vedi A cosa devo impostare le impostazioni internazionali e quali sono le implicazioni per farlo? per una panoramica più dettagliata dei locali.
LANGUAGE
è che ha la precedenza LC_ALL
, il che causa bug perché i programmi impostano LC_ALL
un output prevedibile e quindi si confondono perché non ottengono l'output previsto.
LANGUAGE
è comunque una cattiva idea, perché i vantaggi sono molto scarsi, mentre i bug possono essere fastidiosi e difficili da trovare. Hai ragione però, dovrei menzionare il fatto di essere disorientato LANGUAGE
.
Il modo più semplice è aprire il terminale premendo Alt + F2 ed eseguendo questo comando:
env LANGUAGE=en gnome-terminal
nella tua ~/.bashrc
unset LC_ALL
export LC_MESSAGES=C
poi
source ~/.bashrc
Controllalo
$ 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=
Perché prima disinserire?
LC_ALL Sostituisce le singole impostazioni LC_ *: se è impostato LC_ALL, nessuna delle seguenti opzioni ha alcun effetto.
Fatto.
LANG
questo modo e potrebbe aiutare, ma non abbiamo bisogno che i messaggi di errore copiati siano in inglese. Richiediamo che l'autore abbia scritto in inglese (sebbene di solito lo traduciamo invece di chiudere le domande). Quindi una domanda scritta in inglese con il testo del terminale spagnolo va bene, mentre una domanda scritta in spagnolo con il testo del terminale inglese non lo è.