覆盖翻译后备symfony 2

时间:2015-02-22 18:45:07

标签: symfony doctrine

我有一个symfony 2项目,在后端和前端都支持2种语言。我已在配置中启用了转换回退,以允许管理员查看所有数据库记录,无论他选择在后端使用何种语言。但是,对于网站的前端,我希望禁用后备。如何仅在我想要的控制器中覆盖从true到false的转换回退?

我在我的实体中使用Gedmo可翻译来翻译特定列。

谢谢。

2 个答案:

答案 0 :(得分:1)

当前用户的语言环境存储在请求中,可通过请求对象访问,如下所示:

use Symfony\Component\HttpFoundation\Request;

public function indexAction(Request $request)
{
    $locale = $request->getLocale();

    $request->setLocale('en_US');
}

更多详情here

我认为这就是你要找的东西。 使用此功能,您可以覆盖区域设置。

如果您想设置后备区域设置,您也可以使用:

$translator->setFallbackLocale(array('en'));

给出here

的更多详情

希望这会对你有所帮助。

答案 1 :(得分:0)

我发现它http://blog.lazycloud.net/symfony2-doctrine2-extentions-translatable/

显然我应该在我的实体中添加一个$ locale属性,并在其上面设置注释* @Gedmo \ Locale。然后我可以使用它来覆盖实体的默认回退,方法是将语言环境设置为我希望的任何语言,然后调用$ em-> refresh($ entity)