Internacionalização no Rails 3 | astux
Trabalhar com i18n (internacionalização) no Ruby on Rails já era, em suas versões anteriores, um prazer – e na versão 3.1 houveram algumas adições interessantes neste aspecto do framework. A documentação oficial é ótima, porém deixa a desejar em alguns casos que acabam sendo bem frequentes.
Neste post irei tentar ajudar com alguns tópicos não-triviais de uma aplicação com i18n em Ruby on Rails, baseado na experiência que tive e estou tendo no desenvolvimento da nossa querida plataforma open source de gestão acadêmica, a Uni.
Para melhor entedimento deste artigo, sugiro primeiro a seguinte leitura:
Ruby on Rails Guides de i18n
Documentação Oficial do Rails sobre Responders
Traduzindo os Models
As traduções dos Models, assim como as outras, devem estar em um ou mais arquivos de tradução a serem carregados pelo Rails, conforme é muito bem descrito pela documentação oficial. A sintaxe para traduzir models é a seguinte:
course: "Curso"
Traduzindo as Mensagens de Sucesso/Erro
Outro uso bem comum de i18n é para a tradução das mensagens de erro/sucesso dos controllers. Com o advento do Rails 3.1, isso fica muito mais simples. Primeiro, precisamos da gem "responders". No GemFile, acrescente:
Isso irá deixar sua aplicação pronta para tradução das mensagens de status dos controllers. Repare no arquivo responders.en.yml, criado na pasta config/locales:
Para que isto funcione, você precisa usar o método respond_with em suas actions. Por exemplo:
@course = Course.new params[:course]
Pronto, agora o Responder será chamado e ele irá utilizar o arquivo de tradução para o i18n. Para definir mensagens específicas para uma determinada action, adicione ao arquivo de tradução do responders as traduções no seguinte formato:
notice: "This will be this action's notice"
alert: "This will be this action's alert"
Bom, é (só) isso. Deixando as mensagens de status para o arquivo de tradução, acho que os controllers ficam mais limpos e, realmente, cuidando apenas do tratamento de requests. Palmas para o pessoal da 37signals e os desenvolvedores do Ruby on Rails, que continuam a melhorar cada vez mais esse já ótimo framework.