2013-02-25 78 views
0

如果本地化文件查找失败,我可以使用默认的I18n配置进行查找吗?默认I18n ActiveRecord验证翻译

作为滑轨的一部分,http://guides.rubyonrails.org/i18n.html#how-i18n-in-ruby-on-rails-works

作为该溶液的一部分,在Rails框架每静态字符串 - 例如Active Record验证消息,时间和日期格式已经国际化,所以Rails应用程序的本地化意味着“超越”这些默认值。

因此,当我添加我自己的本地化文件时,我失去了ActiveRecord的默认导轨错误文本。 例如模型

validates_length_of :name, :maximum => 50 

当失败内发出下面的代码,我得到

translation missing: en-gb, activerecord, errors, models, model_name, attributes, name, too_long 

两个可能的解决方法:

  1. 添加:message每一位validates_*方法?例如

    validates_length_of :name, :maximum => 50, :message => "is too long (maximum is %{count} characters)" 
    

    这样做的问题是有很多调用,添加新代码的人必须记得添加文本。 (我不认为变量替换在这里工作!)

  2. 添加默认设置在每个区域设置的配置文件rails uses,如

    errors: 
        messages: 
        less_than: must be less than %{count} 
    

    这里的问题是,同样的文字有被添加到每个区域文件中(因为我对翻译这些文件不感兴趣),但这并不是什么大事,但似乎很奇怪。

如果有的话,建议哪些路线?任何其他想法或建议?

是否没有I18n使用的默认/后备文件,即如果在语言环境文件中找不到查找?

(使用Rails 2.3.5)

回答

1

我在这里找到了最好的办法是只包括rails-i18n宝石在你的项目,让你在所有可用语言的翻译。然后在你的应用程序的翻译文件中,覆盖你需要的。

注意:您需要项目使用与gem所定义的相同的语言环境,因此在您的示例中,您希望使用en-GB而不是en-gb