http://www.mediawiki.org/wiki/Special:Code/MediaWiki/59527

Revision: 59527
Author:   philip
Date:     2009-11-28 20:00:00 +0000 (Sat, 28 Nov 2009)

Log Message:
-----------
follow-up r59522. ONLY add Accept-Language when a valid variant has been found 
out.

Modified Paths:
--------------
    trunk/phase3/languages/LanguageConverter.php

Modified: trunk/phase3/languages/LanguageConverter.php
===================================================================
--- trunk/phase3/languages/LanguageConverter.php        2009-11-28 19:57:42 UTC 
(rev 59526)
+++ trunk/phase3/languages/LanguageConverter.php        2009-11-28 20:00:00 UTC 
(rev 59527)
@@ -185,15 +185,8 @@
                        // variable in case this is called before the user's
                        // preference is loaded
                        if( array_key_exists( 'HTTP_ACCEPT_LANGUAGE', $_SERVER 
) ) {
-                               // bug 21672: Add Accept-Language to Vary and 
XVO headers
-                               // to help Squid to determine user's perferred 
local language
-                               // thanks to Liangent's help
-                               global $wgOut, $wgUseXVO;
-                               $wgOut->addVaryHeader( 'Accept-Language' );
-                               if( $wgUseXVO )
-                                       $wgOut->addXVOHeader( 'Accept-Language' 
);
+                               
                                $acceptLanguage = strtolower( 
$_SERVER['HTTP_ACCEPT_LANGUAGE'] );
-                               
                                // explode by comma
                                $result = explode(',', $acceptLanguage);
                                
@@ -211,11 +204,13 @@
                                }
 
                                $fallback_languages = array();
+                               $ret_language = null;
                                foreach( $languages as $language ) {
                                        // strip whitespace
                                        $language = trim( $language );
                                        if( in_array( $language, 
$this->mVariants ) ) {
-                                               return $language;
+                                               $ret_language = $language;
+                                               break;
                                        }
                                        else {
                                                // To see if there are 
fallbacks of current language.
@@ -228,14 +223,30 @@
                                                        $fallback_languages = 
array_merge( $fallback_languages, $fallbacks );
                                        }
                                }
-
+                               
                                // process fallback languages now
-                               $fallback_languages = array_unique( 
$fallback_languages );
-                               foreach( $fallback_languages as $language ) {
-                                       if( in_array( $language, 
$this->mVariants ) ) {
-                                               return $language;
+                               if( $ret_language === null ) {
+                                       $fallback_languages = array_unique( 
$fallback_languages );
+                                       foreach( $fallback_languages as 
$language ) {
+                                               if( in_array( $language, 
$this->mVariants ) ) {
+                                                       $ret_language = 
$language;
+                                                       break;
+                                               }
                                        }
                                }
+                               
+                               // bug 21672: Add Accept-Language to Vary and 
XVO headers
+                               // to help Squid to determine user's perferred 
local language
+                               // ONLY add Accept-Language when a variant has 
been found out
+                               // thanks to Liangent's help
+                               if( $ret_language !== $this->mMainLanguageCode 
) {
+                                       global $wgOut, $wgUseXVO;
+                                       $wgOut->addVaryHeader( 
'Accept-Language' );
+                                       if( $wgUseXVO )
+                                               $wgOut->addXVOHeader( 
'Accept-Language' );
+                                       
+                               }
+                               return $ret_language;
                        }
                }
 



_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to