我有一个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