アプリに「言語の変更」機能を実装しようとしました。公式ガイドhttp://guides.rubyonrails.org/i18n.htmlを調べたところ、すべてが明確でした。残念ながら、1 つの問題を修正する方法がわかりません。たとえば、リンクからログイン フォームにアクセスしている場合、/en/login
フォームの送信をクリックするまでは問題ありません。
リダイレクト後に param[:locale] が期待どおりに渡されず、デフォルトのロケールを取得しています。以前に選択したロケールでリダイレクトする「Rails-way」ソウルションはありますか? 毎回パラメーターを渡すことは可能だと思いredirect_to
ますが、すべてのコントローラーで行うにはちょっと問題があります。
私のルート:
scope "(:locale)", :locale => /pl|en/ do
devise_for :users
resources :pages
get "/login" => "sessions#new"
post "/users/sign_in" => "sessions#create"
delete "/users/sign_out" => "sessions#destroy"
root :to => "pages#index"
resources :websites
end
match '/:locale' => 'pages#index'
アプリ コントローラー:
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
end