--- modules/user/user.module	2008-05/19 07:27:36.000000000 +0100
+++ modules/user/user.module	2008-06-30 03:09:56.000000000 +0100
@@ -1,5 +1,5 @@
 <?php
-// $Id: user.module,v 1.892.2.4 2008/05/19 07:27:36 goba Exp $
+// $Id: user.module,v 1.892.2.5 2008/06/30 03:09:56 martinquested Exp $
 
 /**
  * @file
@@ -1622,7 +1622,7 @@ function _user_mail_text($key, $language
 
   if ($admin_setting = variable_get('user_mail_'. $key, FALSE)) {
     // An admin setting overrides the default string.
-    return strtr($admin_setting, $variables);
+    return t($admin_setting, $variables, $langcode);
   }
   else {
     // No override, return default string.
@@ -1635,13 +1635,14 @@ function _user_mail_text($key, $language
         return t('An administrator created an account for you at !site', $variables, $langcode);
       case 'register_admin_created_body':
         return t("!username,\n\nA site administrator at !site has created an account for you. You may now log in to !login_uri using the following username and password:\n\nusername: !username\npassword: !password\n\nYou may also log in by clicking on this link or copying and pasting it in your browser:\n\n!login_url\n\nThis is a one-time login, so it can be used only once.\n\nAfter logging in, you will be redirected to !edit_uri so you can change your password.\n\n\n--  !site team", $variables, $langcode);
-      case 'register_pending_approval_subject':
       case 'register_pending_approval_admin_subject':
+        return t('New user !username at !site awaiting admin approval', $variables, $langcode);
+      case 'register_pending_approval_subject':
         return t('Account details for !username at !site (pending admin approval)', $variables, $langcode);
       case 'register_pending_approval_body':
         return t("!username,\n\nThank you for registering at !site. Your application for an account is currently pending approval. Once it has been approved, you will receive another e-mail containing information about how to log in, set your password, and other details.\n\n\n--  !site team", $variables, $langcode);
       case 'register_pending_approval_admin_body':
-        return t("!username has applied for an account.\n\n!edit_uri", $variables, $langcode);
+        return t("A new user has applied for an account under the username !username.\n\nThis account is currently blocked by default and requires your approval to be unblocked.\n\nVisit !edit_uri to unblock this account.", $variables, $langcode);
       case 'password_reset_subject':
         return t('Replacement login information for !username at !site', $variables, $langcode);
       case 'password_reset_body':
@@ -2094,6 +2095,32 @@ function user_preferred_language($accoun
   }
 }
 
+
+
+/**
+ * Get the language object preferred by the admin, i.e. user with uid 1.
+ * Similar to user_preferred_language.  If the admin did not choose a
+ * preferred language, the $default value, or if it is not set, the site
+ * default language will be returned.
+ *
+ * @param $default
+ *   Optional default language object to return if the account
+ *   has no valid language.
+ */
+
+function admin_preferred_language($default = NULL) {
+  $language_list = language_list();
+  $admin_language = db_result(db_query('SELECT language FROM {users} WHERE uid = 1'));
+  if ($admin_language && isset($language_list[$admin_language])) {
+    return $language_list[$admin_language];
+  }
+  else {
+    return $default ? $default : language_default();
+  }
+}
+
+
+
 /**
  * Conditionally create and send a notification email when a certain
  * operation happens on the given user account.
@@ -2129,8 +2156,9 @@ function _user_mail_notify($op, $account
     $mail = drupal_mail('user', $op, $account->mail, $language, $params);
     if ($op == 'register_pending_approval') {
       // If a user registered requiring admin approval, notify the admin, too.
-      // We use the site default language for this.
-      drupal_mail('user', 'register_pending_approval_admin', variable_get('site_mail', ini_get('sendmail_from')), language_default(), $params);
+      // We use the admin's preferred language for this, if available.
+      $admin_preferred_language = admin_preferred_language();
+      drupal_mail('user', 'register_pending_approval_admin', variable_get('site_mail', ini_get('sendmail_from')), $admin_preferred_language, $params);
     }
   }
   return empty($mail) ? NULL : $mail['result'];
@@ -2259,6 +2287,7 @@ function user_block_ip_action() {
  */
 function user_register_submit($form, &$form_state) {
   global $base_url;
+  global $language;
   $admin = user_access('administer users');
 
   $mail = $form_state['values']['mail'];
@@ -2288,7 +2317,7 @@ function user_register_submit($form, &$f
   // user data.
   unset($form_state['values']['form_token'], $form_state['values']['submit'], $form_state['values']['op'], $form_state['values']['notify'], $form_state['values']['form_id'], $form_state['values']['affiliates'], $form_state['values']['destination']);
 
-  $merge_data = array('pass' => $pass, 'init' => $mail, 'roles' => $roles);
+  $merge_data = array('pass' => $pass, 'init' => $mail, 'roles' => $roles, 'language' => $language->language);
   if (!$admin) {
     // Set the user's status because it was not displayed in the form.
     $merge_data['status'] = variable_get('user_register', 1) == 1;
