You are here

class LanguageDropdownBlock in Language Switcher Dropdown 8.2

Same name in this branch
  1. 8.2 src/Plugin/Derivative/LanguageDropdownBlock.php \Drupal\lang_dropdown\Plugin\Derivative\LanguageDropdownBlock
  2. 8.2 src/Plugin/Block/LanguageDropdownBlock.php \Drupal\lang_dropdown\Plugin\Block\LanguageDropdownBlock

Provides dropdown switcher block plugin definitions for all languages.

Hierarchy

Expanded class hierarchy of LanguageDropdownBlock

File

src/Plugin/Derivative/LanguageDropdownBlock.php, line 15

Namespace

Drupal\lang_dropdown\Plugin\Derivative
View source
class LanguageDropdownBlock extends DeriverBase implements ContainerDeriverInterface {
  use StringTranslationTrait;

  /**
   * The language manager service.
   *
   * @var \Drupal\Core\Language\LanguageManagerInterface
   */
  protected $languageManager;

  /**
   * Constructs new LanguageDropdownBlock.
   *
   * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
   *   The language manager service.
   */
  public function __construct(LanguageManagerInterface $language_manager) {
    $this->languageManager = $language_manager;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, $base_plugin_id) {
    return new static($container
      ->get('language_manager'));
  }

  /**
   * {@inheritdoc}
   */
  public function getDerivativeDefinitions($base_plugin_definition) {
    if ($this->languageManager instanceof ConfigurableLanguageManagerInterface) {
      $info = $this->languageManager
        ->getDefinedLanguageTypesInfo();
      $configurable_types = $this->languageManager
        ->getLanguageTypes();
      foreach ($configurable_types as $type) {
        $this->derivatives[$type] = $base_plugin_definition;
        $this->derivatives[$type]['admin_label'] = $this
          ->t('Language dropdown switcher (@type)', [
          '@type' => $info[$type]['name'],
        ]);
      }

      // If there is just one configurable type
      // then change the title of the block.
      if (count($configurable_types) === 1) {
        $this->derivatives[reset($configurable_types)]['admin_label'] = $this
          ->t('Language dropdown switcher');
      }
    }
    return parent::getDerivativeDefinitions($base_plugin_definition);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DeriverBase::$derivatives protected property List of derivative definitions. 1
DeriverBase::getDerivativeDefinition public function Gets the definition of a derivative plugin. Overrides DeriverInterface::getDerivativeDefinition
LanguageDropdownBlock::$languageManager protected property The language manager service.
LanguageDropdownBlock::create public static function Creates a new class instance. Overrides ContainerDeriverInterface::create
LanguageDropdownBlock::getDerivativeDefinitions public function Gets the definition of all derivatives of a base plugin. Overrides DeriverBase::getDerivativeDefinitions
LanguageDropdownBlock::__construct public function Constructs new LanguageDropdownBlock.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.