Ruby on Rails I18n - 日期的本地化工作在localhost但不在生产中

时间:2013-07-28 23:04:09

标签: ruby-on-rails date localization internationalization date-format

我正在使用Ruby on Rails 3.2.13 Ruby 1.9.3。

我的en.yml文件中有以下代码:

date:
  formats:
    default: "%Y-%m-%d"
    short: "%b %d"
    long: "%A, %B %d, %Y"
    mmyy: "%B %Y"

我的fr.yml文件中有以下代码:

date:
  formats:
    default: "%Y-%m-%d"
    short: "%b %d"
    long: "%A, %d %B %Y"
    mmyy: "%B %Y"

我的日期字段media_created存储在YYYY-MM-DD格式的字符串中

以下是我视图中的代码,用于在我的视图中显示短日期格式:

<%= l media_item.media_created.to_date, format: :mmyy %>

以下是我的短格式在localhost(日期2013-07-01)中的工作原理示例:

July 2013 (en)
juillet 2013 (fr)

以下是我的长格式如何在生产中工作的示例(日期2013-07-01):

July 2013 (en)
July 2013 (fr)

以下是我视图中的代码,用于在我的视图中显示长日期格式:

<%= l media_item.media_created.to_date, format: :long %>

以下是我的长格式如何在localhost中工作的示例(日期为2013-06-23,即星期日):

Sunday, June 23, 2013 (en)
dimanche, 23 juin 2013 (fr)

以下是我的长格式如何在生产中工作的示例(日期2013-06-23):

Sunday, June 23, 2013 (en)
Sunday, June 23, 2013 (fr)

我阅读了http://guides.rubyonrails.org/i18n.html和Stack Overflow上的几个例子,它们使用了l帮助器,如3.3节所述。但是在第5节中,它讨论了使用t帮助程序进行自定义翻译。我正在使用我的所有其他I18n国际化,它工作正常。唯一的问题是当我使用l helper作为日期时。

我已经查找了如何使用链接Rails指南链接中所述的t帮助程序的示例。该链接未提供如何使用字段名称对语句进行编码的示例。我在Stack Overflow中找到的所有示例都使用了l helper或strftime方法。我希望能够“翻译”日期格式,就像我在生产中使用其他应用程序一样,它可以在localhost中运行。我检查了所有已更改的文件,以便在我的生产服务器上执行此操作,以确保所有文件都移到那里。从我所做的读到,似乎l帮助器可能不适合自定义翻译。也许使用t帮助程序将解决Rails指南提出的这个问题。我将继续关注我是否可以找到使用t helper的示例,就像我在这里为l helper一样,或尝试猜测一些解决方案。

任何帮助都将不胜感激。

更新:2013年7月29日下午12:47 CDT - 我在两台服务器之间看到的唯一区别是开发服务器运行的是ruby 1.9.3p327,生产服务器运行的是ruby 1.9.3p362。但是我无法相信这可能会导致我的问题,但我认为应该注意这是一个区别。

1 个答案:

答案 0 :(得分:0)

我找不到与此相关的任何其他问题或评论。我决定复制rails-i18n gem的fr.yml哈希。我没有必要在我的开发服务器上执行此操作以将日期格式转换为法语。正如我所说,没有它们,它工作正常。当我在生产中部署新的yaml文件时,我的所有子句都是法语。我想在i18n过程的某个地方有一个大海捞针类型的针。至少日期的Rails翻译现在正在运作。