<?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;
}
}
?>