Bagaimana cara mengubah bahasa antarmuka baris perintah Git?

103

Saya ingin mengubah bahasa git (ke bahasa Inggris) di instalasi Linux saya tanpa mengubah bahasa untuk program lain dan tidak dapat menemukan pengaturannya. Bagaimana cara melakukannya?

pengguna905686
sumber
1
Anda ingin mengubah lokal. Saya pikir saya akan memposting ulang pertanyaan itu pada superuser.
JosefAssad

Jawaban:

145

Tambahkan baris ini ke Anda ~/.bashrcatau ~/.bash_profileuntuk memaksa git menampilkan semua pesan dalam bahasa Inggris:

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

Alias ​​perlu diganti LC_ALLpada beberapa sistem, ketika variabel lingkungan LC_ALLdisetel, yang didahulukan LANG. Lihat Spesifikasi UNIX - Variabel Lingkungan untuk penjelasan lebih lanjut.

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

Jika Anda menambahkan baris ini ke ~/.bashrcalias akan ditentukan saat shell interaktif baru dimulai. Jika Anda menambahkannya ke ~/.bash_profilealias akan diterapkan saat masuk.

Bengt
sumber
Ada kesalahan ketik pada nama file ( .bash.rcbukan .bashrc). Anda juga harus menutup dan memulai shell lagi .bashrcagar dapat dieksekusi. Saya juga menambahkan catatan tentang ini.
Bengt
Saya mencobanya .bashrcbahkan dengan memulai ulang. Alias ​​berfungsi. Hanya saja bahasanya tidak berubah.
pengguna905686
Untuk memverifikasi bahwa .bashrcberhasil dieksekusi, Anda dapat menambahkan tes seperti echo "This is .bashrc"di akhir file. Anda juga dapat menjalankannya sesuai permintaan tanpa harus memulai ulang terminal atau seluruh sistem . .bashrc. Akhirnya, saya akan menyarankan untuk mencoba mengatur LC_ALLvariabel lingkungan daripada LANG, karena yang pertama lebih diutamakan.
Bengt
Semuanya baik-baik saja dengan saya .bashrc, sungguh. Jika LC_ALLdiutamakan maka ini akan menjadi masalah, ini diatur ke bahasa saya. Tetapi kemudian saya tidak ingin mengubah pengaturan bahasa umum ... Tidak bisakah saya menimpanya untuk satu program?
pengguna905686
1
Anda dapat mengatur bahasa menggunakan metode yang disarankan tanpa efek samping, karena variabel ini hanya hidup selama perintah diperlukan untuk menghentikan. Cobalah dengan menjalankan $ LC_ALL="en_US" mandan kemudian$ man
Bengt
20

Jika Anda hanya ingin memiliki satu perintah dalam bahasa Inggris, Anda dapat menulis LC_ALL=Csebelum perintah, misalnya:

LC_ALL=C git status

akan menghasilkan

# On branch master
nothing to commit, working directory clean

Lokal yang digunakan dalam Cbahasa Inggris dan selalu tersedia tanpa menginstal paket bahasa tambahan
(lihat https://askubuntu.com/a/142814/34298 )

Untuk mengubahnya untuk seluruh sesi bash saat ini, cukup masuk

LANG=C

Untuk mengubahnya misalnya ke jerman enter

LANG=de_DE.UTF-8
rubo77
sumber
Terima kasih atas LC_ALL=Csarannya, karena saya memiliki beberapa masalah dengan lokal, LC_ALL="en_US"akhir-akhir ini tidak berfungsi lagi.
pengguna905686
11

Menambahkan baris ini memecahkan masalah bagi saya:

$ more ~/.bash_profile
export LANG=en_US
Donald Bebek
sumber
2
Pertanyaannya adalah bagaimana mengubah bahasa untuk git saja - saya memperbaruinya agar lebih jelas.
pengguna905686
6

Catatan: sejak Git 2.3.1+ (Q1 / Q2 2015), Git akan menambahkan header Accept-Language jika memungkinkan.
Lihat komit f18604b oleh Yi EungJun ( eungjun-yi)

Tambahkan Accept-Languagesundulan yang menunjukkan bahasa pilihan pengguna didefinisikan oleh $LANGUAGE, $LC_ALL, $LC_MESSAGESdan $LANG.

Hal ini memberikan kesempatan kepada server git untuk menampilkan pesan kesalahan jarak jauh dalam bahasa pilihan pengguna.


Anda memiliki tempat untuk git gui atau GUI lainnya ,tetapi tidak untuk baris perintah, mengingat itu adalah salah satu pertanyaan GitSurvey 2010

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

Tentu saja, sejak 2010, seperti yang po/READMEdijelaskan:

Sebelum string dapat diterjemahkan, string harus ditandai terlebih dahulu untuk diterjemahkan.

Git menggunakan antarmuka internasionalisasi yang membungkus gettextpustaka sistem , sehingga sebagian besar saran dalam dokumentasi gettext Anda (pada sistem GNU info gettextdi terminal) berlaku.

Berlaku sejak git 1.7.9+ (Januari 2012):

Git menggunakan gettextuntuk menerjemahkan pesan antarmuka yang paling umum ke dalam bahasa pengguna jika terjemahan tersedia dan lokalnya disetel dengan tepat .
Distributor dapat memasukkan POfile baru po/untuk menambahkan terjemahan baru.

Jadi, jika pembaruan Anda mengacaukan terjemahan, periksa gettextkegunaannya:
Lihat, misalnya, " Variabel Lingkungan Lokal "

Lokal terdiri dari beberapa kategori lokal, lihat Aspek. Ketika sebuah program mencari nilai-nilai dependen lokal, ia melakukan ini sesuai dengan variabel lingkungan berikut, dalam urutan prioritas:

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

Variabel yang nilainya ditetapkan tetapi kosong diabaikan dalam pencarian ini.

LANGadalah variabel lingkungan normal untuk menentukan lokal. Sebagai pengguna, Anda biasanya menyetel variabel ini (kecuali beberapa variabel lain telah disetel oleh sistem, di /etc/profileatau file inisialisasi serupa).

LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, Dan sebagainya, adalah variabel lingkungan dimaksudkan untuk menimpa LANGdan mempengaruhi kategori lokal tunggal saja.
Misalnya, asumsikan Anda adalah pengguna Swedia di Spanyol, dan Anda ingin program Anda menangani nomor dan tanggal menurut konvensi Spanyol, dan hanya pesan yang harus dalam bahasa Swedia. Kemudian Anda dapat membuat lokal bernama ' sv_ES' atau ' sv_ES.UTF-8' dengan menggunakan localedefprogram. Tapi itu lebih sederhana, dan mencapai efek yang sama, untuk mengatur LANGvariabel ke es_ES.UTF-8dan LC_MESSAGESvariabel ke sv_SE.UTF-8; kedua lokal ini sudah diinstal sebelumnya dengan sistem operasi.

LC_ALLadalah variabel lingkungan yang menggantikan semua ini. Ini biasanya digunakan dalam skrip yang menjalankan program tertentu. Misalnya, konfigurasikan skrip yang dihasilkan oleh autoconfpenggunaan GNU LC_ALLuntuk memastikan bahwa pengujian konfigurasi tidak beroperasi dengan cara yang bergantung pada lokal.

Beberapa sistem, sayangnya, mengatur LC_ALLdi /etc/profileatau di file inisialisasi yang sama. Sebagai pengguna, Anda harus meng-unset variabel ini jika ingin menyetel LANGdan secara opsional beberapa LC_xxxvariabel lainnya .

VonC
sumber
Jadi darimana asal transalasinya? Alasan mengapa saya bertanya adalah bahwa saya memiliki git dalam bahasa Inggris sebelum dan setelah pembaruan itu berubah ke bahasa saya, tetapi saya tidak suka ini.
pengguna905686
@ user905686 maaf, kesalahan saya. Git mendukung lokal, dengan gettext. Jadi periksa variabel lingkungan Anda. Saya merinci yang mana untuk memeriksa jawaban saya yang diedit.
VonC
Bagaimana jika saya hanya ingin mengubah bahasa untuk git tetapi tidak untuk program lain? Yaitu bagi saya terjemahan merusak beberapa hal jadi saya ingin selalu memiliki git (tidak peduli program mana yang menyebutnya) memiliki LANG = C dan yang lainnya dalam bahasa ibu saya. Ada ide?
Droggl
@Droggl Selama Anda mengatur LANGdalam sesi bash / shell / DOS yang Anda gunakan git(atau meluncurkan git-guidari), hanya git(atau git-gui) yang akan menggunakan pengaturan khusus itu. Semua program lain akan mewarisi dari variabel lingkungan sistem / pengguna.
VonC
4

Jalankan LC_MESSAGES=C git, bukan LC_ALL = C atau LANG = C dan tidak perlu menghapus atau mengganti nama file.

Perintah ini mengubah pesan keluaran Git ke bahasa Inggris.

iapetus
sumber
2

GIT default ke bahasa Inggris jika tidak dapat menemukan bahasa Lokal.

Jadi jika Anda ingin GIT dalam bahasa Inggris, cukup sabotase file bahasa yang sedang berjalan. Dalam kasus saya, itu selalu berjalan dengan bahasa Jerman (yaitu: de.msg ).

Jika saya menghapusnya atau mengganti namanya, maka defaultnya adalah bahasa Inggris.

masukkan deskripsi gambar di sini

Di sini saya mengganti nama file

masukkan deskripsi gambar di sini

Oliver Watkins
sumber
Dengan Git untuk Windows 2.x (64 bit) ini akan masuk C:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo.
Koraktor
Keuntungan dari pendekatan ini mungkin setelah pembaruan git, terjemahan akan kembali (dan mungkin ditingkatkan), jadi Anda dapat memutuskan lagi apakah Anda ingin menggunakannya atau menghapusnya lagi.
pengguna905686
Saya sudah cek source code-nya, sepertinya git tidak support bahasa Inggris: github.com/git-l10n/git-po/tree/master/po Bahkan saya ingin menggunakan bahasa Inggris dulu sebelum bahasa Mandarin dan Swedia (en_GB: en: zh_HK: zh_CN: zh: sv_SE: sv), git masih menunjukkan bahasa Mandarin kepada saya.
Michael Tsang
Di Mac OSx dengan Git diinstal melalui Homebrew, saya menemukan lokalnya di /usr/local/Cellar/git/2.21.0/share/locale/.
Magnus W
0

Seperti yang disarankan Bengt: Tambahkan baris ini ke Anda ~/.bashrcatau ~/.bash_profileuntuk memaksa git menampilkan semua pesan dalam bahasa Inggris: vim ~/.bashrc- untuk profil ini (jika Anda adalah pengguna ubuntudan Anda mengedit ini, ini hanya untuk pengguna ini); tambahkan baris ini:

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

dan setelah Anda menutup file, Anda perlu menulis di shell:

source ~/.bashrc 

untuk memuat ulang pengaturan baru atau keluar dari terminal dan menghubungkan kembali :)

Svetoslav
sumber
Apa tambahan LANG=en_GBdi ~/.bashrclakukan? Bukankah itu hanya mendefinisikan variabel lokal LANG?
pengguna905686
0

Inilah solusi saya untuk mengubah bahasa git ikuti jawaban ini dan ini

1) nano ~/.bashrc
2) tambahkan alias git='LANG=en_GB git'ke file
2) simpan file
4)source ~/.bashrc

Sekarang git Anda sudah mengubah bahasa. Namun, JIKA setelah terminal restart Anda dan tidak berfungsi lagi, Anda perlu

4.1) nano ~/.profile
4.2) tambahkan source ~/.bashrc
4.3) simpan file

itu akan source ~/.bashrcberjalan setiap kali Anda membuka terminal

Semoga membantu

Phan Van Linh
sumber