使用nanoc" created_at"进行日期本地化

时间:2014-06-17 12:40:14

标签: ruby date localization internationalization nanoc

我发现很多文章都在谈论i18n与Rails,Nanoc,但没有关于一个非常简单(我认为)的事情:如何在nanoc文章上国际化日期。

我有一个非常简单的设置,例如这里是我的index.html页面的片段:

<%= link_to(post[:title], post.path) %> - <%= post[:created_at] %>

这是一篇虚拟文章:

---
title: Test
created_at: 1 January 1970
---

编译时会给出这个结果:

Test - 1 January 1970 

但我希望这个日期是法语,就像这样:

Test - 1 Janvier 1970

1 个答案:

答案 0 :(得分:1)

你可以使用Rails&#39;国际化宝石i18n,它自己完成这项任务。这是一个简单的例子:

  1. 如果您正在使用Bundler,请编辑您的nanoc项目Gemfile以包含i18n gem:

    gem 'i18n'
    

    否则,请在您的计算机上本地安装gem(您可能需要超级用户权限):

    gem install i18n
    
  2. 在您的nanoc项目中添加法语翻译文件,例如tr/fr.yml。将这些(最小)内容放入其中:

    ---
    fr:
      date:
        formats:
          default: ! '%-d %B %Y'
        month_names:
        - 
        - janvier
        - février
        - mars
        - avril
        - mai
        - juin
        - juillet
        - août
        - septembre
        - octobre
        - novembre
        - décembre
    
  3. 添加帮助程序以执行翻译,例如在lib/translate_date.rb,使用以下代码:

     require 'date'
     require 'i18n'
    
     # Load our translation files
     I18n.load_path = Dir['./tr/*.yml']
    
     # Set the default locale to French
     I18n.locale = :fr
    
     # Translates a date string into the default locale.
     def translate_date(date)
       I18n.l Date.parse(date, '%d %B %Y')
     end
    
  4. 现在将其放在index.html文件

    <%= link_to(post[:title], post.path) %> - <%= translate_date(post[:created_at]) %>
    

    你应该得到你想要的输出。