1

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

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

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

这是一篇假文章:

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

编译时,Wich 给出了这个结果:

Test - 1 January 1970 

但我希望日期是法语,如下所示:

Test - 1 Janvier 1970
4

1 回答 1

1

您可以单独使用 Rails 的国际化 gemi18n来完成此任务。这是一个简单的例子:

  1. 如果您使用的是 Bundler,请编辑您的 nanoc 项目Gemfile以包含i18ngem:

    gem 'i18n'
    

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

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

    ---
    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. 使用以下代码添加用于执行翻译的助手,例如 at 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]) %>
    

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

于 2014-06-17T14:39:28.327 回答