Debian'da yerel ayar nasıl kurulur / değiştirilir?


65

Kullanıcı arayüzünün Hollandaca olduğu bir web uygulaması yazdım. Uygulamadaki tarih dizelerini biçimlendirmek için sistemin tarih ve saat yordamlarını kullanıyorum. Bununla birlikte, tarih sistem formatlarının İngilizce olduğunu ancak Hollandaca olmasını istiyorum, bu yüzden sistemin yerel ayarını yapmam gerekiyor. Bunu Debian'da nasıl yaparım? Ayarı denedim LC_ALL=nl_NLama bunun bir etkisi olmadı:

$ 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ü sistemimdeki LC_ALL ayarının iyi çalıştığını hatırlıyorum. Bu işi yapmak için fazladan paketler kurmam gerekiyor mu yoksa tamamen yanlış mı yapıyorum?


sunucunun atanan ip adresine göre bunu otomatik olarak yapmanın bir yolu var mı?
Scoop

2
Debian Locale standart bir yol ayarlama : sudo dpkg-reconfigure locales.
Paul Rougieux,

Yanıtlar:


72

Düzen /etc/default/localeve içeriğini şu şekilde ayarlayın:

LANG="nl_NL.UTF-8"

Şu anda hangi yerel ayarları oluşturduğunuzu kontrol edebilirsiniz:

# locale -a

/etc/locale.genEtkinleştirmek istediğiniz yerel ayarların satırlarını düzenleyerek ve açarak daha fazlasını üretebilirsiniz . Sonra çalıştırarak onları üretebilirsiniz:

# locale-gen

Desteklenen yerel ayarların bir listesini bulabilirsiniz. /usr/share/i18n/SUPPORTED

Debian wiki hakkında daha fazla bilgi var .


9
/ var / lib / belocs / list mevcut değil. Bunun yerine /etc/locale.gen dosyasını düzenlemeniz veya dpkg-reconfigure locales komutunu çalıştırmanız gerekir.
pgs

Locale-gen'i tanımlamak için bu cevabı + 1'leyin, ancak önceki yoruma göre, sistemimde / var / lib / belocs / list diye bir dosya yok
telent

Mükemmel olan bu cevabı bulmam 5 saatimi aldı. Dahası, takma adlar oluşturmaya izin verir: en_US UTF-8 ve it_IT UFT-8 varsayılan olarak yerel ayarlarımı UTF-8'de tutmama izin verdi, bu yerel ayarlara bağlı PHP kodunuz varsa harika
Cec

/ Etc / default / locale içeriğini düzenleyebilecek ve ayarlayabilecek bir komut veya paket var mı?
Karl Morrison

Aşağıdaki Çarca cevabına bakınız. Şöyle yapabilirsiniz: sed -i / s / ^ # * (en_US.UTF-8) / \ 1 / '/etc/locale.gen
Tobias Gaertner

66

localesPaketi yüklemeniz gerekebilir . Bu size hangi yerellerin üretileceğini soracaktır. Zaten yüklü ise, daha dpkg-reconfigure localesfazla yerel oluşturmanıza izin verir.


Bu, yalnızca yerel ayarlar üretir, sistem varsayılanını ayarlamaz.
David Pashley

16
HAYIR dpkg-reconfigure locales öğesinin son sorusu varsayılan yerel ayarı seçmektir.
pgs

2
İçinde olduğu sudogibi çalıştırmak zorunda kaldım sudo dpkg-reconfigure locales.
Alex Yursha

Eğer ssh üzerinden erişilen bir sunucuysa , yerel ayarlardaki Debian wiki sayfası varsayılan yerel ayarı ayarlanmış halde bırakmanızı önerir NONE.
Paul Rougieux,

1
Bu tam ihtiyacım olan şeydi: tüm yerel ayarları yalnızca birkaç tuşa basarak yükleyin. Çok teşekkür ederim!
Eksi

11

Buradaki cevaplar, diğerlerinin çoğunda olduğu gibi eksik. Birkaç yerden bilgiyi bir araya getirdikten sonra, benim için işe yarayan şey (1) istediğim yerin mevcut olduğundan emin olmak (eğer öyleyse üret) ve sonra (2) yerle ilgili ortam değişkenlerini istenen yerele ayarla.

Benim durumumda en_US.UTF-8bir liman işçisi konteynırına programlı olarak (yani etkileşimli olmayan) kuruluma ihtiyacım vardı. Ff ihtiyacım olanı başardı ancak etkileşimli bir kabukta gayet iyi çalışmalıydı.

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 ~/.bashrcenv değişkenlerinin derhal yürürlüğe girmesi için yapmanız gerekir . Yerel ayarların çağrılarak doğru şekilde yapılandırıldığını kontrol edebilirsiniz 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

Bu konuyla ilgili birçok soru-cevap girişi vardı, ancak sadece birkaçı gerçekten yardımcı oldu. Kredilerin verildiği kredi:


6

Bu cevapların hiçbiri benim için çalıştı, bir LXC konteynerinde:

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

Her zaman aşağıdaki çıktıyı aldım locale-gen, yani herhangi bir yerel öğe üretmedim (hiçbiri listede yok):

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

dpkg-reconfigure localesBazı yerel ayarları çalıştırmak ve seçmek /etc/locale.genbeklediğim gibi güncelleme yapmadı .

Ancak, bu dosyayı el ile değiştirdiğimde ve istediğim yerel ayarları açıkladığımda, daha sonra locale-gendü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 yerel ayarları bu şekilde manuel olarak da oluşturabildim:

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: Seçeneğin locale-genolmadan çalıştırmanın --keep-existingelle oluşturulan tüm yerel ayarları, yani listelenmemiş (ve listelenmemiş) tüm yerel ayarları sileceğini gördüm /etc/locale.gen.


3

Bir web uygulaması için, sistem varsayılan yerel ayarının dışarıda uygun şekilde ayarlanmasını istemek yerine, programın içindeki setlocale () işlevinin kullanılması daha iyi olabilir . Daha az gevşek bu şekilde biter.


1
Sistem yerel ayar gerektirmediyse setlocaleçalışmayacaktır.
babası

1

Fakat önce dil paketinin kurulu olması gerekir. Almanca tabanlı VPS'imde önceden yüklenmiş bir ingilizce dil paketi yoktu. İlk önce, kurulu olup olmadığını kontrol edin:

aptitude install language-pack-en

1

Benim gibi, Ubuntu 14.04 LTS'de, bir şekilde, /etc/locale.gendosyaya sahip olmayanlar için, içine yeni bir yerel ayar ekleyebilir /var/lib/locales/supported.d/localve sonra çalıştırabilirsiniz:

sudo dpkg-reconfigure locales

Ayrıca fransızca (örneğin) yerel ayarını bu şekilde ekleyebilirsiniz (düzenleme yerine /var/lib/locales/supported.d/local):

sudo locale-gen fr_FR fr_FR.UTF-8

ekleyebilir ve üretmek ISO-8859-1ve UTF-8bir codesets fr_FRbir bölge ve son olarak yazın:

sudo dpkg-reconfigure locales

işi bitirmek

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.