Nikerabbit has submitted this change and it was merged. Change subject: Migrate to JSON i18n ......................................................................
Migrate to JSON i18n Procedure per https://www.mediawiki.org/wiki/Manual:GenerateJsonI18n.php with shim. Change-Id: Ie3369ec6efe4d0e911bef151005e8c23578f60e8 --- M Loops.i18n.php M Loops.php A i18n/ast.json A i18n/be-tarask.json A i18n/de.json A i18n/dsb.json A i18n/en.json A i18n/es.json A i18n/fa.json A i18n/fr.json A i18n/gl.json A i18n/he.json A i18n/hsb.json A i18n/ia.json A i18n/it.json A i18n/ja.json A i18n/ko.json A i18n/ksh.json A i18n/lb.json A i18n/mk.json A i18n/ms.json A i18n/mt.json A i18n/nl.json A i18n/pl.json A i18n/pms.json A i18n/pt-br.json A i18n/pt.json A i18n/qqq.json A i18n/roa-tara.json A i18n/ru.json A i18n/tl.json A i18n/tzm.json A i18n/uk.json A i18n/zh-hans.json 34 files changed, 382 insertions(+), 332 deletions(-) Approvals: Nikerabbit: Verified; Looks good to me, approved diff --git a/Loops.i18n.php b/Loops.i18n.php index 0c53416..eeb2776 100644 --- a/Loops.i18n.php +++ b/Loops.i18n.php @@ -1,270 +1,31 @@ <?php /** - * Internationalization file of the 'Loops' extension. + * This is a backwards-compatibility shim, generated by: + * https://git.wikimedia.org/blob/mediawiki%2Fcore.git/HEAD/maintenance%2FgenerateJsonI18n.php * - * @since 0.4 + * Beginning with MediaWiki 1.23, translation strings are stored in json files, + * and the EXTENSION.i18n.php file only exists to provide compatibility with + * older releases of MediaWiki. For more information about this migration, see: + * https://www.mediawiki.org/wiki/Requests_for_comment/Localisation_format * - * @file Loops.i18n.php - * @ingroup Loops - * @author Daniel Werner < [email protected] > + * This shim maintains compatibility back to MediaWiki 1.17. */ - $messages = array(); +$GLOBALS['wgHooks']['LocalisationCacheRecache'][] = function ( $cache, $code, &$cachedData ) { + $codeSequence = array_merge( array( $code ), $cachedData['fallbackSequence'] ); + foreach ( $codeSequence as $csCode ) { + $fileName = __DIR__ . "/i18n/$csCode.json"; + if ( is_readable( $fileName ) ) { + $data = FormatJson::decode( file_get_contents( $fileName ), true ); + foreach ( array_keys( $data ) as $key ) { + if ( $key === '' || $key[0] === '@' ) { + unset( $data[$key] ); + } + } + $cachedData['messages'] = array_merge( $data, $cachedData['messages'] ); + } -/** English - * @author David M. Sledge - */ -$messages['en'] = array( - 'loops-desc' => 'Parser functions for performing loops', - 'loops_max' => 'Maximum number of loops have been performed' -); - -/** Message documentation (Message documentation) - * @author Purodha - * @author Shirayuki - */ -$messages['qqq'] = array( - 'loops-desc' => '{{desc|name=Loops|url=http://www.mediawiki.org/wiki/Extension:Loops}}', - 'loops_max' => 'Used as error message.', -); - -/** Asturian (asturianu) - * @author Xuacu - */ -$messages['ast'] = array( - 'loops-desc' => "Funciones d'analís pa facer xeres cícliques", - 'loops_max' => "Algamóse'l númberu máximu de ciclos", -); - -/** Belarusian (Taraškievica orthography) (беларуская (тарашкевіца)) - * @author Wizardist - */ -$messages['be-tarask'] = array( - 'loops-desc' => 'Функцыі парсэра для стварэньня цыклаў', - 'loops_max' => 'Максымальная колькасьць цыклаў', -); - -/** German (Deutsch) - * @author Daniel Werner - */ -$messages['de'] = array( - 'loops-desc' => 'Parser-Funktionen zur Schleifen-Ausführung', - 'loops_max' => 'Die maximal erlaubte Anzahl an Schleifen wurde ausgeführt', -); - -/** Lower Sorbian (dolnoserbski) - * @author Michawiki - */ -$messages['dsb'] = array( - 'loops-desc' => 'Parserowe funkcije za wuwjeźenje kokulow', - 'loops_max' => 'Maksimalna licba kokulow jo se wuwjadła', -); - -/** Spanish (español) - * @author Armando-Martin - */ -$messages['es'] = array( - 'loops-desc' => 'Funciones de analizador (parser) para realizar bucles', - 'loops_max' => 'Se ha realizado el número máximo de bucles', -); - -/** Persian (فارسی) - * @author Armin1392 - */ -$messages['fa'] = array( - 'loops-desc' => 'توابع تجزیه کننده برای انجام حلقهها', - 'loops_max' => 'حداکثر تعداد حلقههایی که انجام شدهاست', -); - -/** French (français) - * @author DavidL - */ -$messages['fr'] = array( - 'loops-desc' => "Fonctions de l'interpréteur pour effectuer des boucles", - 'loops_max' => 'Le nombre maximal de boucles a été effectué', -); - -/** Galician (galego) - * @author Toliño - */ -$messages['gl'] = array( - 'loops-desc' => 'Funcións analíticas para levar a cabo bucles', - 'loops_max' => 'Levouse a cabo o número máximo de bucles', -); - -/** Hebrew (עברית) - * @author Amire80 - */ -$messages['he'] = array( - 'loops-desc' => 'פונקציות מפענח לביצוע לולאות', - 'loops_max' => 'בוצע מספר מרבי של לולאות', -); - -/** Upper Sorbian (hornjoserbsce) - * @author Michawiki - */ -$messages['hsb'] = array( - 'loops-desc' => 'Parserowe funkcije za wuwjedźenje seklow', - 'loops_max' => 'Maksimalna ličba seklow je so wuwjedła', -); - -/** Interlingua (interlingua) - * @author McDutchie - */ -$messages['ia'] = array( - 'loops-desc' => 'Functiones de analysator syntactic pro executar iterationes', - 'loops_max' => 'Le numero maxime de iterationes ha essite executate', -); - -/** Italian (italiano) - * @author Beta16 - */ -$messages['it'] = array( - 'loops-desc' => "Funzioni parser per l'esecuzione di cicli", - 'loops_max' => "E' stato eseguito il numero massimo di cicli", -); - -/** Japanese (日本語) - * @author Fryed-peach - */ -$messages['ja'] = array( - 'loops-desc' => 'ループを実行するためのパーサー関数', - 'loops_max' => 'ループの最大実行回数に達しました', -); - -/** Korean (한국어) - * @author 아라 - */ -$messages['ko'] = array( - 'loops-desc' => '루프를 수행하는 것에 대한 파서 함수', - 'loops_max' => '루프의 최대 수가 수행되었습니다', -); - -/** Colognian (Ripoarisch) - * @author Purodha - */ -$messages['ksh'] = array( - 'loops-desc' => 'Paaser-Funxjuhne för Schleife ußzeföhre.', - 'loops_max' => 'De jrüüßte müjjelesche Zahl vun Schleife es dorschloufe woode.', -); - -/** Luxembourgish (Lëtzebuergesch) - * @author Robby - * @author Soued031 - */ -$messages['lb'] = array( - 'loops-desc' => 'Parser-Funktioune fir Schleefen auszeféieren', - 'loops_max' => 'Déi maximal Zuel vun erlaabte Schleefe gouf ausgefouert', -); - -/** Macedonian (македонски) - * @author Bjankuloski06 - */ -$messages['mk'] = array( - 'loops-desc' => 'Rасчленувачки функции за вршење на повторувања (јамки)', - 'loops_max' => 'Извршен е максималниот број на повторувања', -); - -/** Malay (Bahasa Melayu) - * @author Anakmalaysia - */ -$messages['ms'] = array( - 'loops-desc' => 'Fungsi parser untuk melakukan gelung', - 'loops_max' => 'Bilangan gelung maksimum telah dilakukan', -); - -/** Maltese (Malti) - * @author Chrisportelli - */ -$messages['mt'] = array( - 'loops_max' => "Ġew esegwiti n-numru massimu ta' ċikli", -); - -/** Dutch (Nederlands) - * @author Siebrand - */ -$messages['nl'] = array( - 'loops-desc' => 'Parserfuncties voor het uitvoeren van herhalingen', - 'loops_max' => 'Het maximum aantal herhalingen is uitgevoerd', -); - -/** Polish (polski) - * @author BeginaFelicysym - */ -$messages['pl'] = array( - 'loops-desc' => 'Funkcje analizatora składni do wykonywania pętli', - 'loops_max' => 'Została wykonana maksymalna liczba pętli', -); - -/** Piedmontese (Piemontèis) - * @author Borichèt - * @author Dragonòt - */ -$messages['pms'] = array( - 'loops-desc' => "Funsion dl'analisator për fé dij sicl", - 'loops_max' => "Màssim nùmer ëd sicl ch'a son stàit fàit", -); - -/** Portuguese (português) - * @author Cainamarques - */ -$messages['pt'] = array( - 'loops-desc' => 'Funções sintáticas para executar ciclos', - 'loops_max' => 'O número máximo de ciclos foi atingido', -); - -/** Brazilian Portuguese (português do Brasil) - * @author Cainamarques - */ -$messages['pt-br'] = array( - 'loops-desc' => 'Funções sintáticas para executar ciclos', - 'loops_max' => 'O número máximo de ciclos foi atingido', -); - -/** tarandíne (tarandíne) - * @author Joetaras - */ -$messages['roa-tara'] = array( - 'loops-desc' => 'Funziune analizzatrice pe fà le cicle', - 'loops_max' => 'Massime numere de cicle onne state fatte', -); - -/** Russian (русский) - * @author Okras - */ -$messages['ru'] = array( - 'loops-desc' => 'Функции анализатора для выполнения циклов', - 'loops_max' => 'Максимальное количество циклов для выполнения', -); - -/** Tagalog (Tagalog) - * @author AnakngAraw - */ -$messages['tl'] = array( - 'loops-desc' => 'Mga tungkuling pambanghay para sa pagsasagawa ng mga pagsilo', - 'loops_max' => 'Naisagawa na ang pinakamataas na bilang ng mga pagsilo', -); - -/** Central Atlas Tamazight (ⵜⴰⵎⴰⵣⵉⵖⵜ) - * @author Tifinaghes - */ -$messages['tzm'] = array( - 'loops-desc' => 'Parser functions for performing loops', - 'loops_max' => 'Maximum number of loops have been performed', -); - -/** Ukrainian (українська) - * @author Base - */ -$messages['uk'] = array( - 'loops-desc' => 'Функції парсеру для створення циклів', - 'loops_max' => 'Максимальне число циклів, що може бути створено', -); - -/** Simplified Chinese (中文(简体)) - * @author Yfdyh000 - */ -$messages['zh-hans'] = array( - 'loops-desc' => '执行循环的解析器函数', - 'loops_max' => '循环执行次数的最大值', -); + $cachedData['deps'][] = new FileDependency( $fileName ); + } + return true; +}; diff --git a/Loops.php b/Loops.php index 866b943..b75ffb1 100644 --- a/Loops.php +++ b/Loops.php @@ -2,12 +2,11 @@ /** * 'Loops' is a MediaWiki extension expanding the parser with loops functions - * + * * Documentation: http://www.mediawiki.org/wiki/Extension:Loops * Support: http://www.mediawiki.org/wiki/Extension_talk:Loops * Source code: http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/Loops - * - * @version: 0.4 + * * @license: GNU GPL v2 or higher * @author: David M. Sledge * @author: Daniel Werner < [email protected] > @@ -17,7 +16,7 @@ */ if ( ! defined( 'MEDIAWIKI' ) ) { die( ); } - + $wgExtensionCredits['parserhook'][] = array( 'path' => __FILE__, 'author' => array( 'David M. Sledge', '[http://www.mediawiki.org/wiki/User:Danwe Daniel Werner]' ), @@ -28,6 +27,7 @@ ); // language files: +$wgMessagesDirs['Loops'] = __DIR__ . '/i18n'; $wgExtensionMessagesFiles['Loops' ] = ExtLoops::getDir() . '/Loops.i18n.php'; $wgExtensionMessagesFiles['LoopsMagic'] = ExtLoops::getDir() . '/Loops.i18n.magic.php'; @@ -45,13 +45,12 @@ * extension logic stuff. */ class ExtLoops { - - const VERSION = '0.4'; - + const VERSION = '0.5.0'; + /** * Configuration variable defining maximum allowed number of loops ('-1' => no limit). * '#forargs' and '#fornumargs' are not limited by this. - * + * * @var int */ public static $maxLoops = 100; @@ -60,7 +59,7 @@ * Returns the extensions base installation directory. * * @since 0.4 - * + * * @return boolean */ public static function getDir() { @@ -74,11 +73,11 @@ /** * Sets up parser functions - * + * * @since 0.4 */ public static function init( Parser &$parser ) { - + if( ! class_exists( 'ExtVariables' ) ) { /* * If Variables extension not defined, we can't use certain functions. @@ -88,7 +87,7 @@ $disabledFunctions = array( 'loop', 'forargs', 'fornumargs' ); $egLoopsEnabledFunctions = array_diff( $egLoopsEnabledFunctions, $disabledFunctions ); } - + /* * store for loops count per parser object. This will solve several bugs related to * 'ParserClearState' hook resetting the count early in combination with certain @@ -101,22 +100,22 @@ self::initFunction( $parser, 'loop' ); self::initFunction( $parser, 'forargs' ); self::initFunction( $parser, 'fornumargs' ); - + return true; } private static function initFunction( Parser &$parser, $name ) { global $egLoopsEnabledFunctions; - + // don't register parser function if disabled by configuration: if( ! in_array( $name, $egLoopsEnabledFunctions ) ) { return; } - + $functionCallback = array( __CLASS__, 'pfObj_' . $name ); $parser->setFunctionHook( $name, $functionCallback, SFH_OBJECT_ARGS ); } - - + + #################### # Parser Functions # #################### @@ -124,11 +123,11 @@ public static function pfObj_while( Parser &$parser, $frame, $args ) { return self::perform_while( $parser, $frame, $args, false ); } - + public static function pfObj_dowhile( Parser &$parser, $frame, $args ) { return self::perform_while( $parser, $frame, $args, true ); } - + /** * Generic function handling '#while' and '#dowhile' as one */ @@ -136,7 +135,7 @@ // #(do)while: | condition | code $rawCond = isset( $args[1] ) ? $args[1] : ''; // unexpanded condition $rawCode = isset( $args[2] ) ? $args[2] : ''; // unexpanded loop code - + if( $dowhile === false && trim( $frame->expand( $rawCond ) ) === '' @@ -144,70 +143,70 @@ // while, but condition not fullfilled from the start return ''; } - + $output = ''; - + do { // limit check: if( ! self::incrCounter( $parser ) ) { return self::msgLoopsLimit( $output ); } $output .= trim( $frame->expand( $rawCode ) ); - + } while( trim( $frame->expand( $rawCond ) ) ); - + return $output; } - + public static function pfObj_loop( Parser &$parser, PPFrame $frame, $args ) { // #loop: var | start | count | code $varName = isset( $args[0] ) ? trim( $frame->expand( $args[0] ) ) : ''; $startVal = isset( $args[1] ) ? (int)trim( $frame->expand( $args[1] ) ) : 0; $loops = isset( $args[2] ) ? (int)trim( $frame->expand( $args[2] ) ) : 0; $rawCode = isset( $args[3] ) ? $args[3] : ''; // unexpanded loop code - + if( $loops === 0 ) { // no loops to perform return ''; } - + $output = ''; $endVal = $startVal + $loops; $i = $startVal; - + while( $i !== $endVal ) { // limit check: if( ! self::incrCounter( $parser ) ) { return self::msgLoopsLimit( $output ); } - + // set current position as variable: self::setVariable( $parser, $varName, (string)$i ); - + $output .= trim( $frame->expand( $rawCode ) ); - + // in-/decrease loop count (count can be negative): ( $i < $endVal ) ? $i++ : $i--; } return $output; } - + /** * #forargs: filter | keyVarName | valVarName | code */ - public static function pfObj_forargs( Parser &$parser, $frame, $args ) { + public static function pfObj_forargs( Parser &$parser, $frame, $args ) { // The first arg is already expanded, but this is a good habit to have... $filter = array_shift( $args ); $filter = $filter !== null ? trim( $frame->expand( $filter ) ) : ''; - + // if prefix contains numbers only or isn't set, get all arguments, otherwise just non-numeric $tArgs = ( preg_match( '/^([1-9][0-9]*)?$/', $filter ) > 0 ) ? $frame->getArguments() : $frame->getNamedArguments(); - + return self::perform_forargs( $parser, $frame, $args, $tArgs, $filter ); } - + /** * #fornumargs: keyVarName | valVarName | code * or (since 0.4 for more consistency) @@ -226,16 +225,16 @@ } } ksort( $tNumArgs ); // sort from lowest to highest - + if( count( $args ) > 3 ) { // compatbility to pre 0.4 but consistency with other Loop functions. // this way the first argument can be ommitted like '#fornumargs: |varKey |varVal |code' array_shift( $args ); } - + return self::perform_forargs( $parser, $frame, $args, $tNumArgs, '' ); } - + /** * Generic function handling '#forargs' and '#fornumargs' as one */ @@ -244,7 +243,7 @@ if( !( $frame->isTemplate() ) ) { return ''; } - + // name of the variable to store the argument name: $keyVar = array_shift( $funcArgs ); $keyVar = $keyVar !== null ? trim( $frame->expand( $keyVar ) ) : ''; @@ -254,16 +253,16 @@ // unexpanded code: $rawCode = array_shift( $funcArgs ); $rawCode = $rawCode !== null ? $rawCode : ''; - + $output = ''; - + // if prefix contains numbers only or isn't set, get all arguments, otherwise just non-numeric $tArgs = preg_match( '/^([1-9][0-9]*)?$/', $prefix ) > 0 ? $frame->getArguments() : $frame->getNamedArguments(); - + foreach( $templateArgs as $argName => $argVal ) { // if no filter or prefix in argument name: - if( $prefix !== '' && strpos( $argName, $prefix ) !== 0 ) { + if( $prefix !== '' && strpos( $argName, $prefix ) !== 0 ) { continue; } if ( $keyVar !== $valVar ) { @@ -274,29 +273,29 @@ self::setVariable( $parser, $valVar, $argVal ); // expand current run: - $output .= trim( $frame->expand( $rawCode ) ); + $output .= trim( $frame->expand( $rawCode ) ); } - + return $output; } - + /** * Connects to 'Variables' extension and sets a variable. Handles different versions of * 'Variables' extension since there have changed some things along the way. - * + * * @param Parser $parser * @param string $varName * @param string $varValue */ private static function setVariable( Parser &$parser, $varName, $varValue ) { global $wgExtVariables; - + static $newVersion = null; if( $newVersion === null ) { // find out whether local wiki is using variables extension 2.0 or higher $newVersion = ( defined( 'ExtVariables::VERSION' ) && version_compare( ExtVariables::VERSION, '1.9999', '>' ) ); } - + if( $newVersion ) { // clean way since Variables 2.0: ExtVariables::get( $parser )->setVarValue( $varName, $varValue ); @@ -306,42 +305,42 @@ $wgExtVariables->vardefine( $parser, trim( $varName ), trim( $varValue ) ); } } - - + + ############### # Loops Count # ############### - + /** * Returns how many loops have been performed for a given Parser instance. - * + * * @since 0.4 - * + * * @param Parser $parser * @return int */ public static function getLoopsCount( Parser &$parser ) { return $parser->mExtLoopsCounter; } - + /** * Returns whether the maximum number of loops for the given Parser instance have * been performed already. - * + * * @since 0.4 - * + * * @param Parser $parser - * @return bool + * @return bool */ public static function maxLoopsPerformed( Parser &$parser ) { $count = $parser->mExtLoopsCounter; return $count > -1 && $count >= self::$maxLoops; } - + /** * If limit has not been exceeded already, this will increase the counter. If * exceeded false will be returned, otherwise the new counter value - * + * * @return false|int */ protected static function incrCounter( Parser &$parser ) { @@ -350,7 +349,7 @@ } return ++$parser->mExtLoopsCounter; } - + /** * div wrapped error message stating maximum number of loops have been performed. */ @@ -360,29 +359,29 @@ } return $output .= '<div class="error">' . wfMsgForContent( 'loops_max' ) . '</div>'; } - - + + ################## # Hooks handling # ################## - + public static function onParserClearState( Parser &$parser ) { // reset loops counter since the parser process finished one page $parser->mExtLoopsCounter = 0; return true; } - + public static function onParserLimitReport( $parser, &$report ) { // add performed loops to limit report: $report .= 'ExtLoops count: ' . self::getLoopsCount( $parser ); - + if( self::$maxLoops > -1 ) { // if limit is set, communicate the limit as well: $report .= '/' . self::$maxLoops; } $report .= "\n"; - + return true; } - + } diff --git a/i18n/ast.json b/i18n/ast.json new file mode 100644 index 0000000..6e46ec7 --- /dev/null +++ b/i18n/ast.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Xuacu" + ] + }, + "loops-desc": "Funciones d'analís pa facer xeres cícliques", + "loops_max": "Algamóse'l númberu máximu de ciclos" +} \ No newline at end of file diff --git a/i18n/be-tarask.json b/i18n/be-tarask.json new file mode 100644 index 0000000..f35fb65 --- /dev/null +++ b/i18n/be-tarask.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Wizardist" + ] + }, + "loops-desc": "Функцыі парсэра для стварэньня цыклаў", + "loops_max": "Максымальная колькасьць цыклаў" +} \ No newline at end of file diff --git a/i18n/de.json b/i18n/de.json new file mode 100644 index 0000000..1170998 --- /dev/null +++ b/i18n/de.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Daniel Werner" + ] + }, + "loops-desc": "Parser-Funktionen zur Schleifen-Ausführung", + "loops_max": "Die maximal erlaubte Anzahl an Schleifen wurde ausgeführt" +} \ No newline at end of file diff --git a/i18n/dsb.json b/i18n/dsb.json new file mode 100644 index 0000000..5ec8d3a --- /dev/null +++ b/i18n/dsb.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Michawiki" + ] + }, + "loops-desc": "Parserowe funkcije za wuwjeźenje kokulow", + "loops_max": "Maksimalna licba kokulow jo se wuwjadła" +} \ No newline at end of file diff --git a/i18n/en.json b/i18n/en.json new file mode 100644 index 0000000..92be1ac --- /dev/null +++ b/i18n/en.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "David M. Sledge" + ] + }, + "loops-desc": "Parser functions for performing loops", + "loops_max": "Maximum number of loops have been performed" +} \ No newline at end of file diff --git a/i18n/es.json b/i18n/es.json new file mode 100644 index 0000000..e2cd3fe --- /dev/null +++ b/i18n/es.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Armando-Martin" + ] + }, + "loops-desc": "Funciones de analizador (parser) para realizar bucles", + "loops_max": "Se ha realizado el número máximo de bucles" +} \ No newline at end of file diff --git a/i18n/fa.json b/i18n/fa.json new file mode 100644 index 0000000..a05d18b --- /dev/null +++ b/i18n/fa.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Armin1392" + ] + }, + "loops-desc": "توابع تجزیه کننده برای انجام حلقهها", + "loops_max": "حداکثر تعداد حلقههایی که انجام شدهاست" +} \ No newline at end of file diff --git a/i18n/fr.json b/i18n/fr.json new file mode 100644 index 0000000..81d4fba --- /dev/null +++ b/i18n/fr.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "DavidL" + ] + }, + "loops-desc": "Fonctions de l'interpréteur pour effectuer des boucles", + "loops_max": "Le nombre maximal de boucles a été effectué" +} \ No newline at end of file diff --git a/i18n/gl.json b/i18n/gl.json new file mode 100644 index 0000000..9afc940 --- /dev/null +++ b/i18n/gl.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Toliño" + ] + }, + "loops-desc": "Funcións analíticas para levar a cabo bucles", + "loops_max": "Levouse a cabo o número máximo de bucles" +} \ No newline at end of file diff --git a/i18n/he.json b/i18n/he.json new file mode 100644 index 0000000..ec4dbcd --- /dev/null +++ b/i18n/he.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Amire80" + ] + }, + "loops-desc": "פונקציות מפענח לביצוע לולאות", + "loops_max": "בוצע מספר מרבי של לולאות" +} \ No newline at end of file diff --git a/i18n/hsb.json b/i18n/hsb.json new file mode 100644 index 0000000..bbc63cc --- /dev/null +++ b/i18n/hsb.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Michawiki" + ] + }, + "loops-desc": "Parserowe funkcije za wuwjedźenje seklow", + "loops_max": "Maksimalna ličba seklow je so wuwjedła" +} \ No newline at end of file diff --git a/i18n/ia.json b/i18n/ia.json new file mode 100644 index 0000000..064d799 --- /dev/null +++ b/i18n/ia.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "McDutchie" + ] + }, + "loops-desc": "Functiones de analysator syntactic pro executar iterationes", + "loops_max": "Le numero maxime de iterationes ha essite executate" +} \ No newline at end of file diff --git a/i18n/it.json b/i18n/it.json new file mode 100644 index 0000000..cb8a128 --- /dev/null +++ b/i18n/it.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Beta16" + ] + }, + "loops-desc": "Funzioni parser per l'esecuzione di cicli", + "loops_max": "E' stato eseguito il numero massimo di cicli" +} \ No newline at end of file diff --git a/i18n/ja.json b/i18n/ja.json new file mode 100644 index 0000000..78d7f5f --- /dev/null +++ b/i18n/ja.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Fryed-peach" + ] + }, + "loops-desc": "ループを実行するためのパーサー関数", + "loops_max": "ループの最大実行回数に達しました" +} \ No newline at end of file diff --git a/i18n/ko.json b/i18n/ko.json new file mode 100644 index 0000000..4edf3ba --- /dev/null +++ b/i18n/ko.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "아라" + ] + }, + "loops-desc": "루프를 수행하는 것에 대한 파서 함수", + "loops_max": "루프의 최대 수가 수행되었습니다" +} \ No newline at end of file diff --git a/i18n/ksh.json b/i18n/ksh.json new file mode 100644 index 0000000..b2070a5 --- /dev/null +++ b/i18n/ksh.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Purodha" + ] + }, + "loops-desc": "Paaser-Funxjuhne för Schleife ußzeföhre.", + "loops_max": "De jrüüßte müjjelesche Zahl vun Schleife es dorschloufe woode." +} \ No newline at end of file diff --git a/i18n/lb.json b/i18n/lb.json new file mode 100644 index 0000000..6320fb0 --- /dev/null +++ b/i18n/lb.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Robby", + "Soued031" + ] + }, + "loops-desc": "Parser-Funktioune fir Schleefen auszeféieren", + "loops_max": "Déi maximal Zuel vun erlaabte Schleefe gouf ausgefouert" +} \ No newline at end of file diff --git a/i18n/mk.json b/i18n/mk.json new file mode 100644 index 0000000..e3efc9f --- /dev/null +++ b/i18n/mk.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Bjankuloski06" + ] + }, + "loops-desc": "Rасчленувачки функции за вршење на повторувања (јамки)", + "loops_max": "Извршен е максималниот број на повторувања" +} \ No newline at end of file diff --git a/i18n/ms.json b/i18n/ms.json new file mode 100644 index 0000000..9203047 --- /dev/null +++ b/i18n/ms.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Anakmalaysia" + ] + }, + "loops-desc": "Fungsi parser untuk melakukan gelung", + "loops_max": "Bilangan gelung maksimum telah dilakukan" +} \ No newline at end of file diff --git a/i18n/mt.json b/i18n/mt.json new file mode 100644 index 0000000..9629fb1 --- /dev/null +++ b/i18n/mt.json @@ -0,0 +1,8 @@ +{ + "@metadata": { + "authors": [ + "Chrisportelli" + ] + }, + "loops_max": "Ġew esegwiti n-numru massimu ta' ċikli" +} \ No newline at end of file diff --git a/i18n/nl.json b/i18n/nl.json new file mode 100644 index 0000000..a2867ba --- /dev/null +++ b/i18n/nl.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Siebrand" + ] + }, + "loops-desc": "Parserfuncties voor het uitvoeren van herhalingen", + "loops_max": "Het maximum aantal herhalingen is uitgevoerd" +} \ No newline at end of file diff --git a/i18n/pl.json b/i18n/pl.json new file mode 100644 index 0000000..cdbdf27 --- /dev/null +++ b/i18n/pl.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "BeginaFelicysym" + ] + }, + "loops-desc": "Funkcje analizatora składni do wykonywania pętli", + "loops_max": "Została wykonana maksymalna liczba pętli" +} \ No newline at end of file diff --git a/i18n/pms.json b/i18n/pms.json new file mode 100644 index 0000000..a32866b --- /dev/null +++ b/i18n/pms.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Borichèt", + "Dragonòt" + ] + }, + "loops-desc": "Funsion dl'analisator për fé dij sicl", + "loops_max": "Màssim nùmer ëd sicl ch'a son stàit fàit" +} \ No newline at end of file diff --git a/i18n/pt-br.json b/i18n/pt-br.json new file mode 100644 index 0000000..fd98de3 --- /dev/null +++ b/i18n/pt-br.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Cainamarques" + ] + }, + "loops-desc": "Funções sintáticas para executar ciclos", + "loops_max": "O número máximo de ciclos foi atingido" +} \ No newline at end of file diff --git a/i18n/pt.json b/i18n/pt.json new file mode 100644 index 0000000..fd98de3 --- /dev/null +++ b/i18n/pt.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Cainamarques" + ] + }, + "loops-desc": "Funções sintáticas para executar ciclos", + "loops_max": "O número máximo de ciclos foi atingido" +} \ No newline at end of file diff --git a/i18n/qqq.json b/i18n/qqq.json new file mode 100644 index 0000000..272d3a0 --- /dev/null +++ b/i18n/qqq.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "Purodha", + "Shirayuki" + ] + }, + "loops-desc": "{{desc|name=Loops|url=http://www.mediawiki.org/wiki/Extension:Loops}}", + "loops_max": "Used as error message." +} \ No newline at end of file diff --git a/i18n/roa-tara.json b/i18n/roa-tara.json new file mode 100644 index 0000000..3c7fd5f --- /dev/null +++ b/i18n/roa-tara.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Joetaras" + ] + }, + "loops-desc": "Funziune analizzatrice pe fà le cicle", + "loops_max": "Massime numere de cicle onne state fatte" +} \ No newline at end of file diff --git a/i18n/ru.json b/i18n/ru.json new file mode 100644 index 0000000..ea8ba29 --- /dev/null +++ b/i18n/ru.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Okras" + ] + }, + "loops-desc": "Функции анализатора для выполнения циклов", + "loops_max": "Максимальное количество циклов для выполнения" +} \ No newline at end of file diff --git a/i18n/tl.json b/i18n/tl.json new file mode 100644 index 0000000..47aecd3 --- /dev/null +++ b/i18n/tl.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "AnakngAraw" + ] + }, + "loops-desc": "Mga tungkuling pambanghay para sa pagsasagawa ng mga pagsilo", + "loops_max": "Naisagawa na ang pinakamataas na bilang ng mga pagsilo" +} \ No newline at end of file diff --git a/i18n/tzm.json b/i18n/tzm.json new file mode 100644 index 0000000..23a3d05 --- /dev/null +++ b/i18n/tzm.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Tifinaghes" + ] + }, + "loops-desc": "Parser functions for performing loops", + "loops_max": "Maximum number of loops have been performed" +} \ No newline at end of file diff --git a/i18n/uk.json b/i18n/uk.json new file mode 100644 index 0000000..8da5c6a --- /dev/null +++ b/i18n/uk.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Base" + ] + }, + "loops-desc": "Функції парсеру для створення циклів", + "loops_max": "Максимальне число циклів, що може бути створено" +} \ No newline at end of file diff --git a/i18n/zh-hans.json b/i18n/zh-hans.json new file mode 100644 index 0000000..dbf07a5 --- /dev/null +++ b/i18n/zh-hans.json @@ -0,0 +1,9 @@ +{ + "@metadata": { + "authors": [ + "Yfdyh000" + ] + }, + "loops-desc": "执行循环的解析器函数", + "loops_max": "循环执行次数的最大值" +} \ No newline at end of file -- To view, visit https://gerrit.wikimedia.org/r/122692 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie3369ec6efe4d0e911bef151005e8c23578f60e8 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Loops Gerrit-Branch: master Gerrit-Owner: Siebrand <[email protected]> Gerrit-Reviewer: Nikerabbit <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
