如何在实体内使用翻译服务?

lep*_*pix 6 php entity translation symfony

假设我有一个User实体:

$user = new User(007);
echo $user->getName(); // display Bond
echo $user->getGender(); // display "Male";
echo $user->getDesignation() // display "Monsieur Bond" or "Mister Bond"
Run Code Online (Sandbox Code Playgroud)

有了这个功能:

public function getDesignation() {
  if ($this->getGender() == 'Male') return "Monsieur ".$this->getName();
  else return "Madame ".$this->getName();
}
Run Code Online (Sandbox Code Playgroud)

如何使用此实体内的翻译服务翻译"Monsieur"和"Madame"?

似乎翻译服务应该只在Controller内部使用,但我认为在这种情况下在这个实体中使用它是合适的.

Sil*_*nce 8

与您说的一样,翻译服务是一种"服务",您可以在任何类中使用服务(即将其定义为服务并使用依赖注入器容器).因此,您几乎可以在任何地方使用翻译器.

但像aldo这样的实体说不应该有这种责任.在最糟糕的情况下,如果您真的想要在实体内部翻译内容,您可以使用set方法将翻译器传递给实体,即

$entity->setTranslator($translator);
Run Code Online (Sandbox Code Playgroud)

但我也建议您创建一个处理实体外部问题的类,即使用twig模板

{{ entity.property|trans }}).
Run Code Online (Sandbox Code Playgroud)

  • 哇啊!我不知道 {{ $variable | 反式 }} 函数。我相信它只能使用纯文本(而不是变量)。非常感谢 ! (2认同)