Homebrew และ Git - ภาษาผิดบนบรรทัดคำสั่ง


43

ฉันมีปัญหาแปลก ๆ - เมื่อฉันใช้gitคำสั่งที่มาพร้อมกับแพ็คเกจเครื่องมือบรรทัดคำสั่งอินเทอร์เฟซบนบรรทัดคำสั่งจะเป็นภาษาอังกฤษตามที่ฉันต้องการ อย่างไรก็ตามรุ่นที่ติดตั้งโดยใช้ Homebrew ใช้ภาษาเยอรมันในผลลัพธ์ (ฉันใช้งานในประเทศเยอรมนี แต่ภาษาของระบบของฉันถูกตั้งค่าเป็นภาษาอังกฤษแบบสหรัฐอเมริกาและคอมพิวเตอร์ถูกซื้อในสิงคโปร์จริง ๆ ถ้าเป็นเรื่องสำคัญ)

ฉันเชื่อว่าสิ่งนี้เปลี่ยนไปเมื่อเร็ว ๆ นี้ ฉันต้องให้ Mac ของฉันสำหรับการซ่อมแซมและทำเช่นนั้นในร้านเยอรมัน ตอนนี้ฉันมีคอมพิวเตอร์ของฉันกลับฉันสังเกตเห็นว่าผลลัพธ์ของ Git เป็นภาษาเยอรมันไม่แน่ใจว่าพวกเขาทำอะไรกับการตั้งค่าระบบในขณะที่พวกเขามีมัน เท่าที่ฉันรู้นี่เป็นแอปพลิเคชันบรรทัดคำสั่งเดียวที่ใช้ภาษาเยอรมันเป็นภาษาของมัน นี่คือเอาต์พุตที่สร้างโดยlocaleคำสั่ง:

LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

ฉันต้องการให้ Git คุยกับฉันเป็นภาษาอังกฤษ ฉันรู้ว่าฉันสามารถตั้งค่าLANGอื่น ๆ เป็นภาษาอังกฤษและมันจะ (อาจ) ทำงาน แต่ฉันก็ต้องการที่จะเข้าใจว่าการเปลี่ยนแปลงนี้อาจจะมาจาก

ความคิดใด ๆ

แก้ไข : เพื่อทำให้สิ่งต่าง ๆ น่าสนใจยิ่งขึ้นฉันใช้ Mac เครื่องอื่นที่ฉันได้รับจากการทำงาน มีการซื้อในเยอรมนีการตั้งค่าภาษาเริ่มต้นเป็นภาษาเยอรมัน (ซึ่งฉันเปลี่ยนเป็นภาษาอังกฤษแบบสหรัฐอเมริกา) และทุกอย่างทำงานได้ดีเช่นการติดตั้ง Git (CLT และ Homebrew) ใช้ภาษาอังกฤษ ข้อมูลโลแคลจากlocaleคำสั่งเหมือนกัน


ฉันคิดว่าฉันมีปัญหาเดียวกัน ทำงานบน macOS Mojave 10.14 (18A389), Homebrew 1.7.6, git เวอร์ชั่น 2.19.0 …
Frank Lämmer

2
นี่เพิ่งเกิดขึ้นกับฉันเมื่อฉันอัพเกรดเป็นโมฮาวี จนถึงตอนนี้มันใช้งานได้ดี อินเทอร์เฟซ OS X ทั้งหมดในภาษาอังกฤษ, โลแคล C แต่ฉันอยู่ในประเทศที่ใช้ภาษาเยอรมันและคอมไพล์กำลังพูดกับฉันเป็นภาษาเยอรมัน ดังนั้นวิธีที่จะคอมไพล์ตัดสินใจเลือกสิ่งที่ภาษาที่จะใช้?
อเล็กซิส

คำตอบ:


57

เมื่อเร็ว ๆ นี้ฉันเริ่มสังเกตเห็นพฤติกรรมเดียวกันโดยเฉพาะกับคอมไพล์ (และหลังจากอัปเดตเป็น MacOS Mojave) ตอนแรกฉันคิดว่ามันเป็นปัญหากับคอมไพล์เอง ดังนั้นฉันได้ติดตั้งคอมไพล์ด้วย homebrew เป็นประโยชน์

อย่างไรก็ตามไปที่แท็บ "ภาษาและภูมิภาค" ใน MacOS "การตั้งค่า" และลบภาษาอื่น ๆ ออกจากรายการที่คุณไม่ต้องการ (หมายเหตุ: สิ่งเหล่านี้แตกต่างจากแหล่งอินพุตคีย์บอร์ด) ส่งผลให้คอมไพล์แสดงข้อความเอาต์พุตคำสั่ง ใน terminal ในภาษาที่ต้องการ (ในกรณีของฉัน, ภาษาอังกฤษ)

โดยเฉพาะอย่างยิ่งปัญหานี้เกิดขึ้นกับฉันเฉพาะในเทอร์มินัล macOS (และไม่ใช่เช่นเทอร์มินัลของ VSCode)


1
ฉันยังไม่ได้ไปที่โมฮาวี แต่นี่เป็นการแก้ไขปัญหาของฉัน และอย่างที่คุณพูดเทอร์มินัล VSCode หรือ Idea เป็นภาษาอังกฤษเพียง iterm2 เป็นภาษาเยอรมัน ฉันมีแหล่งอินพุตค่อนข้างน้อยรวมถึงภาษาเยอรมันเนื่องจากฉันมักจะเขียนในภาษาที่แตกต่างกันและต้องการอักขระพิเศษของพวกเขา ดูเหมือนว่า (เพิ่งทดสอบ) เมื่อฉันเพิ่มแหล่งอินพุตมันยังเพิ่มภาษาลงในรายการ 'ภาษาและภูมิภาค' ซึ่งไม่จำเป็นจริงๆและทำให้เกิดปัญหา น่าแปลกที่ภาษาอังกฤษยังคงอยู่ในอันดับต้น ๆ ของภาษานั้น แต่ก็ถูกแทนที่ด้วยภาษาที่สองคือภาษาเยอรมัน อืมมม
wujek

1
สิ่งที่คล้ายกันเกิดขึ้นกับฉันหลังจากอัปเดตเป็นโมฮาวี คอมไพล์ Terminal ของฉันเป็นภาษาอังกฤษ แต่คอมไพล์ผ่าน IntelliJ terminal นั้นเป็นภาษาสเปน (ภาษาที่สองของฉันใน Language & Reigon) ฉันตั้งค่าตัวแปรสภาพแวดล้อม LANG ของฉันอย่างชัดเจนและแก้ไขได้เพราะฉันต้องการภาษาสเปนในภาษา & Reigon
Sam

@wujek ความจริงที่ว่าคุณไม่ได้ใช้ Mojave ช่วยให้เป็นไปได้ว่ามันยังคงเป็นปัญหากับแพ็คเกจ git ล่าสุดใน homebrew ในระบบของฉันมีการเปลี่ยนแปลงเพียงสองครั้งเท่านั้นหลังจากนั้นฉันสังเกตเห็นปัญหา: อัปเดตเป็นโมฮาวีและอัพเกรดแพ็คเกจ git ด้วย homebrew
Anton K

2
ฉันประหลาดใจมากที่เห็นคอมไพล์ในรัสเซีย: D
Artem

3
การลบภาษาไม่ใช่วิธีแก้ปัญหา ฉันตั้ง LANG = en_US.UTF-8 และมันยังเป็นภาษาฝรั่งเศส
Walker Rowe

10

ฉันมีปัญหาเดียวกัน หลังจากอัพเกรด homebrew git 2.17.0 -> 2.19.1 ฉันพบว่ารุ่น git ใหม่เริ่มเคารพตัวแปร env LANG

ถ้า

LANG="en_US.UTF-8"

หรือ

LANG=

git จะใช้ภาษาอังกฤษ

ถ้าเช่น

LANG="zh_CN.UTF-8"

git ใช้ภาษาจีน

ฉันยังไม่ได้อ่านบันทึกการใช้คอมไพล์ แต่ฉันคิดว่ามันทำงานได้ตามที่ตั้งใจไว้ แค่รู้สึกแปลก ๆ เล็กน้อยเพื่อดูข้อความเอาต์พุตบรรทัดคำสั่ง git ที่ไม่ใช่ภาษาอังกฤษ :)


จริง ๆ แล้วen_ENไม่ใช่สถานที่ที่ถูกต้อง สถานที่ที่ถูกต้องมีรหัสประเทศเป็นอักขระ 2 ตัวสุดท้ายดังนั้นเช่นen_USและen_UKเป็นสถานที่ที่ถูกต้อง
Walter Tross

ใช้งานไม่ได้สำหรับฉันแม้กับ git เวอร์ชัน 2.21.0 จาก homebrew 2.1.6
Nicolas Massart

@WalterTross จริงๆแล้วen_UKก็ไม่ถูกต้องen_GB(Great Britain) เป็นสิ่งที่ถูกต้อง stackoverflow.com/a/7296292/9534591
ik1ne

ใช่และในความเป็นจริงฉันได้แก้ไขคำตอบของทิโมธีซีอูวลาอย่างถูกต้องหลังจากตรวจสอบซ้ำอีกครั้ง เราต้องตรวจสอบกับ UK vs GB :-( BTW มันบ้าที่ GB เป็นรหัส ISO สำหรับสหราชอาณาจักรซึ่งประกอบด้วยสหราชอาณาจักรและไอร์แลนด์เหนือ: en.wikipedia.org/wiki/ISO_3166-2: GB
วอลเตอร์ Tross

นี่ควรเป็นคำตอบที่ได้รับการตรวจสอบแล้วการลบภาษาออกจากการตั้งค่ามีผลกระทบอื่น ๆ
tsnobip

4

เพิ่มลงในไฟล์ของคุณ - .bash_profileมีข้อผิดพลาดที่คล้ายกันกับส่วนประกอบเทอร์มินัลของ PyCharm บน macOS mojave (10.14)

# locale settings, string mac/chinese/pycharm/git bug
# https://coderwall.com/p/ehvc8w/set-lang-variable-in-osx-terminal-app
export LANG="en_GB.UTF-8"
export LC_COLLATE="en_GB.UTF-8"
export LC_CTYPE="en_GB.UTF-8"
export LC_MESSAGES="en_GB.UTF-8"
export LC_MONETARY="en_GB.UTF-8"
export LC_NUMERIC="en_GB.UTF-8"
export LC_TIME="en_GB.UTF-8"
export LC_ALL=

หลังจากทำเช่นนี้คุณจะต้องเริ่มระบบของคุณใหม่เพื่อให้มีผล

เครดิตไปที่โพสต์บล็อกนี้


3

จากสิ่งที่ฉันสามารถบอกได้มันเป็นปัญหากับ GNU gettextแทนที่จะเป็นปัญหากับ Git

ดูเหมือนว่าข้อผิดพลาดได้รับการแก้ไขในGNU gettext v0.20 ; แต่จากการโพสต์นี้ Homebrew น่าเสียดายที่ให้เพียง v0.19.8.1


ฉันทำซ้ำปัญหาดังต่อไปนี้:

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.4
BuildVersion:   18E226
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
$ defaults read -g AppleLanguages
(
    "en-JP",
    "ja-JP",
    "sv-JP"
)
$ brew info gettext
gettext: stable 0.19.8.1 (bottled) [keg-only]
GNU internationalization (i18n) and localization (l10n) library
https://www.gnu.org/software/gettext/
/usr/local/Cellar/gettext/0.19.8.1 (1,934 files, 17.0MB)
  Poured from bottle on 2016-06-24 at 02:05:52
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/gettext.rb
...
$ /usr/local/Cellar/gettext/0.19.8.1/bin/msgcat --version
msgcat (GNU gettext-tools) 0.19.8.1
Copyright (c) 2001-2016 Free Software Foundation, Inc.
Licens GPLv3+: GNU GPL version 3 eller senare <http://gnu.org/licenses/gpl.html>
Detta program "ar fri programvara.  Du kan modifiera och distribuera den.
Det finns inte NAGON SOM HELST GARANTI, till den grad som lagen tillater.
Skrivet av Bruno Haible.
$ sudo filebyproc.d
CPU     ID                    FUNCTION:NAME
...
  2    957              open_nocancel:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/bin
  2    957              open_nocancel:entry msgcat /etc/localtime
  2    957              open_nocancel:entry msgcat /var/db/timezone/zoneinfo/posixrules
  2    957              open_nocancel:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/locale.alias
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/en_JP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/en/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja_JP.eucJP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja_JP.eucjp/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja_JP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja.eucJP/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja.eucjp/LC_MESSAGES/gettext-tools.mo
  2    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/ja/LC_MESSAGES/gettext-tools.mo
  3    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/sv_JP/LC_MESSAGES/gettext-tools.mo
  3    171                       open:entry msgcat /usr/local/Cellar/gettext/0.19.8.1/share/locale/sv/LC_MESSAGES/gettext-tools.mo

brew info gettextดูเหมือนว่าจะให้ข่าวสารเกี่ยวกับวิธีการแก้ไขปัญหาโดยการเพิ่ม gettex ในเส้นทาง แต่ผมไม่สามารถที่จะบอกว่าผมควรจะทำเช่นนี้หรือไม่ ...
นิโคลัส Massart


0

ฉันมีปัญหาเดียวกันกับ Mojave และ Git 2.19 แต่ฉันเพิ่งปรับปรุง Git เป็น 2.21 และทำงานได้ตามที่คาดไว้อีกครั้ง


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