A gem rails-i18n foi incorporada ao Rails desde a versão 2.2 do framework e já oferece ótimos recursos para tradução e localização. Com poucos arquivos e linhas modificados é possível traduzir models e seus respectivos formulários, ajustar moedas e datas para formatos diferentes do inglês americano e até encontrar traduções prontas para gems populares como o Devise.
De toda forma, durante a construção, evolução e, especialmente, manutenção de um projeto que utiliza do i18n, você vai encontrar pequenos problemas que podem tomar um tempo razoável. Não existe um mecanismo para prever a ausência de traduções, assim como traduções não utilizadas também podem passar despercebidas.
Por estes motivos, navegando pela categoria i18n do RubyToolbox você encontra algumas gems que oferecem funções extras para a Rails i18n. Dentre estas gems destacamos a i18n tasks.
Para instalar a gem basta adicionar em seu Gemfile:
gem 'i18n-tasks', '~> 0.9.31'
E em seguida adicionar o arquivo i18n-tasks.yml
em sua pasta config
, utilizando como referência o arquivo disponibilizado na documentação da gem. Neste arquivo yaml é preciso fazer alguns ajustes. Além de substituir o base_locale
para “pt-BR”
(ou para outro idioma que você esteja utilizando), é preciso ficar atento ao atributo read
dentro de data
. Por padrão a gem vai procurar somente por arquivos que terminem com .pt-BR.yml
, o que pode ser um problema de acordo com seu projeto. Uma sugestão, caso você utilize somente um idioma é alterar este atributo para: config/locales/**/*.yml
.
Com isto você já pode executar os comandos oferecidos pela gem. Em destaque:
bundle exec i18n-tasks health
Que vai produzir um relatório completo com detalhes dos seus arquivos de tradução e da ausência de traduções. Existem também comandos para adicionar traduções ausentes bundle exec i18n-tasks add-missing
(inclusive com a possibilidade de uso do Google Translate) e bundle exec i18n remove-unused
para remover chaves não utilizadas. Mas recomendamos que você os utilize somente após fazer testes e garantir que está confortável com a gem.