Localisation updates for core and extension messages from translatewiki.net (2009...
[lhc/web/wiklou.git] / languages / LanguageConverter.php
index a95ec55..3f23f3b 100644 (file)
@@ -126,11 +126,12 @@ class LanguageConverter {
        /**
         * get preferred language variants.
         * @param boolean $fromUser Get it from $wgUser's preferences
+        * @param boolean $fromHeader Get it from Accept-Language
         * @return string the preferred language code
         * @public
         */
-       function getPreferredVariant( $fromUser = true ) {
-               global $wgUser, $wgRequest, $wgVariantArticlePath, $wgDefaultLanguageVariant;
+       function getPreferredVariant( $fromUser = true, $fromHeader = false ) {
+               global $wgUser, $wgRequest, $wgVariantArticlePath, $wgDefaultLanguageVariant, $wgOut;
 
                if($this->mPreferredVariant)
                        return $this->mPreferredVariant;
@@ -184,8 +185,20 @@ class LanguageConverter {
                        // http header, but we don't set the mPreferredVariant
                        // variable in case this is called before the user's
                        // preference is loaded
-                       if( array_key_exists( 'HTTP_ACCEPT_LANGUAGE', $_SERVER ) ) {
-                               
+                       if( $fromHeader && 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
+                               // ONLY add Accept-Language when a variant has been found out
+                               // patched by Liangent
+                               $aloption = array();
+                               foreach ( $this->mVariants as $variant ) {
+                                       if( $variant === $this->mMainLanguageCode )
+                                               continue;
+                                       $aloption[] = "string-contains=$variant";
+                               }
+                               $wgOut->addVaryHeader( 'Accept-Language', $aloption );
+
                                $acceptLanguage = strtolower( $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
                                // explode by comma
                                $result = explode(',', $acceptLanguage);
@@ -204,13 +217,11 @@ class LanguageConverter {
                                }
 
                                $fallback_languages = array();
-                               $ret_language = null;
                                foreach( $languages as $language ) {
                                        // strip whitespace
                                        $language = trim( $language );
                                        if( in_array( $language, $this->mVariants ) ) {
-                                               $ret_language = $language;
-                                               break;
+                                               return $language;
                                        }
                                        else {
                                                // To see if there are fallbacks of current language.
@@ -223,36 +234,14 @@ class LanguageConverter {
                                                        $fallback_languages = array_merge( $fallback_languages, $fallbacks );
                                        }
                                }
-                               
+
                                // process fallback languages now
-                               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 ) {
-                                               $aloption = array();
-                                               foreach( $this->mVariants as $variant ) {
-                                                       if($variant === $this->mMainLanguageCode)
-                                                               continue;
-                                                       $aloption[] = 'string-contains=' . $variant;
-                                               }
-                                               $wgOut->addXVOHeader( 'Accept-Language', $aloption );
+                               $fallback_languages = array_unique( $fallback_languages );
+                               foreach( $fallback_languages as $language ) {
+                                       if( in_array( $language, $this->mVariants ) ) {
+                                               return $language;
                                        }
                                }
-                               return $ret_language;
                        }
                }