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)

Refactorizando las tareas
Los contenidos originales de este sitio están bajo una licencia de Creative Commons. Las traducciones disponen cada una de su propia licencia.