2012-05-23 8 views
14

Sto provando jekyll per la creazione di siti Web. Sto usando jekyll-bootstrap.Data specifica locale in jekyll

La configurazione di default ha l'archivio di pagina, in cui tutti i post sono elencati raggruppati per anno e mese della data di post. Attualmente i mesi appaiono in inglese. Ho guardato il codice e questo è un estratto che è responsabile per mettere la data:

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

ho trovato un sacco di informazioni here, quindi non c'è un modo per specificare il locale desiderato. Ma come puoi far sì che jekyll lo rispetti? Semplicemente aggiungendo

default_locale: "lt" 

in _config.yml naturalmente non funziona.

risposta

8

Utilizzare il plug-in i18n da jekyll plug-in supportati page.

Nota che le pagine di github non supportano i plug-in locali. Vedi lo related issue.

+0

Come specificare il locale PT-BR? Cioè, la regione parte del locale? –

+0

semplicemente specificare "pt-BR" invece di "lt", l'elenco delle localizzazioni supportate è qui: https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale – mpiktas

+0

Liquid Eccezione: l'oggetto deve essere un oggetto Date, DateTime o Time. niente. in _posts/2012-09-15-test.html.evn: ruby ​​2.0, jekyll-newest – Mithril

12

È possibile sovrascrivere il mese corrente utilizzando Liquid Data 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" }} 

Se la data è, ad esempio 2015/02/20, l'uscita sarà 20 Februar 2015

2

ho iniziato ad usare il i18n plugin suggerito da @mpictas ma quando Jekyll rigenera una pagina inizia a stampare "errore" invece della data localizzata. Così ho rimosso il plugin e iniziato ad usare questo codice semplice, simile al "/ quando caso" soluzione:

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

Perché i18n non è disponibile sulle pagine GitHub, ho costruito su answer di @Kleo Petroff e il answer di @Falc, ho creato un modo per avere un appuntamento con i nomi delle versioni locali definiti in un file YAML:

il codice è quasi la stessa, senza l'intero caso dichiarazione:

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

ho impostare i seguenti dati -struttura (potrebbe essere in _config.yml, o in qualche file di _data/some.yml), nel codice sopra il file è _data/fr.yml:

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

Nota che page.date | date: "%-m" uscita il numero del mese come una stringa , vale a dire giugno il numero è in realtà "6" non 6, liquido silenzio lancia quella stringa a un numero quando piping il 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] `, ho visto il trucco solo guardando la risposta Falc.

1

È possibile combinare @Falc risposta con jekyll-multiple-languages-plugin:

semplicemente utilizzare in modello:

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

Poi, nel _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

mio turno di condividere la mia soluzione senza plugin ispirato ai precedenti: Ho creato un include con alcuni parametri rs come: {% translated_date.html ... %}

L'idea è di tradurre i nomi dei mesi e dei giorni rispettando il formato usando la sintassi del filtro della data (es: "% A% -d% B% Y"). Le stringhe utilizzate per la traduzione si trovano nei negozi di file yaml in _data.

Codice e utilizzo disponibili sul deposito oncleben31/jekyll-date-basic-i18n.

Esempio di integrazione nel mio blog con le fonti Jekyll disponibili nel repository oncleben31/oncleben31-cc. Guarda i layout post.html e home.html.

+0

Funziona con pagine github ed è la soluzione migliore che ho trovato – abuhurayra

2

È inoltre potrebbe scrivere un proprio filtro liquido in un file di Ruby come segue:

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) 

Quando si inserisce questo file nella cartella _plugins del vostro sito Jekyll è possibile utilizzare il filtro nel file di modello come gli altri filtro.

{{ post.date | german_long_month }}