* Use variant only if interface language === content language
authorNiklas Laxström <nikerabbit@users.mediawiki.org>
Sun, 23 Dec 2007 18:00:54 +0000 (18:00 +0000)
committerNiklas Laxström <nikerabbit@users.mediawiki.org>
Sun, 23 Dec 2007 18:00:54 +0000 (18:00 +0000)
* (bug 10837) Interface "variant" overruling "language" preference

RELEASE-NOTES
includes/StubObject.php

index e3bf47a..b5b73fd 100644 (file)
@@ -268,6 +268,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
 * (bug 12371) Handle more namespace case variants in namespaceDupes.php
 * (bug 12380) Bot-friendly EditPage::spamPage
 * (bug 8066) Spaces can't be entered in special page aliases
+* (bug 10837) Interface "variant" overruling "language" preference
 
 == Parser changes in 1.12 ==
 
index a9a6bde..16c5302 100644 (file)
@@ -91,13 +91,16 @@ class StubUserLang extends StubObject {
                global $wgContLanguageCode, $wgRequest, $wgUser, $wgContLang;
                $code = $wgRequest->getVal('uselang', $wgUser->getOption('language') );
 
-               // if variant is explicitely selected, use it instead the one from wgUser
-               // see bug #7605
-               if($wgContLang->hasVariants()){
-                       $variant = $wgContLang->getPreferredVariant();
-                       if($variant != $wgContLanguageCode)
-                               $code = $variant;
-               }        
+               // IF the content language has variants...
+               if ( $wgContLang->hasVariants() ) {
+                       // AND IF the current interface language is the same as content language
+                       if ( $code === $wgContLanguageCode ) {
+                               // THEN use preferred variant as interface language.
+                               // Happens when anonymous users or logged in users with default language
+                               // setting selects a variant conversion.
+                               $code = $wgContLang->getPreferredVariant();
+                       }
+               }
 
                # Validate $code
                if( empty( $code ) || !preg_match( '/^[a-z-]+$/', $code ) ) {
@@ -105,7 +108,7 @@ class StubUserLang extends StubObject {
                        $code = $wgContLanguageCode;
                }
 
-               if( $code == $wgContLanguageCode ) {
+               if( $code === $wgContLanguageCode ) {
                        return $wgContLang;
                } else {
                        $obj = Language::factory( $code );