Ensure that synonym placeholders get cached on a per locale level

This commit is contained in:
Jan Böhmer 2025-12-07 14:03:04 +01:00
parent e60033a309
commit d894e1658f
2 changed files with 8 additions and 8 deletions

View file

@ -50,9 +50,9 @@ readonly class RegisterSynonymsAsTranslationParametersListener
$this->translator = $translator; $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'); $item->tag('synonyms');
@ -62,12 +62,12 @@ readonly class RegisterSynonymsAsTranslationParametersListener
foreach (ElementTypes::cases() as $elementType) { foreach (ElementTypes::cases() as $elementType) {
//Versions with capitalized first letter //Versions with capitalized first letter
$capitalized = ucfirst($elementType->value); //We have only ASCII element type values, so this is sufficient $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->typeLabel($elementType, $locale);
$placeholders['[[' . $capitalized . ']]'] = $this->typeNameGenerator->typeLabelPlural($elementType); $placeholders['[[' . $capitalized . ']]'] = $this->typeNameGenerator->typeLabelPlural($elementType, $locale);
//And we have lowercase versions for both //And we have lowercase versions for both
$placeholders['[' . $elementType->value . ']'] = mb_strtolower($this->typeNameGenerator->typeLabel($elementType)); $placeholders['[' . $elementType->value . ']'] = mb_strtolower($this->typeNameGenerator->typeLabel($elementType, $locale));
$placeholders['[[' . $elementType->value . ']]'] = mb_strtolower($this->typeNameGenerator->typeLabelPlural($elementType)); $placeholders['[[' . $elementType->value . ']]'] = mb_strtolower($this->typeNameGenerator->typeLabelPlural($elementType, $locale));
} }
return $placeholders; return $placeholders;
@ -82,7 +82,7 @@ readonly class RegisterSynonymsAsTranslationParametersListener
} }
//Register all placeholders for synonyms //Register all placeholders for synonyms
$placeholders = $this->getSynonymPlaceholders(); $placeholders = $this->getSynonymPlaceholders($event->getRequest()->getLocale());
foreach ($placeholders as $key => $value) { foreach ($placeholders as $key => $value) {
$this->translator->addGlobalParameter($key, $value); $this->translator->addGlobalParameter($key, $value);
} }

View file

@ -37,7 +37,7 @@ class RegisterSynonymsAsTranslationParametersTest extends KernelTestCase
public function testGetSynonymPlaceholders(): void public function testGetSynonymPlaceholders(): void
{ {
$placeholders = $this->listener->getSynonymPlaceholders(); $placeholders = $this->listener->getSynonymPlaceholders('en');
$this->assertIsArray($placeholders); $this->assertIsArray($placeholders);
// Curly braces for lowercase versions // Curly braces for lowercase versions