Вы не можете найти все непереведенные сообщения с JMSTranslationBundle. Он использует стандартный способ Symfony, чтобы найти их. Чтобы найти все, вам нужно прикрепить сервис к логгеру. Таким образом, вы можете записать непереведенные ключи в базу данных.
Я думаю, это работает только в среде разработки.
<?php
namespace AppBundle\Service;
use AppBundle\Entity\Translation;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Monolog\Handler\AbstractProcessingHandler;
class TranslationLogger extends AbstractProcessingHandler
{
protected $container;
public function __construct (ContainerInterface $container)
{
$this->container = $container;
}
protected function write (array $record)
{
if ($record['channel'] === 'translation')
{
$em = $this->container->get('doctrine.orm.default_entity_manager');
$check = $em->getRepository('AppBundle:Translation')->findBy([ 'transKey' => $record['context']['id'] ]);
if (!$check)
{
$new = new Translation;
$new->setTransKey($record['context']['id']);
$em->persist($new);
$em->flush();
}
}
}
}
services.yml:
services:
appbundle.translation_logger:
class: AppBundle\Service\TranslationLogger
arguments: [ "@service_container" ]