var $mFlags;
var $mDescCodeSep = ':',$mDescVarSep = ';';
var $mUcfirst = false;
- var $mGroups = array();
const CACHE_VERSION_KEY = 'VERSION 6';
return $this->mPreferredVariant;
}
- # FIXME rewrite code for parsing http header. The current code
- # is written specific for detecting zh- variants
if( !$this->mPreferredVariant ) {
// see if some supported language variant is set in the
// http header, but we don't set the mPreferredVariant
// variable in case this is called before the user's
// preference is loaded
- $pv=$this->mMainLanguageCode;
- if(array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER)) {
- $header = str_replace( '_', '-', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]));
- $zh = strstr($header, $pv.'-');
- if($zh) {
- $ary = split("[,;]",$zh);
- $pv = $ary[0];
+ if( array_key_exists( 'HTTP_ACCEPT_LANGUAGE', $_SERVER ) ) {
+ $acceptLanguage = strtolower( $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
+
+ // explode by comma
+ $result = explode(',', $acceptLanguage);
+
+ $languages = array();
+
+ foreach( $result as $elem ) {
+ // if $elem likes 'zh-cn;q=0.9'
+ if(($posi = strpos( $elem, ';' )) !== false ) {
+ // get the real language code likes 'zh-cn'
+ $languages[] = substr( $elem, 0, $posi );
+ }
+ else {
+ $languages[] = $elem;
+ }
+ }
+
+ foreach( $languages as $language ) {
+ // strip whitespace
+ $language = trim( $language );
+ if( in_array( $language, $this->mVariants ) ) {
+ return $language;
+ break;
+ }
}
}
- // don't try to return bad variant
- if(in_array( $pv, $this->mVariants ))
- return $pv;
}
return $this->mMainLanguageCode;
global $wgDisableLangConversion;
/* don't do anything if this is the conversion table */
if ( $parser->getTitle()->getNamespace() == NS_MEDIAWIKI &&
- strpos($parser->mTitle->getText(), 'onversiontable') !== false )
+ strpos($parser->mTitle->getText(), "Conversiontable") !== false )
{
return $text;
}
* load conversion tables either from the cache or the disk
* @private
*/
- function loadTables( $fromcache = true ) {
+ function loadTables($fromcache=true) {
global $wgMemc;
if( $this->mTablesLoaded )
return;
// we will first load the default tables
// then update them using things in MediaWiki:Zhconversiontable/*
$this->loadDefaultTables();
- foreach( $this->mVariants as $var ) {
- $cached = $this->parseCachedTable( $var );
- // load group convert table, e.g. [[MediaWiki:Groupconversiontable-StarTrek]].
- foreach( $this->mGroups as $group ) {
- $cachedgroup = $this->parseCachedTable( $var, '', true, "Groupconversiontable-$group" );
- $cached = array_merge( $cached, $cachedgroup );
- }
- $this->mTables[$var]->mergeArray( $cached );
+ foreach($this->mVariants as $var) {
+ $cached = $this->parseCachedTable($var);
+ $this->mTables[$var]->mergeArray($cached);
}
$this->postLoadTables();
* and will be parsed recursively if $recursive=true
*
*/
- function parseCachedTable($code, $subpage='', $recursive=true, $table='Conversiontable') {
+ function parseCachedTable($code, $subpage='', $recursive=true) {
global $wgMessageCache;
static $parsed = array();
if(!is_object($wgMessageCache))
return array();
- $key = "$table/".$code;
+ $key = 'Conversiontable/'.$code;
if($subpage)
$key .= '/' . $subpage;
if(array_key_exists($key, $parsed))
return array();
-
+
if ( strpos( $code, '/' ) === false ) {
- $txt = $wgMessageCache->get( $table, true, $code );
+ $txt = $wgMessageCache->get( 'Conversiontable', true, $code );
} else {
- $title = Title::makeTitleSafe( NS_MEDIAWIKI, "$table/$code" );
+ $title = Title::makeTitleSafe( NS_MEDIAWIKI, "Conversiontable/$code" );
if ( $title && $title->exists() ) {
$article = new Article( $title );
$txt = $article->getContents();
$txt = '';
}
}
+
// get all subpage links of the form
// [[MediaWiki:conversiontable/zh-xx/...|...]]
- $linkhead = $this->mLangObj->getNsText(NS_MEDIAWIKI) . ":$table";
+ $linkhead = $this->mLangObj->getNsText(NS_MEDIAWIKI) . ':Conversiontable';
$subs = explode('[[', $txt);
$sublinks = array();
foreach( $subs as $sub ) {
}
}
+
// parse the mappings in this page
$blocks = explode($this->mMarkup['begin'], $txt);
array_shift($blocks);
* @public
*/
function armourMath($text){
+ // we need to convert '-{' and '}-' to '-{' and '}-'
+ // to avoid a unwanted '}-' appeared after the math-image.
+ $text = strtr( $text, array('-{' => '-{', '}-' => '}-') );
$ret = $this->mMarkup['begin'] . 'R|' . $text . $this->mMarkup['end'];
return $ret;
}
-
- /**
- * Callback function for magicword 'groupconvert'
- *
- * @param string $group: the group name called for
- * @return blank string
- */
- function groupConvert( $group ) {
- $this->mGroups[] = $group;
- return '';
- }
}
/**