vendor/shopware/core/System/Locale/LanguageLocaleCodeProvider.php line 24
<?php declare(strict_types=1);namespace Shopware\Core\System\Locale;use Shopware\Core\Framework\Log\Package;use Shopware\Core\Framework\Routing\Exception\LanguageNotFoundException;use Shopware\Core\System\Language\LanguageLoaderInterface;use Symfony\Contracts\Service\ResetInterface;#[Package('system-settings')]class LanguageLocaleCodeProvider implements ResetInterface{private array $languages = [];/*** @internal*/public function __construct(private readonly LanguageLoaderInterface $languageLoader){}public function getLocaleForLanguageId(string $languageId): string{$languages = $this->getLanguages();if (!\array_key_exists($languageId, $languages)) {throw new LanguageNotFoundException($languageId);}return $languages[$languageId]['code'];}/*** @param array<string> $languageIds*/public function getLocalesForLanguageIds(array $languageIds): array{$languages = $this->getLanguages();$requestedLanguages = array_intersect_key($languages, array_flip($languageIds));return array_column($requestedLanguages, 'code', 'id');}public function reset(): void{$this->languages = [];}private function getLanguages(): array{if (\count($this->languages) === 0) {$this->languages = $this->resolveParentLanguages($this->languageLoader->loadLanguages());}return $this->languages;}/*** resolves the inherited languages codes, so we have a guaranteed language code for each language id* we can't do it in the language loader as other places (e.g. DAL writes) expect that the translation code is unique*/private function resolveParentLanguages(array $languages): array{foreach ($languages as &$language) {if ($language['code'] !== null || $language['parentId'] === null) {continue;}$language['code'] = $languages[$language['parentId']]['code'] ?? null;}return $languages;}}