Parche para que Symfony i18n:find encuentre alts y titles
Estoy poniendome al día con Symfony 1.4 y una de las cosas que tenía pendientes de ver era todo el asunto de la internacionalización de contenidos.
El panorama del i18n en Symfony ha mejorado muchísimo desde que me tocó sufrirlo usarlo por última vez. Ahora él solito te dirá qué textos están internacionalizados en tus plantillas y cuales no lo están con las tareas i18n:extract e i18n:find.
Es normal que se nos olviden algunos textos en el proceso de implementación de plantillas en nuestro motor de presentación y los más proclives a quedarse fuera suelen ser los atributos de las etiquetas html. Estoy hablando de los alt y los title, que llevan un contenido preciado por los motores de indexación y esencial a nivel de usabilidad.
Pues bien, resulta que i18n:find no tiene en cuenta estos atributos, por lo que he procedido a modificar la tarea para que los tenga en cuenta. Aquí va el parche:
if ($node->hasAttributes()) { foreach($node->attributes as $attr) { if (in_array($attr->name, array('alt', 'title')) && trim($attr->value) != "") { $strings[$template][] = $attr->value; } } }
Hay que enchufar esto en la línea 92 del fichero lib/task/i18n/sfI18nFindTask.class.php.
Voy a ver si les mando el parche a la gente de Symfony para que lo incluyan si consideran que el cambio vale la pena.
Otro tema que tengo pendiente es el de montar el subsistema de i18n para que ataque a una base de datos en MySQL. Ya lo he hecho en el pasado (para Fon) y tengo que ver cómo ha cambiado y si vale la pena para la aplicación que estoy montando. En cualquier caso, sigue sin haber una guía clara y definitiva que explique cómo hacer esto, por lo que en cuanto lo consiga lo publicaré aquí.
Bola Extra
Parece que algunos editores gettext necesitan que se declare el charset explícitamente en los ficheros .po, porque si no se hacen la picha un lío y destrozan los ficheros de traducciones. Aquí va el parche para que i18n:extract incluya meta-información en los .po con el charset:
$result['meta']['Content-Type'] = 'text/plain; charset=utf-8';
Enchufa esto en la línea 166 del fichero lib/i18n/sfMessageSource_gettext.class.php
¿Te gustó este artículo?
Aún no hay trackbacks.
