Rails升级到2.2.2之后支持本地化的一个小BUG

家里的电脑上,Rails环境升级到了2.2.2。发现这个版本的Rails内置了i18n的支持。很开心,因为可以摆脱”1 day ago” 这种信息了(当然,之前可以通过安装别的插件或者Gem来解决,但是这次是内置的诶。)

决定在现在练手的项目上实践一把。找到”locales”的文件夹,里面有一个en.yml文件(dammy),通过文件中的提示,可以去下载其他语言的yml。把zh-CN.yml添加到 locales 文件夹之后,就是去enviroment.rb修改设置了。

有两行被注释掉的语句

# config.i18n.load_path << Dir[Rails.root.join(‘my’, ‘locales’, ‘*.{rb,yml}’)]
# config.i18n.default_locale = :de

解除这两句的注释,把默认的 :de 改成 :’zh-CN’  当然,这里要注意这个引号同学。信心满满地认为已经没有问题了。可是,一运行却发现报错,没法把时间转化成String。我蒙了,在Rails社区提问没有人理(估计是已经解决了这个问题?)只好自己在Google上找答案。终于让我发现了这个页面,似乎是说在config.i18n.load_path << Dir[Rails.root.join(‘my’, ‘locales’, ‘*.{rb,yml}’)]这句中的 <<符号应该换成 =号就对了。马上着手修改,发现在”show”的时候没有问题了,在”new”的时候继续失败…

很挫折,在看了上面提到页面的评论,发现新的enviroment.rb已经修正了这个问题,再对比新的enviroment.rb才发现<<符号应该改成 +=才对。

现在,已经可以正常地显示中文的时间了。

这个故事告诉我们: 要是我第一想到的是Google的话,解决这个问题就用不了2天时间了。等待是没有结果的,Just Do IT :-)

2 条评论

  1. 我写成这样才对,不知为什么?

    config.i18n.load_path = Dir[File.join(RAILS_ROOT, ‘my’, ‘locales’, ‘*.{rb,yml}’)]

  2. @Godblessu
    看Rails的那个issue解决方案也是写成你这样就可以了。
    但是我对比了最新的那个enviorment.rb 却发现是写成了我文章里写的那样。不知道到底是怎么回事。对Ruby 和 Rails 我都是初学,还不清楚其所以然。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据