diff --git a/typo3/sysext/backend/Classes/Controller/EditDocumentController.php b/typo3/sysext/backend/Classes/Controller/EditDocumentController.php
index dcb24e8749ba3102a3a326c6de0116d7a90f9ecf..d489e05b9b035a728b473dc24319aad4bcba3543 100644
--- a/typo3/sysext/backend/Classes/Controller/EditDocumentController.php
+++ b/typo3/sysext/backend/Classes/Controller/EditDocumentController.php
@@ -1330,23 +1330,21 @@ class EditDocumentController
         $buttonBar->addButton($closeButton);
         // DUPLICATE button:
         $record = BackendUtility::getRecord($this->firstEl['table'], $this->firstEl['uid']);
-        $l18nParent = $record['l18n_parent'] ?? 0;
-        $sysLanguageUid = $record['sys_language_uid'] ?? 0;
+        $TCActrl = $GLOBALS['TCA'][$this->firstEl['table']]['ctrl'];
+        $l18nParent = isset($TCActrl['transOrigPointerField'], $record[$TCActrl['transOrigPointerField']])
+            ? (int)$record[$TCActrl['transOrigPointerField']]
+            : 0;
+        $sysLanguageUid = isset($TCActrl['languageField'], $record[$TCActrl['languageField']])
+            ? (int)$record[$TCActrl['languageField']]
+            : 0;
         $showDuplicateButton = false;
         if ($this->firstEl['cmd'] !== 'new' && MathUtility::canBeInterpretedAsInteger($this->firstEl['uid'])) {
-            // Special case: pages
-            if ($this->firstEl['table'] === 'pages') {
-                // show button only, if record is in default language
-                $showDuplicateButton = (int)$sysLanguageUid === 0;
+            if ($sysLanguageUid === 0) {
+                // show button, if record is in default language
+                $showDuplicateButton = true;
             } else {
-                // not pages table
-                if ((int)$sysLanguageUid === 0) {
-                    // show button, if record is in default language
-                    $showDuplicateButton = true;
-                } else {
-                    // show button, if record is NOT in default language AND has no parent
-                    $showDuplicateButton = (int)$l18nParent === 0;
-                }
+                // show button, if record is NOT in default language AND has no parent
+                $showDuplicateButton = $l18nParent === 0;
             }
         }
         if ($showDuplicateButton) {