在Symfony Forms中的i18n

时间:2011-09-10 15:51:08

标签: forms symfony1 localization internationalization symfony-1.4

有什么办法可以在动作文件中使用format_number_choice函数。实际上我需要将它用于Form错误消息。

'max_size' => 'File is too large (maximum is %max_size% bytes).',

在英语中,它只是“字节”,但在其他语言中,语法在某个值之后发生变化(例如,如果数字大于20,则为:“20 bytes”)。

当然,我可以使用括号,但如果框架为执行此特定操作提供支持,为什么不使用它?!

2 个答案:

答案 0 :(得分:0)

当前在1.4分支中实现的方式,您可以使用il18n XML文件为每条消息定义一个翻译。

您可以做的是创建一个自定义验证程序,它继承当前验证程序(在您的示例中为sfValidatorFile),并在调用其父程序之前在doClean方法中进行大小检查。

我建议您查看来源,了解其工作原理:sfValidatorFile

答案 1 :(得分:0)

处理翻译号码范围的正确方法是explained here in the Definitive Guide。我不会在这里重现它,因为文档本身清晰简洁。但请注意,i18n-extract任务不会自动提取字符串,因此您需要手动添加它 - 再次,文档解释了这一点。

是的,您可以在操作中使用format_number_choice()函数 - 您只需要在操作中加载帮助程序,如下所示:

sfContext::getInstance()->getConfiguration()->loadHelpers('I18N');