0

所以我对不同的网址(语言环境)有不同的页面。我的问题是,当我从一个页面导航到下一个页面时,会出现默认 url,并且您会看到默认站点,而不是特定于初始 url 请求的站点。

所以基本上我最初访问

 htttp://localhost:3000/?locale=ru

对于我的应用程序的第一页,俄罗斯网站出现了。当我导航到下一页时,它会返回

 htttp://localhost:3000 

并加载此页面。我不知道为什么。有人会知道吗?

def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
end

我已经做到了。

谢谢。

4

1 回答 1

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为参数中的任何内容,或者会话中的任何内容,或者 default_locale 是什么,然后基于此设置会话和 I18n 语言环境。

于 2012-07-19T17:20:45.387 回答