0

したがって、異なる URL (ロケール) に対して異なるページがあります。私の問題は、あるページから次のページに移動すると、デフォルトの 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、params にあるもの、セッションにあるもの、または default_locale に設定され、それに基づいてセッションと I18n ロケールの両方を設定します。

于 2012-07-19T17:20:45.387 に答える