2012-05-23 4 views
14

Я пытаюсь создать jekyll для создания сайта. Я использую jekyll-bootstrap.Местная конкретная дата в jekyll

Конфигурация по умолчанию имеет архив страниц, где все записи перечислены сгруппированы по годам и месяцам даты публикации. В настоящее время месяцы появляются на английском языке. Я посмотрел на код и это отрывок, который отвечает за ввод даты:

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

Я нашел много информации here, так что есть способ определить требуемый язык. Но как вы можете заставить Джекиль уважать это? Просто добавьте

default_locale: "lt" 

в _config.yml естественно не работает.

ответ

8

Используйте плагин i18n из поддерживаемых jekyll плагинов page.

Обратите внимание, что страницы 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: ruby ​​2.0, jekyll-newest – Mithril

12

Вы можете перезаписывать текущий месяц с помощью Liquid Формата Даты:

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

Если дата, например 2015-02-20, выход будет 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

Поскольку i18n не доступен на GitHub страницах, я построил на answer из @Kleo Petroff и answer из @Falc, я создал способ иметь дату с именами локалей, определенных в YAML файле:

код почти такой же без всего сазе:

{% 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] `, я только видел трюк, глядя на ответ Фалька.

1

Вы можете комбинировать @Falc ответ с jekyll-multiple-languages-plugin:

Просто используйте в шаблоне:

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

Мой черед поделиться своим решением без плагина, вдохновленного предыдущими: Я создал include с некоторым параметром rs like: {% translated_date.html ... %}

Идея состоит в переводе имен месяцев и дней в формате, использующем синтаксис фильтра даты (например: «% A% -d% B% Y»). Строки, используемые для перевода, хранятся в хранилищах файлов yaml в _data.

Код и использование доступно на репо oncleben31/jekyll-date-basic-i18n.

Пример интеграции в моем блоге с источниками Jekyll, доступными в репо oncleben31/oncleben31-cc. Посмотрите на макеты post.html и home.html.

+0

Он работает с страницами github и является лучшим решением, которое я нашел – abuhurayra

2

Вы также можете написать собственный жидкостный фильтр в рубин файл как следующее:

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 }} 
Смежные вопросы