diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index 2d6366739ee939a56f3e6dad3866d937a159bc7d..2856529603940643394c537ab29c7265cec7277d 100644
--- a/includes/bootstrap.inc
+++ b/includes/bootstrap.inc
@@ -2559,14 +2559,28 @@ function language_list($field = 'language') {
 }
 
 /**
- * Default language used on the site
+ * Default language used on the site.
  *
- * @param $property
- *   Optional property of the language object to return
- */
-function language_default($property = NULL) {
-  $language = variable_get('language_default', (object) array('language' => 'en', 'name' => 'English', 'native' => 'English', 'direction' => 0, 'enabled' => 1, 'plurals' => 0, 'formula' => '', 'domain' => '', 'prefix' => '', 'weight' => 0, 'javascript' => ''));
-  return $property ? $language->$property : $language;
+ * @return
+ *   A language object.
+ */
+function language_default() {
+  return variable_get(
+    'language_default',
+    (object) array(
+      'language' => 'en',
+      'name' => 'English',
+      'native' => 'English',
+      'direction' => 0,
+      'enabled' => 1,
+      'plurals' => 0,
+      'formula' => '',
+      'domain' => '',
+      'prefix' => '',
+      'weight' => 0,
+      'javascript' => ''
+    )
+  );
 }
 
 /**
diff --git a/includes/locale.inc b/includes/locale.inc
index b7d9672dfc66adab96468b4adacbb31d64ef543c..fabde9025af8be9bd764583b505cd80e4c185b71 100644
--- a/includes/locale.inc
+++ b/includes/locale.inc
@@ -709,7 +709,7 @@ function _locale_rebuild_js($langcode = NULL) {
     // Update the default language variable if the default language has been altered.
     // This is necessary to keep the variable consistent with the database
     // version of the language and to prevent checking against an outdated hash.
-    $default_langcode = language_default('language');
+    $default_langcode = language_default()->language;
     if ($default_langcode == $language->language) {
       $default = db_query("SELECT * FROM {languages} WHERE language = :language", array(':language' => $default_langcode))->fetchObject();
       variable_set('language_default', $default);
diff --git a/modules/field/field.multilingual.inc b/modules/field/field.multilingual.inc
index e0cfec76c0f265848e862c0c2e309f6967f8a636..d9227455cca5a0a7a1ec98a8b18c0936f8a649c5 100644
--- a/modules/field/field.multilingual.inc
+++ b/modules/field/field.multilingual.inc
@@ -228,7 +228,7 @@ function field_valid_language($langcode, $default = TRUE) {
     return $langcode;
   }
   global $language_content;
-  return $default ? language_default('language') : $language_content->language;
+  return $default ? language_default()->language : $language_content->language;
 }
 
 /**
diff --git a/modules/locale/locale.admin.inc b/modules/locale/locale.admin.inc
index d9044c6ee9cc41512603159e1b35505dea50dcd1..3e8f707004f2f8ff5bc4200090a0b95bd01ae389 100644
--- a/modules/locale/locale.admin.inc
+++ b/modules/locale/locale.admin.inc
@@ -52,7 +52,7 @@ function locale_languages_overview_form() {
     '#title' => t('Default language'),
     '#title_display' => 'invisible',
     '#options' => $options,
-    '#default_value' => language_default('language'),
+    '#default_value' => language_default()->language,
   );
   $form['actions'] = array('#type' => 'actions');
   $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
@@ -392,7 +392,7 @@ function locale_languages_edit_form_validate($form, &$form_state) {
   if (!empty($form_state['values']['domain']) && $duplicate = db_query("SELECT language FROM {languages} WHERE domain = :domain AND language <> :language", array(':domain' => $form_state['values']['domain'], ':language' => $form_state['values']['langcode']))->fetchField()) {
     form_set_error('domain', t('The domain (%domain) is already tied to a language (%language).', array('%domain' => $form_state['values']['domain'], '%language' => $duplicate->language)));
   }
-  if (empty($form_state['values']['prefix']) && language_default('language') != $form_state['values']['langcode'] && empty($form_state['values']['domain'])) {
+  if (empty($form_state['values']['prefix']) && language_default()->language != $form_state['values']['langcode'] && empty($form_state['values']['domain'])) {
     form_set_error('prefix', t('Only the default language can have both the domain and prefix empty.'));
   }
   if (!empty($form_state['values']['prefix']) && $duplicate = db_query("SELECT language FROM {languages} WHERE prefix = :prefix AND language <> :language", array(':prefix' => $form_state['values']['prefix'], ':language' => $form_state['values']['langcode']))->fetchField()) {
@@ -439,7 +439,7 @@ function locale_languages_delete_form($form, &$form_state, $langcode) {
     drupal_goto('admin/config/regional/language');
   }
 
-  if (language_default('language') == $langcode) {
+  if (language_default()->language == $langcode) {
     drupal_set_message(t('The default language cannot be deleted.'));
     drupal_goto('admin/config/regional/language');
   }
diff --git a/modules/path/path.test b/modules/path/path.test
index f42ec81be08cc95b101cecf534fb654e0b42b785..9e501782b4cdfec090859a3142b9fcbd17ef9f1f 100644
--- a/modules/path/path.test
+++ b/modules/path/path.test
@@ -477,7 +477,7 @@ class PathMonolingualTestCase extends DrupalWebTestCase {
 
     // Verify that French is the only language.
     $this->assertFalse(drupal_multilingual(), t('Site is mono-lingual'));
-    $this->assertEqual(language_default('language'), 'fr', t('French is the default language'));
+    $this->assertEqual(language_default()->language, 'fr', t('French is the default language'));
 
     // Set language detection to URL.
     $edit = array('language[enabled][locale-url]' => TRUE);