我在使用这个指南:http://edgeguides.rubyonrails.org/i18n.html
我想要的是:
-
但实际上得到的是:
-
以下是一些代码:
采用这种方法,在访问如 http://localhost:3001/books 的资源时,即使没有指定语言环境,也不会出现路由错误。当您希望在未指定语言环境时使用默认语言环境时,此方法非常有用。
-
/about
转到默认语言为 en
的 pages#about
。
- /en/about
转到语言为 en
的 pages#about
。
- /es/about
转到语言为 es
的 pages#about
。但实际上得到的是:
-
/about
转到 root_path
,语言为 about
。
- /en/about
转到语言为 en
的 pages#about
。
- /es/about
转到语言为 es
的 pages#about
。以下是一些代码:
# 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 的资源时,即使没有指定语言环境,也不会出现路由错误。当您希望在未指定语言环境时使用默认语言环境时,此方法非常有用。