Ruby on rails 默认I18n ActiveRecord验证转换

Ruby on rails 默认I18n ActiveRecord验证转换,ruby-on-rails,ruby,internationalization,Ruby On Rails,Ruby,Internationalization,如果本地化文件查找失败,我可以使用默认的I18n配置进行查找吗 作为轨道的一部分 作为此解决方案的一部分,Rails框架中的每个静态字符串(例如活动记录验证消息、时间和日期格式)都已国际化,因此Rails应用程序的本地化意味着“超越”这些默认值 因此,当我添加自己的本地化文件时,我会丢失ActiveRecord的默认rails错误文本。 e、 g.给定模型中的以下代码 validates_length_of :name, :maximum => 50 当这失败时,我得到 translat

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

作为轨道的一部分

作为此解决方案的一部分,Rails框架中的每个静态字符串(例如活动记录验证消息、时间和日期格式)都已国际化,因此Rails应用程序的本地化意味着“超越”这些默认值

因此,当我添加自己的本地化文件时,我会丢失ActiveRecord的默认rails错误文本。 e、 g.给定模型中的以下代码

validates_length_of :name, :maximum => 50
当这失败时,我得到

translation missing: en-gb, activerecord, errors, models, model_name, attributes, name, too_long
两种可能的修复方法:

  • 添加
    :消息
    到每个
    验证方法?e、 g

    validates_length_of :name, :maximum => 50, :message => "is too long (maximum is %{count} characters)"
    
    问题是有相当多的调用,添加新代码的人必须记住添加文本。 (我认为变量替换在这里不起作用!)

  • 在每个语言环境配置文件中添加默认值集,例如

    errors:
      messages:
        less_than: must be less than %{count}
    
    这里的问题是,必须将相同的文本添加到每个语言环境文件中(因为我对翻译这些文件不感兴趣),这不是什么大不了的事,但似乎很奇怪

  • 建议哪些路线(如有)?还有其他想法或建议吗

    是否没有I18n使用的默认/回退文件,即如果在区域设置文件中找不到查找


    (使用rails 2.3.5)

    我发现最好的方法是将gem包含在项目中,这样就可以在所有可用的语言环境中进行翻译。然后在应用程序的翻译文件中,只需覆盖所需的文件

    注意:您的项目需要使用gem定义的相同区域设置,因此在您的示例中,您希望使用
    en-GB
    ,而不是
    en-GB