在Symfony控制器上获取翻译文本
我在在Symfony控制器上获取翻译文本,symfony,symfony-2.1,Symfony,Symfony 2.1,我在/Resources/translations位置上有一个名为messages.en.yml的翻译文件,如下所示: company: messages: schedule: success: Schedule saved successfully failed: Something went wrong on saving schedule 现在,我需要按此处的键调用此消息: $this->get('ses
/Resources/translations
位置上有一个名为messages.en.yml
的翻译文件,如下所示:
company:
messages:
schedule:
success: Schedule saved successfully
failed: Something went wrong on saving schedule
现在,我需要按此处的键调用此消息:
$this->get('session')->getFlashBag()->add(
'success',
'%company.messages.schedule.success%'
);
我尝试了很多方法,但无法解决这个问题。不幸的是,翻译flash包中的关键翻译是不可能的。 您可以创建一个自定义服务,作为依赖项
- 翻译器
- 会议
use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Translation\Translator;
class FlashBagTranslator
{
/** @var Translator $translator */
private $translator;
/** @var FlashBag $flashBag */
private $flashBag;
public function __construct(Translator $translator, Session $session)
{
$this->translator = $translator;
$this->flashBag = $session->getFlashBag();
}
public function addMessage($type, $translationKey, array $parameters = [], $domain = null, $locale = null)
{
$message = $this->translator->trans($translationKey, $parameters, $domain, $locale);
if ($message === $translationKey) {
// Your translation isn't findable, do something :)
return false;
}
$this->flashBag->add($type, $message);
return true;
}
}
有点失望,不是吗 不幸的是,不可能翻译flash包中的关键翻译 您可以创建一个自定义服务,作为依赖项
- 翻译器
- 会议
use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Translation\Translator;
class FlashBagTranslator
{
/** @var Translator $translator */
private $translator;
/** @var FlashBag $flashBag */
private $flashBag;
public function __construct(Translator $translator, Session $session)
{
$this->translator = $translator;
$this->flashBag = $session->getFlashBag();
}
public function addMessage($type, $translationKey, array $parameters = [], $domain = null, $locale = null)
{
$message = $this->translator->trans($translationKey, $parameters, $domain, $locale);
if ($message === $translationKey) {
// Your translation isn't findable, do something :)
return false;
}
$this->flashBag->add($type, $message);
return true;
}
}
有点失望,不是吗 试试这个
$this->get('session')->getFlashBag()->add(
'success',
$this->get('translator')->trans('company.messages.schedule.success')
);
此外,需要在配置中启用:
framework:
default_locale: 'en'
translator:
fallbacks: ['en']
查看官方文档:试试这个
$this->get('session')->getFlashBag()->add(
'success',
$this->get('translator')->trans('company.messages.schedule.success')
);
此外,需要在配置中启用:
framework:
default_locale: 'en'
translator:
fallbacks: ['en']
检查官方文件:不,它不工作。它返回company.messages.schedule.successno它不工作。它返回company.messages.schedule.successyes。我认为是这样。但是我没有任何关于如何在FlashBag上添加翻译的参考资料。我会在我的答案中添加一些代码,让我花几分钟:)@nifCody你没有验证答案:/yes。我认为是这样。但是我没有任何关于如何在FlashBag上添加翻译的参考资料。我会在我的答案中添加一些代码,让我花几分钟:)@nifCody你没有验证答案:/mable duplicate of mable duplicate of the