3 namespace Drupal\Core\Cache\Context;
5 use Drupal\Core\Cache\CacheableMetadata;
6 use Drupal\Core\Language\LanguageManagerInterface;
9 * Defines the LanguagesCacheContext service, for "per language" caching.
11 class LanguagesCacheContext implements CalculatedCacheContextInterface {
14 * The language manager.
16 * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
18 protected $languageManager;
21 * Constructs a new LanguagesCacheContext service.
23 * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
24 * The language manager.
26 public function __construct(LanguageManagerInterface $language_manager) {
27 $this->languageManager = $language_manager;
33 public static function getLabel() {
40 * $type can be NULL, or one of the language types supported by the language
42 * - LanguageInterface::TYPE_INTERFACE
43 * - LanguageInterface::TYPE_CONTENT
44 * - LanguageInterface::TYPE_URL
46 * @see \Drupal\Core\Language\LanguageManagerInterface::getLanguageTypes()
48 * @throws \RuntimeException
49 * In case an invalid language type is specified.
51 public function getContext($type = NULL) {
54 if ($this->languageManager->isMultilingual()) {
55 foreach ($this->languageManager->getLanguageTypes() as $type) {
56 $context_parts[] = $this->languageManager->getCurrentLanguage($type)->getId();
60 $context_parts[] = $this->languageManager->getCurrentLanguage()->getId();
62 return implode(',', $context_parts);
65 $language_types = $this->languageManager->getDefinedLanguageTypesInfo();
66 if (!isset($language_types[$type])) {
67 throw new \RuntimeException(sprintf('The language type "%s" is invalid.', $type));
69 return $this->languageManager->getCurrentLanguage($type)->getId();
76 public function getCacheableMetadata($type = NULL) {
77 return new CacheableMetadata();