/**
* 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)
+ // bug 21974, don't return $this->mPreferredVariant if $fromUser = false
+ if( $fromUser && $this->mPreferredVariant )
return $this->mPreferredVariant;
// figure out user lang without constructing wgLang to avoid infinite recursion
}
// see if default variant is globaly set
- if($wgDefaultLanguageVariant != false && in_array( $wgDefaultLanguageVariant, $this->mVariants )){
+ if($wgDefaultLanguageVariant != false && in_array( $wgDefaultLanguageVariant, $this->mVariants )){
$this->mPreferredVariant = $wgDefaultLanguageVariant;
return $this->mPreferredVariant;
}
// 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 ) ) {
$acceptLanguage = strtolower( $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
-
// explode by comma
$result = explode(',', $acceptLanguage);
}
}
}
-
return $this->mMainLanguageCode;
}