来自数据库的 Symfony2 REST 翻译

Symfony2 REST Translation from database

我面临着非常困难的问题来处理我的情况。我在数据库中保存标题,en 的名称是 title,翻译列的名称是 bntitle。

现在我将 FosRest 与 jms 序列化程序一起使用来提供 api 响应。但我找不到一种方法来发送基于本地的响应。因为它总是调用

getTitle()

获取标题的方法,我的问题是如果本地是 en 那么标题键将是 getTitle() 如果本地是 bn 标题应该调用 getBnTitle();

这个控制器:

public function getAction(Content $entity, Request $request)
{
   $locale =  $request->getLocale();
   $data = array();

   $data['_embedded']['content'] = $entity;

    eturn $data;

}

我该怎么做?

这肯定不是处理翻译的最佳方式,但如果您只需要它作为标题属性,您可以将本地作为参数传递给实体,然后在 getTitle() 方法中执行测试。

public class YourEntity{
    private $locale ;
    //......

    public function setLocale($locale){
       $this->locale = $locale
    }
    public function getTitle(){ 
      // your test here 
      if ( $locale === 'bn' ) return $this->getBnTitle();
      return $title ; 
    }

然后在你的控制器中:

public function getAction(Content $entity, Request $request)
{
   $locale =  $request->getLocale();
   // pass local to entity 
   $entity->setLocale($locale);
   $data = array();

   $data['_embedded']['content'] = $entity;

    eturn $data;

}

编辑: 如果你想要一个更好的解决方案,有很多学说扩展可以进行翻译,其中之一就是这个 https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md