【发布时间】:2019-09-03 13:49:16
【问题描述】:
我刚刚注意到,activerecord.messages.restrict_dependent_destroy 的 I18n 插入了 %{record} 键,同时使其小写:
activerecord:
errors:
messages:
restrict_dependent_destroy:
one: Cannot delete record because a dependent %{record} exists
变成:
Cannot delete record because a dependent users exists
对于英语,这很好,但对于德语,名词必须以大写开头:
Kann Datensatz nicht löschen, weil abhängige benutzer existieren # Must be "Benutzer"!
如何改变这种行为?
【问题讨论】:
-
我认为唯一可能的方法是通过猴子修补I18n.interpolate_hash 来评估占位符,以便您可以执行
Kann Datensatz nicht löschen, weil abhängige #{record.capitalize} existieren。有一个较旧的问题here 可能是重复的,但我不确定它是否与最新版本的 rails 相关。 -
另一种可能的解决方案是在您的模型中用
I18n.locale == :de ? super.capitalize : super之类的东西覆盖ActiveModel::Naming#model_name。但这可能只会产生新的问题,因为它不知道上下文。
标签: ruby-on-rails internationalization rails-i18n