diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-88559-TSFE-sys_language_isocode.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-88559-TSFE-sys_language_isocode.rst
new file mode 100644
index 0000000000000000000000000000000000000000..809dfcdf94e307621dcbab0eb8c07ac887c397dd
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-88559-TSFE-sys_language_isocode.rst
@@ -0,0 +1,41 @@
+.. include:: ../../Includes.txt
+
+=================================================
+Deprecation: #88559 - $TSFE->sys_language_isocode
+=================================================
+
+See :issue:`88559`
+
+Description
+===========
+
+The public property :php:`TypoScriptFrontendController->sys_language_isocode`
+has set the equivalent of `SiteLanguage->getTwoLetterIsoCode()` since the introduction
+of Site Handling in TYPO3 v9.
+
+As all code should switch to Site Handling, this property can be accessed via
+the current site language as well, making this property obsolete.
+
+The property has been deprecated.
+
+
+Impact
+======
+
+Setting or fetching this property will trigger a PHP deprecation warning.
+
+
+Affected Installations
+======================
+
+Any TYPO3 installation with a third party extension accessing this property,
+or via TypoScript getData() :ts:`TSFE:sys_language_isocode`.
+
+
+Migration
+=========
+
+Access the property via :php:`SiteLanguage->getTwoLetterIsoCode()`
+and :ts:`sitelanguage:twoLetterIsoCode` instead.
+
+.. index:: Frontend, PHP-API, FullyScanned
diff --git a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
index d51773c150c4e52688294e508cf6f1be10488420..88ca3916ff2e43ef8c7370e832a4dd7f0773209d 100644
--- a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
+++ b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
@@ -22,6 +22,7 @@ use TYPO3\CMS\Backend\FrontendBackendUserAuthentication;
 use TYPO3\CMS\Core\Cache\CacheManager;
 use TYPO3\CMS\Core\Charset\CharsetConverter;
 use TYPO3\CMS\Core\Charset\UnknownCharsetException;
+use TYPO3\CMS\Core\Compatibility\PublicPropertyDeprecationTrait;
 use TYPO3\CMS\Core\Context\Context;
 use TYPO3\CMS\Core\Context\DateTimeAspect;
 use TYPO3\CMS\Core\Context\LanguageAspect;
@@ -86,6 +87,11 @@ use TYPO3\CMS\Frontend\Resource\FilePathSanitizer;
 class TypoScriptFrontendController implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
+    use PublicPropertyDeprecationTrait;
+
+    private $deprecatedPublicProperties = [
+        'sys_language_isocode' => 'Using $TSFE->sys_language_isocode will not be available anymore in TYPO3 v11.0. Use the current Site Language object and its method "getTwoLetterIsoCode()" instead.'
+    ];
 
     /**
      * The page id (int)
@@ -460,8 +466,9 @@ class TypoScriptFrontendController implements LoggerAwareInterface
     /**
      * Is set to the iso code of the current language
      * @var string
+     * @deprecated don't use it anymore, as this is now within SiteLanguage->getTwoLetterIsoCode()
      */
-    public $sys_language_isocode = '';
+    protected $sys_language_isocode = '';
 
     /**
      * 'Global' Storage for various applications. Keys should be 'tx_'.extKey for
@@ -2065,6 +2072,7 @@ class TypoScriptFrontendController implements LoggerAwareInterface
 
         // Finding the ISO code for the currently selected language
         // fetched by the sys_language record when not fetching content from the default language
+        // @deprecated - can be removed in TYPO3 v11.0
         $this->sys_language_isocode = $siteLanguage->getTwoLetterIsoCode();
 
         $_params = [];
@@ -2929,8 +2937,9 @@ class TypoScriptFrontendController implements LoggerAwareInterface
             $response = $response->withHeader('Content-Type', $this->contentType . '; charset=' . trim($this->metaCharset));
         }
         // Set header for content language unless disabled
-        if (empty($this->config['config']['disableLanguageHeader']) && !empty($this->sys_language_isocode)) {
-            $response = $response->withHeader('Content-Language', trim($this->sys_language_isocode));
+        $contentLanguage = $this->getCurrentSiteLanguage() instanceof SiteLanguage ? $this->getCurrentSiteLanguage()->getTwoLetterIsoCode() : '';
+        if (empty($this->config['config']['disableLanguageHeader']) && !empty($contentLanguage)) {
+            $response = $response->withHeader('Content-Language', trim($contentLanguage));
         }
         // Set cache related headers to client (used to enable proxy / client caching!)
         if (!empty($this->config['config']['sendCacheHeaders'])) {
diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/PropertyPublicMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/PropertyPublicMatcher.php
index c57e4e70deba345a1f533d5c3cd839e2da9c7e2d..6bf3d4856e7e41d7d43c329185dee1d086c080da 100644
--- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/PropertyPublicMatcher.php
+++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/PropertyPublicMatcher.php
@@ -554,4 +554,9 @@ return [
             'Breaking-88458-RemovedFrontendTrackUserFtuFunctionality.rst',
         ],
     ],
+    'TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->sys_language_isocode' => [
+        'restFiles' => [
+            'Deprecation-88559-TSFE-sys_language_isocode.rst',
+        ],
+    ],
 ];