Archive for January, 2008:
Internacionalizando uma aplicação rails
Internacionalizar uma aplicação exige um planejamento dada as diversas opções de ferramentas existens. Em Ruby on Rails, onde a idéia era não ter suporte oficial ao i18n(internacionalização) temos algumas ferramentas para tornar nossa aplicação multi-língua. Neste contexto, existe uma ferramenta chamada
gettext, que segundo definição da wikipedia:
é uma biblioteca do Projeto GNU que faz a internacionalização de
softwares, ou seja, a escrita de multiplas línguas em softwares…
Este tutorial tenta esclarecer o desenvolvedor ruby on rails que tem
dificuldade de internacionalizar sua aplicação utilizando o gettext.
Inicialmente vamos instalar a gem gettext em nosso sistema.
sudo gem install
gettext
Seleciona a versão de acordo com o seu sistema. (Este tutorial foi realizado
usando Ubuntu Linux, caso esteja no windows, basta retirar o comando
sudo).
Para o correto
funcionamento do gettext e deste tutorial devemos nos certificar que
todas strings e conexões ao banco de dados estão sendo
realizadas usando encoding UTF-8.
Depois de nos certificar de usarmos o encoding adequado agora vamos preparar a aplicação para
internacionalização de fato e para isso vamos adicionar algumas tarefas
no Rakefile da aplicação. Opcionalmente você pode adicionar estas
tarefas dentro da sua biblioteca de tarefas em lib/tasks. Abra seu
Rakefile e vamos adicionar as seguintes tarefas adequando as strings
myapp de acordo com o nome de sua aplicação:
desc "Create mo-files"task :makemo do
require 'gettext/utils' GetText.create_mofiles(true, "po", "locale") end
desc "Update pot/po files to match newversion." task :updatepo do TEXT_DOMAIN = "myapp" APP_VERSION = "myapp1.1.0" GetText.update_pofiles(TEXT_DOMAIN, Dir.glob("{app,lib}/**/*.{rb,rhtml}"), APP_VERSION) end
O código acima é encontrado nos manuais disponíveis dentro do site Ruby on Rails . Note que a tarefa :updatepo é a responsável por varrer a sua aplicação em busca de arquivos *.rb e *.rhtml.
O próximo passo é definir a hierarquia do gettext em nosso projeto. Vamos criar uma pasta na rails da aplicação chamada “po” e dentro dela vamos criar a seguinte hierarquia:
po
| pt_BR
| en_US
| en_UK
Para cada língua que desejamos ter, devemos criar um diretório cujo nome é seu código correspondente. Para saber mais sobre que códigos usar sugiro ler este artigo do W3C.
Agora vamos informar nosso ApplicationController que vamos internacionalizar toda nossa aplicação. Abra seu ApplicationController e vamos adicionar algumas duas linhas nele. Ressalto que altere a string myapp de acordo com o nome de sua aplicação definido anteriormente.
require 'gettext/rails' classApplicationController < ActionController::Base init_gettext"myapp" end
De agora em diante devemos adotar o seguinte método toda vez que formos inserir texto que a ser traduzido em nossa
aplicação:
< %=_("Este texto deve ser traduzido.")%>
Para padronizar o trabalho de tradução de forma a facilitar a cooperação internacional em projetos de software livre convenciona-se que se utilize o inglês como língua base de nossas strings de texto no projeto.
Lembram das tarefas que criamos em nosso Rakefile? Agora vamos rodar a tarefa :updatepo.
Abra o terminal com a raiz em sua aplicação e use o comando:
rake updatepo
Após a varredura em busca de strings a serem traduzidas, um arquivo de nome myapp.pot será
criado dentro do diretório po. Este arquivo é um template que vai ser utilizado para todas linguagens que vamos traduzir.
Abra ele com um editor de arquivos po. Eu uso em meu Ubuntu o POEdit facilmente instalado através do gerenciador de pacotes.
Com o arquivo de template aberto em nosso editor de arquivos po, vamos salvar o arquivo como myapp.po dentro do diretório po na pasta cujo nome é o código da tradução alvo. Por exemplo, se estivermos traduzindo para o inglês do estados unidos, devemos salvar dentro da pasta en_US.
Traduzidas as strings, vamos agora “compilar” a tradução para ser usada em nossa aplicação. Com o seguinte comando em seu terminal:
rake makemo
Um novo diretório chamado locale será criado na raiz de sua aplicação contendo os arquivos compilados de
tradução.
Pronto! Sua aplicação está internacionalizada!
Para ver sua aplicação na língua nativa, acesse sua aplicação normalmente pelo browser:
http://localhost:XXXX/myapp/
onde XXXX é o número da porta de sua aplicação.
Para vermos nas demais línguas que traduzimos basta alterar o código de locale:
http://localhost:XXXX/myapp?lang=en_US
Caso tenha utilizado outros códigos, teste-os também!
Espero que seja útil.
Obrigado.
Experiências
No tempo de nossos pais, bastávamos ter o ensino médio e já poderíamos ir atrás de empregos, e em geral, conseguiam-se bons empregos. O mundo mudou, e foram criados métodos de avaliação mais aprofundados dos candidatos a vagas de emprego. Hoje, temos que passar, em média, por 3 fases em qualquer processo de seleção para enfim sermos aceitos. Não basta ter no currículo um curso superior. As empresas também querem saber que línguas você domina, que cursos e certificações realizou, que resultados alcançou no passado, querem saber sua capacidade de abstração, sua adaptibilidade, enfim, uma lista imensa de critérios de avaliação.
Dentre destes critérios utilizados tenho comentários pessoais sobre 3 deles …
Saber um idioma além do idioma de Eça de Queiroz eu considero uma prioridade até mesmo para quem pensa em nunca sair do país para trabalhar. O inglês é praticamente pré-requisito mesmo em pequenas empresas. Por mais que não venhamos a fazer uso intenso do idioma durante o trabalho, o conhecimento de inglês técnico e de leitura é encarado como essencial, visto que em geral, o mundo da TI tem o inglês como seu principal meio de comunicação.
Um dos critérios de avaliação que mais me irritam são as certificações. Talvez por eu ter uma educação baseada em abstração e teoria, eu acredito que exigir uma certificação, é exigir um certificado de que você é capaz de copiar algo muito bem, além de servir para avaliadores de recursos humanos leigos em tecnologia terem uma forma de classificar o candidato baseando-se no seu número de certificações.
Um grande fator diferencial, que eu mesmo constatei, tem sido relatar vivências no exterior, sejam elas a negócios ou turismo. A bagagem cultural que trazemos em uma viagem é muito grande, e isso pode ser usado como um critério auxiliar e também como forma de mensurar a capacidade de abstração da pessoa (o conhecido CVP - coeficiente de viração própria). A tirinha do Dilbert acima ilustra a diferença entre ter um profissional com cultura e capacidade de abstração dentro da organização. Um bom exemplo de uso de abstração está no livro “A Arte da Guerra” de Sun Tzu, de onde foram trazidas técnicas do mundo da guerra para dentro do mundo corporativo.
Ressalto que as convicções aqui apresentadas são de minha autoria e baseadas em experiências pessoais. Não é objetivo generalizar o nível atual de avaliadores do mercado de TI. No entanto, creio que são dicas e alertas que podem ser úteis para muita gente.
![]()
Apple anuncia macbook air

Acredito que muitos ficaram decepcionados com o lançamento do Macbook Air. Todos esperavam o melhor de uma grande portabilidade aliada com todos recursos do macbook pro. Eu também havia ficado um pouco decepcionado, mas devemos levar em consideração que o Macbook Air não foi feito para ser vendido em grande volume como os atuais macbooks e macbooks pro. Ele é o resultado de muito tempo tempo de pesquisa e investimentos por parte da apple e seus parceiros. O macbook air marca na história e na cabeça de cada um de nós, que a Apple está anos a frente em tecnologia comparado com os demais fabricantes.
Lembram do powerbook titanium ? eu tive um. Quando foi lançado, por volta de 2000-2001, ele era um laptop a frente do seu tempo, tanto em beleza como em tecnologia, e mesmo tendo mais de 7 anos, seus padrões tecnológicos e estéticos são usados pela indústria até hoje.
Hoje, com a evolução de todas tecnologias agregadas ao desenvolvimento de um laptop, a Apple nos provou mais uma vez que é capaz de inovar em um mercado totalmente saturado. Provou que é possível fazer um produto realmente novo.
O macbook air é mais do que um produto de consumo, é um ponto de referência para a indústria de laptops pelos próximos anos, assim como foi com o powerbook titanium. As tecnologias agregadas ao macbook air, que muitos acharam inúteis, vão guiar as novas funcionalidades de laptops.
Algumas das tecnologias que acho válido comentar:
- tochpad multi-toque: inútil ? Por enquanto pode até ser, mas imagine que todos softwares atualmente não estão preparados para essa tecnologia, imagine quando a indústria de software usar este recurso em todo seu potencial
- drive ótico ? há dois anos atrás, em um pc windows, eu decidi não usar drive ótico nele, utilizando um apenas para a instalação inicial do sistema, e fiquei muito tempo sem drive ótico nele, sem sequer sentir falta. A apple tirou o drive de disquete em 1999 e todos acharam uma loucura. Com o avanço da banda-larga e do aluguel/venda de mídia online, as pen-drives cada vez mais baratas, o fim do cd/dvd acredito estar bem próximo.
- sem porta ethernet? Quem precisa de uma tendo wireless e a crescente popularização de hot-spots e diversos outos pontos de acesso. Em último caso, existem adaptadores usb-ethernet.
- disco de estado sólido ? Ainda são muito caros, mas a queda de preço deles é uma das maiores da indústria da informática. Anos atrás, custava milhares de dólares um disco e hoje em dia, com menos de um milhar de doláres você tem o mesmo disco. Questão de tempo para ele também se popularizar e aposentar o bom e velho HD sata.
O macbook air é um conceito, e como aconteceu com o powerbook titanium, está sujeito a falhas, e também carece de tecnologias que precisamos atualmente.
Mesmo se tratando de produtos não Apple, quando comprarmos nosso próximo laptop, e depois um substituto dele, ele certamente será uma versão melhorada das tecnologias existentens no macbook air de hoje. E como aconteceu com o powerbook titanium e com o mac OS X, a apple será lembrada pela mídia que é a responsável pelas inovações que vemos nos nossos computadores e laptops.
