Index: modules/locale/locale.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v
retrieving revision 1.262
diff -u -p -r1.262 locale.module
--- modules/locale/locale.module	10 Oct 2009 16:48:38 -0000	1.262
+++ modules/locale/locale.module	11 Oct 2009 16:44:19 -0000
@@ -286,6 +286,7 @@ function locale_language_selector_form(&
     '#type' => 'fieldset',
     '#title' => t('Language settings'),
     '#weight' => 1,
+    '#access' => ($form['#user_category'] == 'account' || ($form['#user_category'] == 'register' && user_access('administer users'))),
   );
 
   // Get language negotiation settings.
@@ -338,7 +339,7 @@ function locale_form_alter(&$form, &$for
   if (variable_get('language_count', 1) > 1) {
     // Display language selector when either creating a user on the admin
     // interface or editing a user account.
-    if (($form_id == 'user_register_form' && user_access('administer users')) || ($form_id == 'user_profile_form' && $form['#user_category'] == 'account')) {
+    if ($form_id == 'user_register_form' || ($form_id == 'user_profile_form' && $form['#user_category'] == 'account')) {
       locale_language_selector_form($form, $form_state, $form['#user']);
     }
   }
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.1062
diff -u -p -r1.1062 user.module
--- modules/user/user.module	10 Oct 2009 21:39:03 -0000	1.1062
+++ modules/user/user.module	11 Oct 2009 16:11:32 -0000
@@ -3136,6 +3136,12 @@ function user_register_submit($form, &$f
   $form_state['values']['pass'] = $pass;
   $form_state['values']['init'] = $form_state['values']['mail'];
 
+  // Assign the currently active language, if the user did not select a language
+  // on the registration form, to properly translate user e-mails.
+  if (empty($form_state['values']['language'])) {
+    $form_state['values']['language'] = $GLOBALS['language']->language;
+  }
+
   $account = $form['#user'];
   $account = user_save($account, $form_state['values']);
   // Terminate if an error occurred during user_save().
Index: modules/user/user.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.test,v
retrieving revision 1.63
diff -u -p -r1.63 user.test
--- modules/user/user.test	10 Oct 2009 16:48:39 -0000	1.63
+++ modules/user/user.test	11 Oct 2009 16:10:37 -0000
@@ -123,7 +123,7 @@ class UserRegistrationTestCase extends D
     $this->assertTrue(($new_user->created > REQUEST_TIME - 20 ), t('Correct creation time.'));
     $this->assertEqual($new_user->status, variable_get('user_register', 1) == 1 ? 1 : 0, t('Correct status field.'));
     $this->assertEqual($new_user->timezone, variable_get('date_default_timezone'), t('Correct time zone field.'));
-    $this->assertEqual($new_user->language, '', t('Correct language field.'));
+    $this->assertEqual($new_user->language, $GLOBALS['language']->language, t('Correct language field.'));
     $this->assertEqual($new_user->picture, '', t('Correct picture field.'));
     $this->assertEqual($new_user->init, $mail, t('Correct init field.'));
   }
