RubyOnRails - 刷新页面时不保留所选语言

时间:2015-04-26 09:12:55

标签: ruby-on-rails caching heroku rails-i18n

在开发模式下,一切正常。但不是在heroku的生产模式。

当我选择一个区域设置并刷新页面时,它默认显示语言的一半时间和我选择的语言。我不知道该怎么办。我试图用Rails.cache.clear命令清除缓存,但它不起作用。我想问题出在缓存系统上。我是铁轨上的红宝石新手。有人会知道如何解决这个问题吗?

要了解我的问题,您可以访问我的网站,选择法语并多次刷新页面。一旦页面是法语。另一次用英语。

https://releaseit.herokuapp.com/

我的application_controller:

  before_action :set_locale
  def set_locale
    if params[:locale].in? %W(en fr)
      I18n.locale = params[:locale]
    end
  end

配置文件与此处相同:https://github.com/starterkits/rails4-starterkit/tree/master/config

抱歉我的英语(我是法语,我使用谷歌翻译)

1 个答案:

答案 0 :(得分:1)

我不知道(或看到)您在URL中传递区域设置的位置。据我所知,为了使用params[:locale],您的网址应如下所示:

https://releaseit.herokuapp.com/fr/something
https://releaseit.herokuapp.com/en/something
https://releaseit.herokuapp.com/en
https://releaseit.herokuapp.com?locale=fr

http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-url-params

还有更多尝试我的set_locale方法:

  def set_locale    
    if params[:locale]
      I18n.locale = params[:locale] || I18n.default_locale
    else
      I18n.locale = http_accept_language.compatible_language_from(
        I18n.available_locales
      )
    end
  end
应该在每次页面重新加载时执行

set_locale方法,以便每次都设置正确的区域设置。

它需要http_accept_language来自https://github.com/iain/http_accept_language

的宝石

同时查看route_translator gem以创建具有区域设置的路线。