From 79b9a36cb03a63ea1107460edfb3a0df42f65b6c Mon Sep 17 00:00:00 2001
From: webchick <webchick@24967.no-reply.drupal.org>
Date: Sun, 26 Aug 2012 10:01:29 -0700
Subject: [PATCH] =?UTF-8?q?Issue=20#1739994=20by=20pp,=20das-peter,=20G?=
 =?UTF-8?q?=C3=A1bor=20Hojtsy:=20Use=20the=20Language=20class=20universall?=
 =?UTF-8?q?y=20instead=20of=20stdObj=20instances.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 core/includes/install.core.inc                | 13 +++++----
 core/lib/Drupal/Core/Language/Language.php    | 21 +++++++++++---
 .../entity/Tests/EntityTranslationTest.php    |  5 ++--
 .../Drupal/field/Tests/TranslationTest.php    |  6 ++--
 core/modules/language/language.admin.inc      | 17 +++++------
 core/modules/language/language.module         |  8 -----
 .../LanguageBrowserDetectionUnitTest.php      | 29 ++++++++++---------
 .../LanguageUILanguageNegotiationTest.php     | 19 ++++++------
 .../locale/Tests/LocaleUninstallTest.php      |  5 ++--
 core/modules/locale/locale.bulk.inc           |  9 +++---
 .../node/Tests/NodeAccessLanguageTest.php     | 10 ++++---
 .../Tests/NodeFieldMultilingualTestCase.php   |  5 ++--
 .../openid/Tests/OpenIDRegistrationTest.php   | 22 +++++++-------
 .../Tests/SearchMultilingualEntityTest.php    | 10 ++++---
 .../system/Tests/Common/HttpRequestTest.php   |  5 ++--
 .../Tests/Form/LanguageSelectElementTest.php  |  8 ++---
 .../system/Tests/System/DateTimeTest.php      |  5 ++--
 .../taxonomy/Tests/TermLanguageTest.php       | 10 ++++---
 .../taxonomy/Tests/VocabularyLanguageTest.php | 10 ++++---
 19 files changed, 119 insertions(+), 98 deletions(-)

diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index 81f825e9c4c2..e53e895256cf 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -3,6 +3,7 @@
 use Drupal\Core\DrupalKernel;
 use Drupal\Core\Database\Database;
 use Drupal\Core\Database\Install\TaskException;
+use Drupal\Core\Language\Language;
 
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
@@ -1325,9 +1326,9 @@ function install_select_language_form($form, &$form_state, $files) {
       $select_options[$file->langcode] = $file->langcode;
     }
     // Build a list of languages simulated for browser detection.
-    $languages[$file->langcode] = (object) array(
+    $languages[$file->langcode] = new Language(array(
       'langcode' => $file->langcode,
-    );
+    ));
   }
 
   $browser_langcode = language_from_browser($languages);
@@ -1479,19 +1480,19 @@ function install_import_translations(&$install_state) {
   if (!isset($standard_languages[$langcode])) {
     // Drupal does not know about this language, so we prefill its values with
     // our best guess. The user will be able to edit afterwards.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => $langcode,
       'name' => $langcode,
       'default' => TRUE,
-    );
+    ));
     language_save($language);
   }
   else {
     // A known predefined language, details will be filled in properly.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => $langcode,
       'default' => TRUE,
-    );
+    ));
     language_save($language);
   }
 
diff --git a/core/lib/Drupal/Core/Language/Language.php b/core/lib/Drupal/Core/Language/Language.php
index e774fa99304d..4db85dadbabe 100644
--- a/core/lib/Drupal/Core/Language/Language.php
+++ b/core/lib/Drupal/Core/Language/Language.php
@@ -18,9 +18,9 @@
  */
 class Language {
   // Properties within the Language are set up as the default language.
-  public $name = 'English';
-  public $langcode = 'en';
-  public $direction = 0;
+  public $name = '';
+  public $langcode = '';
+  public $direction = LANGUAGE_LTR;
   public $weight = 0;
   public $default = FALSE;
   public $method_id = NULL;
@@ -33,10 +33,23 @@ class Language {
    *   The properties used to construct the language.
    */
   public function __construct(array $options = array()) {
-    // Set all the properties for the language.
+    // Set all the provided properties for the language.
     foreach ($options as $name => $value) {
       $this->$name = $value;
     }
+    // If some options were not set, set sane defaults of a predefined language.
+    if (!isset($options['name']) || !isset($options['direction'])) {
+      include_once DRUPAL_ROOT . '/core/includes/standard.inc';
+      $predefined = standard_language_list();
+      if (isset($predefined[$this->langcode])) {
+        if (!isset($options['name'])) {
+          $this->name = $predefined[$this->langcode][0];
+        }
+        if (!isset($options['direction']) && isset($predefined[$this->langcode][2])) {
+          $this->direction = $predefined[$this->langcode][2];
+        }
+      }
+    }
   }
 
   /**
diff --git a/core/modules/entity/lib/Drupal/entity/Tests/EntityTranslationTest.php b/core/modules/entity/lib/Drupal/entity/Tests/EntityTranslationTest.php
index c7f7961c029b..252e048b953b 100644
--- a/core/modules/entity/lib/Drupal/entity/Tests/EntityTranslationTest.php
+++ b/core/modules/entity/lib/Drupal/entity/Tests/EntityTranslationTest.php
@@ -10,6 +10,7 @@
 use Exception;
 use InvalidArgumentException;
 use Drupal\simpletest\WebTestBase;
+use Drupal\Core\Language\Language;
 
 /**
  * Tests entity translation.
@@ -60,10 +61,10 @@ function setUp() {
     // Create test languages.
     $this->langcodes = array();
     for ($i = 0; $i < 3; ++$i) {
-      $language = (object) array(
+      $language = new Language(array(
         'langcode' => 'l' . $i,
         'name' => $this->randomString(),
-      );
+      ));
       $this->langcodes[$i] = $language->langcode;
       language_save($language);
     }
diff --git a/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php b/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php
index 57b3b5b50ca9..516ad588f3b3 100644
--- a/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php
+++ b/core/modules/field/lib/Drupal/field/Tests/TranslationTest.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\field\Tests;
 
+use Drupal\Core\Language\Language;
+
 /**
  * Unit test class for the multilanguage fields logic.
  *
@@ -55,10 +57,10 @@ function setUp() {
     $this->instance = field_read_instance('test_entity', $this->field_name, 'test_bundle');
 
     for ($i = 0; $i < 3; ++$i) {
-      $language = (object) array(
+      $language = new Language(array(
         'langcode' => 'l' . $i,
         'name' => $this->randomString(),
-      );
+      ));
       language_save($language);
     }
   }
diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc
index 245c62be617e..b388986769a6 100644
--- a/core/modules/language/language.admin.inc
+++ b/core/modules/language/language.admin.inc
@@ -5,6 +5,7 @@
  * Administration functions for language.module.
  */
 
+use Drupal\Core\Language\Language;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 
 /**
@@ -249,7 +250,7 @@ function language_admin_edit_form($form, &$form_state, $language) {
  */
 function _language_admin_common_controls(&$form, $language = NULL) {
   if (!is_object($language)) {
-    $language = new stdClass();
+    $language = new Language(array('langcode' => NULL, 'name' => NULL,));
   }
   if (isset($language->langcode)) {
     $form['langcode_view'] = array(
@@ -268,8 +269,8 @@ function _language_admin_common_controls(&$form, $language = NULL) {
       '#title' => t('Language code'),
       '#maxlength' => 12,
       '#required' => TRUE,
-      '#default_value' => @$language->langcode,
-      '#disabled' => (isset($language->langcode)),
+      '#default_value' => '',
+      '#disabled' => FALSE,
       '#description' => t('Use language codes as <a href="@w3ctags">defined by the W3C</a> for interoperability. <em>Examples: "en", "en-gb" and "zh-hant".</em>', array('@w3ctags' => 'http://www.w3.org/International/articles/language-tags/')),
     );
   }
@@ -332,18 +333,14 @@ function language_admin_add_form_submit($form, &$form_state) {
   if ($langcode == 'custom') {
     $langcode = $form_state['values']['langcode'];
     // Custom language form.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => $langcode,
       'name' => $form_state['values']['name'],
       'direction' => $form_state['values']['direction'],
-    );
+    ));
   }
   else {
-    include_once DRUPAL_ROOT . '/core/includes/standard.inc';
-    $predefined = standard_language_list();
-    $language = (object) array(
-      'langcode' => $langcode,
-    );
+    $language = new Language(array('langcode' => $langcode));
   }
   // Save the language and inform the user that it happened.
   $language = language_save($language);
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 0a74712735ee..f90ef93b3a6c 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -208,14 +208,6 @@ function language_process_language_select($element) {
 function language_save($language) {
   $language->is_new = !(bool) db_query_range('SELECT 1 FROM {language} WHERE langcode = :langcode', 0, 1, array(':langcode' => $language->langcode))->fetchField();
 
-  // If name was not set, we add a predefined language.
-  if (!isset($language->name)) {
-    include_once DRUPAL_ROOT . '/core/includes/standard.inc';
-    $predefined = standard_language_list();
-    $language->name = $predefined[$language->langcode][0];
-    $language->direction = isset($predefined[$language->langcode][2]) ? $predefined[$language->langcode][2] : LANGUAGE_LTR;
-  }
-
   // Let other modules modify $language before saved.
   module_invoke_all('language_presave', $language);
 
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php
index bb7b481b56c6..3586ba8c74fa 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageBrowserDetectionUnitTest.php
@@ -8,6 +8,7 @@
 namespace Drupal\language\Tests;
 
 use Drupal\simpletest\UnitTestBase;
+use Drupal\Core\Language\Language;
 
 /**
  * Test browser language detection.
@@ -31,32 +32,32 @@ function testLanguageFromBrowser() {
 
     $languages = array(
       // In our test case, 'en' has priority over 'en-US'.
-      'en' => (object) array(
+      'en' => new Language(array(
         'langcode' => 'en',
-      ),
-      'en-US' => (object) array(
+      )),
+      'en-US' => new Language(array(
         'langcode' => 'en-US',
-      ),
+      )),
       // But 'fr-CA' has priority over 'fr'.
-      'fr-CA' => (object) array(
+      'fr-CA' => new Language(array(
         'langcode' => 'fr-CA',
-      ),
-      'fr' => (object) array(
+      )),
+      'fr' => new Language(array(
         'langcode' => 'fr',
-      ),
+      )),
       // 'es-MX' is alone.
-      'es-MX' => (object) array(
+      'es-MX' => new Language(array(
         'langcode' => 'es-MX',
-      ),
+      )),
       // 'pt' is alone.
-      'pt' => (object) array(
+      'pt' => new Language(array(
         'langcode' => 'pt',
-      ),
+      )),
       // Language codes with more then one dash are actually valid.
       // eh-oh-laa-laa is the official language code of the Teletubbies.
-      'eh-oh-laa-laa' => (object) array(
+      'eh-oh-laa-laa' => new Language(array(
         'langcode' => 'eh-oh-laa-laa',
-      ),
+      )),
     );
 
     $test_cases = array(
diff --git a/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php b/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php
index d12bdfaa0436..61235aa55ad9 100644
--- a/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php
+++ b/core/modules/language/lib/Drupal/language/Tests/LanguageUILanguageNegotiationTest.php
@@ -8,6 +8,7 @@
 namespace Drupal\language\Tests;
 
 use Drupal\simpletest\WebTestBase;
+use Drupal\Core\Language\Language;
 
 /**
  * Test UI language negotiation
@@ -83,13 +84,13 @@ function testUILanguageNegotiation() {
     $language_domain = 'example.cn';
 
     // Setup the site languages by installing two languages.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => $langcode_browser_fallback,
-    );
+    ));
     language_save($language);
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => $langcode,
-    );
+    ));
     language_save($language);
 
     // We will look for this string in the admin/config screen to see if the
@@ -254,9 +255,9 @@ protected function runTest($test) {
   function testUrlLanguageFallback() {
     // Add the Italian language.
     $langcode_browser_fallback = 'it';
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => $langcode_browser_fallback,
-    );
+    ));
     language_save($language);
     $languages = language_list();
 
@@ -282,7 +283,7 @@ function testUrlLanguageFallback() {
     // Access the front page without specifying any valid URL language prefix
     // and having as browser language preference a non-default language.
     $http_header = array("Accept-Language: $langcode_browser_fallback;q=1");
-    $language = (object) array('langcode' => '');
+    $language = new Language(array('langcode' => ''));
     $this->drupalGet('', array('language' => $language), $http_header);
 
     // Check that the language switcher active link matches the given browser
@@ -302,9 +303,9 @@ function testUrlLanguageFallback() {
   function testLanguageDomain() {
     // Add the Italian language.
     $langcode = 'it';
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => $langcode,
-    );
+    ));
     language_save($language);
     $languages = language_list();
 
diff --git a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php
index 00fb2b0f6580..7591f6774eba 100644
--- a/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php
+++ b/core/modules/locale/lib/Drupal/locale/Tests/LocaleUninstallTest.php
@@ -8,6 +8,7 @@
 namespace Drupal\locale\Tests;
 
 use Drupal\simpletest\WebTestBase;
+use Drupal\Core\Language\Language;
 
 /**
  * Locale uninstall with English UI functional test.
@@ -49,11 +50,11 @@ function setUp() {
   function testUninstallProcess() {
     $locale_module = array('locale', 'language');
 
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'fr',
       'name' => 'French',
       'default' => $this->langcode == 'fr',
-    );
+    ));
     language_save($language);
     // Reset statically cached language objects.
     language(NULL, TRUE);
diff --git a/core/modules/locale/locale.bulk.inc b/core/modules/locale/locale.bulk.inc
index 1bdcddd55b74..5229c0178baf 100644
--- a/core/modules/locale/locale.bulk.inc
+++ b/core/modules/locale/locale.bulk.inc
@@ -8,6 +8,7 @@
 use Drupal\Component\Gettext\PoStreamWriter;
 use Drupal\locale\Gettext;
 use Drupal\locale\PoDatabaseReader;
+use Drupal\Core\Language\Language;
 
 
 /**
@@ -99,11 +100,9 @@ function locale_translate_import_form_submit($form, &$form_state) {
     // Add language, if not yet supported.
     $language = language_load($form_state['values']['langcode']);
     if (empty($language)) {
-      include_once DRUPAL_ROOT . '/core/includes/standard.inc';
-      $predefined = standard_language_list();
-      $language = (object) array(
-        'langcode' => $form_state['values']['langcode'],
-      );
+      $language = new Language(array(
+        'langcode' => $form_state['values']['langcode']
+      ));
       $language = language_save($language);
       drupal_set_message(t('The language %language has been created.', array('%language' => t($language->name))));
     }
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeAccessLanguageTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeAccessLanguageTest.php
index 8a6ce9916f2e..7de9d745b328 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeAccessLanguageTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeAccessLanguageTest.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\node\Tests;
 
+use Drupal\Core\Language\Language;
+
 /**
  * Test case to verify node_access functionality for multiple languages.
  */
@@ -51,13 +53,13 @@ function setUp() {
    */
   function testNodeAccess() {
     // Add Hungarian and Catalan.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'hu',
-    );
+    ));
     language_save($language);
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'ca',
-    );
+    ));
     language_save($language);
 
     // Tests the default access provided for a published Hungarian node.
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeFieldMultilingualTestCase.php b/core/modules/node/lib/Drupal/node/Tests/NodeFieldMultilingualTestCase.php
index 3b8a8aea5278..b96dae98b7e2 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeFieldMultilingualTestCase.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeFieldMultilingualTestCase.php
@@ -8,6 +8,7 @@
 namespace Drupal\node\Tests;
 
 use Drupal\simpletest\WebTestBase;
+use Drupal\Core\Language\Language;
 
 /**
  * Functional test for multilingual fields.
@@ -40,10 +41,10 @@ function setUp() {
     $this->drupalLogin($admin_user);
 
     // Add a new language.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'it',
       'name' => 'Italian',
-    );
+    ));
     language_save($language);
 
     // Enable URL language detection and selection.
diff --git a/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php
index c46676d2eb12..61291c4fda2a 100644
--- a/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php
+++ b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\openid\Tests;
 
+use Drupal\Core\Language\Language;
+
 /**
  * Test account registration using Simple Registration and Attribute Exchange.
  */
@@ -54,13 +56,13 @@ function testRegisterUserWithEmailVerification() {
     // process should pick 'pt' based on the sreg.language being 'pt-BR'
     // (and falling back on least specific language given no pt-br available
     // locally).
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'pt',
-    );
+    ));
     language_save($language);
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'pt-pt',
-    );
+    ));
     language_save($language);
 
     // Use a User-supplied Identity that is the URL of an XRDS document.
@@ -109,9 +111,9 @@ function testRegisterUserWithoutEmailVerification() {
 
     // Save Portuguese, Brazil as an optional language. The process should pick
     // 'pt-br' based on the sreg.language later.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'pt-br',
-    );
+    ));
     language_save($language);
 
     // Use a User-supplied Identity that is the URL of an XRDS document.
@@ -246,13 +248,13 @@ function testRegisterUserWithAXButNoSREG() {
 
     // Save Portuguese and Portuguese, Portugal as optional languages. The
     // process should pick 'pt-pt' as the more specific language.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'pt',
-    );
+    ));
     language_save($language);
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'pt-pt',
-    );
+    ));
     language_save($language);
 
     // Use a User-supplied Identity that is the URL of an XRDS document.
diff --git a/core/modules/search/lib/Drupal/search/Tests/SearchMultilingualEntityTest.php b/core/modules/search/lib/Drupal/search/Tests/SearchMultilingualEntityTest.php
index b3b555b7fdce..b423c758c04f 100644
--- a/core/modules/search/lib/Drupal/search/Tests/SearchMultilingualEntityTest.php
+++ b/core/modules/search/lib/Drupal/search/Tests/SearchMultilingualEntityTest.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\search\Tests;
 
+use Drupal\Core\Language\Language;
+
 /**
  * Tests entities with multilingual fields.
  */
@@ -33,15 +35,15 @@ function setUp() {
     parent::setUp();
 
     // Add two new languages.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'hu',
       'name' => 'Hungarian',
-    );
+    ));
     language_save($language);
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'sv',
       'name' => 'Swedish',
-    );
+    ));
     language_save($language);
 
     // Make the body field translatable.
diff --git a/core/modules/system/lib/Drupal/system/Tests/Common/HttpRequestTest.php b/core/modules/system/lib/Drupal/system/Tests/Common/HttpRequestTest.php
index 276d82e9a5e2..b4f5c5d15217 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Common/HttpRequestTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Common/HttpRequestTest.php
@@ -8,6 +8,7 @@
 namespace Drupal\system\Tests\Common;
 
 use Drupal\simpletest\WebTestBase;
+use Drupal\Core\Language\Language;
 
 /**
  * Tests drupal_http_request().
@@ -133,10 +134,10 @@ function testDrupalHTTPRequestHeaders() {
     $this->assertEqual($request->headers['content-language'], 'en', t('Content-Language HTTP header is English.'));
 
     // Add French language.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'fr',
       'name' => 'French',
-    );
+    ));
     language_save($language);
 
     // Request front page in French and check for matching Content-language.
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php
index df103c899f4d..200735e0f65d 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/LanguageSelectElementTest.php
@@ -35,16 +35,16 @@ public static function getInfo() {
    */
   function testLanguageSelectElementOptions() {
     // Add some languages.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'aaa',
       'name' => $this->randomName(),
-    );
+    ));
     language_save($language);
 
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'bbb',
       'name' => $this->randomName(),
-    );
+    ));
     language_save($language);
 
     $this->drupalGet('form-test/language_select');
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php b/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php
index f50917b49585..6494a4aeb386 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php
@@ -8,6 +8,7 @@
 namespace Drupal\system\Tests\System;
 
 use Drupal\simpletest\WebTestBase;
+use Drupal\Core\Language\Language;
 
 /**
  * Tests generic date and time handling capabilities of Drupal.
@@ -170,10 +171,10 @@ function testDateFormatStorage() {
     $this->assertFalse($format, 'Unlocalized date format resides not in localized table.');
 
     // Enable German language
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'de',
       'default' => TRUE,
-    );
+    ));
     language_save($language);
 
     $date_format = array(
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermLanguageTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermLanguageTest.php
index 75bcbcef7d15..f64cf58e639d 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermLanguageTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/TermLanguageTest.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\taxonomy\Tests;
 
+use Drupal\Core\Language\Language;
+
 /**
  * Tests for the language feature on taxonomy terms.
  */
@@ -35,16 +37,16 @@ function setUp() {
 
   function testTermLanguage() {
     // Add first some custom languages.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'aa',
       'name' => $this->randomName(),
-    );
+    ));
     language_save($language);
 
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'bb',
       'name' => $this->randomName(),
-    );
+    ));
     language_save($language);
 
     // Add a term.
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyLanguageTest.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyLanguageTest.php
index 41dfa69e3849..f4368b76ca63 100644
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyLanguageTest.php
+++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Tests/VocabularyLanguageTest.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\taxonomy\Tests;
 
+use Drupal\Core\Language\Language;
+
 /**
  * Tests for the language feature on vocabularies.
  */
@@ -32,16 +34,16 @@ function setUp() {
 
   function testVocabularyLanguage() {
     // Add first some custom languages.
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'aa',
       'name' => $this->randomName(),
-    );
+    ));
     language_save($language);
 
-    $language = (object) array(
+    $language = new Language(array(
       'langcode' => 'bb',
       'name' => $this->randomName(),
-    );
+    ));
     language_save($language);
 
     $this->drupalGet('admin/structure/taxonomy/add');
-- 
GitLab