Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jekyll中特定于区域设置的日期_Jekyll_Liquid_Date Formatting - Fatal编程技术网

jekyll中特定于区域设置的日期

jekyll中特定于区域设置的日期,jekyll,liquid,date-formatting,Jekyll,Liquid,Date Formatting,我正在尝试网站创建杰基尔。我正在使用jekyll引导 默认配置为页面存档,其中所有帖子都按发布日期的年份和月份分组列出。目前,月份以英语显示。我已经看过了代码,这是一个摘录,负责记录日期: {% capture this_month %}{{ post.date | date: "%B" }}{% endcapture %} 我发现了很多信息,因此有一种方法可以指定所需的区域设置。但是你怎么能让杰基尔尊重它呢?简单地添加 default_locale: "lt" 在\u config.yml

我正在尝试网站创建杰基尔。我正在使用jekyll引导

默认配置为页面存档,其中所有帖子都按发布日期的年份和月份分组列出。目前,月份以英语显示。我已经看过了代码,这是一个摘录,负责记录日期:

{% capture this_month %}{{ post.date | date: "%B" }}{% endcapture %}
我发现了很多信息,因此有一种方法可以指定所需的区域设置。但是你怎么能让杰基尔尊重它呢?简单地添加

default_locale: "lt"
\u config.yml中
自然不起作用

使用jekyll支持的插件中的插件


请注意,github页面不支持本地插件。请参阅。

您可以使用流动日期格式覆盖当前月份:

{% 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,输出将是2015年2月20日,我开始使用@mpictas建议的插件,但当Jekyll重新生成页面时,它开始打印“错误”,而不是本地化日期。因此,我删除了插件并开始使用这个简单的代码,类似于“case/when”解决方案:

{%assign months=“Enero | Febrero | Marzo | Abril | Mayo | Junio | Julio | Agosto | Septiembre | Octubre | Noviembre | Diciembre”| split:|“%”
{%assign m=page.date | date:%-m |减:1%}
{%assign day=page.date |日期:“%d”%}
{%assign month=months[m]}
{%assign year=page.date |日期:“%Y”%}
{{day}/{{month}/{{year}

由于i18n在github页面上不可用,我在@Kleo Petroff和@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 %}
我设置了以下数据结构(可以在
\u config.yml
中,或者在一些
\u data/some.yml
文件中),在上面的代码中,文件是
\u data/fr.yml

months:
    - Janvier
    - Février
    - Mars
    - Avril
    - Mai
    - Juin
    - Juillet
    - Aout
    - Septembre
    - Octobre
    - Novembre
    - Décembre
请注意,
page.date | date:“%-m”
将月数输出为字符串,即六月号实际上是
“6”
而不是
6
,液体在输送
减号过滤器时,会将该字符串转换为一个数字。

在开发过程中,我没有意识到这一点,因此liquid在将值为“6”的
m
传递到
site.data.fr.months[m]时没有返回任何内容。我只在查看Falc答案时看到了诀窍。

您可以将@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>

现在轮到我分享我的解决方案,而不使用以前的插件: 我创建了一个包含一些参数的include,如:
{%translated\u date.html…%}

这样做的目的是使用日期过滤器语法(例如:“%A%-d%B%Y”)转换与格式相关的月份和天数名称。用于翻译的字符串位于存储在
\u data
中的yaml文件中

回购协议上提供的代码和用法


我的博客与repo中提供的Jekyll源集成的示例。查看布局
post.html
home.html

您还可以在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)
当您将此文件放入Jekyll站点的
\u plugins
文件夹时,您可以像使用其他过滤器一样使用模板文件中的过滤器

{{ post.date | german_long_month }}

如何指定pt BR语言环境?也就是说,区域设置的区域部分?只需指定“pt BR”而不是“lt”,支持的区域设置列表如下:Liquid Exception:Object必须是Date、DateTime或Time对象。零分。在_posts/2012-09-15-test.html.evn:ruby 2.0中,jekyll newestIt是一个有一年历史的答案,可能有些变化。它与github页面一起工作,是我找到的最好的解决方案
{{ post.date | german_long_month }}