Notxor tiene un blog

Defenestrando la vida


Nombres de días y meses en español en Emacs org-mode.

Espero que esta entrada sea corta, es un tema sencillo que creo que ya ha aparecido por algún sitio en este blog y que está perfectamente documentada en multitud de sitios. Sin embargo, alguno de los iniciandos en el mundo de Emacs y concretamente en el de org-mode, me hacen a veces una pregunta tal que: ¿Cómo haces para que te aparezcan las fechas en español?.

Algunas veces se refieren sólo a hacer que Emacs introduzca la fecha del día en el texto, y eso es bastante sencillo si utilizamos el comando date de GNU/Linux:

C-u M-! date

Ese comando nos devolverá el día y la hora del sistema. Si queremos un formato más específico podemos decírselo acompañándolo de una cadena específica.

C-u M-! date +"%d de %B de %Y"

Ese comando mostrará una fecha del estilo 14 de diciembre de 2018. En este modo, la cadena la pone el comando de la consola y la fecha aparecerá en nuestro documento con la misma forma que la devuelva bash. Si lo utilizamos frecuentemente, podríamos automatizarlo un poco con una función de elisp en nuestra configuración, por ejemplo:

(defun insert-current-date () (interactive)
    (insert (shell-command-to-string "echo -n $(date +%Y-%m-%d)")))

Podemos utilizar, el comando del sistema, también podríamos aprovechar las facilidades que nos da el paquete calendar para trabajar con fechas:

(require 'calendar)
(defun insdate-insert-current-date (&optional omit-day-of-week-p)
    "Insertar la fecha del día con el formato local establecido.
  Añadiendo una opción se puede omitir el día de la semana de la
  cadena devuelta."
    (interactive "P*")
    (insert (calendar-date-string (calendar-current-date) nil
				  omit-day-of-week-p)))

En mi caso, esa función me devolverá una cadena del estilo 2018-12-14. ¿Por qué lo devuelve en formato ISO? Pues básicamente porque es el formato que tengo configurado es ese.

'(calendar-date-style (quote iso))

También se podría sustituir ese iso, que ordena «año - mes - día» por, european que ordena en «día - mes - año», o american que ordenará como «mes - día - año».

Ajustes del calendario

Vale, vale... ¿pero cómo haces para que el calendario te ponga los nombres de meses y días de la semana en español?

Sencillo: en mi init-el tengo configuradas las siguientes variables para «hispanizar» el nombre de meses y días.

'(calendar-day-header-array ["Do" "Lu" "Ma" "Mi" "Ju" "Vi" "Sa"])
'(calendar-day-name-array
   ["domingo" "lunes" "martes" "miércoles" "jueves" "viernes" "sábado"])
'(calendar-month-abbrev-array
   ["Ene" "Feb" "Mar" "Abr" "May" "Jun"
    "Jul" "Ago" "Sep" "Oct" "Nov" "Dic"])
'(calendar-month-name-array
   ["enero" "febrero" "marzo"
    "abril" "mayo" "junio"
    "julio" "agosto" "septiembre"
    "octubre" "noviembre" "diciembre"])
'(calendar-week-start-day 1)

Se puede apreciar que hay dos arrays por cada grupo de nombres, los abreviados y los largos. No hay que explicar mucho más1.

Además, me gustaría llamar la atención sobre la línea '(calendar-week-start-day 1) que establece que la semana comience en el día 1 (los lunes); por defecto comienzan el día 0 (el domingo). Por eso, también, los arrays de los nombres comienzan por el domingo y no por el lunes como estamos acostumbrados por estas latitudes.

Conclusiones

Tener bien ajustadas los formatos de fecha en nuestro init.el hará que nuestro trabajo, con org-mde, con nuestra agenda y nuestro calendario sea más suave.

Nota al pie de página:

1

Sólo recordar que en español, efectivamente, el nombre de los días y los meses se escriben en minúscula. Alguien ya me ha llamado la atención por las mayúsculas en algunos de los arrays, pero entiendo que esos son abreviaturas y por tanto la falta ortográfica sería la carencia del «.» al final y no la mayúscula.


Comentarios