Plugin para localização em Rails

Recentemente, precisamos adicionar suporte à múltiplas linguagens à uma aplicação que estamos desenvolvendo aqui na Riopro, criada em Ruby, a partir do excelente framework Ruby on Rails. Como nunca fui muito fã de re-inventar a roda, saí pela rede procurando o que já havia sido feito em matérias de localização e/ou internacionalização em Rails. Para minha surpresa, a resposta foi: muito pouco.

Ou melhor, foi feito bastante coisa, mas nada que me agradasse o suficiente. A maioria das soluções encontradas ou eram muito simples para nossas necessicadas, ou muito complexas (este último, o caso do plugin Globalize). Porém havia luz no fim do túnel multi-linguagem.

O plugin Localization parecia bastante promissor. É simples (até no nome!), inspirado no já mais do que conhecido padrão gettext (apesar de não usá-lo), e mantém seus arquivos de tradução em disco, ao contrário de várias outras alternativas que temem em usar o banco de dados para isso, o que não queríamos. Porém, o plugin é restrito à “tradução” de strings contidas nos arquivos do sistema. E no nosso caso, nossos modelos possuiam alguns campos que precisariam receber diferentes traduções também.

Assim, inspirado neste post catado pelo Oráculo, criamos um outro plugin, habilmente chamado de Model Localization, que extende o plugin Localization permitindo facilmente o uso do mesmo sistema de tradução para os modelos da sua aplicação! Porém, ter que instalar dois plugins diferentes para executar uma só tarefa nos pareceu… feio. Além disso, estávamos espalhando tarefas Rake para auxiliar a criação e manutenção dos arquivos de tradução por todas as nossa aplicações… Uma bagunça.

A solução para apaziguar as coisas foi o novíssimo plugin LocalizationRP, que nada mais é do que um amálgama dos dois plugins em um só, adicionado das belíssimas tarefas Rake mencionadas. Tudo liberado sob a licença original do plugin Localization, MIT License, para manter a liberdade fluindo.

Para usar o plugin, instale-o em sua aplicação Rails normalmente, e dê uma lida nos readme’s (aqui e aqui). Está tudo bem explicado, mas qualquer dúvida avise-nos aí nos comentários. E se encontrar algum erro ou tiver alguma melhoria a fazer, não hesite em entrar em contato! :)

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *