假设我有一个方便的验证类,如:
User < ActiveRecord::Base
validates :username, :format => {/regex/}, :message => :name_format
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我可以i18n
通过在我的包含中包含以下内容来使错误消息可翻译/config/locals/en.yml
:
en:
activerecord:
errors:
models:
user:
attributes:
username:
name_format: 'has the way-wrong format, bro!'
Run Code Online (Sandbox Code Playgroud)
这很好,通常非常方便.
我的问题是:当我有从User继承的子类时会发生什么:
UserSubclassOne < User
# extra stuff
end
UserSubclassTwo < User
# extra stuff
end
...
UserSubclassEnn < User
# extra stuff
end
Run Code Online (Sandbox Code Playgroud)
现在的问题是Rails无法找到翻译user_subclass_one.attributes.username.name_format
.
它抱怨说:
translation missing:
en.activerecord.errors.models.user_subclass_one.attributes.username.name_format
Run Code Online (Sandbox Code Playgroud)
我希望Rails会在搜索字符串时查找UserSubclassOne
到的层次结构,然后注意它何时被"命中",但是(除非我做了一些可怕的错误)显然不会发生.User
en.yml
一个显而易见的解决办法是复制的数据en.yml.en.errors.models
为user
,user_subclass_one
,user_subclass_two
等,但我的Rails的常识告诉我,这是极其错误的.
任何想法,伙计们?