SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
APLICAÇÕES
                   INTERNACIONALIZADAS




       DESENVOLVA PARA O MUNDO

segunda-feira, 3 de dezembro de 12
EDUARDO BONA
   GRADUAÇÃO: SISTEMAS PARA INTERNET - 2008
   PÓS-GRADUAÇÃO: BANCO DE DADOS ORACLE/
   DB2 - 2009
   CO-FUNDADOR - VIVAWEB INTERNET
   PROFESSOR UNIVERSITÁRIO - CESUMAR


   PROGRAMADOR PHP DESDE 2004
   PROGRAMADOR ZEND DESDE 2008
segunda-feira, 3 de dezembro de 12
POR QUE

        INTERNACIONALIZAR
                                     MEU APLICATIVO?




segunda-feira, 3 de dezembro de 12
Idiomas mais populares por país
                                         The Impact of App Translations
                                      By Tiuri van Agten, Analyst at Distimo

segunda-feira, 3 de dezembro de 12
Para ter chances de ser visto em um mercado mundial
      seu aplicativo deverá ser bom e estar em inglês, não
      necessariamente nesta ordem.



         O Brasil é o único país onde o idioma nativo não é
      nem o primeiro nem o segundo mais baixado. Apenas
               40% dos top 200 tem suporte ao português.


segunda-feira, 3 de dezembro de 12
Já que você tem que pensar de qualquer forma:

                                PENSE GRANDE!
                                             - Donald Trump


segunda-feira, 3 de dezembro de 12
#GOGOGO:                  AO ASSUNTO!
   • Internacionalização (i18n - internationalization)é a criação e o
      desenvolvimento de um produto que permite a localização fácil
      dos públicos alvo que variam em termos de cultura, região ou
      idioma.

   • Localização  (l10n - localization) está relacionado à adaptação de
      um produto, aplicação ou conteúdo do documento para atender
      às exigências do idioma, culturais e outros requisitos de um
      mercado alvo específico (um "local").
                                     Fonte: W3C http://www.w3.org/International/questions/qa-i18n.pt.php




segunda-feira, 3 de dezembro de 12
#GOGOGO:    AO ZEND

                                      ZEND_DATE


                    ZEND_LOCALE                      ZEND_TRANSLATE




                                     ZEND_CURRENCY




                            COMPONENTES USADOS NO ZEND 1

segunda-feira, 3 de dezembro de 12
#ESTUDO DE CASO 1:
           TRADUÇÃO COM POEDIT
      ADIÇÃO DE HELPER TRANSLATE EM CÓDIGOS

      CRIAÇÃO DE CATÁLOGO

      CONFIGURAÇÃO DE CATÁLOGO

      ATUALIZAR CATÁLOGO A PARTIR DE CÓDIGO FONTE

      CONFIGURAR APPLICATION.INI PARA DETECÇÃO

      TESTES

segunda-feira, 3 de dezembro de 12
#ESTUDO DE CASO 1:

      1) em application/views/scripts/index/index.phtml (view) - adicionar helper $this->translate
      nos termos a serem traduzidos

      <li><a href="#"><?php echo $this->translate("Galeria") ?></a></li>
      <li><a href="#"><?php echo $this->translate("Especificações") ?></a></li>

      2) em application/i18n/en_US.po (tradução) - traduzir os novos termos com POEDIT

      3) em application/configs/application.ini adicionar os parâmetros para reconhecimento do
      idioma e do arquivo de tradução

      resources.locale.default = "pt_BR"
      resources.translate.data = APPLICATION_PATH "/i18n/"
      resources.translate.default.disableNotices = 1
      resources.translate.adapter = "gettext"
      resources.translate.options.scan = "filename"



segunda-feira, 3 de dezembro de 12
#ESTUDO DE CASO 1I:
             ZEND DATE E CURRENCY


      UTILIZAÇÃO DO HELPER CURRENCY

      CRIAÇÃO DE DATAS ATRAVÉS DO COMPONENTE E
      COMPORTAMENTO SOB INTERNACIONALIZAÇÃO

      CUIDADOS NA UTILIZAÇÃO DE DATAS




segunda-feira, 3 de dezembro de 12
#ESTUDO DE CASO 1I:



      1) em application/scripts/views/index/index.phtml

      <p>iPhone 5 a partir de <? echo $this->currency(1290.50) ?></p>

      Resultado com navegador em inglês: $1.290,50
      Resultado com navegador em português: R$1,290.50

      De acordo com a identificação da localização (locale) - neste caso é automático pelo idioma
      do navegador - este helper currency se responsabiliza pela moeda.




segunda-feira, 3 de dezembro de 12
#ESTUDO DE CASO 1I:

      1) em application/controllers/IndexController.php - serão criadas 3 datas para apresentar a
      forma com que o Zend_Date trata as datas e as imprime através das views.

      // Ao usar datas fixas, crie-as com uma constante correta
      $data_de = new Zend_Date("2012-12-01", Zend_Date::ISO_8601);
      $this->view->data_de = $data_de;

      // Ou com o locale correto
      $data_ate = new Zend_Date("30/12/2012", "pt_BR");
      $this->view->data_ate = $data_ate;

      // veja o problema que acontece quando você cria uma data no formato brasileiro mas não
      informa nada e reusa esta data em um idioma que não seja o mesmo
      $data_com_problema = new Zend_Date("10/11/2012");
      $this->view->data_com_problema = $data_com_problema;




segunda-feira, 3 de dezembro de 12
#ESTUDO DE CASO 1I:


      2) em application/views/scripts/index/index.php - serão chamadas as variáveis passadas via
      controller para as views.

      <p>Do dia <?php echo $this->data_de->get("dd/MM/yy") ?>
      até <?php echo $this->data_ate->get("dd/MM/yy") ?></p>
      <p>Esta data se encontrará com problemas em inglês <?php echo
      $this->data_com_problema->get("dd/MM/yy") ?></p>

      *** Note que ao usar um navegador em português, tudo estará correto, mas em um
      navegador em inglês, a terceira data se encontrará com problemas no dia e no mês,
      justamente porque ao criar a data você não informou o formato dela.




segunda-feira, 3 de dezembro de 12
#ESTUDO DE CASO 1II:
                     TRADUÇÃO POR URL


      REESCRITA DAS ROTAS DEFAULT

      CRIAÇÃO DE PLUGIN PARA SETUP DA TRADUÇÃO

      TESTES




segunda-feira, 3 de dezembro de 12
#ESTUDO DE CASO 1II:
      1) em application/plugins/Rotas.php - criar o plugin de rotas para identificar sempre como
      primeiro parâmetro o idioma

      <?php
      class Application_Plugin_Rotas extends Zend_Controller_Plugin_Abstract {
        public function routeStartup(Zend_Controller_Request_Abstract $request){
          $router = Zend_Controller_Front::getInstance ()->getRouter ();
          $router->removeDefaultRoutes ();
          $router->addRoute ( 'languageModuleControllerAction', new Zend_Controller_Router_Route(
            '/:lang/:module/:controller/:action', array ('lang' => 'pt')
          ));
          $router->addRoute ( 'languageControllerAction', new Zend_Controller_Router_Route (
            '/:lang/:controller/:action', array ('lang' => 'pt')
          ));
          $router->addRoute ( 'language', new Zend_Controller_Router_Route ( '/:lang',
            array ('lang' => 'pt')
          ));
          $router->addRoute ( 'languageController', new Zend_Controller_Router_Route ( '/:lang/:controller',
            array ('lang' => 'pt')
          ));
        }
      }
      ?>

segunda-feira, 3 de dezembro de 12
#ESTUDO DE CASO 1II:
      2) em application/plugins/Internacionalizacao.php - criar o plugin que receberá o parâmetro
      de idioma através da rota e fará a leitura do arquivo de tradução.

      <?php
      class Application_Plugin_Internacionalizacao extends Zend_Controller_Plugin_Abstract {
        protected $_idiomaPadrao = "pt_BR";
        protected $_idiomas = array ("en","pt");
        protected $_idiomasRegiao = array ("en" => "US", "pt" => "BR");
        public function preDispatch(Zend_Controller_Request_Abstract $request) {
          $lang = $request->getParam ( "lang", NULL);
          if (! in_array ( $lang, $this->_idiomas ))
            $var_locale = $this->_idiomaPadrao;
          else
            $var_locale = $lang . '_' . $this->_idiomasRegiao [$lang];
          $locale = new Zend_Locale ( $var_locale );
          Zend_Registry::set ( 'Zend_Locale', $locale );
          $translate = new Zend_Translate ( 'gettext', APPLICATION_PATH . '/i18n/', $locale,
            array ("scan" => Zend_Translate::LOCALE_FILENAME ) );
          Zend_Registry::set ( 'Zend_Translate', $translate );
        }
      }
      ?>


segunda-feira, 3 de dezembro de 12
#ESTUDO DE CASO 1II:
      3) em application/Bootstrap.php adicionar o método init Auto Loader para que a pasta
      plugins criada para o exemplo tenha seu namespace na aplicação

      protected function _initAutoLoader() {
        $loader = new Zend_Loader_Autoloader_Resource(array(
          'basePath' => APPLICATION_PATH,
          'namespace' => 'Application'
        ));
        $loader->addResourceType('plugin', 'plugins/', 'Plugin');
      }

      4) em application/configs/application.ini - adicionar os 2 plugins à aplicação

      resources.frontController.plugins.internacionalizacao = "Application_Plugin_Internacionalizacao"
      resources.frontController.plugins.rotas = "Application_Plugin_Rotas”

      *** Após isso, basta testar o endereço /en ou /pt e notará que independentemente do idioma do
      navegador o sistema optará pelo que foi passado na URL. Se nada for informado, ele busca pelo padrão
      que o plugin determinou como sendo PT.


segunda-feira, 3 de dezembro de 12
#GOGOGO:       AO ZEND 2

                    ZEND_LOCALE
                                      ZEND_DATE
                                                     ZEND_TRANSLATE

                                                       i18n
                                     ZEND_CURRENCY




                            COMPONENTES USADOS NO ZEND 2

segunda-feira, 3 de dezembro de 12
MUDANÇAS NA INTERNACIONALIZAÇÃO
                   COM ZEND 2

      Remoção das classes:

           •ZendLocaleLocale
           •ZendLocaleFormat
           •ZendDateDate
           •ZendCurrencyCurrency


segunda-feira, 3 de dezembro de 12
MUDANÇAS NA INTERNACIONALIZAÇÃO
                   COM ZEND 2


   •Criação da Zendi18n substituindo a Zend_Translate
   •Criação de view helpers para CurrencyFormat, DateFormat,
      NumberFormat e Translate

   •Incentivo ao uso das bibliotecas nativas do PHP 5.3 para resolução
      das demandas removidas do ZF1

   •Benefícios como aumento de performance entre 5 a 10 vezes em
      testes realizados durante o desenvolvimento


segunda-feira, 3 de dezembro de 12
DÚVIDAS?
                                  twitter: @eduardobona
                               eduardobona@vivaweb.net
                               slideshare.net/eduardobona

                    Material de apoio disponível em:
                 http://vivaweb.net/palestras/zf_i18n.zip

                       MUITO OBRIGADO!!!
segunda-feira, 3 de dezembro de 12
REFERÊNCIAS

   • http://framework.zend.com/wiki/display/ZFDEV2/RFC+-+i18n
      +layer

   • http://framework.zend.com/manual/2.0/en/index.html

   • http://www.w3.org/International/questions/qa-i18n.pt.php

   • http://imasters.com.br/artigo/24759/zend/internacionalizacao-e-
      localizacao-com-zend-framework

   • http://www.distimo.com/publications


segunda-feira, 3 de dezembro de 12

Mais conteúdo relacionado

Semelhante a Desenvolva para o Mundo - Internacionalização de Sistemas com Zend Framework

Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013
Pablo Dall'Oglio
 
Pg sem3-1505102
Pg sem3-1505102Pg sem3-1505102
Pg sem3-1505102
csmp
 

Semelhante a Desenvolva para o Mundo - Internacionalização de Sistemas com Zend Framework (20)

Django - Criando Aplicacoes Plugaveis
Django - Criando Aplicacoes PlugaveisDjango - Criando Aplicacoes Plugaveis
Django - Criando Aplicacoes Plugaveis
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3
 
Configurações de aplicações distribuidas com etcd
Configurações de aplicações distribuidas com etcdConfigurações de aplicações distribuidas com etcd
Configurações de aplicações distribuidas com etcd
 
NITECH - EVENT STORM
NITECH - EVENT STORM NITECH - EVENT STORM
NITECH - EVENT STORM
 
NITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdfNITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdf
 
Android - Parte 8
Android - Parte 8Android - Parte 8
Android - Parte 8
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Sites multi-idiomáticos na web moderna
Sites multi-idiomáticos na web modernaSites multi-idiomáticos na web moderna
Sites multi-idiomáticos na web moderna
 
Design Patterns com PHP
Design Patterns com PHPDesign Patterns com PHP
Design Patterns com PHP
 
Portfólio ADS- sem 4 - atividade em grupo
Portfólio ADS- sem 4 - atividade em grupoPortfólio ADS- sem 4 - atividade em grupo
Portfólio ADS- sem 4 - atividade em grupo
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013Adianti Framework PHPConf 2013
Adianti Framework PHPConf 2013
 
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
 
Pdo do PHP Palestra
Pdo do PHP PalestraPdo do PHP Palestra
Pdo do PHP Palestra
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Pg sem3-1505102
Pg sem3-1505102Pg sem3-1505102
Pg sem3-1505102
 
Pg sem3ex
Pg sem3exPg sem3ex
Pg sem3ex
 

Desenvolva para o Mundo - Internacionalização de Sistemas com Zend Framework

  • 1. APLICAÇÕES INTERNACIONALIZADAS DESENVOLVA PARA O MUNDO segunda-feira, 3 de dezembro de 12
  • 2. EDUARDO BONA GRADUAÇÃO: SISTEMAS PARA INTERNET - 2008 PÓS-GRADUAÇÃO: BANCO DE DADOS ORACLE/ DB2 - 2009 CO-FUNDADOR - VIVAWEB INTERNET PROFESSOR UNIVERSITÁRIO - CESUMAR PROGRAMADOR PHP DESDE 2004 PROGRAMADOR ZEND DESDE 2008 segunda-feira, 3 de dezembro de 12
  • 3. POR QUE INTERNACIONALIZAR MEU APLICATIVO? segunda-feira, 3 de dezembro de 12
  • 4. Idiomas mais populares por país The Impact of App Translations By Tiuri van Agten, Analyst at Distimo segunda-feira, 3 de dezembro de 12
  • 5. Para ter chances de ser visto em um mercado mundial seu aplicativo deverá ser bom e estar em inglês, não necessariamente nesta ordem. O Brasil é o único país onde o idioma nativo não é nem o primeiro nem o segundo mais baixado. Apenas 40% dos top 200 tem suporte ao português. segunda-feira, 3 de dezembro de 12
  • 6. Já que você tem que pensar de qualquer forma: PENSE GRANDE! - Donald Trump segunda-feira, 3 de dezembro de 12
  • 7. #GOGOGO: AO ASSUNTO! • Internacionalização (i18n - internationalization)é a criação e o desenvolvimento de um produto que permite a localização fácil dos públicos alvo que variam em termos de cultura, região ou idioma. • Localização (l10n - localization) está relacionado à adaptação de um produto, aplicação ou conteúdo do documento para atender às exigências do idioma, culturais e outros requisitos de um mercado alvo específico (um "local"). Fonte: W3C http://www.w3.org/International/questions/qa-i18n.pt.php segunda-feira, 3 de dezembro de 12
  • 8. #GOGOGO: AO ZEND ZEND_DATE ZEND_LOCALE ZEND_TRANSLATE ZEND_CURRENCY COMPONENTES USADOS NO ZEND 1 segunda-feira, 3 de dezembro de 12
  • 9. #ESTUDO DE CASO 1: TRADUÇÃO COM POEDIT ADIÇÃO DE HELPER TRANSLATE EM CÓDIGOS CRIAÇÃO DE CATÁLOGO CONFIGURAÇÃO DE CATÁLOGO ATUALIZAR CATÁLOGO A PARTIR DE CÓDIGO FONTE CONFIGURAR APPLICATION.INI PARA DETECÇÃO TESTES segunda-feira, 3 de dezembro de 12
  • 10. #ESTUDO DE CASO 1: 1) em application/views/scripts/index/index.phtml (view) - adicionar helper $this->translate nos termos a serem traduzidos <li><a href="#"><?php echo $this->translate("Galeria") ?></a></li> <li><a href="#"><?php echo $this->translate("Especificações") ?></a></li> 2) em application/i18n/en_US.po (tradução) - traduzir os novos termos com POEDIT 3) em application/configs/application.ini adicionar os parâmetros para reconhecimento do idioma e do arquivo de tradução resources.locale.default = "pt_BR" resources.translate.data = APPLICATION_PATH "/i18n/" resources.translate.default.disableNotices = 1 resources.translate.adapter = "gettext" resources.translate.options.scan = "filename" segunda-feira, 3 de dezembro de 12
  • 11. #ESTUDO DE CASO 1I: ZEND DATE E CURRENCY UTILIZAÇÃO DO HELPER CURRENCY CRIAÇÃO DE DATAS ATRAVÉS DO COMPONENTE E COMPORTAMENTO SOB INTERNACIONALIZAÇÃO CUIDADOS NA UTILIZAÇÃO DE DATAS segunda-feira, 3 de dezembro de 12
  • 12. #ESTUDO DE CASO 1I: 1) em application/scripts/views/index/index.phtml <p>iPhone 5 a partir de <? echo $this->currency(1290.50) ?></p> Resultado com navegador em inglês: $1.290,50 Resultado com navegador em português: R$1,290.50 De acordo com a identificação da localização (locale) - neste caso é automático pelo idioma do navegador - este helper currency se responsabiliza pela moeda. segunda-feira, 3 de dezembro de 12
  • 13. #ESTUDO DE CASO 1I: 1) em application/controllers/IndexController.php - serão criadas 3 datas para apresentar a forma com que o Zend_Date trata as datas e as imprime através das views. // Ao usar datas fixas, crie-as com uma constante correta $data_de = new Zend_Date("2012-12-01", Zend_Date::ISO_8601); $this->view->data_de = $data_de; // Ou com o locale correto $data_ate = new Zend_Date("30/12/2012", "pt_BR"); $this->view->data_ate = $data_ate; // veja o problema que acontece quando você cria uma data no formato brasileiro mas não informa nada e reusa esta data em um idioma que não seja o mesmo $data_com_problema = new Zend_Date("10/11/2012"); $this->view->data_com_problema = $data_com_problema; segunda-feira, 3 de dezembro de 12
  • 14. #ESTUDO DE CASO 1I: 2) em application/views/scripts/index/index.php - serão chamadas as variáveis passadas via controller para as views. <p>Do dia <?php echo $this->data_de->get("dd/MM/yy") ?> até <?php echo $this->data_ate->get("dd/MM/yy") ?></p> <p>Esta data se encontrará com problemas em inglês <?php echo $this->data_com_problema->get("dd/MM/yy") ?></p> *** Note que ao usar um navegador em português, tudo estará correto, mas em um navegador em inglês, a terceira data se encontrará com problemas no dia e no mês, justamente porque ao criar a data você não informou o formato dela. segunda-feira, 3 de dezembro de 12
  • 15. #ESTUDO DE CASO 1II: TRADUÇÃO POR URL REESCRITA DAS ROTAS DEFAULT CRIAÇÃO DE PLUGIN PARA SETUP DA TRADUÇÃO TESTES segunda-feira, 3 de dezembro de 12
  • 16. #ESTUDO DE CASO 1II: 1) em application/plugins/Rotas.php - criar o plugin de rotas para identificar sempre como primeiro parâmetro o idioma <?php class Application_Plugin_Rotas extends Zend_Controller_Plugin_Abstract { public function routeStartup(Zend_Controller_Request_Abstract $request){ $router = Zend_Controller_Front::getInstance ()->getRouter (); $router->removeDefaultRoutes (); $router->addRoute ( 'languageModuleControllerAction', new Zend_Controller_Router_Route( '/:lang/:module/:controller/:action', array ('lang' => 'pt') )); $router->addRoute ( 'languageControllerAction', new Zend_Controller_Router_Route ( '/:lang/:controller/:action', array ('lang' => 'pt') )); $router->addRoute ( 'language', new Zend_Controller_Router_Route ( '/:lang', array ('lang' => 'pt') )); $router->addRoute ( 'languageController', new Zend_Controller_Router_Route ( '/:lang/:controller', array ('lang' => 'pt') )); } } ?> segunda-feira, 3 de dezembro de 12
  • 17. #ESTUDO DE CASO 1II: 2) em application/plugins/Internacionalizacao.php - criar o plugin que receberá o parâmetro de idioma através da rota e fará a leitura do arquivo de tradução. <?php class Application_Plugin_Internacionalizacao extends Zend_Controller_Plugin_Abstract { protected $_idiomaPadrao = "pt_BR"; protected $_idiomas = array ("en","pt"); protected $_idiomasRegiao = array ("en" => "US", "pt" => "BR"); public function preDispatch(Zend_Controller_Request_Abstract $request) { $lang = $request->getParam ( "lang", NULL); if (! in_array ( $lang, $this->_idiomas )) $var_locale = $this->_idiomaPadrao; else $var_locale = $lang . '_' . $this->_idiomasRegiao [$lang]; $locale = new Zend_Locale ( $var_locale ); Zend_Registry::set ( 'Zend_Locale', $locale ); $translate = new Zend_Translate ( 'gettext', APPLICATION_PATH . '/i18n/', $locale, array ("scan" => Zend_Translate::LOCALE_FILENAME ) ); Zend_Registry::set ( 'Zend_Translate', $translate ); } } ?> segunda-feira, 3 de dezembro de 12
  • 18. #ESTUDO DE CASO 1II: 3) em application/Bootstrap.php adicionar o método init Auto Loader para que a pasta plugins criada para o exemplo tenha seu namespace na aplicação protected function _initAutoLoader() { $loader = new Zend_Loader_Autoloader_Resource(array( 'basePath' => APPLICATION_PATH, 'namespace' => 'Application' )); $loader->addResourceType('plugin', 'plugins/', 'Plugin'); } 4) em application/configs/application.ini - adicionar os 2 plugins à aplicação resources.frontController.plugins.internacionalizacao = "Application_Plugin_Internacionalizacao" resources.frontController.plugins.rotas = "Application_Plugin_Rotas” *** Após isso, basta testar o endereço /en ou /pt e notará que independentemente do idioma do navegador o sistema optará pelo que foi passado na URL. Se nada for informado, ele busca pelo padrão que o plugin determinou como sendo PT. segunda-feira, 3 de dezembro de 12
  • 19. #GOGOGO: AO ZEND 2 ZEND_LOCALE ZEND_DATE ZEND_TRANSLATE i18n ZEND_CURRENCY COMPONENTES USADOS NO ZEND 2 segunda-feira, 3 de dezembro de 12
  • 20. MUDANÇAS NA INTERNACIONALIZAÇÃO COM ZEND 2 Remoção das classes: •ZendLocaleLocale •ZendLocaleFormat •ZendDateDate •ZendCurrencyCurrency segunda-feira, 3 de dezembro de 12
  • 21. MUDANÇAS NA INTERNACIONALIZAÇÃO COM ZEND 2 •Criação da Zendi18n substituindo a Zend_Translate •Criação de view helpers para CurrencyFormat, DateFormat, NumberFormat e Translate •Incentivo ao uso das bibliotecas nativas do PHP 5.3 para resolução das demandas removidas do ZF1 •Benefícios como aumento de performance entre 5 a 10 vezes em testes realizados durante o desenvolvimento segunda-feira, 3 de dezembro de 12
  • 22. DÚVIDAS? twitter: @eduardobona eduardobona@vivaweb.net slideshare.net/eduardobona Material de apoio disponível em: http://vivaweb.net/palestras/zf_i18n.zip MUITO OBRIGADO!!! segunda-feira, 3 de dezembro de 12
  • 23. REFERÊNCIAS • http://framework.zend.com/wiki/display/ZFDEV2/RFC+-+i18n +layer • http://framework.zend.com/manual/2.0/en/index.html • http://www.w3.org/International/questions/qa-i18n.pt.php • http://imasters.com.br/artigo/24759/zend/internacionalizacao-e- localizacao-com-zend-framework • http://www.distimo.com/publications segunda-feira, 3 de dezembro de 12