Dove è impostata la variabile d'ambiente LANGUAGE?


9

In quale file di configurazione è impostata la variabile d'ambiente LANGUAGE? (O come posso cambiarlo con altri mezzi?)

Sfondo: stavo giocando con le impostazioni della lingua in Kubuntu e ho installato il russo per caso. Ora non scomparirà del tutto. Sì, l'inglese appare nella GUI, ma è russo dalla riga di comando. Come meglio riesco a capire, è dovuto alla variabile d'ambiente LANGUAGE. Vedi la terza riga:

leon@leon-Desktop:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en:ru:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=

Tutto è impostato correttamente tranne LANGUAGE. Ho esaminato una serie di istruzioni su come configurare la locale / lingua, ma nulla sembra cambiare LANGUAGE (sebbene abbiano cambiato altre variabili ambientali, come LANG). Quindi, non sono interessato a una panoramica di come modificare le impostazioni internazionali. Devo specificamente sapere come cambiare LINGUA (a meno che non fraintenda totalmente la situazione). Per quello che vale, LANG è impostato in / etc / default / locale, ma LANGUAGE non è impostato lì. (Ho provato a impostare LANGUAGE lì, e in qualche modo viene ignorato.) Se imposto manualmente LANGUAGE su en, allora quella particolare shell funziona bene, quindi penso che solo LANGUAGE debba essere cambiato.


MODIFICARE:

Giusto per chiarire, impostare LANGAUGE in / etc / default / locale non aiuta . Inoltre, ~ / .pam_environment non esiste.

Vedi sotto. LANGUAGE è impostato su "en" in / etc / default / locale. Ho riavviato la macchina. Ho verificato il contenuto di / etc / default / locale. Tuttavia, apt-get continua a produrre output in russo perché LANGUAGE è stato sovrascritto altrove (producendo l'output sopra dalle impostazioni locali).

leon@leon-Desktop:~$ cat /etc/default/locale 
LANG="en_US.UTF-8"
LANGUAGE="en"
leon@leon-Desktop:~$ cat ~/.pam_environment
cat: /home/leon/.pam_environment: No such file or directory
leon@leon-Desktop:~$ sudo apt-get update
Игн http://mirror.anl.gov utopic InRelease

...

MODIFICA 2:

Sembra che ~ / .kde / env / setlocale.sh sia stato il colpevole. Immagino che presenterò una segnalazione di bug di KDE.

$ cat ~/.kde/env/setlocale.sh
export LANGUAGE=en:ru:en
export LANG=en_US.UTF-8
export LC_NUMERIC=en_US.UTF-8
export LC_TIME=en_US.UTF-8
export LC_MONETARY=en_US.UTF-8
export LC_PAPER=en_US.UTF-8
export LC_IDENTIFICATION=en_US.UTF-8
export LC_NAME=en_US.UTF-8
export LC_ADDRESS=en_US.UTF-8
export LC_TELEPHONE=en_US.UTF-8
export LC_MEASUREMENT=en_US.UTF-8

Risposte:


5

Tratto da help.ubuntu.com

The LANGUAGE priority list

The "LANGUAGE" environment variable, which is set by the GUIs more often than not on 
Ubuntu desktops, controls language for message and menu display for GNU compatible 
applications. For such applications it overrides whatever locale names are set in 
"LANG" and "LC_MESSAGES".

Unlike "LANG" and "LC_*", "LANGUAGE" should not be assigned a complete locale name 
including the encoding part (e.g. ".UTF-8"). Instead "LANGUAGE" should contain a 
colon separated priority list of language codes, for instance "es:de:en". A single 
language code is also correct.

Per quanto sia lenta la risposta di un link, questo è probabilmente quello che vuoi.

Il post a cui si fa riferimento nel link sopra spiega che se si desidera cambiare la lingua che appare sulla riga di comando, è necessario impostare sia LANGe di LANGUAGEconseguenza in uno /etc/default/localeo ~/.pam_environment.

Dal momento che hai già provato LANGUAGEa eseguire l' impostazione /etc/default/locale, proverei a configurarlo ~/.pam_environmentpoiché si tratta di un file di configurazione dell'utente e il suo contenuto dovrebbe sovrascrivere qualsiasi impostazione nell'ambiente globale.

MODIFICARE:

Sono andato avanti e ho cercato di duplicare il problema che lei ha descritto impostando LANGUAGEin /etc/default/localeper "en:ru:en"il logout e quindi effettuare un nuovo accesso. Ha funzionato. I messaggi di errore sono stati quindi visualizzati in russo, almeno per l'account di root (che era l'account su cui stavo testando questo). Modifica del valore di LANGUAGEper "en"risolverlo.


Sfortunatamente, come ho notato, impostare la variabile in / etc / default / locale non è sufficiente. (Vedi il post originale e la modifica per chiarimenti.) Apparentemente, la variabile viene sovrascritta da qualche parte, e ho bisogno di sapere dove si trova da qualche parte.
prestatore il

@lnmaurer Lo so. Hai provato a impostarlo ~/.pam_environment? Ho visto il tuo commento a riguardo inesistente. Potresti provare grep LANGUAGE /etc -r | lesse poi passare e controllare manualmente ogni singola istanza di LANGUAGE. Inoltre, assicurati di controllare ~/.profilee~/.xsessionrc
Alexej Magura, il

2
Ho seguito il tuo consiglio a bocca aperta. /etcnon ha mostrato nulla, ma è stato visualizzato il grepping della mia home directory /.kde/env/setlocale.sh. Sembra che quello fosse il problema.
prestatore il

1

Sembra che tu abbia la LANGUAGEvariabile impostata su ru: en o qualcosa del genere /etc/default/locale, quindi prova a cambiarla lì in solo en.

La risposta, che ha scritto Alexej Magura, menziona anche ~/.pam_environment. Forse, dato che hai Kubuntu, potrebbero essere coinvolti altri file (o anche).


~ / .pam_environment non esiste per me. Qualche altro pensiero su quale file potrebbe essere la colpa?
prestatore il

@lnmaurer: forse ~/.kde/share/config/kcmlocale-groupingha qualcosa a che fare con questo. Può essere modificato tramite Impostazioni di sistema -> Impostazioni internazionali -> Lingue.
Gunnar Hjalmarsson,

1
Hai ragione sul fatto che fosse qualcosa di specifico di KDE. Sembra che ~/.kde/env/setlocale.shfosse il problema.
prestatore il
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.