【问题标题】:i18n in Symfony FormsSymfony 表单中的 i18n
【发布时间】:2011-11-14 10:18:17
【问题描述】:

有什么方法可以在动作文件中使用format_number_choice 函数。事实上,我需要将它用于表单错误消息。

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

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

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

【问题讨论】:

    标签: forms symfony1 localization internationalization symfony-1.4


    【解决方案1】:

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

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

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

    【讨论】:

    • 这是一般的操作。我需要使用format_number_choice() 作为验证器的错误消息。
    【解决方案2】:

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

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

    我建议你看看源代码,看看它是如何工作的:sfValidatorFile

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多