LANG dan variabel lingkungan LANGUAGE dalam sistem berbasis Debian

22

Tampaknya variabel lingkungan LANG dan LANGUAGE digunakan oleh beberapa program untuk menentukan bahasa antarmuka penggunanya.

Apa semantik sebenarnya dari variabel-variabel ini dan di mana saya bisa membaca tentang penggunaannya yang benar? Halaman manual untuk lokal (1) hanya menyebutkan keluarga variabel lingkungan LC_ *. Selain itu ada juga variabel LC_ALL yang biasanya tidak dijelaskan di sana.

aef
sumber

Jawaban:

23

LANGberisi pengaturan untuk semua kategori yang tidak diatur secara langsung oleh LC_*variabel.

LC_ALLdigunakan untuk mengesampingkan setiap LC_*dan LANGdan LANGUAGE. Seharusnya tidak diatur dalam lingkungan pengguna normal, tetapi dapat berguna ketika Anda menulis skrip yang bergantung pada output yang tepat dari perintah yang diinternasionalkan.

LANGUAGEdigunakan untuk mengatur bahasa pesan (sebagai LC_MESSAGES) ke nilai multi-nilai, misalnya, mengaturnya untuk fr:de:enakan menggunakan pesan Prancis di mana mereka ada; jika tidak, itu akan menggunakan pesan Jerman, dan akan kembali ke bahasa Inggris jika tidak ada pesan Jerman atau Prancis.

Resi
sumber
Di mana saya dapat menemukan dokumentasi tentang LANGUAGE? Apakah ini saling eksklusif untuk LC_MESSAGES?
aef
1
@ Rémi dapatkah Anda menjelaskan mengapa LC_ALLtidak digunakan?
Édouard Lopez
1
Tidak banyak bicara. Anda memiliki lebih banyak fleksibilitas jika Anda mengatur LANG daripada jika Anda mengatur LC_ALL: Anda dapat mengatur LANG ke sesuatu dan LC_COLLATE ke beberapa hal lain. Jika Anda mengatur LC_ALL, setiap konfigurasi lainnya disembunyikan.
Rémi
2
Saya tidak berpikir LC_ALLmenimpa LANGUAGE: 1. mereka memiliki makna yang berbeda (urutan [misalnya: fr: de: en] vs karakteristik [misalnya: fr_FR])
Murmel
6
Bab 2. GNU getText dokumentasi ini Menentukan Daftar Prioritas Bahasa menyatakan: gettext gives preference to LANGUAGE over LC_ALL and LANG. Selain itu, bab Locale Environment Variables menyatakan:1. LANGUAGE 2. LC_ALL [...]
Murmel
10

Lihatlah halaman manual locale(7): ini menjelaskan bahwa itu LANGadalah pengaturan mundur, sambil LC_ALLmengesampingkan semua LC_*pengaturan terpisah .

Jaap Eldering
sumber
3
man 7 locale adalah perintah
Smile4ever
2

Sebagai referensi, sistem lokal adalah GNU GetText, yang memiliki dokumentasi lengkapnya tersedia dalam paket gettext-doc (Debian / Ubuntu).

Atau, ada manual online dengan dokumentasi otoritatif dan rumit dari variabel lingkungan LANG dan LANGUAGE .

mikini
sumber