1. Namespace translation for Chinese Language.
authorPhilip Tzou <philip@users.mediawiki.org>
Fri, 6 Feb 2009 13:21:11 +0000 (13:21 +0000)
committerPhilip Tzou <philip@users.mediawiki.org>
Fri, 6 Feb 2009 13:21:11 +0000 (13:21 +0000)
2. New function to convert namespace text for display. (only applies on wiki with LanguageConverter class)

RELEASE-NOTES
languages/LanguageConverter.php
languages/classes/LanguageZh.php
languages/messages/MessagesZh.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php

index 773fd53..2486cff 100644 (file)
@@ -84,6 +84,8 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
   class "mw-searchresult"
 * (bug 15283) Interwiki imports can now fetch included templates
 * Treat svn:// URLs as external links by default
+* New function to convert namespace text for display (only applies on wiki with
+  LanguageConverter class)
 
 === Bug fixes in 1.15 ===
 * (bug 16968) Special:Upload no longer throws useless warnings.
index 701381a..957acec 100644 (file)
@@ -23,6 +23,7 @@ class LanguageConverter {
        var $mTables;
        var $mManualAddTables;
        var $mManualRemoveTables;
+       var $mNamespaceTables;
        var $mTitleDisplay='';
        var $mDoTitleConvert=true, $mDoContentConvert=true;
        var $mManualLevel; // 'bidirectional' 'unidirectional' 'disable' for each variants
@@ -89,6 +90,7 @@ class LanguageConverter {
                                                                :'bidirectional';
                        $this->mManualAddTables[$v] = array();
                        $this->mManualRemoveTables[$v] = array();
+                       $this->mNamespaceTables[$v] = array();
                }
        }
 
@@ -425,12 +427,28 @@ class LanguageConverter {
                        $parser->mOutput->setTitleText( $this->mTitleDisplay );
                return $text;
        }
+       
+       /**
+        * convert namespace
+        * @param string $title the title included namespace
+        * @return array of string
+        * @private
+        */
+       function convertNamespace( $title, $variant ) {
+               $splittitle = explode( ':', $title );
+               if (count($splittitle) < 2)
+                       return $title;
+               if ( isset( $this->mNamespaceTables[$variant][$splittitle[0]] ) )
+                       $splittitle[0] = $this->mNamespaceTables[$variant][$splittitle[0]];
+               $ret = implode(':', $splittitle );
+               return $ret;
+       }
 
        /**
-        *  convert title
+        * convert title
         * @private
         */
-       function convertTitle( $text ){
+       function convertTitle( $text, $variant ){
                global $wgDisableTitleConversion, $wgUser;
 
                // check for global param and __NOTC__ tag
@@ -452,7 +470,8 @@ class LanguageConverter {
                if ( $isredir == 'no' || $action == 'edit' || $action == 'submit' || $linkconvert == 'no' ) {
                        return $text;
                } else {
-                       $this->mTitleDisplay = $this->convert($text);
+                       $text = $this->convertNamespace( $text, $variant );
+                       $this->mTitleDisplay = $this->convert( $text );
                        return $this->mTitleDisplay;
                }
        }
@@ -488,10 +507,11 @@ class LanguageConverter {
                if( $mw->matchStart( $text ) )
                        return $text;
 
+               $plang = $this->getPreferredVariant();
+
                // for title convertion
-               if ( $isTitle ) return $this->convertTitle( $text );
+               if ( $isTitle ) return $this->convertTitle( $text, $plang );
 
-               $plang = $this->getPreferredVariant();
                $tarray = StringUtils::explode( $this->mMarkup['end'], $text );
                $text = '';
 
index 0936269..645c682 100644 (file)
@@ -34,6 +34,53 @@ 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() {
index 137baff..eaece74 100644 (file)
@@ -4,12 +4,34 @@
  * @ingroup Language
  * @file
  *
+ * @author Philip
  */
 
 # Stub message file for converter code "zh"
 
 $fallback = 'zh-hans';
 
+$namespaceNames = array(
+       NS_MEDIA            => 'Media',
+       NS_SPECIAL          => 'Special',
+       NS_MAIN             => '',
+       NS_TALK             => 'Talk',
+       NS_USER             => 'User',
+       NS_USER_TALK        => 'User_talk',
+       # NS_PROJECT set by $wgMetaNamespace
+       NS_PROJECT_TALK     => '$1_talk',
+       NS_FILE             => 'File',
+       NS_FILE_TALK        => 'File_talk',
+       NS_MEDIAWIKI        => 'MediaWiki',
+       NS_MEDIAWIKI_TALK   => 'MediaWiki_talk',
+       NS_TEMPLATE         => 'Template',
+       NS_TEMPLATE_TALK    => 'Template_talk',
+       NS_HELP             => 'Help',
+       NS_HELP_TALK        => 'Help_talk',
+       NS_CATEGORY         => 'Category',
+       NS_CATEGORY_TALK    => 'Category_talk'
+);
+
 $namespaceAliases = array(
        '媒体'        => NS_MEDIA,
        '媒體'        => NS_MEDIA,
@@ -34,22 +56,39 @@ $namespaceAliases = array(
        '文件' => NS_FILE,
        '图像对话' => NS_FILE_TALK,
        '圖像對話' => NS_FILE_TALK,
+       '图像讨论' => NS_FILE_TALK,
+       '圖像討論' => NS_FILE_TALK,
        '档案对话' => NS_FILE_TALK,
        '檔案對話' => NS_FILE_TALK,
-       '文件对話' => NS_FILE_TALK,
+       '档案讨论' => NS_FILE_TALK,
+       '檔案討論' => NS_FILE_TALK,
+       '文件对话' => NS_FILE_TALK,
        '文件對話' => NS_FILE_TALK,
+       '文件讨论' => NS_FILE_TALK,
+       '文件討論' => NS_FILE_TALK,
        '模板'        => NS_TEMPLATE,
-       '模板讨论'=> NS_TEMPLATE_TALK,
-       "樣板" => NS_TEMPLATE,
-       "樣板討論" => NS_TEMPLATE_TALK,
+       '样板'  => NS_TEMPLATE,
+       '樣板'  => NS_TEMPLATE,
+       '模板对话' => NS_TEMPLATE_TALK,
+       '模板對話' => NS_TEMPLATE_TALK,
+       '模板讨论' => NS_TEMPLATE_TALK,
+       '模板討論' => NS_TEMPLATE_TALK,
+       '样板对话' => NS_TEMPLATE_TALK,
+       '樣板對話' => NS_TEMPLATE_TALK,
+       '样板讨论' => NS_TEMPLATE_TALK,
+       '樣板討論' => NS_TEMPLATE_TALK,
        '帮助'        => NS_HELP,
-       '帮助讨论'=> NS_HELP_TALK,
-       "幫助" => NS_HELP,
-       "幫助討論" => NS_HELP_TALK,
+       '幫助'  => NS_HELP,
+       '帮助对话' => NS_HELP_TALK,
+       '幫助對話' => NS_HELP_TALK,
+       '帮助讨论' => NS_HELP_TALK,
+       '幫助討論' => NS_HELP_TALK,
        '分类'        => NS_CATEGORY,
+       '分類'  => NS_CATEGORY,
+       '分类对话'=> NS_CATEGORY_TALK,
+       '分類對話' => NS_CATEGORY_TALK,
        '分类讨论'=> NS_CATEGORY_TALK,
-       "分類" => NS_CATEGORY,
-       "分類討論" => NS_CATEGORY_TALK,
+       '分類討論' => NS_CATEGORY_TALK,
 );
 
 $messages = array(
index bbe642f..05a7f9e 100644 (file)
  * @author O
  * @author Shinjiman
  * @author Wmr89502270
+ * @author Philip
  */
 
 $namespaceNames = array(
-       NS_MEDIA            => 'Media',
-       NS_SPECIAL          => 'Special',
+       NS_MEDIA            => '媒体',
+       NS_SPECIAL          => '特殊',
        NS_MAIN             => '',
-       NS_TALK             => 'Talk',
-       NS_USER             => 'User',
-       NS_USER_TALK        => 'User_talk',
+       NS_TALK             => '讨论',
+       NS_USER             => '用户',
+       NS_USER_TALK        => '用户讨论',
        # NS_PROJECT set by $wgMetaNamespace
-       NS_PROJECT_TALK     => '$1_talk',
-       NS_FILE             => 'File',
-       NS_FILE_TALK        => 'File_talk',
+       NS_PROJECT_TALK     => '$1讨论',
+       NS_FILE             => '文件',
+       NS_FILE_TALK        => '文件讨论',
        NS_MEDIAWIKI        => 'MediaWiki',
-       NS_MEDIAWIKI_TALK   => 'MediaWiki_talk',
-       NS_TEMPLATE         => 'Template',
-       NS_TEMPLATE_TALK    => 'Template_talk',
-       NS_HELP             => 'Help',
-       NS_HELP_TALK        => 'Help_talk',
-       NS_CATEGORY         => 'Category',
-       NS_CATEGORY_TALK    => 'Category_talk'
+       NS_MEDIAWIKI_TALK   => 'MediaWiki讨论',
+       NS_TEMPLATE         => '模板',
+       NS_TEMPLATE_TALK    => '模板讨论',
+       NS_HELP             => '帮助',
+       NS_HELP_TALK        => '帮助讨论',
+       NS_CATEGORY         => '分类',
+       NS_CATEGORY_TALK    => '分类讨论'
 );
 
 $namespaceAliases = array(
@@ -49,13 +50,19 @@ $namespaceAliases = array(
        'Image' => NS_FILE,
        'Image_talk' => NS_FILE_TALK,
        '图像对话' => NS_FILE_TALK,
+       '图像讨论' => NS_FILE_TALK,
        '档案对话' => NS_FILE_TALK,
+       '档案讨论' => NS_FILE_TALK,
        '文件对话' => NS_FILE_TALK,
+       '文件讨论' => NS_FILE_TALK,
        '模板'        => NS_TEMPLATE,
+       '模板对话'=> NS_TEMPLATE_TALK,
        '模板讨论'=> NS_TEMPLATE_TALK,
        '帮助'        => NS_HELP,
+       '帮助对话'=> NS_HELP_TALK,
        '帮助讨论'=> NS_HELP_TALK,
        '分类'        => NS_CATEGORY,
+       '分类对话'=> NS_CATEGORY_TALK,
        '分类讨论'=> NS_CATEGORY_TALK,
 );
 
index f654696..a68d8d3 100644 (file)
@@ -9,37 +9,40 @@
  * @author Shinjiman
  * @author Skjackey tse
  * @author Wrightbus
+ * @author Philip
  */
 
 $fallback = 'zh-hans';
 
 $namespaceNames = array(
-       NS_MEDIA            => 'Media',
-       NS_SPECIAL          => 'Special',
+       NS_MEDIA            => '媒體',
+       NS_SPECIAL          => '特殊',
        NS_MAIN             => '',
-       NS_TALK             => 'Talk',
-       NS_USER             => 'User',
-       NS_USER_TALK        => 'User_talk',
+       NS_TALK             => '討論',
+       NS_USER             => '用戶',
+       NS_USER_TALK        => '用戶討論',
        # NS_PROJECT set by $wgMetaNamespace
-       NS_PROJECT_TALK     => '$1_talk',
-       NS_FILE             => 'File',
-       NS_FILE_TALK        => 'File_talk',
+       NS_PROJECT_TALK     => '$1討論',
+       NS_FILE             => '檔案',
+       NS_FILE_TALK        => '檔案討論',
        NS_MEDIAWIKI        => 'MediaWiki',
-       NS_MEDIAWIKI_TALK   => 'MediaWiki_talk',
-       NS_TEMPLATE         => 'Template',
-       NS_TEMPLATE_TALK    => 'Template_talk',
-       NS_HELP             => 'Help',
-       NS_HELP_TALK        => 'Help_talk',
-       NS_CATEGORY         => 'Category',
-       NS_CATEGORY_TALK    => 'Category_talk'
+       NS_MEDIAWIKI_TALK   => 'MediaWiki討論',
+       NS_TEMPLATE         => '模板',
+       NS_TEMPLATE_TALK    => '模板討論',
+       NS_HELP             => '幫助',
+       NS_HELP_TALK        => '幫助討論',
+       NS_CATEGORY         => '分類',
+       NS_CATEGORY_TALK    => '分類討論'
 );
 
 $namespaceAliases = array(
        "媒體" => NS_MEDIA,
        "特殊" => NS_SPECIAL,
        "對話" => NS_TALK,
+       "討論" => NS_USER_TALK,
        "用戶" => NS_USER,
        "用戶對話" => NS_USER_TALK,
+       "用戶討論" => NS_USER_TALK,
        # This has never worked so it's unlikely to annoy anyone if I disable it -- TS
        #"{{SITENAME}}_對話" => NS_PROJECT_TALK
        "圖像" => NS_FILE,
@@ -48,13 +51,22 @@ $namespaceAliases = array(
        'Image' => NS_FILE,
        'Image_talk' => NS_FILE_TALK,
        "圖像對話" => NS_FILE_TALK,
+       "圖像討論" => NS_FILE_TALK,
        "檔案對話" => NS_FILE_TALK,
+       "檔案討論" => NS_FILE_TALK,
        "文件對話" => NS_FILE_TALK,
+       "文件討論" => NS_FILE_TALK,
        "樣板" => NS_TEMPLATE,
+       "模板" => NS_TEMPLATE,
+       "樣板對話" => NS_TEMPLATE_TALK,
        "樣板討論" => NS_TEMPLATE_TALK,
+       "模板對話" => NS_TEMPLATE_TALK,
+       "模板討論" => NS_TEMPLATE_TALK,
        "幫助" => NS_HELP,
+       "幫助對話" => NS_HELP_TALK,
        "幫助討論" => NS_HELP_TALK,
        "分類" => NS_CATEGORY,
+       "分類對話" => NS_CATEGORY_TALK,
        "分類討論" => NS_CATEGORY_TALK,
 );