Index: includes/common.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/common.inc,v retrieving revision 1.756.2.45 diff -u -p -r1.756.2.45 common.inc --- includes/common.inc 16 Feb 2009 13:18:03 -0000 1.756.2.45 +++ includes/common.inc 19 Feb 2009 14:54:05 -0000 @@ -1568,7 +1568,8 @@ function l($text, $path, $options = arra * react to the closing of the page by calling hook_exit(). */ function drupal_page_footer() { - if (variable_get('cache', CACHE_DISABLED) != CACHE_DISABLED) { + global $no_cache; + if (variable_get('cache', CACHE_DISABLED) != CACHE_DISABLED && $no_cache != TRUE) { page_set_cache(); } Index: includes/language.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/language.inc,v retrieving revision 1.14.2.1 diff -u -p -r1.14.2.1 language.inc --- includes/language.inc 2 Jan 2009 23:37:48 -0000 1.14.2.1 +++ includes/language.inc 19 Feb 2009 14:54:06 -0000 @@ -10,7 +10,7 @@ * Choose a language for the page, based on language negotiation settings. */ function language_initialize() { - global $user; + global $user, $no_cache; // Configured presentation language mode. $mode = variable_get('language_negotiation', LANGUAGE_NEGOTIATION_NONE); @@ -59,6 +59,12 @@ function language_initialize() { // Browser accept-language parsing. if ($language = language_from_browser()) { + + // If the language is set from browser preferences, set $no_cache to TRUE + // to avoid caching the page in this language for subsequent requests. + if ($language != language_default()) { + $no_cache = TRUE; + } return $language; }