itaeng

Utilizzare file .po diversi a seconda del tema con cakephp

Uno dei problemi che si possono presentare a chi lavora su cakephp è quello di avere uno stesso progetto utilizzato da clienti diversi, con esigenze diverse, sia di temi grafici che di formalità nel lessico.

Immagina di avere la stessa piattaforma per due siti, uno molto formale (cliente Pierluigi) e uno giocherellone (cliente Ciccio). È ovvio che se entrambi vogliono una stringa di benvenuto sul sito questa non possa essere la stessa, ma dovrebbe essere personalizzata... Cakephp ci ha fornito uno strumento utilissimo che sono i locales, dei files in cui inserire le stringhe da tradurre, con relativa traduzione

Se ad esempio nella mia view uso qualcosa tipo __('Saluti', true), cakephp si occupa di andare a cercare la relativa stringa nel file app/locale/ita/LC_MESSAGES/default.po

msgid "Saluti"
msgstr "Ciao"

oppure, se la lingua è impostata sull'inglese, nel file app/locale/eng/LC_MESSAGES/default.po

msgid "Saluti"
msgstr "Hello"

Ma come fare se, tornando al problema iniziale, vogliamo che per il cliente Pierluigi ci sia un saluto formale, e per Ciccio un saluto informale, sempre in italiano? Cakephp ci ha fornito una comodissima soluzione, che se utilizzata insieme alla funzionalità theme fa perfettamente al caso nostro...

__d($this->theme, 'Saluti', true)

Notato la sottile differenza? Con questa sintassi cakephp va a prendere il nome del tema in uso e cercherà il relativo file .po nelle directory che abbiamo nominato sopra.

Se per esempio il cliente Pierluigi usa il tema "pierluigi", basterà avere un file app/locale/ita/LC_MESSAGES/pierluigi.po con questa stringa

msgid "Saluti"
msgstr "Buongiorno"

mentre, per il cliente Ciccio con tema "ciccio", il file sarà app/locale/ita/LC_MESSAGES/ciccio.po, e conterrà

msgid "Saluti"
msgstr "Ciaooo"

Comodo no?