From c56ab1dce146c85c5cd871f1adcdab457b5e9ef2 Mon Sep 17 00:00:00 2001 From: Jonathan Kieling <jonathan.kieling@werkraum.net> Date: Wed, 19 Jun 2024 16:59:12 +0200 Subject: [PATCH] [BUGFIX] form plugin translation overrides the array of translation files was not sorted by key descending. Resolves: #95212 Releases: main, 12.4 Change-Id: Ieb9d98af33cbe0d1a5ef34cb2993a247d0821031 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84787 Tested-by: core-ci <typo3@b13.com> Reviewed-by: Georg Ringer <georg.ringer@gmail.com> Reviewed-by: Benni Mack <benni@typo3.org> Tested-by: Benni Mack <benni@typo3.org> Tested-by: Georg Ringer <georg.ringer@gmail.com> --- .../form/Classes/Service/TranslationService.php | 2 +- .../Private/Language/locallang_form_overrides.xlf | 12 ++++++++++++ .../Functional/Service/TranslationServiceTest.php | 9 +++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 typo3/sysext/form/Tests/Functional/Service/Fixtures/Extensions/form_labels/Resources/Private/Language/locallang_form_overrides.xlf diff --git a/typo3/sysext/form/Classes/Service/TranslationService.php b/typo3/sysext/form/Classes/Service/TranslationService.php index 28fdac63bc2c..f2e851c536d6 100644 --- a/typo3/sysext/form/Classes/Service/TranslationService.php +++ b/typo3/sysext/form/Classes/Service/TranslationService.php @@ -134,7 +134,7 @@ class TranslationService implements SingletonInterface if (is_array($value)) { $result[$key] = $this->translateValuesRecursive($value, $translationFiles); } else { - $this->sortArrayWithIntegerKeysDescending($translationFiles); + $translationFiles = $this->sortArrayWithIntegerKeysDescending($translationFiles); if (!empty($translationFiles)) { foreach ($translationFiles as $translationFile) { diff --git a/typo3/sysext/form/Tests/Functional/Service/Fixtures/Extensions/form_labels/Resources/Private/Language/locallang_form_overrides.xlf b/typo3/sysext/form/Tests/Functional/Service/Fixtures/Extensions/form_labels/Resources/Private/Language/locallang_form_overrides.xlf new file mode 100644 index 000000000000..49fb63118d9b --- /dev/null +++ b/typo3/sysext/form/Tests/Functional/Service/Fixtures/Extensions/form_labels/Resources/Private/Language/locallang_form_overrides.xlf @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"> + <file source-language="en" datatype="plaintext" original="EXT:form/Tests/Unit/Service/Fixtures/locallang_form_translation_override.xlf" date="2024-06-19T16:32:32Z" product-name="tests"> + <header/> + <body> + <trans-unit id="element.Page.renderingOptions.nextButtonLabel" resname="element.Page.renderingOptions.nextButtonLabel" xml:space="preserve"> + <source>FORM EN OVERRIDE</source> + </trans-unit> + + </body> + </file> +</xliff> diff --git a/typo3/sysext/form/Tests/Functional/Service/TranslationServiceTest.php b/typo3/sysext/form/Tests/Functional/Service/TranslationServiceTest.php index d2d6ea8d1a71..038eab42131c 100644 --- a/typo3/sysext/form/Tests/Functional/Service/TranslationServiceTest.php +++ b/typo3/sysext/form/Tests/Functional/Service/TranslationServiceTest.php @@ -160,7 +160,10 @@ final class TranslationServiceTest extends FunctionalTestCase #[Test] public function translateValuesRecursiveTranslateRecursive(): void { - $xlfPaths = ['EXT:form_labels/Resources/Private/Language/locallang_form.xlf']; + $xlfPaths = [ + 10 => 'EXT:form_labels/Resources/Private/Language/locallang_form.xlf', + 100 => 'EXT:form_labels/Resources/Private/Language/locallang_form_overrides.xlf', + ]; $input = [ 'Stan' => [ 'Steve' => 'Roger', @@ -168,6 +171,7 @@ final class TranslationServiceTest extends FunctionalTestCase [ 'Francine' => [ 'Klaus' => 'element.Page.renderingOptions.nextButtonLabel', + 'Lisa' => 'form-runtime-identifier.element.form-element-identifier.properties.label', ], ], ]; @@ -177,7 +181,8 @@ final class TranslationServiceTest extends FunctionalTestCase ], [ 'Francine' => [ - 'Klaus' => 'FORM EN', + 'Klaus' => 'FORM EN OVERRIDE', + 'Lisa' => 'form-runtime-identifier form-element-identifier LABEL EN', ], ], ]; -- GitLab