Cambia la lingua di output dei comandi dalla lingua madre all'inglese


84

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


5
Questo è in qualche modo fuorviante. In realtà non è necessario che le persone facciano questo . (Se ritieni che dovremmo richiedere ai PO di caricarsi in questo modo, ti preghiamo di pubblicare su meta prima di istruire chiunque a farlo.) Possono cambiare in LANGquesto 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 è.
Eliah Kagan,

4
@EliahKagan sì, hai ragione, ma comunque penso che sia utile.
BuZZ-dEE,

2
Sono d'accordo, è utile per le persone essere in grado di farlo, e bene hai pubblicato questa domanda! Tuttavia, è gente importante sapere che non richiede loro di fare questo (ma cosa richiediamo che le domande e le risposte stesse essere scritti in lingua inglese).
Eliah Kagan,

8
@EliahKagan Al contrario, è molto importante pubblicare messaggi di errore reali ed è altamente preferibile pubblicarli in inglese perché è ciò che il pubblico principale di questo sito può riconoscere e testare. (E mai, mai e poi mai pubblicare un messaggio di errore ri-tradotto. Copia e incolla sempre, perché la formulazione esatta, la punteggiatura e la spaziatura possono essere significative.)
Gilles,

Risposte:


74

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_ALLvariabile:

unset LC_ALL

13

funzione bash per terminale

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 ENper 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, LANGUAGEal fine di evitare misbehaviours di alcuni programmi.

Adattarsi alla tua lingua

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'

La sceneggiatura deve essere cambiata in un'altra lingua rispetto al tedesco (DE)? Cerco una soluzione indipendente dalla lingua madre.
BuZZ-dEE,

@ BuZZ-dEE: puoi (e probabilmente dovresti) adattarlo facilmente eliminando casee 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 -aper accertarti che la locale richiesta sia effettivamente installata.
Maschera di bit

@ buzz-dee: vedi risposta aggiornata
H.-Dirk Schmitt

7

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 .bashrcfile 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:


L'impostazione nonLANG è sufficiente per generare tutte le uscite.
Maschera di bit

@bitmask è questo: LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bashmeglio?
BuZZ-dEE,

2
In realtà, dovrebbe essere LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL.
Maschera di bit

Solo LC_ALL = C bash lavora per me.
liquide,

5

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.
  • Variabili specifiche categorie che iniziano con 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.


Non usare LANGUAGE ?? Non so su quale sistema operativo sei, ma su Ubuntu LANGUAGE è usato di default in ogni momento tramite l'installer e varie GUI. Quali bug sono quelli, tra l'altro? Ho anche letto la risposta a cui ti sei collegato e anche se contiene informazioni generali utili, la raccomandazione non è semplicemente un buon consiglio su un desktop Ubuntu.
Gunnar Hjalmarsson,

@GunnarHjalmarsson Il problema principale LANGUAGEè che ha la precedenza LC_ALL, il che causa bug perché i programmi impostano LC_ALLun output prevedibile e quindi si confondono perché non ottengono l'output previsto.
Gilles,

Bene, le GUI di Ubuntu hanno impostato sia LANG che LANGUAGE in modo coerente (e LC_MESSAGES eredita da LANG), il che dovrebbe prevenire questo tipo di confusione. Il motivo per cui è impostato LANGUAGE è che Language Support ha un'interfaccia per l'impostazione di un elenco di priorità.
Gunnar Hjalmarsson,

@GunnarHjalmarsson Lo so. L'impostazione 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.
Gilles,

Le risposte qui non sono il luogo adatto per discutere di problemi di progettazione. Tali discussioni sono meglio tenute ad esempio su ubuntu-devel-discuss . Per essere utile agli utenti, penso davvero che una risposta dovrebbe essere basata sul design attuale, sia che tu pensi che sia ottimale o meno. E tieni presente che "alcune versioni" sono tutte versioni supportate del desktop e dei derivati ​​Ubuntu, possibilmente con l'eccezione di Kubuntu.
Gunnar Hjalmarsson,

1

Il modo più semplice è aprire il terminale premendo Alt + F2 ed eseguendo questo comando:

env LANGUAGE=en gnome-terminal

1

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.

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


Non so perché questa risposta sia stata annullata. Sì, potrebbe usare qualche spiegazione in più, ma a differenza della risposta accettata, mostra come renderla permanente ed è più specifica.
Xerus

0
  1. Fai clic sull'icona a forma di ingranaggio a sinistra (impostazioni di sistema nel pannello Unity)
  2. Fai clic su Supporto lingua
  3. Seleziona i formati regionali
  4. Imposta "Visualizza numeri, date e importo in valuta ..." in inglese.
  5. Esci dalla sessione e accedi di nuovo (Obbligatorio!)

Fatto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.