设计超时消息与用户设置I18n.locale

时间:2015-07-20 17:12:45

标签: devise session-timeout rails-i18n

在我的rails应用程序中,我使用应用程序控制器中的I18n.locale以及从设备控制器继承的任何控制器(Confirmations,Password和Sessions控制器)基于子域设置before_filter )。

def set_locale
  unless Rails.env.test?
    sd = request.subdomain.to_s[-2..-1]
    I18n.locale = I18n.available_locales.map(&:to_s).include?(sd) ? sd : I18n.default_locale
  end
end

我还包括相应的设计语言文件,并且我的所有设计消息都以正确的语言显示,除非会话超时。在这些情况下,消息随机显示,有时以正确的语言显示,有时不显示。我相信它不是在查看当前的子域来设置语言,而是在上次向服务器发出请求时使用了设置的语言环境。

我认为这可能与Devise FailureApp有关,所以在lib / custom_failure.rb中继承了Devise FailureApp我也在那里设置了语言环境但是仍然没有用。

我目前正在使用黑客,我将devise.failure.timeout消息设置为空字符串,如果我在闪存通知中检测到空字符串,则设置flash[:alert] = t('devise.failure.timedout)。 Timedout是一个自定义设计消息,在我入侵之前设置为devise.failure.timeout应该是什么。

这是Devise的问题,还是我需要设置语言环境时缺少Devise控制器,我们将非常感谢任何帮助。

0 个答案:

没有答案