jekyll liquid date-formatting

Lugar específico fecha en jekyll



liquid date-formatting (7)

Comencé a usar el complemento i18n sugerido por @mpictas, pero cuando Jekyll regenera una página, comienza a imprimir "error" en lugar de la fecha localizada. Así que eliminé el complemento y comencé a usar este código simple, similar a la solución "caso / cuándo":

{% assign months = "Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Noviembre|Diciembre" | split: "|" %} {% assign m = page.date | date: "%-m" | minus: 1 %} {% assign day = page.date | date: "%d" %} {% assign month = months[m] %} {% assign year = page.date | date: "%Y" %} <span class="date">{{ day }}/{{ month }}/{{ year }}</span>

Estoy probando jekyll para la creación de sitios web. Estoy usando jekyll-bootstrap.

La configuración predeterminada tiene el archivo de página, donde se enumeran todas las publicaciones agrupadas por año y mes de la fecha de publicación. Actualmente los meses aparecen en inglés. He mirado el código y este es un extracto que es responsable de poner la fecha:

{% capture this_month %}{{ post.date | date: "%B" }}{% endcapture %}

He encontrado mucha información here , por lo que hay una manera de especificar la configuración regional deseada. ¿Pero cómo puedes hacer que Jekyll lo respete? Simplemente añadiendo

default_locale: "lt"

en _config.yml naturalmente no funciona.


Debido a que i18n no está disponible en las páginas github, construí sobre la answer de @Kleo Petroff y la answer de @Falc, configuré una manera de tener una fecha con nombres de locale definidos en un archivo YAML:

El código es casi el mismo sin la declaración completa del caso:

{% capture i18n_date %} {{ page.date | date: "%-d" }} {% assign m = page.date | date: "%-m" | minus: 1 %} {{ site.data.fr.months[m] }} {{ page.date | date: "%Y" }} {% endcapture %}

Establecí la siguiente estructura de datos (podría estar en _config.yml , o en algún archivo _data/some.yml ), en el código anterior el archivo es _data/fr.yml :

months: - Janvier - Février - Mars - Avril - Mai - Juin - Juillet - Aout - Septembre - Octobre - Novembre - Décembre

Tenga en cuenta que page.date | date: "%-m" page.date | date: "%-m" muestra el número del mes como una cadena , es decir, el número de junio es en realidad "6" no 6 , el líquido convierte esa cadena en un número al canalizar el minus filter. During development it was not something I was aware and thus liquid didn''t returned anything when passing minus filter. During development it was not something I was aware and thus liquid didn''t returned anything when passing m with the value "6" to site.data.fr.months [m] `, solo vi el truco cuando observé la respuesta de Falc.


Mi turno para compartir mi solución sin el complemento inspirado en los anteriores: he creado una inclusión con algunos parámetros como: {% translated_date.html ... %}

La idea es traducir los nombres de los meses y días respetando el formato utilizando la sintaxis del filtro de fecha (por ejemplo, "% A% -d% B% Y"). Las cadenas utilizadas para la traducción están en los almacenes de archivos _data en _data .

Código y uso disponibles en el repositorio oncleben31/jekyll-date-basic-i18n .

Ejemplo de integración en mi blog con fuentes de Jekyll disponibles en el repositorio oncleben31/oncleben31-cc . Mira los diseños post.html y home.html .


Puede sobrescribir el mes actual utilizando el Formato de fecha líquido:

{% assign m = page.date | date: "%-m" %} {{ page.date | date: "%-d" }} {% case m %} {% when ''1'' %}Januar {% when ''2'' %}Februar {% when ''3'' %}März {% when ''4'' %}April {% when ''5'' %}Mai {% when ''6'' %}Juni {% when ''7'' %}Juli {% when ''8'' %}August {% when ''9'' %}September {% when ''10'' %}Oktober {% when ''11'' %}November {% when ''12'' %}Dezember {% endcase %} {{ page.date | date: "%Y" }}

Si su fecha es, por ejemplo, 2015-02-20, la salida será el 20 Februar 2015


Puedes combinar la respuesta @Falc con jekyll-multiple-languages-plugin :

Simplemente use en la plantilla:

{% assign months = "january|february|march|april|may|june|july|august|september|october|november|december" | split: "|" %} {% assign m = post.date | date: "%-m" | minus: 1 %} {% assign day = post.date | date: "%d" %} {% assign month = months[m] %} {% assign year = post.date | date: "%Y" %} <span class="post-meta">{{day}} {% t month %} {{year}}</span>

Luego, en _i18n/en.yml , .../pl.yml , .../any-language.yml :

january: January february: February march: March april: April may: May june: June july: July august: August september: September october: October november: November december: December


También puedes escribir un filtro líquido propio en un archivo de Ruby como el siguiente:

module DateFilter MONTHS = %w(Januar Februar März April Mai Juni July August September Oktober November Dezember) def german_long_month(input) MONTHS[input.strftime("%m").to_i - 1] end end Liquid::Template.register_filter(DateFilter)

Cuando coloque este archivo en la carpeta _plugins de su sitio Jekyll, puede usar el filtro en su archivo de plantilla como en otro filtro.

{{ post.date | german_long_month }}


Utilice el complemento i18n de la page complementos compatibles con jekyll.

Tenga en cuenta que las páginas github no admiten complementos locales. Vea el tema relacionado .