2013年11月11日月曜日

RailsのI18nの設定

http://localhost:3000/ja/admin/users
例えば、こんな感じでRESTFULなURLでロケール情報を渡したい。

controllerを修正します。
default_url_optionsの設定は、全てのリンクに自動的にロケールを追加するためです。
 vi app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  protect_from_forgery
  before_filter :detect_locale

  def default_url_options(options = {}) 
    { :locale => I18n.locale }
  end 

private
  def detect_locale
    I18n.locale = params[:locale]
  end 
end

ルーティングも変更します。
  vi config/routes.rb

今までのroutingをscopeで囲みます。
scope "/:locale" do
  devise_for :users
  namespace :admin do
    resources :users
  end
end

match '/:locale' => 'home#index'
root :to => 'home#index'
切り替えるスイッチはこんな感じで。
  <% if params[:locale] == "ja" %>
    <%= link_to(t("general.en"), root_path(:locale => "en")) %>
  <% elsif params[:locale] == "en" %>
    <%= link_to(t("general.ja"), root_path(:locale => "ja")) %>
  <% end %>

0 件のコメント: