Kullanıcı arayüzünün Flemenkçe olduğu bir web uygulaması yazdım. Uygulamadaki tarih dizelerini biçimlendirmek için sistemin tarih ve saat yordamlarını kullanıyorum. Ancak, sistem formatları İngilizce olan tarih dizeleri ancak Hollandaca istiyorum, bu yüzden sistemin yerel ayarlamanız gerekir. Debian'da bunu nasıl yapabilirim? LC_ALL=nl_NL
Ayarını denedim, ancak herhangi bir etkisi yok gibi görünüyor:
$ date
Sat Aug 15 14:31:31 UTC 2009
$ LC_ALL=nl_NL date
Sat Aug 15 14:31:36 UTC 2009
Ubuntu masaüstü sistemimde LC_ALL ayarının iyi çalıştığını hatırlıyorum. Bu işi yapmak için ekstra paketler yüklemem gerekir mi yoksa tamamen yanlış mı yapıyorum?
Düzenle /etc/default/locale
ve içeriği şu şekilde ayarlayın:
LANG="nl_NL.UTF-8"
Şu anda hangi yerel ayarları oluşturduğunuzu kontrol edebilirsiniz:
# locale -a
/etc/locale.gen
ve etkinleştirmek istediğiniz yerel ayarların satırlarını kaldırır. Sonra bunları çalıştırarak oluşturabilirsiniz:
# locale-gen
Desteklenen yerel ayarların bir listesini /usr/share/i18n/SUPPORTED
Debian wiki hakkında daha fazla bilgi var.
locales
paketini kurmanız gerekebilir. Bu size hangi yerel ayarları oluşturacağınızı soracaktır. Zaten kuruluysa, dpkg-reconfigure locales
daha fazla yerel ayar oluşturmanıza olanak tanır.
Buradaki yanıtlar, başka yerlerde olduğu gibi eksiktir. Birkaç yerden bilgileri bir araya getirdikten sonra, benim için işe yarayan şey (1) istediğim yerel ayarın kullanılabilir olduğundan emin olun (eğer değilse üretin) sonra (2) yerel ayarla ilgili ortam değişkenlerini istenen yerel ayara getirin.
Benim durumumda en_US.UTF-8
bir docker konteynerine programlı olarak (yani etkileşimli olmayan) yüklenmiştir. Ff ihtiyacım olanı başardı ama interaktif bir Shell'de iyi çalışmalı.
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
Aynı Kabukta, source ~/.bashrc
için env hemen yürürlüğe girer. locale
öğesini çağırarak yerel ayarın doğru yapılandırıldığını kontrol edebilirsiniz.
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
Bu konuyla ilgili çok sayıda Soru-Cevap girişi vardı, ancak sadece birkaçı gerçekten yardımcı oldu. Kredinin vadesi gelen kredi:
Bu cevapların hiçbiri benim için, şu yüklü LXC kapsayıcısında işe yaramadı:
lxc-create -n sse-master -t download -n sse-master -- \
-d debian -r jessie --Arch i386
Her zaman locale-gen
, yani herhangi bir yerel ayar oluşturulmuyor (listelenen yok):
$ Sudo locale-gen
Generating locales (this might take a while)...
Generation complete.
Koşu dpkg-reconfigure locales
ve bazı yerel ayarların seçilmesi güncellenmedi /etc/locale.gen
beklediğim gibi.
Ancak, bu dosyayı el ile değiştirdiğim ve istediğim yerel ayarları kaldırdığımda, locale-gen
düzgün çalışmaya başladı:
$ Sudo locale-gen
Generating locales (this might take a while)...
en_GB.UTF-8... done
en_US.UTF-8... done
Generation complete.
Ayrıca el ile böyle yerel olarak oluşturmak mümkün:
Sudo localedef -i en_US -f UTF-8 en_US.UTF-8
Sudo localedef -i en_GB -f UTF-8 en_GB.UTF-8
Ancak bu kalıcı bir çözüm değildi: locale-gen
olmadan --keep-existing
seçeneği, bu tür manuel olarak oluşturulan tüm yerel ayarları, yani /etc/locale.gen
.
Bir web uygulaması için, sistem varsayılanını zorunlu kılmak yerine programın içinde setlocale () içinde kullanmak daha iyi olabilir yerel ayar uygun şekilde dışarıda ayarlanmalıdır. Bu şekilde daha az gevşek biter.
Benim gibi Ubuntu 14.04 LTS'de, bir şekilde /etc/locale.gen
dosyasına sahip olmayanlar için, /var/lib/locales/supported.d/local
içine yeni bir yerel ayar ekleyebilir ve ardından şunları çalıştırabilirsiniz:
Sudo dpkg-reconfigure locales
Fransızca (örneğin) yerel ayarı da bu şekilde ekleyebilirsiniz (/var/lib/locales/supported.d/local
düzenlemek yerine):
Sudo locale-gen fr_FR fr_FR.UTF-8
ISO-8859-1
yerel ayarının UTF-8
ve fr_FR
kod kümelerini oluşturmak ve oluşturmak ve son olarak şunu yazın:
Sudo dpkg-reconfigure locales
işi bitirmek
Ancak önce gerekli dil paketinin yüklü olması gerekir. Almanca tabanlı VPS'imde önceden yüklenmiş bir İngilizce dil paketi yoktu. Öncelikle yüklediğinizi kontrol edin:
aptitude install language-pack-en