簡體   English   中英

帶有語言環境的Ruby on Rails路由

[英]Ruby on Rails Routes with Locales

我正在使用本指南: http//edgeguides.rubyonrails.org/i18n.html

我想要的是什么:

/about使用en的默認語言環境轉到pages#about #out。

/en/about使用en的語言環境轉到pages#about

/es/about轉到pages#about用的語言環境es

我得到了什么:

/about轉到root_path ,其語言環境為about

/en/about使用en的語言環境轉到pages#about

/es/about轉到pages#about用的語言環境es

這是一些代碼:

# config/routes.rb
match '/:locale' => 'pages#news'

scope "(:locale)", :locale => /en|es/ do
  match '/abcd' => 'pages#abcd'
  match '/plan' => 'pages#plan'
  match '/about' => 'pages#about'
  match '/history' => 'pages#history'
  match '/projects' => 'pages#projects'
  match '/donate' => 'pages#donate'
  match '/opportunities' => 'pages#opportunities'
  match '/board' => 'pages#board'
end

root :to => "pages#news"

# app/controller/application_controller.rb
before_filter :set_locale

def set_locale
  # if params[:locale] is nil then I18n.default_locale will be used
  I18n.locale = params[:locale]
end

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

如果我正確閱讀指南,第2.5節說我應該能夠訪問/about並加載默認語言環境。

從2.5開始:

# config/routes.rb
scope "(:locale)", :locale => /en|nl/ do
  resources :books
end

使用此方法,在訪問資源(例如http:// localhost:3001 / books而不使用區域設置)時,您將不會收到路由錯誤。 當您想要在未指定默認語言環境時使用默認語言環境時,這非常有用。

routes.rb中的第一行是一個包羅萬象的路線

match '/:locale' => 'pages#news'

它應該是文件中的最后一行,就在根路徑之后。

另一種方式是:

Possible_locales = /en|es/

match '/:locale' => 'pages#news', :locale => Possible_locales

scope "(:locale)", :locale => Possible_locales do
   ...
end

無需擔心路線順序。

這篇博文實際上非常詳細地解釋了它(Rails 4):

正是我在尋找什么似乎沒有任何作用

http://dhampik.com/blog/rails-routes-tricks-with-locales

  scope "/:locale", locale: /#{I18n.available_locales.join("|")}/ do
    resources :posts    
    root to: "main#index"
  end

  root to: redirect("/#{I18n.default_locale}", status: 302), as: :redirected_root

  get "/*path", to: redirect("/#{I18n.default_locale}/%{path}", status: 302), constraints: {path: /(?!(#{I18n.available_locales.join("|")})\/).*/}, format: false

從root重定向到默認lang並執行許多其他操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM