From 72e90545454c0e014318fa3c81658e035aac58c1 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 10 Jun 2009 13:00:47 +0200 Subject: applying patch to version 1.15.0 --- languages/classes/LanguageGan.php | 168 ++++++++++++++++++++++++++++++++++++++ languages/classes/LanguageGv.php | 27 ++++++ languages/classes/LanguageKk.php | 4 +- languages/classes/LanguageKu.php | 4 +- languages/classes/LanguageSr.php | 4 +- languages/classes/LanguageZh.php | 47 +++++++++++ 6 files changed, 248 insertions(+), 6 deletions(-) create mode 100644 languages/classes/LanguageGan.php create mode 100644 languages/classes/LanguageGv.php (limited to 'languages/classes') diff --git a/languages/classes/LanguageGan.php b/languages/classes/LanguageGan.php new file mode 100644 index 00000000..f4541059 --- /dev/null +++ b/languages/classes/LanguageGan.php @@ -0,0 +1,168 @@ +mDescCodeSep = ':'; + $this->mDescVarSep = ';'; + parent::__construct($langobj, $maincode, + $variants, + $variantfallbacks, + $markup, + $flags, + $manualLevel); + $names = array( + 'gan' => '原文', + 'gan-hans' => '简体', + '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() { + require( dirname(__FILE__)."/../../includes/ZhConversion.php" ); + $this->mTables = array( + 'gan-hans' => new ReplacementArray( $zh2Hans ), + 'gan-hant' => new ReplacementArray( $zh2Hant ), + 'gan' => new ReplacementArray + ); + } + + /* there shouldn't be any latin text in Chinese conversion, so no need + to mark anything. + $noParse is there for compatibility with LanguageConvert::markNoConversion + */ + function markNoConversion($text, $noParse = false) { + return $text; + } + + function convertCategoryKey( $key ) { + return $this->autoConvert( $key, 'gan' ); + } +} + +/** + * class that handles both Traditional and Simplified Chinese + * right now it only distinguish gan_hans, gan_hant. + * + * @ingroup Language + */ +class LanguageGan extends LanguageZh { + + function __construct() { + global $wgHooks; + parent::__construct(); + + $variants = array('gan','gan-hans','gan-hant'); + $variantfallbacks = array( + 'gan' => array('gan-hans','gan-hant'), + 'gan-hans' => array('gan'), + 'gan-hant' => array('gan'), + ); + $ml=array( + 'gan' => 'disable', + ); + + $this->mConverter = new GanConverter( $this, 'gan', + $variants, $variantfallbacks, + array(),array(), + $ml); + + $wgHooks['ArticleSaveComplete'][] = $this->mConverter; + } + + # this should give much better diff info + function segmentForDiff( $text ) { + return preg_replace( + "/([\\xc0-\\xff][\\x80-\\xbf]*)/e", + "' ' .\"$1\"", $text); + } + + function unsegmentForDiff( $text ) { + return preg_replace( + "/ ([\\xc0-\\xff][\\x80-\\xbf]*)/e", + "\"$1\"", $text); + } + + // word segmentation + function stripForSearch( $string ) { + wfProfileIn( __METHOD__ ); + + // eventually this should be a word segmentation + // for now just treat each character as a word + // @fixme only do this for Han characters... + $t = preg_replace( + "/([\\xc0-\\xff][\\x80-\\xbf]*)/", + " $1", $string); + + //always convert to gan-hans before indexing. it should be + //better to use gan-hans for search, since conversion from + //Traditional to Simplified is less ambiguous than the + //other way around + + $t = $this->mConverter->autoConvert($t, 'gan-hans'); + $t = parent::stripForSearch( $t ); + wfProfileOut( __METHOD__ ); + return $t; + + } + + function convertForSearchResult( $termsArray ) { + $terms = implode( '|', $termsArray ); + $terms = implode( '|', $this->mConverter->autoConvertToAllVariants( $terms ) ); + $ret = array_unique( explode('|', $terms) ); + return $ret; + } +} \ No newline at end of file diff --git a/languages/classes/LanguageGv.php b/languages/classes/LanguageGv.php new file mode 100644 index 00000000..5683826d --- /dev/null +++ b/languages/classes/LanguageGv.php @@ -0,0 +1,27 @@ +preConvertPlural( $forms, 4 ); + + if ($count > 0 && ($count % 20) === 0 ) { + return $forms[0]; + } else { + switch ($count % 10) { + case 1: return $forms[1]; + case 2: return $forms[2]; + default: return $forms[3]; + } + } + } + +} diff --git a/languages/classes/LanguageKk.php b/languages/classes/LanguageKk.php index 73f0a1f9..b358a709 100644 --- a/languages/classes/LanguageKk.php +++ b/languages/classes/LanguageKk.php @@ -225,7 +225,7 @@ class KkConverter extends LanguageConverter { * names as they were * - do not try to find variants for usernames */ - function findVariantLink( &$link, &$nt, $forTemplate = false ) { + function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) { // check for user namespace if(is_object($nt)){ $ns = $nt->getNamespace(); @@ -234,7 +234,7 @@ class KkConverter extends LanguageConverter { } $oldlink=$link; - parent::findVariantLink( $link, $nt, $forTemplate ); + parent::findVariantLink( $link, $nt, $ignoreOtherCond ); if( $this->getPreferredVariant()==$this->mMainLanguageCode ) $link=$oldlink; } diff --git a/languages/classes/LanguageKu.php b/languages/classes/LanguageKu.php index 3137c7e8..3b84a9b3 100644 --- a/languages/classes/LanguageKu.php +++ b/languages/classes/LanguageKu.php @@ -148,7 +148,7 @@ class KuConverter extends LanguageConverter { * names as they were * - do not try to find variants for usernames */ - function findVariantLink( &$link, &$nt, $forTemplate = false ) { + function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) { // check for user namespace if(is_object($nt)){ $ns = $nt->getNamespace(); @@ -157,7 +157,7 @@ class KuConverter extends LanguageConverter { } $oldlink=$link; - parent::findVariantLink( $link, $nt, $forTemplate ); + parent::findVariantLink( $link, $nt, $ignoreOtherCond ); if( $this->getPreferredVariant() == $this->mMainLanguageCode ) $link=$oldlink; } diff --git a/languages/classes/LanguageSr.php b/languages/classes/LanguageSr.php index cac82ce7..79a2ec25 100644 --- a/languages/classes/LanguageSr.php +++ b/languages/classes/LanguageSr.php @@ -92,7 +92,7 @@ class SrConverter extends LanguageConverter { * names as they were * - do not try to find variants for usernames */ - function findVariantLink( &$link, &$nt, $forTemplate = false ) { + function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) { // check for user namespace if(is_object($nt)){ $ns = $nt->getNamespace(); @@ -101,7 +101,7 @@ class SrConverter extends LanguageConverter { } $oldlink=$link; - parent::findVariantLink( $link, $nt, $forTemplate ); + parent::findVariantLink( $link, $nt, $ignoreOtherCond ); if($this->getPreferredVariant()==$this->mMainLanguageCode) $link=$oldlink; } diff --git a/languages/classes/LanguageZh.php b/languages/classes/LanguageZh.php index 09362690..cbb748c3 100644 --- a/languages/classes/LanguageZh.php +++ b/languages/classes/LanguageZh.php @@ -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() { -- cgit v1.2.2