Jawaban yang membantu Lekensteyn ini karya besar jika Anda ingin beralih ke bahasa Inggris AS pada permintaan, sebagai OP yang diminta, tetapi jika Anda ingin beralih ke yang berbeda bahasa pada permintaan , banyak pekerjaan yang diperlukan.
Sebelum mulai, Anda harus menginstal tabel pesan dengan sudo apt-get install language-pack-<lang-tag>
, di mana <lang-tag>
merupakan RTF 5646 bahasa sub tag sederhana , seperti es
untuk Spanyol.
Info latar belakang
GNU gettext utilitas berbasis mendahulukan tidak standar LANGUAGE
variabel lingkungan [1]
lebih variabel lingkungan lokal POSIX-didefinisikan LC_ALL
, LC_MESSAGES
dan LANG
(dalam urutan itu).
Mengingat bahwa LANGUAGE
diatur secara default pada sistem Ubuntu [2] , yaitu untuk substring dari LANG
nilai yang mencerminkan baik tag bahasa sederhana (misalnya, es
untuk Spanyol) atau tag wilayah-bahasa (misalnya, de_DE
untuk varian Jerman Jerman), Anda harus menghapus atau mengganti LANGUAGE
agar pesan bahasa yang berbeda berlaku. [3]
Opsi 1: Setel LANGUAGE
Contoh : Beralih ke es
pesan Spanyol ( ) ad-hoc:
$ LANGUAGE=es ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
Catatan : Tag bahasa sederhana seperti es
sudah mencukupi, tetapi Anda dapat menambahkan pengidentifikasi wilayah (mis., es_AR
Untuk Argentina), dan bahkan akhiran rangkaian karakter (mis., es_AR.UTF-8
).
Namun, pesan yang dilokalkan mungkin hanya ada di tingkat bahasa , dan fallback adalah dengan menggunakan pesan yang cocok dengan bagian bahasa ( es
, dalam kasus ini).
Opsi 2: Hapus LANGUAGE
dan aturLC_ALL
Solusi alternatif ini tidak mendefinisikan LANGUAGE
terlebih dahulu, dan kemudian menggunakan variabel lingkungan lokal POSIX LC_ALL
untuk secara implisit mengatur LC_MESSAGES
[4] :
$ LANGUAGE= LC_ALL=es_ES.UTF-8 ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
Solusi ini memiliki keuntungan mengatur semua aspek lokalisasi ke lokal yang ditentukan (seperti LC_TIME
untuk format tanggal / waktu) dan dengan pengaturan (secara implisit) LC_MESSAGES
juga menginformasikan program-program non- GNU dari bahasa yang diinginkan.
Perhatikan bagaimana LC_ALL
mengharuskan tepat, nama lokal lengkap , termasuk akhiran charset, untuk menjadi efektif ( es_ES.UTF-8
) (tidak seperti LANGUAGE
, yang tag bahasa sederhana cukup (seperti es
)). Hal yang sama berlaku untuk pengaturan LC_MESSSAGES
dan LANG
. Menentukan nama lokal yang tidak valid / tidak diinstal menyebabkan fallback ke lokal POSIX dan oleh karena itu bahasa Inggris AS.
Catatan kaki
[1] Alasan mengapa jawaban Lekensteyn bekerja bahkan tanpa membuka / mengesampingkan LANGUAGE
adalah pengecualian : jika nilai (efektif) LC_MESSAGES
(biasanya ditetapkan secara tidak langsung melalui LANG
atau LC_ALL
) adalah salah satu C
atau (sinonimnya) POSIX
, nilai itu dihormati, terlepas dari nilai LANGUAGE
, jika ada. Sebaliknya, jika nilai (efektif) LC_MESSAGES
adalah yang lain, lokal spesifik , LANGUAGE
diutamakan.
[2] Ini berlaku untuk Ubuntu yang tepat , tetapi tidak harus untuk rasa lainnya ; Lekensteyn menyatakan bahwa Kubuntu tidak tidak diatur LANGUAGE
.
Diperdebatkan, LANGUAGE
harus tidak diatur secara default, mengingat bahwa dalam ketiadaan yang LC_MESSAGES
nilai tersirat oleh LANG
nilai (yang menentukan lokal saat ini), dihormati.
[3] Anda juga dapat menggunakan pendekatan ini untuk beralih ke Bahasa Inggris [AS] dengan menetapkan salah satu LANGUAGE=C
atau LANGUAGE=POSIX
(sebagai alternatif untuk, LANG=C
/ LANG=POSIX
), meskipun saya tidak jelas apakah itu diakui secara aktif atau hanya mekanisme mundur , mengingat bahwa nilai-nilai ini tidak dapat memulai dengan tag bahasa ; mungkin pilihan yang lebih baik en_US
.
[4] Ada tepi kasus di mana pendekatan ini tidak bekerja: Mencoba untuk memohon dieksekusi dengan path - apakah relatif atau absolut - TIDAK beralih ke bahasa tertentu, sedangkan nama file hanya melakukan:
LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utility
tidak tidak bekerja (output pesan di lokal saat ini), sedangkan
LANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utility
tidak (menampilkan pesan kesalahan Spanyol).
Jika ada yang tahu mengapa dan apakah ada alasan bagus untuk ini, beri tahu kami.
LANG
atauLANG_ALL
tidak berfungsi untuk saya, belumLANGUAGE
. Lihat Mengapa mengganti variabel lingkungan LANG tidak mengubah bahasa untuk saya?