All posts tagged Zend Framework

Captura-Poedit-var-www-NetStudio-ubq4-themes-ubq-i18n-lang-en.po-modificat-

A Corretgé.com fa temps que vam apostar per a la utilització de gettext per a la internacionalització de les nostres aplicacions.

La facilitat a l’hora de distribuir les cadenes de l’aplicació a traductors, amb arxius .po que personal no informàtic pot traduir, ha estat determinant.

El mòdul Zend_Translate del Zend Framework ha simplificat moltíssim la configuració del sistema multiidioma, llegint el arxius .mo, la compilació dels .po creats amb poEdit, sense haver d’instal·lar rés al sistema, i el que és més important, sense haver de respectar l’arbre de carpetes que requeria el mòdul gettext de php.

Amb la següent tècnica, podrem a més a més indicar valors variables a les cadenes a traduir:

/**
* certifiquem en fase de construcció que el control existeixi.
*/
if (!method_exists($this, $this->control))
{
throw new UbqException(sprintf($this->strl->_("*UBQ0002 - No existeix el controlador %s."), $this->control));
}

En aquest cas concret, la classe Zend_Transalte està instanciada a la propietat strl de la classe mestre de l’aplicació. El mètode gettext es pot cridar com a gettext o com a _. El poEdit recupera les cadenes automàticament emprant els dos mètodes.

La funció sprintf és l’encarregada de les substitucions, actua com pritf però retornant la cadena enlloc de posar-la al buffer de sortida.

Els paràmetres de sprintf, en aquest cas la propietat control, substitueixen els valors de substitució, en aquest cas %s.

Així, la cadena quedarà traduida d’aquesta manera dins l’arxiu .po :

#: app/app.abstract.php:65
#, php-format
msgid "*UBQ0002 - No existeix el controlador %s."
msgstr "*UBQ0002 - Controller %s does not exist."

gettext té una gestió de plurals per als valors de substitució numèrics molt complerta i amb suport amb plurals complexos com els de les llengües eslaves.

Per a optimtizar l’espai en disc dels servidors, instal·larem totes les llibreries PHP en una carpeta única anomenada NetStudio.


mkdir /var/www/NetStudio

I procedirem a instal·lar diferents llibreries d’ús comú:

- crtphpfwk. Framework que modela les etiquetes HTML en objectes PHP.

svn co http://crtphpfwk.googlecode.com/svn/branches/2.0 crtphpfwk

- zajaj. Crida a mètodes de classes PHP desde JavaScript.

svn co http://zajaj.googlecode.com/svn/trunk zajaj

- jQuery. Llibreria de productivitat JavaScript.

svn co http://jqueryjs.googlecode.com/svn/trunk jquery-svn
cd /var/www/NetStudio/jquery-svn/jquery
make jquery
make pack

- jQuery-UI. Llibreria User Interface de jQuery

svn co http://jquery-ui.googlecode.com/svn/tags/latest jqueryUI-svn

- jsTree. Llibreria jQuery tree plugin (afegit maig del 2010)

svn checkout http://jstree.googlecode.com/svn/trunk/ jstree-svn

Tots els sevidors virtuals que emprin jQuery tindran aquesta instrucció

Alias /jquery /var/www/NetStudio/jquery-svn
Alias /jqueryUI /var/www/NetStudio/jqueryUI-svn
Alias /jstree /var/www/NetStudio/jstree-svn

- ZendFramework. Framework de Zend.

svn co http://framework.zend.com/svn/framework/standard/trunk ZendFramework

Afegirem aquest path al php.ini

include_path = ".:/var/www/NetStudio/ZendFramework/library"