如果你按照I18N Rails Guide,所有生成的鏈接都包含locale參數(localhost/en/about,localhost/fr/about)。這是因爲我們使用的方法default_url_options
總是添加的語言環境參數:如何避免在生成的URL中添加默認的語言環境?
def default_url_options(options={})
{ :locale => I18n.locale }
end
是否有可能從生成的URL刪除區域設置參數時的語言環境是未知或默認的?
我需要什麼:
- 地點未知:
mysite/about
- 區域en:
mysite/about
(而不是localhost/en/about
) - 區域fr:
mysite/fr/about
我試圖只設置如果它不是默認的locale,但結果是生成的鏈接永遠不會包含區域設置參數...
我想這樣的一個
def default_url_options(options={})
if I18n.locale == :fr
{ :locale => I18n.locale }
else
{ :locale => nil }
end
end
全碼的東西:
ApplicationController.rb:
before_filter :set_locale
def set_locale
I18n.locale = params[:locale]
end
def default_url_options(options={})
{ :locale => I18n.locale }
end
的routes.rb
scope "(:locale)", :locale => /en|fr/ do
match 'about' => 'static_pages#about', :via => :get
match 'contact' => 'static_pages#contact', :via => :get
match '/' => 'search#index', :as => :search
end
root :to => 'search#index'
如果你不想通過URL來傳遞它,你應該考慮將其存儲在會話或餅乾。 – apneadiving 2011-03-10 20:30:45
當前的語言環境是默認設置時,我不想在URL中傳遞它。如果這不是默認設置,則可以在url中使用它。 – Tom 2011-03-11 07:31:18