繁体   English   中英

默认的I18n ActiveRecord验证翻译

[英]Default I18n ActiveRecord validation translations

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

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

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

因此,当我添加自己的本地化文件时,将丢失ActiveRecord的默认rails错误文本。 例如在模型中给出以下代码

validates_length_of :name, :maximum => 50

当失败时,我得到

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

两种可能的修复:

  1. 在每个validates_*方法中添加:message吗? 例如

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

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

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

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

    这里的问题是必须将相同的文本添加到每个语言环境文件中(因为我对翻译这些语言不感兴趣),这没什么大不了的,但是看起来很奇怪。

建议使用哪条路线? 还有其他想法或建议吗?

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

(使用滑轨2.3.5)

我发现这里最好的是将rails-i18n gem包含在您的项目中,以便在所有可用的语言环境中进行翻译。 然后在应用程序的翻译文件中,覆盖所需的文件。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM