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.
Los widgets disponibles para traducir y adaptar las fechas son los siguientes:
sfWidgetFormI18nDate permite introducir fechas (día, mes y año):$this->widgetSchema['publicado_en'] = new sfWidgetFormI18nDate(array('culture' => 'fr'));
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 el 1 hasta el 12)sfWidgetFormI18nTime permite introducir valores de tiempo (horas, minutos y segundos):$this->widgetSchema['publicado_en'] = new sfWidgetFormI18nTime(array('culture' => 'fr'));
sfWidgetFormI18nDateTime permite introducir fechas y horas:$this->widgetSchema['publicado_en'] = new sfWidgetFormI18nDateTime(array('culture' => 'fr'));
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));
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));
Capítulo original en inglés Chapter 8 - Internationalization and Localization Traducido por Javier Eguíluz