2017-02-17 5 views
1

저는 StofDoctrineExtensionsBundle의 개인 번역을 사용합니다. 내 응용 프로그램을 구성했지만 번역 된 레이블을 검색 할 수 없기 때문에 항상 기본 텍스트를 얻습니다. config.ymlDoctrine Extension 번역이 번역을 검색하지 않습니다

# Doctrine Configuration 
doctrine: 
    orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     naming_strategy: doctrine.orm.naming_strategy.underscore 
     auto_mapping: true 
     mappings: 
      menu_tree: 
       type: annotation 
       prefix: Gedmo\Tree\Entity 
       dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity" 
       alias: MenuTree 
       is_bundle: false 
      gedmo_translatable: 
       type: annotation 
       prefix: Gedmo\Translatable\Entity 
       dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity" 
       alias: GedmoTranslatable # (optional) it will default to the name set for the mapping 
       is_bundle: false 
      gedmo_translator: 
       type: annotation 
       prefix: Gedmo\Translator\Entity 
       dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translator/Entity" 
       alias: GedmoTranslator # (optional) it will default to the name set for the mapping 
       is_bundle: false 

stof_doctrine_extensions: 
    default_locale: "%locale%" 
    translation_fallback: true 
    orm: 
     default: 
      tree: true 
      translatable: true 
      sluggable: true 

그럼 난 내 개인 법인을 쓴이는 MenuItem을

<?php 

namespace App\Entity\Menu; 

use Doctrine\ORM\Mapping as ORM; 
use Gedmo\Mapping\Annotation as Gedmo; 

/** 
* 
* @ORM\Table(name="mnu_item") 
* @ORM\Entity(repositoryClass="App\Repository\Menu\MenuItem") 
* @Gedmo\Tree(type="nested") 
* @Gedmo\TranslationEntity(class="App\Entity\Menu\MenuItemTranslation") 
*/ 
class MenuItem{ 

    /** 
    * 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", options={"unsigned"=true}) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * 
    * @var string 
    * @Gedmo\Translatable 
    * @ORM\Column(name="label", type="string", length=255, nullable=true) 
    */ 
    private $label; 

    /** 
    * @Gedmo\Locale 
    * Used locale to override Translation listener`s locale 
    * this is not a mapped field of entity metadata, just a simple property 
    * and it is not necessary because globally locale can be set in listener 
    */ 
    private $locale; 

    /** 
    * @ORM\OneToMany(targetEntity="\App\Entity\Menu\MenuItemTranslation", 
    *    mappedBy="object", 
    *    cascade={"persist", "remove"}) 
    */ 
    private $translations; 

    /** 
    * @var \App\Entity\Menu\Menu 
    * 
    * @ORM\ManyToOne(targetEntity="App\Entity\Menu\Menu", inversedBy="menuItems") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="menu_id", referencedColumnName="id", onDelete="CASCADE") 
    * }) 
    */ 
    private $menu; 


    /** 
    * Constructor 
    */ 
    public function __construct() { 
     $this->ruoli = new \Doctrine\Common\Collections\ArrayCollection(); 
     $this->children = new \Doctrine\Common\Collections\ArrayCollection(); 
    } 

    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() { 
     return $this->id; 
    } 

    /** 
    * Set label 
    * 
    * @param string $label 
    * 
    * @return MenuItem 
    */ 
    public function setLabel($label) { 
     $this->label = $label; 

     return $this; 
    } 

    /** 
    * Get label 
    * 
    * @return string 
    */ 
    public function getLabel() { 
     return $this->label; 
    } 

    /** 
    * Set menu 
    * 
    * @param \App\Entity\Menu\Menu $menu 
    * 
    * @return MenuItem 
    */ 
    public function setMenu(\App\Entity\Menu\Menu $menu = null) { 
     $this->menu = $menu; 

     return $this; 
    } 

    /** 
    * Get menu 
    * 
    * @return \App\Entity\Menu\Menu 
    */ 
    public function getMenu() { 
     return $this->menu; 
    } 

    /** 
    * 
    * @return type 
    */ 
    public function getTranslations(){ 
     return $this->translations; 
    } 

    /** 
    * 
    * @param \App\Entity\Menu\MenuItemTranslation $t 
    */ 
    public function addTranslation(MenuItemTranslation $t){ 
     if (!$this->translations->contains($t)) { 
      $this->translations[] = $t; 
      $t->setObject($this); 
     } 
    } 

    public function setTranslatableLocale($locale){ 
     $this->locale = $locale; 
    } 
} 

가 적어도 내가 번역 한

<?php 
namespace App\Entity\Menu; 

use Doctrine\ORM\Mapping as ORM; 
use Gedmo\Translatable\Entity\MappedSuperclass\AbstractPersonalTranslation; 

/** 
* Description of MenuItemTranslation 
/* 
* @ORM\Entity 
* @ORM\Table(name="mnu_menu_item_translations", 
*  uniqueConstraints={@ORM\UniqueConstraint(name="lookup_unique_idx", columns={ 
*   "locale", "object_id", "field" 
*  })} 
*) 
*/ 
class MenuItemTranslation extends AbstractPersonalTranslation { 

    /** 
    * Convenient constructor 
    * 
    * @param string $locale 
    * @param string $field 
    * @param string $value 
    */ 
    public function __construct($locale, $field, $value) 
    { 
     $this->setLocale($locale); 
     $this->setField($field); 
     $this->setContent($value); 
    } 

    /** 
    * @ORM\ManyToOne(targetEntity="App\Entity\Menu\MenuItem", inversedBy="translations") 
    * @ORM\JoinColumn(name="object_id", referencedColumnName="id", onDelete="CASCADE") 
    */ 
    protected $object; 

} 

내 번역기 클래스를 내 label 및 작동하지만, 나뭇 가지 tempate에서 item.label 또는 item.getLabel()을 사용하여 항상 기본 메뉴를 가져옵니다. 상품 가치 (예 : 테스트,

메뉴 항목

MenuItem

메뉴 항목 번역

MenuItemTranslation

답변

1

내가 로케일 엉망 한) 이미지를 볼 수 PROVA의 insted. 나는 stof의 설정을 변경 '내 사이트 왜냐하면 영어로 모든 내가 내가 stof의 설정을 변경 그래서 올바른 그런 다음

입니다

stof_doctrine_extensions: 
    default_locale: "%locale%" #this is my error, just remove this line 
           # to set it back to en_US (default value). 
           # This indicates the locale of original table, 
           # if it's set to the same 
           # locale of the entire system it won't 
           # retrieve any translation 
    translation_fallback: true 
    orm: 
     default: 
      tree: true 
      translatable: true 
      sluggable: true 

이탈리아어 번역이 필요합니다'내 사이트 왜냐하면이 영어로 모든이며, 나는 이탈리아어 번역이 필요하다.

stof_doctrine_extensions: 
    translation_fallback: true 
    orm: 
     default: 
      tree: true 
      translatable: true 
      sluggable: true