2010-11-27 6 views
0

authlogicの認証をdevineに変換しているアプリを使っています。全体的に見るとこれは驚くほど単純ですが、簡単に解決できない問題が1つあります。デベロップとレールを使用しているときにユーザーごとにロケールを設定する3

アプリでは、ユーザーは自分のロケールを選択することができます。その後、ログインするたびに、選択した言語でアプリが表示されます。これまでは、私のUserSessionsコントローラのcreateメソッドでロケールを設定するだけでした。

Deviseでは、すべてのコントローラが自動的にセットアップされます。これは素晴らしい方法です。私はDeviseControllerを拡張し、これを好きなようにするカスタムコントローラを作成することができることを知っていますが、私が理解していることから、それはすべてのビューを作成する必要があることを意味します。余分なコード行を1つだけ実行するだけです。

成功した認証で実行されるコードを指定する簡単な方法はありますか?

答えて

2

私はちょうどに望んでいたとして、私は私がhere

探していた解決策を見つけましたログイン時にユーザーのロケールを設定しました。必要なのは、次のメソッドを自分のApplicationControllerに追加することでした。

def after_sign_in_path_for(resource_or_scope) 

    if resource_or_scope.is_a?(User) && resource_or_scope.locale != I18n.locale 
    I18n.locale = resource_or_scope.locale 
    end 

    super 
end 
0

rails generate devise:viewsを実行しましたか?これにより、Deviseビューファイルが出力され、新しい拡張Deviseコントローラ名と一致する場所にそれらのファイルを移動できるはずです。

Deviseはロケール対応です。つまり、ビューは自動的に言語翻訳を読み込む必要があります。

あなたがサポートしたい言語翻訳のために、レールアプリケーションのルート "locales"フォルダに "devise。[:locale] .yml"ファイルを提供するだけです。

考案のwikiはあなたにいくつかの作業を保存するために提供されているロケールの翻訳の束を持っています

https://github.com/plataformatec/devise/wiki/I18n

+0

お返事ありがとうございます。私の質問を振り返ってみると、私はそれを特にうまく表現したとは思わないが、意見を生成することは、私が避けようとしていた問題であった。私はthoのために探していた解決策を見つけて、他の誰にとっても役に立つようにここに掲載しました – Addsy