CMS Data Resolver - Sprache ermitteln

Hallo,

ich baue gerade ein eigenes CMS-Element und bin gerade am Data Resolver:

public function enrich(CmsSlotEntity $slot, ResolverContext $resolverContext, ElementDataCollection $result): void
{
    $languageId = $resolverContext->getSalesChannelContext()->getLanguageId();
    
    //$slot->setData();
}

Ich kann die Language-Id aus dem SalesChannelContext ermitteln. Wie komme ich aber an die Sprache selbst, also „Deutsch“ oder „Englisch“. Kann man hier irgendwie mit Repository arbeiten, oder gibt es einen schnelleren Weg?

Viele Grüße, Frank

Okay, habe es selber gefunden. Für alle, die es interessiert:

public function collect(CmsSlotEntity $slot, ResolverContext $resolverContext): ?CriteriaCollection
{
    $criteriaCollection = new CriteriaCollection();

    $criteria = new Criteria([$resolverContext->getSalesChannelContext()->getLanguageId()]);
    $criteriaCollection->add('language_' . $slot->getUniqueIdentifier(), LanguageDefinition::class, $criteria);

    return $criteriaCollection;
}
public function enrich(CmsSlotEntity $slot, ResolverContext $resolverContext, ElementDataCollection $result): void
{
	$languageSearchResult = $result->get('language_' . $slot->getUniqueIdentifier());
	$language = $languageSearchResult->first()->getName());
        
        ...
}

Viele Grüße, Frank

Nop, da muss Du mit der ID eine DB Abfrage mache.
Hier ist Shopware6 meiner Meinung „over engineered“, hab immer schon gefragt warum man Werte wie de, en oder EUR, USD, CHF als UUID kodieren muss ?

LG

Mit einer DB-Abfrage würde es natürlich gehen. Die oben beschriebene Variante funktioniert aber auch :wink:.

Viele Grüße, Frank

das addAssoc() „joined“ ja einfach nur die Language Tabelle in die Abfrage