我希望有我的应用程序的所有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修订的 –