所以我对不同的网址(区域设置)有不同的页面。我的问题是当我从一个页面导航到下一个页面时,默认网址会出现,您会看到默认网站不是特定于初始网址请求的网站。
所以基本上我最初访问
htttp://localhost:3000/?locale=ru
在我的应用程序的第一页上,俄罗斯网站出现了。当我导航到下一页时,它会回到
htttp://localhost:3000
并加载此页面。我不知道为什么。有人知道吗?
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
我做到了这一点。
感谢。
答案 0 :(得分:2)
您需要在会话中保留区域设置;否则信息将在请求之间丢失,就像您经历过的那样。做这样的事情:
class ApplicationController < ActionController::Base
before_filter :set_locale
private
def set_locale
@locale ||= params[:locale] || session[:locale] || I18n.default_locale
I18n.locale = session[:locale] = @locale
end
end
这会将@locale
设置为params中的任何内容,或者会话中的任何内容,或者default_locale是什么,然后根据它设置会话和I18n语言环境。