* new style magic words support for ParserFunctions

* add localisation support for ParserFunctions magic in Translate
* bump version
This commit is contained in:
Siebrand Mazeland 2009-08-12 13:08:25 +00:00
parent 2d75f324c3
commit 31a1820e70
3 changed files with 91 additions and 114 deletions

View file

@ -1,111 +1,96 @@
<?php
$magicWords = array();
/**
* Get translated magic words, if available
*
* @param string $lang Language code
* @return array
* English
*/
function efParserFunctionsWords( $lang ) {
$words = array();
'expr' => array( 0, 'expr' ),
'if' => array( 0, 'if' ),
'ifeq' => array( 0, 'ifeq' ),
'ifexpr' => array( 0, 'ifexpr' ),
'iferror' => array( 0, 'iferror' ),
'switch' => array( 0, 'switch' ),
'default' => array( 0, '#default' ),
'ifexist' => array( 0, 'ifexist' ),
'time' => array( 0, 'time' ),
'timel' => array( 0, 'timel' ),
'rel2abs' => array( 0, 'rel2abs' ),
'titleparts' => array( 0, 'titleparts' ),
'len' => array( 0, 'len' ),
'pos' => array( 0, 'pos' ),
'rpos' => array( 0, 'rpos' ),
'sub' => array( 0, 'sub' ),
'count' => array( 0, 'count' ),
'replace' => array( 0, 'replace' ),
'explode' => array( 0, 'explode' ),
);
/**
* English
*/
$words['en'] = array(
'expr' => array( 0, 'expr' ),
'if' => array( 0, 'if' ),
'ifeq' => array( 0, 'ifeq' ),
'ifexpr' => array( 0, 'ifexpr' ),
'iferror' => array( 0, 'iferror' ),
'switch' => array( 0, 'switch' ),
'default' => array( 0, '#default' ),
'ifexist' => array( 0, 'ifexist' ),
'time' => array( 0, 'time' ),
'timel' => array( 0, 'timel' ),
'rel2abs' => array( 0, 'rel2abs' ),
'titleparts' => array( 0, 'titleparts' ),
'len' => array( 0, 'len' ),
'pos' => array( 0, 'pos' ),
'rpos' => array( 0, 'rpos' ),
'sub' => array( 0, 'sub' ),
'count' => array( 0, 'count' ),
'replace' => array( 0, 'replace' ),
'explode' => array( 0, 'explode' ),
);
/**
* Farsi-Persian
*/
$magicWords['fa'] = array(
'expr' => array( 0, 'حساب', 'expr' ),
'if' => array( 0, 'اگر', 'if' ),
'ifeq' => array( 0, 'اگرمساوی', 'ifeq' ),
'ifexpr' => array( 0, 'اگرحساب', 'ifexpr' ),
'iferror' => array( 0, 'اگرخطا', 'iferror' ),
'switch' => array( 0, 'گزینه', 'switch' ),
'default' => array( 0, '#پیش‌فرض', '#default' ),
'ifexist' => array( 0, 'اگرموجود', 'ifexist' ),
'time' => array( 0, 'زمان', 'time' ),
'timel' => array( 0, 'زمان‌بلند', 'timel' ),
'rel2abs' => array( 0, 'نسبی‌به‌مطلق', 'rel2abs' ),
'titleparts' => array( 0, 'پاره‌عنوان', 'titleparts' ),
);
/**
* Farsi-Persian
*/
$words['fa'] = array(
'expr' => array( 0, 'حساب', 'expr' ),
'if' => array( 0, 'اگر', 'if' ),
'ifeq' => array( 0, 'اگرمساوی', 'ifeq' ),
'ifexpr' => array( 0, 'اگرحساب', 'ifexpr' ),
'iferror' => array( 0, 'اگرخطا', 'iferror' ),
'switch' => array( 0, 'گزینه', 'switch' ),
'default' => array( 0, '#پیش‌فرض', '#default' ),
'ifexist' => array( 0, 'اگرموجود', 'ifexist' ),
'time' => array( 0, 'زمان', 'time' ),
'timel' => array( 0, 'زمان‌بلند', 'timel' ),
'rel2abs' => array( 0, 'نسبی‌به‌مطلق', 'rel2abs' ),
'titleparts' => array( 0, 'پاره‌عنوان', 'titleparts' ),
);
/**
* Hebrew
*/
$magicWords['he'] = array(
'expr' => array( 0, 'חשב', 'expr' ),
'if' => array( 0, 'תנאי', 'if' ),
'ifeq' => array( 0, 'שווה', 'ifeq' ),
'ifexpr' => array( 0, 'חשב תנאי', 'ifexpr' ),
'iferror' => array( 0, 'תנאי שגיאה', 'iferror' ),
'switch' => array( 0, 'בחר', 'switch' ),
'default' => array( 0, '#ברירת מחדל', '#default' ),
'ifexist' => array( 0, 'קיים', 'ifexist' ),
'time' => array( 0, 'זמן', 'time' ),
'timel' => array( 0, 'זמןמ', 'timel' ),
'rel2abs' => array( 0, 'יחסי למוחלט', 'rel2abs' ),
'titleparts' => array( 0, 'חלק בכותרת', 'titleparts' ),
);
/**
* Hebrew
*/
$words['he'] = array(
'expr' => array( 0, 'חשב', 'expr' ),
'if' => array( 0, 'תנאי', 'if' ),
'ifeq' => array( 0, 'שווה', 'ifeq' ),
'ifexpr' => array( 0, 'חשב תנאי', 'ifexpr' ),
'iferror' => array( 0, 'תנאי שגיאה', 'iferror' ),
'switch' => array( 0, 'בחר', 'switch' ),
'default' => array( 0, '#ברירת מחדל', '#default' ),
'ifexist' => array( 0, 'קיים', 'ifexist' ),
'time' => array( 0, 'זמן', 'time' ),
'timel' => array( 0, 'זמןמ', 'timel' ),
'rel2abs' => array( 0, 'יחסי למוחלט', 'rel2abs' ),
'titleparts' => array( 0, 'חלק בכותרת', 'titleparts' ),
);
/**
* Indonesian
*/
$magicWords['id'] = array(
'expr' => array( 0, 'hitung', 'expr' ),
'if' => array( 0, 'jika', 'if' ),
'ifeq' => array( 0, 'jikasama', 'ifeq' ),
'ifexpr' => array( 0, 'jikahitung', 'ifexpr' ),
'iferror' => array( 0, 'jikasalah', 'iferror' ),
'switch' => array( 0, 'pilih', 'switch' ),
'default' => array( 0, '#baku', '#default' ),
'ifexist' => array( 0, 'jikaada', 'ifexist' ),
'time' => array( 0, 'waktu', 'time' ),
'timel' => array( 0, 'waktu1', 'timel' ),
'rel2abs' => array( 0, 'rel2abs' ),
'titleparts' => array( 0, 'bagianjudul', 'titleparts' ),
);
/**
* Indonesian
*/
$words['id'] = array(
'expr' => array( 0, 'hitung', 'expr' ),
'if' => array( 0, 'jika', 'if' ),
'ifeq' => array( 0, 'jikasama', 'ifeq' ),
'ifexpr' => array( 0, 'jikahitung', 'ifexpr' ),
'iferror' => array( 0, 'jikasalah', 'iferror' ),
'switch' => array( 0, 'pilih', 'switch' ),
'default' => array( 0, '#baku', '#default' ),
'ifexist' => array( 0, 'jikaada', 'ifexist' ),
'time' => array( 0, 'waktu', 'time' ),
'timel' => array( 0, 'waktu1', 'timel' ),
'rel2abs' => array( 0, 'rel2abs' ),
'titleparts' => array( 0, 'bagianjudul', 'titleparts' ),
);
/**
* Yiddish
*/
$words['yi'] = array(
'expr' => array( 0, 'רעכן', 'expr' ),
'if' => array( 0, 'תנאי', 'if' ),
'ifeq' => array( 0, 'גלייך', 'ifeq' ),
'ifexpr' => array( 0, 'אויברעכן', 'ifexpr' ),
'switch' => array( 0, 'קלייב', 'switch' ),
'default' => array( 0, '#גרונט', '#default' ),
'ifexist' => array( 0, 'עקזיסט', 'ifexist' ),
'time' => array( 0, 'צייט', 'time' ),
'timel' => array( 0, 'צייטל', 'timel' ),
);
# English is used as a fallback, and the English synonyms are
# used if a translation has not been provided for a given word
return ( $lang == 'en' || !isset( $words[$lang] ) )
? $words['en']
: array_merge( $words['en'], $words[$lang] );
}
/**
* Yiddish
*/
$magicWords['yi'] = array(
'expr' => array( 0, 'רעכן', 'expr' ),
'if' => array( 0, 'תנאי', 'if' ),
'ifeq' => array( 0, 'גלייך', 'ifeq' ),
'ifexpr' => array( 0, 'אויברעכן', 'ifexpr' ),
'switch' => array( 0, 'קלייב', 'switch' ),
'default' => array( 0, '#גרונט', '#default' ),
'ifexist' => array( 0, 'עקזיסט', 'ifexist' ),
'time' => array( 0, 'צייט', 'time' ),
'timel' => array( 0, 'צייטל', 'timel' ),
);

View file

@ -5,6 +5,8 @@
* @addtogroup Extensions
*/
require_once( dirname(__FILE__) . '/ParserFunctions.i18n.magic.php' );
$messages = array();
$messages['en'] = array(

View file

@ -30,13 +30,12 @@ $wgPFStringLengthLimit = 1000;
*/
$wgPFEnableStringFunctions = false;
/** REGISTRATION */
$wgExtensionFunctions[] = 'wfSetupParserFunctions';
$wgExtensionCredits['parserhook'][] = array(
'path' => __FILE__,
'name' => 'ParserFunctions',
'version' => '1.2.0',
'version' => '1.3.0',
'url' => 'http://www.mediawiki.org/wiki/Extension:ParserFunctions',
'author' => array('Tim Starling', 'Robert Rohde', 'Ross McClure', 'Juraj Simlovic'),
'description' => 'Enhance parser with logical functions',
@ -45,11 +44,9 @@ $wgExtensionCredits['parserhook'][] = array(
$wgAutoloadClasses['ExtParserFunctions'] = dirname(__FILE__).'/ParserFunctions_body.php';
$wgExtensionMessagesFiles['ParserFunctions'] = dirname(__FILE__) . '/ParserFunctions.i18n.php';
$wgHooks['LanguageGetMagic'][] = 'wfParserFunctionsLanguageGetMagic';
$wgParserTestFiles[] = dirname( __FILE__ ) . "/funcsParserTests.txt";
function wfSetupParserFunctions() {
global $wgParser, $wgPFHookStub, $wgHooks;
@ -68,13 +65,6 @@ function wfSetupParserFunctions() {
$wgHooks['ParserClearState'][] = array( &$wgPFHookStub, 'clearState' );
}
function wfParserFunctionsLanguageGetMagic( &$magicWords, $langCode ) {
require_once( dirname( __FILE__ ) . '/ParserFunctions.i18n.magic.php' );
foreach( efParserFunctionsWords( $langCode ) as $word => $trans )
$magicWords[$word] = $trans;
return true;
}
/**
* Stub class to defer loading of the bulk of the code until a parser function is
* actually used.