เราจะเปลี่ยนภาษาของอินเทอร์เฟซบรรทัดคำสั่งของ Git ได้อย่างไร?


104

ฉันต้องการเปลี่ยนภาษาของ git (เป็นภาษาอังกฤษ) ในการติดตั้ง Linux โดยไม่เปลี่ยนภาษาสำหรับโปรแกรมอื่นและไม่พบการตั้งค่า ทำอย่างไร?


1
คุณต้องการเปลี่ยนภาษา ฉันคิดว่าจะโพสต์คำถามนั้นใหม่กับ superuser
JosefAssad

คำตอบ:


148

เพิ่มบรรทัดเหล่านี้ใน~/.bashrcหรือ~/.bash_profileเพื่อบังคับให้คอมไพล์แสดงข้อความทั้งหมดเป็นภาษาอังกฤษ:

# Set Git language to English
#alias git='LANG=en_US git'
alias git='LANG=en_GB git'

นามแฝงความต้องการที่จะลบล้างLC_ALLในบางระบบเมื่อตัวแปรสภาพแวดล้อมมีการตั้งค่าที่มีความสำคัญมากกว่าLC_ALL LANGดูข้อกำหนดUNIX - ตัวแปรสภาพแวดล้อมสำหรับคำอธิบายเพิ่มเติม

# Set Git language to English
#alias git='LC_ALL=en_US git'
alias git='LC_ALL=en_GB git'

ในกรณีที่คุณเพิ่มบรรทัดเหล่านี้~/.bashrcในนามแฝงจะถูกกำหนดเมื่อเชลล์แบบโต้ตอบใหม่เริ่มทำงาน ในกรณีที่คุณเพิ่มลง~/.bash_profileในนามแฝงจะถูกนำไปใช้เมื่อเข้าสู่ระบบ


มีการพิมพ์ชื่อไฟล์ผิด ( .bash.rcแทนที่จะเป็น.bashrc) คุณต้องปิดและเริ่มเชลล์อีกครั้งเพื่อที่.bashrcจะดำเนินการ ฉันได้เพิ่มบันทึกเกี่ยวกับเรื่องนี้เช่นกัน
Bengt

ฉันลองแล้ว.bashrcแม้จะรีสตาร์ท นามแฝงทำงาน เป็นเพียงภาษาที่ไม่เปลี่ยนแปลง
user905686

ในการตรวจสอบว่าการ.bashrcดำเนินการสำเร็จคุณสามารถเพิ่มการทดสอบได้เช่นเดียวecho "This is .bashrc"กับส่วนท้ายของไฟล์ . .bashrcนอกจากนี้คุณยังจะได้รับมันได้ดำเนินการตามความต้องการโดยไม่ต้องรีสตาร์ทสถานีหรือทั้งระบบโดย สุดท้ายฉันขอแนะนำให้ลองตั้งค่าLC_ALLตัวแปรสภาพแวดล้อมแทนLANGเนื่องจากตัวแปรแรกมีความสำคัญ
Bengt

ทุกอย่างดีกับของฉัน.bashrcจริงๆ ถ้าLC_ALLมีลำดับความสำคัญนี่จะเป็นปัญหามันถูกตั้งค่าเป็นภาษาของฉัน แต่ฉันไม่ต้องการเปลี่ยนการตั้งค่าภาษาทั่วไป ... ฉันไม่สามารถเขียนทับสำหรับหนึ่งโปรแกรมได้หรือไม่?
user905686

1
คุณสามารถตั้งค่าภาษาโดยใช้วิธีการที่แนะนำโดยไม่มีผลข้างเคียงเนื่องจากตัวแปรเหล่านี้มีอายุการใช้งานตราบเท่าที่คำสั่งใช้ในการยุติ ลองใช้งาน$ LC_ALL="en_US" manแล้ว$ man
Bengt

20

หากคุณต้องการมีเพียงคำสั่งเดียวเป็นภาษาอังกฤษแทนคุณสามารถเขียนLC_ALL=Cก่อนคำสั่งเช่น:

LC_ALL=C git status

จะส่งผลให้

# On branch master
nothing to commit, working directory clean

ภาษาที่ใช้Cเป็นภาษาอังกฤษและสามารถใช้ได้ตลอดเวลาโดยไม่ต้องติดตั้งชุดภาษาเพิ่มเติม
(ดูhttps://askubuntu.com/a/142814/34298 )

หากต้องการเปลี่ยนสำหรับเซสชันทุบตีปัจจุบันทั้งหมดให้ป้อน

LANG=C

หากต้องการเปลี่ยนเช่นป้อนภาษาเยอรมัน

LANG=de_DE.UTF-8

ขอบคุณสำหรับLC_ALL=Cคำแนะนำเนื่องจากฉันมีปัญหาบางอย่างเกี่ยวกับภาษาจึงใช้LC_ALL="en_US"งานไม่ได้อีกต่อไปเมื่อเร็ว ๆ นี้
user905686

11

การเพิ่มบรรทัดนี้ช่วยแก้ปัญหาให้ฉัน:

$ more ~/.bash_profile
export LANG=en_US

2
คำถามคือวิธีเปลี่ยนภาษาสำหรับ git เท่านั้น - ฉันอัปเดตให้ชัดเจนยิ่งขึ้น
user905686

7

หมายเหตุ: ตั้งแต่ Git 2.3.1+ (Q1 / Q2 2015) Git จะเพิ่มส่วนหัว Accept-Language ถ้าเป็นไปได้
ดูการกระทำ f18604bโดยYi EungJun ( eungjun-yi)

เพิ่มAccept-Languageส่วนหัวซึ่งบ่งชี้ว่าภาษาที่ต้องการของผู้ใช้ที่กำหนดโดย$LANGUAGE, $LC_ALL, และ$LC_MESSAGES$LANG

สิ่งนี้ทำให้เซิร์ฟเวอร์ git มีโอกาสแสดงข้อความแสดงข้อผิดพลาดระยะไกลในภาษาที่ผู้ใช้ต้องการ


คุณมีสถานที่สำหรับ GUI คอมไพล์หรืออื่น ๆ GUIs ,แต่ไม่ใช่สำหรับบรรทัดคำสั่งเนื่องจากเป็นหนึ่งในคำถามของ GitSurvey 2010

localization of command-line messages (i18n)    258     3.6%    

แน่นอนตั้งแต่ปี 2010 เป็นต้นมา po/READMEอธิบายไว้:

ก่อนที่จะแปลสตริงได้จะต้องมีการทำเครื่องหมายสำหรับการแปลก่อน

Git ใช้อินเทอร์เฟซสากลที่ห่อหุ้ม gettextไลบรารีดังนั้นคำแนะนำส่วนใหญ่ในเอกสาร gettext ของคุณ (บนระบบ GNU info gettextในเทอร์มินัล) จะนำไปใช้

ในสถานที่ตั้งแต่ git 1.7.9+ (มกราคม 2012):

Git ใช้gettextในการแปลข้อความมากที่สุดติดต่อกันเป็นภาษาของผู้ใช้ถ้าแปลที่มีอยู่และสถานที่เกิดเหตุเป็นที่ตั้งที่เหมาะสม
ผู้จัดจำหน่ายสามารถวางจำหน่ายใหม่POไฟล์po/เพื่อเพิ่มคำแปลใหม่

ดังนั้นหากการอัปเดตของคุณทำให้การแปลสับสนให้ตรวจสอบสิ่งที่gettextใช้:
ดูตัวอย่างเช่น " Locale Environment Variables "

โลแคลประกอบด้วยหมวดหมู่โลแคลหลายประเภทโปรดดูที่แง่มุม เมื่อโปรแกรมค้นหาค่าที่ขึ้นกับโลแคลโปรแกรมจะดำเนินการตามตัวแปรสภาพแวดล้อมต่อไปนี้ตามลำดับความสำคัญ:

LANGUAGE
LC_ALL
LC_xxx, according to selected locale category: LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, ...
LANG 

ตัวแปรที่มีการตั้งค่า แต่ว่างเปล่าจะถูกละเว้นในการค้นหานี้

LANGเป็นตัวแปรสภาพแวดล้อมปกติสำหรับระบุโลแคล ในฐานะผู้ใช้โดยปกติคุณจะตั้งค่าตัวแปรนี้ (เว้นแต่ตัวแปรอื่น ๆ บางตัวได้รับการตั้งค่าโดยระบบใน/etc/profileหรือไฟล์เริ่มต้นที่คล้ายกัน)

LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGESและอื่น ๆ เป็นตัวแปรสภาพแวดล้อมหมายถึงการแทนที่LANGและมีผลกระทบเป็นหมวดหมู่สถานที่เกิดเหตุเพียงคนเดียว
ตัวอย่างเช่นสมมติว่าคุณเป็นผู้ใช้ภาษาสวีเดนในสเปนและคุณต้องการให้โปรแกรมของคุณจัดการกับตัวเลขและวันที่ตามแบบแผนของสเปนและข้อความควรเป็นภาษาสวีเดนเท่านั้น จากนั้นคุณสามารถสร้างโลแคลชื่อ ' sv_ES' หรือ ' sv_ES.UTF-8' โดยใช้localedefโปรแกรม แต่จะง่ายกว่าและได้ผลเช่นเดียวกันตั้งค่าLANGตัวแปรเป็นes_ES.UTF-8และLC_MESSAGESตัวแปรเป็นsv_SE.UTF-8 ; ตำแหน่งที่ตั้งทั้งสองนี้ได้รับการติดตั้งมาพร้อมกับระบบปฏิบัติการแล้ว

LC_ALLเป็นตัวแปรสภาพแวดล้อมที่แทนที่สิ่งเหล่านี้ทั้งหมด โดยทั่วไปจะใช้ในสคริปต์ที่เรียกใช้โปรแกรมเฉพาะ ยกตัวอย่างเช่นสคริปต์การกำหนดค่าที่สร้างโดย GNU autoconfการใช้งานLC_ALLเพื่อให้แน่ใจว่าการทดสอบการกำหนดค่าไม่ได้ดำเนินการในรูปแบบขึ้นอยู่กับสถานที่เกิดเหตุ

น่าเสียดายที่บางระบบตั้งค่าLC_ALLใน/etc/profileหรือในไฟล์การเริ่มต้นที่คล้ายกัน ในฐานะผู้ใช้คุณจึงต้องยกเลิกการตั้งค่าตัวแปรนี้หากคุณต้องการตั้งค่าLANGและเลือกLC_xxxตัวแปรอื่น ๆ


แล้วการแปลงสัญญาณมาจากไหน? เหตุผลที่ฉันถามคือฉันใช้ git เป็นภาษาอังกฤษก่อนและหลังการอัปเดตมันเปลี่ยนเป็นภาษาของฉัน แต่ฉันไม่เป็นแบบนี้
user905686

@ user905686 ขออภัยความผิดพลาดของฉัน Git รองรับโลแคลพร้อม gettext ดังนั้นตรวจสอบตัวแปรสภาพแวดล้อมของคุณ ฉันระบุรายละเอียดที่จะตรวจสอบในคำตอบที่แก้ไขของฉัน
VonC

จะเกิดอะไรขึ้นถ้าฉันต้องการเปลี่ยนภาษาสำหรับ git แต่ไม่ใช่สำหรับโปรแกรมอื่น? เช่นสำหรับฉันการแปลมีข้อผิดพลาดบางอย่างดังนั้นฉันจึงต้องการให้ git เสมอ (ไม่ว่าโปรแกรมใดจะเรียกมันก็ตาม) มี LANG = C และทุกอย่างอื่นในภาษาแม่ของฉัน ความคิดใด ๆ ?
Droggl

@Droggl ตราบเท่าที่คุณตั้งค่าLANGในเซสชัน bash / shell / DOS ที่คุณใช้gitใน (หรือเรียกใช้git-guiจาก) มีเพียงgit(หรือgit-gui) เท่านั้นที่จะใช้การตั้งค่าเฉพาะนั้น โปรแกรมอื่น ๆ ทั้งหมดจะสืบทอดมาจากตัวแปรสภาพแวดล้อมของระบบ / ผู้ใช้
VonC

4

เรียกใช้LC_MESSAGES=C gitไม่ใช่ LC_ALL = C หรือ LANG = C และไม่จำเป็นต้องลบหรือเปลี่ยนชื่อไฟล์

คำสั่งนี้เปลี่ยนเอาต์พุตข้อความ Git เป็นภาษาอังกฤษ


2

GIT เริ่มต้นเป็นภาษาอังกฤษหากไม่พบภาษาโลแคล

ดังนั้นหากคุณต้องการให้ GIT เป็นภาษาอังกฤษให้ทำลายไฟล์ภาษาที่กำลังทำงานอยู่ ในกรณีของฉันมันมักจะทำงานด้วยภาษาเยอรมัน (เช่น: de.msg )

ถ้าฉันลบมันหรือเปลี่ยนชื่อมันแสดงว่าค่าเริ่มต้นเป็นภาษาอังกฤษ

ป้อนคำอธิบายภาพที่นี่

ที่นี่ฉันเปลี่ยนชื่อไฟล์

ป้อนคำอธิบายภาพที่นี่


ด้วย Git สำหรับ Windows 2.x (64 บิต) สิ่งนี้จะอยู่ในC:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo.
Koraktor

ข้อดีของวิธีนี้คือหลังจากอัปเดตคอมไพล์แล้วการแปลจะกลับมา (และอาจจะได้รับการปรับปรุง) ดังนั้นคุณสามารถตัดสินใจได้อีกครั้งว่าต้องการใช้หรือลบออกอีกครั้ง
user905686

ฉันได้ตรวจสอบซอร์สโค้ดดูเหมือนว่า git ไม่รองรับภาษาอังกฤษ: github.com/git-l10n/git-po/tree/master/po แม้ว่าฉันต้องการใช้ภาษาอังกฤษก่อนภาษาจีนและสวีเดน (en_GB: en: zh_HK: zh_CN: zh: sv_SE: sv) git ยังคงแสดงภาษาจีนให้ฉัน
Michael Tsang

บน Mac OSx ที่ติดตั้ง Git ผ่าน Homebrew ฉันพบโลแคลใน/usr/local/Cellar/git/2.21.0/share/locale/ไฟล์.
Magnus W

0

ตามที่ Bengt แนะนำ: เพิ่มบรรทัดเหล่านี้ในของคุณ~/.bashrcหรือ~/.bash_profileเพื่อบังคับให้คอมไพล์แสดงข้อความทั้งหมดเป็นภาษาอังกฤษ: vim ~/.bashrc- สำหรับโปรไฟล์นี้ (หากคุณเป็นผู้ใช้ubuntuและคุณแก้ไขสิ่งนี้จะเป็นสำหรับผู้ใช้รายนี้เท่านั้น) เพิ่มบรรทัดนี้:

# Set Git language to English
#alias git='LANG=en_US git'
alias git='LANG=en_GB git'
#you can add also 
LANG=en_GB

และหลังจากคุณปิดไฟล์คุณต้องเขียนในเชลล์:

source ~/.bashrc 

เพื่อโหลดการตั้งค่าใหม่หรือออกจากเทอร์มินัลและเชื่อมต่ออีกครั้ง :)


เป็นสิ่งที่เพิ่มเติมLANG=en_GBใน~/.bashrcควรจะทำอย่างไร นั่นไม่ใช่แค่กำหนดตัวแปรท้องถิ่นLANGหรือไม่?
user905686

0

นี่คือคำตอบของฉันที่จะเปลี่ยนภาษาคอมไพล์ติดตามคำตอบนี้และนี้

1) nano ~/.bashrc
2) เพิ่มลงalias git='LANG=en_GB git'ในไฟล์
2) บันทึกไฟล์
4)source ~/.bashrc

ตอนนี้คอมไพล์ของคุณเปลี่ยนภาษาแล้ว อย่างไรก็ตามหากหลังจากเทอร์มินัลรีสตาร์ทของคุณและมันไม่ทำงานอีกต่อไปคุณต้อง

4.1) nano ~/.profile
4.2) เพิ่มsource ~/.bashrc
4.3) บันทึกไฟล์

มันจะsource ~/.bashrcทำงานทุกครั้งที่คุณเปิดเทอร์มินัล

หวังว่ามันจะช่วยได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.