dissabte, 29 d’agost del 2009

Aplicacions multiidioma amb valors de programa.

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.

divendres, 28 d’agost del 2009

Instal·lant llibreries per a projectes web

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"

Microsfot està destrossant la seva llibertat

Amb el llançament de Windows 7 a l'octubre, Microsoft ven la nova versió del seu sistema operatiu amb una combinació d'amenaces i por.

Amenacen amb deixar de donar suport a les versions anteriors de Windows a llarg termini, i perquè el seu sistema és propietat, en lloc de programari lliure com GNU / Linux, es depèn de Microsoft per a proporcionar actualitzacions de seguretat i correccions d'errors.

Amb l'amenaça de retirar el seu suport, tracten amb mà dura els seus usuaris per tal que comprin noves versions del seu programari, fins i tot quan no els necessiteu, provocant conseqüències negatives a la seva capacitat per operar, abusant un cop més de la seva posició de monopoli, i de manera explícita induir a la dependència amb proveïdors.

Com els seus plans per a incloure les restriccions de DRM amb Windows Vista, els continus atacs de Microsoft contra la seva seguretat, privacitat i la llibertat no són cap error. Microsoft té una llarga història de manipulació dels fabricants d'ordinadors en la instal·lació dels seus productes en els equips que vostè compra.

Vostè mereix poder cooperar oberta i lliurement amb altra gent que utilitza programari. Es mereix poder aprendre com funciona el programari i ensenyar-ho als seus estudiants. es mereix poder contractar al seu programador preferit per arreglar-ho quan falla.

Vostè es mereix programari lliure.

dijous, 6 d’agost del 2009

Habilitant compressió GZip per a arxius servits per l'Apache

Seguint les recomanacions de Google per a la millora de la velocitat de càrrega de les planes, habilitarem al nostre servidor l'opció de compressió d'arxius amb el mod_deflate.

sudo a2enmod deflate

i editarem l'arxiu /etc/apache2/mods-available/deflate.conf per afegir els arxius JavaScript i CSS:

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
</IfModule>


Reiniciem l'Apache i ja ho tindrem activat: