I'm trying to setup a routing system for my rails app that allows for an optional route (/:locale) to be allowed to the base of the website.
So more or less:
/en/home/ would goto the same page as /home/
/en/people/ -> /people/
The only issue I'm having is setting this up in the routes config.
Use scope '(:locale)' do
...end
. You can see an example from Agile Web Development with Rails here:
http://intertwingly.net/projects/AWDwR4/checkdepot-30/section-15.1.html
What I usually do is, in config/routes.rb
:
MyApp::Application.routes.draw do
scope "(:locale)", :locale => /en|fr/ do
#here only two languages are accepted: english and french
end
end
And in my ApplicationController
:
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || "en"
end