Observación preliminar : Esta pregunta es no sobre el establecimiento de un local cambiando LC_ALL
, LC_TIME
, LANG
, etc, es bastante acerca de cómo cambiar una configuración regional de definición , por ejemplo, en /usr/share/i18n/locales/de_DE
, o, respectivamente, para obtener sugerencias acerca de las opciones más apropiadas que cambiar los ajustes del sistema.
La intención es obtener representaciones de tiempo ISO %Y-%m-%d
y %H:%M:%S
sin efectos secundarios no deseados.
Las sugerencias que encontré en la red todavía eran inapropiadas (por ejemplo, establecer la configuración regional en "danés" no mantendrá los nombres de los días de la semana escritos en el idioma nativo).
Ahora, la única opción que veo actualmente para obtener el comportamiento deseado es cambiar la definición de mi ubicación nativa en /usr/share/i18n/locales/de_DE
. Esta no es una solución perfecta ya que con las actualizaciones del sistema, esos archivos modificados pueden sobrescribirse nuevamente.
Mis preguntas son:
- ¿Existen mejores opciones relacionadas con la configuración regional para obtener la función deseada que cambiar el archivo de configuración regional del sistema específico?
- ¿Hay algún problema que esperar al cambiar un archivo de definición de configuración regional específico? (¿Y cómo podría evitarse que este archivo se sobrescriba en caso de actualizaciones del sistema?)
- ¿Sería mejor definir una nueva variante específica de un archivo de configuración regional existente y usarla en la
LC_*
configuración? (¿Y cómo el nuevo archivo / definición se daría a conocer correctamente al sistema?) - ¿Cualquier otra sugerencia?
en_XX
- No sé cuáles son las restricciones aquí, la prueba y el error pueden ser suficientes), realice los cambios que desee y úsalo como configuración regional. Vas a tener que regenerar la lista o lo que sea después, etcLC_TIME
(en/etc/environment
o/etc/default/locale
, o/etc/locale.conf
en función de distribución) a la configuración regional modificado (llamé a la minaisodate.UTF-8
) y el formato respectivo ser recogido de esa localidad personalizado por sólo hora / fecha. Así es como personalicé mien_US
configuración para mostrar la fecha / hora ISO./var/lib/locales/supported.d/local
(o uno de los otros archivos allí) y ejecutarlodpkg-reconfigure locales
como superusuario para que se compile la definición de la configuración regional. Y sí, configurarLC_TIME
para apuntar a una configuración regional personalizada parece ser el método menos intrusivo de todo lo que he visto hasta ahora. Es por eso que su sistema tiene una configuración global dondeLC_TIME
se puede configurar de forma diferente a la "configuración regional general".copy
enfoque de secciones activas o mantener otras secciones redundantes (para poderdiff
contra el archivo original).Respuestas:
En una pregunta reciente , pregunté cuál es la mejor práctica para este tipo de cambio. No hubo respuesta todavía. Sin embargo, puedo darle la receta que estoy usando, que ha demostrado funcionar bien. Todos los programas recogen la fecha correctamente.
Mi descripción es para Ubuntu, pero probablemente funcionará en Debian y Mint.
Preparativos
Copie la configuración regional desde la que desea personalizar
/usr/share/i18n/locales
a un nuevo archivo. P.ejAjuste todo con la excepción de las
LC_TIME
secciones a:Ajuste la
LC_TIME
sección para que coincida con el resultado deseado. Puede usar la configuración de mi pregunta vinculada anterior como plantilla. Parece que esto es exactamente lo que quieres.Si su configuración regional no utiliza la notación "AM / PM", configúrelas para que se vacíen:
Darlo a conocer al sistema
Edite el archivo
/var/lib/locales/supported.d/local
y agregue la información sobre su definición de configuración regional allí. Es decir, agregue una línea como esta si su nombre de archivo anterior eraisodate
, ajústelo de otra manera:Si
/var/lib/locales/supported.d/local
no existe, cree un archivo con ese nombre. No ponga los cambios en el respectivoen
ode
archivo en esa carpeta, ya que pueden obtener sobrescribe tan pronto como ellanguage-pack-*-base
ylanguage-pack-*
paquetes en el sistema recibe una actualización.Ahora ejecuta
dpkg-reconfigure locales
:En su caso, esto indicará que
de_DE.UTF-8@isodate
se ha generado la configuración regional (suponiendo que no tenga problemas de sintaxis).Por último, pero no menos importante, agregue lo siguiente a
/etc/default/locale
:Esto garantizará que solo
LC_TIME
anule la configuración regional predeterminada definida medianteLANG
.Inicie sesión de nuevo y debería poder ver la nueva fecha / hora ISO cuando use
date
u otras herramientas que usen la función de tiempo de ejecución libc respectiva.La intención aquí es hacer el cambio menos intrusivo sin trabajar contra el sistema (por ejemplo, contra el administrador de paquetes y amigos). Por supuesto, también puede simplemente crear una copia de su configuración regional, instalarla de una manera similar a la descrita anteriormente y luego ajustarla
LANG
. El punto es que, mientras no quiera correr el riesgo de que sus cambios se sobrescriban con una actualización del paquete, debe usar una copia personalizada (cualquiera sea la personalización que elija; es decir,copy
o simplemente mantener las secciones como estaban en el original). Y si cambiaLANG
para apuntar a la definición regional personalizada completa , o si agregaLC_TIME
para apuntar solo a la sección personalizada relevante del mismo nombre de un archivo de definición de configuración regional personalizada: no podrá ajustar una de las configuraciones globales.fuente
en_US.UTF-8@isodate
.copy
elLC_IDENTIFICATION
y cómo afectaría eso a los nombres de los archivos y cómo se hace referencia a la configuración regional en/etc/default/locale
y/var/lib/locales/supported.d/local
respectivamente? ¿Puedes decir?en_US@isodate
archivo de definición y lo usaríalocaledef
para producir los archivos correctos; ver sourceware.org/git/?p=glibc.git;a=blob;f=localedata/README para más detalles (y sourceware.org/git/?p=glibc.git;a=blob;f=localedata/locales/ ... por un ejemplo).localedef -i en_US@isodate -f UTF-8 en_US.UTF-8@isodate
, no estoy seguro acerca de la configuración específica de Debian, mi comentario fue principalmente sobre cómo para nombrar la localidad./usr/local/share/i18n/locales
, agregaría los pares de configuración regional / mapa de caracteres compatibles/usr/local/share/i18n/SUPPORTED
y ejecutaríadpkg-reconfigure locales
(ver también/etc/locale.gen
).