强制i18n语言环境中的Rails 5中的activerecord错误

时间:2017-12-05 17:02:34

标签: ruby-on-rails activerecord internationalization

我有一个rails 5应用程序,在开发中,我正在使用i18n,用户可以在URL中使用application_controller

中的以下代码设置区域设置
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :set_locale

  private

  def set_locale
    I18n.locale = params[:locale] || session[:locale] || I18n.default_locale
    session[:locale] = I18n.locale
  end
end

在某些情况下,我在日志中遇到错误 translation missing: fr.activerecord.errors.messages.record_invalid 这个特定的i18n转换实际上会给出错误,但由于找不到语言环境,我看不到错误。

我希望避免导入activerecord错误的语言环境(最终),因为在某一时刻,我会在我不理解的语言环境中为用户处理错误。

如何强制执行错误(或其他特定的i18n密钥)以使用i18n的:en区域设置?

注意:目前,i18n如果未命中则不会恢复为默认语言环境,我希望保留此行为,至少对于视图所服务的每个翻译都是如此。

编辑:示例日志

Started POST "/projects" for 127.0.0.1 at 2017-11-17 14:35:39 +0100
Processing by ProjectsController#create as HTML
  [...]
Completed 422 Unprocessable Entity in 73ms (ActiveRecord: 15.2ms)

ActiveRecord::RecordInvalid (translation missing: fr.activerecord.errors.messages.record_invalid):

app/controllers/projects_controller.rb:45:in `block in create'
app/controllers/projects_controller.rb:44:in `create'
Started GET "/projects" for 127.0.0.1 at 2017-11-17 14:36:02 +0100

0 个答案:

没有答案