pengembangan-web-mp-pd.com

Bagaimana cara menginstal / mengubah lokal di Debian?

Saya telah menulis aplikasi web untuk antarmuka pengguna dalam bahasa Belanda. Saya menggunakan rutin tanggal dan waktu sistem untuk memformat string tanggal dalam aplikasi. Namun, string tanggal yang format sistemnya dalam bahasa Inggris tapi saya ingin mereka dalam bahasa Belanda, jadi saya perlu mengatur lokal sistem. Bagaimana saya melakukannya di Debian? Saya mencoba pengaturan LC_ALL=nl_NL tetapi tampaknya tidak berpengaruh:

$ date
Sat Aug 15 14:31:31 UTC 2009
$ LC_ALL=nl_NL date
Sat Aug 15 14:31:36 UTC 2009

Saya ingat pengaturan LC_ALL pada sistem desktop Ubuntu saya berfungsi dengan baik. Apakah saya perlu menginstal paket tambahan untuk membuat ini berfungsi, atau apakah saya salah melakukannya?

67
Hongli Lai

Edit /etc/default/locale dan atur konten ke:

LANG="nl_NL.UTF-8"

Anda dapat memeriksa lokal mana yang saat ini Anda hasilkan menggunakan:

# locale -a

Anda dapat menghasilkan lebih banyak dengan mengedit /etc/locale.gen dan menghapus komentar baris untuk lokal yang ingin Anda aktifkan. Kemudian Anda dapat menghasilkan mereka dengan menjalankan:

# locale-gen

Anda dapat menemukan daftar lokal yang didukung di /usr/share/i18n/SUPPORTED

Ada informasi lebih lanjut yang tersedia di wiki Debian .

77
David Pashley

Anda mungkin perlu menginstal paket locales. Ini akan menanyakan Anda tempat mana yang akan dihasilkan. Jika sudah diinstal, maka dpkg-reconfigure locales akan memungkinkan Anda menghasilkan lebih banyak lokal.

68
pgs

Jawaban di sini tidak lengkap seperti pada kebanyakan tempat lain. Setelah mengumpulkan informasi dari beberapa tempat, yang berhasil bagi saya adalah (1) memastikan lokal yang saya inginkan tersedia (menghasilkannya jika tidak) kemudian (2) mengatur variabel lingkungan terkait lokal ke lokal yang diinginkan.

Dalam kasus saya, saya perlu en_US.UTF-8 secara terprogram (mis. non-interaktif) dipasang dalam wadah buruh pelabuhan. Ff mencapai apa yang saya butuhkan tetapi harus bekerja dengan baik di Shell interaktif.

apt-get update

# Install locales package
apt-get install -y locales

# Uncomment en_US.UTF-8 for inclusion in generation
sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen

# Generate locale
locale-gen

# Export env vars
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc

Di Shell yang sama, Anda harus melakukan source ~/.bashrc agar env vars segera berlaku. Anda dapat memeriksa bahwa lokal telah dikonfigurasikan dengan benar dengan memanggil locale.

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Ada banyak entri tanya jawab mengenai subjek ini, tetapi hanya sedikit yang benar-benar membantu. Kredit yang harus dibayar:

17
Czar

Tidak satu pun dari jawaban ini yang berfungsi untuk saya, pada wadah LXC yang diinstal dengan:

lxc-create -n sse-master -t download -n sse-master -- \
    -d debian -r jessie --Arch i386

Saya selalu mendapatkan output berikut dari locale-gen, mis. tidak menghasilkan lokal (tidak ada yang terdaftar):

$ Sudo locale-gen
Generating locales (this might take a while)...
Generation complete.

Lari dpkg-reconfigure locales dan memilih beberapa lokal tidak memperbarui /etc/locale.gen seperti yang saya harapkan.

Namun, ketika saya memodifikasi file itu secara manual dan menghapus komentar pada lokasi yang saya inginkan, maka locale-gen mulai bekerja dengan baik:

$ Sudo locale-gen
Generating locales (this might take a while)...
  en_GB.UTF-8... done
  en_US.UTF-8... done
Generation complete.

Saya juga dapat membuat lokal secara manual seperti ini:

Sudo localedef -i en_US -f UTF-8 en_US.UTF-8
Sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8

Tapi ini bukan solusi permanen: Saya menemukan bahwa menjalankan locale-gen tanpa --keep-existing opsi akan menghapus semua lokal yang dibuat secara manual, yaitu setiap lokal yang tidak terdaftar (dan tidak dicommentasikan) di /etc/locale.gen.

6
qris

Untuk aplikasi web, mungkin lebih baik menggunakan setlocale () di dalam program, daripada mengharuskan sistem default lokal diatur secara tepat di luar. Kurang longgar berakhir seperti itu.

3
SamB

Bagi mereka yang, seperti saya, di Ubuntu 14.04 LTS, entah bagaimana, tidak memiliki /etc/locale.gen file, Anda dapat menambahkan lokal baru di /var/lib/locales/supported.d/local lalu jalankan:

Sudo dpkg-reconfigure locales

Anda juga dapat menambahkan lokal Prancis (misalnya) dengan cara ini (alih-alih mengedit /var/lib/locales/supported.d/local):

Sudo locale-gen fr_FR fr_FR.UTF-8

untuk menambah dan menghasilkan ISO-8859-1 dan UTF-8 kumpulan kode dari fr_FR lokal dan akhirnya ketik:

Sudo dpkg-reconfigure locales

untuk menyelesaikan pekerjaan

1
SebMa

Tetapi pertama-tama Anda perlu menginstal paket bahasa. Pada VPS saya yang berbasis di Jerman, tidak ada paket bahasa Inggris yang sudah diinstal sebelumnya. Jadi, pertama Anda memeriksa apakah Anda sudah menginstalnya:

aptitude install language-pack-en
1
valentt