Kan geen vertaling laden uit de database in symfony 4.3.3

stemmen
1

Ik ben op zoek naar vertalingen uit de database te laden in Symfony 4. De vertaler instantie niet bellen met de aangepaste loader schreef ik het gebruik van deze tutorial ( https://medium.com/@andrew72ru/store-translation-messages-in-database- in symfony-3f12e579df74 ).

Ik creërde dummy bestanden in de /translationmap (messages.it.db) aan de lader te activeren, maar wordt het niet genoemd.

services.yaml

parameters:
    locales: ['it','en']
    db_i18n.entity: App\Entity\Translation
 services:
    translation.loader.db:
        class: App\Loader\DbLoader
        arguments:
          - '@service_container'
          - '@doctrine.orm.entity_manager'
        tags:
          - { name: translation.loader, alias: db}

DbLoader.php

namespace App\Loader;


use Creative\DbI18nBundle\Interfaces\EntityInterface;
use Creative\DbI18nBundle\Interfaces\TranslationRepositoryInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\Translation\Loader\LoaderInterface;
use Symfony\Component\Translation\MessageCatalogue;

class DbLoader implements LoaderInterface
{
    /**
     * @var EntityManagerInterface
     */
    private $doctrine;

    /**
     * @var string
     */
    private $entityClass;

    public function __construct(ContainerInterface $container, EntityManagerInterface $doctrine)
    {
        $this->doctrine = $doctrine;
        $this->entityClass = $container->getParameter('db_i18n.entity');
    }

    public function load($resource, $locale, $domain = 'messages')
    {
        $messages = $this->getRepository()->findByDomainAndLocale($domain, $locale);
        $values = array_map(static function (EntityInterface $entity) {
            return $entity->getTranslation();
        }, $messages);

        $catalogue = new MessageCatalogue($locale, [
            $domain => $values
        ]);

        return $catalogue;
    }

    public function getRepository(): TranslationRepositoryInterface
    {
        return $this->doctrine->getRepository($this->entityClass);
    }
}

Hier is mijn vertaling tafel

Hier is de test code ik gebruik om de vertaler te bellen

TestController.php

class TestController extends AbstractController
{
    /**
     * @Route(/test, name=test)
     */
    public function index(TranslatorInterface $translator)
    {
        $translator->trans('prova', [], 'messages', 'it');

        return new Response();
    }
}

Het resultaat wordt verondersteld om prova it maar ik krijg prova in plaats, dat is de sleutel van de vertaling zijn. Ik heb geprobeerd om een zet dd()op het DbLoader constructeur en het is nooit genoemd.

Ik heb ook in mijn project Api Platform, maar ik denk niet dat het de oorzaak van dit probleem.

De vraag is gesteld op 09/10/2019 om 12:58
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Ik mijn probleem is opgelost.

Door het gebruik van dd()op mijn Translator Zo ontdekte ik dat Symfony niet correct laadde mijn vertaling bestanden. Kijkend door de eigenschappen ik heb gemerkt dat het pad van mijn vertaling bestanden niet correct waren.

Ik plaatste ze in src/Resources/translationsplaats daarvan en vervolgens het werkte!

antwoordde op 17/10/2019 om 14:01
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more