Di mana variabel lingkungan LANGUAGE ditetapkan?

9

Dalam file konfigurasi apa variabel lingkungan LANGUAGE disetel? (Atau bagaimana saya bisa mengubahnya dengan cara lain?)

Latar Belakang: Saya bermain-main dengan pengaturan bahasa di kubuntu dan menginstal bahasa Rusia secara tidak sengaja. Sekarang tidak akan benar-benar hilang. Ya, bahasa Inggris muncul di GUI, tetapi bahasa Rusia di baris perintah. Sejauh yang saya bisa pikirkan, itu karena variabel lingkungan LANGUAGE. Lihat baris ketiga:

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=

Semuanya diatur dengan benar kecuali untuk LANGUAGE. Saya telah melalui sejumlah instruksi untuk cara mengkonfigurasi lokal / bahasa, tetapi sepertinya tidak ada yang mengubah LANGUAGE (walaupun mereka telah mengubah variabel lingkungan lainnya, seperti LANG). Jadi, saya tidak tertarik dengan ikhtisar tentang cara mengubah lokal. Saya perlu secara khusus tahu cara mengubah LANGUAGE (kecuali saya benar-benar salah memahami situasinya). Untuk apa nilainya, LANG diatur di / etc / default / locale, tetapi LANGUAGE tidak diatur di sana. (Saya mencoba mengatur LANGUAGE di sana, dan entah bagaimana ditimpa.) Jika saya secara manual mengatur LANGUAGE ke en, maka shell tertentu berfungsi dengan baik, jadi saya pikir hanya LANGUAGE yang perlu diubah.


EDIT:

Hanya untuk memperjelas, mengatur LANGAUGE di / etc / default / locale tidak membantu . Selain itu, ~ / .pam_environment tidak ada.

Lihat di bawah. LANGUAGE diatur ke "en" di / etc / default / locale. Saya me-restart mesin. Saya memverifikasi isi dari / etc / default / locale. Namun, apt-get masih keluaran dalam bahasa Rusia karena LANGUAGE ditimpa di tempat lain (menghasilkan keluaran di atas dari lokal).

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

...

EDIT 2:

Sepertinya ~ / .kde / env / setlocale.sh adalah penyebabnya. Saya kira saya akan mengajukan laporan bug 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
lnmaurer
sumber

Jawaban:

5

Diambil dari 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.

Seperti orang lumpuh sebagai jawaban tautan, ini mungkin yang Anda inginkan.

Posting yang dirujuk dalam tautan di atas menjelaskan bahwa jika Anda ingin mengubah bahasa yang muncul pada baris perintah maka Anda perlu mengatur keduanya LANGdan LANGUAGEsesuai dalam salah satu /etc/default/localeatau ~/.pam_environment.

Karena Anda sudah mencoba setting LANGUAGEdi /etc/default/locale, aku akan mencoba setting di ~/.pam_environmentkarena itulah file pengguna config dan isinya harus menimpa apapun set dalam lingkungan global.

EDIT:

Aku pergi ke depan dan mencoba menduplikasi masalah yang Anda dijelaskan dengan menetapkan LANGUAGEdalam /etc/default/localeuntuk "en:ru:en"keluar log dan kemudian masuk kembali. Ini bekerja. Pesan-pesan kesalahan kemudian ditampilkan dalam bahasa Rusia, setidaknya untuk akun root (yang merupakan akun tempat saya menguji ini). Mengubah nilai LANGUAGEuntuk "en"memperbaikinya.

Alexej Magura
sumber
Sayangnya, seperti yang saya catat, pengaturan variabel di / etc / default / locale tidak cukup. (Lihat posting asli dan edit untuk klarifikasi.) Rupanya, variabel ditimpa di suatu tempat, dan saya perlu tahu di mana tempat itu.
lnmaurer
@ lnmaurer saya tahu. Apakah Anda mencoba mengaturnya ~/.pam_environment? Saya melihat komentar Anda tentang itu tidak ada. Anda dapat mencoba grep LANGUAGE /etc -r | lessdan kemudian memeriksa secara manual setiap contoh LANGUAGE. Juga, pastikan untuk memeriksa ~/.profiledan~/.xsessionrc
Alexej Magura
2
Saya menerima saran Anda. /etcmuncul apa-apa, tetapi memahami direktori rumah saya muncul /.kde/env/setlocale.sh. Sepertinya itu masalahnya.
lnmaurer
1

Kedengarannya seperti Anda memiliki LANGUAGEset variabel untuk ru: en atau sesuatu /etc/default/locale, jadi cobalah untuk mengubahnya di sana menjadi hanya en.

Jawabannya, yang ditulis Alexej Magura, juga menyebutkan ~/.pam_environment. Mungkin, karena Anda memiliki Kubuntu, file lain mungkin terlibat (atau juga).

Gunnar Hjalmarsson
sumber
~ / .pam_environment tidak ada untuk saya. Adakah pemikiran lain untuk file apa yang mungkin disalahkan?
lnmaurer
@ lnmaurer: Mungkin ~/.kde/share/config/kcmlocale-groupingada hubungannya dengan itu. Itu dapat diubah melalui Pengaturan Sistem -> Lokal -> Bahasa.
Gunnar Hjalmarsson
1
Anda benar bahwa itu adalah sesuatu yang spesifik KDE. Sepertinya ~/.kde/env/setlocale.shitu masalahnya.
lnmaurer