diff --git a/Classes/Service/LicensingService.php b/Classes/Service/LicensingService.php
index 3b9343580f67017205af4545f84dc88a044ac3e2..73a0f340e0671f677b465515722eb2fa5c721980 100644
--- a/Classes/Service/LicensingService.php
+++ b/Classes/Service/LicensingService.php
@@ -30,6 +30,7 @@ use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
 use SGalinski\SgNews\Utility\ExtensionUtility;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
+use TYPO3\CMS\Core\Http\NullResponse;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
@@ -104,13 +105,14 @@ class LicensingService {
 	 * @return ResponseInterface
 	 * @throws \InvalidArgumentException
 	 */
-	public function ajaxPing(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface {
+	public function ajaxPing(ServerRequestInterface $request, ResponseInterface $response = NULL): ResponseInterface {
 		/** @var BackendUserAuthentication $backendUser */
 		$backendUser = $GLOBALS['BE_USER'];
 		if ($backendUser && !$backendUser->getModuleData('tools_beuser/index.php/web_SgNewsNews_pinged', 'ses')) {
 			$backendUser->pushModuleData('tools_beuser/index.php/web_SgNewsNews_pinged', TRUE);
 			self::ping();
 		}
-		return $response;
+
+		return $response ?? new NullResponse();
 	}
 }
diff --git a/Classes/ViewHelpers/Backend/TranslationLinksViewHelper.php b/Classes/ViewHelpers/Backend/TranslationLinksViewHelper.php
index 352743e06104f4fb9a08c92c24211b116446e1dc..5659c8a14d232caeb25422da2b44aca6fb4e519e 100644
--- a/Classes/ViewHelpers/Backend/TranslationLinksViewHelper.php
+++ b/Classes/ViewHelpers/Backend/TranslationLinksViewHelper.php
@@ -29,11 +29,13 @@ namespace SGalinski\SgNews\ViewHelpers\Backend;
 use SGalinski\SgNews\Service\LicensingService;
 use SGalinski\SgNews\Utility\BackendNewsUtility;
 use SGalinski\SgNews\ViewHelpers\AbstractViewHelper;
+use TYPO3\CMS\Backend\Routing\UriBuilder;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Imaging\Icon;
 use TYPO3\CMS\Core\Imaging\IconFactory;
 use TYPO3\CMS\Core\Type\Icon\IconState;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Core\Utility\VersionNumberUtility;
 use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
 
 /**
@@ -65,10 +67,12 @@ class TranslationLinksViewHelper extends AbstractViewHelper {
 		if (!LicensingService::checkKey()) {
 			return $out;
 		}
+
 		$table = trim($table);
 		if ($table !== 'pages' && !isset($GLOBALS['TCA'][$table]['ctrl']['languageField'])) {
 			return $out;
 		}
+
 		$uid = (int) $uid;
 		$pageUid = (int) $pageUid;
 		$row = BackendUtility::getRecord($table, $uid);
@@ -86,14 +90,17 @@ class TranslationLinksViewHelper extends AbstractViewHelper {
 			} else {
 				$languages = BackendNewsUtility::getAvailableLanguages($pageUid);
 			}
+
 			$editLabel = LocalizationUtility::translate('backend.action.edit', 'SgNews');
 			$newLabel = LocalizationUtility::translate('backend.action.new', 'SgNews');
 			$translationParameters = '&cmd[' . $table . '][' . $row['uid'] . '][localize]=%s';
-			if ($table === 'pages') {
-				$translationParameters = '&edit[pages][' . $row['uid'] . ']=new';
-				$translationParameters .= '&overrideVals[pages][doktype]=' . $row['doktype'];
-				$translationParameters .= '&overrideVals[pages][sys_language_uid]=%s';
+			if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '9.0.0', '<')) {
+				$returnUrl = BackendUtility::getModuleUrl('web_SgNewsNews', ['id' => GeneralUtility::_GP('id')]);
+			} else {
+				$returnUrl = GeneralUtility::makeInstance(UriBuilder::class)
+					->buildUriFromRoute('web_SgNewsNews', ['id' => GeneralUtility::_GP('id')]);
 			}
+
 			foreach ($languages as $languageUid => $language) {
 				$translatedUid = 0;
 				if ((int) $languageUid <= 0) {
@@ -106,34 +113,49 @@ class TranslationLinksViewHelper extends AbstractViewHelper {
 						$translatedUid = (int) $translatedRows[0]['uid'];
 					}
 				}
+
 				if ($translatedUid) {
-					$onClick = BackendUtility::editOnClick(
-						'&edit[' . $translationTable . '][' . $translatedUid . ']=edit', '', -1
-					);
-					$out .= ' <a href="#" onclick="' . $onClick . '" title="' . $language['title'] . ' [' . $editLabel . ']" >' .
-						$iconFactory->getIcon($language['flag'], Icon::SIZE_SMALL)->render() .
-						'</a>';
-				} else {
-					if ($table === 'pages') {
-						$onClick = BackendUtility::editOnClick(
-							sprintf($translationParameters, $languageUid), '', -1
-						);
+					if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '9.0.0', '<')) {
+						$link = BackendUtility::getModuleUrl('record_edit', [
+							'edit' => [
+								$translationTable => [
+									$translatedUid => 'edit'
+								]
+							],
+							'returnUrl' => $returnUrl
+						]);
 					} else {
-						$onClick = 'window.location.href=' . BackendUtility::getLinkToDataHandlerAction(
-								sprintf($translationParameters, $languageUid), -1
-							) . ' return false;';
+						$link = GeneralUtility::makeInstance(UriBuilder::class)
+							->buildUriFromRoute('record_edit', [
+								'edit' => [
+									$translationTable => [
+										$translatedUid => 'edit'
+									]
+								],
+								'returnUrl' => (string) $returnUrl
+							]);
 					}
-					$out .= ' <a href="#" onclick="' . $onClick . '" title="' . $language['title'] . ' [' . $newLabel . ']" >' .
-						$iconFactory->getIcon(
+
+					$out .= '<a href="' . $link . '" title="'. $language['title'] . ' [' . $editLabel . ']" >'
+						. $iconFactory->getIcon($language['flag'], Icon::SIZE_SMALL)->render()
+						. '</a>';
+				} else {
+					$out .= ' <a href="'
+						. BackendUtility::getLinkToDataHandlerAction(
+							sprintf($translationParameters, $languageUid), $returnUrl
+						)
+						. '" title="' . $language['title'] . ' [' . $newLabel . ']" >'
+						. $iconFactory->getIcon(
 							$language['flag'],
 							Icon::SIZE_SMALL,
 							'overlay-new',
 							IconState::cast(IconState::STATE_DISABLED)
-						)->render() .
-						'</a>';
+						)->render()
+						. '</a>';
 				}
 			}
 		}
+
 		return $out;
 	}
 }