schmittjoh / JMSTranslationBundle

Puts the Symfony2 Translation Component on steroids
http://jmsyst.com/bundles/JMSTranslationBundle
426 stars 292 forks source link

Can't extract from KnpMenu service #502

Open picks44 opened 5 years ago

picks44 commented 5 years ago
Q A
Bundle version 1.4.3
Symfony version 3.4.17

I'm extracting all my translatable items as well as route s perfectly, but not the ones in my Menu.php service that builds a KnpMenuBundle object... It's working fine in one of my project under SF 2.8 but not today... Any clue?

My config

jms_translation:
    configs:
        app:
            dirs: ["%kernel.root_dir%/Resources/views", "%kernel.root_dir%/../src"]
            output_dir: "%kernel.root_dir%/Resources/translations"
            excluded_names: ["*TestCase.php", "*Test.php"]
            excluded_dirs: [cache, data, logs]
            extractors: [jms_i18n_routing]

And my Menu.php (located in src/AppBundle/Service)

<?php

namespace AppBundle\Service;

use Knp\Menu\FactoryInterface;

/**
 * Class Menu
 * @package AppBundle\Menu
 */
class Menu
{
    /**
     * @var FactoryInterface
     */
    private $factory;

    /**
     * Menu constructor.
     * @param FactoryInterface $factory
     */
    public function __construct(FactoryInterface $factory)
    {
        $this->factory = $factory;
    }

    /**
     * @return \Knp\Menu\ItemInterface
     * @throws \InvalidArgumentException
     */
    public function createMainMenu()
    {
        $menu = $this->factory->createItem('root');
        $menu->setChildrenAttribute('class', 'navbar-nav ml-auto');

        $menu->addChild('Accueil', [
            'route' => 'index'
        ])->setAttribute('class', 'nav-item')->setExtra('translation_domain', 'menu');
        $menu['Accueil']->setLinkAttribute('class', 'nav-link');

        $menu->addChild('Projets', [
            'route' => 'projects',
            'extras' => [
                'routes' => [
                    [
                        'route' => 'project'
                    ],
                ],
            ],
        ])->setAttribute('class', 'nav-item')->setExtra('translation_domain', 'menu');
        $menu['Projets']->setLinkAttribute('class', 'nav-link');

        $menu->addChild('Contact', [
            'route' => 'contact'
        ])->setAttribute('class', 'nav-item')->setExtra('translation_domain', 'menu');
        $menu['Contact']->setLinkAttribute('class', 'nav-link');

        return $menu;
    }
}