diff --git a/core/lib/Drupal/Core/Config/Config.php b/core/lib/Drupal/Core/Config/Config.php
index 6fc2a87..2436b40 100644
--- a/core/lib/Drupal/Core/Config/Config.php
+++ b/core/lib/Drupal/Core/Config/Config.php
@@ -65,6 +65,13 @@ class Config {
   protected $eventDispatcher;
 
   /**
+   * A Language object used for locale overrides on this object.
+   *
+   * @var Drupal\Core\Language\Language
+   */
+  protected $language;
+
+  /**
    * Constructs a configuration object.
    *
    * @param string $name
@@ -72,12 +79,15 @@ class Config {
    * @param Drupal\Core\Config\StorageInterface $storage
    *   A storage controller object to use for reading and writing the
    *   configuration data.
+   * @param Drupal\Core\Language\Language
+   *   An event dispatcher instance to use for configuration events.
    * @param Symfony\Component\EventDispatcher\EventDispatcher $event_dispatcher
    *   The event dispatcher used to notify subscribers.
    */
-  public function __construct($name, StorageInterface $storage, EventDispatcher $event_dispatcher = NULL) {
+  public function __construct($name, StorageInterface $storage, Language $language, EventDispatcher $event_dispatcher = NULL) {
     $this->name = $name;
     $this->storage = $storage;
+    $this->language = $language;
     $this->eventDispatcher = $event_dispatcher ? $event_dispatcher : drupal_container()->get('dispatcher');
   }
 
@@ -95,6 +105,16 @@ public function init() {
   /**
    * Returns the name of this configuration object.
    *
+   * @return Drupal\Core\Language\Language
+   *   The Language set on this configuration object.
+   */
+  public function getLanguage() {
+    return $this->language;
+  }
+
+  /**
+   * Returns the Language object set on this configuration object.
+   *
    * @return string
    *   The name of the configuration object.
    */
@@ -102,6 +122,7 @@ public function getName() {
     return $this->name;
   }
 
+
   /**
    * Sets the name of this configuration object.
    *
diff --git a/core/lib/Drupal/Core/Config/ConfigFactory.php b/core/lib/Drupal/Core/Config/ConfigFactory.php
index ca36ce7..1cc041f 100644
--- a/core/lib/Drupal/Core/Config/ConfigFactory.php
+++ b/core/lib/Drupal/Core/Config/ConfigFactory.php
@@ -8,6 +8,7 @@
 namespace Drupal\Core\Config;
 
 use Symfony\Component\EventDispatcher\EventDispatcher;
+use Drupal\Core\Language\Language;
 
 /**
  * Defines the configuration object factory.
@@ -39,6 +40,13 @@ class ConfigFactory {
   protected $eventDispatcher;
 
   /**
+   * A Language object to pass to Config objects.
+   *
+   * @var Drupal\Core\Language\Language
+   */
+  protected $language;
+
+  /**
    * Constructs the Config factory.
    *
    * @param Drupal\Core\Config\StorageInterface $storage
@@ -46,10 +54,24 @@ class ConfigFactory {
    *   configuration data.
    * @param Symfony\Component\EventDispatcher\EventDispatcher
    *   An event dispatcher instance to use for configuration events.
+   * @param Drupal\Core\Language\Language
+   *   An event dispatcher instance to use for configuration events.
    */
-  public function __construct(StorageInterface $storage, EventDispatcher $event_dispatcher) {
+  public function __construct(StorageInterface $storage, EventDispatcher $event_dispatcher, Language $language) {
     $this->storage = $storage;
     $this->eventDispatcher = $event_dispatcher;
+    $this->language = $language;
+  }
+
+  /**
+   * Set the language to pass to Config objects.
+   *
+   * @param Language $language
+   * @return void
+   */
+  public function setLanguage(Language $language) {
+    $this->language = $language;
+    return $this;
   }
 
   /**
@@ -82,7 +104,7 @@ public function get($name) {
     // @todo The decrease of CPU time is interesting, since that means that
     //   ContainerBuilder involves plenty of function calls (which are known to
     //   be slow in PHP).
-    $config = new Config($name, $this->storage, $this->eventDispatcher);
+    $config = new Config($name, $this->storage, $this->eventDispatcher, $this->language);
     return $config->init();
   }
 
diff --git a/core/lib/Drupal/Core/CoreBundle.php b/core/lib/Drupal/Core/CoreBundle.php
index e1147ac..0c44f71 100644
--- a/core/lib/Drupal/Core/CoreBundle.php
+++ b/core/lib/Drupal/Core/CoreBundle.php
@@ -55,7 +55,8 @@ public function build(ContainerBuilder $container) {
       ->addMethodCall('addSubscriber', array(new Reference('config.subscriber.globalconf')));
     $container->register('config.factory', 'Drupal\Core\Config\ConfigFactory')
       ->addArgument(new Reference('config.storage'))
-      ->addArgument(new Reference('dispatcher'));
+      ->addArgument(new Reference('dispatcher'))
+      ->addArgument(new Reference('language_service'));
 
     // Register staging configuration storage.
     $container
diff --git a/core/modules/locale/lib/Drupal/locale/LocaleConfigSubscriber.php b/core/modules/locale/lib/Drupal/locale/LocaleConfigSubscriber.php
index 3d2fd4a..4ae656d 100644
--- a/core/modules/locale/lib/Drupal/locale/LocaleConfigSubscriber.php
+++ b/core/modules/locale/lib/Drupal/locale/LocaleConfigSubscriber.php
@@ -26,7 +26,7 @@ class LocaleConfigSubscriber implements EventSubscriberInterface {
    */
   public function configLoad(ConfigEvent $event) {
     $config = $event->getConfig();
-    $language = language(LANGUAGE_TYPE_INTERFACE);
+    $language = $config->getLanguage();
     $locale_name = $this->getLocaleConfigName($config->getName(), $language);
     if ($override = $config->getStorage()->read($locale_name)) {
       $config->setOverride($override);
