2017-04-24 29 views
1

我創建了一個表格:如何在createView上翻譯表單?

$data = new Task(); 
$form = $this->createForm(TaskType::class, $data); 

class TaskType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('name', TextType::class, [ 
       'label' => 'name' 
      ]) 
     /* .... */ 
    } 
} 

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults([ 
     'data_class' => Task::class, 
     'translation_domain' => 'task' 
    ]); 
} 

$form->createView()後,我在表單標籤沒有翻譯。 在config.yml啓用譯者:

framework: 
    translator: { fallbacks: ['%locale%'] } 

在app /資源/翻譯/ task.ru.yml:

name: Название задачи 
responsible: Ответственный 
status: Статус 
dateStart: Начало 
planDateEnd: Окончание 
description: Описание 
dayCount: Число дней 
file: Документы 
notifications: Уведомления 
watchers: Наблюдателе 
complete: '% завершения' 

我能翻譯標籤,而不發送翻譯器組件的形式上課?

+0

你檢查分析器工具欄?它有一個失蹤翻譯圖標,可以幫助您調試問題。你能發佈你的翻譯文件的外觀嗎? – dbrumann

+0

你有文件app/Resources/translations/task.xx.yy嗎? xx =語言環境,yy =擴展名 – Veas

+0

,並且您的config.yml中是否啓用了翻譯功能?是您選擇的語言設置的默認語言? –

回答

0

您可以在$ form-> createView()之後手動翻譯標籤。

(未測試的代碼)

$view = $form->createView(); 
$trans = $this->get('translator'); 

foreach ($view->children as $name => $child) 
{ 
    if (isset($child->vars['label'])) 
    { 
     $view->children[$name]->vars['label'] = $trans->trans($child->vars['label']); 
    } 
} 
+0

這個我知道。我想在createView自動翻譯。 –

+0

你可以爲它寫一個服務 – Veas