diff -u b/core/modules/user/user.module b/core/modules/user/user.module
--- b/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -1094,7 +1094,7 @@
     $languages = language_list(TRUE);
 
     // If the user is being created, we set the user language to the page language.
-    $user_preferred_language = $register ? $language_interface : user_preferred_language($user);
+    $user_preferred_language = $register ? $language_interface : user_preferred_language($account);
 
     $names = array();
     foreach ($languages as $langcode => $item) {
@@ -1123,7 +1123,7 @@
     );
     $form['language']['preferred_langcode'] = array(
       '#type' => 'value',
-      '#value' => language_default()->langcode,
+      '#value' => '',
     );
   }
 
@@ -1147,6 +1147,7 @@
  * Sets the value of the user register and profile forms' langcode element.
  */
 function _user_language_selector_langcode_value($element, $input, &$form_state) {
+  // Only add to the description if the form element have a description.
   if (isset($form_state['complete_form']['language']['preferred_langcode']['#description'])) {
     $form_state['complete_form']['language']['preferred_langcode']['#description'] .= ' ' . t("This is also assumed to be the primary language of this account's profile information.");
   }
only in patch2:
unchanged:
--- a/core/modules/openid/openid.module
+++ b/core/modules/openid/openid.module
@@ -268,8 +268,8 @@ function openid_form_user_register_form_alter(&$form, &$form_state) {
       // specific) strings.
       foreach (array_reverse($candidate_languages) as $candidate_language) {
         if (isset($enabled_languages[$candidate_language])) {
-          $form['locale']['preferred_langcode']['#type'] = 'hidden';
-          $form['locale']['preferred_langcode']['#value'] = $candidate_language;
+          $form['language']['preferred_langcode']['#type'] = 'hidden';
+          $form['language']['preferred_langcode']['#value'] = $candidate_language;
         }
       }
     }
