2017-12-13 10 views
2

現在、FormBuilderを使用してフォームを作成すると、Symfony(3.3.5)は、指定されたロケールの翻訳メッセージがないことを示す警告をプロファイラに表示します。フォームラベルの翻訳へのアクセス

私はsymfonyのマニュアルの指示に従っていますが、それでも問題は解決しません。

私の翻訳ファイルは次の場所にあります。app/Resources/translations/properties.fr.yml と私のconfig.ymlファイルは次のようになります。

parameters: locale: fr framework: translator: fallbacks: ['%locale%'] paths: - '%kernel.project_dir%/app/Resources/translations'

ファイルちょうどこの含まれています

properties: 
    zipcode: 
     label: 'Code postal du bien' 

をし、最終的にフォームがありますこのように作成されました:

$property = new Properties(); 
$form = $this->createFormBuilder($property) 
    ->add('zipCode', Type\IntegerType::class, array(
    'attr' => array(
     'min' => '10000', 
     'max' => '99999' 
    ), 
    'label' => 'properties.zipcode.label' 
)) 
    ->getForm(); 

なぜ私の翻訳ファイルが使用されていないのですか?

答えて

2

あなたはこのようなあなたのフィールドに属性を追加する必要があります

$property = new Properties(); 
$form = $this->createFormBuilder($property) 
    ->add('zipCode', Type\IntegerType::class, array(
    'translation_domain' => 'yourDomain', 
    'attr' => array(
     'min' => '10000', 
     'max' => '99999' 
    ), 
    'label' => 'properties.zipcode.label' 
)) 
    ->getForm(); 

をあなたのドメイン(ファイル名)で「YOURDOMAIN」を交換してください。これが役立つことを願っています。

2

ドメイン変換ドメインは「メッセージ」です。だから、あなたはproperties.fr.ymlをmessages.fr.ymlに変更することができます。もう1つの可能性は、次のように翻訳ドメインを変更することです:

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults([ 
     'data_class'   => 'Acme\Entity\DemoEntity', 
     'translation_domain' => 'properties' 
    ]); 
} 
関連する問題