Làm cách nào để thay đổi ngôn ngữ của giao diện dòng lệnh của Git?


103

Tôi muốn thay đổi ngôn ngữ git (sang tiếng Anh) trong cài đặt Linux của mình mà không thay đổi ngôn ngữ cho các chương trình khác và không thể tìm thấy cài đặt. Làm thế nào để làm nó?


1
Bạn đang tìm cách thay đổi ngôn ngữ. Tôi nghĩ tôi sẽ đăng lại câu hỏi đó trên superuser.
JosefAssad

Câu trả lời:


145

Thêm các dòng này vào của bạn ~/.bashrchoặc ~/.bash_profileđể buộc git hiển thị tất cả các tin nhắn bằng tiếng Anh:

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

Bí danh cần được ghi đè LC_ALLtrên một số hệ thống, khi biến môi trường LC_ALLđược đặt, biến này được ưu tiên hơn LANG. Xem Đặc tả UNIX - Biến Môi trường để được giải thích thêm.

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

Trong trường hợp bạn đã thêm các dòng này vào ~/.bashrcbí danh sẽ được xác định khi một trình bao tương tác mới bắt đầu. Trong trường hợp bạn đã thêm nó vào ~/.bash_profilebí danh sẽ được áp dụng khi đăng nhập.


Có lỗi đánh máy trong tên tệp ( .bash.rcthay vì .bashrc). Bạn cũng phải đóng và khởi động lại trình bao .bashrcđể thực thi. Tôi cũng đã thêm một ghi chú về điều này.
Kéo dài

Tôi đã thử nó .bashrcngay cả khi khởi động lại. Bí danh hoạt động. Nó chỉ là ngôn ngữ không thay đổi.
user905686

Để xác minh rằng quá trình .bashrcđược thực thi thành công, bạn có thể thêm một bài kiểm tra echo "This is .bashrc"vào cuối tệp. Bạn cũng có thể thực thi nó theo yêu cầu mà không cần phải khởi động lại thiết bị đầu cuối hoặc toàn bộ hệ thống . .bashrc. Cuối cùng, tôi khuyên bạn nên thử đặt LC_ALLbiến môi trường thay vì LANG, vì biến đầu tiên được ưu tiên.
Kéo dài

Mọi thứ đều ổn với tôi .bashrc, thực sự. Nếu LC_ALLcó quyền ưu tiên thì đây sẽ là vấn đề, nó được đặt thành ngôn ngữ của tôi. Nhưng sau đó tôi không muốn thay đổi cài đặt ngôn ngữ chung ... Tôi có thể ghi đè nó cho một chương trình không?
user905686

1
Bạn có thể đặt ngôn ngữ bằng cách sử dụng phương pháp được đề xuất mà không có tác dụng phụ, vì các biến này chỉ tồn tại miễn là lệnh kết thúc. Hãy thử nó bằng cách chạy $ LC_ALL="en_US" manvà sau đó$ man
Kéo dài

20

Nếu bạn chỉ muốn có một lệnh bằng tiếng Anh, thay vào đó, bạn có thể viết LC_ALL=Ctrước lệnh, ví dụ:

LC_ALL=C git status

sẽ cho kết quả

# On branch master
nothing to commit, working directory clean

CNgôn ngữ được sử dụng là tiếng Anh và luôn có sẵn mà không cần cài đặt thêm gói ngôn ngữ
(xem https://askubuntu.com/a/142814/34298 )

Để thay đổi nó cho toàn bộ phiên bash hiện tại, chỉ cần nhập

LANG=C

Để thay đổi nó, chẳng hạn thành tiếng Đức enter

LANG=de_DE.UTF-8

Cảm ơn LC_ALL=Cđề xuất, vì tôi gặp một số vấn đề với ngôn ngữ, LC_ALL="en_US"gần đây nó không hoạt động nữa.
user905686

11

Thêm dòng này đã giải quyết được vấn đề cho tôi:

$ more ~/.bash_profile
export LANG=en_US

2
Câu hỏi đặt ra là làm cách nào để thay đổi ngôn ngữ chỉ dành cho git - tôi đã cập nhật để rõ ràng hơn.
user905686

6

Lưu ý: kể từ Git 2.3.1+ (Q1 / Q2 2015), Git sẽ thêm tiêu đề Accept-Language nếu có thể.
Xem cam kết f18604b bởi Yi EungJun ( eungjun-yi)

Thêm Accept-Languagetiêu đề cho biết ngôn ngữ ưa thích của người dùng được xác định bởi $LANGUAGE,$LC_ALL , $LC_MESSAGES$LANG.

Điều này tạo cơ hội cho máy chủ git hiển thị thông báo lỗi từ xa bằng ngôn ngữ ưa thích của người dùng.


Bạn có ngôn ngữ cho git gui hoặc các GUI khác ,nhưng không phải đối với dòng lệnh, coi đó là một trong những câu hỏi của GitSurvey 2010

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

Tất nhiên, kể từ năm 2010, như po/README mô tả:

Trước khi các chuỗi có thể được dịch, trước tiên chúng phải được đánh dấu để dịch.

Git sử dụng giao diện quốc tế hóa bao bọc gettextthư viện của hệ thống , vì vậy hầu hết các lời khuyên trong tài liệu gettext của bạn (trên hệ thống GNU info gettexttrong một thiết bị đầu cuối) đều áp dụng.

Được áp dụng kể từ git 1.7.9+ (tháng 1 năm 2012):

Git sử dụng gettextđể dịch các thông báo giao diện phổ biến nhất của nó sang ngôn ngữ của người dùng nếu có bản dịch và ngôn ngữ được đặt phù hợp .
Các nhà phân phối có thể thả các POtệp mới vào po/để thêm các bản dịch mới.

Vì vậy, nếu bản cập nhật của bạn làm rối bản dịch, hãy kiểm tra xem gettextsử dụng gì :
Ví dụ : xem " Biến môi trường ngôn ngữ "

Một ngôn ngữ bao gồm một số danh mục ngôn ngữ, hãy xem Các khía cạnh. Khi một chương trình tìm kiếm các giá trị phụ thuộc ngôn ngữ, nó sẽ thực hiện điều này theo các biến môi trường sau, theo thứ tự ưu tiên:

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

Các biến có giá trị được đặt nhưng trống sẽ bị bỏ qua trong tra cứu này.

LANGlà biến môi trường bình thường để chỉ định ngôn ngữ. Là người dùng, bạn thường đặt biến này (trừ khi một số biến khác đã được hệ thống đặt, trong/etc/profile hoặc các tệp khởi tạo tương tự).

LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, Và như vậy, là các biến môi trường có nghĩa là để ghi đè lên LANGvà ảnh hưởng đến một mục locale duy nhất mà thôi.
Ví dụ: giả sử bạn là người dùng Thụy Điển ở Tây Ban Nha và bạn muốn các chương trình của mình xử lý các số và ngày tháng theo quy ước Tây Ban Nha và chỉ các tin nhắn phải bằng tiếng Thụy Điển. Sau đó, bạn có thể tạo một ngôn ngữ có tên ' sv_ES' hoặc ' sv_ES.UTF-8' bằng cách sử dụng localedefchương trình. Nhưng đơn giản hơn và đạt được hiệu quả tương tự, đặt LANGbiến thành es_ES.UTF-8LC_MESSAGESbiến thànhsv_SE.UTF-8 ; hai ngôn ngữ này đã được cài đặt sẵn với hệ điều hành.

LC_ALLlà một biến môi trường ghi đè tất cả những điều này. Nó thường được sử dụng trong các tập lệnh chạy các chương trình cụ thể. Ví dụ, cấu hình các tập lệnh được tạo bởi GNU autoconfsử dụng LC_ALLđể đảm bảo rằng các bài kiểm tra cấu hình không hoạt động theo các cách phụ thuộc vào ngôn ngữ.

Rất tiếc, một số hệ thống được đặt LC_ALLtrong /etc/profilehoặc trong các tệp khởi tạo tương tự. Là người dùng, do đó bạn phải bỏ đặt biến này nếu bạn muốn đặt LANGvà tùy chọn một số LC_xxxbiến khác .


Vậy sự chuyển đổi bắt nguồn từ đâu? Lý do tại sao tôi hỏi là tôi đã có git trong tiếng Anh trước và sau khi cập nhật, nó đã thay đổi thành ngôn ngữ của tôi, nhưng tôi không thích điều này.
user905686

@ user905686 xin lỗi, nhầm lẫn của tôi. Git hỗ trợ ngôn ngữ, với gettext. Vì vậy, hãy kiểm tra các biến môi trường của bạn. Tôi nêu chi tiết cái nào cần kiểm tra trong câu trả lời đã chỉnh sửa của tôi.
VonC

Điều gì sẽ xảy ra nếu tôi chỉ muốn thay đổi ngôn ngữ cho git mà không phải cho các chương trình khác? Tức là đối với tôi các bản dịch đã phá vỡ một số điều nên tôi muốn git luôn (bất kể chương trình nào gọi nó) có LANG = C và mọi thứ khác bằng ngôn ngữ mẹ đẻ của tôi. Bất kỳ ý tưởng?
Droggl

@Droggl Miễn là bạn đặt LANGtrong phiên bash / shell / DOS mà bạn đang sử dụng gittrong (hoặc khởi chạy git-guitừ), chỉ git(hoặc git-gui) sẽ sử dụng cài đặt cụ thể đó. Tất cả các chương trình khác sẽ kế thừa từ các biến môi trường hệ thống / người dùng.
VonC

4

Chạy LC_MESSAGES=C git , không phải LC_ALL = C hoặc LANG = C và không cần xóa hoặc đổi tên tệp.

Lệnh này thay đổi đầu ra thông báo Git sang tiếng Anh.


2

GIT mặc định là tiếng Anh nếu nó không thể tìm thấy ngôn ngữ Locale.

Vì vậy, nếu bạn muốn GIT bằng tiếng Anh, chỉ cần phá hoại tệp ngôn ngữ mà nó đang chạy. Trong trường hợp của tôi, nó luôn chạy với tiếng Đức (ví dụ: de.msg ).

Nếu tôi xóa nó hoặc đổi tên nó, thì nó sẽ được mặc định là tiếng anh.

nhập mô tả hình ảnh ở đây

Ở đây tôi đã đổi tên tệp

nhập mô tả hình ảnh ở đây


Với Git cho Windows 2.x (64 bit), điều này sẽ có C:\Program Files\Git\mingw64\share\locale\$LANG\LC_MESSAGES\git.mo.
Koraktor

Ưu điểm của cách tiếp cận này có thể là sau khi cập nhật git, bản dịch sẽ trở lại (và có thể được cải thiện), vì vậy bạn có thể quyết định lại xem bạn muốn sử dụng hay xóa nó lần nữa.
user905686

Tôi đã kiểm tra mã nguồn, có vẻ như git không hỗ trợ tiếng Anh: github.com/git-l10n/git-po/tree/master/po Ngay cả khi tôi muốn sử dụng tiếng Anh trước tiếng Trung và tiếng Thụy Điển (en_GB: en: zh_HK: zh_CN: zh: sv_SE: sv), git vẫn hiển thị tiếng Trung cho tôi.
Michael Tsang

Trên Mac OSx có cài đặt Git qua Homebrew, tôi đã tìm thấy ngôn ngữ /usr/local/Cellar/git/2.21.0/share/locale/.
Magnus W

0

Như Bengt đã đề xuất: Thêm những dòng này vào của bạn ~/.bashrchoặc ~/.bash_profileđể buộc git hiển thị tất cả các thông báo bằng tiếng Anh: vim ~/.bashrc- cho hồ sơ này (nếu bạn là người dùng ubuntuvà bạn chỉnh sửa thì nó sẽ chỉ dành cho người dùng này); thêm dòng này:

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

và sau khi đóng tệp, bạn cần ghi vào shell:

source ~/.bashrc 

để tải lại cài đặt mới hoặc thoát khỏi thiết bị đầu cuối và kết nối lại :)


Các thêm là gì LANG=en_GBtrong ~/.bashrcphải làm gì? Điều đó không chỉ xác định biến cục bộ LANGsao?
dùng905686

0

Đây là giải pháp của tôi để thay đổi ngôn ngữ git theo câu trả lời nàyđiều này

1) nano ~/.bashrc
2) thêm alias git='LANG=en_GB git'vào tệp
2) lưu tệp
4)source ~/.bashrc

Bây giờ git của bạn đã thay đổi ngôn ngữ. Tuy nhiên, NẾU sau khi thiết bị đầu cuối khởi động lại của bạn và nó không hoạt động nữa, bạn cần phải

4.1) nano ~/.profile
4.2) thêm source ~/.bashrc
4.3) lưu tệp

nó sẽ source ~/.bashrcchạy bất cứ khi nào bạn mở thiết bị đầu cuối

Hy vọng nó sẽ giúp

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.