2012-05-23 2 views
14

J'essaye jekyll pour la création de site Web. J'utilise jekyll-bootstrap.Date spécifique du lieu dans jekyll

La configuration par défaut a l'archive de page, où tous les messages sont répertoriés groupés par année et mois de la date de publication. Actuellement, les mois apparaissent en anglais. Je l'ai regardé le code et voici un extrait qui est responsable de la mise à la date:

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

J'ai trouvé beaucoup d'informations here, donc il est un moyen de spécifier l'environnement local souhaité. Mais comment peux-tu le faire respecter? Ajouter simplement

default_locale: "lt" 

dans _config.yml ne fonctionne naturellement pas.

Répondre

8

Utilisez le plugin i18n à partir des plugins pris en charge par jekyll page. Notez que les pages github ne prennent pas en charge les plugins locaux.

Voir le related issue.

+0

Comment puis-je spécifier les paramètres régionaux pt-BR? Autrement dit, la région fait partie du lieu? –

+0

simplement spécifier "pt-BR" au lieu de "lt", la liste des paramètres régionaux pris en charge est ici: https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale – mpiktas

+0

Liquid Exception: l'objet doit être un objet Date, DateTime ou Time. néant donné. dans _posts/2012-09-15-test.html.evn: ruby ​​2.0, jekyll-latest – Mithril

12

Vous pouvez remplacer le mois en cours à l'aide Date de liquide Format:

{% 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 votre date est, par exemple 20/02/2015, la sortie sera 20 Februar 2015

2

je commencé à utiliser le i18n plugin suggéré par @mpictas mais quand Jekyll régénère une page, il commence à imprimer "error" au lieu de la date localisée. Donc, j'ai enlevé le plug-in et a commencé à utiliser ce code simple, similaire à la « cas/quand » solution:

{% 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> 
6

Parce que i18n ne sont pas disponibles sur les pages GitHub, je construit sur answer de @Kleo Petroff et answer de @Falc, je mis en place un moyen d'avoir une date avec des noms de paramètres régionaux définis dans un fichier YAML:

le code est presque le même sans l'ensemble de la déclaration de cas:

{% 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 %} 

Je mis les données suivantes -structure (pourrait être dans _config.yml, ou dans un fichier _data/some.yml), dans le code ci-dessus le fichier est _data/fr.yml:

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

Notez que page.date | date: "%-m" sortie le numéro du mois en tant que chaîne , à savoir le numéro Juin est en fait "6" pas 6, liquide silencieusement jette cette chaîne à un numéro quand passe la ligne le m with the value "6" to site.data.fr.months [m] `, j'ai seulement vu l'astuce en regardant Falc answer.

1

Vous pouvez combiner @Falc réponse avec jekyll-multiple-languages-plugin:

utiliser simplement dans le modèle:

{% 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> 

Puis, 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 
4

Mon tour de partager ma solution sans plugin inspiré des précédents: J'ai créé un include avec quelques paramètres rs like: {% translated_date.html ... %}

L'idée est de traduire les mois et les jours en respectant le format de la syntaxe du filtre de date (ex: "% A% -d% B% Y"). Les chaînes utilisées pour la traduction se trouvent dans les magasins de fichiers yaml au _data.

Le code et l'utilisation sont disponibles sur le repo oncleben31/jekyll-date-basic-i18n.

Exemple d'intégration dans mon blog avec des sources Jekyll disponibles dans le repo oncleben31/oncleben31-cc. Regardez les mises en page post.html et home.html.

+0

Il fonctionne avec les pages github et est la meilleure solution que j'ai trouvée – abuhurayra

2

Vous pouvez aussi écrire un propre filtre liquide dans un fichier Ruby comme suit:

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) 

Lorsque vous mettez ce fichier dans le dossier _plugins de votre site Jekyll vous pouvez utiliser le filtre dans votre fichier de modèle comme les autres filtre.

{{ post.date | german_long_month }}