在开发模式下,一切正常。但不是在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
抱歉我的英语(我是法语,我使用谷歌翻译)
答案 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以创建具有区域设置的路线。