请查看以下代码:
public function __construct($error_code)
{
$translator = new Translator('en');
$translator->addLoader('yaml', new YamlFileLoader());
$translator->addResource('yaml', dirname(__DIR__).'/Resources/translations/messages.en.yml', 'en');
$this->setErrorCode($translator->trans($error_code));
}
我是symfony的新手。我创建了一个扩展Exception的类MyProjectExceptions。现在当我必须抛出一个自定义异常时,我调用这个类来获取$ error_code。现在这个$ error_code是另一个类的常量,它的语言环境在MyBundle / Resources / transalations / messages.en.yml中,它将被用作异常消息。
现在我的问题如下:
在上面的代码中,我正在创建一个Translator类的实例并手动传递' en'。但它应该选择默认语言环境或用户设置语言环境。 我尝试了很多解决方案,但无法获得理想的结果。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:-1)
您需要将您的课程注册为Symfony服务。阅读文档:http://symfony.com/doc/current/book/service_container.html#creating-configuring-services-in-the-container
之后,您可以在构造函数中注入其他服务(如Translation)。它将使用您已设置的所有参数。
如果您注入翻译服务,它将选择您已设置的参数。例如,如果您在config.yml
处为转换程序定义了参数(包括默认语言环境),那么您使用路由中的参数覆盖此语言环境,您将获得使用此语言环境设置的转换程序服务。它将自动使用在适当目录中存放的资源。