Neste tutorial vou ensinar como traduzir rotas no Ruby on Rails, usando um plugin chamado translate_routes.
No Rails, uma boa prática é usar o inglês para nomear controllers, models, views, layouts, helpers, etc. O problema é que às vezes não fica legal deixar as URLs em inglês, principalmente quando você vai desenvolver um site estático (um site institucional por exemplo), o seu cliente pode não gostar.
É aí que entra o plugin “translate_routes”. Nós traduziremos somente as URLs públicas, porém todo código backend não será afetado. Ah! Um detalhe: este plugin funciona bem mesmo usando RESTful e Named routes.
Atenção: os comandos de terminal que são usados neste tutorial foram feitos no Linux, embora pouca coisa mude no Mac ou no Windows.
Então, mãos à obra:
1. Crie um projeto novo:
rails translate_routes_test
2. Instale o plugin:
cd translate_routes_test script/plugin install git://github.com/raul/translate_routes.git
3. Vou criar um scaffold client pra demonstrar como fica a tradução, usando RESTful:
script/generate scaffold client name:string phone:integer
4. Não esqueça da migração do banco:
rake db:migrate
5. Crie um arquivo chamado i18n-routes.yml no diretório /config/locales/:
touch config/locales/i18n-routes.yml
6. É aqui onde você realmente vai traduzir as rotas. Edite o arquivo i18n-routes.yml, para que ele fiquei assim:
pt-BR: clients: "clientes" new: "novo" edit: "editar" show: "detalhes"
7. Adicione a seguinte linha no final do arquivo ./config/routes.rb (depois do end):
ActionController::Routing::Translator.i18n('pt-BR')
8. Retire o comentário da seguinte linha do seu arquivo .config/environment.rb e altere para pt-BR:
config.i18n.default_locale = 'pt-BR'
9. Pra verificas as rotas, rode o comando rake routes. A saída será:
$ rake routes
(in /home/caton/Desktop/translate_routes_test)
clients_pt_br GET /clientes(.:format)
POST /clientes(.:format)
new_client_pt_br GET /clientes/novo(.:format)
edit_client_pt_br GET /clientes/:id/editar(.:format)
client_pt_br GET /clientes/:id(.:format)
PUT /clientes/:id(.:format)
DELETE /clientes/:id(.:format)
/:controller/:action/:id
/:controller/:action/:id(.:format)
10. Rode o servidor e entre no link: http://localhost:3000/clientes/novo pra testar.
Pronto! Suas rotas estão traduzidas.
Um detalhe importante: a versão atual do plugin só funciona com Rails 2.3.x. Se você usa outra versão, consulte o wiki.
Qualquer dúvidas, sugestões ou críticas, deixem aí nos comentários!