Ruby on rails Rails i18n gem从非英语语言环境的错误消息中排除属性名称

Ruby on rails Rails i18n gem从非英语语言环境的错误消息中排除属性名称,ruby-on-rails,ruby,rails-i18n,Ruby On Rails,Ruby,Rails I18n,我正在使用的Rails应用程序使用日语区域设置。 为了对错误消息使用默认的翻译,我安装了gem,但是我很难让它显示完整的错误消息 # Original format format: "%{attribute} %{message}" # Configured format format: "%{message}" #application.rb中的语言环境配置 config.i18n.default_locale=:ja 在安装这个gem之前,验证错误的错误消息告诉我,正如预期的那样,翻译

我正在使用的Rails应用程序使用日语区域设置。 为了对错误消息使用默认的翻译,我安装了gem,但是我很难让它显示完整的错误消息

# Original format
format: "%{attribute} %{message}"

# Configured format
format: "%{message}"
#application.rb中的语言环境配置
config.i18n.default_locale=:ja
在安装这个gem之前,验证错误的错误消息告诉我,正如预期的那样,翻译丢失了

*** ActiveRecord::RecordInvalid Exception: translation missing: ja.activerecord.errors.messages.record_invalid
但是,即使在安装gem之后,相同消息的日文翻译也不包括验证失败的属性。最后冒号之后的空格应该是属性名。

*** ActiveRecord::RecordInvalid Exception: バリデーションに失敗しました: を入力してください
举例来说,这就是当语言环境设置为
:en
时错误消息的样子。在日语中,就好像缺少列名
名字
,因此错误消息读取的
不能为空

*** ActiveRecord::RecordInvalid Exception: Validation failed: First name can't be blank
我错过了什么?我需要一些额外的配置吗? 谢谢你事先的帮助



注意:我使用rails 6.0.0。

正如@demir所怀疑的那样,这是因为修改了错误消息格式的配置。这导致错误消息中省略了
属性
部分

# Original format
format: "%{attribute} %{message}"

# Configured format
format: "%{message}"

gem只提供默认错误消息的翻译。所有其他文本,包括某些属性的名称,都不会被该gem翻译。您需要自己为所有模型和属性提供翻译。你这么做了吗?没有,我的印象是gem会用英语插入属性名。这就是使用相同i18n gem的不同Rails项目中的行为-相同的错误消息如下所示:
バリデーションに失敗しました: 名字を入力してください。然后您可能将翻译定义为回退到英语,而不是在该项目中引发错误。我建议您阅读有关Dif的内容,如果您检查config/locales/ja.yml?您还需要重新启动服务器。@demir您说得对!这是因为从事该项目的其他人将错误的格式定义为:
%{message}
。因此,省略了错误的
属性
部分。