From: Robert Stojnić Date: Mon, 14 Jul 2008 21:32:13 +0000 (+0000) Subject: * (bug 10837) Language variants overrides languages other than the variant main language. X-Git-Tag: 1.31.0-rc.0~46518 X-Git-Url: http://git.cyclocoop.org/%22.%24image2.%22?a=commitdiff_plain;h=098cfc3c3bf127ce936c53328a3c36c7d7ac5e77;p=lhc%2Fweb%2Fwiklou.git * (bug 10837) Language variants overrides languages other than the variant main language. Explicitely forbid conversion when interface language is different than the main content language. --- diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 028f602ae4..1e47f50628 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -432,6 +432,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN had stict standards issues with setFakeSlaveLag() and setFakeMaster(). * (bug 451) Improve the phrase mappings of the Chinese converter arrays. * (bug 12487) Rights log is not fully internationalized +* (bug 10837) Language variants no longer override other languages than base === API changes in 1.13 === diff --git a/includes/StubObject.php b/includes/StubObject.php index 07db880500..685cc9e8c4 100644 --- a/includes/StubObject.php +++ b/includes/StubObject.php @@ -147,7 +147,7 @@ class StubUserLang extends StubObject { // if variant is explicitely selected, use it instead the one from wgUser // see bug #7605 - if( $wgContLang->hasVariants() ){ + if( $wgContLang->hasVariants() && $code == $wgContLanguageCode ){ $variant = $wgContLang->getPreferredVariant(); if( $variant != $wgContLanguageCode ) $code = $variant; diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php index edaf4d68b1..c2c95235a1 100644 --- a/languages/LanguageConverter.php +++ b/languages/LanguageConverter.php @@ -124,6 +124,14 @@ class LanguageConverter { if($this->mPreferredVariant) return $this->mPreferredVariant; + // figure out user lang without constructing wgLang to avoid infinite recursion + $userLang = $wgRequest->getVal( 'uselang', $wgUser->getOption( 'language' ) ); + // see if interface language is same as content, if not, prevent conversion + if( $this->mMainLanguageCode != $userLang ){ + $this->mPreferredVariant = $this->mMainLanguageCode; // no conversion + return $this->mPreferredVariant; + } + // see if the preference is set in the request $req = $wgRequest->getText( 'variant' ); if( in_array( $req, $this->mVariants ) ) {