2016-08-21 7 views
1

私はレールweb-appがFRとNLの2言語で利用可能でなければならないのでi18n gemを使用しています。URLにロケールを常に表示する4 app

私はFRをデフォルトロケールにしました。

私の目標は、どのような状況でも、ロケール(つまり、/ fr /または/ nl /)が常にURLに表示されるようにすることです。

これはlocale = nlの場合ですが、locale = frがデフォルトのロケールである場合はそうではありません。ここで

ユーザーストーリーを持つ例:

  1. ユーザーがウェブサイトに到着し、彼/彼女の言語を選択することがありますのは、「FR」(「FR」でデフォルトのロケールを)言わせ
  2. ユーザーは、ユーザーがページ「ニュースフィード」ページおよび彼/彼女のURLをご覧ください。サイト
  3. を閲覧することができますトン、この例ではhttp://localhost:3000/newsfeed

です彼はURLされている必要がありますhttp://localhost:3000/fr/newsfeed

(URLで/FR/で)これらは私のルートです:私のapplication.rbで

scope '(:locale)', constraints: { locale: /nl|fr/ } do 

    resources :articles, :path => 'newsfeed', only: [:index, :edit, :destroy, :update, :new, :create] 

    root to: 'languages#select' 

    get '*path' => redirect('/') 
end 

私は

config.i18n.default_locale = :fr 
config.i18n.available_locales = [:fr, :nl] 

を持っていますユーザーが言語を選択する必要があるウェルカムページでは、私はこれを持っています

210を要約すると、ロケールのURLは= NLは常に* http://localhost:3000/nl/newsfeedが表示されますが、デフォルトのロケールFRのために、このケースではありませんし、私はそれを修正する必要があります。

答えて

0

url_forメソッドをオーバーライドする必要があると思います。

module ActionController::Base 
    def url_for(options) 
    options.merge! {:locale => "correct locale"} 
    super 
    end 
end 

このメソッドは、ほかのRailsクラスでも定義されています(ビューやルーティングなど)。したがって、それらのすべてを無効にする必要があります。

関連する問題