Homebrew dan Git - Bahasa salah pada baris perintah

43

Saya memiliki masalah aneh - ketika saya menggunakan gitperintah yang datang dengan paket Alat Baris Perintah, antarmuka pada baris perintah dalam bahasa Inggris, seperti yang saya inginkan. Namun, versi yang diinstal menggunakan Homebrew menggunakan bahasa Jerman dalam outputnya (saya tinggal di Jerman, tetapi bahasa sistem saya diatur ke Bahasa Inggris AS dan komputer sebenarnya dibeli di Singapura, jika itu penting).

Saya percaya ini baru saja berubah. Saya harus memberikan Mac saya untuk diperbaiki dan melakukannya di toko Jerman. Sekarang setelah komputer saya kembali, saya perhatikan bahwa keluaran Git dalam bahasa Jerman, tidak yakin apakah mereka melakukan sesuatu pada pengaturan sistem saat mereka memilikinya. Sejauh yang saya tahu, ini adalah satu-satunya aplikasi baris perintah yang menggunakan bahasa Jerman sebagai bahasanya. Ini adalah output yang dihasilkan oleh localeperintah:

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

Saya ingin Git berbicara dengan saya dalam bahasa Inggris. Saya tahu saya bisa mengatur LANGdll ke bahasa Inggris dan itu (mungkin) akan berhasil, tetapi saya juga ingin memahami dari mana perubahan ini berasal.

Ada ide?

EDIT : untuk membuat segalanya lebih menarik, saya menggunakan Mac lain yang saya dapatkan dari kantor. Itu dibeli di Jerman, pengaturan bahasa awal adalah Jerman (yang saya ubah ke Bahasa Inggris AS) dan semuanya berfungsi dengan baik, yaitu instalasi Git (CLT dan Homebrew) menggunakan bahasa Inggris. Informasi lokal dari localeperintah adalah sama.

wujek
sumber
Saya pikir saya mengalami masalah yang sama. Berjalan di macOS Mojave 10.14 (18A389), Homebrew 1.7.6, git versi 2.19.0…
Frank Lämmer
2
Ini baru saja terjadi pada saya ketika saya meningkatkan ke Mojave; sampai sekarang ini berfungsi dengan baik. Semua antarmuka OS X dalam bahasa Inggris, C locale, tapi saya di negara berbahasa Jerman dan git berbicara kepada saya dalam bahasa Jerman. Jadi bagaimana melakukan git memutuskan apa bahasa yang akan digunakan?
alexis

Jawaban:

57

Baru-baru ini, saya mulai mengamati perilaku yang sama, terutama dengan git (dan setelah memperbarui ke MacOS Mojave). Pada awalnya, saya pikir itu masalah dengan git itu sendiri. Jadi, saya telah menginstal ulang git dengan homebrew tetapi tidak berhasil.

Namun, pergi ke tab "Bahasa & Wilayah" di MacOS "Pengaturan", dan menghapus bahasa lain dari daftar yang tidak Anda butuhkan (catatan: ini berbeda dari sumber input keyboard) mengakibatkan git menampilkan pesan output perintah di terminal dalam bahasa yang diinginkan (dalam kasus saya, bahasa Inggris).

Khususnya, masalah ini hanya terjadi pada saya di terminal macOS (dan bukan, misalnya, terminal VSCode).

Anton K
sumber
1
Saya belum di Mojave, tapi ini memperbaiki masalah saya. Dan seperti yang Anda katakan, terminal VSCode atau Idea dalam bahasa Inggris, hanya iterm2 di Jerman. Saya memiliki beberapa sumber input, termasuk Jerman, karena saya sering menulis dalam berbagai bahasa dan memerlukan karakter khusus mereka. Tampaknya (baru diuji) ketika saya menambahkan sumber input, juga menambahkan bahasa ke daftar 'Bahasa & Wilayah', yang sebenarnya tidak perlu dan menyebabkan masalah. Cukup aneh, bahasa Inggris masih berada di urutan teratas, tetapi entah bagaimana ditimpa oleh bahasa kedua, Jerman. Hmm.
wujek
1
Hal serupa terjadi pada saya setelah memperbarui ke Mojave. Terminal git saya dalam bahasa Inggris tetapi terminal melalui terminal IntelliJ dalam bahasa Spanyol (bahasa kedua saya di Language & Reigon). Saya secara eksplisit mengatur variabel lingkungan LANG saya dan memperbaikinya, karena saya ingin bahasa Spanyol dalam Bahasa & Reigon
Sam
@wujek fakta bahwa Anda tidak menggunakan Mojave, memungkinkan kemungkinan masih ada masalah dengan paket git terbaru di homebrew. Di sistem saya, hanya dua perubahan yang telah dibuat setelah saya perhatikan masalahnya: perbarui ke Mojave dan perbarui paket git dengan homebrew.
Anton K
1
Saya sangat terkejut melihat git dalam bahasa Rusia: D
Artem
3
Menghapus bahasa bukan solusi. Saya mengatur LANG = en_US.UTF-8 dan masih dalam bahasa Perancis.
Walker Rowe
10

Saya mengalami masalah yang sama. Setelah upgrade homebrew git 2.17.0 -> 2.19.1, saya menemukan bahwa versi git baru mulai menghormati variabel LANG env.

Jika

LANG="en_US.UTF-8"

atau

LANG=

git akan menggunakan bahasa Inggris.

Jika, misalnya,

LANG="zh_CN.UTF-8"

git gunakan bahasa Cina.

Saya belum membaca komit log git, tapi saya pikir itu berfungsi sebagaimana dimaksud. Hanya merasa sedikit aneh untuk melihat pesan output baris perintah git non-bahasa Inggris :)

PickBoy
sumber
sebenarnya en_ENbukan lokal yang valid. Lokal yang valid memiliki kode negara sebagai 2 karakter terakhir, jadi, mis., en_USDan en_UKlokal adalah valid.
Walter Tross
Tidak bekerja untuk saya bahkan dengan git versi 2.21.0 dari homebrew 2.1.6
Nicolas Massart
@WalterTross Sebenarnya en_UKjuga tidak valid, en_GB(Britania Raya) adalah yang benar. stackoverflow.com/a/7296292/9534591
ik1ne
Benar, dan sebenarnya saya sudah memperbaiki jawaban oleh Timothy Siwula dengan benar, setelah memeriksa ulang. Seseorang selalu harus mengecek dengan Inggris vs GB :-(. BTW, gila bahwa GB adalah kode ISO untuk Inggris, yang terdiri dari Inggris Raya dan Irlandia Utara: en.wikipedia.org/wiki/ISO_3166-2: GB
Walter Tross
ini harus menjadi jawaban yang divalidasi, menghapus bahasa dari pengaturan memiliki dampak lain.
tsnobip
4

Menambahkan ini ke Anda .bash_profilefile-- ada bug sama dengan komponen terminal PyCharm pada 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=

Setelah melakukan ini, Anda harus me-restart sistem Anda agar bisa berlaku.

Penghargaan diberikan untuk posting blog ini

Tim Siwula
sumber
3

Dari apa yang saya tahu, ini masalah dengan gettext GNU daripada masalah dengan Git.

Sepertinya bug diperbaiki di GNU gettext v0.20 ; tetapi, pada posting ini, sayangnya Homebrew hanya menyediakan v0.19.8.1 .


Saya mereproduksi masalah sebagai berikut:

$ 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
execjosh
sumber
yang brew info gettexttampaknya memberikan info tentang bagaimana isu-isu memperbaiki dengan menambahkan gettex di jalan, tapi aku tidak bisa mengatakan apakah aku harus melakukan ini atau tidak ...
Nicolas Massart
0

Saya memiliki masalah yang sama dengan Mojave dan Git 2.19, tetapi saya baru saja memperbarui Git ke 2.21 dan berfungsi seperti yang diharapkan lagi.

Juan Maya
sumber
2
Saya mengalami masalah dengan git 2.21.0
Walter Tross