Rodrigo Borrego Bernabé - Freelance Software Developer



No puede ser tan costoso sacar una lista de idiomas

Category : Programación · No Comments · by Jan 27th, 2011

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.

Invocando el helper i18n (for translation) desde una acción

Category : breves, Programación, Symfony · No Comments · by Jan 11th, 2011

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