Удзельнік:Alexander Gouk/Канвертар/files/LanguageBe.php
Выгляд
<?php /** * @package MediaWiki * @subpackage Language */ // Language Conversion require_once( dirname(__FILE__).'/../LanguageConverter.php' ); require_once( dirname(__FILE__).'/LanguageBe_of.php' ); require_once( dirname(__FILE__).'/LanguageBe_tr.php' ); class BeConverter extends LanguageConverter { var $mToAlternative = array( 'іласоф' => 'ілязоф', 'Лондан' => 'Лёндан', 'сць' => 'сьць', 'сля' => 'сьля', 'ненн' => 'неньн', ); var $mToOfficial = array( 'ілязоф' => 'іласоф', 'Лёндан' => 'Лондан', 'сьць' => 'сць', 'сьля' => 'сля', 'еньн' => 'енн', 'аньн' => 'анн', 'менск' => 'мінск', 'сьвя' => 'свя', 'Сьвя' => 'Свя', ); function loadDefaultTables() { $this->mTables = array( 'be-of' => new ReplacementArray( $this->mToOfficial ), 'be-tr' => new ReplacementArray( $this->mToAlternative), 'be' => new ReplacementArray( $this->mToOfficial ), ); } /* rules should be defined as -{афіцыйная | тарашкевіца-} -or- -{code:text | code:text | ...}- update: delete all rule parsing because it's not used currently, and just produces a couple of bugs */ function parseManualRule($rule, $flags=array()) { if(in_array('T',$flags)){ return parent::parseManualRule($rule, $flags); } // otherwise ignore all formatting foreach($this->mVariants as $v) { $carray[$v] = $rule; } return $carray; } // Do not convert content on talk pages function parserConvert( $text, &$parser ){ if(is_object($parser->mTitle) && $parser->mTitle->isTalkPage()) $this->mDoContentConvert=false; else $this->mDoContentConvert=true; return parent::parserConvert($text, $parser ); } /* * A function wrapper: * - if there is no selected variant, leave the link * names as they were * - do not try to find variants for usernames */ function findVariantLink( &$link, &$nt ) { // check for user namespace if(is_object($nt)){ $ns = $nt->getNamespace(); if($ns==NS_USER || $ns==NS_USER_TALK) return; } $oldlink=$link; parent::findVariantLink($link,$nt); if($this->getPreferredVariant()==$this->mMainLanguageCode) $link=$oldlink; } /* * We want our external link captions to be converted in variants, * so we return the original text instead -{$text}-, except for URLs */ function markNoConversion($text, $noParse=false) { if($noParse || preg_match("/^https?:\/\/|ftp:\/\/|irc:\/\//",$text)) return parent::markNoConversion($text); return $text; } /* * An ugly function wrapper for parsing Image titles * (to prevent image name conversion) */ function autoConvert($text, $toVariant=false) { global $wgTitle; if(is_object($wgTitle) && $wgTitle->getNameSpace()==NS_IMAGE){ $imagename = $wgTitle->getNsText(); if(preg_match("/^$imagename:/",$text)) return $text; } return parent::autoConvert($text,$toVariant); } } class LanguageBe extends LanguageBe_of { function __construct() { global $wgHooks; parent::__construct(); // load Variants: $variants = array('be-of', 'be-tr'); $variantfallbacks = array( 'be' => 'be-of', 'be-of' => 'be', 'be-tr' => 'be', ); $marker = array();//don't mess with these, leave them as they are $flags = array( 'S' => 'S', 'пісьмо' => 'S', 'пісьмо' => 'S', 'W' => 'W', 'в. мова' => 'W', 'в. мова' => 'W', 'в. мова' => 'W', 'в. мова' => 'W' ); $this->mConverter = new BeConverter($this, 'be', $variants, $variantfallbacks, $marker, $flags); $wgHooks['ArticleSaveComplete'][] = $this->mConverter; } } ?>