ชุดตัวแปรสภาพแวดล้อม LANGUAGE อยู่ที่ไหน


9

ในไฟล์กำหนดค่าใดที่ตัวแปรสภาพแวดล้อม LANGUAGE ตั้งค่า (หรือฉันจะเปลี่ยนวิธีอื่นได้อย่างไร)

พื้นหลัง: ฉันเล่นด้วยการตั้งค่าภาษาใน kubuntu และติดตั้งภาษารัสเซียโดยไม่ได้ตั้งใจ ตอนนี้มันจะไม่หายไปทั้งหมด ใช่ภาษาอังกฤษแสดงใน GUI แต่เป็นภาษารัสเซียในบรรทัดคำสั่ง อย่างที่ฉันคิดได้มันเป็นเพราะตัวแปรสภาพแวดล้อม LANGUAGE ดูบรรทัดที่สาม:

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=

ทุกอย่างถูกตั้งค่าอย่างถูกต้องยกเว้น LANGUAGE ฉันได้อ่านคำแนะนำมากมายเกี่ยวกับวิธีกำหนดค่าภาษา / ภาษา แต่ดูเหมือนว่าจะไม่มีการเปลี่ยนแปลง LANGUAGE (แม้ว่าพวกเขาจะเปลี่ยนตัวแปรสภาพแวดล้อมอื่น ๆ เช่น LANG) ดังนั้นฉันไม่สนใจภาพรวมของวิธีการเปลี่ยนสถานที่ ฉันจำเป็นต้องรู้วิธีการเปลี่ยนภาษาโดยเฉพาะ (ยกเว้นว่าฉันเข้าใจผิดสถานการณ์ทั้งหมด) สำหรับสิ่งที่คุ้มค่า LANG ถูกตั้งค่าใน / etc / default / locale แต่ LANGUAGE ไม่ได้ตั้งไว้ที่นั่น (ฉันลองตั้งค่า LANGUAGE ที่นั่นและมันจะถูกแทนที่อย่างใด) ถ้าฉันตั้ง LANGUAGE ด้วยตนเองเป็น en จากนั้นเชลล์เฉพาะนั้นทำงานได้ดีดังนั้นฉันคิดว่าจำเป็นต้องเปลี่ยน LANGUAGE เท่านั้น


แก้ไข:

เพียงเพื่อให้ชัดเจนการตั้งค่า LANGAUGE ใน / etc / default / locale ก็ไม่ได้ช่วยอะไร นอกจากนี้ ~ / .pam_environment ไม่มีอยู่

ดูด้านล่าง LANGUAGE ถูกตั้งค่าเป็น "en" ใน / etc / default / locale ฉันรีสตาร์ทเครื่อง ฉันตรวจสอบเนื้อหาของ / etc / default / locale อย่างไรก็ตาม apt-get ยังคงเอาต์พุตในภาษารัสเซียเนื่องจาก LANGUAGE ถูกเขียนทับที่อื่น (สร้างเอาต์พุตด้านบนจากโลแคล)

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

...

แก้ไข 2:

ดูเหมือนว่า ~ / .kde / env / setlocale.sh เป็นสุดยอด ฉันเดาว่าฉันจะรายงานข้อผิดพลาด 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

คำตอบ:


5

นำมาจาก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.

เช่นเดียวกับคำตอบลิงก์คือนี่อาจเป็นสิ่งที่คุณต้องการ

โพสต์ที่อ้างถึงในการเชื่อมโยงดังกล่าวข้างต้นอธิบายว่าถ้าคุณต้องการที่จะเปลี่ยนภาษาที่ปรากฏบนบรรทัดคำสั่งแล้วคุณจะต้องตั้งค่าทั้งLANGและLANGUAGEตามทั้งในหรือ/etc/default/locale~/.pam_environment

เนื่องจากคุณได้พยายามแล้วการตั้งค่าLANGUAGEใน/etc/default/localeผมลองตั้งค่าใน~/.pam_environmentตั้งแต่ที่เป็นไฟล์ของผู้ใช้ตั้งค่าและเนื้อหาของมันควรจะเขียนทับชุดอะไรในสภาพแวดล้อมของโลก

แก้ไข:

ฉันเดินไปข้างหน้าและพยายามทำซ้ำปัญหาที่คุณอธิบายโดยการตั้งค่าLANGUAGEใน/etc/default/localeการ"en:ru:en"ออกจากระบบแล้วล็อกอินกลับมา. มันทำงาน ข้อความแสดงข้อผิดพลาดจะปรากฏเป็นภาษารัสเซียอย่างน้อยสำหรับบัญชีรูท (ซึ่งเป็นบัญชีที่ฉันทำการทดสอบนี้) การเปลี่ยนค่าของLANGUAGEเป็น"en"คงที่


น่าเสียดายที่ฉันสังเกตว่าการตั้งค่าตัวแปรใน / etc / default / locale นั้นไม่เพียงพอ (ดูโพสต์ต้นฉบับและการแก้ไขเพื่อความกระจ่าง) เห็นได้ชัดว่าตัวแปรถูกเขียนทับที่ไหนสักแห่งและฉันจำเป็นต้องรู้ว่ามันอยู่ที่ไหน
lnmaurer

@lnmaurer ฉันรู้ คุณลองตั้งค่าแล้ว~/.pam_environmentหรือยัง? ฉันเห็นความคิดเห็นของคุณเกี่ยวกับเรื่องนี้ไม่ได้มีอยู่ คุณอาจจะลองแล้วผ่านไปด้วยตนเองและตรวจสอบทุกเช่นเดียวของgrep LANGUAGE /etc -r | less LANGUAGEนอกจากนี้โปรดตรวจสอบ~/.profileและ~/.xsessionrc
Alexej Magura

2
ฉันเอาคำแนะนำของคุณ grepping /etcเปิดขึ้นไม่มีอะไร แต่ grepping /.kde/env/setlocale.shไดเรกทอรีบ้านของฉันเปิดขึ้น ดูเหมือนว่าเป็นปัญหา
lnmaurer

1

ดูเหมือนว่าคุณมีLANGUAGEตัวแปรที่ตั้งค่าเป็น ru: en หรืออะไรบางอย่าง/etc/default/localeดังนั้นลองเปลี่ยนไปเป็น en

คำตอบที่ Alexej Magura เขียนก็กล่าวถึง~/.pam_environmentเช่นกัน อาจเป็นเพราะคุณมี Kubuntu ไฟล์อื่น ๆ อาจมีส่วนเกี่ยวข้องแทน (หรือด้วย)


~ / .pam_environment ไม่มีอยู่สำหรับฉัน ความคิดอื่น ๆ เกี่ยวกับไฟล์ใดบ้างที่อาจถูกตำหนิ?
lnmaurer

@lnmaurer: อาจ~/.kde/share/config/kcmlocale-groupingมีบางอย่างที่เกี่ยวข้องกับมัน มันสามารถเปลี่ยนแปลงได้ผ่านการตั้งค่าระบบ -> สถานที่ -> ภาษา
Gunnar Hjalmarsson

1
คุณพูดถูกว่าเป็นสิ่งที่ KDE เจาะจง ดูเหมือนว่า~/.kde/env/setlocale.shเป็นปัญหา
lnmaurer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.