Homebrew và Git - Ngôn ngữ sai trên dòng lệnh


43

Tôi có một vấn đề kỳ lạ - khi tôi sử dụng gitlệnh đi kèm với gói Công cụ dòng lệnh, giao diện trên dòng lệnh bằng tiếng Anh, như tôi muốn. Tuy nhiên, phiên bản được cài đặt sử dụng Homebrew sử dụng tiếng Đức trong đầu ra của nó (Tôi sống ở Đức, nhưng ngôn ngữ hệ thống của tôi được đặt thành tiếng Anh Mỹ và máy tính thực sự được mua ở Singapore, nếu có vấn đề).

Tôi tin rằng điều này chỉ thay đổi gần đây. Tôi đã phải đưa máy Mac của mình đi sửa chữa và làm như vậy trong một cửa hàng ở Đức. Bây giờ tôi đã lấy lại được máy tính của mình, tôi nhận thấy rằng đầu ra của Git bằng tiếng Đức, không chắc họ có làm gì với cài đặt hệ thống trong khi họ có nó không. Theo tôi biết, đây là ứng dụng dòng lệnh duy nhất sử dụng tiếng Đức làm ngôn ngữ. Đây là đầu ra được tạo bởi localelệnh:

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

Tôi muốn Git nói chuyện với tôi bằng tiếng Anh. Tôi biết tôi có thể đặt LANGv.v thành tiếng Anh và nó có thể sẽ hoạt động, nhưng tôi cũng muốn hiểu sự thay đổi này có thể đến từ đâu.

Có ý kiến ​​gì không?

EDIT : để làm cho mọi thứ thú vị hơn, tôi sử dụng một máy Mac khác mà tôi có được từ công việc. Nó được mua ở Đức, cài đặt ngôn ngữ ban đầu là tiếng Đức (mà tôi đã đổi thành tiếng Anh Mỹ) và mọi thứ đều hoạt động tốt trên đó, tức là cả cài đặt Git (CLT và Homebrew) đều sử dụng tiếng Anh. Thông tin miền địa phương từ localelệnh là như nhau.


Tôi nghĩ rằng tôi đang có cùng một vấn đề. Chạy trên macOS Mojave 10.14 (18A389), Homebrew 1.7.6, phiên bản git 2.19.0,
Frank Lämmer

2
Điều này chỉ xảy ra với tôi khi tôi nâng cấp lên Mojave; cho đến bây giờ nó hoạt động tốt Tất cả các giao diện OS X bằng tiếng Anh, ngôn ngữ C, nhưng tôi đang ở một quốc gia nói tiếng Đức và git đang nói chuyện với tôi bằng tiếng Đức. Vậy làm thế nào để git quyết định sử dụng ngôn ngữ nào?
alexis

Câu trả lời:


57

Gần đây, tôi đã bắt đầu quan sát hành vi tương tự, đặc biệt là với git (và sau khi cập nhật lên MacOS Mojave). Lúc đầu, tôi nghĩ đó là một vấn đề với chính git. Vì vậy, tôi đã cài đặt lại git với homebrew nhưng không có kết quả.

Tuy nhiên, đi đến tab "Ngôn ngữ & Vùng" trong "Cài đặt" MacOS và xóa các ngôn ngữ khác khỏi danh sách mà bạn không cần (lưu ý: những ngôn ngữ này khác với các nguồn đầu vào bàn phím) dẫn đến git hiển thị thông báo đầu ra lệnh trong thiết bị đầu cuối trong ngôn ngữ mong muốn (trong trường hợp của tôi, tiếng Anh).

Đáng chú ý, sự cố này chỉ xảy ra với tôi trong thiết bị đầu cuối macOS (và không, ví dụ, thiết bị đầu cuối của VSCode).


1
Tôi chưa có trên Mojave, nhưng điều này đã khắc phục vấn đề của tôi. Và như bạn nói, thiết bị đầu cuối VSCode hoặc Idea bằng tiếng Anh, chỉ iterm2 là tiếng Đức. Tôi có khá nhiều nguồn đầu vào, bao gồm cả tiếng Đức, vì tôi thường viết bằng các ngôn ngữ khác nhau và cần các ký tự đặc biệt của chúng. Có vẻ như (chỉ được kiểm tra) khi tôi thêm một nguồn đầu vào, nó cũng thêm một ngôn ngữ vào danh sách 'Ngôn ngữ & Vùng', điều này không thực sự cần thiết và gây ra sự cố. Lạ lùng thay, tiếng Anh vẫn đứng đầu danh sách đó nhưng bằng cách nào đó bị lấn át bởi ngôn ngữ thứ hai, tiếng Đức. Hừm.
wujek

1
Một điều tương tự đã xảy ra với tôi sau khi cập nhật lên Mojave. Git Terminal của tôi bằng tiếng Anh nhưng git qua thiết bị đầu cuối IntelliJ là tiếng Tây Ban Nha (ngôn ngữ phụ của tôi trong Ngôn ngữ & Reigon). Tôi rõ ràng đặt biến môi trường LANG của mình và nó đã sửa nó, bởi vì tôi muốn tiếng Tây Ban Nha trong Ngôn ngữ & Reigon
Sam

@wujek thực tế là bạn không sử dụng Mojave, cho phép có khả năng nó vẫn có thể là một vấn đề với gói git gần đây nhất trên homebrew. Trên hệ thống của tôi, chỉ có hai thay đổi được thực hiện sau đó tôi đã nhận thấy vấn đề: cập nhật lên Mojave và nâng cấp gói git với homebrew.
Anton K

1
Tôi đã rất ngạc nhiên khi thấy git bằng tiếng Nga: D
Artem

3
Xóa một ngôn ngữ không phải là một giải pháp. Tôi đặt LANG = en_US.UTF-8 và nó vẫn bằng tiếng Pháp.
Walker Rowe

10

Tôi có cùng một vấn đề. Sau khi nâng cấp homebrew git 2.17.0 -> 2.19.1, tôi thấy rằng phiên bản git mới bắt đầu tôn trọng biến env LANG.

Nếu

LANG="en_US.UTF-8"

hoặc là

LANG=

git sẽ sử dụng tiếng Anh.

Nếu, ví dụ,

LANG="zh_CN.UTF-8"

git dùng tiếng trung.

Tôi chưa đọc nhật ký cam kết của git, nhưng tôi nghĩ nó hoạt động như dự định. Chỉ cảm thấy một chút kỳ lạ để xem các thông báo đầu ra dòng lệnh git không phải tiếng Anh :)


thực sự en_ENkhông phải là một miền địa phương hợp lệ Các địa phương hợp lệ có mã quốc gia là 2 ký tự cuối cùng, vì vậy, ví dụ en_USen_UKlà các địa phương hợp lệ.
Walter Tross

Không hoạt động với tôi ngay cả với phiên bản git 2.21.0 từ homebrew 2.1.6
Nicolas Massart

@WalterTross Trên thực tế en_UKcũng không hợp lệ, en_GB(Vương quốc Anh) là chính xác. stackoverflow.com/a/7296292/9534591
ik1ne

Phải, và trên thực tế tôi đã sửa câu trả lời của Timothy Siwula một cách chính xác, sau khi kiểm tra lại. Người ta luôn phải kiểm tra kỹ lưỡng với UK vs GB :-(. BTW, thật điên rồ khi GB là mã ISO của Vương quốc Anh, bao gồm Vương quốc Anh và Bắc Ireland: en.wikipedia.org/wiki/ISO_3166-2: GB
Walter Tross

đây phải là câu trả lời được xác thực, loại bỏ ngôn ngữ khỏi cài đặt có tác động khác.
tsnobip

4

Thêm phần này vào .bash_profiletệp của bạn - có một lỗi tương tự với thành phần đầu cuối của PyCharm trên 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=

Sau khi làm điều này, bạn sẽ cần khởi động lại hệ thống của mình để hệ thống có hiệu lực.

Tín dụng vào bài viết trên blog này


3

Từ những gì tôi có thể nói, đó là một vấn đề với GNU gettext chứ không phải là vấn đề với Git.

Có vẻ như lỗi đã được sửa trong GNU gettext v0.20 ; nhưng, kể từ khi đăng bài này, Homebrew không may chỉ cung cấp v0.19.8.1 .


Tôi đã tái tạo vấn đề như sau:

$ 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

các brew info gettextdường như để cung cấp cho infos về làm thế nào để sửa chữa vấn đề bằng cách thêm gettex trên đường đi, nhưng tôi không thể nói nếu tôi nên làm điều này hay không ...
Nicolas Massart


0

Tôi có cùng một vấn đề với Mojave và Git 2.19, nhưng tôi vừa cập nhật Git lên 2.21 và nó hoạt động như mong đợi một lần nữa.


2
Tôi đang gặp vấn đề với git 2.21.0
Walter Tross
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.