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.
Footnotes:
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