diff --git a/core/lib/Drupal/Component/Utility/SortArray.php b/core/lib/Drupal/Component/Utility/SortArray.php
index a8d9f00..275e633 100644
--- a/core/lib/Drupal/Component/Utility/SortArray.php
+++ b/core/lib/Drupal/Component/Utility/SortArray.php
@@ -136,7 +136,6 @@ public static function sortByWeightAndTitleKey($a, $b, $weight_key = 'weight', $
   public static function sortByKeyString($a, $b, $key) {
     $a_title = (is_array($a) && isset($a[$key])) ? $a[$key] : '';
     $b_title = (is_array($b) && isset($b[$key])) ? $b[$key] : '';
-
     return strnatcasecmp($a_title, $b_title);
   }
 
diff --git a/core/lib/Drupal/Core/Language/Language.php b/core/lib/Drupal/Core/Language/Language.php
index 4575983..c410f5f 100644
--- a/core/lib/Drupal/Core/Language/Language.php
+++ b/core/lib/Drupal/Core/Language/Language.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\Core\Language;
 
+use Drupal\Component\Utility\SortArray;
+
 /**
  * An object containing the information for an interface language.
  *
@@ -216,7 +218,9 @@ public function setNegotiationMethodId($method_id) {
    *   The array of language objects keyed by langcode.
    */
   public static function sort(&$languages) {
-    uasort($languages, 'Drupal\Component\Utility\SortArray::sortByWeightAndTitleKey');
+    uasort($languages, function ($a, $b) {
+      return SortArray::sortByWeightAndTitleKey($a, $b, 'weight', 'name');
+    });
   }
 
 }
diff --git a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php
index 2533330..e109b30 100644
--- a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php
@@ -104,4 +104,52 @@ public function testGetNegotiationMethodId() {
     $this->assertSame($method_id, $this->language->getNegotiationMethodId());
   }
 
+  /**
+   * Tests negotiationMethodId getter and setter methods.
+   *
+   * @dataProvider providerTestSortLanguages
+   *
+   * @covers ::sort()
+   */
+  public function testSortLanguages(array $unordered_languages, array $ordered_languages) {
+    Language::sort($unordered_languages);
+    // Check if the keys are in the same order.
+    $this->assertEquals(array_keys($unordered_languages), array_keys($ordered_languages));
+  }
+
+  /**
+   * Data provider for testSortLanguages.
+   *
+   * @return array
+   *   An array of test data.
+   */
+  public function providerTestSortLanguages() {
+    $en = new Language(array('id' => 'en'));
+    $en->setWeight(1);
+    $es = new Language(array('id' => 'es'));
+    $es->setWeight(2);
+    $fr = new Language(array('id' => 'fr'));
+    $fr->setWeight(2);
+    $hu = new Language(array('id' => 'hu'));
+    $hu->setWeight(1);
+
+    return array(
+      array(
+        array('en' => $en, 'es' => $es), array('en' => $en, 'es' => $es),
+      ),
+      array(
+        array('es' => $es, 'en' => $en), array('en' => $en, 'es' => $es),
+      ),
+      array(
+        array('fr' => $fr, 'es' => $es), array('fr' => $fr, 'es' => $es),
+      ),
+      array(
+        array('es' => $es, 'fr' => $fr), array('fr' => $fr, 'es' => $es),
+      ),
+      array(
+        array('hu' => $hu, 'fr' => $fr), array('hu' => $hu, 'fr' => $fr),
+      ),
+    );
+  }
+
 }
