sviluppo-web-qa.it

Come installare / modificare le impostazioni locali su Debian?

Ho scritto un'applicazione Web per la quale l'interfaccia utente è in olandese. Uso le routine di data e ora del sistema per formattare le stringhe di date nell'applicazione. Tuttavia, la data indica che i formati di sistema sono in inglese ma li voglio in olandese, quindi devo impostare le impostazioni internazionali del sistema. Come posso farlo su Debian? Ho provato a impostare LC_ALL=nl_NL ma non sembra avere alcun effetto:

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

Ricordo che l'impostazione di LC_ALL sul mio sistema desktop Ubuntu funziona bene. Devo installare pacchetti extra per farlo funzionare o sto sbagliando completamente?

67
Hongli Lai

Modificare /etc/default/locale e imposta i contenuti su:

LANG="nl_NL.UTF-8"

Puoi controllare quali locali hai attualmente generato usando:

# locale -a

Puoi generare di più modificando /etc/locale.gen e decommenta le linee per le impostazioni locali che desideri abilitare. Quindi puoi generarli eseguendo:

# locale-gen

Puoi trovare un elenco di impostazioni locali supportate in /usr/share/i18n/SUPPORTED

Ulteriori informazioni sono disponibili sul Debian wiki .

77
David Pashley

Potrebbe essere necessario installare il pacchetto locales. Questo ti chiederà quali locali generare. Se è già installato, quindi dpkg-reconfigure locales ti consentirà di generare più locali.

68
pgs

Le risposte qui sono incomplete come nella maggior parte degli altri. Dopo aver messo insieme le informazioni da alcuni punti, ciò che ha funzionato per me è stato (1) assicurarsi che le impostazioni locali che volevo fossero disponibili (generarle se non fosse), quindi (2) impostare le variabili di ambiente relative alle impostazioni locali sulle impostazioni locali desiderate.

Nel mio caso avevo bisogno di en_US.UTF-8 programmaticamente (ovvero non interattivamente) installato in un contenitore docker. L'ff ha realizzato quello che mi serviva, ma dovrebbe funzionare perfettamente in una Shell interattiva.

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

Sulla stessa Shell, dovrai fare source ~/.bashrc affinché le variabili env abbiano effetto immediato. Puoi verificare che le impostazioni internazionali siano state configurate correttamente invocando 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

Ci sono state molte domande e risposte su questo argomento, ma solo alcune sono state effettivamente utili. Credito in cui il credito è dovuto:

17
Czar

Nessuna di queste risposte ha funzionato per me, su un contenitore LXC installato con:

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

Ho sempre ottenuto il seguente output da locale-gen, Ovvero non generando alcuna localizzazione (nessuna elencata):

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

Eseguire dpkg-reconfigure locales E selezionare alcune impostazioni locali non ha aggiornato /etc/locale.gen Come mi aspettavo.

Tuttavia, quando ho modificato quel file manualmente e decommentato le impostazioni locali che desideravo, locale-gen Ha iniziato a funzionare correttamente:

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

Sono stato anche in grado di generare localmente manualmente in questo modo:

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

Ma questa non era una soluzione permanente: ho scoperto che l'esecuzione di locale-gen Senza l'opzione --keep-existing Eliminerà tutte queste localizzazioni generate manualmente, cioè ogni localizzazione non elencata (e non commentata) in /etc/locale.gen.

6
qris

Per un'applicazione Web, potrebbe essere meglio usare setlocale () all'interno del programma, piuttosto che richiedere che il sistema sia predefinito le impostazioni internazionali devono essere impostate in modo appropriato all'esterno. In questo modo meno fini sciolti.

3
SamB

Per coloro che, come me, su Ubuntu 14.04 LTS, in qualche modo non hanno /etc/locale.gen file, puoi aggiungere una nuova locale in /var/lib/locales/supported.d/local e quindi esegui:

Sudo dpkg-reconfigure locales

Puoi anche aggiungere la locale francese (ad esempio) in questo modo (invece di modificare /var/lib/locales/supported.d/local):

Sudo locale-gen fr_FR fr_FR.UTF-8

per aggiungere e generare il ISO-8859-1 e UTF-8 codici di fr_FR locale e infine digitare:

Sudo dpkg-reconfigure locales

per finire il lavoro

1
SebMa

Ma prima devi aver installato il language pack necessario. Sul mio VPS con base in tedesco non era preinstallato un pacchetto in lingua inglese. Quindi prima controlla di averlo installato:

aptitude install language-pack-en
1
valentt