<?php
namespace App\Service;
use App\Entity\AdapterContent;
use App\Entity\Category;
use App\Entity\Package;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
class TraduireContenu{
private $doctrine;
function __construct(ManagerRegistry $doctrine)
{
$this->doctrine=$doctrine;
}
function retourTrad($instance, $langue){
//récupérer la liste des adapter
$adapters = $instance->getAdapterContent();
//renvoie l'instance s'il n'y a pas d'adapter, car il n'y a pas de traduction
if(!$adapters) return $instance;
//récupérer la liste des webContent via l'adapter
foreach($adapters->getContents() as $webContent){
//récupération de la langue
$langueFromWebContent = $webContent->getLangueContent()->getName();
if($langueFromWebContent == $langue){
//récupérer l'entité catégorie traduit dans la langue voulu
$entity=$webContent->getContentTranslated()->getEntityNotNull();
return $this->getReadEntity($entity);
}
}
// il n'y a pas de traduction dans la langue voulue, donc on renvoie l'instance de base
return $instance;
}
function getReadEntity($entity){
if($entity instanceof Category){
$entity=$this->doctrine->getRepository(Category::class)->find($entity->getId());
return $entity;
}
else if ($entity instanceof Package){
$entity=$this->doctrine->getRepository(Package::class)->find($entity->getId());
return $entity;
}
}
function nouveau_chemin(Request $request, $path, $langues){
if($path==null){
$session = $request->getSession();
$langue_preferee=$request->getPreferredLanguage($langues);
$session->set("_locale",$langue_preferee);
return "/".$langue_preferee."/".$path;
}
else{
$session = $request->getSession();
$langue=$session->get("_locale");
$langue_preferee=$request->getPreferredLanguage($langues);
if($langue==null){
$session->set("_locale",$langue_preferee);
if(preg_match("/".$langue_preferee."\\/.*"."/",$path)){
return "/".$path;
}
return "/".$langue_preferee."/".$path;
}
else{
$session->set("_locale",$langue);
if(preg_match("/".$langue."\\/.*"."/",$path)){
return "/".$path;
}
return "/".$langue."/".$path;
}
}
}
}