我希望有我的應用程序的所有URL與區域設置,例如:國際化的語言環境
http://domain.com
http://domain.com/user/new
成爲:
http://domain.com/en
http://domain.com/fr
http://domain.com/en/user/new
http://domain.com/fr/user/new
我怎麼能做到這一點,而不是在我的所有鏈接中傳遞語言環境?在你的路由
我希望有我的應用程序的所有URL與區域設置,例如:國際化的語言環境
http://domain.com
http://domain.com/user/new
成爲:
http://domain.com/en
http://domain.com/fr
http://domain.com/en/user/new
http://domain.com/fr/user/new
我怎麼能做到這一點,而不是在我的所有鏈接中傳遞語言環境?在你的路由
使用:path_prefix
選項:
map.namespace :my_locale, :path_prefix => "/:locale" do |localized|
localized.resources :users
localized.root :controller => 'your_controller', :action => 'your_action'
# other routes
end
在應用程序控制器添加:
before_filter :set_current_locale
private
def set_current_locale
current_locale = 'en' # default one
current_locale = params[:locale] if params[:locale] # or add here some checking
I18n.locale = current_locale # if it doesn't work, add .to_sym
end
創建鏈接使用標準的URL幫手。如果你設置了params[:locale]
,它會自動添加它。所以:
photos_path # /en/photos - if you are in en locale
photo_path(@photo) # /fr/photos/3 - if you are in fr locale
現在,如果你是在是沒有任何的語言環境路徑:,然後就可以生成鏈接到本地化版本添加:locale => 'en'
「www.mysite.com」:
users_path(:locale => 'en') # /en/users
你也可以使用上面的例子來改變當前的語言環境。
我不確定url helpers的名稱是什麼,所以只需鍵入rake routes
即可找到它。
用作導軌導向:
# config/routes.rb
scope "/:locale" do
resources :books
end
設置的地點:
before_filter :set_current_locale
private
def set_current_locale
I18n.locale = params[:locale]
end
有這一步 運行時,您通過這個過程步驟railscast http://railscasts.com/episodes/138 -i18n修訂的 –