1. Fix the underline bug in the title(namespace) conversion, which displayed title...
authorPhilip Tzou <philip@users.mediawiki.org>
Tue, 6 Jul 2010 05:00:15 +0000 (05:00 +0000)
committerPhilip Tzou <philip@users.mediawiki.org>
Tue, 6 Jul 2010 05:00:15 +0000 (05:00 +0000)
2. Improve the function of namespace conversion. Allow admins to custom namespace conversion in MediaWiki's messages([[MediaWiki:conversion-nsX]]).

languages/LanguageConverter.php
languages/classes/LanguageGan.php
languages/classes/LanguageZh.php

index f0a4f46..efde3a3 100644 (file)
@@ -20,7 +20,6 @@ class LanguageConverter {
        var $mVariants, $mVariantFallbacks, $mVariantNames;
        var $mTablesLoaded = false;
        var $mTables;
-       var $mNamespaceTables;
        // 'bidirectional' 'unidirectional' 'disable' for each variant
        var $mManualLevel;
        var $mCacheKey;
@@ -87,7 +86,6 @@ class LanguageConverter {
                        } else {
                                $this->mManualLevel[$v] = 'bidirectional';
                        }
-                       $this->mNamespaceTables[$v] = array();
                        $this->mFlags[$v] = $v;
                }
        }
@@ -548,12 +546,18 @@ class LanguageConverter {
         */
        public function convertTitle( $title ) {
                $variant = $this->getPreferredVariant();
-               if ( $title->getNamespace() === NS_MAIN ) {
+               $index = $title->getNamespace();
+               if ( $index === NS_MAIN ) {
                        $text = '';
                } else {
-                       $text = $title->getNsText();
-                       if ( isset( $this->mNamespaceTables[$variant][$text] ) ) {
-                               $text = $this->mNamespaceTables[$variant][$text];
+                       // first let's check if a message has given us a converted name
+                       $nsConvKey = 'conversion-ns' . $index;
+                       $text = wfMsgForContentNoTrans( $nsConvKey );
+                       if ( $text == '&lt;' . htmlspecialchars( $nsConvKey ) . '&gt;' ) {
+                               // the message does not exist, try retrieve it from the current
+                               // variant's namespace names.
+                               $langObj = $this->mLangObj->factory( $variant );
+                               $text = $langObj->getFormattedNsText( $index );
                        }
                        $text .= ':';
                }
index 3c8b5fd..54202e4 100644 (file)
@@ -26,47 +26,6 @@ class GanConverter extends LanguageConverter {
                        'gan-hant' => '繁體',
                );
                $this->mVariantNames = array_merge($this->mVariantNames,$names);
-               $this->loadNamespaceTables();
-       }
-       
-       function loadNamespaceTables() {
-               global $wgMetaNamespace;
-               $nsproject     = $wgMetaNamespace;
-               $projecttable  = array(
-                       'Wikipedia'       => '维基百科',
-                       'Wikisource'      => '维基文库',
-                       'Wikinews'        => '维基新闻',
-                       'Wiktionary'      => '维基词典',
-                       'Wikibooks'       => '维基教科书',
-                       'Wikiquote'       => '维基语录',
-               );
-               $this->mNamespaceTables['gan-hans'] = array(
-                       'Media'          => '媒体',
-                       'Special'        => '特殊',
-                       'Talk'           => '談詑',
-                       'User'           => '用户',
-                       'User talk'      => '用户談詑',
-                       $nsproject
-                                       => isset($projecttable[$nsproject]) ? 
-                                               $projecttable[$nsproject] : $nsproject,
-                       $nsproject . ' talk'
-                                       => isset($projecttable[$nsproject]) ?
-                                               $projecttable[$nsproject] . '談詑' : $nsproject . '談詑',
-                       'File'           => '文件',
-                       'File talk'      => '文件談詑',
-                       'MediaWiki'      => 'MediaWiki',
-                       'MediaWiki talk' => 'MediaWiki談詑',
-                       'Template'       => '模板',
-                       'Template talk'  => '模板談詑',
-                       'Help'           => '帮助',
-                       'Help talk'      => '帮助談詑',
-                       'Category'       => '分类',
-                       'Category talk'  => '分类談詑',
-               );
-               $this->mNamespaceTables['gan-hant'] = array_merge($this->mNamespaceTables['gan-hans']);
-               $this->mNamespaceTables['gan-hant']['File'] = '檔案';
-               $this->mNamespaceTables['gan-hant']['File talk'] = '檔案談詑';
-               $this->mNamespaceTables['gan'] = array_merge($this->mNamespaceTables['gan-hans']);
        }
 
        function loadDefaultTables() {
index 4a73c66..0b88dbb 100644 (file)
@@ -32,53 +32,6 @@ class ZhConverter extends LanguageConverter {
                        'zh-my'   => '大马',
                );
                $this->mVariantNames = array_merge($this->mVariantNames,$names);
-               $this->loadNamespaceTables();
-       }
-       
-       function loadNamespaceTables() {
-               global $wgMetaNamespace;
-               $nsproject     = $wgMetaNamespace;
-               $projecttable  = array(
-                       'Wikipedia'       => '维基百科',
-                       'Wikisource'      => '维基文库',
-                       'Wikinews'        => '维基新闻',
-                       'Wiktionary'      => '维基词典',
-                       'Wikibooks'       => '维基教科书',
-                       'Wikiquote'       => '维基语录',
-               );
-               $this->mNamespaceTables['zh-hans'] = array(
-                       'Media'          => '媒体',
-                       'Special'        => '特殊',
-                       'Talk'           => '讨论',
-                       'User'           => '用户',
-                       'User talk'      => '用户讨论',
-                       $nsproject
-                                       => isset($projecttable[$nsproject]) ? 
-                                               $projecttable[$nsproject] : $nsproject,
-                       $nsproject . ' talk'
-                                       => isset($projecttable[$nsproject]) ?
-                                               $projecttable[$nsproject] . '讨论' : $nsproject . '讨论',
-                       'File'           => '文件',
-                       'File talk'      => '文件讨论',
-                       'MediaWiki'      => 'MediaWiki',
-                       'MediaWiki talk' => 'MediaWiki讨论',
-                       'Template'       => '模板',
-                       'Template talk'  => '模板讨论',
-                       'Help'           => '帮助',
-                       'Help talk'      => '帮助讨论',
-                       'Category'       => '分类',
-                       'Category talk'  => '分类讨论',
-               );
-               $this->mNamespaceTables['zh-hant'] = array_merge($this->mNamespaceTables['zh-hans']);
-               $this->mNamespaceTables['zh-hant']['File'] = '檔案';
-               $this->mNamespaceTables['zh-hant']['File talk'] = '檔案討論';
-               $this->mNamespaceTables['zh'] = array_merge($this->mNamespaceTables['zh-hans']);
-               $this->mNamespaceTables['zh-cn'] = array_merge($this->mNamespaceTables['zh-hans']);
-               $this->mNamespaceTables['zh-hk'] = array_merge($this->mNamespaceTables['zh-hant']);
-               $this->mNamespaceTables['zh-mo'] = array_merge($this->mNamespaceTables['zh-hant']);
-               $this->mNamespaceTables['zh-my'] = array_merge($this->mNamespaceTables['zh-hans']);
-               $this->mNamespaceTables['zh-sg'] = array_merge($this->mNamespaceTables['zh-hans']);
-               $this->mNamespaceTables['zh-tw'] = array_merge($this->mNamespaceTables['zh-hant']);
        }
 
        function loadDefaultTables() {