From e7882f440155bfac8fcff53b605d080f330f235e Mon Sep 17 00:00:00 2001
From: Susanne Moog <s.moog@neusta.de>
Date: Tue, 15 Aug 2017 09:41:08 +0200
Subject: [PATCH] [BUGFIX] _LOCAL_LANG overwrite via TypoScript with nested
 keys

If language labels are set for the top level key and sub
keys in TypoScript the top level key was not taken into
account as it got stored with 'typoScriptNodeValue' as key.

Special handling for that specific key was introduced, to
make overwriting of top level keys possible again.

Change-Id: Ibd5f5a939b1de530ba93840cfb7ba5ab5bc85c2f
Resolves: #81095
Releases: master, 8.7
Reviewed-on: https://review.typo3.org/53701
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Joerg Boesche <typo3@joergboesche.de>
Tested-by: Joerg Boesche <typo3@joergboesche.de>
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Tested-by: Andreas Fernandez <typo3@scripting-base.de>
---
 .../sysext/extbase/Classes/Utility/LocalizationUtility.php  | 6 +++++-
 .../extbase/Tests/Unit/Utility/LocalizationUtilityTest.php  | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/typo3/sysext/extbase/Classes/Utility/LocalizationUtility.php b/typo3/sysext/extbase/Classes/Utility/LocalizationUtility.php
index 6852472b84c3..0e8451cc883d 100644
--- a/typo3/sysext/extbase/Classes/Utility/LocalizationUtility.php
+++ b/typo3/sysext/extbase/Classes/Utility/LocalizationUtility.php
@@ -255,7 +255,11 @@ class LocalizationUtility
         $result = [];
         foreach ($labelValues as $key => $labelValue) {
             if (!empty($parentKey)) {
-                $key = $parentKey . '.' . $key;
+                if ($key === '_typoScriptNodeValue') {
+                    $key = $parentKey;
+                } else {
+                    $key = $parentKey . '.' . $key;
+                }
             }
             if (is_array($labelValue)) {
                 $labelValue = self::flattenTypoScriptLabelArray($labelValue, $key);
diff --git a/typo3/sysext/extbase/Tests/Unit/Utility/LocalizationUtilityTest.php b/typo3/sysext/extbase/Tests/Unit/Utility/LocalizationUtilityTest.php
index 9e6aa7df0463..f1719e8f4309 100644
--- a/typo3/sysext/extbase/Tests/Unit/Utility/LocalizationUtilityTest.php
+++ b/typo3/sysext/extbase/Tests/Unit/Utility/LocalizationUtilityTest.php
@@ -195,6 +195,7 @@ class LocalizationUtilityTest extends \TYPO3\TestingFramework\Core\Unit\UnitTest
         $expected = [
             'key1' => 'value1',
             'key2' => 'value2',
+            'key3' => 'value3',
             'key3.subkey1' => 'subvalue1',
             'key3.subkey2.subsubkey' => 'val'
         ];
@@ -202,6 +203,7 @@ class LocalizationUtilityTest extends \TYPO3\TestingFramework\Core\Unit\UnitTest
             'key1' => 'value1',
             'key2' => 'value2',
             'key3' => [
+                '_typoScriptNodeValue' => 'value3',
                 'subkey1' => 'subvalue1',
                 'subkey2' => [
                     'subsubkey' => 'val'
-- 
GitLab