Tag Archives: rotas

[Tutorial] Traduzir rotas do Ruby on Rails com o plugin translate_routes

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!