El procés per traduir pàgines amb Smarty i Gettext és el següent:
- Construir un template amb les cadenes a traduir entre els limitadors {t}{/t}. Ex: {t}Text to translate{/t}
- En el codi PHP cridar a un l’idioma que és farà servir cada cop que es presenti la pàgina
- Executar la següent comanda per obtenir els textos a traduïr:
1 | php -q tsmarty2c.php templates/fitxer.tpl > text_strings.c |
- Amb lo que obtenim el fitxer quasi en format PO. Per a obtenir-lo executem:
1 | xgettext -o messages.po --join-existing --no-location text_strings.c |
- Aquí tenim que editar el fiter .po generat en cadascún dels idiomes que volguem i convertir-lo en fitxer.mo:
1 | msgfmt -o messages.mo messages.po |
Important!!! Cada vegada que es posi un fitxer de traduccions nou s’ha de reiniciar Apache (probablement sigui degut a un tema de la memoria cau). La versió actual de Smarty amb el plugin gettext obliga a registrar el plugin de traducció que podem posar a l’alçada de la classes smarty i l’hem de cridar així: $smarty->register->block(‘t’, ‘smarty_translate’); Tal i com es comenta en el següent link: http://www.smarty.net/forums/viewtopic.php?p=65393 i http://www.tecnoretales.com/
Link interessant de traducció de pàgines web amb PHP: http://onlamp.com/pub/a/php/2002/06/13/php.html i la seva pàgina corresponent a PHP: http://www.php.net/gettext