Ruby on Rails i18n activerecord自定义消息

时间:2017-08-19 12:28:38

标签: ruby-on-rails ruby activerecord rails-i18n

我在rails应用程序上有一个ruby。我的申请中有西班牙语和英语支持。但是,在西班牙语模式下,我得到了一个缺少翻译的例外。

我有以下型号:

class Company < ApplicationRecord
    validates :name,  length: { in: 5..15,  message: :bad_name }
end

en.yml

en:
  activerecord:
    errors:
      models:
        company:
          attributes:
            name:
              bad_name: 'message in english'

sp.yml

sp:
  activerecord:
    errors:
      models:
        company:
          attributes:
            name:
              bad_name: 'message in spanish'

以防万一我用英语打开应用程序时出错。我收到了“英文消息”的消息,这没关系。

另一方面,当我用西班牙语打开并测试它时,我收到以下错误。

ActiveRecord::RecordInvalid:
   translation missing: sp.activerecord.errors.messages.record_invalid

我看不到我错过的东西,

任何建议,

感谢。

2 个答案:

答案 0 :(得分:0)

其他翻译是否适用于此文件? 尝试将sp.yml重命名为es.yml,因为这是“espanol”的iso代码。

还尝试在spansih文件中包含activerecord.errors.messages.record_invalid的消息。这会显示吗?

答案 1 :(得分:0)

实际上,要在您的语言环境中使用西班牙语,您需要设置I18n.locale = :es。我认为你混淆了你的语言环境。正确的语言文件应命名为es.yml,如下所示:

es:
  activerecord:
    errors:
      models:
        company:
          attributes:
            name:
              bad_name: 'message in spanish'