Ver índice de contenidos del libro

8.4. Traducción de Widgets

Los formularios de Symfony incluyen algunos widgets preparados para su internacionalización. De esta forma se pueden adaptar a la cultura establecida por el usuario.

8.4.1. Selectores de fechas

Los widgets disponibles para traducir y adaptar las fechas son los siguientes:

  • El widget sfWidgetFormI18nDate permite introducir fechas (día, mes y año):
$this->widgetSchema['publicado_en'] = new sfWidgetFormI18nDate(array('culture' => 'fr'));
  • También se puede modificar el formato del mes, gracias a la opción month_format que permite elegir entre tres formatos:

    • name, muestra el nombre del mes (este es el formato por defecto)
    • short_name, muestra la abreviatura del nombre del mes
    • number, muestra el número del mes (desde el 1 hasta el 12)
  • El widget sfWidgetFormI18nTime permite introducir valores de tiempo (horas, minutos y segundos):

$this->widgetSchema['publicado_en'] = new sfWidgetFormI18nTime(array('culture' => 'fr'));
  • El widget sfWidgetFormI18nDateTime permite introducir fechas y horas:
$this->widgetSchema['publicado_en'] = new sfWidgetFormI18nDateTime(array('culture' => 'fr'));

8.4.2. Selector de país

El widget sfWidgetFormI18nSelectCountry muestra una lista desplegable con el nombre de todos los países. El nombre de los países se muestra en el idioma correspondiente a la cultura del usuario:

$this->widgetSchema['pais'] = new sfWidgetFormI18nSelectCountry(array('culture' => 'fr'));

Si no se quiere mostrar la lista completa de todos los países del mundo, se pueden restringir sus elementos con la opción countries:

$paises = array('fr', 'en', 'es', 'de', 'nl');
$this->widgetSchema['pais'] = new sfWidgetFormI18nSelectCountry(array('culture'   => 'fr',
                                                                      'countries' => $paises));

8.4.3. Selector de idioma

El widget sfWidgetFormI18nSelectLanguage muestra una lista desplegable con el nombre de varios idiomas del mundo. El nombre de cada idioma se muestra en el idioma correspondiente a la cultura del usuario:

$this->widgetSchema['idioma'] = new sfWidgetFormI18nSelectLanguage(array('culture' => 'fr'));

Si no se quiere mostrar la lista completa de todos los idiomas del mundo, se pueden restringir sus elementos con la opción languages:

$idiomas = array('fr', 'en', 'es', 'de', 'nl');
$this->widgetSchema['idioma'] = new sfWidgetFormI18nSelectLanguage(array('culture'   => 'fr',
                                                                         'languages' => $idiomas));