// variable in case this is called before the user's
// preference is loaded
if( array_key_exists( 'HTTP_ACCEPT_LANGUAGE', $_SERVER ) ) {
- $acceptLanguage = str_replace( '_', '-', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]));
- $languages = preg_split('/[,;]/', $acceptLanguage);
+ $acceptLanguage = strtolower( $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
+
+ // 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 );
*
* @param string $text text to be converted
* @param bool $isTitle whether this conversion is for the article title
- * @param string $variant the variant we convert to
* @return string converted text
* @public
*/
- function convert( $text, $isTitle = false, $variant = none ) {
+ function convert( $text, $isTitle = false ) {
$mw =& MagicWord::get( 'notitleconvert' );
if( $mw->matchAndRemove( $text ) )
if( $mw->matchStart( $text ) )
return $text;
- if( $variant && in_array( $variant, $this->mVariants ) )
- $plang = $variant;
- else
- $plang = $this->getPreferredVariant();
+ $plang = $this->getPreferredVariant();
// for title convertion
if ( $isTitle ) return $this->convertTitle( $text, $plang );
* @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;