

i18nのロケール設定が突然英語（en）以外効かなくなりました。

何がキッカケかわからないのですが、  
<http://sampleurl.com/ja>  
としてサイトを開いても日本語表示されず、リンクも全部enへのものしか  
出てこないという状態となっています。

言語ファイルも  
/config/locales  
devise.en.yml devise.ja.yml en.yml ja.yml  
のように用意してあり、現在はen.ymlしか効いていない状況です。

Rubyは2.3でRailsは４．２．３です。Rubyは2.3に最近上げたばかりです。

どこをチェックすべきなのか検討つかないのですが、  
RouteファイルとApplicationControllerは以下のようになっています。  
特に以前動作していた時から変更は加えていないです。

何が問題なのでしょうか？ここをチェックせよという箇所ありますでしょうか？  
どうかよろしくお願いします

[code]

    Rails.application.routes.draw do
    
      # The priority is based upon order of creation: first created -> highest priority.
      # See how all your routes lay out with "rake routes".
    
      # You can have the root of your site routed with "root"
      # root 'welcome#index'
    
    
    devise_for :users, skip: [:session, :password, :registration], controllers: { omniauth_callbacks: "users/omniauth_callbacks" }
    
    
     # Locale Information
    scope "(:locale)", locale: /en|ja/ do
       get '/' => 'frontpage#index'
       get 'restaurant/' => 'restaurant#index'
       get 'restaurant/:id' => 'restaurant#show'
       get 'menu/' => 'menu#index'
       get 'menu/:id' => 'menu#show'
       get 'area/' => 'area#index'
       get 'area/:id' => 'area#show'
    
       resources :reviews
    
       devise_for :users, skip: [:omniauth_callbacks]
    
    end
    
[/code]

以下はApplicationControllerです。

[code]

    class ApplicationController < ActionController::Base
      # Prevent CSRF attacks by raising an exception.
      # For APIs, you may want to use :null_session instead.
      protect_from_forgery with: :exception
    
      before_action :set_locale, :configure_permitted_parameters, if: :devise_controller?
    
    
      def set_locale
        I18n.locale = params[:locale] || I18n.default_locale
      end
    
      def default_url_options(options = {})
        { locale: I18n.locale }.merge options
      end
    
      private
      def configure_permitted_parameters
      devise_parameter_sanitizer.for(:sign_up)<<:name
      devise_parameter_sanitizer.for(:account_update) << :name
      end
    
[/code]


CC BY-SA 3.0
2016-07-15T01:13:17.947
27637
2016-07-16T03:07:13.697
4784
question
ruby-on-rails ruby i18n
i18nのロケールが急に効かなくなった


すみません。自己レスです。  
ApplicationControllerに

[code]

    before_action :set_locale, :configure_permitted_parameters, if: :devise_controller?
    
[/code]

と書いていたのが問題でした。i18nとdeviseの設定を一緒に書いたことが問題で

[code]

    before_action :set_locale
    
[/code]

だけに直したら正しく動作しました。


CC BY-SA 3.0
2016-07-16T03:07:13.697
27660
2016-07-16T03:07:13.697
4784
27637
answer