{ public $translateSubjects = array(); public function __construct() { } public function translate($subject, $parameters = array()) { $this->translateSubjects[] = $subject; return sprintf('translation[%s]', $subject); } } class WidgetFormStub extends sfWidget { public function __construct() { } public function render($name, $value = null, $attributes = array(), $errors = array()) { return sprintf('##%s##', __CLASS__); } } $t = new lime_test(2); // ->render() $t->diag('->render()'); $ws = new sfWidgetFormSchema(); $ws->addFormFormatter('stub', $formatter = new FormFormatterMock()); $ws->setFormFormatterName('stub'); $w = new sfWidgetFormDateRange(array('from_date' => new WidgetFormStub(), 'to_date' => new WidgetFormStub())); $w->setParent($ws); $t->is($w->render('foo'), 'translation[from ##WidgetFormStub## to ##WidgetFormStub##]', '->render() remplaces %from_date% and %to_date%'); $t->is($formatter->translateSubjects, array('from %from_date% to %to_date%'), '->render() translates the template option');