Komut çıkış dilini anadilimden İngilizce'ye nasıl değiştirebilirim, böylece Ubuntu'yu sor sorumu İngilizce komut çıktısıyla (hata mesajları) gönderebilirim?
Komut çıkış dilini anadilimden İngilizce'ye nasıl değiştirebilirim, böylece Ubuntu'yu sor sorumu İngilizce komut çıktısıyla (hata mesajları) gönderebilirim?
Yanıtlar:
export LC_ALL=C
yeterlidir. Sonraki tüm komutlar İngilizce olarak verilecektir.
Daha fazla bilgi: "LC_ALL = C" ne yapıyor?
Ana dile geri dönmek istiyorsanız, LC_ALL
değişkeni çözün :
unset LC_ALL
DE ve EN yerel ayarları arasında geçiş yapmak için benim bash işlevim.
Bu kodu tercih ettiğiniz dillerle genişletebilirsiniz. Bunu kullanmak için, içine ~/.bashrc
(veya ~/.bash_profile
) -
_configure_locale EN
İngilizceye geçmek için ile arayın .
function _configure_locale() { # [profile]
local profile=${1:-EN}
case ${profile} in
DE|DE_DE|de_DE)
LC_ALL="de_DE.UTF-8"
LANG="de_DE.UTF-8"
LANGUAGE="de_DE:de:en_US:en"
;;
EN|EN_US|en|en_US)
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
;;
*)
echo "ALERT" "${FUNCNAME}: unknown profile '${profile}'"
;;
esac
LC_PAPER="de_DE.UTF-8"; # independent from locale
LESSCHARSET="utf-8"; # independent from locale
MM_CHARSET="utf-8" # independent from locale
echo "locale settings" "${LANG}";
export LC_ALL LANG LANGUAGE LC_PAPER LESSCHARSET MM_CHARSET
}
Genel olarak ben her 3 ortam değişkenleri değiştirmeye önermek LC_ALL
, LANG
, LANGUAGE
bazı programların davranış düzenleme önlemek için.
Kodu ana dilinize genişletmek oldukça basittir. Aşağıdaki komutu çağırarak gerekli değerleri bulabilirsiniz.
env |egrep -e 'LC_ALL|LANG'
case
uyması için girişi belirterek ve belirterek bunu kolayca uyarlayabilirsiniz (ve muhtemelen gerekir) <lang>_<country>
. Öyleyse UTF-8 varsayarak bunu geçebilirsiniz. Düzenli bir çözüme gerçekten meraklıysanız locale -a
, istenen yerel ayarın gerçekten yüklendiğinden emin olmak için muhtemelen kullanıcı girişini kontrol etmelisiniz .
Bir terminal Ctrl+ Alt+ açın Tve şunu yazın:
LANG=en_US.UTF-8 bash
veya :
LC_ALL=C bash
Şimdi terminal çıkışı ingilizcedir. İle kontrol edebilirsiniz locale
.
Bunu kalıcıalias
bir şekilde yapmak için bir komut yapmak mümkündür . Aç .bashrc
tercih editörü ile dosya ve orada aşağıdaki kodu yerleştirin:
alias basheng='LANG=en_US.UTF-8 bash'
veya :
alias basheng='LC_ALL=C bash'
Bash kabuğunu yeniden başlatın. Şimdi emriniz var basheng
. Bir ingilizce bash kabuk almak için bash yazın. İngilizce kabuk türünü bırakmak için exit
.
Kaynak:
LANG
olduğunu değil tüm çıkış şansa yeterli.
LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bash
daha iyi?
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL
.
Bu, ortam değişkeni ile ayarlanabilen yerel ayarlarla yapılandırılır . Dört değişken katmanı vardır; ilk ayarlanan önceliğe sahiptir:
LANGUAGE
- kullanmayın, nadiren kullanışlıdır ve böceklere neden olabilir. Ne yazık ki, Ubuntu’nun bazı sürümleri ayarladı, bu yüzden onu ayarlamanız gerekebilir.LC_ALL
- öncelikli olarak varsayılan yerel ayarda çalıştırmak isteyen programlar tarafından kullanılacak olan, kategoriye özgü ayarları geçersiz kılar. Genel ayarlar olarak kullanılmak üzere tasarlanmamıştır.LC_
: LC_CTYPE
, LC_MESSAGES
, LC_TIME
, ....LANG
- Genel kullanıcı ayarlarında kullanılmak üzere tüm kategoriler için varsayılan yerel ayarı ayarlar.Tüm mesajları çevrilmemiş olan “sade” yerel ayar, varsayılan zaman ve sayı biçimleri, karakter kümesi olarak ASCII vb C
. Denir . Bu yerel ayar her sistemde bulunur.
Böylece, İngilizce bir mesaj içeren bir program çalıştırmak için,
unset LANGUAGE; LC_MESSAGES=C myprogram --option
veya
unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram
Tüm yerelleştirme kapalı bir programı çalıştırmak için,
env -u LANGUAGE LC_ALL=C myprogram --option
ancak bunun karakter kodlamasını ASCII olarak değiştirdiğine dikkat edin (yani Unicode, latin-1 vb. değil).
Bkz. Yerel ayarımı neye ayarlamalıyım ve bunun ne gibi sonuçları var? yerel ayarlara daha ayrıntılı bir bakış için.
LANGUAGE
, öncelikli olarak ele alınmasıdır LC_ALL
; bu, programların LC_ALL
öngörülebilir çıktılar alması ve ardından beklenen çıktıyı almadıkları için şaşırtmaları nedeniyle hatalara neden olmasıdır .
LANGUAGE
Yine de ayar yapmak kötü bir fikir, çünkü faydalar çok ince, böcekler sinir bozucu ve bulmak zor olabilir. Haklısın ama üzücü söylemeliyim LANGUAGE
.
En kolay yol, Alt + F2 tuşlarına basarak ve bu komutu çalıştırarak terminali açmaktır :
env LANGUAGE=en gnome-terminal
senin içinde ~/.bashrc
unset LC_ALL
export LC_MESSAGES=C
sonra
source ~/.bashrc
Kontrol et
$ locale
LANG=pl_PL.utf8
LANGUAGE=
LC_CTYPE="pl_PL.utf8"
LC_NUMERIC="pl_PL.utf8"
LC_TIME="pl_PL.utf8"
LC_COLLATE="pl_PL.utf8"
LC_MONETARY="pl_PL.utf8"
LC_MESSAGES=C
LC_PAPER="pl_PL.utf8"
LC_NAME="pl_PL.utf8"
LC_ADDRESS="pl_PL.utf8"
LC_TELEPHONE="pl_PL.utf8"
LC_MEASUREMENT="pl_PL.utf8"
LC_IDENTIFICATION="pl_PL.utf8"
LC_ALL=
Neden önce üzülsün?
LC_ALL Tek tek LC_ * ayarlarını geçersiz kılar: LC_ALL ayarlanmışsa, aşağıdakilerden hiçbirinin bir etkisi olmaz.
LANG
ve yardımcı olabilirler, ancak kopyalanan hata mesajlarının İngilizce olmasını istemeyiz . Biz gerektiren yazar neler yazmış (genellikle kapanış soruların yerine çevirmek rağmen) İngilizce olması. Yani İspanyolca terminal metni ile İngilizce yazılmış bir soru, İspanyolca İngilizce terminal metni ile yazılmış bir soru değildir.