diff --git a/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/Editor/CKEditor.php b/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/Editor/CKEditor.php
index f0124ba..3ba76a6 100644
--- a/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/Editor/CKEditor.php
+++ b/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/Editor/CKEditor.php
@@ -7,8 +7,11 @@
 
 namespace Drupal\ckeditor\Plugin\Editor;
 
+use Drupal\Core\Cache\CacheBackendInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\ckeditor\CKEditorPluginManager;
 use Drupal\Core\Language\Language;
+use Drupal\Core\Language\LanguageManager;
 use Drupal\editor\Plugin\EditorBase;
 use Drupal\editor\Annotation\Editor;
 use Drupal\Core\Annotation\Translation;
@@ -28,6 +31,20 @@
 class CKEditor extends EditorBase implements ContainerFactoryPluginInterface {
 
   /**
+   * The module handler to invoke hooks on.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   */
+  protected $moduleHandler;
+
+  /**
+   * The language manager.
+   *
+   * @var \Drupal\Core\Language\LanguageManager
+   */
+  protected $languageManager;
+
+  /**
    * The CKEditor plugin manager.
    *
    * @var \Drupal\ckeditor\CKEditorPluginManager
@@ -45,17 +62,30 @@ class CKEditor extends EditorBase implements ContainerFactoryPluginInterface {
    *   The plugin implementation definition.
    * @param \Drupal\ckeditor\CKEditorPluginManager $ckeditor_plugin_manager
    *   The CKEditor plugin manager.
+   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
+   *   The module handler to invoke hooks on.
+   * @param \Drupal\Core\Language\LanguageManager $language_manager
+   *   The language manager.
    */
-  public function __construct(array $configuration, $plugin_id, array $plugin_definition, CKEditorPluginManager $ckeditor_plugin_manager) {
+  public function __construct(array $configuration, $plugin_id, array $plugin_definition, CKEditorPluginManager $ckeditor_plugin_manager, ModuleHandlerInterface $module_handler, LanguageManager $language_manager) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
     $this->ckeditorPluginManager = $ckeditor_plugin_manager;
+    $this->moduleHandler = $module_handler;
+    $this->languageManager = $language_manager;
   }
 
   /**
    * {@inheritdoc}
    */
   public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) {
-    return new static($configuration, $plugin_id, $plugin_definition, $container->get('plugin.manager.ckeditor.plugin'));
+    return new static(
+      $configuration, 
+      $plugin_id, 
+      $plugin_definition, 
+      $container->get('plugin.manager.ckeditor.plugin'), 
+      $container->get('module_handler'),
+      $container->get('language_manager')
+    );
   }
 
   /**
@@ -191,8 +221,6 @@ public function settingsFormSubmit(array $form, array &$form_state) {
    * {@inheritdoc}
    */
   public function getJSSettings(EditorEntity $editor) {
-    $language_interface = language(Language::TYPE_INTERFACE);
-
     $settings = array();
 
     // Get the settings for all enabled plugins, even the internal ones.
@@ -202,13 +230,23 @@ public function getJSSettings(EditorEntity $editor) {
       $settings += $plugin->getConfig($editor);
     }
 
+    // Fallback on English if no matching language code was found.
+    $display_langcode = 'en';
+
+    // Match the interface language code with possible pairs from ckeditor.
+    $ckeditor_langcodes = $this->getLangcodes();
+    $language_interface = $this->languageManager()->getLanguage(Language::TYPE_INTERFACE);
+    if (isset($ckeditor_langcodes[$language_interface->id])) {
+      $display_langcode = $language_interface->id;
+    }
+
     // Next, set the most fundamental CKEditor settings.
     $external_plugin_files = $this->ckeditorPluginManager->getEnabledPluginFiles($editor);
     $settings += array(
       'toolbar' => $this->buildToolbarJSSetting($editor),
       'contentsCss' => $this->buildContentsCssJSSetting($editor),
       'extraPlugins' => implode(',', array_keys($external_plugin_files)),
-      'language' => $language_interface->id,
+      'language' => $display_langcode,
       // Configure CKEditor to not load styles.js. The StylesCombo plugin will
       // set stylesSet according to the user's settings, if the "Styles" button
       // is enabled. We cannot get rid of this until CKEditor will stop loading
@@ -228,6 +266,38 @@ public function getJSSettings(EditorEntity $editor) {
   }
 
   /**
+   * Returns a list of language codes supported by CKEditor.
+   *
+   * @return array
+   *   An associative array keyed by language codes.
+   */
+  private function getLangcodes() {
+    $langcodes = cache('ckeditor')->get('langcodes');
+    if (empty($langcodes)) {
+      $langcodes = array();
+      // Collect languages included with CKEditor based on file listing.
+      $ckeditor_languages = glob(DRUPAL_ROOT . '/core/assets/vendor/ckeditor/lang/*.js');
+      // Get languagr mapping if available to map to Drupal language codes.
+      $language_mappings = $this->moduleHandler()->moduleExists('language') ? language_get_browser_drupal_langcode_mappings() : array();
+      foreach ($ckeditor_languages as $language_filename) {
+        $langcode = basename($language_filename);
+        $langcodes[$langcode] = $langcode;
+        // If this language code is available in a Drupal mapping, use that
+        // to compute a possibility for matching from the Drupal langcode to
+        // the CKEditor langcode.
+        if (isset($language_mappings[$langcode]) && !isset($langcodes[$language_mappings[$langcode]])) {
+          $langcodes[$language_mappings[$langcode]] = $langcode;
+        }
+      }
+      // @todo figure out when should this be cleared. With the current code
+      // this would need to be cleared on browser mapping changes and core
+      // updates. That sounds like too much outside interference(?).
+      cache('ckeditor')->set('langcodes', $langcodes);
+    }
+    return $langcodes;
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function getLibraries(EditorEntity $editor) {
