【发布时间】:2017-03-20 16:30:11
【问题描述】:
- 我有一个带有自定义验证的模型。我返回验证 使用 AJAX 以 JSON 格式显示错误。
- 我需要显示错误 具有正确语言环境的消息,但消息 以英语(默认)显示每个语言环境。
- 当我返回 I18n.locale 它本身而不是消息(用于故障排除),无论设置的语言环境是什么,它都会显示“en”。
- 控制器或视图中的 I18n 按预期工作,这个问题 仅在模型中出现。
- 我对语言环境所做的唯一配置是在应用程序配置中设置默认语言环境,并在应用程序控制器中的每个操作之前设置语言环境。
- 我注意到的另一件事是,当我在不提供语言环境的情况下使用 root_path 时,它使用的是默认语言环境,而不是保持当前语言环境应有的状态。我认为这些问题是相关的
编辑:
- 当我在控制器#create 中打印语言环境参数时,我得到了 nil。出于某种原因我根本没有语言环境参数。
模型文件:
validate :relevant_date_time
def relevant_date_time
errors.add(:date_error, I18n.t("validations.date_error")) unless date_time_is_relevant?
end
application_controller:
before_action :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
我是不是忘记了什么?
我查看的信息:
- http://guides.rubyonrails.org/i18n.html
- Access translation file (i18n) from inside rails model
- Rails 3 translations within models in production
- http://www.eq8.eu/blogs/10-translating-locales-for-rails-model-errors
- https://lingohub.com/frameworks-file-formats/rails5-i18n-ruby-on-rails/
- Change locale at runtime in Rails 3
【问题讨论】:
标签: ruby-on-rails ruby model-view-controller model internationalization