getOption('translator', $scriptProperties); /** @var modResource $from */ $from = $modx->getOption('from', $scriptProperties); /** @var string $fromCulture */ $fromCulture = $modx->getOption('fromCulture', $scriptProperties); /** @var modResource $to */ $to = $modx->getOption('to', $scriptProperties); /** @var string $toCulture */ $toCulture = $modx->getOption('toCulture', $scriptProperties); $corePath = $modx->getOption('babeltranslate.core_path', null, $modx->getOption('core_path') . 'components/babeltranslate/'); /** @var BabelTranslate $babeltranslate */ $babeltranslate = $modx->getService('babeltranslate', 'BabelTranslate', $corePath . 'model/babeltranslate/', [ 'core_path' => $corePath ]); /** @var SeoSuite $seoSuite */ $seoSuite = $modx->services->get('seosuite'); // Check if the SeoSuite service is loaded if ($seoSuite) { /** @var SeoSuiteResource $fromSeosuite */ $fromSeosuite = $modx->getObject(SeoSuiteResource::class, ['resource_id' => $from->get('id')]); /** @var SeoSuiteResource $toSeosuite */ $toSeosuite = $modx->getObject(SeoSuiteResource::class, ['resource_id' => $to->get('id')]); if (!$fromSeosuite) { $modx->log(xPDO::LOG_LEVEL_ERROR, 'SeoSuiteResource from is not set', '', 'BabelTranslateResourceSeosuite3 Plugin'); return; } if (!$toSeosuite) { $toSeosuite = $modx->newObject(SeoSuiteResource::class); $toSeosuite->set('resource_id', $to->get('id')); } if ($fromSeosuite->get('keywords')) { $keywords = array_map('trim', explode(',', $fromSeosuite->get('keywords'))); foreach ($keywords as &$keyword) { $translation = $babeltranslate->translator->translate($keyword, $fromCulture, $toCulture); if ($translation) { $keyword = $translation; } else { if ($babeltranslate->getOption('debug')) { $modx->log(xPDO::LOG_LEVEL_ERROR, 'Invalid translation result of SeoSuite keyword ' . $keyword, '', 'BabelTranslateResourceSeosuite Plugin'); } } } $toSeosuite->set('keywords', implode(',', $keywords)); } else { if ($babeltranslate->getOption('debug')) { $modx->log(xPDO::LOG_LEVEL_ERROR, 'The SeoSuite field keywords is empty', '', 'BabelTranslateResourceSeosuite Plugin'); } } $toSeosuite->save(); } return;