2009-11-12 9 views
1

우리는 필드의 필터에서 관리자 생성 프로그램에 있습니다. 번역 할 때 가장 명확한 방법은 양식 필드 아래의 빈 라벨입니까?Symfony - admin - FormFilter - 비어 있음 - i18n

나는 BaseFormFilterDoctrine 마녀에서 자신의 setWidgets 및 setWidgets에 의해 그것을 해결했습니다. 빈 (empty_label)을 번역하여 상위 메소드를 확장합니다.

  • setWidgets는 -

에게 그것을 (연장 필터 클래스에 대한) 하나 개의 필터 필드 empty_label 번역 - (베이스 필터 클래스) 형 필터

  • setWidget 모든 empty_label에게 S 변환 작동하지만, 더러운 것 같아요. 좀 더 깨끗한 것을 찾고 있는데

  • 답변

    0

    왜 고약하다고 생각하십니까? 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'); 
         } 
        } 
        } 
    } 
    
    +0

    그게 +/- 내 코드 :)하지만 당신이 슬픈 것처럼 그것은 해킹입니다. 나는 그것을 분명히하고 싶다. BTW : 귀하의 솔루션을 확장 클래스 정의 된 필터 필드를 번역 할 생각하지 않습니다 myTableFormFilter 번역 할 수 있지만 baseMytableFormFilter – Mailo

    +1

    다른 방법으로 생각하지 않습니다. symfony 현지화 시스템에 전달되지 않은 문자열이기 때문에 (trac.symfony-project.org/ticket/5651에 명시된대로 해결되지 않을 것입니다) 설계상의 문제이므로이 해킹을 피하는 방법이 없습니다 – gpilotino

    +0

    업데이트 : symfony 1.3에서 다소 수정 된 것 같습니다 : http://www.symfony-project.org/tutorial/1_4/en/whats-new (기본 오류 메시지) – gpilotino

    0

    당신이 이런 식으로 수행 할 수 있습니다 이제

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

    (심포니 1.4)이 작업을 수행 할 수 있습니다 단지 메시지로

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

    을 추가하여 .xx.xml

    관련 문제