2

我的默认语言环境是 pl_PL。当我切换到 en_US 时,以下代码给出了预期的结果:

// locale set to en_US
$product = $em->getRepository('model\Product')->find(1);
$category = $em->getRepository('model\ProductCategory')->find(1);
echo $product->getName();
echo $category->getName();

// result
beach ball
summer

但是当我想按模型\产品关联获取类别时,它没有被翻译:

// locale set to en_US
$product = $em->getRepository('model\Product')->find(1);
echo $product->getName();
echo $product->getCategories()->first()->getName();

// result
beach ball
lato - pl_PL instead of en_US

是可翻译的扩展错误还是我的代码有问题?

倾倒:

select id, name from products; select object_id, locale, field, content from products_translations;
 id |     name
----+---------------
  1 | pilka plazowa

 object_id | locale | field |  content
-----------+--------+-------+------------
         1 | en_US  | name  | beach ball

select id, name from products_categories; select object_id, locale, field, content from products_categories_translations;
 id | name
----+------
  1 | lato

 object_id | locale | field | content
-----------+--------+-------+---------
         1 | en_US  | name  | summer

型号\产品

/**
 * @ORM\Table("products")
 * @ORM\Entity(repositoryClass="repository\TranslatableRepository")
 * @Gedmo\TranslationEntity(class="model\ProductTranslation")
 */
class Product {
    /**
     * @Gedmo\Translatable
     * @ORM\Column(type="string", length=255)
     */
    protected $name;
    /**
     * @ORM\OneToMany(targetEntity="model\ProductCategory", mappedBy="product")
     */
    protected $category_list;
}

型号\产品类别

/**
 * @ORM\Table("products_categories")
 * @Gedmo\TranslationEntity(class="model\ProductCategoryTranslation")
 * @ORM\Entity(repositoryClass="repository\TranslatableRepository")
 */
class ProductCategory {
    /**
     * @Gedmo\Translatable
     * @ORM\Column(type="string", length=255)
     */
    protected $name;
}
4

0 回答 0