Mengapa mengganti variabel lingkungan LANG tidak mengubah bahasa untuk saya?

11

Saya mencoba menjalankan aplikasi dalam bahasa lain sebagai lingkungan saya saat ini. Untuk memulai yang sederhana, saya ingin mengubah bahasa ls.

Inilah yang saya baca di semua tempat (lihat di bawah untuk pertanyaan terkait): atur LANGke salah satu lokal yang didukung, misalnya:

LANG=nl_NL.UTF-8 ls /nonexistent

untuk menunjukkan output Belanda (NL).

Namun, saya masih mendapatkan hasil berbahasa Inggris:

$ LANG=nl_NL.UTF-8 ls -al /nonexistent
ls: cannot access /nonexistent: No such file or directory

Lingkungan saya saat ini:

$ locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=

Yang pasti, saya sudah memeriksa:

  • Lokal didukung:

    $ grep nl_NL /usr/share/i18n/SUPPORTED 
    nl_NL.UTF-8 UTF-8
    nl_NL ISO-8859-1
    nl_NL@euro ISO-8859-15
    
  • Lokal dihasilkan:

    sudo locale-gen nl_NL.UTF-8
    

    dan sudo dpkg-reconfigure localesjuga menunjukkan itu dihasilkan.

  • Menginstal paket bahasa Belanda (sudah diinstal):

    sudo apt-get install language-pack-nl
    

Apa lagi yang sudah saya coba?

  • Menggunakan exportuntuk mengatur keduanya LANGdan LANGUAGEalih-alih menambahkan perintah.
  • Pengaturan juga LC_ALL.

Ironisnya, beberapa (hanya beberapa!) Aplikasi GUI sebenarnya dalam bahasa Belanda, tapi saya belum mengonfigurasi itu sama sekali!

masukkan deskripsi gambar di sini

Saya menggunakan Kubuntu 12.04 (.2), ​​sejauh itu penting.

Pertanyaan serupa (tidak berhasil):

Apa yang salah pada sistem saya? Di mana untuk men-debug ini lebih lanjut?

gertvdijk
sumber

Jawaban:

12

Karena LANGUAGE, yang lebih diutamakan daripada LANG, diatur dan tidak berubah.

$ LANGUAGE=nl ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet

Info lebih lanjut ada di dokumentasi gettext GNU :

GNU gettext memberikan preferensi ke LANGUAGE daripada LC_ALL dan LANG untuk tujuan penanganan pesan, tetapi Anda masih harus memiliki LANG (atau LC_ALL) diatur ke bahasa utama; ini diperlukan oleh bagian lain dari pustaka sistem.

Gunnar Hjalmarsson
sumber
Aku bersumpah sudah mencoba ini. Namun, melihat sejarah shell saya, saya pikir ini karena saya hanya mencoba ini sebelum membuat lokal. Bisakah Anda menyertakan sumber mengapa "LANGUAGE lebih diutamakan daripada LANG"? Terimakasih atas peringatannya.
gertvdijk