3
我已經使用了Translatable Doctrine extension翻譯學說實體:Symfony的形式可翻譯主義實體
<?php
namespace Myapp\ProductBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Gedmo\Translatable\Translatable;
/**
* @ORM\Table(name="product_property")
* @ORM\Entity()
* @Gedmo\TranslationEntity()
*/
class Property implements Translatable
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Gedmo\Translatable
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @ORM\OneToMany(
* targetEntity="PropertyTranslation",
* mappedBy="object",
* cascade={"persist", "remove"}
*)
*/
private $translations;
/**
* @Gedmo\Locale
* Used locale to override Translation listener`s locale
* this is not a mapped field of entity metadata, just a simple property
*/
private $locale;
public function setTranslatableLocale($locale)
{
$this->locale = $locale;
}
public function getTranslations()
{
return $this->translations;
}
public function addTranslation(PropertyTranslation $t)
{
if (!$this->translations->contains($t)) {
$this->translations[] = $t;
$t->setObject($this);
}
}
}
現在,我想呈現形式輸入字段的「姓名」財產在我的翻譯中可用的每種語言。
這最好的做法是什麼?
你嘗試創建一個擴展AbstractType建立自己的形式的屬性類型類?您可以指定translation_domain。請點擊此處:http://symfony.com/doc/master/reference/forms/types/form.html#translation-domain –
是的,'translation_domain'指定用於表單標籤的翻譯域。這裏的問題是我如何添加字段,讓我一次輸入'name'字段的多個翻譯,例如3個字段:「名稱 - 英語」,「名稱 - 德語」,「名稱 - 法語」。 – phidah
是的,您可以使用'translate_domain'來指定翻譯文件。 FOSUserBundle似乎很好地實現了這個系統。 FormType:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Form/Type/RegistrationFormType.php翻譯:https://github.com/FriendsOfSymfony/FOSUserBundle/tree/master/Resources/translations –