我使用本指南:http://edgeguides.rubyonrails.org/i18n.htmlRuby on Rails的路线与区域设置
我想什么:
去pages#about
与en
的违约语言环境。
/en/about
转到pages#about
,区域设置为en
。
/es/about
转到pages#about
,区域设置为es
。
我得到什么:
去root_path
与about
的语言环境。
/en/about
转到pages#about
,区域设置为en
。
/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节说我应该能够访问,并把它加载默认的语言环境。
从2.5:
# config/routes.rb
scope "(:locale)", :locale => /en|nl/ do
resources :books
end
通过这种方法访问您的 资源,如 http://localhost:3001/books时没有 区域,那么你不会得到一个 路由错误。当 想要使用缺省语言环境时,此选项非常有用,如果未指定 。
哦!现在我明白了。谢谢!这是完美的。 – tinifni 2010-12-20 13:06:42