=== modified file 'includes/bootstrap.inc'
--- includes/bootstrap.inc	2009-01-31 16:50:56 +0000
+++ includes/bootstrap.inc	2009-02-17 08:58:58 +0000
@@ -194,6 +194,12 @@
 define('LANGUAGE_NEGOTIATION_DOMAIN', 3);
 
 /**
+ * User configuration based negotiation with fallback to browser language
+ * or default language.
+ */
+define('LANGUAGE_NEGOTIATION_USER', 4);
+
+/**
  * Language written left to right. Possible value of $language->direction.
  */
 define('LANGUAGE_LTR', 0);

=== modified file 'includes/language.inc'
--- includes/language.inc	2009-02-01 16:45:53 +0000
+++ includes/language.inc	2009-02-17 09:05:58 +0000
@@ -50,16 +50,17 @@
         return language_default();
       }
       break;
-  }
-
-  // User language.
-  if ($user->uid && isset($languages[$user->language])) {
-    return $languages[$user->language];
-  }
-
-  // Browser accept-language parsing.
-  if ($language = language_from_browser()) {
-    return $language;
+    case LANGUAGE_NEGOTIATION_USER:
+      // User language.
+      if ($user->uid && isset($languages[$user->language])) {
+        return $languages[$user->language];
+      }
+    
+      // Browser accept-language parsing.
+      if ($language = language_from_browser()) {
+        return $language;
+      }      
+      break;
   }
 
   // Fall back on the default if everything else fails.

=== modified file 'includes/locale.inc'
--- includes/locale.inc	2009-02-13 00:45:18 +0000
+++ includes/locale.inc	2009-02-17 09:02:39 +0000
@@ -456,9 +456,10 @@
     '#type' => 'radios',
     '#options' => array(
       LANGUAGE_NEGOTIATION_NONE => t('None.'),
-      LANGUAGE_NEGOTIATION_PATH_DEFAULT => t('Path prefix only.'),
-      LANGUAGE_NEGOTIATION_PATH => t('Path prefix with language fallback.'),
-      LANGUAGE_NEGOTIATION_DOMAIN => t('Domain name only.')),
+      LANGUAGE_NEGOTIATION_PATH_DEFAULT => t('Path prefix only'),
+      LANGUAGE_NEGOTIATION_PATH => t('Path prefix with language fallback'),
+      LANGUAGE_NEGOTIATION_DOMAIN => t('Domain name only'),
+      LANGUAGE_NEGOTIATION_USER => t('User configured')),
     '#default_value' => variable_get('language_negotiation', LANGUAGE_NEGOTIATION_NONE),
     '#description' => t("Select the mechanism used to determine your site's presentation language. <strong>Modifying this setting may break all incoming URLs and should be used with caution in a production environment.</strong>")
   );

=== modified file 'modules/locale/locale.module'
--- modules/locale/locale.module	2009-02-05 00:32:46 +0000
+++ modules/locale/locale.module	2009-02-17 09:01:53 +0000
@@ -42,7 +42,8 @@
       $output .= '<ul><li>' . t('<strong>None.</strong> The default language is used for site presentation, though users may (optionally) select a preferred language on the <em>My Account</em> page. (User language preferences will be used for site e-mails, if available.)') . '</li>';
       $output .= '<li>' . t('<strong>Path prefix only.</strong> The presentation language is determined by examining the path for a language code or other custom string that matches the path prefix (if any) specified for each language. If a suitable prefix is not identified, the default language is used. <em>Example: "example.com/de/contact" sets presentation language to German based on the use of "de" within the path.</em>') . '</li>';
       $output .= '<li>' . t("<strong>Path prefix with language fallback.</strong> The presentation language is determined by examining the path for a language code or other custom string that matches the path prefix (if any) specified for each language. If a suitable prefix is not identified, the display language is determined by the user's language preferences from the <em>My Account</em> page, or by the browser's language settings. If a presentation language cannot be determined, the default language is used.") . '</li>';
-      $output .= '<li>' . t('<strong>Domain name only.</strong> The presentation language is determined by examining the domain used to access the site, and comparing it to the language domain (if any) specified for each language. If a match is not identified, the default language is used. <em>Example: "http://de.example.com/contact" sets presentation language to German based on the use of "http://de.example.com" in the domain.</em>') . '</li></ul>';
+      $output .= '<li>' . t('<strong>Domain name only.</strong> The presentation language is determined by examining the domain used to access the site, and comparing it to the language domain (if any) specified for each language. If a match is not identified, the default language is used. <em>Example: "http://de.example.com/contact" sets presentation language to German based on the use of "http://de.example.com" in the domain.</em>') . '</li>';
+      $output .= '<li>' . t('<strong>User configured.</strong> The presentation language is determined by the users preferred language on the <em>My Account</em> page.') . '</li></ul>';      
       $output .= '<p>' . t('The path prefix or domain name for a language may be set by editing the <a href="@languages">available languages</a>. In the absence of an appropriate match, the site is displayed in the <a href="@languages">default language</a>.', array('@languages' => url('admin/settings/language'))) . '</p>';
       return $output;
     case 'admin/build/translate':
