summaryrefslogtreecommitdiff
path: root/extensions/Gadgets
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2015-12-20 09:00:55 +0100
committerPierre Schmitz <pierre@archlinux.de>2015-12-20 09:00:55 +0100
commita2190ac74dd4d7080b12bab90e552d7aa81209ef (patch)
tree8b31f38de9882d18df54cf8d9e0de74167a094eb /extensions/Gadgets
parent15e69f7b20b6596b9148030acce5b59993b95a45 (diff)
parent257401d8b2cf661adf36c84b0e3fd1cf85e33c22 (diff)
Merge branch 'mw-1.26'
Diffstat (limited to 'extensions/Gadgets')
-rw-r--r--extensions/Gadgets/GadgetHooks.php92
-rw-r--r--extensions/Gadgets/Gadgets.alias.php10
-rw-r--r--extensions/Gadgets/Gadgets.namespaces.php122
-rw-r--r--extensions/Gadgets/Gadgets.php1
-rw-r--r--extensions/Gadgets/Gadgets_body.php305
-rw-r--r--extensions/Gadgets/Gruntfile.js19
-rw-r--r--extensions/Gadgets/SpecialGadgets.php25
-rw-r--r--extensions/Gadgets/api/ApiQueryGadgetCategories.php54
-rw-r--r--extensions/Gadgets/api/ApiQueryGadgets.php89
-rw-r--r--extensions/Gadgets/composer.json10
-rw-r--r--extensions/Gadgets/extension.json42
-rw-r--r--extensions/Gadgets/i18n/ast.json23
-rw-r--r--extensions/Gadgets/i18n/be-tarask.json4
-rw-r--r--extensions/Gadgets/i18n/bho.json8
-rw-r--r--extensions/Gadgets/i18n/bn.json9
-rw-r--r--extensions/Gadgets/i18n/bs.json5
-rw-r--r--extensions/Gadgets/i18n/ca.json6
-rw-r--r--extensions/Gadgets/i18n/ce.json2
-rw-r--r--extensions/Gadgets/i18n/cs.json7
-rw-r--r--extensions/Gadgets/i18n/cv.json8
-rw-r--r--extensions/Gadgets/i18n/de.json17
-rw-r--r--extensions/Gadgets/i18n/dty.json9
-rw-r--r--extensions/Gadgets/i18n/el.json49
-rw-r--r--extensions/Gadgets/i18n/en.json7
-rw-r--r--extensions/Gadgets/i18n/es.json12
-rw-r--r--extensions/Gadgets/i18n/et.json23
-rw-r--r--extensions/Gadgets/i18n/eu.json8
-rw-r--r--extensions/Gadgets/i18n/fa.json4
-rw-r--r--extensions/Gadgets/i18n/fo.json13
-rw-r--r--extensions/Gadgets/i18n/fr.json30
-rw-r--r--extensions/Gadgets/i18n/gl.json18
-rw-r--r--extensions/Gadgets/i18n/he.json23
-rw-r--r--extensions/Gadgets/i18n/hi.json13
-rw-r--r--extensions/Gadgets/i18n/hu.json1
-rw-r--r--extensions/Gadgets/i18n/id.json2
-rw-r--r--extensions/Gadgets/i18n/ilo.json19
-rw-r--r--extensions/Gadgets/i18n/it.json9
-rw-r--r--extensions/Gadgets/i18n/jut.json11
-rw-r--r--extensions/Gadgets/i18n/kk-cyrl.json2
-rw-r--r--extensions/Gadgets/i18n/ko.json10
-rw-r--r--extensions/Gadgets/i18n/ksh.json12
-rw-r--r--extensions/Gadgets/i18n/lb.json6
-rw-r--r--extensions/Gadgets/i18n/lt.json32
-rw-r--r--extensions/Gadgets/i18n/mk.json7
-rw-r--r--extensions/Gadgets/i18n/nap.json44
-rw-r--r--extensions/Gadgets/i18n/ne.json7
-rw-r--r--extensions/Gadgets/i18n/nl.json21
-rw-r--r--extensions/Gadgets/i18n/olo.json14
-rw-r--r--extensions/Gadgets/i18n/pl.json9
-rw-r--r--extensions/Gadgets/i18n/pt-br.json5
-rw-r--r--extensions/Gadgets/i18n/qqq.json7
-rw-r--r--extensions/Gadgets/i18n/ru.json11
-rw-r--r--extensions/Gadgets/i18n/sa.json7
-rw-r--r--extensions/Gadgets/i18n/sah.json10
-rw-r--r--extensions/Gadgets/i18n/shn.json11
-rw-r--r--extensions/Gadgets/i18n/sq.json7
-rw-r--r--extensions/Gadgets/i18n/sr-ec.json7
-rw-r--r--extensions/Gadgets/i18n/tr.json21
-rw-r--r--extensions/Gadgets/i18n/uk.json27
-rw-r--r--extensions/Gadgets/i18n/vi.json7
-rw-r--r--extensions/Gadgets/i18n/xmf.json11
-rw-r--r--extensions/Gadgets/i18n/zh-hans.json7
-rw-r--r--extensions/Gadgets/i18n/zh-hant.json25
-rw-r--r--extensions/Gadgets/includes/GadgetRepo.php63
-rw-r--r--extensions/Gadgets/includes/GadgetResourceLoaderModule.php61
-rw-r--r--extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php233
-rw-r--r--extensions/Gadgets/tests/GadgetTest.php35
67 files changed, 1287 insertions, 541 deletions
diff --git a/extensions/Gadgets/GadgetHooks.php b/extensions/Gadgets/GadgetHooks.php
index 64c7a3f4..8c39394c 100644
--- a/extensions/Gadgets/GadgetHooks.php
+++ b/extensions/Gadgets/GadgetHooks.php
@@ -20,6 +20,7 @@
*
* @file
*/
+use WrappedString\WrappedString;
class GadgetHooks {
/**
@@ -33,8 +34,11 @@ class GadgetHooks {
public static function articleSaveComplete( $article, $user, $text ) {
// update cache if MediaWiki:Gadgets-definition was edited
$title = $article->getTitle();
- if ( $title->getNamespace() == NS_MEDIAWIKI && $title->getText() == 'Gadgets-definition' ) {
- Gadget::loadStructuredList( $text );
+ $repo = GadgetRepo::singleton();
+ if ( $title->getNamespace() == NS_MEDIAWIKI && $title->getText() == 'Gadgets-definition'
+ && $repo instanceof MediaWikiGadgetsDefinitionRepo
+ ) {
+ $repo->purgeDefinitionCache();
}
return true;
}
@@ -45,7 +49,7 @@ class GadgetHooks {
* @return bool
*/
public static function userGetDefaultOptions( &$defaultOptions ) {
- $gadgets = Gadget::loadStructuredList();
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
if ( !$gadgets ) {
return true;
}
@@ -71,7 +75,7 @@ class GadgetHooks {
* @return bool
*/
public static function getPreferences( $user, &$preferences ) {
- $gadgets = Gadget::loadStructuredList();
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
if ( !$gadgets ) {
return true;
}
@@ -85,7 +89,7 @@ class GadgetHooks {
* @var $gadget Gadget
*/
foreach ( $thisSection as $gadget ) {
- if ( $gadget->isAllowed( $user ) ) {
+ if ( !$gadget->isHidden() && $gadget->isAllowed( $user ) ) {
$gname = $gadget->getName();
# bug 30182: dir="auto" because it's often not translated
$desc = '<span dir="auto">' . $gadget->getDescription() . '</span>';
@@ -138,22 +142,21 @@ class GadgetHooks {
* @return bool
*/
public static function registerModules( &$resourceLoader ) {
- $gadgets = Gadget::loadList();
- if ( !$gadgets ) {
+ $repo = GadgetRepo::singleton();
+ $ids = $repo->getGadgetIds();
+ if ( !$ids ) {
return true;
}
- /**
- * @var $g Gadget
- */
- foreach ( $gadgets as $g ) {
+ foreach ( $ids as $id ) {
+ $g = $repo->getGadget( $id );
$module = $g->getModule();
if ( $module ) {
$resourceLoader->register( $g->getModuleName(), $module );
}
}
- return true;
+ return true;
}
/**
@@ -162,77 +165,52 @@ class GadgetHooks {
* @return bool
*/
public static function beforePageDisplay( $out ) {
- $gadgets = Gadget::loadList();
- if ( !$gadgets ) {
+ $repo = GadgetRepo::singleton();
+ $ids = $repo->getGadgetIds();
+ if ( !$ids ) {
return true;
}
$lb = new LinkBatch();
$lb->setCaller( __METHOD__ );
- $pages = array();
+ $enabledLegacyGadgets = array();
/**
* @var $gadget Gadget
*/
$user = $out->getUser();
- foreach ( $gadgets as $gadget ) {
+ foreach ( $ids as $id ) {
+ $gadget = $repo->getGadget( $id );
if ( $gadget->isEnabled( $user ) && $gadget->isAllowed( $user ) ) {
if ( $gadget->hasModule() ) {
$out->addModuleStyles( $gadget->getModuleName() );
$out->addModules( $gadget->getModuleName() );
}
- foreach ( $gadget->getLegacyScripts() as $page ) {
- $lb->add( NS_MEDIAWIKI, $page );
- $pages[] = $page;
+ if ( $gadget->getLegacyScripts() ) {
+ $enabledLegacyGadgets[] = $id;
}
}
}
-
- // Allow other extensions, e.g. MobileFrontend, to disallow legacy gadgets
- if ( wfRunHooks( 'Gadgets::allowLegacy', array( $out->getContext() ) ) ) {
- $lb->execute( __METHOD__ );
-
- $done = array();
-
- foreach ( $pages as $page ) {
- if ( isset( $done[$page] ) ) {
- continue;
- }
-
- $done[$page] = true;
- self::applyScript( $page, $out );
- }
+ $strings = array();
+ foreach ( $enabledLegacyGadgets as $id ) {
+ $strings[] = self::makeLegacyWarning( $id );
}
+ $out->addHTML( WrappedString::join( "\n", $strings ) );
return true;
}
- /**
- * Adds one legacy script to output.
- *
- * @param string $page Unprefixed page title
- * @param OutputPage $out
- */
- private static function applyScript( $page, $out ) {
- global $wgJsMimeType;
-
- # bug 22929: disable gadgets on sensitive pages. Scripts loaded through the
- # ResourceLoader handle this in OutputPage::getModules()
- # TODO: make this extension load everything via RL, then we don't need to worry
- # about any of this.
- if ( $out->getAllowedModules( ResourceLoaderModule::TYPE_SCRIPTS ) < ResourceLoaderModule::ORIGIN_USER_SITEWIDE ) {
- return;
- }
-
- $t = Title::makeTitleSafe( NS_MEDIAWIKI, $page );
- if ( !$t ) {
- return;
- }
+ private static function makeLegacyWarning( $id ) {
+ $special = SpecialPage::getTitleFor( 'Gadgets' );
- $u = $t->getLocalURL( 'action=raw&ctype=' . $wgJsMimeType );
- $out->addScriptFile( $u, $t->getLatestRevID() );
+ return ResourceLoader::makeInlineScript(
+ Xml::encodeJsCall( 'mw.log.warn', array(
+ "Gadget \"$id\" was not loaded. Please migrate it to use ResourceLoader. " .
+ ' See <' . $special->getCanonicalURL() . '>.'
+ ) )
+ );
}
/**
diff --git a/extensions/Gadgets/Gadgets.alias.php b/extensions/Gadgets/Gadgets.alias.php
index 46c7852b..e8f32cfb 100644
--- a/extensions/Gadgets/Gadgets.alias.php
+++ b/extensions/Gadgets/Gadgets.alias.php
@@ -24,7 +24,7 @@ $specialPageAliases['ar'] = array(
'Gadgets' => array( 'إضافات' ),
);
-/** Egyptian Spoken Arabic (مصرى) */
+/** Egyptian Arabic (مصرى) */
$specialPageAliases['arz'] = array(
'Gadgets' => array( 'ادوات' ),
);
@@ -69,7 +69,7 @@ $specialPageAliases['ce'] = array(
'Gadgets' => array( 'Гаджеташ' ),
);
-/** Sorani Kurdish (کوردی) */
+/** Central Kurdish (کوردیی ناوەندی) */
$specialPageAliases['ckb'] = array(
'Gadgets' => array( 'ئامرازەکان' ),
);
@@ -129,7 +129,7 @@ $specialPageAliases['fi'] = array(
'Gadgets' => array( 'Pienoisohjelmat' ),
);
-/** Franco-Provençal (arpetan) */
+/** Arpitan (arpetan) */
$specialPageAliases['frp'] = array(
'Gadgets' => array( 'Outils' ),
);
@@ -214,9 +214,9 @@ $specialPageAliases['lb'] = array(
'Gadgets' => array( 'Gadgeten' ),
);
-/** لوری (لوری) */
+/** Northern Luri (لۊری شومالی) */
$specialPageAliases['lrc'] = array(
- 'Gadgets' => array( 'گجتیا' ),
+ 'Gadgets' => array( 'گأجئتیا' ),
);
/** Minangkabau (Baso Minangkabau) */
diff --git a/extensions/Gadgets/Gadgets.namespaces.php b/extensions/Gadgets/Gadgets.namespaces.php
new file mode 100644
index 00000000..4e355488
--- /dev/null
+++ b/extensions/Gadgets/Gadgets.namespaces.php
@@ -0,0 +1,122 @@
+<?php
+$namespaceNames = array();
+
+// For wikis without Gadgets installed.
+if ( !defined( 'NS_GADGET' ) ) {
+ define( 'NS_GADGET', 2300 );
+ define( 'NS_GADGET_TALK', 2301 );
+ define( 'NS_GADGET_DEFINITION', 2302 );
+ define( 'NS_GADGET_DEFINITION_TALK', 2303 );
+}
+
+$namespaceNames['ar'] = array(
+ NS_GADGET => 'إضافة',
+ NS_GADGET_TALK => 'نقاش_الإضافة',
+ NS_GADGET_DEFINITION => 'تعريف_الإضافة',
+ NS_GADGET_DEFINITION_TALK => 'نقاش_تعريف_الإضافة',
+);
+
+$namespaceNames['azb'] = array(
+ NS_GADGET => 'آلت',
+ NS_GADGET_TALK => 'آلت_دانیشیغی',
+ NS_GADGET_DEFINITION => 'آلت_آچیقلاماسی',
+ NS_GADGET_DEFINITION_TALK => 'آلت_آچیقلاماسی_دانیشیغی',
+);
+
+$namespaceNames['bgn'] = array(
+ NS_GADGET => 'وسیله_ئان',
+ NS_GADGET_TALK => 'وسیله_ئان_ئی_گپ',
+ NS_GADGET_DEFINITION => 'وسیله_ئانی_شرح',
+ NS_GADGET_DEFINITION_TALK => 'وسیله_ئانی_شرح_ئی_گپ',
+);
+
+$namespaceNames['ckb'] = array(
+ NS_GADGET => 'ئامراز',
+ NS_GADGET_TALK => 'وتووێژی_ئامراز',
+ NS_GADGET_DEFINITION => 'پێناسه‌ی_ئامراز',
+ NS_GADGET_DEFINITION_TALK => 'وتووێژی_پێناسه‌ی_ئامراز',
+);
+
+$namespaceNames['de'] = array(
+ NS_GADGET => 'Gadget',
+ NS_GADGET_TALK => 'Gadget_Diskussion',
+ NS_GADGET_DEFINITION => 'Gadget-Definition',
+ NS_GADGET_DEFINITION_TALK => 'Gadget-Definition_Diskussion',
+);
+
+$namespaceNames['en'] = array(
+ NS_GADGET => 'Gadget',
+ NS_GADGET_TALK => 'Gadget_talk',
+ NS_GADGET_DEFINITION => 'Gadget_definition',
+ NS_GADGET_DEFINITION_TALK => 'Gadget_definition_talk',
+);
+
+$namespaceNames['fa'] = array(
+ NS_GADGET => 'ابزار',
+ NS_GADGET_TALK => 'بحث_ابزار',
+ NS_GADGET_DEFINITION => 'توضیحات_ابزار',
+ NS_GADGET_DEFINITION_TALK => 'بحث_توضیحات_ابزار',
+);
+
+$namespaceNames['he'] = array(
+ NS_GADGET => 'גאדג\'ט',
+ NS_GADGET_TALK => 'שיחת_גאדג\'ט',
+ NS_GADGET_DEFINITION => 'הגדרת_גאדג\'ט',
+ NS_GADGET_DEFINITION_TALK => 'שיחת_הגדרת_גאדג\'ט',
+);
+
+$namespaceNames['it'] = array(
+ NS_GADGET => 'Accessorio',
+ NS_GADGET_TALK => 'Discussioni_accessorio',
+ NS_GADGET_DEFINITION => 'Definizione_accessorio',
+ NS_GADGET_DEFINITION_TALK => 'Discussioni_definizione_accessorio',
+);
+
+$namespaceNames['ko'] = array(
+ NS_GADGET => '소도구',
+ NS_GADGET_TALK => '소도구토론',
+ NS_GADGET_DEFINITION => '소도구정의',
+ NS_GADGET_DEFINITION_TALK => '소도구정의토론',
+);
+
+$namespaceNames['lrc'] = array(
+ NS_GADGET => 'گأجئت',
+ NS_GADGET_TALK => 'چأک_چئنە_گأجئت',
+ NS_GADGET_DEFINITION => 'توضییا_گأجئت',
+ NS_GADGET_DEFINITION_TALK => 'چأک_چئنە_توضییا_گأجئت',
+);
+
+$namespaceNames['mzn'] = array(
+ NS_GADGET => 'گجت',
+ NS_GADGET_TALK => 'گجت_گپ',
+ NS_GADGET_DEFINITION => 'گجت_توضیحات',
+ NS_GADGET_DEFINITION_TALK => 'گجت_توضیحات_گپ',
+);
+
+$namespaceNames['or'] = array(
+ NS_GADGET => 'ଗ୍ୟାଜେଟ',
+ NS_GADGET_TALK => 'ଗ୍ୟାଜେଟ_ଆଲୋଚନା',
+ NS_GADGET_DEFINITION => 'ଗ୍ୟାଜେଟ_ସଂଜ୍ଞା',
+ NS_GADGET_DEFINITION_TALK => 'ଗ୍ୟାଜେଟ_ସଂଜ୍ଞା_ଆଲୋଚନା',
+);
+
+$namespaceNames['pl'] = array(
+ NS_GADGET => 'Gadżet',
+ NS_GADGET_TALK => 'Dyskusja_gadżetu',
+ NS_GADGET_DEFINITION => 'Definicja_gadżetu',
+ NS_GADGET_DEFINITION_TALK => 'Dyskusja_definicji_gadżetu',
+);
+
+$namespaceNames['ur'] = array(
+ NS_GADGET => 'آلہ',
+ NS_GADGET_TALK => 'تبادلۂ_خیال_آلہ',
+ NS_GADGET_DEFINITION => 'تعریف_آلہ',
+ NS_GADGET_DEFINITION_TALK => 'تبادلۂ_خیال_تعریف_آلہ',
+);
+
+$namespaceNames['vi'] = array(
+ NS_GADGET => 'Tiện_ích',
+ NS_GADGET_TALK => 'Thảo_luận_Tiện_ích',
+ NS_GADGET_DEFINITION => 'Định_nghĩa_tiện_ích',
+ NS_GADGET_DEFINITION_TALK => 'Thảo_luận_Định_nghĩa_tiện_ích',
+);
diff --git a/extensions/Gadgets/Gadgets.php b/extensions/Gadgets/Gadgets.php
index 2b172307..723ce293 100644
--- a/extensions/Gadgets/Gadgets.php
+++ b/extensions/Gadgets/Gadgets.php
@@ -5,6 +5,7 @@ if ( function_exists( 'wfLoadExtension' ) ) {
// Keep i18n globals so mergeMessageFileList.php doesn't break
$wgMessagesDirs['Gadgets'] = __DIR__ . '/i18n';
$wgExtensionMessagesFiles['GadgetsAlias'] = __DIR__ . '/Gadgets.alias.php';
+ $wgExtensionMessagesFiles['GadgetsNamespaces'] = __DIR__ . '/Gadgets.namespaces.php';
/* wfWarn(
'Deprecated PHP entry point used for Gadgets extension. Please use wfLoadExtension instead, ' .
'see https://www.mediawiki.org/wiki/Extension_registration for more details.'
diff --git a/extensions/Gadgets/Gadgets_body.php b/extensions/Gadgets/Gadgets_body.php
index d07a0859..d3483e26 100644
--- a/extensions/Gadgets/Gadgets_body.php
+++ b/extensions/Gadgets/Gadgets_body.php
@@ -19,11 +19,14 @@ class Gadget {
/**
* Increment this when changing class structure
*/
- const GADGET_CLASS_VERSION = 7;
+ const GADGET_CLASS_VERSION = 9;
+
+ const CACHE_TTL = 86400;
private $scripts = array(),
$styles = array(),
$dependencies = array(),
+ $messages = array(),
$name,
$definition,
$resourceLoaded = false,
@@ -31,80 +34,49 @@ class Gadget {
$requiredSkins = array(),
$targets = array( 'desktop' ),
$onByDefault = false,
+ $hidden = false,
$position = 'bottom',
$category;
- /**
- * Creates an instance of this class from definition in MediaWiki:Gadgets-definition
- * @param $definition String: Gadget definition
- * @return Gadget|bool Instance of Gadget class or false if $definition is invalid
- */
- public static function newFromDefinition( $definition ) {
- $m = array();
- if ( !preg_match( '/^\*+ *([a-zA-Z](?:[-_:.\w\d ]*[a-zA-Z0-9])?)(\s*\[.*?\])?\s*((\|[^|]*)+)\s*$/', $definition, $m ) ) {
- return false;
- }
- // NOTE: the gadget name is used as part of the name of a form field,
- // and must follow the rules defined in http://www.w3.org/TR/html4/types.html#type-cdata
- // Also, title-normalization applies.
- $gadget = new Gadget();
- $gadget->name = trim( str_replace( ' ', '_', $m[1] ) );
- // If the name is too long, then RL will throw an MWException when
- // we try to register the module
- if ( !ResourceLoader::isValidModuleName( $gadget->getModuleName() ) ) {
- return false;
- }
- $gadget->definition = $definition;
- $options = trim( $m[2], ' []' );
-
- foreach ( preg_split( '/\s*\|\s*/', $options, -1, PREG_SPLIT_NO_EMPTY ) as $option ) {
- $arr = preg_split( '/\s*=\s*/', $option, 2 );
- $option = $arr[0];
- if ( isset( $arr[1] ) ) {
- $params = explode( ',', $arr[1] );
- $params = array_map( 'trim', $params );
- } else {
- $params = array();
- }
+ /** @var array|bool Result of loadStructuredList() */
+ private static $definitionCache;
- switch ( $option ) {
- case 'ResourceLoader':
- $gadget->resourceLoaded = true;
- break;
+ public function __construct( array $options ) {
+ foreach ( $options as $member => $option ) {
+ switch ( $member ) {
+ case 'scripts':
+ case 'styles':
case 'dependencies':
- $gadget->dependencies = $params;
- break;
- case 'rights':
- $gadget->requiredRights = $params;
- break;
- case 'skins':
- $gadget->requiredSkins = $params;
- break;
- case 'default':
- $gadget->onByDefault = true;
- break;
+ case 'messages':
+ case 'name':
+ case 'definition':
+ case 'resourceLoaded':
+ case 'requiredRights':
+ case 'requiredSkins':
case 'targets':
- $gadget->targets = $params;
- break;
- case 'top':
- $gadget->position = 'top';
+ case 'onByDefault':
+ case 'position':
+ case 'hidden':
+ case 'category':
+ $this->{$member} = $option;
break;
+ default:
+ throw new InvalidArgumentException( "Unrecognized '$member' parameter" );
}
}
+ }
- foreach ( preg_split( '/\s*\|\s*/', $m[3], -1, PREG_SPLIT_NO_EMPTY ) as $page ) {
- $page = "Gadget-$page";
-
- if ( preg_match( '/\.js/', $page ) ) {
- $gadget->scripts[] = $page;
- } elseif ( preg_match( '/\.css/', $page ) ) {
- $gadget->styles[] = $page;
- }
- }
-
- return $gadget;
+ /**
+ * Whether the provided gadget id is valid
+ *
+ * @param string $id
+ * @return bool
+ */
+ public static function isValidGadgetID( $id ) {
+ return strlen( $id ) > 0 && ResourceLoader::isValidModuleName( "ext.gadget.$id" );
}
+
/**
* @return String: Gadget name
*/
@@ -169,6 +141,13 @@ class Gadget {
}
/**
+ * @return bool
+ */
+ public function isHidden() {
+ return $this->hidden;
+ }
+
+ /**
* @return Boolean: Whether all of this gadget's JS components support ResourceLoader
*/
public function supportsResourceLoader() {
@@ -234,7 +213,13 @@ class Gadget {
return null;
}
- return new GadgetResourceLoaderModule( $pages, $this->dependencies, $this->targets, $this->position );
+ return new GadgetResourceLoaderModule(
+ $pages,
+ $this->dependencies,
+ $this->targets,
+ $this->position,
+ $this->messages
+ );
}
/**
@@ -257,6 +242,13 @@ class Gadget {
}
/**
+ * @return array
+ */
+ public function getMessages() {
+ return $this->messages;
+ }
+
+ /**
* Returns array of permissions required by this gadget
* @return Array
*/
@@ -279,190 +271,5 @@ class Gadget {
public function getPosition() {
return $this->position;
}
-
- /**
- * Loads and returns a list of all gadgets
- * @return Mixed: Array of gadgets or false
- */
- public static function loadList() {
- static $gadgets = null;
-
- if ( $gadgets !== null ) {
- return $gadgets;
- }
-
- $struct = self::loadStructuredList();
-
- if ( !$struct ) {
- $gadgets = $struct;
- return $gadgets;
- }
-
- $gadgets = array();
- foreach ( $struct as $entries ) {
- $gadgets = array_merge( $gadgets, $entries );
- }
-
- return $gadgets;
- }
-
- /**
- * Checks whether gadget list from cache can be used.
- * @param $gadgets array
- * @return Boolean
- */
- private static function isValidList( $gadgets ) {
- if ( !is_array( $gadgets ) ) {
- return false;
- }
- // Check if we have an array of gadgets
- // One check is enough
- /**
- * @var $g Gadget
- */
- foreach ( $gadgets as $list ) {
- foreach ( $list as $g ) {
- return $g instanceof Gadget;
- }
- }
-
- return true; // empty array
- }
-
- /**
- * Loads list of gadgets and returns it as associative array of sections with gadgets
- * e.g. array( 'sectionnname1' => array( $gadget1, $gadget2 ),
- * 'sectionnname2' => array( $gadget3 ) );
- * @param $forceNewText String: New text of MediaWiki:gadgets-definition. If specified, will
- * force a purge of cache and recreation of the gadget list.
- * @return Mixed: Array or false
- */
- public static function loadStructuredList( $forceNewText = null ) {
- global $wgMemc, $wgGadgetsCaching;
-
- static $gadgets = null;
- if ( $gadgets !== null && $forceNewText === null ) {
- return $gadgets;
- }
-
- $key = wfMemcKey( 'gadgets-definition', self::GADGET_CLASS_VERSION );
-
- if ( $forceNewText === null ) {
- if ( $wgGadgetsCaching ) {
- // cached?
- $gadgets = $wgMemc->get( $key );
- if ( self::isValidList( $gadgets ) ) {
- return $gadgets;
- }
- }
-
- $g = wfMessage( "gadgets-definition" )->inContentLanguage();
- if ( !$g->exists() ) {
- $gadgets = false;
- return $gadgets;
- }
- $g = $g->plain();
- } else {
- $g = $forceNewText;
- }
-
- $gadgets = self::listFromDefinition( $g );
-
- if ( !count( $gadgets ) ) {
- // Don't cache in case we couldn't find any gadgets. Bug 37228
- $gadgets = false;
- return $gadgets;
- }
-
- if ( !$wgGadgetsCaching ) {
- return $gadgets;
- }
-
- // cache for a while. gets purged automatically when MediaWiki:Gadgets-definition is edited
- $wgMemc->set( $key, $gadgets, 60 * 60 * 24 );
- $source = $forceNewText !== null ? 'input text' : 'MediaWiki:Gadgets-definition';
- wfDebug( __METHOD__ . ": $source parsed, cache entry $key updated\n" );
-
- return $gadgets;
- }
-
- /**
- * Generates a structured list of Gadget objects from a definition
- *
- * @param $definition
- * @return array Array( category => Array( name => Gadget ) )
- */
- private static function listFromDefinition( $definition ) {
- $definition = preg_replace( '/<!--.*?-->/s', '', $definition );
- $lines = preg_split( '/(\r\n|\r|\n)+/', $definition );
-
- $gadgets = array();
- $section = '';
-
- foreach ( $lines as $line ) {
- $m = array();
- if ( preg_match( '/^==+ *([^*:\s|]+?)\s*==+\s*$/', $line, $m ) ) {
- $section = $m[1];
- } else {
- $gadget = self::newFromDefinition( $line );
- if ( $gadget ) {
- $gadgets[$section][$gadget->getName()] = $gadget;
- $gadget->category = $section;
- }
- }
- }
- return $gadgets;
- }
}
-/**
- * Class representing a list of resources for one gadget
- */
-class GadgetResourceLoaderModule extends ResourceLoaderWikiModule {
- private $pages, $dependencies;
-
- /**
- * Creates an instance of this class
- *
- * @param $pages Array: Associative array of pages in ResourceLoaderWikiModule-compatible
- * format, for example:
- * array(
- * 'MediaWiki:Gadget-foo.js' => array( 'type' => 'script' ),
- * 'MediaWiki:Gadget-foo.css' => array( 'type' => 'style' ),
- * )
- * @param $dependencies Array: Names of resources this module depends on
- * @param $targets Array: List of targets this module support
- * @param $position String: 'bottom' or 'top'
- */
- public function __construct( $pages, $dependencies, $targets, $position ) {
- $this->pages = $pages;
- $this->dependencies = $dependencies;
- $this->targets = $targets;
- $this->position = $position;
- }
-
- /**
- * Overrides the abstract function from ResourceLoaderWikiModule class
- * @param $context ResourceLoaderContext
- * @return Array: $pages passed to __construct()
- */
- protected function getPages( ResourceLoaderContext $context ) {
- return $this->pages;
- }
-
- /**
- * Overrides ResourceLoaderModule::getDependencies()
- * @return Array: Names of resources this module depends on
- */
- public function getDependencies() {
- return $this->dependencies;
- }
-
- /**
- * Overrides ResourceLoaderModule::getPosition()
- * @return String: 'bottom' or 'top'
- */
- public function getPosition() {
- return $this->position;
- }
-}
diff --git a/extensions/Gadgets/Gruntfile.js b/extensions/Gadgets/Gruntfile.js
new file mode 100644
index 00000000..5a87e7b6
--- /dev/null
+++ b/extensions/Gadgets/Gruntfile.js
@@ -0,0 +1,19 @@
+/*jshint node:true */
+module.exports = function ( grunt ) {
+ grunt.loadNpmTasks( 'grunt-banana-checker' );
+ grunt.loadNpmTasks( 'grunt-jsonlint' );
+
+ var conf = grunt.file.readJSON( 'extension.json' );
+ grunt.initConfig( {
+ banana: conf.MessagesDirs,
+ jsonlint: {
+ all: [
+ '**/*.json',
+ '!node_modules/**'
+ ]
+ }
+ } );
+
+ grunt.registerTask( 'test', [ 'jsonlint', 'banana' ] );
+ grunt.registerTask( 'default', 'test' );
+};
diff --git a/extensions/Gadgets/SpecialGadgets.php b/extensions/Gadgets/SpecialGadgets.php
index 3cbce480..a53160f6 100644
--- a/extensions/Gadgets/SpecialGadgets.php
+++ b/extensions/Gadgets/SpecialGadgets.php
@@ -10,10 +10,7 @@
*/
class SpecialGadgets extends SpecialPage {
- /**
- * Constructor
- */
- function __construct() {
+ public function __construct() {
parent::__construct( 'Gadgets', '', true );
}
@@ -21,7 +18,7 @@ class SpecialGadgets extends SpecialPage {
* Main execution function
* @param $par array Parameters passed to the page
*/
- function execute( $par ) {
+ public function execute( $par ) {
$parts = explode( '/', $par );
if ( count( $parts ) == 2 && $parts[0] == 'export' ) {
@@ -42,7 +39,7 @@ class SpecialGadgets extends SpecialPage {
$output->setPagetitle( $this->msg( 'gadgets-title' ) );
$output->addWikiMsg( 'gadgets-pagetext' );
- $gadgets = Gadget::loadStructuredList();
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
if ( !$gadgets ) {
return;
}
@@ -125,6 +122,13 @@ class SpecialGadgets extends SpecialPage {
$lnk[] = Linker::link( $t, htmlspecialchars( $t->getText() ) );
}
$output->addHTML( $lang->commaList( $lnk ) );
+ if ( $gadget->getLegacyScripts() ) {
+ $output->addHTML( '<br />' . Html::rawElement(
+ 'span',
+ array( 'class' => 'mw-gadget-legacy errorbox' ),
+ $this->msg( 'gadgets-legacy' )->parse()
+ ) );
+ }
$rights = array();
foreach ( $gadget->getRequiredRights() as $right ) {
@@ -174,16 +178,13 @@ class SpecialGadgets extends SpecialPage {
global $wgScript;
$output = $this->getOutput();
- $gadgets = Gadget::loadList();
- if ( !isset( $gadgets[$gadget] ) ) {
+ try {
+ $g = GadgetRepo::singleton()->getGadget( $gadget );
+ } catch ( InvalidArgumentException $e ) {
$output->showErrorPage( 'error', 'gadgets-not-found', array( $gadget ) );
return;
}
- /**
- * @var $g Gadget
- */
- $g = $gadgets[$gadget];
$this->setHeaders();
$output->setPagetitle( $this->msg( 'gadgets-export-title' ) );
$output->addWikiMsg( 'gadgets-export-text', $gadget, $g->getDefinition() );
diff --git a/extensions/Gadgets/api/ApiQueryGadgetCategories.php b/extensions/Gadgets/api/ApiQueryGadgetCategories.php
index 23257f12..82c7bff8 100644
--- a/extensions/Gadgets/api/ApiQueryGadgetCategories.php
+++ b/extensions/Gadgets/api/ApiQueryGadgetCategories.php
@@ -20,11 +20,18 @@
*/
class ApiQueryGadgetCategories extends ApiQueryBase {
- private $props,
- $neededNames;
+ /**
+ * @var array
+ */
+ private $props;
+
+ /**
+ * @var array|bool
+ */
+ private $neededNames;
- public function __construct( $query, $moduleName ) {
- parent::__construct( $query, $moduleName, 'gc' );
+ public function __construct( ApiQuery $queryModule, $moduleName ) {
+ parent::__construct( $queryModule, $moduleName, 'gc' );
}
public function execute() {
@@ -42,7 +49,7 @@ class ApiQueryGadgetCategories extends ApiQueryBase {
private function getList() {
$data = array();
$result = $this->getResult();
- $gadgets = Gadget::loadStructuredList();
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
if ( $gadgets ) {
foreach ( $gadgets as $category => $list ) {
@@ -89,43 +96,6 @@ class ApiQueryGadgetCategories extends ApiQueryBase {
}
/**
- * @deprecated since MediaWiki core 1.25
- */
- public function getDescription() {
- return 'Returns a list of gadget categories';
- }
-
- /**
- * @deprecated since MediaWiki core 1.25
- */
- public function getParamDescription() {
- return array(
- 'prop' => array(
- 'What gadget category information to get:',
- ' name - Internal category name',
- ' title - Category title',
- ' members - Number of gadgets in category',
- ),
- 'names' => 'Name(s) of categories to retrieve',
- );
- }
-
- /**
- * @deprecated since MediaWiki core 1.25
- */
- public function getExamples() {
- $params = $this->getAllowedParams();
- $allProps = implode( '|', $params['prop'][ApiBase::PARAM_TYPE] );
-
- return array(
- 'Get a list of existing gadget categories:',
- ' api.php?action=query&list=gadgetcategories',
- 'Get all information about categories named "foo" and "bar":',
- " api.php?action=query&list=gadgetcategories&gcnames=foo|bar&gcprop=$allProps",
- );
- }
-
- /**
* @see ApiBase::getExamplesMessages()
*/
protected function getExamplesMessages() {
diff --git a/extensions/Gadgets/api/ApiQueryGadgets.php b/extensions/Gadgets/api/ApiQueryGadgets.php
index 46535964..383faf09 100644
--- a/extensions/Gadgets/api/ApiQueryGadgets.php
+++ b/extensions/Gadgets/api/ApiQueryGadgets.php
@@ -20,14 +20,33 @@
*/
class ApiQueryGadgets extends ApiQueryBase {
- private $props,
- $categories,
- $neededIds,
- $listAllowed,
- $listEnabled;
-
- public function __construct( $query, $moduleName ) {
- parent::__construct( $query, $moduleName, 'ga' );
+ /**
+ * @var array
+ */
+ private $props;
+
+ /**
+ * @var array|bool
+ */
+ private $categories;
+
+ /**
+ * @var array|bool
+ */
+ private $neededIds;
+
+ /**
+ * @var bool
+ */
+ private $listAllowed;
+
+ /**
+ * @var bool
+ */
+ private $listEnabled;
+
+ public function __construct( ApiQuery $queryModule, $moduleName ) {
+ parent::__construct( $queryModule, $moduleName, 'ga' );
}
public function execute() {
@@ -52,7 +71,7 @@ class ApiQueryGadgets extends ApiQueryBase {
* @return array
*/
private function getList() {
- $gadgets = Gadget::loadStructuredList();
+ $gadgets = GadgetRepo::singleton()->getStructuredList();
if ( $gadgets === false ) {
return array();
@@ -128,15 +147,16 @@ class ApiQueryGadgets extends ApiQueryBase {
'rights' => $g->getRequiredRights(),
'skins' => $g->getRequiredSkins(),
'default' => $g->isOnByDefault(),
- 'hidden' => false, // Only exists in RL2 branch
- 'shared' => false, // Only exists in RL2 branch
+ 'hidden' => $g->isHidden(),
+ 'shared' => false,
'category' => $g->getCategory(),
+ 'legacyscripts' => (bool)$g->getLegacyScripts(),
),
'module' => array(
'scripts' => $g->getScripts(),
'styles' => $g->getStyles(),
'dependencies' => $g->getDependencies(),
- 'messages' => array(), // Only exists in RL2 branch
+ 'messages' => $g->getMessages(),
)
);
}
@@ -187,51 +207,6 @@ class ApiQueryGadgets extends ApiQueryBase {
}
/**
- * @deprecated since MediaWiki core 1.25
- */
- public function getDescription() {
- return 'Returns a list of gadgets used on this wiki';
- }
-
- /**
- * @deprecated since MediaWiki core 1.25
- */
- public function getParamDescription() {
- return array(
- 'prop' => array(
- 'What gadget information to get:',
- ' id - Internal gadget ID',
- ' metadata - The gadget metadata',
- ' desc - Gadget description transformed into HTML (can be slow, use only if really needed)',
- ),
- 'categories' => 'Gadgets from what categories to retrieve',
- 'ids' => 'ID(s) of gadgets to retrieve',
- 'allowedonly' => 'List only gadgets allowed to current user',
- 'enabledonly' => 'List only gadgets enabled by current user',
- );
- }
-
- /**
- * @deprecated since MediaWiki core 1.25
- */
- public function getExamples() {
- $params = $this->getAllowedParams();
- $allProps = implode( '|', $params['prop'][ApiBase::PARAM_TYPE] );
- return array(
- 'Get a list of gadgets along with their descriptions:',
- ' api.php?action=query&list=gadgets&gaprop=id|desc',
- 'Get a list of gadgets with all possible properties:',
- " api.php?action=query&list=gadgets&gaprop=$allProps",
- 'Get a list of gadgets belonging to category "foo":',
- ' api.php?action=query&list=gadgets&gacategories=foo',
- 'Get information about gadgets "foo" and "bar":',
- ' api.php?action=query&list=gadgets&gaids=foo|bar&gaprop=id|desc|metadata',
- 'Get a list of gadgets enabled by current user:',
- ' api.php?action=query&list=gadgets&gaenabledonly',
- );
- }
-
- /**
* @see ApiBase::getExamplesMessages()
*/
protected function getExamplesMessages() {
diff --git a/extensions/Gadgets/composer.json b/extensions/Gadgets/composer.json
new file mode 100644
index 00000000..fbffbafc
--- /dev/null
+++ b/extensions/Gadgets/composer.json
@@ -0,0 +1,10 @@
+{
+ "require-dev": {
+ "jakub-onderka/php-parallel-lint": "0.9"
+ },
+ "scripts": {
+ "test": [
+ "parallel-lint . --exclude node_modules --exclude vendor"
+ ]
+ }
+}
diff --git a/extensions/Gadgets/extension.json b/extensions/Gadgets/extension.json
index f8377ec2..423861d0 100644
--- a/extensions/Gadgets/extension.json
+++ b/extensions/Gadgets/extension.json
@@ -8,6 +8,35 @@
"descriptionmsg": "gadgets-desc",
"license-name": "GPL-2.0+",
"type": "other",
+ "namespaces": [
+ {
+ "id": 2300,
+ "constant": "NS_GADGET",
+ "name": "Gadget",
+ "protection": "gadgets-edit"
+ },
+ {
+ "id": 2301,
+ "constant": "NS_GADGET_TALK",
+ "name": "Gadget_talk"
+ },
+ {
+ "id": 2302,
+ "constant": "NS_GADGET_DEFINITION",
+ "name": "Gadget_definition",
+ "protection": "gadgets-definition-edit",
+ "capitallinkoverride": false
+ },
+ {
+ "id": 2303,
+ "constant": "NS_GADGET_DEFINITION_TALK",
+ "name": "Gadget_definition_talk"
+ }
+ ],
+ "AvailableRights": [
+ "gadgets-edit",
+ "gadgets-definition-edit"
+ ],
"SpecialPages": {
"Gadgets": "SpecialGadgets"
},
@@ -21,15 +50,18 @@
]
},
"ExtensionMessagesFiles": {
- "GadgetsAlias": "Gadgets.alias.php"
+ "GadgetsAlias": "Gadgets.alias.php",
+ "GadgetsNamespaces": "Gadgets.namespaces.php"
},
"AutoloadClasses": {
"ApiQueryGadgetCategories": "api/ApiQueryGadgetCategories.php",
"ApiQueryGadgets": "api/ApiQueryGadgets.php",
"Gadget": "Gadgets_body.php",
"GadgetHooks": "GadgetHooks.php",
- "GadgetResourceLoaderModule": "Gadgets_body.php",
- "SpecialGadgets": "SpecialGadgets.php"
+ "GadgetResourceLoaderModule": "includes/GadgetResourceLoaderModule.php",
+ "SpecialGadgets": "SpecialGadgets.php",
+ "GadgetRepo": "includes/GadgetRepo.php",
+ "MediaWikiGadgetsDefinitionRepo": "includes/MediaWikiGadgetsDefinitionRepo.php"
},
"Hooks": {
"ArticleSaveComplete": [
@@ -51,7 +83,5 @@
"GadgetHooks::onUnitTestsList"
]
},
- "config": {
- "GadgetsCaching": true
- }
+ "manifest_version": 1
}
diff --git a/extensions/Gadgets/i18n/ast.json b/extensions/Gadgets/i18n/ast.json
index 41543110..c289b01a 100644
--- a/extensions/Gadgets/i18n/ast.json
+++ b/extensions/Gadgets/i18n/ast.json
@@ -15,9 +15,30 @@
"gadgets-required-rights": "Requier {{PLURAL:$2|el siguiente permisu|los siguientes permisos}}:\n\n$1",
"gadgets-required-skins": "Disponible {{PLURAL:$2|nel aspeutu $1|nos siguientes aspeutos: $1}}.",
"gadgets-default": "Activáu para toos de mou predetermináu.",
+ "gadgets-legacy": "El gadget nun ta cargáu. Migra a ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Saber más])",
"gadgets-export": "Esportar",
"gadgets-export-title": "Esportación d'accesorios",
"gadgets-not-found": "Nun s'alcontró l'accesoriu \"$1\".",
"gadgets-export-text": "Pa esportar l'accesoriu $1, calca nel botón \"{{int:gadgets-export-download}}\", guarda'l ficheru descargáu,\nvete a Special:Import na wiki de destín y xúbilu. Darréu amiesta lo siguiente na páxina MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nHas de tener los permisos afayadizos na wiki de destín (incluyendo permisu pa editar los mensaxes del sistema) y tien de tar activada la importación dende los ficheros xubíos.",
- "gadgets-export-download": "Descargar"
+ "gadgets-export-download": "Descargar",
+ "apihelp-query+gadgetcategories-description": "Devuelve una llista de categoríes de gadgets.",
+ "apihelp-query+gadgetcategories-param-prop": "Qué información de categoría de gadget obtener:\n;name:Nome internu de la categoría.\n;title:Títulu de la categoría.\n;members:Númberu de gadgets na categoría.",
+ "apihelp-query+gadgetcategories-param-names": "Nomes de les categoríes a recuperar.",
+ "apihelp-query+gadgetcategories-example-1": "Obtener la llista de categoríes de gadgets esistentes",
+ "apihelp-query+gadgetcategories-example-2": "Obtener tola información sobro les categoríes llamaes «foo» y «bar»",
+ "apihelp-query+gadgets-description": "Devuelve la llista de gadgets que s'usen nesta wiki.",
+ "apihelp-query+gadgets-param-prop": "Qué información de gadget obtener:\n;id:Identificador internu del gadget.\n;metadata:Metadatos del gadget.\n;desc:Descripción del gadget tresformada en HTML (pue ser lento, usar sólo si realmente ye necesario).",
+ "apihelp-query+gadgets-param-categories": "De que categoríes recuperar los gadgets.",
+ "apihelp-query+gadgets-param-ids": "Identificadores de los gadgets a recuperar.",
+ "apihelp-query+gadgets-param-allowedonly": "Ver la llista sólo de los gadgets que se permiten al usuariu actual.",
+ "apihelp-query+gadgets-param-enabledonly": "Ver la llista sólo de los gadgets activaos pol usuariu actual.",
+ "apihelp-query+gadgets-example-1": "Amosar la llista de gadgets xunto coles sos descripciones",
+ "apihelp-query+gadgets-example-2": "Amosar la llista de gadgets con toles propiedaes posibles",
+ "apihelp-query+gadgets-example-3": "Amosar la llista de gadgets que pertenezan a la categoría «foo»",
+ "apihelp-query+gadgets-example-4": "Amosar información sobro los gadgets «foo» y «bar»",
+ "apihelp-query+gadgets-example-5": "Ver la llista de los gadgets activaos pol usuariu actual.",
+ "right-gadgets-edit": "Editar gadget en JavaScript y páxines CSS",
+ "action-gadgets-edit": "editar esti gadget en JavaScript o páxina CSS",
+ "right-gadgets-definition-edit": "Editar definiciones de gadget",
+ "action-gadgets-definition-edit": "editar esta definición de gadget"
}
diff --git a/extensions/Gadgets/i18n/be-tarask.json b/extensions/Gadgets/i18n/be-tarask.json
index 91eff0c1..7baba701 100644
--- a/extensions/Gadgets/i18n/be-tarask.json
+++ b/extensions/Gadgets/i18n/be-tarask.json
@@ -23,5 +23,7 @@
"gadgets-export-title": "Экспарт гаджэта",
"gadgets-not-found": "Гаджэт «$1» ня знойдзены.",
"gadgets-export-text": "Каб экспартаваць гаджэт $1, націсьніце кнопку «{{int:gadgets-export-download}}», захавайце загружаны файл, зайдзіце на Special:Import у мэтавай вікі і загрузіце файл туды. Затым дадайце наступны зьмест на старонку MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nВы павінны мець адпаведныя правы ў мэтавай вікі (у тым ліку і правы на рэдагаваньне сыстэмных паведамленьняў), а ў вікі мусіць быць уключаная магчымасьць імпарту з файлаў.",
- "gadgets-export-download": "Загрузіць"
+ "gadgets-export-download": "Загрузіць",
+ "right-gadgets-edit": "рэдагаваньне JavaScript і CSS-старонак гаджэту",
+ "right-gadgets-definition-edit": "рэдагаваньне вызначэньняў гаджэтаў"
}
diff --git a/extensions/Gadgets/i18n/bho.json b/extensions/Gadgets/i18n/bho.json
new file mode 100644
index 00000000..e390ca5d
--- /dev/null
+++ b/extensions/Gadgets/i18n/bho.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "SatyamMishra"
+ ]
+ },
+ "gadgets-title": "औजार (गैजेट्स)"
+}
diff --git a/extensions/Gadgets/i18n/bn.json b/extensions/Gadgets/i18n/bn.json
index 74f92b76..08a2cd79 100644
--- a/extensions/Gadgets/i18n/bn.json
+++ b/extensions/Gadgets/i18n/bn.json
@@ -4,7 +4,8 @@
"Bellayet",
"Nasir8891",
"Wikitanvir",
- "Zaheen"
+ "Zaheen",
+ "Aftabuzzaman"
]
},
"gadgets-desc": "ব্যবহারকারীদের তাদের [[Special:Preferences#mw-prefsection-gadgets|পছন্দে]] স্বনির্বাচিত [[Special:Gadgets|সিএসএস এবং জাভাস্ক্রিপ্ট গ্যাজেট]] নির্বাচনের সুযোগ দাও",
@@ -20,5 +21,9 @@
"gadgets-export": "রপ্তানি",
"gadgets-export-title": "গ্যাজেট রফতানী",
"gadgets-not-found": "গ্যাজেট \"$1\" খুজে পাওয়া যায়নি।",
- "gadgets-export-download": "ডাউনলোড"
+ "gadgets-export-download": "ডাউনলোড",
+ "right-gadgets-edit": "গ্যাজেট জাভাস্ক্রিপ্ট এবং সিএসএস পাতায় সম্পাদনা",
+ "action-gadgets-edit": "এই গ্যাজেট জাভাস্ক্রিপ্ট বা সিএসএস পাতা সম্পাদনা",
+ "right-gadgets-definition-edit": "গ্যাজেট সংজ্ঞা সম্পাদনা",
+ "action-gadgets-definition-edit": "এই গ্যাজেট সংজ্ঞা সম্পাদনা"
}
diff --git a/extensions/Gadgets/i18n/bs.json b/extensions/Gadgets/i18n/bs.json
index 65a7455c..9b06f31c 100644
--- a/extensions/Gadgets/i18n/bs.json
+++ b/extensions/Gadgets/i18n/bs.json
@@ -1,12 +1,13 @@
{
"@metadata": {
"authors": [
- "CERminator"
+ "CERminator",
+ "Srdjan m"
]
},
"gadgets-desc": "Omogućava korisnicima da odaberu vlastite [[Special:Gadgets|CSS i JavaScript dodatke]] (gadgets) u svojim [[Special:Preferences#mw-prefsection-gadgets|postavkama]]",
"prefs-gadgets": "Dodaci",
- "gadgets-prefstext": "Ovo je spisak specijalih gadgets (''dodataka'') koje možete omogućiti za Vaš korisnički račun. Ovi dodaci su najčešće bazirani na JavaScript, tako da se postavke JavaScript moraju omogućiti u Vašem web pregledniku da bi mogli raditi.\nZapamtite da ovi gadgets ne uzrokuju nikakve efekte na ovoj stranici za postavke.\n\nTakođer morate obratiti pažnju da ovi specijalni dodaci nisu dio MediaWiki software-a, a obično ih prave i razvijaju korisnici na lokalnim wikijima.\nAdministratori mogu mijenjati dostupne gadgetse koristeći [[MediaWiki:Gadgets-definition|definicije]] i [[Special:Gadgets|opise]].",
+ "gadgets-prefstext": "Ovo je spisak posebnih dodataka koje možete uključiti za svoj korisnički račun.\nOvi dodaci se najčešće zasnivaju na JavaScriptu, tako da ga morate uključiti u svom web pregledniku da bi mogli raditi.\nZapamtite da ovi dodaci nemaju utjecaj na ovu stranicu s postavkama.\n\nZapamtite da ovi posebni dodaci nisu dio MediaWiki softvera, te ih obično prave i razvijaju korisnici na lokalnim wikijima.\nAdministratori mogu mijenjati dostupne dodatke koristeći [[MediaWiki:Gadgets-definition|definicije]] i [[Special:Gadgets|opise]].",
"gadgets": "Dodaci (gadgets)",
"gadgets-title": "Dodaci",
"gadgets-pagetext": "Ispod je spisak posebnih dodataka koje korisnici mogu omogućiti na svojim [[Special:Preferences#mw-prefsection-gadgets|postavkama]], kako je to definisano u [[MediaWiki:Gadgets-definition|definicijama dodataka]].\nOvaj pregled daje jednostavan pristup sistemu stranica poruka koje definišu svaki dodatak i njihov opis i kod.",
diff --git a/extensions/Gadgets/i18n/ca.json b/extensions/Gadgets/i18n/ca.json
index f96a6c9d..30ebaff4 100644
--- a/extensions/Gadgets/i18n/ca.json
+++ b/extensions/Gadgets/i18n/ca.json
@@ -7,7 +7,8 @@
"SMP",
"Toniher",
"Vriullop",
- "Alvaro Vidal-Abarca"
+ "Alvaro Vidal-Abarca",
+ "Eduardo Martinez"
]
},
"gadgets-desc": "Permet als usuaris personalitzar [[Special:Gadgets|ginys CSS i JavaScript]] a les seves [[Special:Preferences#mw-prefsection-gadgets|preferències]]",
@@ -25,5 +26,6 @@
"gadgets-not-found": "No s'ha trobat el giny «$1».",
"gadgets-export-text": "Per a exportar el giny $1, feu clic al botó «{{int:gadgets-export-download}}», deseu el fitxer baixat,\naneu a Special:Import al wiki de destinació i pugeu-lo. Llavors afegiu el següent a la pàgina MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nHeu de tenir els permisos adequats en el wiki de destinació (incloent-hi els permisos per editar missatges del sistema) i s'ha d'habilitar la importació de la pujada de fitxers.",
"gadgets-export-download": "Baixa",
- "apihelp-query+gadgets-example-2": "Obtenir una llista dels ginys amb totes les propietats possibles"
+ "apihelp-query+gadgets-example-2": "Obtenir una llista dels ginys amb totes les propietats possibles",
+ "right-gadgets-edit": "Edita el gadget JavaScript i les pàgines CSS"
}
diff --git a/extensions/Gadgets/i18n/ce.json b/extensions/Gadgets/i18n/ce.json
index 7c1f42a6..3bae2733 100644
--- a/extensions/Gadgets/i18n/ce.json
+++ b/extensions/Gadgets/i18n/ce.json
@@ -7,7 +7,7 @@
},
"gadgets-desc": "Аьтто бо декъашхошна харжам ба [[Special:Preferences#mw-prefsection-gadgets|гIирс нисбарца]] CSS- а JavaScript-хIоттончаш, лато лууш йерш",
"prefs-gadgets": "Гаджеташ",
- "gadgets-prefstext": "Лаххьа балийна леррина гаджеташ могӀам, шуьга шайга латалур йолуш хьай долахь долучу дакъан.\nХӀара гаджеташ дуккхачу хьолехь болх беш ю оцу JavaScript тӀехь, цундела аша латоеза JavaScript шай браузер чохь, цаьрга болх байта.\nДиц маделаш, хӀара гаджеташ болх бяш яц хӀо гӀирс нисбо агӀон чохь.\n\nИшта диц маде, хӀара гаджеташ юкъа йогуш яц кху MediaWiki гӀирсашна, мадарра аьльча шу санна декъашхоша шаьш йеш ю.\nКуьйгалхошка шайг хийцало и гаджетийн могӀам, хӀокх могӀам гӀонца [[MediaWiki:Gadgets-definition|къастам бало]] а [[Special:Gadgets|церах лаьцна]].",
+ "gadgets-prefstext": "Лаххьа балийна леррина гаджеташ могӀам, шуьга шайга латалур йолуш хьай долахь долучу дакъан.\nХӀара гаджеташ дуккхачу хьолехь болх беш ю оцу JavaScript тӀехь, цундела аша латоеза JavaScript шай браузер чохь, цаьрга болх байта.\nДиц маделаш, хӀара гаджеташ болх бяш яц хӀо гӀирс нисбо агӀон чохь.\n\nИшта диц маде, хӀара гаджеташ юкъа йогуш яц кху MediaWiki гӀирсашна, мадарра аьльча шу санна декъашхоша шаьш йеш ю.\nКуьйгалхошка шайг хийцало и гаджетийн могӀам, хӀокху могӀам гӀоьнца [[MediaWiki:Gadgets-definition|къастам бало]] а [[Special:Gadgets|церах лаьцна]].",
"gadgets": "Гаджеташ",
"gadgets-title": "Гаджеташ",
"gadgets-pagetext": "ГӀирса хааман могlамаш, къастош йолу гаджетийн цӀераш, хуьлаш йолу хӀокху [[MediaWiki:Gadgets-definition|къастамца]].\nХӀокху могIамо атто бо гIирсан хаамаш атта тӀе кхочуш барца, цуьнах лаьцна хӀоттош а йолуш йолучу гаджетийн кодаца.",
diff --git a/extensions/Gadgets/i18n/cs.json b/extensions/Gadgets/i18n/cs.json
index 2d2d1a89..3f982adb 100644
--- a/extensions/Gadgets/i18n/cs.json
+++ b/extensions/Gadgets/i18n/cs.json
@@ -16,9 +16,14 @@
"gadgets-required-rights": "Vyžaduje následující {{PLURAL:$2|oprávnění}}:\n\n$1",
"gadgets-required-skins": "Dostupné {{PLURAL:$2|pro vzhled $1|pro následující vzhledy: $1}}.",
"gadgets-default": "Implicitně zapnuto všem.",
+ "gadgets-legacy": "Udělátko se nenačítá. Převeďte ho prosím na ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Více informací])",
"gadgets-export": "Exportovat",
"gadgets-export-title": "Export udělátka",
"gadgets-not-found": "Udělátko „$1“ nebylo nalezeno.",
"gadgets-export-text": "Chcete-li exportovat udělátko $1, klikněte na tlačítko „{{int:gadgets-export-download}}“, uložte stažený soubor, na cílové wiki přejděte na stránku Special:Import a soubor načtěte. Poté na tamní stránku MediaWiki:Gadgets-definition přidejte následující:\n<pre>$2</pre>\nNa cílové wiki musíte mít příslušná oprávnění (včetně práva editovat systémová hlášení) a musí tam být povolen import načtením souboru.",
- "gadgets-export-download": "Stáhnout"
+ "gadgets-export-download": "Stáhnout",
+ "right-gadgets-edit": "Editace stránek s JavaScriptem a CSS udělátek",
+ "action-gadgets-edit": "editovat stránku s JavaScriptem nebo CSS tohoto udělátka",
+ "right-gadgets-definition-edit": "Editace definic udělátek",
+ "action-gadgets-definition-edit": "editovat definici tohoto udělátka"
}
diff --git a/extensions/Gadgets/i18n/cv.json b/extensions/Gadgets/i18n/cv.json
new file mode 100644
index 00000000..d82c4b36
--- /dev/null
+++ b/extensions/Gadgets/i18n/cv.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Chuvash2014"
+ ]
+ },
+ "gadgets": "Гаджетсем"
+}
diff --git a/extensions/Gadgets/i18n/de.json b/extensions/Gadgets/i18n/de.json
index 290caabc..36aa55b4 100644
--- a/extensions/Gadgets/i18n/de.json
+++ b/extensions/Gadgets/i18n/de.json
@@ -8,7 +8,8 @@
"Raimond Spekking",
"The Evil IP address",
"Umherirrender",
- "✓"
+ "✓",
+ "Tiin"
]
},
"gadgets-desc": "Ermöglicht es Benutzern, in ihren [[Special:Preferences#mw-prefsection-gadgets|persönlichen Einstellungen]] vordefinierte [[Special:Gadgets|CSS- und JavaScript-Helferlein]] zu aktivieren",
@@ -21,15 +22,19 @@
"gadgets-required-rights": "Erfordert die {{PLURAL:$2|folgende Berechtigung|folgenden Berechtigungen}}:\n\n$1",
"gadgets-required-skins": "Verfügbar bei {{PLURAL:$2|der folgenden Benutzeroberfläche|den folgenden Benutzeroberflächen}}: $1.",
"gadgets-default": "Für alle standardmäßig aktiviert.",
- "gadgets-export": "Export",
+ "gadgets-legacy": "Das Helferlein ist nicht geladen. Bitte stelle auf den ResourceLoader um. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Weitere Informationen])",
+ "gadgets-export": "Exportieren",
"gadgets-export-title": "Export der Helferlein",
"gadgets-not-found": "Helferlein „$1“ wurde nicht gefunden.",
"gadgets-export-text": "Um das Helferlein $1 zu exportieren, klicke auf die Schaltfläche „{{int:gadgets-export-download}}“ und speichere die heruntergeladene Datei. Gehe sodann zur Spezialseite Spezial:Import auf dem für den Import vorgesehenen Wiki und lade die Datei hoch. Füge danach den folgenden Text zur Seite MediaWiki:Gadgets-definition hinzu:\n<pre>$2</pre>\nDu musst über die notwendigen Berechtigungen auf dem für den Import vorgesehenen Wiki verfügen (einschließlich der Berechtigung, MediaWiki-Systemnachrichten zu bearbeiten). Zudem muss der Import von Datei-Uploads aktiviert sein.",
"gadgets-export-download": "Herunterladen",
- "apihelp-query+gadgetcategories-description": "Gibt eine Liste mit Gadget-Kategorien zurück.",
+ "apihelp-query+gadgetcategories-description": "Gibt eine Liste mit Helferleinkategorien zurück.",
+ "apihelp-query+gadgetcategories-param-prop": "Welche Information der Helferleinkategorie abgerufen werden soll:\n;name:Interner Name der Kategorie.\n;title:Titel der Kategorie.\n;members:Anzahl der Helferlein in der Kategorie.",
"apihelp-query+gadgetcategories-param-names": "Namen der abzurufenden Kategorien.",
"apihelp-query+gadgetcategories-example-1": "Ruft eine Liste vorhandener Helferleinkategorien ab",
+ "apihelp-query+gadgetcategories-example-2": "Ruft alle Informationen über Kategorien mit den Namen „foo“ und „bar“ ab",
"apihelp-query+gadgets-description": "Gibt eine Liste der Helferlein zurück, die auf diesem Wiki verwendet werden.",
+ "apihelp-query+gadgets-param-prop": "Welche Information des Helferleins abgerufen werden soll:\n;id:Interne Kennung des Helferleins.\n;metadata:Die Metadaten des Helferleins.\n;desc:Die in HTML umgewandelte Beschreibung des Helferleins (kann langsam sein, nur verwenden, wenn wirklich benötigt).",
"apihelp-query+gadgets-param-categories": "Von welchen Kategorien die Helferlein abgerufen werden sollen.",
"apihelp-query+gadgets-param-ids": "Kennungen der abzurufenden Helferlein.",
"apihelp-query+gadgets-param-allowedonly": "Nur Helferlein auflisten, die für den aktuellen Benutzer erlaubt sind.",
@@ -38,5 +43,9 @@
"apihelp-query+gadgets-example-2": "Ruft eine Liste der Helferlein mit allen möglichen Eigenschaften ab",
"apihelp-query+gadgets-example-3": "Ruft eine Liste der Helferlein ab, die zur Kategorie „foo“ gehören",
"apihelp-query+gadgets-example-4": "Informationen über die Helferlein „foo“ und „bar“ abrufen",
- "apihelp-query+gadgets-example-5": "Ruft eine Liste der Helferlein ab, die vom aktuellen Benutzer aktiviert wurden"
+ "apihelp-query+gadgets-example-5": "Ruft eine Liste der Helferlein ab, die vom aktuellen Benutzer aktiviert wurden",
+ "right-gadgets-edit": "JavaScript- und CSS-Seiten von Helferlein bearbeiten",
+ "action-gadgets-edit": "diese JavaScript- oder CSS-Seite des Helferleins zu bearbeiten",
+ "right-gadgets-definition-edit": "Definitionen von Helferlein bearbeiten",
+ "action-gadgets-definition-edit": "diese Definition des Helferleins zu bearbeiten"
}
diff --git a/extensions/Gadgets/i18n/dty.json b/extensions/Gadgets/i18n/dty.json
new file mode 100644
index 00000000..7cd3cb7b
--- /dev/null
+++ b/extensions/Gadgets/i18n/dty.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "राम प्रसाद जोशी"
+ ]
+ },
+ "gadgets-prefstext": "विशेष उपकरणहरूको सूची तल दियाकोछ तमी आफ्नो खातामी सक्रिय पाड्ड सक्द्या हौ ।\nप्राय सबै उपकरणहरू जाभास्क्रीप्टमी आधारित छन्, यस कारण ब्राउजरमी काम गराउनका निउती जाभास्क्रीप्टलाई सक्रिय गद्दु पडन्छ ।\nयाद राख्या ती उपकरणहरूले रोजाई पानामी असर गद्दाइनन् ।\nयो पनि याद राख्या यी विशेष उपकरणहरू मीडिया विकि सफ्टवेयर भित्र पड्डाइनन् र प्राय स्थानीय विकि प्रयोगकर्ताहरूले यैको विकास र सञ्चालन गद्दान्। \nस्थानीय प्रबन्धकहरूले उपलब्ध उपकरणहरूका [[MediaWiki:Gadgets-definition|परिभाषाहरू]] र [[Special:Gadgets|विवरणहरू]] सम्पादन गद्दान्।",
+ "gadgets-pagetext": "विशेष उपकरणहरूको सूची तल दियाकोछ प्रयोगकर्तानले [[MediaWiki:Gadgets-definition|परिभाषाहरू]]मी जनाए अनुसार आफ्नो [[Special:Preferences#mw-prefsection-gadgets|रोजाई पानामी]], सक्रिय पार्न सक्द्याछन् ।\nयै सिंहावलोकनले प्रणाली सन्देश पाना सजिलै प्राप्त गद्द सकिन्याछ जसले प्रत्येक उपकरणको विवरण र कोडलाई परिभाषित गर्याको छ।"
+}
diff --git a/extensions/Gadgets/i18n/el.json b/extensions/Gadgets/i18n/el.json
index b8cd38ac..3391508c 100644
--- a/extensions/Gadgets/i18n/el.json
+++ b/extensions/Gadgets/i18n/el.json
@@ -8,21 +8,44 @@
"Glavkos",
"Lou",
"ZaDiak",
- "Geraki"
+ "Geraki",
+ "Protnet"
]
},
- "gadgets-desc": "Επιτρέπει στους χρήστες να διαλέξουν [[Special:Gadgets|CSS και JavaScript πρόσθετα]] στις [[Special:Preferences#mw-prefsection-gadgets|προτιμήσεις]] τους",
- "prefs-gadgets": "Ειδικές επιλογές",
- "gadgets-prefstext": "Ακολουθεί μια λίστα με ειδικές επιλογές που μπορείτε να ενεργοποιήσειτε για το λογαριασμό σας.\nΑυτές οι επιλογές είναι βασισμένες κυρίως σε JavaScript, οπότε αυτή θα πρέπει να ενεργοποιηθεί στον φυλλομετρητή σας για να δουλέψουν.\nΣημειώστε ότι οι επιλογές αυτές δεν θα έχουν καμία επίδραση σε αυτή τη σελίδα προτιμήσεων.\n\nΕπίσης σημειώστε ότι αυτές οι ειδικές επιλογές δεν είναι μέρος του λογισμικού MediaWiki, και συνήθως αναπτύσσονται και συντηρούνται από χρήστες στο τοπικό σας wiki.\nΟι τοπικοί διαχειριστές μπορούν να επεξεργαστούν τις διαθέσιμες επιλογές χρησιμοποιώντας τις σελίδες [[MediaWiki:Gadgets-definition]] και [[Special:Gadgets]].",
- "gadgets": "Πρόσθετα",
- "gadgets-title": "Πρόσθετα",
- "gadgets-pagetext": "Παρακάτω βρίσκεται ένας κατάλογος με τις ειδικές λειτουργίες τις οποίες οι χρήστες μπορούν να ενεργοποιήσουν στη [[Special:Preferences#mw-prefsection-gadgets|σελίδα προτιμήσεών]] τους, όπως ορίζεται από τη σελίδα [[MediaWiki:Gadgets-definition|ορισμών]].<br />\nΑυτή η επισκόπηση παρέχει εύκολη πρόσβαση στις σελίδες μηνυμάτων του συστήματος που ορίζουν την περιγραφή και τον κώδικα κάθε λειτουργίας.",
+ "gadgets-desc": "Επιτρέπει στους χρήστες να επιλέξουν προσαρμοσμένες [[Special:Gadgets|μικροεφαρμογές CSS και JavaScript]] στις [[Special:Preferences#mw-prefsection-gadgets|προτιμήσεις]] τους",
+ "prefs-gadgets": "Μικροεφαρμογές",
+ "gadgets-prefstext": "Ακολουθεί μια λίστα με ειδικές μικροεφαρμογές που μπορείτε να ενεργοποιήσετε για το λογαριασμό σας.\nΑυτές οι μικροεφαρμογές είναι βασισμένες κυρίως σε JavaScript, οπότε το JavaScript θα πρέπει να είναι ενεργοποιημένο στο πρόγραμμα περιήγησής σας για να δουλέψουν.\nΝα σημειωθεί ότι οι μικροεφαρμογές αυτές δεν θα έχουν καμία επίδραση σε αυτήν τη σελίδα προτιμήσεων.\n\nΕπίσης να σημειωθεί ότι αυτές οι ειδικές μικροεφαρμογές δεν είναι μέρος του λογισμικού MediaWiki και συνήθως αναπτύσσονται και συντηρούνται από χρήστες στο τοπικό σας wiki.\nΟι τοπικοί διαχειριστές μπορούν να επεξεργαστούν τους [[MediaWiki:Gadgets-definition|ορισμούς]] και τις [[Special:Gadgets|descriptions|περιγραφές]] των διαθέσιμων μικροεφαρμογών.",
+ "gadgets": "Μικροεφαρμογές",
+ "gadgets-title": "Μικροεφαρμογές",
+ "gadgets-pagetext": "Παρακάτω βρίσκεται ένας κατάλογος με τις ειδικές μικροεφαρμογές τις οποίες οι χρήστες μπορούν να ενεργοποιήσουν στη [[Special:Preferences#mw-prefsection-gadgets|σελίδα προτιμήσεών]] τους, όπως έχουν οριστεί από τους [[MediaWiki:Gadgets-definition|ορισμούς]].\nΑυτή η επισκόπηση παρέχει εύκολη πρόσβαση στις σελίδες των μηνυμάτων συστήματος που ορίζουν την περιγραφή και τον κώδικα κάθε μικροεφαρμογής.",
"gadgets-uses": "Χρήσεις",
- "gadgets-required-rights": "Απαιτεί {{PLURAL:$2|το εξής δικαίωμα|τα εξής δικαιώματα}}:\n\n$1",
- "gadgets-default": "Ενεργοποιήθηκε για τον καθένα από προεπιλογή.",
+ "gadgets-required-rights": "Απαιτεί {{PLURAL:$2|το ακόλουθο δικαίωμα|τα ακόλουθα δικαιώματα}}:\n\n$1",
+ "gadgets-required-skins": "Διαθέσιμο {{PLURAL:$2|στο θέμα εμφάνισης $1|στα ακόλουθα θέματα εμφάνισης: $1}}.",
+ "gadgets-default": "Ενεργοποιημένο για όλους από προεπιλογή.",
+ "gadgets-legacy": "Η μικροεφαρμογή δεν φορτώθηκε. Παρακαλούμε αναβαθμίσετε σε περιβάλλον ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Μάθετε περισσότερα])",
"gadgets-export": "Εξαγωγή",
- "gadgets-export-title": "Μικροεφαρμογή εξαγωγής",
- "gadgets-not-found": "Μικροεφαρμογή \"$1\" δεν βρέθηκε.",
- "gadgets-export-text": "Για την εξαγωγή της μικροεφαρμογής (gadget) $1, κάντε κλικ στο κουμπί \"{{int:gadgets-export-download}}\", αποθηκεύστε το αρχείο που λάβατε, πάτε στο Special:Import του wiki προορισμού και ανεβάστε το. Μετά προσθέστε τα παρακάτω στη σελίδα ορισμού των MediaWiki:Gadgets:\n<pre>$2</pre>\nΠρέπει να έχετε τα κατάλληλα δικαιώματα στο wiki προορισμού (συμπεριλαμβανομένου και του δικαιώματος επεξεργασίας μηνυμάτων συστήματος) και να είναι ενεργοποιημένη η εισαγωγή αρχείων προς ανέβασμα.",
- "gadgets-export-download": "Λήψη"
+ "gadgets-export-title": "Εξαγωγή μικροεφαρμογής",
+ "gadgets-not-found": "Η μικροεφαρμογή «$1» δεν βρέθηκε.",
+ "gadgets-export-text": "Για την εξαγωγή της μικροεφαρμογής $1, κάντε κλικ στο κουμπί «{{int:gadgets-export-download}}», αποθηκεύστε το κατεβασμένο αρχείο, \nπηγαίνετε στο Special:Import του wiki προορισμού και ανεβάστε το. Μετά προσθέστε τα παρακάτω στη σελίδα MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nΠρέπει να έχετε τα κατάλληλα δικαιώματα στο wiki προορισμού (συμπεριλαμβανομένου και του δικαιώματος επεξεργασίας μηνυμάτων συστήματος) και να είναι ενεργοποιημένη η εισαγωγή μέσω ανεβάσματος αρχείων.",
+ "gadgets-export-download": "Κατέβασμα",
+ "apihelp-query+gadgetcategories-description": "Επιστρέφει λίστα με τις κατηγορίες μικροεφαρμογών.",
+ "apihelp-query+gadgetcategories-param-prop": "Τι πληροφορίες για την κατηγορία της μικροεφαρμογής να ληφθούν:\n;name:Όνομα εσωτερικής κατηγορίας.\n;title:Τίτλος κατηγορίας.\n;members:Αριθμός μικροεφαρμογών σε αυτήν την κατηγορία.",
+ "apihelp-query+gadgetcategories-param-names": "Τα ονόματα των κατηγοριών προς ανάκτηση.",
+ "apihelp-query+gadgetcategories-example-1": "Λήψη λίστας με τις υπάρχουσες κατηγορίες μικροεφαρμογών",
+ "apihelp-query+gadgetcategories-example-2": "Λήψη όλων των πληροφοριών σχετικά με τις κατηγορίες με ονόματα «τάδε» και «δείνα»",
+ "apihelp-query+gadgets-description": "Επιστρέφει λίστα με τις μικροεφαρμογές που χρησιμοποιούνται σε αυτό το wiki.",
+ "apihelp-query+gadgets-param-prop": "Τι πληροφορίες της μικροεφαρμογής να ληφθούν:\n;id:Εσωτερικό αναγνωριστικό της μικροεφαρμογής.\n;metadata:Τα μεταδεδομένα της μικροεφαρμογής.\n;desc:Περιγραφή της μικροεφαρμογής μετασχηματισμένη σε HTML (μπορεί να είναι αργό, χρησιμοποιήστε μόνο αν πραγματικά χρειάζεται).",
+ "apihelp-query+gadgets-param-categories": "Ποιων κατηγοριών μικροεφαρμογές να ανακτηθούν.",
+ "apihelp-query+gadgets-param-ids": "Τα αναγνωριστικά των μικροεφαρμογών προς ανάκτηση.",
+ "apihelp-query+gadgets-param-allowedonly": "Να απαριθμηθούν μόνο οι επιτρεπτές στον τρέχοντα χρήστη μικροεφαρμογές.",
+ "apihelp-query+gadgets-param-enabledonly": "Να απαριθμηθούν μόνο οι ενεργοποιημένες από τον τρέχοντα χρήστη μικροεφαρμογές.",
+ "apihelp-query+gadgets-example-1": "Λήψη λίστας μικροεφαρμογών μαζί με τις περιγραφές τους",
+ "apihelp-query+gadgets-example-2": "Λήψη λίστας μικροεφαρμογών με όλες τις πιθανές ιδιότητες",
+ "apihelp-query+gadgets-example-3": "Λήψη λίστας μικροεφαρμογών που ανήκουν στην κατηγορία «τάδε»",
+ "apihelp-query+gadgets-example-4": "Λήψη πληροφοριών σχετικά με τις μικροεφαρμογές «τάδε» και «δείνα»",
+ "apihelp-query+gadgets-example-5": "Λήψη λίστας μικροεφαρμογών ενεργοποιημένων από τον τρέχοντα χρήστη",
+ "right-gadgets-edit": "Επεξεργασία σελίδων JavaScript ή CSS της μικροεφαρμογής",
+ "action-gadgets-edit": "επεξεργαστείτε τις σελίδες JavaScript ή CSS αυτής της μικροεφαρμογής",
+ "right-gadgets-definition-edit": "Επεξεργασία ορισμών μικροεφαρμογών",
+ "action-gadgets-definition-edit": "επεξεργαστείτε τον ορισμό αυτής μικροεφαρμογής"
}
diff --git a/extensions/Gadgets/i18n/en.json b/extensions/Gadgets/i18n/en.json
index 7f14d624..7b8170bc 100644
--- a/extensions/Gadgets/i18n/en.json
+++ b/extensions/Gadgets/i18n/en.json
@@ -15,6 +15,7 @@
"gadgets-required-rights": "Requires the following {{PLURAL:$2|right|rights}}:\n\n$1",
"gadgets-required-skins": "Available on the {{PLURAL:$2|$1 skin|following skins: $1}}.",
"gadgets-default": "Enabled for everyone by default.",
+ "gadgets-legacy": "Gadget is not loaded. Please migrate to ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Learn more])",
"gadgets-export": "Export",
"gadgets-export-title": "Gadget export",
"gadgets-not-found": "Gadget \"$1\" not found.",
@@ -35,5 +36,9 @@
"apihelp-query+gadgets-example-2": "Get a list of gadgets with all possible properties",
"apihelp-query+gadgets-example-3": "Get a list of gadgets belonging to category \"foo\"",
"apihelp-query+gadgets-example-4": "Get information about gadgets \"foo\" and \"bar\"",
- "apihelp-query+gadgets-example-5": "Get a list of gadgets enabled by current user"
+ "apihelp-query+gadgets-example-5": "Get a list of gadgets enabled by current user",
+ "right-gadgets-edit": "Edit gadget JavaScript and CSS pages",
+ "action-gadgets-edit": "edit this gadget JavaScript or CSS page",
+ "right-gadgets-definition-edit": "Edit gadget definitions",
+ "action-gadgets-definition-edit": "edit this gadget definition"
}
diff --git a/extensions/Gadgets/i18n/es.json b/extensions/Gadgets/i18n/es.json
index e18e5151..cf499d58 100644
--- a/extensions/Gadgets/i18n/es.json
+++ b/extensions/Gadgets/i18n/es.json
@@ -7,7 +7,9 @@
"Remember the dot",
"Sanbec",
"Vivaelcelta",
- "Themasterriot"
+ "Themasterriot",
+ "Ryo567",
+ "Macofe"
]
},
"gadgets-desc": "Permite a los usuarios seleccionar [[Special:Gadgets|accesorios de CSS y JavaScript personailzados]]\nen sus [[Special:Preferences#mw-prefsection-gadgets|preferencias]].",
@@ -18,11 +20,15 @@
"gadgets-pagetext": "Debajo hay una lista de accesorios especiales que los usuarios pueden activar en sus [[Special:Preferences#mw-prefsection-gadgets|preferencias]], según la [[MediaWiki:Gadgets-definition|lista de definición de accesorios]]. Esta vista provee un acceso fácil a las páginas de mensajes del sistema que definen la descripción y el código de cada accesorio.",
"gadgets-uses": "Usos",
"gadgets-required-rights": "Requiere {{PLURAL:$2|el siguiente permiso|los siguientes permisos}}:\n\n$1",
- "gadgets-required-skins": "Disponible {{PLURAL:$2|en la apariencia $1|en las siguientes apariencias: $1}}.",
+ "gadgets-required-skins": "Disponible en {{PLURAL:$2|la apariencia $1|las siguientes apariencias: $1}}.",
"gadgets-default": "Activado para todos de manera predeterminada.",
+ "gadgets-legacy": "Gadget no está cargado. Migra a ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Aprender más])",
"gadgets-export": "Exportar",
"gadgets-export-title": "Exportación de gadget",
"gadgets-not-found": "Gadget \"$1\" no encontrado.",
"gadgets-export-text": "Para exportar el gadget $1, haz click en el botón \"{{int:gadgets-export-download}}\", graba el archivo descargado,\nve a Special:Importar un wiki de destino y subirlo. Luego agrega lo siguiente a MediaWiki:Gadgets-definition page:\n<pre>$2</pre>\nDebes tener permisos apropiados en el wiki de destino (incluyendo el derecho a editar mensajes de sistema) e importación desde archivos subidos debe estar habilitado.",
- "gadgets-export-download": "Descargar"
+ "gadgets-export-download": "Descargar",
+ "apihelp-query+gadgetcategories-description": "Devuelve una lista de categorías de gadgets.",
+ "apihelp-query+gadgetcategories-param-names": "Nombres de las categorías que se obtendrán.",
+ "apihelp-query+gadgetcategories-example-2": "Obtener toda la información acerca de las categorías llamadas \"foo\" y \"bar\"."
}
diff --git a/extensions/Gadgets/i18n/et.json b/extensions/Gadgets/i18n/et.json
index 9504b69f..8c13dc60 100644
--- a/extensions/Gadgets/i18n/et.json
+++ b/extensions/Gadgets/i18n/et.json
@@ -15,9 +15,30 @@
"gadgets-required-rights": "Tarvis on {{PLURAL:$2|järgmist õigust|järgmisi õigusi}}:\n\n$1",
"gadgets-required-skins": "Saadaval {{PLURAL:$2|järgmise kujundusega|järgmiste kujundustega}}: $1.",
"gadgets-default": "Vaikimisi kõigile lubatud.",
+ "gadgets-legacy": "Tööriist on laadimata. Palun kohanda ResourceLoaderiga. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Lisateave])",
"gadgets-export": "Ekspordi",
"gadgets-export-title": "Tööriista eksportimine",
"gadgets-not-found": "Tööriista \"$1\" ei leidu.",
"gadgets-export-text": "Klõpsa nuppu \"{{int:gadgets-export-download}}\", et eksportida tööriist $1; salvesta allalaaditav fail;\nmine sihtvikis leheküljele Special:Import ja laadi see üles. Seejärel lisa järgnev leheküljele MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nSul peavad olema sihtvikis vajalikud õigused (kaasa arvatud õigus redigeerida süsteemi sõnumeid) ja üleslaaditavate failide kaudu importimine peab olema lubatud.",
- "gadgets-export-download": "Laadi alla"
+ "gadgets-export-download": "Laadi alla",
+ "apihelp-query+gadgetcategories-description": "Tagastab tööriistakategooriate loetelu.",
+ "apihelp-query+gadgetcategories-param-prop": "Millist teavet tööriistakategooriate kohta hankida:\n;name: Sisemine kategoorianimi.\n;title: Kategooria pealkiri.\n;members: Tööriistade arv kategoorias.",
+ "apihelp-query+gadgetcategories-param-names": "Välja võetavate kategooriate nimed.",
+ "apihelp-query+gadgetcategories-example-1": "Hangi olemasolevate tööriistakategooriate loetelu",
+ "apihelp-query+gadgetcategories-example-2": "Hangi kogu teave kategooriate \"foo\" ja \"bar\" kohta",
+ "apihelp-query+gadgets-description": "Tagastab selles vikis kasutusel olevate tööriistade loetelu.",
+ "apihelp-query+gadgets-param-prop": "Millist teavet tööriistade kohta hankida:\n;id:Tööriista sisemine identifikaator.\n;metadata:Tööriista metaandmed.\n;desc: Tööriista kirjeldus teisendatuna HTML-iks (võib olla aeglane, kasuta ainult vajadusel).",
+ "apihelp-query+gadgets-param-categories": "Milliste kategooriate tööriistad loetleda.",
+ "apihelp-query+gadgets-param-ids": "Välja võetavate tööriistade identifikaatorid.",
+ "apihelp-query+gadgets-param-allowedonly": "Loetle ainult tööriistad, mille antud kasutaja on lubanud.",
+ "apihelp-query+gadgets-param-enabledonly": "Loetle ainult tööriistad, mille antud kasutaja on lubanud.",
+ "apihelp-query+gadgets-example-1": "Hangi tööriistade loetelu kirjeldustega",
+ "apihelp-query+gadgets-example-2": "Hangi tööriistade loetelu kõigi võimalike atribuutidega",
+ "apihelp-query+gadgets-example-3": "Hangi loetelu tööriistadest, mis kuuluvad kategooriasse \"foo\"",
+ "apihelp-query+gadgets-example-4": "Hangi teave tööriistade \"foo\" ja \"bar\" kohta",
+ "apihelp-query+gadgets-example-5": "Hangi loetelu tööriistadest, mille antud kasutaja on lubanud",
+ "right-gadgets-edit": "Muuta tööriistade JavaScripti ja CSS-lehekülgi",
+ "action-gadgets-edit": "muuta tööriistade JavaScripti ega CSS-lehekülgi",
+ "right-gadgets-definition-edit": "Muuta tööriistade määratlusi",
+ "action-gadgets-definition-edit": "muuta tööriistade määratlusi"
}
diff --git a/extensions/Gadgets/i18n/eu.json b/extensions/Gadgets/i18n/eu.json
index bf37cb3b..b8f57864 100644
--- a/extensions/Gadgets/i18n/eu.json
+++ b/extensions/Gadgets/i18n/eu.json
@@ -5,7 +5,8 @@
"Inorbez",
"Joxemai",
"Unai Fdz. de Betoño",
- "පසිඳු කාවින්ද"
+ "පසිඳු කාවින්ද",
+ "Sator"
]
},
"gadgets-desc": "Lankideek [[Special:Gadgets|CSS eta JavaScript gadgetak]] aukeratu ditzazkete beraien [[Special:Preferences#mw-prefsection-gadgets|hobespenetan]]",
@@ -17,5 +18,8 @@
"gadgets-uses": "Erabilerak",
"gadgets-export": "Esportatu",
"gadgets-export-title": "Gadgeten esportazioa",
- "gadgets-export-download": "Jaitsi"
+ "gadgets-not-found": "Ez da \"$1\" gadgeta aurkitu.",
+ "gadgets-export-download": "Jaitsi",
+ "right-gadgets-definition-edit": "Gadgetaren definizioak aldatu",
+ "action-gadgets-definition-edit": "Gadget honen definizioa aldatu"
}
diff --git a/extensions/Gadgets/i18n/fa.json b/extensions/Gadgets/i18n/fa.json
index 98d53cb7..67bc0027 100644
--- a/extensions/Gadgets/i18n/fa.json
+++ b/extensions/Gadgets/i18n/fa.json
@@ -7,7 +7,8 @@
"Ladsgroup",
"Reza1615",
"Wayiran",
- "ZxxZxxZ"
+ "ZxxZxxZ",
+ "Mjbmr"
]
},
"gadgets-desc": "به کاربرها امکان انتخاب [[Special:Gadgets|ابزارهای شخصی سی‌اس‌اس و جاوااسکریپت]] را از طریق صفحهٔ [[Special:Preferences#mw-prefsection-gadgets|ترجیحات]] می‌دهد",
@@ -20,6 +21,7 @@
"gadgets-required-rights": "به {{PLURAL:$2|دسترسی|دسترسی‌های}} روبرو نیاز است:\n\n$1",
"gadgets-required-skins": "قابل دسترس در {{PLURAL:$2|پوستهٔ $1|پوسته‌های $1}}.",
"gadgets-default": "به‌طور پیش‌فرض برای همه فعال است.",
+ "gadgets-legacy": "ابزار بارگیری نشده است. لطفاً به ResourceLoader مهاجرت کنید. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) اطلاعات بیشتر])",
"gadgets-export": "برون‌بری",
"gadgets-export-title": "برون‌بری ابزار",
"gadgets-not-found": "ابزار «$1» یافت نشد.",
diff --git a/extensions/Gadgets/i18n/fo.json b/extensions/Gadgets/i18n/fo.json
index 14b30798..579e3aba 100644
--- a/extensions/Gadgets/i18n/fo.json
+++ b/extensions/Gadgets/i18n/fo.json
@@ -4,9 +4,20 @@
"EileenSanda"
]
},
+ "gadgets-desc": "Letur brúkarar velja persónligar [[Special:Gadgets|CSS og JavaScript gadgets]] í teirra [[Special:Preferences#mw-prefsection-gadgets|innstillingum]]",
+ "prefs-gadgets": "Gadgets",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Gadgets",
+ "gadgets-pagetext": "Niðanfyri er ein listi yvir serstakar gadgets (ískotisfunktiónir), ið brúkarar kunnu aktivera á teirra [[Special:Preferences#mw-prefsection-gadgets|innstillar síðu]], sum víst á [[MediaWiki:Gadgets-definition|definitions]].\nHetta yvirlitið gevur lætta atgongd til kervisboð síðurnar, ið hevur frágreiðingar og kotur um hvørja gadget.",
"gadgets-uses": "Brúkar",
"gadgets-required-rights": "Krevur fylgjandi {{PLURAL:$2|rættindi|rættindi}}:\n\n$1",
"gadgets-required-skins": "Tøk á {{PLURAL:$2|$1 útsjónd|fylgjandi útsjóndum: $1}}.",
"gadgets-default": "Gjørt virkið fyri øllum sum standard",
- "gadgets-export": "Útflyt"
+ "gadgets-export": "Útflyt",
+ "gadgets-export-title": "Útflyt gadget",
+ "gadgets-not-found": "Gadget \"$1\" ikki funnin.",
+ "gadgets-export-download": "Tak niður",
+ "apihelp-query+gadgetcategories-param-names": "Nøvn á bólkum ið skulu heintast.",
+ "apihelp-query+gadgetcategories-example-1": "Fá eitt yvirlit yvir gadget bólkar",
+ "apihelp-query+gadgetcategories-example-2": "Fá kunning um allir bólkar nevndir \"foo\" og \"bar\""
}
diff --git a/extensions/Gadgets/i18n/fr.json b/extensions/Gadgets/i18n/fr.json
index 1c65f613..35478ead 100644
--- a/extensions/Gadgets/i18n/fr.json
+++ b/extensions/Gadgets/i18n/fr.json
@@ -11,7 +11,12 @@
"Sherbrooke",
"Urhixidur",
"Zcqsc06",
- "Zetud"
+ "Zetud",
+ "Djiboun",
+ "Windes",
+ "Lucky",
+ "Gomoko",
+ "SRXcraft"
]
},
"gadgets-desc": "Permet aux utilisateurs de choisir des [[Special:Gadgets|gadgets CSS et Javascripts]] personnalisés dans leurs [[Special:Preferences#mw-prefsection-gadgets|préférences]]",
@@ -24,9 +29,30 @@
"gadgets-required-rights": "Requiert {{PLURAL:$2|le droit suivant|les droits suivants}} : \n\n$1.",
"gadgets-required-skins": "Disponible sur {{PLURAL:$2|l’habillage suivant|les habillages suivants}} : $1.",
"gadgets-default": "Activé pour tout le monde par défaut.",
+ "gadgets-legacy": "Le gadget n’est pas chargé. Veuillez migrer vers ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) En savoir plus])",
"gadgets-export": "Exporter",
"gadgets-export-title": "Export de gadget",
"gadgets-not-found": "Gadget « $1 » non trouvé.",
"gadgets-export-text": "Pour exporter le gadget $1, cliquez sur le bouton « {{int:gadgets-export-download}} », enregistrez le fichier téléchargé puis allez sur la page Special:Import du wiki de destination et importez-la. Ajoutez ensuite le texte suivant dans la page MediaWiki:Gadgets-definition :\n<pre>$2</pre>\nIl est nécessaire de disposer des droits correspondants sur le wiki de destination (y compris celui de modifier les messages système) et l’import depuis des fichiers doit être activé.",
- "gadgets-export-download": "Télécharger"
+ "gadgets-export-download": "Télécharger",
+ "apihelp-query+gadgetcategories-description": "Renvoie une liste de catégories de gadget.",
+ "apihelp-query+gadgetcategories-param-prop": "Quelle information de catégorie de gadget obtenir :\n;name:Nom de catégorie interne.\n;title:Titre de la catégorie.\n;members:Nombre de gadgets dans la catégorie.",
+ "apihelp-query+gadgetcategories-param-names": "Noms des catégories à récupérer.",
+ "apihelp-query+gadgetcategories-example-1": "Fournit une liste des catégories de gadget existantes",
+ "apihelp-query+gadgetcategories-example-2": "Fournit toutes les informations sur les catégories \"foo\" et \"bar\"",
+ "apihelp-query+gadgets-description": "Renvoie une liste des gadgets utilisés sur ce wiki.",
+ "apihelp-query+gadgets-param-prop": "Quelle information de gadget obtenir :\n;id:ID interne du gadget.\n;metadata:Les métadonnées du gadget.\n;desc:Description du gadget transformée en HTML (peut être lent, à n’utiliser que si c’est vraiment nécessaire).",
+ "apihelp-query+gadgets-param-categories": "Gadgets depuis lesquels récupérer les catégories.",
+ "apihelp-query+gadgets-param-ids": "IDs des gadgets à récupérer.",
+ "apihelp-query+gadgets-param-allowedonly": "Lister seulement les gadgets autorisés pour l'utilisateur actuel",
+ "apihelp-query+gadgets-param-enabledonly": "Lister uniquement les gadgets activés par l’utilisateur actuel.",
+ "apihelp-query+gadgets-example-1": "Obtenir une liste de gadgets ainsi que leurs descriptions",
+ "apihelp-query+gadgets-example-2": "Obtenir une liste de gadgets avec toutes les propriétés possibles",
+ "apihelp-query+gadgets-example-3": "Obtenir une liste des gadgets appartenant à la catégorie « foo »",
+ "apihelp-query+gadgets-example-4": "Obtenir l’information sur les gadgets « foo » et « bar »",
+ "apihelp-query+gadgets-example-5": "Obtenir une liste des gadgets activés par l’utilisateur actuel",
+ "right-gadgets-edit": "Modifier les pages JavaScript et CSS de gadget",
+ "action-gadgets-edit": "modifier la page JavaScript ou CSS de ce gadget",
+ "right-gadgets-definition-edit": "Modifier les définitions des gadget",
+ "action-gadgets-definition-edit": "modifier la définition de ce gadget"
}
diff --git a/extensions/Gadgets/i18n/gl.json b/extensions/Gadgets/i18n/gl.json
index 4d9f4588..f37ec648 100644
--- a/extensions/Gadgets/i18n/gl.json
+++ b/extensions/Gadgets/i18n/gl.json
@@ -3,7 +3,8 @@
"authors": [
"Alma",
"Toliño",
- "Banjo"
+ "Banjo",
+ "Elisardojm"
]
},
"gadgets-desc": "Deixa que os usuarios seleccionen [[Special:Gadgets|trebellos CSS e JavaScript]] nas súas [[Special:Preferences#mw-prefsection-gadgets|preferencias]]",
@@ -16,17 +17,30 @@
"gadgets-required-rights": "{{PLURAL:$2|Cómpre o seguinte dereito|Cómpren os seguintes dereitos}}:\n\n$1",
"gadgets-required-skins": "Dispoñible {{PLURAL:$2|na aparencia $1|nas seguintes aparencias: $1}}.",
"gadgets-default": "Activado para todos por defecto.",
+ "gadgets-legacy": "O trebello non está cargado. Por favor, migre a ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Máis información])",
"gadgets-export": "Exportar",
"gadgets-export-title": "Exportación de trebellos",
"gadgets-not-found": "Non se atopou o trebello \"$1\".",
"gadgets-export-text": "Para exportar o trebello $1, prema sobre o botón \"{{int:gadgets-export-download}}\", garde o ficheiro descargado,\nvaia á páxina especial Special:Import do wiki de destino e cárgueo. A continuación, engada o seguinte texto na páxina MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nDebe ter os permisos axeitados no wiki de destino (incluído o dereito de modificar as mensaxes do sistema) e a importación desde a carga de ficheiros debe estar activada.",
"gadgets-export-download": "Descargar",
+ "apihelp-query+gadgetcategories-description": "Retorna unha lista de categorías de trebellos.",
+ "apihelp-query+gadgetcategories-param-prop": "Que información de categoría obter:\n;name:Nome interno da categoría.\n;title:Título da categoría.\n;members:Número de trebellos na categoría.",
+ "apihelp-query+gadgetcategories-param-names": "Nomes de categorías a consultar.",
+ "apihelp-query+gadgetcategories-example-1": "Obter unha lista de categorías de trebellos existentes",
+ "apihelp-query+gadgetcategories-example-2": "Obter toda a información sobre categorías nomeadas \"foo\" e \"bar\"",
"apihelp-query+gadgets-description": "Retornar unha lista dos trebellos usados nesta wiki.",
+ "apihelp-query+gadgets-param-prop": "Que información obter do trebello:\n;id:Identificador interno de trebello.\n;metadata:Metadatos do trebello.\n;desc:Descrición do trebello transformada en HTML (pode ser lento, usar só se é necesario realmente).",
+ "apihelp-query+gadgets-param-categories": "De que categorías consultar os trebellos.",
+ "apihelp-query+gadgets-param-ids": "Identificadores dos trebellos a consultar.",
"apihelp-query+gadgets-param-allowedonly": "Listar só os trebellos permitidos para o usuario actual.",
"apihelp-query+gadgets-param-enabledonly": "Listar só os trebellos habilitados polo usuario actual.",
"apihelp-query+gadgets-example-1": "Amosar unha lista de trebellos xunto coas súas descricións",
"apihelp-query+gadgets-example-2": "Amosar unha lista de trebellos con tódalas propiedades posibles",
"apihelp-query+gadgets-example-3": "Amosar unha lista de trebellos que pertenzan á categoría \"foo\"",
"apihelp-query+gadgets-example-4": "Amosar información sobre os trebellos \"foo\" e \"bar\"",
- "apihelp-query+gadgets-example-5": "Amosar unha lista dos trebellos habilitados para o usuario actual"
+ "apihelp-query+gadgets-example-5": "Amosar unha lista dos trebellos habilitados para o usuario actual",
+ "right-gadgets-edit": "Editar as páxinas de JavaScript e CSS dos trebellos",
+ "action-gadgets-edit": "editar a páxina de JavaScript ou CSS deste trebello",
+ "right-gadgets-definition-edit": "Editar as definicións dos trebellos",
+ "action-gadgets-definition-edit": "editar a definición deste trebello"
}
diff --git a/extensions/Gadgets/i18n/he.json b/extensions/Gadgets/i18n/he.json
index 519470b4..7443ae78 100644
--- a/extensions/Gadgets/i18n/he.json
+++ b/extensions/Gadgets/i18n/he.json
@@ -18,9 +18,30 @@
"gadgets-required-rights": "{{PLURAL:$2|נדרשת ההרשאה הבאה|נדרשות ההרשאות הבאות}}:\n\n$1",
"gadgets-required-skins": "זמין {{PLURAL:$2|בערכות העיצוב הבאות: $1|בערכת העיצוב $1}}",
"gadgets-default": "מופעל לכולם כברירת מחדל.",
+ "gadgets-legacy": "הגאדג'ט לא נטען. נא לעדכן לשימוש ב־ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) מידע נוסף])",
"gadgets-export": "יצוא",
"gadgets-export-title": "יצוא גאדג'טים",
"gadgets-not-found": "הגאדג׳ט \"$1\" לא נמצא.",
"gadgets-export-text": "כדי לייצא את הגאדג׳ט $1, יש ללחוץ על הלחצן \"{{int:gadgets-export-download}}\", לשמור את הקובץ שהתקבל,\nלגשת אל Special:Import באתר הוויקי המיועד ולהעלות אותו. ואז להוסיף את הדברים הבאים לדף MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nעליך להיות עם הרשאות מתאימות באתר הוויקי המיועד (לרבות הרשאות לעריכת הודעות מערכת) והאפשרות לייבוא מקובץ חייבת להיות מופעלת.",
- "gadgets-export-download": "הורדה"
+ "gadgets-export-download": "הורדה",
+ "apihelp-query+gadgetcategories-description": "החזרת רשימת קטגוריות של גדג'טים.",
+ "apihelp-query+gadgetcategories-param-prop": "איזה מידע על גאדג'טים לקבל:\n;name:שם קטגוריה פנימי.\n;title:שם הקטגוריה.\n;members:מספר הגאדג'טים בקטגוריה.",
+ "apihelp-query+gadgetcategories-param-names": "שמות הקטגוריות לאחזור.",
+ "apihelp-query+gadgetcategories-example-1": "קבלת רשימת קטגוריות גאדג'טים קיימות",
+ "apihelp-query+gadgetcategories-example-2": "קבלת כל המידע על קטגוריות בשם \"foo\" ו־\"bar\"",
+ "apihelp-query+gadgets-description": "קבלת רשימת גאדג'טים שמשמשים בוויקי הזה.",
+ "apihelp-query+gadgets-param-prop": "איזה מידע על גאדג'טים לקבל:\n;id:מזהה גאדג'ט פנימי.\n;metadata:המטא־נתונים של הגאדג'ט.\n;desc:תיאור הגאדג'ט ב־HTML (זה יכול להיות אטי, יש להשתמש בזה רק אם זה נחוץ).",
+ "apihelp-query+gadgets-param-categories": "מאיזו קטגוריה לאחזר את הגאדג'טים.",
+ "apihelp-query+gadgets-param-ids": "מזהים של גאדג'טים לאחזור.",
+ "apihelp-query+gadgets-param-allowedonly": "לרשום רק גאדג'טים שמותרים למשתמש הנוכחי.",
+ "apihelp-query+gadgets-param-enabledonly": "לרשום רק גאדג'טים שהמשתמש הנוכחי הפעיל.",
+ "apihelp-query+gadgets-example-1": "קבלת רשימת גאדג'טים עם התיאורים שלהם",
+ "apihelp-query+gadgets-example-2": "קבלת רשימת גאדג'טים עם כל המאפיינים שלהם",
+ "apihelp-query+gadgets-example-3": "קבלת רשימת גאדג'טים בקטגוריה \"foo\"",
+ "apihelp-query+gadgets-example-4": "קבלת מידע על הגאדג'טים \"foo\" ו־\"bar\"",
+ "apihelp-query+gadgets-example-5": "קבלת רשימת גאדג'טים שמופעלים למשתמש הנוכחי",
+ "right-gadgets-edit": "עריכת דפי JavaScript ו־CSS של גאדג'טים",
+ "action-gadgets-edit": "לערוף את דף ה־JavaScript או דף ה־CSS של הגאדג'ט הזה",
+ "right-gadgets-definition-edit": "עריכת הגדרות גאדג'טים",
+ "action-gadgets-definition-edit": "לערוך את הגדרת הגאדג'ט הזה"
}
diff --git a/extensions/Gadgets/i18n/hi.json b/extensions/Gadgets/i18n/hi.json
index 9b63e9b6..e7d5e200 100644
--- a/extensions/Gadgets/i18n/hi.json
+++ b/extensions/Gadgets/i18n/hi.json
@@ -5,7 +5,8 @@
"Kaustubh",
"Mayur",
"Shyam",
- "Siddhartha Ghai"
+ "Siddhartha Ghai",
+ "Hindustanilanguage"
]
},
"gadgets-desc": "सदस्यों को उनकी [[Special:Preferences#mw-prefsection-gadgets|वरीयताओं]] में से चुनिंदा [[Special:Gadgets|CSS और जावालिपि जुगत]] चुनने दो।",
@@ -22,5 +23,13 @@
"gadgets-export-title": "गैजेट निर्यात",
"gadgets-not-found": "गैजेट \"$1\" मिला नहीं ।",
"gadgets-export-text": "$1 उपकरण निर्यात करने के लिये \"{{int:gadgets-export-download}}\" बटन पर क्लिक करें, डाउनलोड की गई फ़ाइल सहेजें, लक्ष्य विकि पर Special:Import पर जाएँ और फ़ाइल अपलोड करें। तत्पश्चात MediaWiki:Gadgets-definition में निम्न पाठ जोड़ें:\n<pre>$2</pre>\nआपके पास लक्ष्य विकि पर उपयुक्त अधिकार होने चाहिये (जिसमें अंतरफल संदेशों को सम्पादित करने का अधिकार शामिल है) और विकि पर फ़ाइल द्वारा आयात सक्षम होना चाहिये।",
- "gadgets-export-download": "डाउनलोड"
+ "gadgets-export-download": "डाउनलोड",
+ "apihelp-query+gadgetcategories-description": "गैजेट श्रेणियों की सूची परिणाम-स्वरूप लाती है",
+ "apihelp-query+gadgetcategories-param-names": "श्रेणियों के नाम जिन्हें निकालना है।",
+ "apihelp-query+gadgetcategories-example-1": "मौजूदा गैजेट श्रेणियों की सूची प्राप्त करें",
+ "apihelp-query+gadgetcategories-example-2": "\"foo\" और \"bar\" श्रेणियों के बारे में पूरी जानकारी प्राप्त करें",
+ "apihelp-query+gadgets-description": "परिणाम-स्वरूप इस विकि पर प्रयोग किए जाने वाले सभी गैजेटों की सूची प्राप्त करें।",
+ "apihelp-query+gadgets-param-categories": "किन श्रेणियों के गैजेट प्राप्त करें",
+ "apihelp-query+gadgets-param-ids": "प्राप्त करने के गैजेटों के आई०डी०।",
+ "apihelp-query+gadgets-param-allowedonly": "वर्तमान सदस्य को अनुमति-प्राप्त गैजेटों को सूचीबद्ध करें।"
}
diff --git a/extensions/Gadgets/i18n/hu.json b/extensions/Gadgets/i18n/hu.json
index 65b28f2e..7a535a84 100644
--- a/extensions/Gadgets/i18n/hu.json
+++ b/extensions/Gadgets/i18n/hu.json
@@ -19,6 +19,7 @@
"gadgets-required-rights": "A következő {{PLURAL:$2|jogosultságra|jogosultságokra}} van szükség:\n\n$1",
"gadgets-required-skins": "{{PLURAL:$2|$1 felületen érhető el|Az alábbi felületeken érhető el: $1}}.",
"gadgets-default": "Mindenki számára engedélyezett alapértelmezettként.",
+ "gadgets-legacy": "A segédeszköz nincs betöltve. Állítsd át ResourceLoaderre. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) További információk])",
"gadgets-export": "Exportálás",
"gadgets-export-title": "Segédeszköz exportálása",
"gadgets-not-found": "A(z) „$1“ segédeszköz nem található.",
diff --git a/extensions/Gadgets/i18n/id.json b/extensions/Gadgets/i18n/id.json
index 3441d25d..a6f9d5dd 100644
--- a/extensions/Gadgets/i18n/id.json
+++ b/extensions/Gadgets/i18n/id.json
@@ -10,7 +10,7 @@
"gadgets-desc": "Memungkinkan pengguna memilih [[Special:Gadgets|perkakas CSS dan JavaScript]] melalui [[Special:Preferences#mw-prefsection-gadgets|preferensi]] mereka",
"prefs-gadgets": "Perkakas",
"gadgets-prefstext": "Berikut adalah daftar perkakas istimewa yang dapat Anda aktifkan untuk akun Anda. Semua perkakas tersebut sebagian besar berbasis JavaScript sehingga Anda harus mengaktifkan JavaScript pada penjelajah Anda untuk dapat menjalankannya. Perhatikan bahwa berbagai perkakas tersebut tidak memiliki pengaruh terhadap halaman preferensi ini.\n\nJuga perhatikan bahwa perkakas istimewa ini bukanlah bagian dari perangkat lunak MediaWiki dan biasanya dikembangkan dan dipelihara oleh para pengguna di wiki lokal Anda. Pengurus lokal dapat menyunting perkakas yang tersedia melalui [[MediaWiki:Gadgets-definition]] dan [[Special:Gadgets]].",
- "gadgets": "Perkakas",
+ "gadgets": "Alat (Perkakas)",
"gadgets-title": "Perkakas",
"gadgets-pagetext": "Berikut adalah daftar perkakas istimewa yang dapat diaktifkan pengguna melalui [[Special:Preferences#mw-prefsection-gadgets|halaman preferensi]] mereka sebagaimana didefinisikan oleh [[MediaWiki:Gadgets-definition]]. Tinjauan berikut memberikan kemudahan akses ke dalam halaman pesan sistem yang mendefinisikan deskripsi dan kode masing-masing perkakas.",
"gadgets-uses": "Penggunaan",
diff --git a/extensions/Gadgets/i18n/ilo.json b/extensions/Gadgets/i18n/ilo.json
index 8708397e..fa73bc33 100644
--- a/extensions/Gadgets/i18n/ilo.json
+++ b/extensions/Gadgets/i18n/ilo.json
@@ -6,14 +6,15 @@
},
"gadgets-desc": "Agipalubos kadagiti agar-aramat nga agpili kadagiti naiduma a [[Special:Gadgets|CSS ken JavaScript a gadget]] iti [[Special:Preferences#mw-prefsection-gadgets|kakaykayatanda]]",
"prefs-gadgets": "Dagiti gadget",
- "gadgets-prefstext": "Dita baba ket listaan kadagiti naipangruna a gadget a mabalinmo a pakabaelan iti pakabilangam.\nDagitoy a gadget ket naibatay iti JavaScript, isu a masapul a pakabaelan ti JavaScript idiay \"pagbasabasam\" tapno agbalin dagitoy.\nLaglagipen a dagitoy a gadget ket awan ti pagbanaganna iti daytoy panid ti kakaykayatan.\n\nLaglagipen pay a dagitoy a naipangruna a gadget ket saan a paset ti sopwer ti MediaWiki, ken kadawyan a pinarang-ay ken tinartaripato babaen dagiti agar-aramat iti lokal a wiki.\nDagiti lokal nga administrador ket mabalinda nga urnosen dagiti [[MediaWiki:Gadgets-definition|panangipalplawag]] ken dagiti [[Special:Gadgets|deskripsion]] dagiti magun-od a gadget.",
+ "gadgets-prefstext": "Dita baba ket listaan kadagiti naipangruna a gadget a mabalinmo a pakabaelan para iti pakabilangam.\nDagitoy a gadget ket naibatay iti JavaScript, isu a masapul a pakabaelan ti JavaScript iti \"pagbasabasam\" tapno agbalin dagitoy.\nLaglagipen a dagitoy a gadget ket awan ti pagbanaganna iti daytoy panid ti kakaykayatan.\n\nLaglagipen pay a dagitoy a naipangruna a gadget ket saan a paset ti sopwer ti MediaWiki, ken kadawyan a pinarang-ay ken tinartaripato babaen dagiti agar-aramat iti lokal a wiki.\nDagiti lokal nga administrador ket mabalinda nga urnosen dagiti [[MediaWiki:Gadgets-definition|depinision]] ken dagiti [[Special:Gadgets|deskripsion]] dagiti magun-od a gadget.",
"gadgets": "Dagiti gadget",
"gadgets-title": "Dagiti gadget",
- "gadgets-pagetext": "Dita baba ket listaan dagiti naipangruna a gadget a mabalin a pakabaelan dagiti agar-aramat iti bukodda a [[Special:Preferences#mw-prefsection-gadgets|panid ti kakaykayatan]], a kas naipalawag babaen dagiti [[MediaWiki:Gadgets-definition|pannakaipalawag]].\nDaytoy a pakabuklan ket mangited iti nalaka a panagserrek kadagiti panid ti mensahe ti sistema a mangipalawag ti tungngal maysa a deskripsion ken kodigo ti gadget.",
- "gadgets-uses": "Us-usar",
- "gadgets-required-rights": "Masapul ti sumaganad a {{PLURAL:$2|karbengan|karkarbengan}}:\n\n$1",
- "gadgets-required-skins": "Mabalin a magun-od {{PLURAL:$2|iti $1 a kudil|kadagiti sumaganad a kudil: $1}}.",
+ "gadgets-pagetext": "Dita baba ket listaan dagiti naipangruna a gadget a mabalin a pakabaelan dagiti agar-aramat iti bukodda a [[Special:Preferences#mw-prefsection-gadgets|panid ti kakaykayatan]], a kas naipalawag babaen dagiti [[MediaWiki:Gadgets-definition|depinision]].\nDaytoy a pakabuklan ket mangited iti nalaka a panagserrek kadagiti panid ti mensahe ti sistema a mangipalawag ti tungngal maysa a deskripsion ken kodigo ti gadget.",
+ "gadgets-uses": "Agus-usar ti",
+ "gadgets-required-rights": "Masapul {{PLURAL:$2|ti sumaganad a karbengan|dagiti sumaganad a karbengan}}:\n\n$1",
+ "gadgets-required-skins": "Magun-od {{PLURAL:$2|iti $1 a kudil|kadagiti sumaganad a kudil: $1}}.",
"gadgets-default": "Napakabaelan para iti amin babaen ti kasisigud.",
+ "gadgets-legacy": "Saan a naikarga ti gadget. Pangngaasi nga iyakar iti ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Agadal pay ti adu])",
"gadgets-export": "Eksport",
"gadgets-export-title": "Eksport ti gadget",
"gadgets-not-found": "Saan a nabirukan ti gadget ti \"$1\".",
@@ -33,6 +34,10 @@
"apihelp-query+gadgets-example-1": "Mangala kadagiti gadget a kakuyog dagiti deskripsion",
"apihelp-query+gadgets-example-2": "Mangala kadagiti gadget nga addaan kadagiti amin a mabalin a tagtagikua",
"apihelp-query+gadgets-example-3": "Mangala ti listaan dagiti gadget a tagikua ti kategoria \"foo\"",
- "apihelp-query+gadgets-example-4": "Mangala kadagiti pakaammo a manipanggep kadagiti gadegt ti \"foo\" ken \"bar\"",
- "apihelp-query+gadgets-example-5": "Mangala ti listaan dagiti gadget a pinakabaelan iti agdama nga agar-aramat."
+ "apihelp-query+gadgets-example-4": "Mangala kadagiti pakaammo a manipanggep kadagiti gadget ti \"foo\" ken \"bar\"",
+ "apihelp-query+gadgets-example-5": "Mangala ti listaan dagiti gadget a pinakabaelan iti agdama nga agar-aramat.",
+ "right-gadgets-edit": "Urnosen dagiti panid ti JavaScript ken CSS ti gadget",
+ "action-gadgets-edit": "urnosen daytoy a panid ti JavaScript wenno CSS ti gadget",
+ "right-gadgets-definition-edit": "Urnosen dagiti depinision ti gadget",
+ "action-gadgets-definition-edit": "urnosen daytoy a depinision ti gadget"
}
diff --git a/extensions/Gadgets/i18n/it.json b/extensions/Gadgets/i18n/it.json
index 603d860e..2ef9d479 100644
--- a/extensions/Gadgets/i18n/it.json
+++ b/extensions/Gadgets/i18n/it.json
@@ -5,7 +5,8 @@
"BrokenArrow",
"Darth Kule",
"Melos",
- "Nemo bis"
+ "Nemo bis",
+ "Statix64"
]
},
"gadgets-desc": "Consente agli utenti di selezionare [[Special:Gadgets|accessori CSS e JavaScript]] nelle proprie [[Special:Preferences#mw-prefsection-gadgets|preferenze]]",
@@ -22,5 +23,9 @@
"gadgets-export-title": "Esporta accessorio",
"gadgets-not-found": "Accessorio \"$1\" non trovato.",
"gadgets-export-text": "Per esportare l'accessorio $1, fai clic sul pulsante \"{{int:gadgets-export-download}}\", salva il file scaricato,\nvai alla pagina Special:Import nella wiki di destinazione e carica il file. Poi aggiungi quanto segue alla pagina MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nDevi disporre dei permessi appropriati nella wiki di destinazione (incluso il diritto di modificare i messaggi di sistema) e l'importazione da file deve essere abilitata.",
- "gadgets-export-download": "Scarica"
+ "gadgets-export-download": "Scarica",
+ "right-gadgets-edit": "Modifica i gadget JavaScript e le pagine CSS",
+ "action-gadgets-edit": "modificare questo gadget Javascript o pagina CSS",
+ "right-gadgets-definition-edit": "Modifica le definizioni dei gadget",
+ "action-gadgets-definition-edit": "modificare la definizione di questo gadget"
}
diff --git a/extensions/Gadgets/i18n/jut.json b/extensions/Gadgets/i18n/jut.json
index 2e90e565..842e5720 100644
--- a/extensions/Gadgets/i18n/jut.json
+++ b/extensions/Gadgets/i18n/jut.json
@@ -1,13 +1,14 @@
{
"@metadata": {
"authors": [
- "Huslåke"
+ "Huslåke",
+ "Jyllanj"
]
},
- "prefs-gadgets": "Gøreter",
+ "prefs-gadgets": "Gadgets",
"gadgets-prefstext": "Nedenstående er en liste over de gadgets som du kan aktivere for din brugerkonto. Da disse gadgets hovedsageligt er baseret på JavaScript skal du slå JavaScript til i din browser for at få dem til at virke. Bemærk at disse gadgets ikke vil have nogen effekt på denne side (indstillinger).\n\nBemærk også at disse specielle gadgets ikke er en del af MediaWiki-softwaren og at de typisk bliver vedligeholdt af brugere på din lokale wiki. Lokale administratorer kan redigere tilgængelige gadgets med [[MediaWiki:Gadgets-definition]] og [[Special:Gadgets]].",
- "gadgets": "Gøreter",
- "gadgets-title": "Gøreter",
+ "gadgets": "Gadgets",
+ "gadgets-title": "Gadgets",
"gadgets-pagetext": "Nedenstående er en liste med de specielle gadgets som brugere kan aktivere i deres indstillinger som defineret i [[MediaWiki:Gadgets-definition]]. Denne oversigtsside giver simpel adgang til de systembeskeder som definerer hver gadgets beskrivelse og kode.",
- "gadgets-uses": "Brugere"
+ "gadgets-uses": "Bruge"
}
diff --git a/extensions/Gadgets/i18n/kk-cyrl.json b/extensions/Gadgets/i18n/kk-cyrl.json
index 03e31ee9..c6fc4daa 100644
--- a/extensions/Gadgets/i18n/kk-cyrl.json
+++ b/extensions/Gadgets/i18n/kk-cyrl.json
@@ -14,6 +14,6 @@
"gadgets-default": "Әркімге автоматты түрде қосылады.",
"gadgets-export": "Экспорттау",
"gadgets-export-title": "Гаджетті экспорттау",
- "gadgets-not-found": "\"$1\" гаджеті табылмады.",
+ "gadgets-not-found": "«$1» гаджеті табылмады.",
"gadgets-export-download": "Түсіру"
}
diff --git a/extensions/Gadgets/i18n/ko.json b/extensions/Gadgets/i18n/ko.json
index e1e38074..c7d34621 100644
--- a/extensions/Gadgets/i18n/ko.json
+++ b/extensions/Gadgets/i18n/ko.json
@@ -5,7 +5,9 @@
"IRTC1015",
"Klutzy",
"Kwj2772",
- "아라"
+ "아라",
+ "SeoJeongHo",
+ "Kurousagi"
]
},
"gadgets-desc": "각 사용자가 [[Special:Gadgets|CSS와 자바스크립트 소도구]]를 [[Special:Preferences#mw-prefsection-gadgets|사용자 환경 설정]]을 통해 사용할 수 있습니다",
@@ -22,5 +24,9 @@
"gadgets-export-title": "소도구 내보내기",
"gadgets-not-found": "\"$1\" 소도구를 찾을 수 없습니다.",
"gadgets-export-text": "$1 소도구를 내보내려면 \"{{int:gadgets-export-download}}\" 버튼을 클릭하여 다운로드된 파일을 저장한 후,\n내보내려는 위키에서 Special:Import로 가서 올리십시오. 그 다음 MediaWiki:Gadgets-definition 문서에 다음을 추가하세요:\n<pre>$2</pre>\n해당 위키에서 시스템 메시지 편집 등 특정 권한을 갖고 있어야 합니다. 또한 파일 올리기를 통한 가져오기 기능이 활성화되어 있어야 합니다.",
- "gadgets-export-download": "다운로드"
+ "gadgets-export-download": "다운로드",
+ "right-gadgets-edit": "자바 스크립트와 CSS 페이지 가젯 편집",
+ "action-gadgets-edit": "이 자바 스크립트나 CSS 페이지 편집",
+ "right-gadgets-definition-edit": "소도구 정의 편집",
+ "action-gadgets-definition-edit": "이 가젯의 정의 편집"
}
diff --git a/extensions/Gadgets/i18n/ksh.json b/extensions/Gadgets/i18n/ksh.json
index 8696091e..b3e2237c 100644
--- a/extensions/Gadgets/i18n/ksh.json
+++ b/extensions/Gadgets/i18n/ksh.json
@@ -5,12 +5,12 @@
"Purodha"
]
},
- "gadgets-desc": "En iere [[Special:Preferences#mw-prefsection-gadgets|Enstellunge]] künne Metmaacher [[Special:Gadgets|CSS- un JavaScrip-Gadgets]] en- un ußschallde.",
+ "gadgets-desc": "En iere [[Special:Preferences#mw-prefsection-gadgets|Enschtällong]] künne Metmaacher [[Special:Gadgets|CSS- un JavaScrip-Gadgets]] en- un ußschallde.",
"prefs-gadgets": "Gadgets",
- "gadgets-prefstext": "Heh is en Leß met beschtemmpte <i xml:lang=\"en\" lang=\"en\">Gadgets</i>,\ndi för jehde Metmaacher enjeschalldt wähde könne.\nDi boue miehts op JavaSkrepte op, drom moß mer dat em Brauser\nenschallde, domet dat klapp.\n\n<i xml:lang=\"en\" lang=\"en\">Gadgets</i> werke nimmohls op dä Sigg\nmet de päsöhnlesche Enschtällonge.\n\nOpjepaß! <i xml:lang=\"en\" lang=\"en\">Gadgets</i>, sin kei Schtöck vum MedijaWikki,\nsöndern sin extra em Wikki enschtalleht, un sin vun de Wikki-Bedrihver\nudder de Metmaacher ußjedaach un enjeerescht.\nWä et Rääsch doför hät, kann se övver de Sigge\n[[MediaWiki:Gadgets-definition|<i xml:lang=\"en\" lang=\"en\">Gadgets</i> fäßlääje]]\nun [[Special:Gadgets|<i xml:lang=\"en\" lang=\"en\">Gadgets</i> beschriewe]]\nenreeschte, un verändere.",
+ "gadgets-prefstext": "Heh is en Leß met beschtemmpte <i xml:lang=\"en\" lang=\"en\">Gadgets</i>,\ndi för jehde Metmaacher enjeschalldt wähde könne.\nDi boue miehts op JavaSkrepte op, drom moß mer dat em Brauser\nenschallde, domet dat klapp.\n\n<i xml:lang=\"en\" lang=\"en\">Gadgets</i> werke nimmohls op dä Sigg\nmet de päsöhnlesche Enschtällonge.\n\nOpjepaß! <i xml:lang=\"en\" lang=\"en\">Gadgets</i>, sin kei Schtök vum MedijaWikki,\nsöndern sin extra em Wikki enschtalleht, un sin vun de Wikki-Bedrihver\nudder de Metmaacher ußjedaach un enjeerescht.\nWä et Rääsch doför hät, kann se övver de Sigge\n[[MediaWiki:Gadgets-definition|<i xml:lang=\"en\" lang=\"en\">Gadgets</i> fäßlääje]]\nun [[Special:Gadgets|<i xml:lang=\"en\" lang=\"en\">Gadgets</i> beschriewe]]\nenreeschte, un verändere.",
"gadgets": "<i lang=\"en\">Gadgets</i>",
"gadgets-title": "<i lang=\"en\">Gadgets</i>",
- "gadgets-pagetext": "He kütt en Liss met spezielle <i lang=\"en\">Gadgets</i>,\ndi jede Metmaacher övver sing\n[[Special:Preferences#mw-prefsection-gadgets|päsönlije Enstellunge]] enschallte kann.\nSe wääde övver [[MediaWiki:Gadgets-definition]] enjerecht.\nDie Övverseech hee jit enne direkte Zohjang op di Texte em Wiki,\nwo de Projramme, un de Erklierunge för de <i lang=\"en\">Gadgets</i> dren enthallde\nsin.",
+ "gadgets-pagetext": "He kütt en Liss met spezielle <i lang=\"en\">Gadgets</i>,\ndi jede Metmaacher övver sing\n[[Special:Preferences#mw-prefsection-gadgets|päsönlije Enstellunge]] enschallte kann.\nSe wääde övver [[MediaWiki:Gadgets-definition]] enjerecht.\nDi Övverseesch hee jit enne direkte Zohjang op di Täxte em Wikki,\nwo de Projramme, un de Erklierunge för de <i lang=\"en\">Gadgets</i> dren enthallde\nsin.",
"gadgets-uses": "Bruch",
"gadgets-required-rights": "Bruch {{PLURAL:$2|dat Rääsch:|de Rääschde:|kein besönder Rääschde.}}\n\n$1",
"gadgets-required-skins": "Kann jebruch wääde met {{PLURAL:$2|dä Bedeenbovverfläsch:|dä Bedeenbovverfläsche:|keine vun dä Bedeenbovverfläsche.}} $1",
@@ -18,9 +18,9 @@
"gadgets-export": "Äxpottehre",
"gadgets-export-title": "<i lang=\"en\">Gadgets</i> expotteere",
"gadgets-not-found": "<i lang=\"en\">Gadget</i> „$1“ nit jefonge.",
- "gadgets-export-text": "Öm dat <i lang=\"en\">Gadget</i> „$1“ ze expotteere, donn op dä Knopp „{{int:gadgets-export-download}}“ klecke, un donn dann de eronger jelaade Dattei faßhallde. Dann jangk en dat Wiki, woh De dat empotteere wells, un doh op die Extrasigg <code lang=\"en\">Spezial:Import</code>, un donn se huh laade. Dann deihs De en däm Wiki op dä Sigg <code lang=\"en\">MediaWiki:Gadgets-definition</code> dat heh dobei:\n<pre>$2</pre>\nDo moß en däm Wiki de nüüdijje Rääschde han, och dat Rääsch, aan Täxte un Nohreeschte vum Systeem ze ändere, un et Empoteere vun huhjelaade Dateije moß zohjelohße sin.",
- "gadgets-export-download": "Eronger laade",
+ "gadgets-export-text": "Öm dat <i lang=\"en\">Gadget</i> „$1“ ze expotteere, donn op dä Knopp „{{int:gadgets-export-download}}“ klecke, un donn dann de eronger jelaade Dattei faßhallde. Dann jangk en dat Wiki, woh De dat empotteere wells, un doh op di {{int:specialpage}} <code lang=\"en\">Spezial:Import</code>, un donn se huh laade. Dann deihs De en däm Wiki op dä Sigg <code lang=\"en\">MediaWiki:Gadgets-definition</code> dat heh dobei:\n<pre>$2</pre>\nDo moß en däm Wiki de nüüdijje Rääschde han, och dat Rääsch, aan Täxte un Nohreeschte vum Systeem ze ändere, un et Empoteere vun huhjelaade Dateije moß zohjelohße sin.",
+ "gadgets-export-download": "Eronger lahde",
"apihelp-query+gadgetcategories-param-names": "Nahme vun dä Saachjroppe zom Holle.",
"apihelp-query+gadgetcategories-example-2": "Holl alle Aanjahbe övver de Saachjroppe met dä Nahme „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">foo</code>“ un „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">bar</code>“.",
- "apihelp-query+gadgets-param-prop": "What gadget information to get:\n;id:Internal gadget ID.\n;metadata:The gadget metadata.\n;desc:Gadget description transformed into HTML (can be slow, use only if really needed).\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Bgadgets-param-prop/en\n-->"
+ "apihelp-query+gadgets-param-prop": "What gadget information ze holle:\n;id:Internal gadget Kännong.\n;metadata:De gadget Mettadahte.\n;desc:Gadget description ömjewandelld en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i>. Weil et lahm es un lang bruch, donn dat blohß, wann nühdesch.\n<!-- \nhttps://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-query%2Bgadgets-param-prop/en\n-->"
}
diff --git a/extensions/Gadgets/i18n/lb.json b/extensions/Gadgets/i18n/lb.json
index 65310c13..fdd5bac6 100644
--- a/extensions/Gadgets/i18n/lb.json
+++ b/extensions/Gadgets/i18n/lb.json
@@ -22,5 +22,9 @@
"gadgets-export-text": "Fir de Gadget $1 z'exportéieren klickt w.e.g. op de(n) \"{{int:gadgets-export-download}}\"-Knäppchen, späichert den erofgelueden Fichier, gitt op Spezial:Import op der Zil-Wiki a luet en do erop. Duerno setzt der op d'MediaWiki:Gadgets-Definitiouns Säit dëst derbäi:<pre>$2</pre>\nDir musst déi erfuerdert Rechter(inklusiv d'Recht fir Systemmessagen z'änneren) op der Zil-Wiki hunn an den Import vun eropgelueden Fichiere muss ageschalt sinn.",
"gadgets-export-download": "Eroflueden",
"apihelp-query+gadgets-param-allowedonly": "Nëmme Gadgeten opzielen déi fir den aktuelle Benotzer erlaabt sinn.",
- "apihelp-query+gadgets-example-5": "D'Lëscht vun de Gadgete kréien déi den aktuelle Benotzer aktivéiert huet"
+ "apihelp-query+gadgets-example-5": "D'Lëscht vun de Gadgete kréien déi den aktuelle Benotzer aktivéiert huet",
+ "right-gadgets-edit": "JavaScript- an CSS-Säite vu Gadgeten änneren",
+ "action-gadgets-edit": "dëse JavaScript oder dës CSS-Säit vum Gadget änneren",
+ "right-gadgets-definition-edit": "Definitioune vu Gadgeten änneren",
+ "action-gadgets-definition-edit": "dës Definitioun vum Gadget änneren"
}
diff --git a/extensions/Gadgets/i18n/lt.json b/extensions/Gadgets/i18n/lt.json
index 2eb8a066..68786537 100644
--- a/extensions/Gadgets/i18n/lt.json
+++ b/extensions/Gadgets/i18n/lt.json
@@ -3,7 +3,8 @@
"authors": [
"Eitvys200",
"Homo",
- "Vpovilaitis"
+ "Vpovilaitis",
+ "Albertas"
]
},
"gadgets-desc": "Leidžia naudotojams pasirinkti savo [[Special:Gadgets|CSS ir JavaScript priemones]] jų [[Special:Preferences#mw-prefsection-gadgets|nustatymuose]]",
@@ -13,8 +14,33 @@
"gadgets-title": "Priemonės",
"gadgets-pagetext": "Žemiau yra sąrašas specialių priemonių, kurias naudotojai gali įjungti savo [[Special:Preferences#mw-prefsection-gadgets|nustatymų puslapyje]]. Jos apibūdintos [[MediaWiki:Gadgets-definition|priemonių aprašyme]]. Ši apžvalga suteikia lengvą priėjimą prie sisteminių pranešimų puslapių, kuriuose pateiktas kiekvienos priemonės trumpas aprašas ir kodas.",
"gadgets-uses": "Panaudojimai",
+ "gadgets-required-rights": "{{PLURAL:$2|Reikalinga ši teisė|Reikalingos šios teisės}}:\n\n$1",
+ "gadgets-required-skins": "Prieinama {{PLURAL:$2|$1 stiliuje|šiuose stiliuose: $1}}.",
+ "gadgets-default": "Įgalinti visiems pagal nutylėjimą.",
+ "gadgets-legacy": "Priemonės nėra įkeltos. Prašome migruoti prie ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Sužinoti daugiau])",
"gadgets-export": "Eksportas",
- "gadgets-export-title": "Įtaiso eksportas",
+ "gadgets-export-title": "Priemonių eksportas",
"gadgets-not-found": "Įtaisas \" $1 \" nerastas.",
- "gadgets-export-download": "Parsisiųsti"
+ "gadgets-export-text": "Norėdami eksportuoti $1 įrankį, paspauskite \"{{int:gadgets-export-download}}\" mygtuką, išsisaugokite atisiųstą failą,\nnueikite į Special:Import tikslo vikyje ir įkelkite jį. Tada pridėkite MediaWiki:Gadgets-definition puslapį:\n<pre>$2</pre>\nTurite turėti atitinkamas teises tikslo vikyje (įskaitant teisę redaguoti sistemines žinutes) ir importavimas iš įkeltų failų turi būti aktyvuotas.",
+ "gadgets-export-download": "Parsisiųsti",
+ "apihelp-query+gadgetcategories-description": "Grąžina įrankių kategorijų sąrašą.",
+ "apihelp-query+gadgetcategories-param-prop": "Kurių įrankių kategorijų informaciją gauti:\n;name:Vidinis kategorijos vardas.\n;title:Kategorijos pavadinimas.\n;members:Įrankių skaičius kategorijoje.",
+ "apihelp-query+gadgetcategories-param-names": "Vardai kategorijų, kurias gauti.",
+ "apihelp-query+gadgetcategories-example-1": "Gauti sąrašą egzistuojančių įrankių kategorijų",
+ "apihelp-query+gadgetcategories-example-2": "Gauti visą informaciją apie kategorijas pavadintas \"foo\" ir \"bar\"",
+ "apihelp-query+gadgets-description": "Grąžina sąrašą įrankių, naudojamų šiame vikyje.",
+ "apihelp-query+gadgets-param-prop": "Kurią įrankių informaciją gauti:\n;id:Vidinis įrankio ID.\n;metadata:Įrankio metaduomenys.\n;desc:Įrankio aprašymas transformuotas į HTML (gali veikti lėtai, naudoti tik jeigu iš tiesų reikia).",
+ "apihelp-query+gadgets-param-categories": "Iš kurių kategorijų gauti įrankius.",
+ "apihelp-query+gadgets-param-ids": "ID įrankių, kuriuos gauti.",
+ "apihelp-query+gadgets-param-allowedonly": "Sąrašas įrankių, kuriuos leisti dabartiniam naudotojui.",
+ "apihelp-query+gadgets-param-enabledonly": "Rodyti tik įrankius aktyvuotus dabartinio naudotojo.",
+ "apihelp-query+gadgets-example-1": "Gauti įrankių su jų aprašymais sąrašą",
+ "apihelp-query+gadgets-example-2": "Gauti įrankių su visomis galimomis parinktimis sąrašą",
+ "apihelp-query+gadgets-example-3": "Gauti įrankių, priklausančių kategorijai \"foo\", sąrašą",
+ "apihelp-query+gadgets-example-4": "Gauti informaciją apie įrankius \"foo\" ir \"bar\"",
+ "apihelp-query+gadgets-example-5": "Gauti įrankių, aktyvuotų dabartinio naudotojo, sąrašą",
+ "right-gadgets-edit": "Redaguoti įrankio JavaScript ir CSS puslapius",
+ "action-gadgets-edit": "redaguoti šio įrankio JavaScript arba CSS puslapį",
+ "right-gadgets-definition-edit": "Redaguoti įrankių apibrėžimus",
+ "action-gadgets-definition-edit": "redaguoti šio įrankio apibrėžimą"
}
diff --git a/extensions/Gadgets/i18n/mk.json b/extensions/Gadgets/i18n/mk.json
index 6c86a47d..4e938038 100644
--- a/extensions/Gadgets/i18n/mk.json
+++ b/extensions/Gadgets/i18n/mk.json
@@ -15,6 +15,7 @@
"gadgets-required-rights": "{{PLURAL:$2|Го бара следново право|Ги бара следниве права}}:\n\n$1",
"gadgets-required-skins": "Достапно во {{PLURAL:$2|рувото $1|следниве рува: $1}}.",
"gadgets-default": "Достапно за сите по основно",
+ "gadgets-legacy": "Алатката не е вчитана. Преселете се на „Вчитувач на ресурси“ (ResourceLoader). ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Дознајте повеќе])",
"gadgets-export": "Извези",
"gadgets-export-title": "Извоз на алатка",
"gadgets-not-found": "Алатката „$1“ не е пронајдена.",
@@ -35,5 +36,9 @@
"apihelp-query+gadgets-example-2": "Дај список на алатки со сите можни својства",
"apihelp-query+gadgets-example-3": "Дај список на алатки што è припаѓаат на категоријата „foo“",
"apihelp-query+gadgets-example-4": "Дај информации за алатките „foo“ и „bar“",
- "apihelp-query+gadgets-example-5": "Дај список на алатки што ги има вклучено тековниот корисник."
+ "apihelp-query+gadgets-example-5": "Дај список на алатки што ги има вклучено тековниот корисник.",
+ "right-gadgets-edit": "Менување на JavaScript- и CSS-страниците на алатка",
+ "action-gadgets-edit": "менување на JavaScript- и CSS-страниците на алатка",
+ "right-gadgets-definition-edit": "Менување на определбите на алатка",
+ "action-gadgets-definition-edit": "менување на определбата на оваа алатка"
}
diff --git a/extensions/Gadgets/i18n/nap.json b/extensions/Gadgets/i18n/nap.json
new file mode 100644
index 00000000..c616ba4a
--- /dev/null
+++ b/extensions/Gadgets/i18n/nap.json
@@ -0,0 +1,44 @@
+{
+ "@metadata": {
+ "authors": [
+ "C.R.",
+ "Сербијана"
+ ]
+ },
+ "gadgets-desc": "Lassa scegliere a l'utente 'e [[Special:Gadgets|gadget CSS e JavaScript]] personalizzate int' 'e [[Special:Preferences#mw-prefsection-gadgets|preferenze]] 'e lloro",
+ "prefs-gadgets": "Gadget",
+ "gadgets-prefstext": "Ccà sotto sta n'elenco 'e gadget speciale ca putite appiccià p' 'o cunto vuosto. Sti gadget songo 'a cchiù parte basate 'n JavaScript, allora 'o JavaScript avess'a essere appicciato dint' 'o browser vuosto pe' pute faticà cu cheste.\nVedite buono ca sti gadget nun farranno affette int'a sta paggena 'e preferenze.\n\nVedite pure ca sti gadget speciale nun songo parte d' 'o software MediaWiki, e songo normalmente sviluppate e accunciate 'a ll'utente d' 'a wiki lucale d' 'a vosta. Ll'editore lucale putesser'edità [[MediaWiki:Gadgets-definition|definiziune]] e [[Special:Gadgets|descrizziune]] d' 'e gadget a disposiziona.",
+ "gadgets": "Gadget",
+ "gadgets-title": "Gadget",
+ "gadgets-pagetext": "Ccà abbascio nce sta n'elenco d' 'e gadget speciale pe' putè n'utente appiccià int' 'a [[Special:Preferences#mw-prefsection-gadgets|paggena 'e mpustaziune d' 'a soja]], comme è definito p' 'e [[MediaWiki:Gadgets-definition|definiziune]].\nStu riepilego ve dasse n'accesso semprice dint' 'o sistema 'e paggene 'e mmasciata ca definissero descrizione e codece pe' ogne gadget.",
+ "gadgets-uses": "Ause",
+ "gadgets-required-rights": "Addimanna {{PLURAL:$2|deritto|deritte}}:\n\n$1",
+ "gadgets-required-skins": "Disponibbele ncopp' 'a {{PLURAL:$2|$1 'o skin|'e skin ccà: $1}}.",
+ "gadgets-default": "Appicciato pe' tuttuquante predefinito.",
+ "gadgets-legacy": "'O gadget nun è carrecato. Pe' piacere migrate a ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Liggite 'e cchiù])",
+ "gadgets-export": "Aspurtà",
+ "gadgets-export-title": "Esporta 'u gadget",
+ "gadgets-not-found": "Gadget \"$1\" nun truvato.",
+ "gadgets-export-text": "Pe esportà 'o $1 gadget, cliccate ncopp' 'u buttone \"{{int:gadgets-export-download}}\", riggistrate 'u file scarrecato, ghiate 'a pàggene Special:Import ncopp' 'a Wiki 'e destinaziona e carrecatevello. Pò azzeccate 'a paggena ccà MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nAvita tenè permesse ghiuste ncopp' 'a wiki 'e destinaziona (ncludenno 'e deritte 'e cagnà mmasciate d' 'o sistema) e 'a mpurtaziona 'e file carrecate adda essere appicciata.",
+ "gadgets-export-download": "Scarreca",
+ "apihelp-query+gadgetcategories-description": "Torna arreto n'elenco 'e categurìe 'e gadget.",
+ "apihelp-query+gadgetcategories-param-prop": "Quala nfurmaziona 'e categurìa 'e gadget piglià:\n;name:Nomme nterno 'e categurìa.\n;title:Titulo 'e categuria.\n;members:Nummero 'e gadget int'a sta categurìa.",
+ "apihelp-query+gadgetcategories-param-names": "Nomme r' 'e categurìe a turnà.",
+ "apihelp-query+gadgetcategories-example-1": "Piglia n'elenco 'e categurìe esistente 'e gadget",
+ "apihelp-query+gadgetcategories-example-2": "Piglia tutt' 'a nfurmazione ncopp' 'e categurìa chiammate \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-description": "Tòrna arreto n'elenco 'e gadget ausate dint'a sta wiki.",
+ "apihelp-query+gadgets-param-prop": "Quala nfurmaziona d' 'o gadget se piglià:\n;id:ID interno d' 'o gadget.\n;metadata:Metadata d' 'o gadget.\n;desc:Descriziona d' 'o gadget scagnata a HTML (putesse essere lento, s'adda ausà surtanto si nce servesse).",
+ "apihelp-query+gadgets-param-categories": "Gadget 'e quale categurìa a turnà.",
+ "apihelp-query+gadgets-param-ids": "ID o gadget a turnà.",
+ "apihelp-query+gadgets-param-allowedonly": "Elenca surtanto gadget premmesse a ll'utente 'e mmò.",
+ "apihelp-query+gadgets-param-enabledonly": "Elenca surtanto 'e gadget appicciate 'a ll'utente 'e mò.",
+ "apihelp-query+gadgets-example-1": "Piglia n'elenco 'e gadget nzieme ch' 'e chiacchiere r' 'e soje",
+ "apihelp-query+gadgets-example-2": "Piglia n'elenco 'e gadget cu tutt' 'e possibilità pussibbele.",
+ "apihelp-query+gadgets-example-3": "Piglia n'elenco 'e gadged c'apparteneno alla categurìa \"foo\"",
+ "apihelp-query+gadgets-example-4": "Piglia nfurmaziune ncopp' 'e gadget \"foo\" e \"bar\"",
+ "apihelp-query+gadgets-example-5": "Piglia n'elenco 'e gadget appicciate 'a ll'utente 'e mò",
+ "right-gadgets-edit": "Cagna 'o gadget JavaScript e li paggene CSS",
+ "action-gadgets-edit": "cagna stu gadget JavaScript o paggena CSS",
+ "right-gadgets-definition-edit": "Cagna 'e definiziune 'e gadget",
+ "action-gadgets-definition-edit": "cagna 'e stu gadget 'a definiziona"
+}
diff --git a/extensions/Gadgets/i18n/ne.json b/extensions/Gadgets/i18n/ne.json
index 57c00c08..42ff3a95 100644
--- a/extensions/Gadgets/i18n/ne.json
+++ b/extensions/Gadgets/i18n/ne.json
@@ -2,15 +2,16 @@
"@metadata": {
"authors": [
"Bhawani Gautam",
- "Nirmal Dulal"
+ "Nirmal Dulal",
+ "राम प्रसाद जोशी"
]
},
"gadgets-desc": "प्रयोगकर्ताको [[Special:Preferences#mw-prefsection-gadgets|अभिरुचि अनुसार]] [[Special:Gadgets|CSS र जाभास्क्रीप्ट उपकरणहरू]] छान्न दिनुहोस",
"prefs-gadgets": "उपकरणहरू",
- "gadgets-prefstext": "विशेष उपकरणहरूको सूची तल दिइएकोछ तपाईंले आफ्नो खातामा सक्रिय पार्न सक्नुहुन्छ।\nप्राय सबै उपकरणहरू जाभास्क्रीप्टमा आधारित छन्, यस कारण ब्राउजरमा काम गराउनको लागि जाभास्क्रीप्टलाई सक्रिय गर्नु पर्छ।\nयाद राख्नुहोस् ती उपकरणहरूले अभिरुचि पृष्ठमा असर गर्दैनन्।\nयो पनि याद राखुहोस् यी विशेष उपकरणहरू मीडिया विकि सफ्टवेयरभित्र पर्दैनन् र प्राय स्थानीय विकि प्रयोगकर्ताहरुले विकास यसको विकास र सञ्चालन गर्दछन्। स्थानीय प्रबन्धकहरूले उपलब्ध उपकरणहरूका [[MediaWiki:Gadgets-definition|परिभाषाहरू]] र [[Special:Gadgets|विवरणहरू]] सम्पादन गर्दछन्।",
+ "gadgets-prefstext": "विशेष उपकरणहरूको सूची तल दिइएकोछ तपाईंले आफ्नो खातामा सक्रिय पार्न सक्नुहुन्छ।\nप्राय सबै उपकरणहरू जाभास्क्रीप्टमा आधारित छन्, यस कारण ब्राउजरमा काम गराउनको लागि जाभास्क्रीप्टलाई सक्रिय गर्नु पर्छ।\nयाद राख्नुहोस् ती उपकरणहरूले अभिरुचि पृष्ठमा असर गर्दैनन्।\nयो पनि याद राखुहोस् यी विशेष उपकरणहरू मीडिया विकि सफ्टवेयरभित्र पर्दैनन् र प्राय स्थानीय विकि प्रयोगकर्ताहरूले यसको विकास र सञ्चालन गर्दछन्। \nस्थानीय प्रबन्धकहरूले उपलब्ध उपकरणहरूका [[MediaWiki:Gadgets-definition|परिभाषाहरू]] र [[Special:Gadgets|विवरणहरू]] सम्पादन गर्दछन्।",
"gadgets": "उपकरणहरू",
"gadgets-title": "उपकरणहरू",
- "gadgets-pagetext": "विशेष उपकरणहरुको सूची तल दिइएकोछ प्रयोगकर्ताहरुले [[MediaWiki:Gadgets-definition|परिभाषाहरु]]मा जनाए अनुसार आफ्नो [[Special:Preferences#mw-prefsection-gadgets|अभिरुचि पृष्ठमा]], सक्रिय पार्न सक्नेछन्।।\nयस सिंहावलोकनले प्रणाली सन्देश पृष्ठ सजिलै प्राप्त गर्न सकिनेछ जसले प्रत्येक उपकरणको विवरण र कोडलाई परिभाषित गरेको छ।",
+ "gadgets-pagetext": "विशेष उपकरणहरूको सूची तल दिइएकोछ प्रयोगकर्ताहरूले [[MediaWiki:Gadgets-definition|परिभाषाहरू]]मा जनाए अनुसार आफ्नो [[Special:Preferences#mw-prefsection-gadgets|अभिरुचि पृष्ठमा]], सक्रिय पार्न सक्नेछन्।।\nयस सिंहावलोकनले प्रणाली सन्देश पृष्ठ सजिलै प्राप्त गर्न सकिनेछ जसले प्रत्येक उपकरणको विवरण र कोडलाई परिभाषित गरेको छ।",
"gadgets-uses": "प्रयोगहरु",
"gadgets-required-rights": "आवश्यकता छ {{PLURAL:$2|$1 अधिकारको|निम्न अधिकारहरुको: $1}}.",
"gadgets-default": "सबैको निम्ति सुरुदेखि नैं सक्रिय छ।",
diff --git a/extensions/Gadgets/i18n/nl.json b/extensions/Gadgets/i18n/nl.json
index a5981fb7..27a869a9 100644
--- a/extensions/Gadgets/i18n/nl.json
+++ b/extensions/Gadgets/i18n/nl.json
@@ -3,7 +3,8 @@
"authors": [
"Annabel",
"SPQRobin",
- "Siebrand"
+ "Siebrand",
+ "Esketti"
]
},
"gadgets-desc": "Laat gebruikers [[Special:Gadgets|CSS en JavaScripts]] activeren in hun [[Special:Preferences#mw-prefsection-gadgets|voorkeuren]]",
@@ -20,5 +21,21 @@
"gadgets-export-title": "Uitbreiding exporteren",
"gadgets-not-found": "Uitbreiding \"$1\" niet gevonden.",
"gadgets-export-text": "Klik op de knop \"{{int:gadgets-export-download}}\" om de uitbreiding \"$1\" te exporteren.\nSla daarna het gedownloade bestand op.\nGa naar \"Special:Import\" in de doelwiki en upload het geëxporteerde bestand.\nVoeg daarna het volgende toe aan de pagina \"MediaWiki:Gadgets-definition\":\n<pre>$2</pre>\nU moet de juiste rechten hebben op de doelwiki, inclusief het recht om bewerkingen te maken aan de systeemberichten, en importeren uit bestanden moet ingeschakeld zijn.",
- "gadgets-export-download": "Downloaden"
+ "gadgets-export-download": "Downloaden",
+ "apihelp-query+gadgetcategories-description": "Het resultaat is een lijst van gadget categorieën.",
+ "apihelp-query+gadgetcategories-param-prop": "Wat gadget categorie informatie te krijgen:\n;naam:Interne naam van de categorie.\n;titel:Categorie titel.\n;leden:Aantal gadgets in de categorie.",
+ "apihelp-query+gadgetcategories-param-names": "Namen van categorieën op te halen.",
+ "apihelp-query+gadgetcategories-example-1": "Een lijst van bestaande gadget categorieën",
+ "apihelp-query+gadgetcategories-example-2": "Alle informatie opvragen over categorieën met de naam \"foo\" en \"bar\"",
+ "apihelp-query+gadgets-description": "Het resultaat is een lijst van gadgets gebruikt op deze wiki.",
+ "apihelp-query+gadgets-param-prop": "Wat gadget informatie te krijgen:\n;id:Interne gadget ID.\n;metadata:De gadget metadata.\n;desc:Gadget beschrijving omgezet in HTML (kan traag zijn, alleen gebruiken als het echt nodig is).",
+ "apihelp-query+gadgets-param-categories": "Gadgets uit welke categorieën op te halen.",
+ "apihelp-query+gadgets-param-ids": "Id ' s van de gadgets te halen.",
+ "apihelp-query+gadgets-param-allowedonly": "Lijst alleen gadgets toegestaan om de huidige gebruiker.",
+ "apihelp-query+gadgets-param-enabledonly": "Lijst van gadgets die zijn ingeschakeld door de huidige gebruiker.",
+ "apihelp-query+gadgets-example-1": "Voor een lijst van gadgets, samen met hun beschrijvingen",
+ "apihelp-query+gadgets-example-2": "Voor een lijst van gadgets met alle mogelijke eigenschappen",
+ "apihelp-query+gadgets-example-3": "Voor een lijst van gadgets die behoren tot de categorie \"foo\"",
+ "apihelp-query+gadgets-example-4": "Informatie krijgen over gadgets \"foo\" en \"bar\"",
+ "apihelp-query+gadgets-example-5": "Voor een lijst van gadgets die zijn ingeschakeld door de huidige gebruiker"
}
diff --git a/extensions/Gadgets/i18n/olo.json b/extensions/Gadgets/i18n/olo.json
new file mode 100644
index 00000000..dcd23fbc
--- /dev/null
+++ b/extensions/Gadgets/i18n/olo.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mashoi7"
+ ]
+ },
+ "prefs-gadgets": "Programmazet",
+ "gadgets": "Programmazet",
+ "gadgets-title": "Programmazet",
+ "gadgets-uses": "Käyttäy",
+ "gadgets-export": "Vie",
+ "gadgets-export-title": "Programmazen viendy",
+ "gadgets-not-found": "Programmastu \"$1\" ei löydynyh."
+}
diff --git a/extensions/Gadgets/i18n/pl.json b/extensions/Gadgets/i18n/pl.json
index 32ff8f77..a10a9cba 100644
--- a/extensions/Gadgets/i18n/pl.json
+++ b/extensions/Gadgets/i18n/pl.json
@@ -6,7 +6,8 @@
"Marcin Łukasz Kiejzik",
"Matma Rex",
"Sovq",
- "Sp5uhe"
+ "Sp5uhe",
+ "Peter Bowman"
]
},
"gadgets-desc": "Pozwala użytkownikom wybrać [[Special:Gadgets|gadżety CSS i JavaScript]] na [[Special:Preferences#mw-prefsection-gadgets|stronie preferencji]]",
@@ -23,5 +24,9 @@
"gadgets-export-title": "Eksportowanie gadżetów",
"gadgets-not-found": "Nie odnaleziono gadżetu „$1”.",
"gadgets-export-text": "Jeśli chcesz wyeksportować gadżet „$1” kliknij na przycisk „{{int:gadgets-export-download}}”, zapisz pobrany plik, wejdź na stronę „Special:Import” w docelowej wiki i prześlij go. Następnie dodaj poniższy kod do strony MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nMusisz mieć właściwe uprawnienia na wiki docelowej (w tym do edycji komunikatów systemowych) oraz musi być włączony import na serwer poprzez przesłanie pliku.",
- "gadgets-export-download": "Pobierz"
+ "gadgets-export-download": "Pobierz",
+ "right-gadgets-edit": "Edycja gadżetów JavaScript oraz stron CSS",
+ "action-gadgets-edit": "edytowania tego gadżetu JavaScript lub strony CSS",
+ "right-gadgets-definition-edit": "Edycja definicji gadżetów",
+ "action-gadgets-definition-edit": "edytowania tej definicji gadżetu"
}
diff --git a/extensions/Gadgets/i18n/pt-br.json b/extensions/Gadgets/i18n/pt-br.json
index 8027d29a..c764d472 100644
--- a/extensions/Gadgets/i18n/pt-br.json
+++ b/extensions/Gadgets/i18n/pt-br.json
@@ -7,12 +7,13 @@
"Helder.wiki",
"Rafael Vargas",
"555",
- "He7d3r"
+ "He7d3r",
+ "Teles"
]
},
"gadgets-desc": "Permite que os usuários selecionem [[Special:Gadgets|\"gadgets\" JavaScript e CSS]] personalizados nas suas [[Special:Preferences#mw-prefsection-gadgets|preferências]]",
"prefs-gadgets": "Gadgets",
- "gadgets-prefstext": "Segue-se uma lista de \"gadgets\" que podem ser ativados em sua conta.\nTais gadgets normalmente são baseados em JavaScript, o que faz com que seja necessário que o suporte a JavaScript esteja ativado em seu navegador para que os mesmos funcionem.\nNote que os gadgets não possuem efeito nesta página (a página de preferências).\n\nRepare também que tais gadgets não são parte do software MediaWiki, geralmente sendo desenvolvidos e mantidos por usuários de seu wiki local.\nAdministradores locais podem editar os gadgets disponíveis através de [[MediaWiki:Gadgets-definition|definições]] e [[Special:Gadgets|descrições]].",
+ "gadgets-prefstext": "Segue-se uma lista de \"gadgets\" que podem ser ativados em sua conta.\nTais gadgets normalmente são baseados em JavaScript, o que faz com que seja necessário que o suporte a JavaScript esteja ativado em seu navegador para que eles funcionem.\nNote que os gadgets não possuem efeito nesta página (a página de preferências).\n\nRepare também que tais gadgets não são parte do software MediaWiki, geralmente sendo desenvolvidos e mantidos por usuários de seu wiki local.\nAdministradores locais podem editar os gadgets disponíveis através de [[MediaWiki:Gadgets-definition|definições]] e [[Special:Gadgets|descrições]].",
"gadgets": "Gadgets",
"gadgets-title": "Gadgets",
"gadgets-pagetext": "Segue-se uma lista de \"gadgets\" que podem ser ativados pelos usuários através de [[Special:Preferences#mw-prefsection-gadgets|suas páginas de preferências]], definidos em [[MediaWiki:Gadgets-definition|suas definições]].\nEsta lista possibilita um acesso fácil para as mensagens de sistema que definem as descrições e códigos de cada um dos gadgets.",
diff --git a/extensions/Gadgets/i18n/qqq.json b/extensions/Gadgets/i18n/qqq.json
index 9fe59aea..011bba6d 100644
--- a/extensions/Gadgets/i18n/qqq.json
+++ b/extensions/Gadgets/i18n/qqq.json
@@ -26,6 +26,7 @@
"gadgets-required-rights": "Parameters:\n* $1 - a list in wikitext.\n* $2 - the number of items in list $1 for PLURAL use.",
"gadgets-required-skins": "Parameters:\n* $1 - a comma separated list.\n* $2 - the number of items in list $1 for PLURAL use.",
"gadgets-default": "Used in [[Special:Gadgets]], if the extension is enabled for everyone by the Wiki's default settings.",
+ "gadgets-legacy": "Used on [[Special:Gadgets]], if the extension contains legacy scripts and doesn't use ResourceLoader yet.",
"gadgets-export": "Used on [[Special:Gadgets]]. This is a verb, not noun.\n{{Identical|Export}}",
"gadgets-export-title": "Used as page title. Example: [[Special:Gadgets/export/editbuttons]]",
"gadgets-not-found": "Used as error message. Parameters:\n* $1 - gadget name",
@@ -46,5 +47,9 @@
"apihelp-query+gadgets-example-2": "{{doc-apihelp-example|query+gadgets}}",
"apihelp-query+gadgets-example-3": "{{doc-apihelp-example|query+gadgets}}",
"apihelp-query+gadgets-example-4": "{{doc-apihelp-example|query+gadgets}}",
- "apihelp-query+gadgets-example-5": "{{doc-apihelp-example|query+gadgets}}"
+ "apihelp-query+gadgets-example-5": "{{doc-apihelp-example|query+gadgets}}",
+ "right-gadgets-edit": "{{doc-right|gadgets-edit}}",
+ "action-gadgets-edit": "{{doc-action|gadgets-edit}}",
+ "right-gadgets-definition-edit": "{{doc-right|gadgets-definition-edit}}",
+ "action-gadgets-definition-edit": "{{doc-action|gadgets-definition-edit}}"
}
diff --git a/extensions/Gadgets/i18n/ru.json b/extensions/Gadgets/i18n/ru.json
index cf4d06ab..19e60465 100644
--- a/extensions/Gadgets/i18n/ru.json
+++ b/extensions/Gadgets/i18n/ru.json
@@ -9,7 +9,8 @@
"MaxSem",
"VasilievVV",
"Александр Сигачёв",
- "Okras"
+ "Okras",
+ "NBS"
]
},
"gadgets-desc": "Позволяет участникам выбирать в своих [[Special:Preferences#mw-prefsection-gadgets|настройках]] те или иные [[Special:Gadgets|CSS- и JavaScript-гаджеты]]",
@@ -28,8 +29,14 @@
"gadgets-export-text": "Для экспорта гаджета $1, нажмите кнопку «{{int:gadgets-export-download}}», сохраните загруженный файл,\nперейдите на страницу Special:Import целевой вики и загрузите файл. Затем добавьте следующие строки на страницу MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nВы должны иметь соответствующие разрешения в целевой вики (в том числе право на редактирование системных сообщений), также на сервере должна быть включена настройка импорта из файлов.",
"gadgets-export-download": "Скачать",
"apihelp-query+gadgetcategories-description": "Возвращает список категорий гаджетов.",
+ "apihelp-query+gadgetcategories-param-names": "Названия возвращаемых категорий.",
"apihelp-query+gadgetcategories-example-1": "Получить список существующих категорий гаджетов",
+ "apihelp-query+gadgetcategories-example-2": "Получить всю информацию о категориях с названиями «Foo» и «Bar»",
"apihelp-query+gadgets-description": "Возвращает список гаджетов, используемых в этой вики.",
"apihelp-query+gadgets-param-ids": "Идентификаторы гаджетов для получения.",
- "apihelp-query+gadgets-example-5": "Получить список гаджетов, включённых у данного участника"
+ "apihelp-query+gadgets-example-3": "Получить список гаджетов в категории «foo»",
+ "apihelp-query+gadgets-example-4": "Получить информацию о гаджетах «foo» и «bar»",
+ "apihelp-query+gadgets-example-5": "Получить список гаджетов, включённых у данного участника",
+ "right-gadgets-edit": "правка JavaScript- и CSS-страниц гаджетов",
+ "right-gadgets-definition-edit": "правка обсуждений гаджетов"
}
diff --git a/extensions/Gadgets/i18n/sa.json b/extensions/Gadgets/i18n/sa.json
index cd41edd5..411bfffc 100644
--- a/extensions/Gadgets/i18n/sa.json
+++ b/extensions/Gadgets/i18n/sa.json
@@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
- "Shubha"
+ "Shubha",
+ "NehalDaveND"
]
},
"gadgets-desc": "योजकाः स्वस्य [[Special:Preferences#mw-prefsection-gadgets|इष्टतमानि]] इत्यत्र [[Special:Gadgets|CSS जावालिपि-उपकरणं च]] चीयताम् ।",
@@ -13,10 +14,10 @@
"gadgets-uses": "उपयोगः",
"gadgets-required-rights": "अधोनिर्दिष्टम् अपेक्षते {{PLURAL:$2|अधिकारः|अधिकारः}}:\n\n$1",
"gadgets-required-skins": "उपलभ्यते {{PLURAL:$2|$1 विन्यासः|अधोनिर्दिष्टः विन्यासः: $1}}.",
- "gadgets-default": "पूर्वनिर्दिष्टरूपेण सर्वेषां कृते सक्रियं विद्यते।",
+ "gadgets-default": "यदभावे सर्वेषां कृते सक्रियं विद्यते ।",
"gadgets-export": "निर्यातः",
"gadgets-export-title": "उपकरणनिर्यातः",
"gadgets-not-found": "\"$1\" उपकरणं न प्राप्तम् ।",
"gadgets-export-text": "$1 उपकरणस्य निर्याताय \"{{int:gadgets-export-download}}\" पिञ्जः नोदनीयः, अवारोपिता सञ्चिका रक्ष्यताम्, लक्ष्यविक्यां Special:Import प्रति गम्यताम् उपारोप्यताञ्च । तत्पश्चात् MediaWiki:Gadgets-definition इत्यस्मिन् अधोनिर्दिष्टं योज्यताम् : <pre>$2</pre>\nलक्ष्यविक्यां भवतः उप्युक्ताधिकारः स्यात् (तन्त्रसन्देशसम्पादनस्य अधिकारः अन्तर्भूतः) सञ्चिकोपरोपणात् आयातः सक्षमः करणीयः",
- "gadgets-export-download": "अवतार्यताम्"
+ "gadgets-export-download": "अवारोप्यताम्"
}
diff --git a/extensions/Gadgets/i18n/sah.json b/extensions/Gadgets/i18n/sah.json
index 67ad9e2a..bef2aa75 100644
--- a/extensions/Gadgets/i18n/sah.json
+++ b/extensions/Gadgets/i18n/sah.json
@@ -5,11 +5,11 @@
]
},
"gadgets-desc": "Бэйэлэрин [[Special:Preferences#mw-prefsection-gadgets|туруорууларыгар]] кыттааччылар [[Special:Gadgets|CSS уонна JavaScript гаджеттары]] холбонуохтарын сөп.",
- "prefs-gadgets": "Гаджеттар",
- "gadgets-prefstext": "Аллара аналлаах гаджеттар испииһэктэрэ көстөллөр. Балары бэйэҥ бэлиэтэммит ааккынан киирэн туһаныаххын сөп.\nБу үнүстүрүмүөннэр үксүлэрэ JavaScript көмөтүнэн үлэлииллэр, онон туһаныаххын баҕарар буоллаххына JavaScript холбоо.\nБу гаджеттар туроуорууларгын уларытар сирэйгэр үлэлээбэттэрин умнума.\n\nӨссө маны умнума: бу гаджеттар MediaWiki сорҕото буолбатахтар, кинилэри кыттааччылар бэйэлэрэ айаллар уонна көрөллөр-истэллэр. Дьаһабыллар гаджеттар испииһэктэрин [[MediaWiki:Gadgets-definition|быһаарыы сирэйдэр]] уонна [[Special:Gadgets|ойуулуур сирэйдэр]] көмөлөрүнэн уларытыахтарын сөп.",
- "gadgets": "Гаджеттар",
- "gadgets-title": "Гаджеттар",
- "gadgets-pagetext": "Манна [[MediaWiki:Gadgets-definition|быһаарыы сирэйигэр]] суруллубутун курдук [[Special:Preferences#mw-prefsection-gadgets|туруоруу сирэйин]] көмөтүнэн холбонуон сөптөөх гаджеттар тиһиктэрэ көрдөрүлүннэ.\nЭтот список позволяет легко получить доступ к страницам системных сообщений, определяющих описания и исходные коды гаджетов.",
+ "prefs-gadgets": "Ҕааддьыттар",
+ "gadgets-prefstext": "Аллара аналлаах ҕаадьыттар испииһэктэрэ көстөр. Балары бэйэҥ бэлиэтэммит ааккынан киирэн туһаныаххын сөп.\nБу тэриллэр үксүлэрэ JavaScript көмөтүнэн үлэлииллэр, онон туһаныаххын баҕарар буоллаххына JavaScript холбоо.\nБу ҕааддьыттар туроуорууларгын уларытар сирэйгэр үлэлээбэттэрин умнума.\n\nӨссө маны умнума: бу ҕааддьыттар MediaWiki сорҕото буолбатахтар, кинилэри кыттааччылар бэйэлэрэ айаллар уонна көрөллөр-истэллэр. Дьаһабыллар ҕааддьыттар испииһэктэрин [[MediaWiki:Gadgets-definition|быһаарыы сирэйдэр]] уонна [[Special:Gadgets|ойуулуур сирэйдэр]] көмөлөрүнэн уларытыахтарын сөп.",
+ "gadgets": "Ҕааддьыттар",
+ "gadgets-title": "Ҕааддьыттар",
+ "gadgets-pagetext": "Манна [[MediaWiki:Gadgets-definition|быһаарыы сирэйигэр]] суруллубутун курдук [[Special:Preferences#mw-prefsection-gadgets|туруоруу сирэйин]] көмөтүнэн холбонуон сөптөөх ҕааддьыттар тиһиликтэрэ көрдөрүлүннэ.\nБу тиһилик ҕааддьыттар ойуулааһыннарын уонна исходниктарын быһаарар тиһик (систиэмэ) биллэриилэрин сирэйдэригэр судургутук киирэри хааччыйар.",
"gadgets-uses": "Туһанар",
"gadgets-required-rights": "$2 бэйэбил (быраап) ирдэнэр: «$1»",
"gadgets-default": "Барыларыгар холбоно сылдьар.",
diff --git a/extensions/Gadgets/i18n/shn.json b/extensions/Gadgets/i18n/shn.json
new file mode 100644
index 00000000..0965d5d3
--- /dev/null
+++ b/extensions/Gadgets/i18n/shn.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saosukham"
+ ]
+ },
+ "right-gadgets-edit": "ထတ်း ၶိူင်ႈယွႆႈ JavaScript ဢိၵ်ႇ ၼႃႈလိၵ်ႈ CSS",
+ "action-gadgets-edit": "ထတ်း ၶိူင်ႈယွႆႈ JavaScript ဢမ်ႇၼၼ် ၼႃႈလိၵ်ႈ CSS",
+ "right-gadgets-definition-edit": "ထတ်းၶေႃႈပိုတ်ႇယွႆႈ",
+ "action-gadgets-definition-edit": "ထတ်းၶေႃႈပိုတ်ႇယွႆႈၼႆႉ"
+}
diff --git a/extensions/Gadgets/i18n/sq.json b/extensions/Gadgets/i18n/sq.json
index 94fb85d0..e9d38a17 100644
--- a/extensions/Gadgets/i18n/sq.json
+++ b/extensions/Gadgets/i18n/sq.json
@@ -3,14 +3,15 @@
"authors": [
"Mikullovci11",
"Olsi",
- "Vinie007"
+ "Vinie007",
+ "Ammartivari"
]
},
"gadgets-desc": "Lejin përdoruesit të zgjedhin [[Special:Gadgets|CSS dhe JavaScript gadgets]] në [[Special:Preferences#mw-prefsection-gadgets|preferencat]] e tyre",
- "prefs-gadgets": "Gadgets",
+ "prefs-gadgets": "Veglat",
"gadgets-prefstext": "Më poshtë është një listë e mjeteve shtesë speciale që mund të aktivizohen për llogarinë tuaj.\nKëto mjete shtesë janë të bazuara kryesisht në JavaScript, pra JavaScript-i duhet aktivizuar në shfletuesin tuaj që ato të punojnë.\nVini re se këto mjete shtesë nuk do të kenë efekt në këtë faqe preferencash.\n\nGjithashtu vini re se këto mjete shtesë speciale nuk janë pjesë e softuerit MediaWiki, dhe zakonisht janë zhvilluar dhe mirëmbajtur nga përdoruesit në wiki-n tuaj lokal.\nAdministratorët lokalë mund t'i ndryshojnë [[MediaWiki:Gadgets-definition|përkufizimet]] dhe [[Special:Gadgets|përshkrimet]] e mjeteve shtesë të mundshme.",
"gadgets": "Gadgets",
- "gadgets-title": "Gadgets",
+ "gadgets-title": "Veglat",
"gadgets-pagetext": "Më poshtë është një listë e mjeteve shtesë speciale që mund të aktivizohen në [[Special:Preferences#mw-prefsection-gadgets|faqen e preferencave]] të tyre, siç është përcaktuar nga [[MediaWiki:Gadgets-definition|përkufizimet]].\nKjo pasqyrë siguron qasje të lehtë në faqet e mesazheve të sistemit që përkufizon përshkrimin e çdo mjeti shtesë dhe kodin.",
"gadgets-uses": "Përdorues",
"gadgets-required-rights": "Kërkon {{PLURAL:$2|të drejtën|të drejtat}} e mëposhtme:\n\n$1",
diff --git a/extensions/Gadgets/i18n/sr-ec.json b/extensions/Gadgets/i18n/sr-ec.json
index d461600e..08f7e321 100644
--- a/extensions/Gadgets/i18n/sr-ec.json
+++ b/extensions/Gadgets/i18n/sr-ec.json
@@ -18,9 +18,14 @@
"gadgets-required-rights": "Захтева {{PLURAL:$2|следеће право|следећа права}}:\n\n$1",
"gadgets-required-skins": "Доступно у {{PLURAL:$2|теми $1|следећим темама: $1}}.",
"gadgets-default": "Подразумевано укључен за сваког.",
+ "gadgets-legacy": "Геџет није учитан. Молимо вас пребаците га на ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Сазнајте више])",
"gadgets-export": "Извези",
"gadgets-export-title": "Извоз гаџета",
"gadgets-not-found": "Гаџет „$1“ није пронађен.",
"gadgets-export-text": "Да бисте извезли $1 гаџет, кликните на дугме „{{int:gadgets-export-download}}“, сачувајте преузету датотеку,\nпређите на ''Special:Import'' на жељеној викији и пошаљите гаџет. Након тога, додајте следеће на ''MediaWiki:Gadgets-definition'' страницу:\n<pre>$2</pre>\nМорате имати одређене дозволе на наведеној викији (укључујући и право за уређивање системских порука), док увоз преко датотека мора бити омогућен.",
- "gadgets-export-download": "Преузми"
+ "gadgets-export-download": "Преузми",
+ "right-gadgets-edit": "уређивање JavaScript и CSS страница геџета",
+ "action-gadgets-edit": "уређивање JavaScript и CSS страница геџета",
+ "right-gadgets-definition-edit": "уређивање дефиниција геџета",
+ "action-gadgets-definition-edit": "уређивање дефиниција геџета"
}
diff --git a/extensions/Gadgets/i18n/tr.json b/extensions/Gadgets/i18n/tr.json
index 3cad9005..ecde408b 100644
--- a/extensions/Gadgets/i18n/tr.json
+++ b/extensions/Gadgets/i18n/tr.json
@@ -6,7 +6,8 @@
"Incelemeelemani",
"Joseph",
"Karduelis",
- "Koc61"
+ "Koc61",
+ "Arystanbek"
]
},
"gadgets-desc": "Kullanıcıların [[Special:Preferences#mw-prefsection-gadgets|tercihlerinde]] özel [[Special:Gadgets|CSS ve JavaScript gadgetlerini]] seçmelerine izin verir",
@@ -23,5 +24,21 @@
"gadgets-export-title": "Gadget dışa aktarımı",
"gadgets-not-found": "Gadget \"$1\" bulunamadı.",
"gadgets-export-text": "$1 gadgetini dışa aktarmak için \"{{int:gadgets-export-download}}\" düğmesine tıklayın, yüklenen dosyayı kaydedin, hedef vikide Special:Import sayfasına gidin ve yükleyin. Sonra aşağıdakini MediaWiki:Gadgets-definition sayfasına ekleyin:\n<pre>$2</pre>\nHedef vikide uygun izinlerinizin olması (sistem mesajlarını değiştirmek yetkisi dahil) ve dosyadan içe aktarmanın etkinleştirilmiş olması gerekir.",
- "gadgets-export-download": "İndir"
+ "gadgets-export-download": "İndir",
+ "apihelp-query+gadgetcategories-description": "Döner gadget kategori listesi.",
+ "apihelp-query+gadgetcategories-param-prop": "Kategori bilgi almak için ne gadget:\n;adı:İç kategori adı.\n;konu başlığı:Kategori Başlığı.\n;üyeler:kategorideki araçların Sayısı.",
+ "apihelp-query+gadgetcategories-param-names": "Almak için kategorilerin adlarını.",
+ "apihelp-query+gadgetcategories-example-1": "Mevcut gadget kategori listesi",
+ "apihelp-query+gadgetcategories-example-2": "Kategoriler \"foo\" ve \"bar\"adlı hakkında tüm bilgi almak",
+ "apihelp-query+gadgets-description": "Döner araçlar bu wiki üzerinde bulundurmalıdır.",
+ "apihelp-query+gadgets-param-prop": "Bilgi almak için ne gadget:\n;ıd:İç gadget ID.\n;meta:gadget metadata.\n;tanım:Gadget açıklama HTML (Eğer gerçekten gerekirse yavaş, sadece kullanmak olabilir) dönüştü.",
+ "apihelp-query+gadgets-param-categories": "Almak için ne gelen araçlar.",
+ "apihelp-query+gadgets-param-ids": "Araçların kimliği almak için.",
+ "apihelp-query+gadgets-param-allowedonly": "Liste sadece araçlar geçerli kullanıcı için izin verdi.",
+ "apihelp-query+gadgets-param-enabledonly": "Liste sadece araçlar geçerli kullanıcı tarafından etkinleştirilebilir.",
+ "apihelp-query+gadgets-example-1": "Kendi açıklamaları ile birlikte araçların listesi",
+ "apihelp-query+gadgets-example-2": "Mümkün olan tüm özelliklere sahip araçların bir listesini almak",
+ "apihelp-query+gadgets-example-3": "Araçlar kategoriye ait bir liste olsun \"foo\"",
+ "apihelp-query+gadgets-example-4": "Araçlar hakkında bilgi \"\" ve \"bar\"foo al",
+ "apihelp-query+gadgets-example-5": "Araçlar geçerli kullanıcı tarafından etkin bir listesini almak"
}
diff --git a/extensions/Gadgets/i18n/uk.json b/extensions/Gadgets/i18n/uk.json
index 2d3cce29..e403e8ae 100644
--- a/extensions/Gadgets/i18n/uk.json
+++ b/extensions/Gadgets/i18n/uk.json
@@ -10,7 +10,9 @@
"RLuts",
"Riwnodennyk",
"Sodmy",
- "Тест"
+ "Тест",
+ "Ата",
+ "Base"
]
},
"gadgets-desc": "Дозволяє користувачам обирати [[Special:Gadgets|CSS- та JavaScript-додатки]] у своїх [[Special:Preferences#mw-prefsection-gadgets|налаштуваннях]]",
@@ -23,9 +25,30 @@
"gadgets-required-rights": "{{PLURAL:$2|1=Потрібне право|Потрібні такі права}}:\n\n$1",
"gadgets-required-skins": "Доступний на {{PLURAL:$2|1=$1 skin|наступних темах оформлення: $1}}.",
"gadgets-default": "Увімкнено для всіх за замовчуванням.",
+ "gadgets-legacy": "Додаток не завантажено. Будь ласка, здійсніть міграцію на ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Дізнатися більше])",
"gadgets-export": "Експортувати",
"gadgets-export-title": "Експорт додатка",
"gadgets-not-found": "Додаток \"$1\" не знайдено.",
"gadgets-export-text": "Аби експортувати додаток $1, натисніть «{{int:gadgets-export-download}}», збережіть завантажений файл,\nперейдіть до Special:Import на потібній віці і відвантажте його там. Тоді додайте наступний текст на сторінку MediaWiki:Gadgets-definition:\n<pre>$2</pre>\nВи повинні мати відповідні права на цільовій віці (зокрема на редагування системних повідомлень), окрім того має бути ввімкнена можливість імпорту з файлу.",
- "gadgets-export-download": "Завантажити"
+ "gadgets-export-download": "Завантажити",
+ "apihelp-query+gadgetcategories-description": "Видає список категорій ґаджетів.",
+ "apihelp-query+gadgetcategories-param-prop": "Яку категорію ґаджетів отримати:\n;name:Внутрішнє ім'я категорії.\n;title:Назва категорії.\n;members:Кількість ґаджетів у категорії.",
+ "apihelp-query+gadgetcategories-param-names": "Імена категорій для виведення.",
+ "apihelp-query+gadgetcategories-example-1": "Отримати список наявних категорій ґаджетів",
+ "apihelp-query+gadgetcategories-example-2": "Отримати всю інформацію про категорії з іменами «foo» і «bar»",
+ "apihelp-query+gadgets-description": "Видає список ґаджетів, використовуваних у цій вікі.",
+ "apihelp-query+gadgets-param-prop": "Яку інформацію про ґаджет отримати:\n;id:Внутрішній ID ґаджета.\n;metadata:Метадані ґаджета.\n;desc:Опис ґаджета, перетворений у HTML (може бути повільно, використовуйте за справжньої потреби).",
+ "apihelp-query+gadgets-param-categories": "Ґаджети з яких категорій отримувати.",
+ "apihelp-query+gadgets-param-ids": "ID ґаджетів для отримання.",
+ "apihelp-query+gadgets-param-allowedonly": "Список лише дозволених даному користувачеві ґаджетів.",
+ "apihelp-query+gadgets-param-enabledonly": "Список лише увімкнених даним користувачем ґаджетів.",
+ "apihelp-query+gadgets-example-1": "Отримати список ґаджетів разом з їх описами",
+ "apihelp-query+gadgets-example-2": "Отримати список ґаджетів з усіма можливими властивостями",
+ "apihelp-query+gadgets-example-3": "Отримати список ґаджетів, які належать до категорії «foo»",
+ "apihelp-query+gadgets-example-4": "Отримати інформацію про ґаджети «foo» і «bar»",
+ "apihelp-query+gadgets-example-5": "Отримати список ґаджетів, увімкнених даним користувачем",
+ "right-gadgets-edit": "Редагувати сторінки JavaScript та CSS додатку",
+ "action-gadgets-edit": "редагувати JavaScript- чи CSS-сторінку цього додатку",
+ "right-gadgets-definition-edit": "Редагувати визначення додатку",
+ "action-gadgets-definition-edit": "редагувати визначення цього додатку"
}
diff --git a/extensions/Gadgets/i18n/vi.json b/extensions/Gadgets/i18n/vi.json
index bfceff82..9abc945f 100644
--- a/extensions/Gadgets/i18n/vi.json
+++ b/extensions/Gadgets/i18n/vi.json
@@ -17,6 +17,7 @@
"gadgets-required-rights": "Cần {{PLURAL:$2|quyền|các quyền}} sau:\n\n$1",
"gadgets-required-skins": "Có sẵn trên {{PLURAL:$2|giao diện $1|các giao diện: $1}}.",
"gadgets-default": "Được kích hoạt cho tất cả mọi người theo mặc định.",
+ "gadgets-legacy": "Tiện ích không được tải. Xin vui lòng chuyển đổi tiện ích qua hệ thống ResourceLoader. ([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) Tìm hiểu thêm])",
"gadgets-export": "Xuất",
"gadgets-export-title": "Xuất tiện ích",
"gadgets-not-found": "Không tìm thấy tiện ích “$1”.",
@@ -32,5 +33,9 @@
"apihelp-query+gadgets-param-enabledonly": "Chỉ liệt kê các tiện ích được kích hoạt bởi người dùng hiện tại.",
"apihelp-query+gadgets-example-3": "Lấy danh sách các tiện ích thuộc thể loại “foo”",
"apihelp-query+gadgets-example-4": "Lấy thông tin về các tiện ích “foo” và “bar”",
- "apihelp-query+gadgets-example-5": "Lấy danh sách các tiện ích được kích hoạt bởi người dùng hiện tại"
+ "apihelp-query+gadgets-example-5": "Lấy danh sách các tiện ích được kích hoạt bởi người dùng hiện tại",
+ "right-gadgets-edit": "Sửa đổi trang tiện ích JavaScript và CSS",
+ "action-gadgets-edit": "sửa đổi trang tiện ích JavaScript hoặc CSS này",
+ "right-gadgets-definition-edit": "Sửa đổi các định nghĩa tiện ích",
+ "action-gadgets-definition-edit": "sửa đổi định nghĩa của tiện ích này"
}
diff --git a/extensions/Gadgets/i18n/xmf.json b/extensions/Gadgets/i18n/xmf.json
new file mode 100644
index 00000000..b5a21f8a
--- /dev/null
+++ b/extensions/Gadgets/i18n/xmf.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Silovan"
+ ]
+ },
+ "right-gadgets-edit": "გაჯეტიშ JavaScript დო CSS ხასჷლეფიშ რედაქტირაფა",
+ "action-gadgets-edit": "თე გაჯეტიშ JavaScript ვარდა CSS ხასჷლაშ რედაქტირაფა",
+ "right-gadgets-definition-edit": "გაჯეტიშ გოთანჯუაშ რედაქტირაფა",
+ "action-gadgets-definition-edit": "თე გაჯეტიშ გოთანჯუაშ რედაქტირაფა"
+}
diff --git a/extensions/Gadgets/i18n/zh-hans.json b/extensions/Gadgets/i18n/zh-hans.json
index 7e93d020..2251e6c5 100644
--- a/extensions/Gadgets/i18n/zh-hans.json
+++ b/extensions/Gadgets/i18n/zh-hans.json
@@ -27,6 +27,7 @@
"gadgets-required-rights": "需要以下{{PLURAL:$2|权限}}:\n\n$1",
"gadgets-required-skins": "可用在{{PLURAL:$2|$1外观|以下外观:$1}}。",
"gadgets-default": "默认所有人启用。",
+ "gadgets-legacy": "未加载小工具。请迁移至ResourceLoader。\n([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) 了解更多])",
"gadgets-export": "导出",
"gadgets-export-title": "导出小工具",
"gadgets-not-found": "找不到“$1”小工具。",
@@ -47,5 +48,9 @@
"apihelp-query+gadgets-example-2": "获取含全部可能属性的小工具列表",
"apihelp-query+gadgets-example-3": "获取属于分类“foo”的小工具列表",
"apihelp-query+gadgets-example-4": "获取有关小工具“foo”和“bar”的信息",
- "apihelp-query+gadgets-example-5": "获取当前用户启用的小工具列表"
+ "apihelp-query+gadgets-example-5": "获取当前用户启用的小工具列表",
+ "right-gadgets-edit": "编辑小工具的JavaScript和CSS页面",
+ "action-gadgets-edit": "编辑此小工具的JavaScript或CSS页面",
+ "right-gadgets-definition-edit": "编辑小工具定义",
+ "action-gadgets-definition-edit": "编辑此小工具的定义"
}
diff --git a/extensions/Gadgets/i18n/zh-hant.json b/extensions/Gadgets/i18n/zh-hant.json
index af73a87d..d73d42a8 100644
--- a/extensions/Gadgets/i18n/zh-hant.json
+++ b/extensions/Gadgets/i18n/zh-hant.json
@@ -24,9 +24,30 @@
"gadgets-required-rights": "需要以下{{PLURAL:$2|權限|權限}}:\n\n$1",
"gadgets-required-skins": "可用於{{PLURAL:$2|$1 外觀|下列外觀:$1}}。",
"gadgets-default": "所有人預設開啟。",
+ "gadgets-legacy": "未載入小工具,請改使用 ResourceLoader。\n([https://www.mediawiki.org/wiki/ResourceLoader/Migration_guide_(users) 了解更多])",
"gadgets-export": "匯出",
"gadgets-export-title": "匯出小工具",
"gadgets-not-found": "查無小工具 \"$1\"。",
- "gadgets-export-text": "要匯出 $1 小工具,請點選「{{int:gadgets-export-download}}」按鈕,並儲存下載的檔案,前往目標 Wiki 的 Special:Import 並將其上傳。然後將下列文字新增到 MediaWiki:Gadgets-definition 頁面:\n<pre>$2</pre>\n您必須擁有目標 Wiki 的適當權限(包括編輯系統訊息的權限),且須開啟透過檔案上傳匯入的功能。",
- "gadgets-export-download": "下載"
+ "gadgets-export-text": "要匯出 $1 小工具,請點選 \"{{int:gadgets-export-download}}\" 按鈕,並儲存下載的檔案,前往目標 Wiki 的 Special:Import 並將其上傳。然後將下列文字新增到 MediaWiki:Gadgets-definition 頁面:\n<pre>$2</pre>\n您必須擁有目標 Wiki 的適當權限 (包括編輯系統訊息的權限) ,且須開啟透過檔案上傳匯入的功能。",
+ "gadgets-export-download": "下載",
+ "apihelp-query+gadgetcategories-description": "回傳小工具分類清單。",
+ "apihelp-query+gadgetcategories-param-prop": "要取得什麼小工具分類資訊:\n;name:內部份類名稱。\n;title:分類標題。\n;members:分類中的小工具數量。",
+ "apihelp-query+gadgetcategories-param-names": "要取得分類名稱。",
+ "apihelp-query+gadgetcategories-example-1": "取得已存在的小工具分類清單",
+ "apihelp-query+gadgetcategories-example-2": "取得所有有關分類名稱為 \"foo\" 與 \"bar\" 的資訊",
+ "apihelp-query+gadgets-description": "回傳在此 wiki 使用過的小工具清單。",
+ "apihelp-query+gadgets-param-prop": "要取得什麼小工具資訊:\n;id:內部小工具 ID。\n;metadata:小工具 metadata。\n;desc:小工具描述轉換至 HTML 格式 (可能較慢,只在需要時使用)。",
+ "apihelp-query+gadgets-param-categories": "自那個分類取得小工具。",
+ "apihelp-query+gadgets-param-ids": "要取得小工具的 ID。",
+ "apihelp-query+gadgets-param-allowedonly": "只列出目前使用者可使用的小工具。",
+ "apihelp-query+gadgets-param-enabledonly": "只列出由目前使用者開啟的小工具。",
+ "apihelp-query+gadgets-example-1": "取得小工具及其描述清單",
+ "apihelp-query+gadgets-example-2": "取得小工具及其所有屬性清單",
+ "apihelp-query+gadgets-example-3": "取得屬於分類 \"foo\" 的小工具清單",
+ "apihelp-query+gadgets-example-4": "取得有關小工具 \"foo\" 與 \"bar\" 的資訊",
+ "apihelp-query+gadgets-example-5": "取得由目前使用者開竹呚的小工具清單",
+ "right-gadgets-edit": "編輯小工具的 JavaScript 與 CSS 頁面",
+ "action-gadgets-edit": "編輯這個小工具的 JavaScript 或 CSS 頁面",
+ "right-gadgets-definition-edit": "編輯小工具定義",
+ "action-gadgets-definition-edit": "編輯此小工具的定義"
}
diff --git a/extensions/Gadgets/includes/GadgetRepo.php b/extensions/Gadgets/includes/GadgetRepo.php
new file mode 100644
index 00000000..18bf5b51
--- /dev/null
+++ b/extensions/Gadgets/includes/GadgetRepo.php
@@ -0,0 +1,63 @@
+<?php
+
+abstract class GadgetRepo {
+
+ /**
+ * @var GadgetRepo|null
+ */
+ private static $instance;
+
+ /**
+ * Get the ids of the gadgets provided by this repository
+ *
+ * @return string[]
+ */
+ abstract public function getGadgetIds();
+
+ /**
+ * Get the Gadget object for a given gadget id
+ *
+ * @param string $id
+ * @throws InvalidArgumentException
+ * @return Gadget
+ */
+ abstract public function getGadget( $id );
+
+ /**
+ * Get a list of gadgets sorted by category
+ *
+ * @return array array( 'category' => array( 'name' => $gadget ) )
+ */
+ public function getStructuredList() {
+ $list = array();
+ foreach ( $this->getGadgetIds() as $id ) {
+ $gadget = $this->getGadget( $id );
+ $list[$gadget->getCategory()][$gadget->getName()] = $gadget;
+ }
+
+ return $list;
+ }
+
+ /**
+ * Get the configured default GadgetRepo. Currently
+ * this hardcodes MediaWikiGadgetsDefinitionRepo since
+ * that is the only implementation
+ *
+ * @return GadgetRepo
+ */
+ public static function singleton() {
+ if ( self::$instance === null ) {
+ self::$instance = new MediaWikiGadgetsDefinitionRepo();
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Should only be used by unit tests
+ *
+ * @param GadgetRepo|null $repo
+ */
+ public static function setSingleton( $repo = null ) {
+ self::$instance = $repo;
+ }
+}
diff --git a/extensions/Gadgets/includes/GadgetResourceLoaderModule.php b/extensions/Gadgets/includes/GadgetResourceLoaderModule.php
new file mode 100644
index 00000000..7f00e4cc
--- /dev/null
+++ b/extensions/Gadgets/includes/GadgetResourceLoaderModule.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Class representing a list of resources for one gadget
+ */
+class GadgetResourceLoaderModule extends ResourceLoaderWikiModule {
+ private $pages, $dependencies, $messages;
+
+ /**
+ * Creates an instance of this class
+ *
+ * @param $pages Array: Associative array of pages in ResourceLoaderWikiModule-compatible
+ * format, for example:
+ * array(
+ * 'MediaWiki:Gadget-foo.js' => array( 'type' => 'script' ),
+ * 'MediaWiki:Gadget-foo.css' => array( 'type' => 'style' ),
+ * )
+ * @param $dependencies Array: Names of resources this module depends on
+ * @param $targets Array: List of targets this module support
+ * @param $position String: 'bottom' or 'top'
+ * @param $messages Array
+ */
+ public function __construct( $pages, $dependencies, $targets, $position, $messages ) {
+ $this->pages = $pages;
+ $this->dependencies = $dependencies;
+ $this->targets = $targets;
+ $this->position = $position;
+ $this->isPositionDefined = true;
+ $this->messages = $messages;
+ }
+
+ /**
+ * Overrides the abstract function from ResourceLoaderWikiModule class
+ * @param $context ResourceLoaderContext
+ * @return Array: $pages passed to __construct()
+ */
+ protected function getPages( ResourceLoaderContext $context ) {
+ return $this->pages;
+ }
+
+ /**
+ * Overrides ResourceLoaderModule::getDependencies()
+ * @param $context ResourceLoaderContext
+ * @return Array: Names of resources this module depends on
+ */
+ public function getDependencies( ResourceLoaderContext $context = null ) {
+ return $this->dependencies;
+ }
+
+ /**
+ * Overrides ResourceLoaderModule::getPosition()
+ * @return String: 'bottom' or 'top'
+ */
+ public function getPosition() {
+ return $this->position;
+ }
+
+ public function getMessages() {
+ return $this->messages;
+ }
+}
diff --git a/extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php b/extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php
new file mode 100644
index 00000000..eb141a91
--- /dev/null
+++ b/extensions/Gadgets/includes/MediaWikiGadgetsDefinitionRepo.php
@@ -0,0 +1,233 @@
+<?php
+
+/**
+ * Gadgets repo powered by MediaWiki:Gadgets-definition
+ */
+class MediaWikiGadgetsDefinitionRepo extends GadgetRepo {
+
+ const CACHE_VERSION = 1;
+
+ private $definitionCache;
+
+ public function getGadget( $id ) {
+ $gadgets = $this->loadGadgets();
+ if ( !isset( $gadgets[$id] ) ) {
+ throw new InvalidArgumentException( "No gadget registered for '$id'" );
+ }
+
+ return $gadgets[$id];
+ }
+
+ public function getGadgetIds() {
+ $gadgets = $this->loadGadgets();
+ if ( $gadgets ) {
+ return array_keys( $gadgets );
+ } else {
+ return array();
+ }
+ }
+
+ /**
+ * Purge the definitions cache, for example if MediaWiki:Gadgets-definition
+ * was edited.
+ */
+ public function purgeDefinitionCache() {
+ ObjectCache::getMainWANInstance()->touchCheckKey( $this->getCheckKey() );
+ }
+
+ private function getCheckKey() {
+ return wfMemcKey( 'gadgets-definition', Gadget::GADGET_CLASS_VERSION, self::CACHE_VERSION );
+ }
+
+ /**
+ * Loads list of gadgets and returns it as associative array of sections with gadgets
+ * e.g. array( 'sectionnname1' => array( $gadget1, $gadget2 ),
+ * 'sectionnname2' => array( $gadget3 ) );
+ * @return array|bool Gadget array or false on failure
+ */
+ protected function loadGadgets() {
+ if ( $this->definitionCache !== null ) {
+ return $this->definitionCache; // process cache hit
+ }
+
+ // Ideally $t1Cache is APC, and $wanCache is memcached
+ $t1Cache = ObjectCache::newAccelerator( array(), 'hash' );
+ $wanCache = ObjectCache::getMainWANInstance();
+
+ $key = $this->getCheckKey();
+
+ // (a) Check the tier 1 cache
+ $value = $t1Cache->get( $key );
+ // Check if it passes a blind TTL check (avoids I/O)
+ if ( $value && ( microtime( true ) - $value['time'] ) < 10 ) {
+ $this->definitionCache = $value['gadgets']; // process cache
+ return $this->definitionCache;
+ }
+ // Cache generated after the "check" time should be up-to-date
+ $ckTime = $wanCache->getCheckKeyTime( $key ) + WANObjectCache::HOLDOFF_TTL;
+ if ( $value && $value['time'] > $ckTime ) {
+ $this->definitionCache = $value['gadgets']; // process cache
+ return $this->definitionCache;
+ }
+
+ // (b) Fetch value from WAN cache or regenerate if needed.
+ // This is hit occasionally and more so when the list changes.
+ $us = $this;
+ $value = $wanCache->getWithSetCallback(
+ $key,
+ function( $old, &$ttl ) use ( $us ) {
+ $now = microtime( true );
+ $gadgets = $us->fetchStructuredList();
+ if ( $gadgets === false ) {
+ $ttl = WANObjectCache::TTL_UNCACHEABLE;
+ }
+
+ return array( 'gadgets' => $gadgets, 'time' => $now );
+ },
+ Gadget::CACHE_TTL,
+ array( $key ),
+ array( 'lockTSE' => 300 )
+ );
+
+ // Update the tier 1 cache as needed
+ if ( $value['gadgets'] !== false && $value['time'] > $ckTime ) {
+ // Set a modest TTL to keep the WAN key in cache
+ $t1Cache->set( $key, $value, mt_rand( 300, 600 ) );
+ }
+
+ $this->definitionCache = $value['gadgets'];
+
+ return $this->definitionCache;
+ }
+
+ /**
+ * Fetch list of gadgets and returns it as associative array of sections with gadgets
+ * e.g. array( $name => $gadget1, etc. )
+ * @param $forceNewText String: Injected text of MediaWiki:gadgets-definition [optional]
+ * @return array|bool
+ */
+ public function fetchStructuredList( $forceNewText = null ) {
+ if ( $forceNewText === null ) {
+ $g = wfMessage( "gadgets-definition" )->inContentLanguage();
+ if ( !$g->exists() ) {
+ return false; // don't cache
+ }
+
+ $g = $g->plain();
+ } else {
+ $g = $forceNewText;
+ }
+
+ $gadgets = $this->listFromDefinition( $g );
+ if ( !count( $gadgets ) ) {
+ return false; // don't cache; Bug 37228
+ }
+
+ $source = $forceNewText !== null ? 'input text' : 'MediaWiki:Gadgets-definition';
+ wfDebug( __METHOD__ . ": $source parsed, cache entry should be updated\n" );
+
+ return $gadgets;
+ }
+
+ /**
+ * Generates a structured list of Gadget objects from a definition
+ *
+ * @param $definition
+ * @return array Array( name => Gadget )
+ */
+ private function listFromDefinition( $definition ) {
+ $definition = preg_replace( '/<!--.*?-->/s', '', $definition );
+ $lines = preg_split( '/(\r\n|\r|\n)+/', $definition );
+
+ $gadgets = array();
+ $section = '';
+
+ foreach ( $lines as $line ) {
+ $m = array();
+ if ( preg_match( '/^==+ *([^*:\s|]+?)\s*==+\s*$/', $line, $m ) ) {
+ $section = $m[1];
+ } else {
+ $gadget = $this->newFromDefinition( $line, $section );
+ if ( $gadget ) {
+ $gadgets[$gadget->getName()] = $gadget;
+ }
+ }
+ }
+
+ return $gadgets;
+ }
+
+ /**
+ * Creates an instance of this class from definition in MediaWiki:Gadgets-definition
+ * @param string $definition Gadget definition
+ * @param string $category
+ * @return Gadget|bool Instance of Gadget class or false if $definition is invalid
+ */
+ public function newFromDefinition( $definition, $category ) {
+ $m = array();
+ if ( !preg_match( '/^\*+ *([a-zA-Z](?:[-_:.\w\d ]*[a-zA-Z0-9])?)(\s*\[.*?\])?\s*((\|[^|]*)+)\s*$/', $definition, $m ) ) {
+ return false;
+ }
+ // NOTE: the gadget name is used as part of the name of a form field,
+ // and must follow the rules defined in http://www.w3.org/TR/html4/types.html#type-cdata
+ // Also, title-normalization applies.
+ $info = array( 'category' => $category );
+ $info['name'] = trim( str_replace( ' ', '_', $m[1] ) );
+ // If the name is too long, then RL will throw an MWException when
+ // we try to register the module
+ if ( !Gadget::isValidGadgetID( $info['name'] ) ) {
+ return false;
+ }
+ $info['definition'] = $definition;
+ $options = trim( $m[2], ' []' );
+
+ foreach ( preg_split( '/\s*\|\s*/', $options, -1, PREG_SPLIT_NO_EMPTY ) as $option ) {
+ $arr = preg_split( '/\s*=\s*/', $option, 2 );
+ $option = $arr[0];
+ if ( isset( $arr[1] ) ) {
+ $params = explode( ',', $arr[1] );
+ $params = array_map( 'trim', $params );
+ } else {
+ $params = array();
+ }
+
+ switch ( $option ) {
+ case 'ResourceLoader':
+ $info['resourceLoaded'] = true;
+ break;
+ case 'dependencies':
+ $info['dependencies'] = $params;
+ break;
+ case 'rights':
+ $info['requiredRights'] = $params;
+ break;
+ case 'skins':
+ $info['requiredSkins'] = $params;
+ break;
+ case 'default':
+ $info['onByDefault'] = true;
+ break;
+ case 'targets':
+ $info['targets'] = $params;
+ break;
+ case 'top':
+ $info['position'] = 'top';
+ break;
+ }
+ }
+
+ foreach ( preg_split( '/\s*\|\s*/', $m[3], -1, PREG_SPLIT_NO_EMPTY ) as $page ) {
+ $page = "Gadget-$page";
+
+ if ( preg_match( '/\.js/', $page ) ) {
+ $info['scripts'][] = $page;
+ } elseif ( preg_match( '/\.css/', $page ) ) {
+ $info['styles'][] = $page;
+ }
+ }
+
+ return new Gadget( $info );
+ }
+
+
+}
diff --git a/extensions/Gadgets/tests/GadgetTest.php b/extensions/Gadgets/tests/GadgetTest.php
index 8fd09295..26d77e5f 100644
--- a/extensions/Gadgets/tests/GadgetTest.php
+++ b/extensions/Gadgets/tests/GadgetTest.php
@@ -4,19 +4,25 @@
*/
class GadgetsTest extends MediaWikiTestCase {
+ /**
+ * @param string $line
+ * @return Gadget
+ */
private function create( $line ) {
- $g = Gadget::newFromDefinition( $line );
+ $repo = new MediaWikiGadgetsDefinitionRepo();
+ $g = $repo->newFromDefinition( $line, 'misc' );
$this->assertInstanceOf( 'Gadget', $g );
return $g;
}
- function testInvalidLines() {
- $this->assertFalse( Gadget::newFromDefinition( '' ) );
- $this->assertFalse( Gadget::newFromDefinition( '<foo|bar>' ) );
+ public function testInvalidLines() {
+ $repo = new MediaWikiGadgetsDefinitionRepo();
+ $this->assertFalse( $repo->newFromDefinition( '', 'misc' ) );
+ $this->assertFalse( $repo->newFromDefinition( '<foo|bar>', 'misc' ) );
}
- function testSimpleCases() {
+ public function testSimpleCases() {
$g = $this->create( '* foo bar| foo.css|foo.js|foo.bar' );
$this->assertEquals( 'foo_bar', $g->getName() );
$this->assertEquals( 'ext.gadget.foo_bar', $g->getModuleName() );
@@ -29,30 +35,36 @@ class GadgetsTest extends MediaWikiTestCase {
$this->assertTrue( $g->hasModule() );
}
- function testRLtag() {
+ public function testRLtag() {
$g = $this->create( '*foo [ResourceLoader]|foo.js|foo.css' );
$this->assertEquals( 'foo', $g->getName() );
$this->assertTrue( $g->supportsResourceLoader() );
$this->assertEquals( 0, count( $g->getLegacyScripts() ) );
}
- function testDependencies() {
+ public function testDependencies() {
$g = $this->create( '* foo[ResourceLoader|dependencies=jquery.ui]|bar.js' );
$this->assertEquals( array( 'Gadget-bar.js' ), $g->getScripts() );
$this->assertTrue( $g->supportsResourceLoader() );
$this->assertEquals( array( 'jquery.ui' ), $g->getDependencies() );
}
- function testPreferences() {
+ public function testPreferences() {
$prefs = array();
+ $repo = TestingAccessWrapper::newFromObject( new MediaWikiGadgetsDefinitionRepo() );
+ // Force usage of a MediaWikiGadgetsDefinitionRepo
+ GadgetRepo::setSingleton( $repo );
- Gadget::loadStructuredList( '* foo | foo.js
+ $gadgets = $repo->fetchStructuredList( '* foo | foo.js
==keep-section1==
* bar| bar.js
==remove-section==
* baz [rights=embezzle] |baz.js
==keep-section2==
* quux [rights=read] | quux.js' );
+ $this->assertGreaterThanOrEqual( 2, count( $gadgets ), "Gadget list parsed" );
+
+ $repo->definitionCache = $gadgets;
$this->assertTrue( GadgetHooks::getPreferences( new User, $prefs ), 'GetPrefences hook should return true' );
$options = $prefs['gadgets']['options'];
@@ -60,4 +72,9 @@ class GadgetsTest extends MediaWikiTestCase {
$this->assertTrue( isset( $options['&lt;gadget-section-keep-section1&gt;'] ) );
$this->assertTrue( isset( $options['&lt;gadget-section-keep-section2&gt;'] ) );
}
+
+ public function tearDown() {
+ GadgetRepo::setSingleton();
+ parent::tearDown();
+ }
}