Os voy a soltar el código así sin anestesia ni nada.
implode (', ', array_intersect_key($_languages_, array_combine ( $object->getLanguagesArray(), $object->getLanguagesArray())));
Y ahora os explico qué hace. Básicamente tenemos un array no asociativo obtenido con $object->getLanguagesArray() que contiene una lista de claves de lenguajes (es, fr, en, por ejemplo). Y por otro lado tenemos un array asociativo con los nombres de todos los lenguajes como valor y sus códigos como clave. Algo como esto:
Array ( [0] => en [1] => pt [2] => fr [3] => es )
Array ( [aa] => Afar [ab] => Abjasio [af] => Afrikaans [am] => Amárico ...)
Y todo lo que quiero es una cadena, separada por comas con los nombres de los idiomas de $object.
Bueno, pues me ha costado casi una hora buceando en las funciones de array de PHP. Espero que a alguien por ahí le ahorre tiempo.
A menudo necesitas invocar el helper de tradicción, __(), desde fuera de la vista. Se puede hacer de dos maneras:
a) Cargarlo explícitamente y llamarlo igual que desde la vista (aunque se cargará dos veces, pues se seguirá cargando en la vista).
sfLoader::LoadHelpers(array('I18N'));
b) O utilizar una llamada puntual:
sfContext::getInstance()->getI18n()->__($text, $args, 'messages');
Traducción libre de: http://snippets.symfony-project.org/snippet/65
Comentarios recientes