La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

I18n & L10n Zend_Locale Zend_Date Zend_Translate Zend_Currency

Presentaciones similares


Presentación del tema: "I18n & L10n Zend_Locale Zend_Date Zend_Translate Zend_Currency"— Transcripción de la presentación:

1 I18n & L10n Zend_Locale Zend_Date Zend_Translate Zend_Currency
Desarrollo Web Profesional con PHP y Zend Framework Sesión 13 I18n & L10n Zend_Locale Zend_Date Zend_Translate Zend_Currency Instructor: Ing. Ernesto Anaya Ruiz

2 i18n & l10n

3 Ejemplo

4 i18n La internacionalización es el proceso de diseñar software de manera tal que pueda adaptarse a diferentes idiomas y regiones sin la necesidad de realizar cambios de ingeniería ni en el código

5 l10n La localización es el proceso de adaptar el software para una región específica mediante la adición de componentes específicos de un locale y la traducción de los textos, por lo que también se le puede denominar regionalización

6 INTERNATIONALIZATION
LOCALIZATION l10n

7 Zend_Locale

8 Zend_Locale Zend_Locale es la respuesta de Zend Framework a la pregunta: ¿Cómo podría la misma aplicación ser usada en el mundo entero? No basta solo con traducir los textos, ya que en diferentes partes del mundo se usan diferentes convenciones para fechas, medidas, moneda, etc.

9 Creando un objeto de la clase Zend_Locale
<?php     // Especificando la localidad (locale)     $locale = new Zend_Locale('de_DE'); // Idioma Alemán _ Alemania ?>

10 Capturando el Locale del contexto
<? $l = new Zend_Locale(); ?> default: <?=$l;?><br /> <? $l = new Zend_Locale(Zend_Locale::BROWSER); ?> Zend_Locale::BROWSER: <?=$l;?><br /> <? $l = new Zend_Locale(Zend_Locale::ENVIRONMENT); ?> Zend_Locale::ENVIRONMENT: <?=$l;?><br /> <? $l = new Zend_Locale(Zend_Locale::ZFDEFAULT); ?> Zend_Locale::FRAMEWORK: <?=$l;?><br /> default: en_US Zend_Locale::BROWSER: en_US Zend_Locale::ENVIRONMENT: es_PE Zend_Locale::FRAMEWORK: en

11 Idioma y Región <? $l = new Zend_Locale('es'); // Solo idioma ?> <?=$l;?><br /> <? $l = new Zend_Locale('es_PE'); // Idioma y Región ?> <?=$l;?><br /> es es_PE

12 Obteniendo el Idioma y Región
<? Zend_Locale::setDefault('es_PE'); ?> <? $l2 = new Zend_Locale(Zend_Locale::ZFDEFAULT); ?> (default cambiado) : <?=$l2;?><br /> (idioma) : <?=$l2->getLanguage();?><br /> (region) : <?=$l2->getRegion();?><br /> (default cambiado) : es_PE (idioma) : es (region) : PE

13 Locale de un Territorio
<? $l3 = new Zend_Locale(Zend_Locale::getLocaleToTerritory('MX'));?> (idioma) : <?=$l3->getLanguage();?><br /> (region) : <?=$l3->getRegion();?><br /> <? $l4 = new Zend_Locale(Zend_Locale::getLocaleToTerritory('JP'));?> (idioma) : <?=$l4->getLanguage();?><br /> (region) : <?=$l4->getRegion();?><br /> (idioma) : es (region) : MX (idioma) : ja (region) : JP

14 Más ejemplos con Zend_Currency, Zend_Translate, Zend_Date, etc.
Ejemplo de uso: <?=Zend_Locale_Format::getNumber('123,789', array('locale'=>'es_ES')); ?><br /> <?=Zend_Locale_Format::getNumber(' ', array('locale'=>'es_ES')); ?><br /> <?=Zend_Locale_Format::getNumber(' ', array('locale'=>'es_PE')); ?><br /> <?=Zend_Locale_Format::getNumber('123,789', array('locale'=>'es_PE')); ?><br /> <?=Zend_Locale_Format::getNumber(' ', array('locale'=>'it_IT')); ?><br /> <?=Zend_Locale_Format::getNumber(' ', array('locale'=>'en_US')); ?><br /> <?=Zend_Locale_Format::getNumber('123,789', array('locale'=>'fr_FR')); ?><br /> <?=Zend_Locale_Format::getNumber(' ', array('locale'=>'es_AR')); ?><br /> <?=Zend_Locale_Format::getNumber('123,789', array('locale'=>‘ja_JP')); ?><br /> 123789 Más ejemplos con Zend_Currency, Zend_Translate, Zend_Date, etc.

15 Zend_Date

16 Zend_Date El componente Zend_Date ofrece una API detallada pero a la vez simple para manipular fechas y horas. Sus métodos aceptan una amplia variedad de tipos de información, incluyendo partes de fechas, en varias combinaciones.

17 Inicializando Zend_Date
<? $d = new Zend_Date();?> <?=$d?> Zend_Date implementa el método toString() Apr 5, :48:02 PM

18 Getters <?=$d?><br /> <?=$d->get()?><br /> <?=$d->get(Zend_Date::DATETIME)?><br /> <?=$d->get(Zend_Date::DATETIME_FULL)?><br /> <?=$d->get(Zend_Date::ATOM)?><br /> <?=$d->get(Zend_Date::DAY_OF_YEAR)?><br /> <?=$d->get(Zend_Date::DAY)?><br /> <?=$d->get(Zend_Date::WEEK)?><br /> Apr 5, :09:57 PM Apr 5, :09:57 PM Tuesday, April 5, :09:57 PM America/Lima T13:09:57-05:

19 Setters <? $d->set('16:00:00',Zend_Date::TIMES); ?> <?=$d?><br /> <? $d->set(44,Zend_Date::SECOND); ?> <?=$d?><br /> <? $d->set(1986,Zend_Date::YEAR); ?> <?=$d?><br /> <? $d->set(2,Zend_Date::MONTH); ?> <?=$d?><br /> <? $d->set(23,Zend_Date::DAY); ?> <?=$d?><br /> <?=$d->get(Zend_Date::DATETIME_FULL)?> <br /> Apr 5, :00:00 PM Apr 5, :00:44 PM Apr 5, :00:44 PM Feb 5, :00:44 PM Feb 23, :00:44 PM Sunday, February 23, :00:44 PM America/Lima

20 Incrementado y Decrementando
<?=$d?><br /> <? $d->add('02:30:00',Zend_Date::TIMES); ?> <? $d->add(1,Zend_Date::MONTH); ?> <?=$d?><br /> <? $d->sub(3,Zend_Date::HOUR); ?> <? $d->sub(1,Zend_Date::YEAR); ?> <?=$d?><br /> Feb 23, :00:44 PM Mar 23, :30:44 PM Mar 23, :30:44 PM

21 Comparación: mayor, menor o igual
<? $d = new Zend_Date();?> <?=$d?><br /> <? $h = 23; ?> <? $c = $d->compare($h,Zend_Date::HOUR); ?> <?= $c==0 ? "Son las $h horas“ : ( $c==-1 ? "Aun no son las $h horas“ : "Ya son mas de las $h horas“ ) ?><br /> Apr 5, :28:47 PM Aun no son las 23 horas

22 Comparación: igualdad o desigualdad
<? $d = new Zend_Date();?> <?=$d?><br /> <? $h = 23; ?> <?= $d->equals($h,Zend_Date::HOUR) ? "Son las $h horas“ : "No son las $h horas“ ?><br /> Apr 5, :28:47 PM No son las 23 horas

23 Usando Zend_Locale <? $es = new Zend_Locale('es_PE'); ?> <? $d1 = new Zend_Date('1 de abril del 2011',Zend_Date::DATE_LONG,$es);?> <?=$d1?><br /> <? $d2 = new Zend_Date('April 2, 2011');?> <?=$d2?><br /> <? $d3 = new Zend_Date(‘5 avril 2011',Zend_Date::DATE_LONG,'fr');?> <?=$d3?><br /> 01/04/ :00:00 Apr 2, :00:00 AM 5 avr :00:00

24 Otros métodos de Zend_Date
"<?=$d1?>" <?=$d1->isEarlier($d2)?'es':'no es'?> anterior a "<?=$d2?>"<br /> "<?=$d1?>" <?=$d1->isLater($d2)?'es':'no es'?> posterior a "<?=$d2?>"<br /> "<?=$d1?>" <?=$d1->isTomorrow()?'es':'no es'?> mañana<br /> "<?=$d2?>" <?=$d2->isYesterday()?'fue':'no fue'?> ayer<br /> "<?=$d3?>" <?=$d3->isToday()?'es':'no es'?> hoy<br /> "<?=$d1?>" <?=$d1->isLeapYear()?'es':'no es'?> año bisiesto<br /> <? $d1->add(1,Zend_Date::YEAR); ?>         "<?=$d1?>" <?=$d1->isLeapYear()?'es':'no es'?> año bisiesto<br /> "01/04/ :00:00" es anterior a "Apr 2, :00:00 AM" "01/04/ :00:00" no es posterior a "Apr 2, :00:00 AM" "01/04/ :00:00" no es mañana "Apr 2, :00:00 AM" no fue ayer "5 avr :00:00" es hoy "01/04/ :00:00" no es año bisiesto "01/04/ :00:00" es año bisiesto

25 Creando una fecha de un UNIX timestamp
// SELECT UNIX_TIMESTAMP(my_datetime_column) FROM my_table $unixtimestamp =  ; $d = new Zend_Date($unixtimestamp, Zend_Date::TIMESTAMP); echo $d."<br />"; Nov 26, :58:10 PM

26 Creando una fecha de un date (db)
// SELECT datecolumn FROM my_table $datecolumn = ' '; $d = new Zend_Date($datecolumn, Zend_Date::ISO_8601); echo $d."<br />"; Sep 24, :00:00 AM

27 Creando una fecha de un array
// Array $datearray = array('year' => 2006,                    'month' => 4,                    'day' => 18,                    'hour' => 12,                    'minute' => 3,                    'second' => 10); $d = new Zend_Date($datearray); echo $d."<br />"; Apr 18, :03:10 PM

28 Zend_Translate

29 Zend_Translate Zend_Translate es la solución de Zend Framework para construir aplicaciones multi-idioma.

30 Inicializando Zend_Translate en el bootstrap
protected function _initTranslation(){// Bootstrap    $regT = Zend_Registry::get('t');     $lang = isset($regT->lang)?$regT->lang:'es';     $es = array(         'message1' => 'Mensaje 1',         'message2' => 'Mensaje 2',         'message3' => 'Mensaje 3');     $en = array(         'message1' => 'Message 1',         'message2' => 'Message 2',         'message3' => 'Message 3');     $de = array(         'message1' => 'Nachricht 1',         'message2' => 'Nachricht 2',         'message3' => 'Nachricht 3');    $t = new Zend_Translate(array(             'adapter' => 'array',             'content' => $$lang,             'locale' => $lang      ));     $regT->t = $t; }

31 Uso en las vistas <? $regT = Zend_Registry::get('t');
$t = $regT->t; ?> <?=$t->_("message1")?><br /> <?=$t->_("message2")?><br /> <?=$t->_("message3")?><br />

32 Cambiar de Idioma: public function changeLangAction(){     $regT = Zend_Registry::get('t');     $regT->lang = $this->_getParam('lang');     $this->_redirect($_SERVER['HTTP_REFERER']); }

33 Zend_Currency

34 Zend_Currency Zend_Currency es parte del fuerte soporte para i18n que brinda Zend Framework. Maneja varias operaciones relacionadas con divisas, representación de monedas, formato, intercambio, etc.

35 Inicialización <? $c = new Zend_Currency(); ?> <? $c->setValue(100); ?>  <?=$c?> <br /> $100.00

36 i18n & l10n default:     <?=$c?> <br /> Perú:        <?$c->setLocale('es_PE');?> <?=$c?> (<?=$c->getName()?>,<?=$c->getShortName()?>) <br /> Japón:       <?$c->setLocale('ja_JP');?> <?=$c?> (<?=$c->getName()?>,<?=$c->getShortName()?>) <br /> México:      <?$c->setLocale('es_MX');?> <?=$c?> (<?=$c->getName()?>,<?=$c->getShortName()?>) <br /> Francia:     <?$c->setLocale('fr_FR');?> <?=$c?> (<?=$c->getName()?>,<?=$c->getShortName()?>) <br /> Italia:      <?$c->setLocale('it_IT');?> <?=$c?> (<?=$c->getName()?>,<?=$c->getShortName()?>) <br /> Costa Rica:  <?$c->setLocale('es_CR');?> <?=$c?> (<?=$c->getName()?>,<?=$c->getShortName()?>) <br /> Gran Bretaña:<?$c->setLocale('en_GB');?> <?=$c?> (<?=$c->getName()?>,<?=$c->getShortName()?>) <br /> Rusia:       <?$c->setLocale('ru_RU');?> <?=$c?> (<?=$c->getName()?>,<?=$c->getShortName()?>) <br /> Canadá:      <?$c->setLocale('en_CA');?> <?=$c?> (<?=$c->getName()?>,<?=$c->getShortName()?>) <br /> USA:         <?$c->setLocale('en_US');?> <?=$c?> (<?=$c->getName()?>,<?=$c->getShortName()?>) <br /> default: $ Perú: S/.  (nuevo sol peruano,PEN) Japón: ¥ (日本円,JPY) México: $  (peso mexicano,MXN) Francia: 100,00 € (euro,EUR) Italia: € 100,00 (Euro,EUR) Costa Rica: ₡ 100,00 (colón costarricense,CRC) Gran Bretaña: £ (British Pound Sterling,GBP) Rusia: 100,00 руб. (Российский рубль,RUB) Canadá: $ (Canadian Dollar,CAD) USA: $ (US Dollar,USD)

37 Algunos métodos $5,100.00 $5,223.46 $401.80 no es mayor que 5000
<? $c->setValue(5100); ?> <?=$c?> <br /> <? $c->add( ); ?> <?=$c?> <br /> <? $c->div(13); ?> <?=$c?> <br /> <?= $c->isMore(5000)?'es’:'no es‘;?> mayor que 5000 $5, $5, $ no es mayor que 5000

38 Cambio de Divisas class My_TasaCambio implements Zend_Currency_CurrencyInterface {     public function getRate($from, $to){         if ($from !== "USD" && $from !== "PEN"  ) {             throw new Exception('Solo se cambia USD, PEN');         }         switch ($from) {             case 'USD':                 switch ($to) {                     case 'PEN':                         return 2.8;                }             case 'PEN':                 switch ($to) {                     case 'USD':                         return 0.3571;                }        }        throw new Exception("No se cambia a $to");     } }

39 Cambio de Divisas <? $c1 = new Zend_Currency(); ?> <? $tc  = new My_TasaCambio(); ?> <? $c1->setService($tc) ?> <? $c1->setValue(1000,'PEN'); ?> <?=$c1;?> <br /> <? $c1 = new Zend_Currency('es_PE'); ?> <? $tc  = new My_TasaCambio(); ?> <? $c1->setService($tc) ?> <? $c1->setValue(1000,'USD'); ?> <?=$c1;?> $ S/. 2,800.00


Descargar ppt "I18n & L10n Zend_Locale Zend_Date Zend_Translate Zend_Currency"

Presentaciones similares


Anuncios Google