【问题标题】:i18n: error message localization for particular modeli18n:特定模型的错误消息本地化
【发布时间】:2011-10-30 19:22:36
【问题描述】:

我可以为每个验证本地化一条错误消息,但是如何为特定模型创建一个错误。

普通语言环境如下所示:

en:
  mongoid:
    errors:
      messages:
        taken: "It is already taken"

但我想更改user 模型的消息:

en:
  mongoid:
    errors:
      messages:
        taken: "It is already taken"
        user:
          taken: "It is already taken. %{link_to 'Remember password', reset_password_path'}"

【问题讨论】:

    标签: ruby-on-rails ruby localization internationalization


    【解决方案1】:

    试试这个:

    en:
      mongoid:
        errors:
          messages:
            taken: "It is already taken"
          models:
            user:
              attributes:
                login:
                  taken: "It is already taken. %{link}"
    

    参考:

    ActiveRecord code comments

    PS: 本地化字符串应使用插值变量进行动态替换。

    例如: 在user对象的login字段上添加错误:

    user.errors.add(:login, :taken, :link => "foo")
    

    【讨论】:

    • 你能解释一下你是怎么知道的吗?我如何理解本地化所需的路径? PS:作为链接,我只是使用粗暴的原始 HTML
    • ActiveRecord 代码 cmets 中提到过。我认为 mangoid 可能遵循相同的约定。
    • 我尝试这样做是为了向我的密码重置表单添加链接,但不断收到此错误:missing interpolation argument in "is not valid. Click %{link} to re-send you password. confirmation" ({:model=>"User", :attribute=>"Password token", :value=>nil} given)。 Rails 3.1 有什么变化吗?
    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2012-02-07
    相关资源
    最近更新 更多