Follow up on r42658. Register messages and rebuild MessagesEn.php
[lhc/web/wiklou.git] / languages / LanguageConverter.php
index f6fb37e..dd69e82 100644 (file)
@@ -180,7 +180,8 @@ class LanguageConverter {
                                $header = str_replace( '_', '-', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]));
                                $zh = strstr($header, $pv.'-');
                                if($zh) {
-                                       $pv = substr($zh,0,5);
+                                       $ary = split("[,;]",$zh);
+                                       $pv = $ary[0];
                                }
                        }
                        // don't try to return bad variant
@@ -392,7 +393,7 @@ class LanguageConverter {
                $isredir = $wgRequest->getText( 'redirect', 'yes' );
                $action = $wgRequest->getText( 'action' );
                $linkconvert = $wgRequest->getText( 'linkconvert', 'yes' );
-               if ( $isredir == 'no' || $action == 'edit' || $linkconvert == 'no' ) {
+               if ( $isredir == 'no' || $action == 'edit' || $action == 'submit' || $linkconvert == 'no' ) {
                        return $text;
                } else {
                        $this->mTitleDisplay = $this->convert($text);
@@ -435,8 +436,9 @@ class LanguageConverter {
                if ($isTitle) return $this->convertTitle($text);
 
                $plang = $this->getPreferredVariant();
-               $tarray = explode($this->mMarkup['end'], $text);
+               $tarray = StringUtils::explode($this->mMarkup['end'], $text);
                $text = '';
+               $lastDelim = false;
                foreach($tarray as $txt) {
                        $marked = explode($this->mMarkup['begin'], $txt, 2);
 
@@ -452,8 +454,17 @@ class LanguageConverter {
 
                                $text .= $crule->getDisplay();
                                $this->applyManualConv($crule);
+                               $lastDelim = false;
+                       } else {
+                               // Reinsert the }- which wasn't part of anything
+                               $text .= $this->mMarkup['end'];
+                               $lastDelim = true;
                        }
                }
+               if ( $lastDelim ) {
+                       // Remove the last delimiter (wasn't real)
+                       $text = substr( $text, 0, -strlen( $this->mMarkup['end'] ) );
+               }
 
                return $text;
        }
@@ -469,7 +480,7 @@ class LanguageConverter {
         * @return null the input parameters may be modified upon return
         * @public
         */
-       function findVariantLink( &$link, &$nt ) {
+       function findVariantLink( &$link, &$nt, $forTemplate = false ) {
                global $wgDisableLangConversion, $wgDisableTitleConversion, $wgRequest, $wgUser;
                $isredir = $wgRequest->getText( 'redirect', 'yes' );
                $action = $wgRequest->getText( 'action' );
@@ -479,8 +490,8 @@ class LanguageConverter {
 
                $ns=NS_MAIN;
 
-               if ( $disableLinkConversion || $isredir == 'no' || $action == 'edit'
-                       || $linkconvert == 'no' || $wgUser->getOption('noconvertlink') == 1 ) {
+               if ( $disableLinkConversion || ( !$forTemplate && ( $isredir == 'no' || $action == 'edit'
+                       || $action == 'submit' || $linkconvert == 'no' || $wgUser->getOption('noconvertlink') == 1 ) ) ) {
                        return;
                }