Para a tecnologia não existem fronteiras... Isso é o que dizem não é? Mas como realmente ligamos outras culturas? Como pode ser tão simples essa nossa comunicação com o mundo? Opa, olha ai a palavra... COMUNICAÇÃO!
A comunicação humana é um processo que envolve a troca de informações, e utiliza os sistemas simbólicos como suporte para este fim. Estão envolvidos neste processo uma infinidade de maneiras de se comunicar: duas pessoas tendo uma conversa face-a-face, ou através de gestos com as mãos, mensagens enviadas utilizando a rede global de telecomunicações, a fala, a escrita que permitem interagir com as outras pessoas e efetuar algum tipo de troca informacional.
Ai está e o nosso mundo se desenvolve quando tornamos essa comunicação acessível, quando tornamos essa comunicação INTERNACIONAL, e é por isso que precisamos criar aplicações que 'sejam poliglotas' e o ZEND FRAMEWORK esta pronto para esse mundo.
A internacionalização do ZF é muito maior do que meu simples artigo mas a idéia aqui é entender como efetuar essa tradução e por isso não vou falar sobre localizar o idioma do usuário(isso fica para outro post) pois vou mostrar como efetivar a tradução.
Zend_Translate
O Zend_Translate manipula diversos adaptadores para tradução, os adaptadores são exatamente a forma como vamos trabalhar com a tradução os disponíveis são:Array, Tbx, Xliff, Csv, Tmx , XmlTm, Gettext, Qt entre outros...
Exemplo de utilização de um adaptador:
- $translate = new Zend_Translate(
- 'adapter' => 'gettext',
- 'content' => '/meu/diretorio/source-de.mo',
- 'locale' => 'de'
- )
- );
- $translate->addTranslation(
- 'content' => '/pasta/da/tradu/fr-source.mo',
- 'locale' => 'fr'
- )
- );
- print $translate->_("Exemplo") . "\n";
- print "=======\n";
- print $translate->_("Traduzido em de") . "\n";
- print "\n";
- $translate->setLocale('fr');
- print $translate->_("Agora em fr") . "\n";
No projeto que ando trabalhando utilizo array pois os formulários são criados dinamicamente, sendo assim os dados são de acordo com os campos do banco de dados exemplo (usu_nome é o campo nome da tabela usuario) e assim ficaria na tela mas utilizando a internacionalização facilitamos a geração dinâmica de formulários e ainda colocamos os nomes de forma correta com classe de maneira que traduzo os prefixos para uma forma legível e em diversas linguas, veja um exemplo simples da utilização (vou colocar tudo no mesmo diretório.
Exemplo simples:
- public function internacionalAction()
- {
- $pt = array(
- 'hi' => 'oi',
- 'need' => 'preciso',
- 'my' => 'meu',
- 'friend' => 'amigo',
- );
- $tradutor = new Zend_Translate('array',$pt);
- $palavra = "need";
- echo $tradutor->_($palavra);
- exit;
- }
Nesse exemplo eu criei o $tradutor passando para ele o adaptador do tipo array e o próprio array ($pt) assim exibi simplesmente na tela do dado que percorreu até o indice e fez a conversão...
Como eu já disse o conceito de internacionalização do ZF é muito completo e não algo 'engessado' como mostrei mas o conceito de uso é esse. vcs percebem ainda que escrevi tudo em um action e dei um exit no final isso foi justamente para eu poder ver a tradução saindo na tela sem precisar ir para a view.
Encontrei um Blog de um cara muito experiênte em ZF chamado Marcos Borges e caso você queira algo avançado sobe o ZT veja aqui.
Nos próximos POSTs continuo com coisas sobre ZF
Nossa mano vc é meio maluco... que post de doido... TU MANJA PRA PORRA... consegui fazer com array e tornei meu app internacional agora o esquema de gerar form dinâmicos ai ja é muita maluquice pra mim =[
ResponderExcluirGostei do blog que tu indicou..
ResponderExcluir