Diego Roriz - diegororiz - Rails, Tecnologia e Desenvolvimento
Internacionalização em Rails – I18n
Internacionalização em Rails – I18n
Hoje irei apresentar um tutorial prático sobre a gem I18n, responsável pela internacionalização e localização da aplicação rails. Este post é dedicado principalmente aos leitores que pediram o tema via Twitter e aos meus alunos que cursaram o Primeiro Curso de Ruby On Rails de Goiânia e ficaram curiosos quando eu expliquei o que esta gem era capaz de fazer! Mas o que é internacionalização?
Citando Rails Guide, o processo de “internacionalização” normalmente significa abstrair da aplicação todas as strings e outras partes que dependem das particularidades de cada local e língua, como o formato de datas ou moeda. O processo de “localização” significa providenciar traduções e formatação adequadas à cada uma dessa partes.
Para este post, irei considerar que vocês já possuem a aplicação pronta, no caso, o cadastro de clientes criado em um post anterior. Se preferir, baixe a aplicação aqui. Porém, sugiro aos iniciantes que sigam o post para criarem sua própria aplicação e irem se familiarizando com o framework rails.
Baixada a aplicação, descompacte e entre no diretório da aplicação ‘primeiro_projeto’ via terminal. Dentro do diretório da aplicação, será necessário criar a nossa base de dados da aplicação e rodar as migrates para gerar as tabelas. Para isso, serão utilizados os comandos rake db:create e rake db:migrate, respectivamente. Executados os comandos a saída que você deverá ver é:

Output da criação e aplicação das migrates
Com a nossa base de dados pronta, vamos levantar o nosso servidor web através do comando ruby script/server e acessar a nossa aplicação através da url http://localhost:3000. Ao criar um novo cliente e salvá-lo sem informar nenhum dos campos, receberemos uma tela de erro:

Erros de validação na view
Como vocês puderam observar, as mensagens de erro são apresentadas ao usuário na língua inglesa. Este tutorial prático irá ensinar como permitir que sua aplicação apresente as mesmas em português. O primeiro passo é fazer o download do arquivo responsável pelos textos e mensagens da aplicação no site da gem I18n (baixe aqui o arquivo pt-BR).
Feito o download do arquivo pt-BR.yml, o mesmo deve ser colocado dentro da pasta config/locales/. Se vocês abrirem o arquivo, verão que ele possuim uma estrutura específica onde é possível definir os níveis de variáveis através da identação de blocos e a tradução em si através das atribuições. Essa estrutura será explicada posteriormente em conjunto com o post mais avançado sobre o I18n. Com o arquivo no diretório correto, o processo de internacionalizar a sua aplicação já está 50% completo!
Agora, vamos alterar o arquivo enviroment.rb situado no diretório config. Caso você não tenha alterado nada neste arquivo, na linha 40, você verá
# config.i18n.default_locale = :de
Descomente essa linha removendo o símbolo # do começo e altere o seu default_locale para ‘pt-BR’ desta forma (entre aspas). Após fazer isto, pare o seu servidor web com o comando CTRL+C e levante-o novamente através do comando ruby script/server. Acesse novamente a view de cadastro de clientes e clique em salvar sem informar nada. Pronto! Como vocês podem ver, as mensagens de erro da sua aplicação já estão traduzidas para o nosso português! Simples assim!
Segue aqui o código da aplicação já pronta! Caso você tenha gostado, ou tenha alguma dúvida ou sugestão para o post, comente!
Gostou do post e deseja sugerir algum tema? Utilize o formulário de sugestões ou faça a sugestão via twitter. Ela será muito bem vinda! Obrigado mais uma vez!
Diego Roriz
Leia também:


Boa tarde Diego,
Mto bom este post, claro, objetivo e direto ao ponto! Parabéns pelo blog!
Aguardo mais posts deste!rss..
Fui mostrar isso pra um cara que programa em java… ele pirou rsrsr, valeu diego
Instalei a gem brazilian-rails mas não funcionou muito bem. Seu post salvou minha noite. Estou desenvolvendo minha primeira aplicação real em Rails e gastei algumas horas até achar você. Parabéns pelo post.
Olá Felipe!
Fico feliz que o tutorial tenha ajudado!
Até a próxima!
Diego Roriz