From: Liangent Date: Thu, 23 Aug 2012 19:21:01 +0000 (+0800) Subject: Check fallbacks correctly in getHeaderVariant(). X-Git-Tag: 1.31.0-rc.0~22594^2 X-Git-Url: http://git.cyclocoop.org/%22.%28%24lien.?a=commitdiff_plain;h=a6d845f5c2e969d17b40777c54aaf067f4bd7541;p=lhc%2Fweb%2Fwiklou.git Check fallbacks correctly in getHeaderVariant(). Currently when users with Accept-Language: en accesses a zh site, getVariantFallbacks() returns zh for it and zh is treated as their preferred variant as header variant, making the configuration setting $wgDefaultLanguageVariant ignored. Per comments above getVariantFallbacks(), it returns the main language code for an unknown variant (en in this case), so when it's returning the main code, just ignore this fallback (when the user is really sending Accept-Language: zh, it can be caught by validateVariant() above and fallbacks are not consulted). Change-Id: I187bdcd70b778883cc80ceeab005de3aca2e286a --- diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php index cbd5d9ae9d..8b7d6cbec0 100644 --- a/languages/LanguageConverter.php +++ b/languages/LanguageConverter.php @@ -295,7 +295,7 @@ class LanguageConverter { // We record these fallback variants, and process // them later. $fallbacks = $this->getVariantFallbacks( $language ); - if ( is_string( $fallbacks ) ) { + if ( is_string( $fallbacks ) && $fallbacks !== $this->mMainLanguageCode ) { $fallbackLanguages[] = $fallbacks; } elseif ( is_array( $fallbacks ) ) { $fallbackLanguages =