【发布时间】:2011-10-23 15:15:57
【问题描述】:
我想问你,如何翻译 generator.yaml 文件中的字段标签。一般如何翻译yaml文件的内容?
例如:
config:
actions: ~
fields:
name:
label: Name
如何使“姓名”可翻译?
提前致谢和波兰的良好祝愿:)
皮奥特雷克
【问题讨论】:
我想问你,如何翻译 generator.yaml 文件中的字段标签。一般如何翻译yaml文件的内容?
例如:
config:
actions: ~
fields:
name:
label: Name
如何使“姓名”可翻译?
提前致谢和波兰的良好祝愿:)
皮奥特雷克
【问题讨论】:
你真的不需要做任何事情。无论您的标签来自 generator.yml 还是来自您的 ModelForm 类,最终您的标签字符串都会通过处理翻译的 sfWidgetFormSchemaFormatter::translate 方法。
【讨论】:
您需要监听 form.post_configure 事件。我通常在我的项目配置类中有这个,如下所示:
class ProjectConfiguration extends sfProjectConfiguration
{
public function setup()
{
$this->dispatcher->connect('form.post_configure', array($this, 'listenToFormPostConfigure'));
}
/**
* Listens to the command.post_command event.
*
* @param sfEvent An sfEvent instance
* @static
*/
static function listenToFormPostConfigure(sfEvent $event)
{
sfProjectConfiguration::getActive()->loadHelpers('I18N');
$form = $event->getSubject();
$widgetSchema = $form->getWidgetSchema();
foreach ($form->getValidatorSchema()->getFields() as $fieldName => $validator)
{
if (isset($widgetSchema[$fieldName]))
{
$label = $widgetSchema[$fieldName]->getLabel() ? $widgetSchema[$fieldName]->getLabel()
: sfInflector::humanize($fieldName);
$label = __($label);
$asterisk = $validator->getOption('required') ? ' *' : null;
$widgetSchema[$fieldName]->setLabel($label . $asterisk . ' :');
}
}
}
}
这将在所需标签上附加一个星号并翻译标签。希望对你也有用。
【讨论】: