3

为以下情况寻找如何在 I18n yml 文件中写入翻译记录的解决方案:

class SomeClass < ActiveRecord::Base
  validate: stock_avail

  def stock_avail
    # errors is an instance of ActiveModel::Errors
    errors.add(:quantity, I18n.t('validation.stock_exceeded'))
    # how to write a translation for :quantity part ?
  end
end

errors.add记录在这里

我如何以及在哪里可以:quantity为错误消息的属性编写翻译?

谢谢。

4

2 回答 2

3

如果是关于模型的属性名称,您可以将翻译添加到config/locales/models/model_name/lang.yml.

例如, 的内容config/locales/models/product/nl.yml可能类似于:

nl:
  activerecord:
    models:
      product: Product
    attributes:
      product:
        name: Naam
        quantity: Aantal

现在我想知道自定义验证消息是否也可以存储在这个文件中。

此外,将其添加到config/application.rb

# Load locale files in nested dictionaries
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
于 2013-10-02T14:12:06.950 回答
0

这是@zwippie 的答案的插件......

现在我想知道自定义验证消息是否也可以存储在这个文件中。

是的,这是在errors/下面messages

nl:
  activerecord:
    models:
      product: Product
  attributes:
    product:
      name: Naam
      quantity: Aantal
  errors:
    messages:
      stock_exceeded: voorraad overschreden # HERE
      

所以error.add会是:

errors.add(:quantity, :stock_exceeded)
于 2021-06-30T19:56:25.600 回答