ฉันจะเปลี่ยนภาษาเอาต์พุตคำสั่งจากภาษาแม่เป็นภาษาอังกฤษได้อย่างไรดังนั้นฉันสามารถโพสต์คำถาม Ask Ubuntu ด้วยเอาต์พุตคำสั่งภาษาอังกฤษ (ข้อความแสดงข้อผิดพลาด) ได้อย่างไร
ฉันจะเปลี่ยนภาษาเอาต์พุตคำสั่งจากภาษาแม่เป็นภาษาอังกฤษได้อย่างไรดังนั้นฉันสามารถโพสต์คำถาม Ask Ubuntu ด้วยเอาต์พุตคำสั่งภาษาอังกฤษ (ข้อความแสดงข้อผิดพลาด) ได้อย่างไร
คำตอบ:
export LC_ALL=C
ก็เพียงพอแล้ว เอาต์พุตคำสั่งที่ตามมาทั้งหมดจะเป็นภาษาอังกฤษ
ข้อมูลเพิ่มเติม: "LC_ALL = C" ทำอะไร
หากคุณต้องการเปลี่ยนกลับเป็นภาษาพื้นเมืองให้ยกเลิกการตั้งค่าLC_ALL
ตัวแปร:
unset LC_ALL
นี่คือฟังก์ชั่นทุบตีของฉันเพื่อสลับระหว่างตำแหน่งที่ตั้ง DE และ EN
คุณสามารถขยายรหัสนี้ด้วยภาษาที่คุณต้องการ หากต้องการใช้สิ่งนี้ให้ใส่ไว้ใน~/.bashrc
(หรือ~/.bash_profile
) ของคุณ-
โทรไปด้วย_configure_locale EN
เพื่อเปลี่ยนเป็นภาษาอังกฤษ
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
}
โดยทั่วไปผมแนะนำให้เปลี่ยนทุกตัวแปรสภาพแวดล้อม 3 LC_ALL
, LANG
, LANGUAGE
เพื่อหลีกเลี่ยงการ misbehaviours ของบางโปรแกรม
การขยายรหัสไปยังภาษาของคุณค่อนข้างง่าย คุณสามารถค้นหาค่าที่ต้องการโดยเรียกใช้คำสั่งต่อไปนี้
env |egrep -e 'LC_ALL|LANG'
case
และระบุอินพุตให้สอดคล้องกับ<lang>_<country>
รูปแบบ จากนั้นคุณสามารถผ่านมันไปได้โดยสมมติว่า UTF-8 หากคุณมีความกระตือรือร้นในการใช้งานที่เป็นระเบียบคุณควรตรวจสอบอินพุตของผู้ใช้locale -a
เพื่อให้แน่ใจว่ามีการติดตั้งโลแคลที่ร้องขอจริง
เปิด terminal Ctrl+ Alt+ Tและพิมพ์:
LANG=en_US.UTF-8 bash
หรือ :
LC_ALL=C bash
ตอนนี้เทอร์มินัลเอาท์พุทเป็นภาษาอังกฤษ locale
คุณสามารถตรวจสอบด้วย
มันเป็นไปได้ที่จะทำให้คำสั่งที่จะทำกับถาวร alias
เปิด.bashrc
ไฟล์ด้วยโปรแกรมแก้ไขที่คุณต้องการแล้ววางโค้ดต่อไปนี้ลงไป:
alias basheng='LANG=en_US.UTF-8 bash'
หรือ :
alias basheng='LC_ALL=C bash'
รีสตาร์ท Bash เชลล์ basheng
ตอนนี้คุณมีคำสั่ง พิมพ์ใน Bash เพื่อรับ Bash shell ภาษาอังกฤษ exit
ในการออกจากประเภทเปลือกอังกฤษ
ที่มา:
LANG
เป็นไม่เพียงพอที่จะมีโอกาสที่การส่งออกทั้งหมด
LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bash
ดีกว่าไหม
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL
ที่จริงที่ควรจะเป็น
นี้ถูกกำหนดค่าผ่านการตั้งค่าสถานที่ซึ่งสามารถตั้งค่าผ่านตัวแปรสภาพแวดล้อม ตัวแปรมีสี่ชั้น อันแรกที่ถูกตั้งค่ามาก่อน:
LANGUAGE
- อย่าใช้มันไม่ค่อยมีประโยชน์และอาจทำให้เกิดข้อบกพร่อง น่าเสียดายที่ Ubuntu บางรุ่นตั้งค่าไว้ดังนั้นคุณอาจต้องยกเลิกการตั้งค่าLC_ALL
- แทนที่การตั้งค่าเฉพาะหมวดหมู่ซึ่งหมายถึงหลักที่จะใช้โดยโปรแกรมที่ต้องการเรียกใช้ในภาษาเริ่มต้น ไม่ได้มีไว้สำหรับใช้เป็นค่ากลางLC_
: LC_CTYPE
, LC_MESSAGES
, LC_TIME
...LANG
- ตั้งค่าโลแคลเริ่มต้นสำหรับทุกหมวดหมู่ซึ่งมีไว้เพื่อใช้ในการตั้งค่าผู้ใช้ทั่วโลกสถานที่เกิดเหตุ“ธรรมดา” กับข้อความทั้งหมดที่ไม่ได้แปล, เวลาเริ่มต้นและจำนวนรูปแบบ ASCII เป็นชุดตัวอักษร ฯลฯ C
เรียกว่า สถานที่นี้มีอยู่ในทุกระบบ
ดังนั้นเมื่อต้องการเรียกใช้โปรแกรมที่มีข้อความเป็นภาษาอังกฤษให้เรียกใช้
unset LANGUAGE; LC_MESSAGES=C myprogram --option
หรือ
unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram
ในการเรียกใช้โปรแกรมที่ปิดการแปลภาษาทั้งหมดแล้วให้เรียกใช้
env -u LANGUAGE LC_ALL=C myprogram --option
แต่ระวังว่านี่เป็นการสลับการเข้ารหัสอักขระเป็น ASCII (ดังนั้นจึงไม่มี Unicode, latin-1, ฯลฯ )
ดูฉันควรตั้งค่าภาษาของฉันไว้ที่อะไรและความหมายของการทำเช่นนั้นคืออะไร สำหรับภาพรวมโดยละเอียดของสถานที่
LANGUAGE
คือมีความสำคัญมากกว่าLC_ALL
ซึ่งทำให้เกิดข้อบกพร่องเนื่องจากโปรแกรมตั้งค่าLC_ALL
ให้รับเอาต์พุตที่คาดการณ์ได้และทำให้เกิดความสับสนเนื่องจากไม่ได้รับผลลัพธ์ที่คาดหวัง
LANGUAGE
เป็นความคิดที่ไม่ดีอย่างไรก็ตามเนื่องจากประโยชน์มีบางมากในขณะที่ข้อบกพร่องสามารถน่ารำคาญและหายาก คุณพูดถูกฉันควรพูดถึงการตั้งLANGUAGE
ค่า
วิธีที่ง่ายที่สุดคือเปิดเทอร์มินัลโดยกดAlt + F2และเรียกใช้คำสั่งนี้:
env LANGUAGE=en gnome-terminal
ในของคุณ ~/.bashrc
unset LC_ALL
export LC_MESSAGES=C
แล้วก็
source ~/.bashrc
ตรวจสอบ
$ 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=
ทำไมไม่มีการตั้งค่าก่อน
LC_ALL แทนที่การตั้งค่า LC_ * แต่ละรายการ: หากตั้งค่า LC_ALL ไว้ด้านล่างไม่มีผลใด ๆ
เสร็จสิ้น
LANG
เช่นนี้และอาจช่วยได้ แต่เราไม่ต้องการข้อความแสดงข้อผิดพลาดที่คัดลอกมาเป็นภาษาอังกฤษ เราต้องการสิ่งที่ผู้เขียนเขียนเป็นภาษาอังกฤษ (แม้ว่าเรามักจะแปลแทนการปิดคำถาม) ดังนั้นคำถามที่เขียนเป็นภาษาอังกฤษพร้อมกับข้อความเทอร์มินัลของสเปนนั้นใช้ได้ในขณะที่คำถามที่เขียนในภาษาสเปนที่มีข้อความเทอร์มินัลภาษาอังกฤษไม่ได้