3 namespace Drupal\language\Plugin\Derivative;
5 use Drupal\Component\Plugin\Derivative\DeriverBase;
6 use Drupal\language\ConfigurableLanguageManagerInterface;
9 * Provides language switcher block plugin definitions for all languages.
11 class LanguageBlock extends DeriverBase {
16 public function getDerivativeDefinitions($base_plugin_definition) {
17 $language_manager = \Drupal::languageManager();
19 if ($language_manager instanceof ConfigurableLanguageManagerInterface) {
20 $info = $language_manager->getDefinedLanguageTypesInfo();
21 $configurable_types = $language_manager->getLanguageTypes();
22 foreach ($configurable_types as $type) {
23 $this->derivatives[$type] = $base_plugin_definition;
24 $this->derivatives[$type]['admin_label'] = t('Language switcher (@type)', ['@type' => $info[$type]['name']]);
26 // If there is just one configurable type then change the title of the
28 if (count($configurable_types) == 1) {
29 $this->derivatives[reset($configurable_types)]['admin_label'] = t('Language switcher');
33 return parent::getDerivativeDefinitions($base_plugin_definition);