Version 1
[yaffs-website] / web / core / modules / config_translation / src / Plugin / Menu / LocalTask / ConfigTranslationLocalTask.php
diff --git a/web/core/modules/config_translation/src/Plugin/Menu/LocalTask/ConfigTranslationLocalTask.php b/web/core/modules/config_translation/src/Plugin/Menu/LocalTask/ConfigTranslationLocalTask.php
new file mode 100644 (file)
index 0000000..5a88d91
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+namespace Drupal\config_translation\Plugin\Menu\LocalTask;
+
+use Drupal\Component\Utility\Unicode;
+use Drupal\Core\Menu\LocalTaskDefault;
+use Drupal\Core\StringTranslation\StringTranslationTrait;
+
+/**
+ * Defines a local task plugin with a dynamic title.
+ */
+class ConfigTranslationLocalTask extends LocalTaskDefault {
+  use StringTranslationTrait;
+
+  /**
+   * The mapper plugin discovery service.
+   *
+   * @var \Drupal\config_translation\ConfigMapperManagerInterface
+   */
+  protected $mapperManager;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getTitle() {
+    // Take custom 'config_translation_plugin_id' plugin definition key to
+    // retrieve title. We need to retrieve a runtime title (as opposed to
+    // storing the title on the plugin definition for the link) because
+    // it contains translated parts that we need in the runtime language.
+    $type_name = Unicode::strtolower($this->mapperManager()->createInstance($this->pluginDefinition['config_translation_plugin_id'])->getTypeLabel());
+    return $this->t('Translate @type_name', ['@type_name' => $type_name]);
+  }
+
+  /**
+   * Gets the mapper manager.
+   *
+   * @return \Drupal\config_translation\ConfigMapperManagerInterface
+   *   The mapper manager.
+   */
+  protected function mapperManager() {
+    if (!$this->mapperManager) {
+      $this->mapperManager = \Drupal::service('plugin.manager.config_translation.mapper');
+    }
+    return $this->mapperManager;
+  }
+
+}