2. Improve the function of namespace conversion. Allow admins to custom namespace conversion in MediaWiki's messages([[MediaWiki:conversion-nsX]]).
var $mVariants, $mVariantFallbacks, $mVariantNames;
var $mTablesLoaded = false;
var $mTables;
- var $mNamespaceTables;
// 'bidirectional' 'unidirectional' 'disable' for each variant
var $mManualLevel;
var $mCacheKey;
} else {
$this->mManualLevel[$v] = 'bidirectional';
}
- $this->mNamespaceTables[$v] = array();
$this->mFlags[$v] = $v;
}
}
*/
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 == '<' . htmlspecialchars( $nsConvKey ) . '>' ) {
+ // 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 .= ':';
}
'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() {
'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() {