Solusi 1:
Edit /etc/default/locale
dan atur isinya 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 hapus komentar pada baris untuk lokal yang ingin Anda aktifkan. Kemudian Anda dapat membuatnya dengan menjalankan perintah:
locale-gen
Anda dapat menemukan daftar lokal yang didukung di /usr/share/i18n/SUPPORTED
Ada lebih banyak informasi yang tersedia di wiki Debian.
Solusi 2:
Anda mungkin perlu memasang locales
kemasan. Ini akan menanyakan Anda lokal mana yang akan dihasilkan. Jika sudah terpasang, maka dpkg-reconfigure locales
akan membiarkan Anda menghasilkan lebih banyak lokal.
Solusi 3:
Jawaban di sini tidak lengkap seperti kebanyakan di tempat lain. Setelah menyatukan informasi dari beberapa tempat, yang berhasil bagi saya adalah (1) memastikan lokal yang saya inginkan tersedia (hasilkan jika tidak ada) lalu (2) setel variabel lingkungan terkait lokal ke lokal yang diinginkan.
Dalam kasus saya, saya membutuhkan en_US.UTF-8
terprogram (yaitu non-interaktif) dipasang di wadah buruh pelabuhan. Ff menyelesaikan apa yang saya butuhkan tetapi seharusnya berfungsi 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
Pada shell yang sama, Anda perlu melakukan source ~/.bashrc
agar env vars segera berlaku. Anda dapat memeriksa apakah lokal telah dikonfigurasi dengan benar dengan mengaktifkan 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 Q&A mengenai subjek ini tetapi hanya sedikit yang benar-benar membantu. Kredit di mana kredit jatuh tempo:
- https://unix.stackexchange.com/a/247019/21289
- https://perlgeek.de/en/article/set-up-a-clean-utf8-environment
Solusi 4:
Tidak satu pun dari jawaban ini yang berfungsi untuk saya, pada wadah LXC yang dipasang 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
, yaitu tidak membuat lokal apa pun (tidak ada yang terdaftar):
$ sudo locale-gen
Generating locales (this might take a while)...
Generation complete.
Menjalankan 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 lokal yang saya inginkan, maka locale-gen
mulai berfungsi 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 diberi komentar) di /etc/locale.gen
.
Solusi 5:
Untuk aplikasi web, mungkin lebih baik menggunakan setlocale () di dalam program, daripada mengharuskan lokal default sistem disetel dengan tepat di luar. Kurang longgar berakhir seperti itu.