¿Cómo instalar / cambiar la configuración regional en Debian?

65

He escrito una aplicación web para la que la interfaz de usuario está en holandés. Utilizo las rutinas de fecha y hora del sistema para formatear cadenas de fecha en la aplicación. Sin embargo, las cadenas de fecha en que los formatos del sistema están en inglés pero los quiero en holandés, así que necesito configurar la configuración regional del sistema. ¿Cómo hago eso en Debian? Intenté configurar LC_ALL=nl_NLpero no parece tener ningún efecto:

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

Recuerdo que configurar LC_ALL en mi sistema de escritorio Ubuntu funciona bien. ¿Necesito instalar paquetes adicionales para que esto funcione, o lo estoy haciendo completamente mal?

Hongli Lai
fuente
¿Hay alguna manera de hacer esto automáticamente en función de la dirección IP asignada del servidor?
Scoop
2
Configuración de Debian Locale la forma estándar : sudo dpkg-reconfigure locales.
Paul Rougieux

Respuestas:

72

Edite /etc/default/localey configure los contenidos para:

LANG="nl_NL.UTF-8"

Puede verificar qué configuraciones regionales ha generado actualmente usando:

# locale -a

Puede generar más editando /etc/locale.geny descomentando las líneas de las configuraciones regionales que desea habilitar. Luego puede generarlos ejecutando:

# locale-gen

Puede encontrar una lista de configuraciones regionales compatibles en /usr/share/i18n/SUPPORTED

Hay más información disponible en la wiki de Debian .

David Pashley
fuente
9
/ var / lib / belocs / list no existe. Necesita editar /etc/locale.gen o ejecutar dpkg-reconfigure locales en su lugar.
pgs
Haga +1 en esta respuesta para describir locale-gen, pero según el comentario anterior, no existe un archivo como / var / lib / belocs / list en mi sistema
telent
Me tomó 5 horas encontrar esta respuesta, que terminó siendo perfecta. Además, permite hacer alias: es UTF-8 y it_IT UFT-8 me permitió tener mis lugares en UTF-8 por omisión, que es grande si usted tiene código PHP que depende de locales
Cec
¿Existe un comando o paquete que pueda editar y establecer el contenido de / etc / default / locale?
Karl Morrison
Ver la respuesta a continuación de Zar. Puede hacerlo como: sed -i 's / ^ # * (en_US.UTF-8) / \ 1 /' /etc/locale.gen
Tobias Gaertner
66

Es posible que deba instalar el localespaquete. Esto le preguntará qué configuraciones regionales generar. Si ya está instalado, dpkg-reconfigure localesle permitirá generar más configuraciones regionales.

pgs
fuente
Eso solo genera configuraciones regionales, no establece el sistema por defecto.
David Pashley
16
NO, la pregunta final de las configuraciones regionales dpkg-reconfigure es seleccionar la configuración regional predeterminada.
pgs
2
Tuve que ejecutarlo sudocomo en sudo dpkg-reconfigure locales.
Alex Yursha
Si se trata de un servidor al que se accede a través de ssh, la página wiki de Debian en configuraciones regionales recomienda dejar la configuración regional predeterminada establecida en NONE.
Paul Rougieux
1
Esto era exactamente lo que necesitaba: instalar todas las configuraciones regionales en solo unas pocas teclas. Muchas gracias!
aexl
11

Las respuestas aquí son incompletas como en la mayoría de los otros lugares. Después de juntar información de algunos lugares, lo que funcionó para mí fue (1) asegurarme de que la configuración regional que deseaba estuviera disponible (generarla si no lo estaba) y luego (2) establecer las variables de entorno relacionadas con la configuración regional en la configuración regional deseada.

En mi caso, necesitaba una instalación en_US.UTF-8programática (es decir, no interactiva) en un contenedor acoplable. El ff logró lo que necesito, pero debería funcionar bien en un shell interactivo.

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

En el mismo shell, tendrá que hacerlo source ~/.bashrcpara que los entornos surtan efecto de inmediato. Puede verificar que la configuración regional se haya configurado correctamente 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

Hubo muchas entradas de preguntas y respuestas con respecto a este tema, pero solo unas pocas fueron realmente útiles. Crédito a quien crédito merece:

Zar
fuente
6

Ninguna de estas respuestas funcionó para mí, en un contenedor LXC instalado con:

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

Siempre obtuve el siguiente resultado locale-gen, es decir, no genero ninguna configuración regional (ninguna enumerada):

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

Ejecutar dpkg-reconfigure localesy seleccionar algunas configuraciones regionales no se actualizó /etc/locale.gencomo esperaba.

Sin embargo, cuando modifiqué ese archivo manualmente y descomenté las configuraciones regionales que quería, luego locale-gencomencé a funcionar correctamente:

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

También pude generar configuraciones regionales manualmente de esta manera:

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

Pero esta no era una solución permanente: descubrí que la ejecución locale-gensin la --keep-existingopción eliminará todas esas configuraciones regionales generadas manualmente, es decir, todas las configuraciones regionales que no figuran en la lista (y sin comentarios) /etc/locale.gen.

qris
fuente
3

Para una aplicación web, podría ser mejor usar setlocale () dentro del programa, en lugar de requerir que la configuración regional predeterminada del sistema se establezca de manera adecuada en el exterior. Menos cabos sueltos de esa manera.

SamB
fuente
1
Si el sistema no tiene la configuración regional requerida, entonces setlocaleno funcionará.
El padrino
1

Pero primero necesita tener instalado el paquete de idioma necesario. En mi VPS basado en Alemania no había ningún paquete de idioma inglés preinstalado. Entonces primero verifica que lo tienes instalado:

aptitude install language-pack-en
valentt
fuente
1

Para aquellos que, como yo, en Ubuntu 14.04 LTS, de alguna manera, no tienen ningún /etc/locale.genarchivo, pueden agregar una nueva configuración regional /var/lib/locales/supported.d/localy luego ejecutar:

sudo dpkg-reconfigure locales

También puede agregar la configuración regional francesa (por ejemplo) de esta manera (en lugar de editar /var/lib/locales/supported.d/local):

sudo locale-gen fr_FR fr_FR.UTF-8

para agregar y generar los conjuntos de códigos ISO-8859-1y UTF-8de la fr_FRconfiguración regional y finalmente escribir:

sudo dpkg-reconfigure locales

para terminar el trabajo

SebMa
fuente