2017-11-10 3 views
0

を上書き:私は、エンティティのフィールドを持つフォームを作成しようとしているsymfonyの - 私はカテゴリを持つテーブルを持っており、それは次のようになりますので、代わりに、すべての言語の名前の欄を有していると、私は翻訳を格納していentity_widget

1 2 category.macbook_12.name img-12 category.macbook_12.title category.macbook_12.title macbook-12.jpg 0 
2  category.macbook.name macbook category.macbook.title category.macbook.description macbook.jpg 0 
3 2 category.macbook_air.name macbook-air category.macbook_air.title category.macbook_air.description macbook-air.jpg 0 
4 3 category.macbook_air_11.name macbook-air-11 category.macbook_air_11.title category.macbook_air_11.description macbook-air-11.jpg 0 
5 3 category.macbook_air_13.name macbook-air-13 category.macbook_air_13.title category.macbook_air_13.description macbook-air-13.jpg 0 
6 2 category.macbook_pro.name macbook-pro category.macbook_pro.title category.macbook_pro.description macbook-pro.jpg 0 
7 6 category.macbook_pro_13.name macbook-pro-13 category.macbook_pro_13.title category.macbook_pro_13.description macbook-pro-13.jpg 0 
.... 

。このように:

->add('categories', EntityType::class, [ 
       'class' => Category::class, 
       'choice_label' => 'name', 
       'placeholder' => 'form.product.category.placeholder' 
      ]) 

名前カテゴリは翻訳されていませんが、翻訳されません。

entity_widgetをカスタマイズしてtransを追加する必要がありますが、エンティティからデータを取得する方法がわからないため、元のものを見つけることができません。

元のentity_widgetはどこにありますか? 翻訳を強制する別の方法がありますか?

おかげ

+0

どのファイルに翻訳が保存されていますか? – DOZ

+0

@DOZ category.yml – user8810516

+0

あなたのプレースホルダーを翻訳するために、あなたの翻訳をmessages.LANG.ymlに入れておく必要があります – DOZ

答えて

1

あなたは、フォームでの選択を翻訳したい場合は、

choice_translation_domain => 'messages'を設定することができます。

あなたの翻訳は、ディレクトリ

  • app/Resources/translationsディレクトリに存在する必要があります。
  • app/Resources/<bundle_name>/translationsディレクトリ。
  • Resources/translations/ディレクトリをバンドルしています。

via Docs

と@DOZが言ったように、ファイルmessages.{NEEDED_LANGUAGE}.ymlに格納されています。

NEEDED_LANGUAGEは、短い(en、de、ru、pl)または長い(en_US、en_AU、en_GB)にすることができます。

また、必要に応じてNEEDED_LANGUAGE表記を使用して翻訳の名前を付けることができます。したがって、あなたのcategory.ymlファイルはcategory.en.ymlという名前でなければならず、翻訳ディレクトリに保存しなければなりません。

カスタムファイルの翻訳を使用するには、各フィールドまたはglobigファイルに手動でtranslation_domainとchoice_translation_domainを手動で設定する必要があります。

# src/{BUNDLE_NAME}/Resources/translations/messages.en.yml (based on symfony version) 
category: 
    macbook_12.name: "Macbook 12" 
    macbook_12.title: "Macbook 12` laptop" 
    macbook.name: "Macbook" 
    macbook.title: "Macbook laptop" 
form.product.category.placeholder: "Awesome macbooks here!" 
# ... and yet 
関連する問題