Version 1
[yaffs-website] / web / core / modules / language / src / Config / LanguageConfigCollectionNameTrait.php
diff --git a/web/core/modules/language/src/Config/LanguageConfigCollectionNameTrait.php b/web/core/modules/language/src/Config/LanguageConfigCollectionNameTrait.php
new file mode 100644 (file)
index 0000000..5729081
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+namespace Drupal\language\Config;
+
+/**
+ * Provides a common trait for working with language override collection names.
+ */
+trait LanguageConfigCollectionNameTrait {
+
+  /**
+   * Creates a configuration collection name based on a language code.
+   *
+   * @param string $langcode
+   *   The language code.
+   *
+   * @return string
+   *   The configuration collection name for a language code.
+   */
+  protected function createConfigCollectionName($langcode) {
+    return 'language.' . $langcode;
+  }
+
+  /**
+   * Converts a configuration collection name to a language code.
+   *
+   * @param string $collection
+   *   The configuration collection name.
+   *
+   * @return string
+   *   The language code of the collection.
+   *
+   * @throws \InvalidArgumentException
+   *   Exception thrown if the provided collection name is not in the format
+   *   "language.LANGCODE".
+   *
+   * @see self::createConfigCollectionName()
+   */
+  protected function getLangcodeFromCollectionName($collection) {
+    preg_match('/^language\.(.*)$/', $collection, $matches);
+    if (!isset($matches[1])) {
+      throw new \InvalidArgumentException("'$collection' is not a valid language override collection");
+    }
+    return $matches[1];
+  }
+
+}