From d894e1658fff7fbcf58b5af3a7e1c99e8b4b63fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Dec 2025 14:03:04 +0100 Subject: [PATCH] Ensure that synonym placeholders get cached on a per locale level --- ...sterSynonymsAsTranslationParametersListener.php | 14 +++++++------- ...RegisterSynonymsAsTranslationParametersTest.php | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php index e7ac7300..5862fa33 100644 --- a/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php +++ b/src/EventListener/RegisterSynonymsAsTranslationParametersListener.php @@ -50,9 +50,9 @@ readonly class RegisterSynonymsAsTranslationParametersListener $this->translator = $translator; } - public function getSynonymPlaceholders(): array + public function getSynonymPlaceholders(string $locale): array { - return $this->cache->get('partdb_synonym_placeholders', function (ItemInterface $item) { + return $this->cache->get('partdb_synonym_placeholders' . '_' . $locale, function (ItemInterface $item) use ($locale) { $item->tag('synonyms'); @@ -62,12 +62,12 @@ readonly class RegisterSynonymsAsTranslationParametersListener foreach (ElementTypes::cases() as $elementType) { //Versions with capitalized first letter $capitalized = ucfirst($elementType->value); //We have only ASCII element type values, so this is sufficient - $placeholders['[' . $capitalized . ']'] = $this->typeNameGenerator->typeLabel($elementType); - $placeholders['[[' . $capitalized . ']]'] = $this->typeNameGenerator->typeLabelPlural($elementType); + $placeholders['[' . $capitalized . ']'] = $this->typeNameGenerator->typeLabel($elementType, $locale); + $placeholders['[[' . $capitalized . ']]'] = $this->typeNameGenerator->typeLabelPlural($elementType, $locale); //And we have lowercase versions for both - $placeholders['[' . $elementType->value . ']'] = mb_strtolower($this->typeNameGenerator->typeLabel($elementType)); - $placeholders['[[' . $elementType->value . ']]'] = mb_strtolower($this->typeNameGenerator->typeLabelPlural($elementType)); + $placeholders['[' . $elementType->value . ']'] = mb_strtolower($this->typeNameGenerator->typeLabel($elementType, $locale)); + $placeholders['[[' . $elementType->value . ']]'] = mb_strtolower($this->typeNameGenerator->typeLabelPlural($elementType, $locale)); } return $placeholders; @@ -82,7 +82,7 @@ readonly class RegisterSynonymsAsTranslationParametersListener } //Register all placeholders for synonyms - $placeholders = $this->getSynonymPlaceholders(); + $placeholders = $this->getSynonymPlaceholders($event->getRequest()->getLocale()); foreach ($placeholders as $key => $value) { $this->translator->addGlobalParameter($key, $value); } diff --git a/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php index 4f49284a..58573ae6 100644 --- a/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php +++ b/tests/EventListener/RegisterSynonymsAsTranslationParametersTest.php @@ -37,7 +37,7 @@ class RegisterSynonymsAsTranslationParametersTest extends KernelTestCase public function testGetSynonymPlaceholders(): void { - $placeholders = $this->listener->getSynonymPlaceholders(); + $placeholders = $this->listener->getSynonymPlaceholders('en'); $this->assertIsArray($placeholders); // Curly braces for lowercase versions