Если необходимо предварительно переводить с русского на английский:
# services.yml
app.transliterator:
class: AppBundle\Gedmo\Sluggable\SluggableTransliterator
arguments:
- @remedge.yandex_translate.manager
gedmo.listener.sluggable:
class: Gedmo\Sluggable\SluggableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
- [ setTransliterator, [ [@app.transliterator, 'translate'] ] ]
# AppBundle/Gedmo/Sluggable/SluggableTransliterator.php
namespace AppBundle\Gedmo\Sluggable;
use Gedmo\Sluggable\Util\Urlizer;
use Remedge\YandexTranslateBundle\Manager\TranslateManager;
class SluggableTransliterator extends Urlizer
{
/** @var TranslateManager */
private $translator;
/**
* @param TranslateManager $translator
*/
public function __construct(TranslateManager $translator)
{
$this->translator = $translator;
}
public function translate($text, $separator = '-')
{
$text = $this->translator->translate($text, 'ru-en');
return self::urlize($text, $separator);
}
}
Важно не переопределять в данном случае функцию transliterate, т.к. она статическая - лучше выбрать другое имя, например translate как в примере.