RubyonRails I18n-日期本地化在本地主机中有效,但在生产中无效



我使用的是RubyonRails 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的几个例子,该例子使用了第3.3节中描述的l助手。然而,在第5节中,它谈到了使用t助手进行自定义翻译。我正在将t用于我的所有其他I18n国际化,它运行良好。唯一的问题是当我使用l辅助对象进行日期时。

我已经找到了如何使用Rails指南链接中描述的t助手的示例。该链接没有给出如何使用字段名对语句进行编码的示例。我在Stack Overflow中找到的所有示例都使用l helper或strftime方法。我希望能够像在生产中处理应用程序的其他部分一样"翻译"日期格式,就像它在localhost中工作一样。我已经检查了我在生产服务器上更改的所有文件,以确保所有文件都被移到了那里。从我读到的内容来看,l助手可能不太适合自定义翻译。也许使用t助手可以解决Rails指南中提出的这个问题。我会继续寻找,看看我是否能找到使用t辅助对象的例子,比如我在这里为l辅助对象提供的例子,或者尝试猜测一些解决方案。

如有任何帮助,我们将不胜感激。

更新:7/29/2013 12:47 pm CDT-我能看到的两台服务器之间唯一的其他区别是开发服务器运行的是ruby 1.9.3p327,生产服务器运行的则是ruby 1.9.3p362。然而,我不敢相信这会导致我的问题,但我觉得我应该注意到这一点。

我找不到任何其他与此相关的问题或评论。我决定复制rails-i18n-gem的fr.yml散列。我不必在我的开发服务器上这样做,就可以将日期格式翻译成法语。正如我所说,没有他们,一切都很顺利。当我在生产中部署新的yaml文件时,我所有的子句都是法语的。我想i18n进程中的某个地方存在大海捞针式的bug。至少Rails对日期的翻译现在是有效的。

最新更新