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 .