Ganti bahasa output perintah dari bahasa asli ke bahasa Inggris

84

Bagaimana saya bisa mengganti bahasa output perintah dari bahasa asli saya ke bahasa Inggris, jadi saya bisa mengirim pertanyaan Tanya Ubuntu saya dengan output perintah bahasa Inggris (pesan kesalahan)?

BuZZ-dEE
sumber
5
Ini agak menyesatkan. Sebenarnya tidak perlu bagi orang untuk melakukan ini . (Jika Anda pikir kami harus meminta OP untuk membebani diri mereka sendiri dengan cara ini, silakan posting di meta sebelum menginstruksikan siapa pun untuk melakukannya.) Mereka dapat berubah LANGseperti ini, dan itu mungkin membantu, tetapi kami tidak memerlukan pesan kesalahan yang disalin dalam bahasa Inggris. Kami mensyaratkan apa yang ditulis penulis dalam bahasa Inggris (meskipun kami biasanya menerjemahkannya alih-alih menutup pertanyaan). Jadi pertanyaan yang ditulis dalam bahasa Inggris dengan teks terminal Spanyol baik-baik saja, sedangkan pertanyaan yang ditulis dalam bahasa Spanyol dengan teks terminal bahasa Inggris tidak.
Eliah Kagan
4
@ EliahKagan ya, Anda benar, tapi bagaimanapun saya pikir ini berguna.
BuZZ-dEE
2
Saya setuju, ini berguna bagi orang-orang untuk dapat melakukan ini, dan bagus Anda telah memposting pertanyaan ini! Namun, orang-orang penting tahu bahwa kami tidak mengharuskan mereka melakukan ini (tetapi memang mengharuskan pertanyaan dan jawaban sendiri ditulis dalam bahasa Inggris).
Eliah Kagan
8
@EliahKagan Sebaliknya, sangat penting untuk memposting pesan kesalahan yang sebenarnya , dan sangat disukai untuk mempostingnya dalam bahasa Inggris karena itulah yang dapat dikenali dan diuji oleh audiens utama situs ini. (Dan tidak pernah, pernah memposting pesan kesalahan yang diterjemahkan ulang. Selalu salin-tempel, karena kata-kata yang tepat, tanda baca, bahkan spasi dapat menjadi signifikan.)
Gilles

Jawaban:

74

export LC_ALL=Ccukup. Semua output perintah selanjutnya akan dalam bahasa Inggris.

Informasi lebih lanjut: Apa yang dilakukan "LC_ALL = C"?

Jika Anda ingin kembali ke bahasa asli, hapus setel LC_ALLvariabel:

unset LC_ALL
Eric Carvalho
sumber
13

fungsi bash untuk terminal

Inilah fungsi bash saya untuk beralih antara DE dan EN lokal.

Anda dapat memperluas kode ini dengan bahasa pilihan Anda. Untuk menggunakan ini, letakkan di ~/.bashrc(atau ~/.bash_profile) Anda -

Sebut dengan _configure_locale ENuntuk beralih ke Bahasa Inggris.

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
}

Secara umum saya sarankan untuk mengubah semua 3 variabel lingkungan LC_ALL, LANG, LANGUAGEuntuk menghindari misbehaviours dari beberapa program.

Beradaptasi dengan bahasa Anda

Memperluas kode ke bahasa ibu Anda cukup sederhana. Anda dapat menemukan nilai-nilai yang dibutuhkan dengan menjalankan perintah berikut

env |egrep -e 'LC_ALL|LANG'
H.-Dirk Schmitt
sumber
Script perlu diubah untuk bahasa lain selain Jerman (DE)? Saya mencari solusi yang independen dari bahasa ibu.
BuZZ-dEE
@ BuZZ-dEE: Anda dapat (dan mungkin harus) dengan mudah menyesuaikan ini dengan membuang casedan menentukan input agar sesuai dengan <lang>_<country>format. Kemudian Anda bisa melewatinya, dengan asumsi UTF-8. Jika Anda benar-benar tertarik pada solusi yang rapi, Anda mungkin harus memeriksa input pengguna terhadap locale -auntuk memastikan lokal yang diminta benar-benar diinstal.
bitmask
@ buzz-dee: lihat jawaban yang diperbarui
H.-Dirk Schmitt
7

Buka terminal Ctrl+ Alt+ Tdan ketik:

LANG=en_US.UTF-8 bash

atau :

LC_ALL=C bash

Sekarang keluaran terminal dalam bahasa Inggris. Anda dapat memeriksanya locale.

Dimungkinkan untuk membuat perintah untuk melakukan itu dengan permanenalias . Buka .bashrcfile dengan editor pilihan Anda dan masukkan kode berikut di sana:

alias basheng='LANG=en_US.UTF-8 bash'

atau :

alias basheng='LC_ALL=C bash'

Mulai ulang shell Bash. Sekarang Anda memiliki perintah basheng. Ketikkan di Bash untuk mendapatkan shell Bash berbahasa Inggris. Untuk meninggalkan tipe shell bahasa inggris exit.

Sumber:

BuZZ-dEE
sumber
Pengaturan LANGini tidak cukup untuk kesempatan semua output.
bitmask
@bitmask apakah ini: LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bashlebih baik?
BuZZ-dEE
2
Sebenarnya, seharusnya begitu LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL.
bitmask
Hanya LC_ALL = C bash yang berfungsi untuk saya.
cair
5

Ini dikonfigurasikan melalui pengaturan lokal , yang dapat diatur melalui variabel lingkungan. Ada empat lapisan variabel; yang pertama yang diutamakan:

  • LANGUAGE- jangan menggunakannya, ini jarang berguna dan dapat menyebabkan bug. Sayangnya, beberapa versi Ubuntu mengaturnya, jadi Anda mungkin perlu menghapusnya.
  • LC_ALL- mengesampingkan pengaturan khusus kategori, yang dimaksudkan terutama untuk digunakan oleh program yang ingin dijalankan di lokal default. Tidak dimaksudkan untuk digunakan sebagai pengaturan global.
  • Khusus kategori variabel dimulai dengan LC_: LC_CTYPE, LC_MESSAGES, LC_TIME, ....
  • LANG - Menetapkan lokal default untuk semua kategori, dimaksudkan untuk digunakan dalam pengaturan pengguna global.

Lokal "polos", dengan semua pesan yang tidak diterjemahkan, waktu standar dan format angka, ASCII sebagai set karakter, dll disebut C. Lokal ini hadir di setiap sistem.

Jadi, untuk menjalankan program dengan pesan dalam bahasa Inggris, jalankan

unset LANGUAGE; LC_MESSAGES=C myprogram --option

atau

unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram

Untuk menjalankan program dengan semua pelokalan dimatikan, jalankan

env -u LANGUAGE LC_ALL=C myprogram --option

tetapi berhati-hatilah karena ini akan mengubah pengkodean karakter ke ASCII (jadi tidak ada Unicode, latin-1, dll.).

Lihat Apa yang harus saya atur lokal saya dan apa implikasi melakukannya? untuk ikhtisar lokal yang lebih terperinci.

Gilles
sumber
Jangan gunakan LANGUAGE ?? Saya tidak tahu di OS mana Anda berada, tetapi pada Ubuntu BAHASA digunakan secara default setiap saat melalui installer dan berbagai GUI. Bug apa itu, btw? Saya juga membaca jawaban yang Anda tautkan , dan bahkan jika itu berisi informasi umum yang bermanfaat, rekomendasi ini sama sekali bukan saran yang baik untuk desktop Ubuntu.
Gunnar Hjalmarsson
@GunnarHjalmarsson Masalah utamanya LANGUAGEadalah ia harus diutamakan LC_ALL, yang menyebabkan bug karena program diatur LC_ALLuntuk mendapatkan hasil yang dapat diprediksi dan kemudian menjadi bingung karena mereka tidak mendapatkan hasil yang diharapkan.
Gilles
Nah, GUI Ubuntu mengatur LANG dan LANGUAGE secara konsisten (dan LC_MESSAGES mewarisi dari LANG), yang seharusnya mencegah kebingungan semacam itu. Alasan mengapa LANGUAGE diatur adalah bahwa Dukungan Bahasa memiliki antarmuka untuk mengatur daftar prioritas.
Gunnar Hjalmarsson
@ GunnarHjalmarsson saya tahu. Pengaturan LANGUAGEadalah ide yang buruk, karena manfaatnya sangat tipis sedangkan bug dapat mengganggu dan sulit ditemukan. Anda benar, saya harus menyebutkan unsetting LANGUAGE.
Gilles
Jawaban di sini bukan tempat yang tepat untuk berdebat masalah desain. Diskusi semacam itu lebih baik diadakan di mis. Ubuntu-devel-mendiskusikan . Agar bermanfaat bagi pengguna, saya benar-benar berpikir bahwa jawaban harus didasarkan pada desain saat ini, apakah Anda berpikir itu optimal atau tidak. Dan harap dicatat bahwa "beberapa versi" semuanya adalah versi desktop dan turunan Ubuntu yang didukung, mungkin dengan pengecualian Kubuntu.
Gunnar Hjalmarsson
1

Cara termudah adalah dengan membuka terminal dengan menekan Alt + F2 dan menjalankan perintah ini:

env LANGUAGE=en gnome-terminal
Gunnar Hjalmarsson
sumber
1

di Anda ~/.bashrc

unset LC_ALL
export LC_MESSAGES=C

kemudian

source ~/.bashrc

Periksa

$ 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=

Mengapa tidak disetel lebih dulu?

LC_ALL Mengesampingkan pengaturan LC_ * individual: jika LC_ALL diatur, tidak ada di bawah ini yang memiliki efek.

https://help.ubuntu.com/community/Locale

rofrol
sumber
Saya tidak tahu mengapa jawaban ini tidak dipilih. Ya itu bisa menggunakan beberapa penjelasan lagi, tetapi tidak seperti jawaban yang diterima, itu menunjukkan bagaimana membuatnya permanen dan lebih spesifik.
Xerus
0
  1. Klik pada ikon roda gigi di sebelah kiri (pengaturan sistem pada panel Unity)
  2. Klik pada Dukungan Bahasa
  3. Pilih Format Regional
  4. Setel "Tampilkan nomor, tanggal, dan jumlah mata uang ..." ke bahasa Inggris.
  5. Logout sesi dan Login lagi (Diperlukan!)

Selesai.

Robin Hsu
sumber