// preference is loaded
if( array_key_exists( 'HTTP_ACCEPT_LANGUAGE', $_SERVER ) ) {
$acceptLanguage = str_replace( '_', '-', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]));
- $languages = preg_split('/[,;]/', $acceptLanguage);
+
+ // explode by comma
+ $result = explode(',', $acceptLanguage);
+
+ $languages = array();
+
+ foreach( $result as $elem ) {
+ // if $elem likes 'zh-cn;q=0.9'
+ if(($posi = strpos( $elem, ';' )) !== false ) {
+ // get the real language code likes 'zh-cn'
+ $languages[] = substr( $elem, 0, $posi );
+ }
+ else {
+ $languages[] = $elem;
+ }
+ }
+
foreach( $languages as $language ) {
+ // strip whitespace
+ $language = trim( $language );
if( in_array( $language, $this->mVariants ) ) {
return $language;
break;
* @public
*/
function parserConvert( $text, &$parser ) {
- global $wgDisableLangConversion;
+ global $wgUser, $wgEnableVariants;
+
+ /* disable entire conversion engine if the user had been disabled it */
+ $variantConv = $wgUser->getOption( 'variantconversion' );
+ if ( ( $wgEnableVariants == true ) && ( $variantConv == 0 ) ) {
+ $wgEnableVariants = false;
+ }
+
/* don't do anything if this is the conversion table */
if ( $parser->getTitle()->getNamespace() == NS_MEDIAWIKI &&
strpos($parser->mTitle->getText(), 'onversiontable') !== false )
return $text;
}
- if ( $wgDisableLangConversion )
+ if ( !$wgEnableVariants )
return $text;
$text = $this->convert( $text );
* @public
*/
function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
- global $wgDisableLangConversion, $wgDisableTitleConversion, $wgRequest, $wgUser;
+ global $wgEnableVariants, $wgDisableTitleConversion, $wgRequest, $wgUser;
$isredir = $wgRequest->getText( 'redirect', 'yes' );
$action = $wgRequest->getText( 'action' );
$linkconvert = $wgRequest->getText( 'linkconvert', 'yes' );
- $disableLinkConversion = $wgDisableLangConversion || $wgDisableTitleConversion;
+ $disableLinkConversion = !$wgEnableVariants || $wgDisableTitleConversion;
$linkBatch = new LinkBatch();
$ns=NS_MAIN;