2012-05-23 21 views
14

我正在嘗試用於網站創建的jekyll。我正在使用jekyll-bootstrap。jekyll中的語言環境特定日期

默認配置包含頁面存檔,其中按發佈日期的年份和月份列出所有帖子。目前這些月份以英文顯示。我看了看代碼,這是一個摘錄負責把日期:我發現了很多資料here

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

,所以來指定所需的語言環境的方式。但是,你怎麼能讓傑基爾尊重它呢?簡單加入

default_locale: "lt" 

in _config.yml自然不起作用。

回答

8

使用來自jekyll支持插件的插件i18npage

請注意,github頁面不支持本地插件。請參閱related issue

+0

如何指定pt-BR語言環境?那是區域部分的區域? –

+0

只需指定「pt-BR」而不是「lt」,支持的語言環境列表位於以下位置:https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale – mpiktas

+0

液體異常:對象必須是Date,DateTime或Time對象。零給出。在_posts/2012-09-15-test.html.evn:紅寶石2.0,jekyll-newest – Mithril

12

您可以通過使用液體日期格式覆蓋當前的月份:

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

如果你的約會,例如二○一五年二月二十〇日,輸出將是20 Februar 2015

2

我開始使用i18n插件由@mpictas建議,但是當Jekyll重新生成頁面時,它開始打印「錯誤」而不是本地化日期。所以我刪除了插件,並開始使用這個簡單的代碼,類似「案/時」的解決方案:

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

因爲國際化是不可用在github的網頁,我建立在@Kleo佩特羅夫的answeranswer @Falc的,我成立了一個辦法讓在YAML文件中定義的區域名稱的日期:

的代碼是沒有整個case語句幾乎相同:

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

我設置以下數據 - 結構(可能在_config.yml,或者在一些_data/some.yml文件),在上述代碼中的文件是_data/fr.yml

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

注意page.date | date: "%-m"輸出的月數作爲,即六月數量實際上是"6"6,液體默默地將該字符串轉換爲數字管道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]`,我只看到Falc答案時的竅門。

1

您可以jekyll-multiple-languages-plugin結合@Falc答案:

模板只需使用:

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

然後在_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

輪到我分享我的解決辦法沒有插件靈感來自以前的: 我創建了一些包含一些參數rs like:{% translated_date.html ... %}

這個想法是使用日期過濾器語法(例如:「%A%-d%B%Y」)翻譯關於格式的月份和日期名稱。用於翻譯的字符串位於_data的yaml文件存儲區中。

代碼和用法可在回購oncleben31/jekyll-date-basic-i18n

我的博客中整合了Jekyll資源的示例,可在回購oncleben31/oncleben31-cc中找到。看看佈局post.htmlhome.html

+0

它與github頁面一起工作,是我找到的最佳解決方案 – abuhurayra

2

你也可以寫一個自己的液體過濾器在Ruby文件中像下面:

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) 

當你把這個文件到您的哲基爾網站_plugins文件夾,你可以使用過濾器像其他模板文件過濾。

{{ post.date | german_long_month }} 
相關問題