Inicio » Más con Symfony » Descubriendo el poder de la línea de comandos (segunda parte) » Accediendo al sistema de internacionalización
Accediendo al sistema de internacionalización
No todas las factorías son tan fáciles de acceder como el mailer y el
enrutamiento. Si se quiere por ejemplo internacionalizar las tareas, es preciso
acceder al sistema de internacionalización o i18n de Symfony. Para ello, se
emplea la clase sfFactoryConfigHandler:
protected function getI18N($culture = 'en')
{
if (!$this->i18n)
{
$config = sfFactoryConfigHandler::getConfiguration($this->configuration->getConfigPaths('config/factories.yml'));
$class = $config['i18n']['class'];
$this->i18n = new $class($this->configuration, null, $config['i18n']['param']);
}
$this->i18n->setCulture($culture);
return $this->i18n;
}
En primer lugar se utiliza una estrategia sencilla de cache para no tener que
reconstruir el componente i18n cada vez que se utilice. A continuación, haciendo
uso de sfFactoryConfigHandler, se obtiene la configuración del componente para
instanciarlo. Por último, se establece la configuración de la cultura y la tarea
ya tiene acceso a la internacionalización:
public function execute($arguments = array(), $options = array())
{
$this->log($this->getI18N('fr')->__('some translated text!'));
}
Obviamente no es muy cómodo pasar la cultura en cada llamada, sobre todo cuando
no se modifica mucho en una misma tarea. La próxima sección explica precisamente
cómo conseguirlo.
Puedes sugerir, comentar, criticar e informar de errores en contacto (arroba) librosweb.es
« Anterior
Descubriendo el poder de la línea de comandos (segunda parte)
Siguiente »
Refactorizando las tareas