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 mesnumber
, muestra el número del mes (desde el1
hasta el12
)
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));