bundle() == 'concept') { // Dodaj avtorja spremembe med urednike, če še ni $transition = \Drupal::service('content_moderation_notifications.notification_information')->getTransition($entity); if ($transition->id() == 'publish') { if ($user = $entity->uid->entity) { if (!$user->status->value) { $user->set('status', 1); $user->addRole('editor'); $user->save(); } } } } } // Dodaj oz. posodobi manjkajoce prevode (ampak samo ce ne gre za // strojni prevod!) function yufu_concept_node_insert(EntityInterface $entity) { uskladi_prevode($entity); } function yufu_concept_node_update(EntityInterface $entity) { uskladi_prevode($entity); } function prevedi_koncept(EntityInterface $entity, EntityInterface $prevod) { $libretranslate = \Drupal::service('yufu_concept.translate'); $izvorniJezik = $entity->language()->getId(); $ciljniJezik = $prevod->language()->getId(); // Hrvaščina ni podprta, zato jo zamenjamo s srbščino if ($izvorniJezik == 'hr') { $izvorniJezik = 'sr'; } if ($ciljniJezik == 'hr') { $ciljniJezik = 'sr'; } [$naslov, $tekst] = $libretranslate->prevedi([ $entity->title->value, $entity->body->value ], $izvorniJezik, $ciljniJezik); // Cirilica v latinico if ($ciljniJezik == 'sr') { [$naslov, $tekst] = array_map(function ($tekst) { return transliterator_transliterate('Russian-Latin/BGN', $tekst); }, [$naslov, $tekst]); } $prevod->set('title', $naslov); $prevod->set('body', $tekst); } function uskladi_prevode(EntityInterface $entity) { if ($entity instanceOf NodeInterface && $entity->bundle() == 'concept' && !$entity->field_strojni_prevod->value) { $vsiJeziki = array_keys(\Drupal::languageManager()->getLanguages()); // Katere prevode koncepta že imamo? $izvorniJezik = $entity->language()->getId(); $jezikiKoncepta = array_keys($entity->getTranslationLanguages()); $ostaliJeziki = array_diff($vsiJeziki, [$izvorniJezik]); // Dodamo nove prevode, če je treba $manjkajoci = array_diff($vsiJeziki, $jezikiKoncepta); foreach($manjkajoci as $jezik) { $prevod = $entity->addTranslation($jezik, $entity->toArray()); prevedi_koncept($entity, $prevod); $prevod->set('field_strojni_prevod', true); $prevod->save(); $ostaliJeziki = array_diff($ostaliJeziki, [$jezik]); } // Posodobimo obstoječe prevode, če so strojni $entityRepository = \Drupal::service('entity.repository'); foreach($ostaliJeziki as $jezik) { $prevod = $entityRepository->getTranslationFromContext($entity, $jezik); $strojniPrevodField = $prevod->field_strojni_prevod->first(); $strojniPrevod = $strojniPrevodField->value; if ($strojniPrevod != '0') { prevedi_koncept($entity, $prevod); $prevod->save(); } } } }