2012-05-23 11 views
14

Ich probiere Jekyll für Website-Erstellung aus. Ich benutze jekyll-bootstrap.Gebietsspezifisches Datum in Jekyll

Die Standardkonfiguration enthält das Seitenarchiv, in dem alle Posts nach Jahr und Monat des Post-Datums gruppiert sind. Derzeit erscheinen die Monate in Englisch. Ich habe den Code angesehen und dies ist ein Auszug, der für die Umsetzung des Datums verantwortlich:

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

ich viele Informationen gefunden habe here, so gibt es eine Möglichkeit, das gewünschte Gebietsschema angeben. Aber wie kannst du es Jekyll respektieren lassen? Einfach hinzufügen

default_locale: "lt" 

in _config.yml funktioniert natürlich nicht.

Antwort

8

Verwenden Sie das Plugin i18n von jekyll unterstützt Plugins page.

Beachten Sie, dass github-Seiten keine lokalen Plugins unterstützen. Siehe related issue.

+0

Wie kann ich das pt-BR-Gebietsschema angeben? Das heißt, der Regionsteil des Gebietsschemas? –

+0

Geben Sie einfach "pt-BR" anstelle von "lt" ein, die Liste der unterstützten Ländereinstellungen ist hier: https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale – mpiktas

+0

Flüssige Ausnahme: Objekt muss sein ein Date-, DateTime- oder Time-Objekt. Nil gegeben. in _posts/2012-09-15-test.html.evn: ruby ​​2.0, jekyll-neuste – Mithril

12

Sie können den aktuellen Monat überschreiben von Liquid Datumsformat mit:

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

Wenn Sie das Datum ist, beispielsweise 2015.02.20, wird der Ausgang 20 Februar 2015

2

ich sein begann die i18n mit Plugin vorgeschlagen von @mpictas, aber wenn Jekyll eine Seite neu erstellt, beginnt es "Fehler" anstelle des lokalisierten Datums zu drucken. So entfernte ich das Plugin und den Autor diesen einfachen Code zu verwenden, ähnlich die „Falles/wenn“ Lösung:

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

Da i18n auf Github Seiten nicht verfügbar ist, ich auf answer von @Kleo Petroff gebaut und die answer von @Falc, habe ich einen Weg ein Datum mit locale Namen in einer YAML-Datei definiert haben: ist

der Code ohne den ganzen Fall Aussage fast das gleiche:

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

ich folgende Daten Struktur (könnte insein, oder in einigen _data/some.yml-Datei), wird die Datei in dem obigen Code _data/fr.yml:

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

Beachten Sie, dass page.date | date: "%-m" Ausgabe der Monatszahl als String, dh Juni Nummer tatsächlich "6" ist nicht 6, Flüssigkeit leise wirft diese Zeichenfolge auf eine Nummer, wenn Rohrleitung die 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] `, sah ich nur den Trick, wenn ich auf Falc Antwort schaue.

1

können Sie kombinieren @Falc Antwort mit jekyll-multiple-languages-plugin:

einfach in Vorlage:

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

Dann in _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

Ich bin dran, meine Lösung zu teilen ohne Plugin von den vorherigen inspiriert: Ich habe ein Include mit einigen Parametern erstellt rs like: {% translated_date.html ... %}

Die Idee besteht darin, die Monate und Tage Namen, die das Format unter Verwendung der Datumsfilter-Syntax zu übersetzen (zB: "% A% -d% B% Y"). Die für die Übersetzung verwendeten Zeichenfolgen werden in YAML-Dateien in _data gespeichert.

Code und Verwendung auf dem Repo verfügbar oncleben31/jekyll-date-basic-i18n.

Beispiel der Integration in meinem Blog mit Jekyll Quellen im Repo oncleben31/oncleben31-cc. Sehen Sie sich die Layouts post.html und home.html an.

+0

Es funktioniert mit GitHub-Seiten und ist die beste Lösung, die ich gefunden habe – abuhurayra

2

Sie können auch einen eigenen Flüssigkeitsfilter in einem Ruby-Datei wie folgt schreiben:

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) 

Wenn Sie diese Datei in die _plugins Ordner Ihrer Jekyll Website setzen können Sie die Filter in der Template-Datei wie andere verwenden Filter.

{{ post.date | german_long_month }}