【问题标题】:Symfony - admin - FormFilter - is empty - i18nSymfony - 管理员 - FormFilter - 为空 - i18n
【发布时间】:2009-11-12 10:13:59
【问题描述】:

我们在字段过滤器中的管理员生成器中。最清晰的翻译方式是表单字段下的空标签?

我已经通过自己的 setWidgets 和 BaseFormFilterDoctrine 中的 setWidgets 解决了这个问题,它通过翻译空(empty_label)来扩展父方法。

  • setWidgets - 翻译表单过滤器中的所有 empty_labels(用于基本过滤器类)
  • setWidget - 为一个过滤器字段翻译 empty_label(用于扩展过滤器类)

它有效,但我认为它很讨厌。我正在寻找更干净的东西

【问题讨论】:

    标签: symfony1 filter internationalization admin


    【解决方案1】:

    现在(Symfony 1.4)你可以通过添加来做到这一点

    <trans-unit>
      <source>is empty</source>
      <target>my translation</target>
    </trans-unit>
    

    进入messages.xx.xml

    【讨论】:

      【解决方案2】:

      为什么你觉得它很讨厌?我认为破解 BaseFormFilterDoctrine 类是要走的路。我通常会这样做:

      abstract class BaseFormFilterDoctrine extends sfFormFilterDoctrine
      {
        public function setup()
        {
          parent::setup();
          foreach ($this->widgetSchema->getFields() as $name => $widget) {
            if ($widget->getOption('empty_label')) {
              $widget->setOption('empty_label', 'my internationalized string');
            }
          }
        }
      }
      

      【讨论】:

      • 那是 +/- 我的代码 :) 但你很难过它是 hack。我想把它说清楚。顺便说一句:我认为您的解决方案不会翻译扩展 1234562 中定义的过滤器字段 => myTableFormFilter 不会被翻译,但 baseMytableFormFilter 会
      • 我认为没有其他方法。那是因为它没有传递给 symfony 本地化系统的字符串(并且这永远不会像 trac.symfony-project.org/ticket/5651 中所述的那样被修复),所以这是一个设计问题,afaik 没有办法绕过这个黑客跨度>
      • 更新:它看起来在 symfony 1.3 中有些固定:symfony-project.org/tutorial/1_4/en/whats-new(默认错误消息)
      【解决方案3】:

      你可以这样做:

      $translated_text = $this->widgetSchema->getFormFormatter()->translate('String to translate');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多