【问题标题】:Default I18n ActiveRecord validation translations默认 I18n ActiveRecord 验证翻译
【发布时间】:2013-02-25 23:20:21
【问题描述】:

如果本地化文件查找失败,我可以使用默认的 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

当这失败时,我得到 ​​p>

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 使用的默认/备用文件,即如果在语言环境文件中找不到查找?

(使用导轨 2.3.5)

【问题讨论】:

    标签: ruby-on-rails ruby internationalization


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多