summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Legler <alex@a3li.li>2015-01-03 22:05:07 +0100
committerAlex Legler <alex@a3li.li>2015-01-03 22:05:07 +0100
commit9891b05fe51478ce6d9cbeebc22d20bc179ebe67 (patch)
tree6de011a76140ac8e9e415f7102b7be4ed4aad6e2 /Widgets
parentAdd UserFunctions (diff)
downloadextensions-9891b05fe51478ce6d9cbeebc22d20bc179ebe67.tar.gz
extensions-9891b05fe51478ce6d9cbeebc22d20bc179ebe67.tar.bz2
extensions-9891b05fe51478ce6d9cbeebc22d20bc179ebe67.zip
Add Widgets
Diffstat (limited to 'Widgets')
-rw-r--r--Widgets/.gitignore4
-rw-r--r--Widgets/.gitmodules3
-rw-r--r--Widgets/.gitreview6
-rw-r--r--Widgets/Makefile29
-rw-r--r--Widgets/WidgetRenderer.php203
-rw-r--r--Widgets/Widgets.i18n.magic.php136
-rw-r--r--Widgets/Widgets.i18n.namespaces.php18
-rw-r--r--Widgets/Widgets.i18n.php35
-rw-r--r--Widgets/Widgets.php95
-rw-r--r--Widgets/compiled_templates/.htaccess3
-rw-r--r--Widgets/i18n/aln.json13
-rw-r--r--Widgets/i18n/ar.json16
-rw-r--r--Widgets/i18n/ast.json13
-rw-r--r--Widgets/i18n/be-tarask.json15
-rw-r--r--Widgets/i18n/br.json14
-rw-r--r--Widgets/i18n/bs.json13
-rw-r--r--Widgets/i18n/ca.json9
-rw-r--r--Widgets/i18n/cs.json18
-rw-r--r--Widgets/i18n/de.json18
-rw-r--r--Widgets/i18n/dsb.json13
-rw-r--r--Widgets/i18n/el.json17
-rw-r--r--Widgets/i18n/en.json13
-rw-r--r--Widgets/i18n/eo.json12
-rw-r--r--Widgets/i18n/es.json17
-rw-r--r--Widgets/i18n/eu.json12
-rw-r--r--Widgets/i18n/fa.json14
-rw-r--r--Widgets/i18n/fi.json15
-rw-r--r--Widgets/i18n/fr.json19
-rw-r--r--Widgets/i18n/frp.json12
-rw-r--r--Widgets/i18n/gl.json15
-rw-r--r--Widgets/i18n/gsw.json14
-rw-r--r--Widgets/i18n/he.json15
-rw-r--r--Widgets/i18n/hsb.json13
-rw-r--r--Widgets/i18n/hu.json14
-rw-r--r--Widgets/i18n/ia.json13
-rw-r--r--Widgets/i18n/id.json14
-rw-r--r--Widgets/i18n/it.json15
-rw-r--r--Widgets/i18n/ja.json19
-rw-r--r--Widgets/i18n/ko.json15
-rw-r--r--Widgets/i18n/ksh.json15
-rw-r--r--Widgets/i18n/lb.json12
-rw-r--r--Widgets/i18n/mk.json15
-rw-r--r--Widgets/i18n/ms.json13
-rw-r--r--Widgets/i18n/nb.json14
-rw-r--r--Widgets/i18n/nl.json14
-rw-r--r--Widgets/i18n/nn.json8
-rw-r--r--Widgets/i18n/oc.json13
-rw-r--r--Widgets/i18n/pl.json16
-rw-r--r--Widgets/i18n/pms.json14
-rw-r--r--Widgets/i18n/pt-br.json16
-rw-r--r--Widgets/i18n/pt.json14
-rw-r--r--Widgets/i18n/qqq.json21
-rw-r--r--Widgets/i18n/ro.json9
-rw-r--r--Widgets/i18n/roa-tara.json13
-rw-r--r--Widgets/i18n/ru.json15
-rw-r--r--Widgets/i18n/si.json10
-rw-r--r--Widgets/i18n/sk.json14
-rw-r--r--Widgets/i18n/sr-ec.json14
-rw-r--r--Widgets/i18n/sr-el.json9
-rw-r--r--Widgets/i18n/sv.json16
-rw-r--r--Widgets/i18n/te.json9
-rw-r--r--Widgets/i18n/tl.json15
-rw-r--r--Widgets/i18n/tzm.json8
-rw-r--r--Widgets/i18n/uk.json15
-rw-r--r--Widgets/i18n/vi.json15
-rw-r--r--Widgets/i18n/yue.json9
-rw-r--r--Widgets/i18n/zh-hans.json16
-rw-r--r--Widgets/i18n/zh-hant.json15
-rw-r--r--Widgets/smarty_plugins/modifier.validate.php29
69 files changed, 1368 insertions, 0 deletions
diff --git a/Widgets/.gitignore b/Widgets/.gitignore
new file mode 100644
index 00000000..98b092a9
--- /dev/null
+++ b/Widgets/.gitignore
@@ -0,0 +1,4 @@
+.svn
+*~
+*.kate-swp
+.*.swp
diff --git a/Widgets/.gitmodules b/Widgets/.gitmodules
new file mode 100644
index 00000000..7efe5f10
--- /dev/null
+++ b/Widgets/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "smarty"]
+ path = smarty
+ url = https://github.com/Fl4t/Smarty-git.git
diff --git a/Widgets/.gitreview b/Widgets/.gitreview
new file mode 100644
index 00000000..3cc69d62
--- /dev/null
+++ b/Widgets/.gitreview
@@ -0,0 +1,6 @@
+[gerrit]
+host=gerrit.wikimedia.org
+port=29418
+project=mediawiki/extensions/Widgets.git
+defaultbranch=master
+defaultrebase=0 \ No newline at end of file
diff --git a/Widgets/Makefile b/Widgets/Makefile
new file mode 100644
index 00000000..45b91925
--- /dev/null
+++ b/Widgets/Makefile
@@ -0,0 +1,29 @@
+all:
+
+rel: release
+release:
+ifndef v
+ # Must specify version as 'v' param
+ #
+ # make rel v=1.1.1
+ #
+else
+ #
+ # Tagging it with release tag
+ #
+ svn copy . svn+ssh://sergeychernyshev@svn.wikimedia.org/svnroot/mediawiki/tags/extensions/Widgets/REL_${subst .,_,${v}}/
+ #
+ # Creating release tarball and zip
+ #
+ svn export http://svn.wikimedia.org/svnroot/mediawiki/tags/extensions/Widgets/REL_${subst .,_,${v}}/ Widgets
+ # Not including Makefile into the package since it's not doing anything but release packaging
+ rm Widgets/Makefile
+ tar -c Widgets |gzip > Widgets_${v}.tgz
+ zip -r Widgets_${v}.zip Widgets
+ rm -rf Widgets
+
+ # upload to Google Code repository (need account with enough permissions)
+ googlecode/googlecode_upload.py -s "MediaWiki Widgets Extension v${v} (tarball)" -p mediawiki-widgets -l "Featured,Type-Archive,OpSys-All" Widgets_${v}.tgz
+ googlecode/googlecode_upload.py -s "MediaWiki Widgets Extension v${v} (zip)" -p mediawiki-widgets -l "Featured,Type-Archive,OpSys-All" Widgets_${v}.zip
+ rm Widgets_${v}.tgz Widgets_${v}.zip
+endif
diff --git a/Widgets/WidgetRenderer.php b/Widgets/WidgetRenderer.php
new file mode 100644
index 00000000..e5a96474
--- /dev/null
+++ b/Widgets/WidgetRenderer.php
@@ -0,0 +1,203 @@
+<?php
+/**
+ * Class holding functions for displaying widgets.
+ */
+
+class WidgetRenderer {
+
+ // A randomly-generated string, used to prevent malicious users from
+ // spoofing the output of #widget in order to have arbitrary
+ // JavaScript show up in the page's output.
+ static $mRandomString;
+
+ public static function initRandomString() {
+ // Set the random string, used in both encoding and decoding.
+ self::$mRandomString = substr( base64_encode( rand() ), 0, 7 );
+ }
+
+ public static function renderWidget( &$parser, $widgetName ) {
+ global $IP, $wgWidgetsCompileDir;
+
+ $smarty = new Smarty;
+ $smarty->left_delimiter = '<!--{';
+ $smarty->right_delimiter = '}-->';
+ $smarty->compile_dir = $wgWidgetsCompileDir;
+
+ // registering custom Smarty plugins
+ $smarty->addPluginsDir( "$IP/extensions/Widgets/smarty_plugins/" );
+
+ $smarty->enableSecurity();
+ // These settings were for Smarty v2 - they don't seem to
+ // have an equivalent in Smarty v3.
+ /*
+ $smarty->security_settings = array(
+ 'IF_FUNCS' => array(
+ 'is_array',
+ 'isset',
+ 'array',
+ 'list',
+ 'count',
+ 'sizeof',
+ 'in_array',
+ 'true',
+ 'false',
+ 'null'
+ ),
+ 'MODIFIER_FUNCS' => array( 'validate' )
+ );
+ */
+
+ // Register the Widgets extension functions.
+ $smarty->registerResource(
+ 'wiki',
+ array(
+ array( 'WidgetRenderer', 'wiki_get_template' ),
+ array( 'WidgetRenderer', 'wiki_get_timestamp' ),
+ array( 'WidgetRenderer', 'wiki_get_secure' ),
+ array( 'WidgetRenderer', 'wiki_get_trusted' )
+ )
+ );
+
+ $params = func_get_args();
+ // The first and second params are the parser and the widget
+ // name - we already have both.
+ array_shift( $params );
+ array_shift( $params );
+
+ $params_tree = array();
+
+ foreach ( $params as $param ) {
+ $pair = explode( '=', $param, 2 );
+
+ if ( count( $pair ) == 2 ) {
+ $key = trim( $pair[0] );
+ $val = trim( $pair[1] );
+ } else {
+ $key = $param;
+ $val = true;
+ }
+
+ if ( $val == 'false' ) {
+ $val = false;
+ }
+
+ /* If the name of the parameter has object notation
+
+ a.b.c.d
+
+ then we assign stuff to hash of hashes, not scalar
+
+ */
+ $keys = explode( '.', $key );
+
+ // $subtree will be moved from top to the bottom and
+ // at the end will point to the last level.
+ $subtree =& $params_tree;
+
+ // Go through all the keys but the last one.
+ $last_key = array_pop( $keys );
+
+ foreach ( $keys as $subkey ) {
+ // If next level of subtree doesn't exist yet,
+ // create an empty one.
+ if ( !array_key_exists( $subkey, $subtree ) ) {
+ $subtree[$subkey] = array();
+ }
+
+ // move to the lower level
+ $subtree =& $subtree[$subkey];
+ }
+
+ // last portion of the key points to itself
+ if ( isset( $subtree[$last_key] ) ) {
+ // If this is already an array, push into it;
+ // otherwise, convert into an array first.
+ if ( !is_array( $subtree[$last_key] ) ) {
+ $subtree[$last_key] = array( $subtree[$last_key] );
+ }
+ $subtree[$last_key][] = $val;
+ } else {
+ // doesn't exist yet, just setting a value
+ $subtree[$last_key] = $val;
+ }
+ }
+
+ $smarty->assign( $params_tree );
+
+ try {
+ $output = $smarty->fetch( "wiki:$widgetName" );
+ } catch ( Exception $e ) {
+ return '<div class=\"error\">' . wfMsgExt( 'widgets-error', array( 'parsemag' ), htmlentities( $widgetName ) ) . '</div>';
+ }
+
+ // Hide the widget from the parser.
+ $output = 'ENCODED_CONTENT ' . self::$mRandomString . base64_encode($output) . ' END_ENCODED_CONTENT';
+ return array( $output, 'noparse' => true, 'isHTML' => true );
+ }
+
+ public static function processEncodedWidgetOutput( &$out, &$text ) {
+ // Find all hidden content and restore to normal
+ $text = preg_replace_callback(
+ '/ENCODED_CONTENT ' . self::$mRandomString . '([0-9a-zA-Z\/+]+=*)* END_ENCODED_CONTENT/',
+ function( $matches ) {
+ return base64_decode( $matches[1]);
+ },
+ $text
+ );
+
+ return true;
+ }
+
+ // the following four functions are all registered with Smarty
+ public static function wiki_get_template( $widgetName, &$widgetCode, $smarty_obj ) {
+ global $wgWidgetsUseFlaggedRevs;
+
+ $widgetTitle = Title::newFromText( $widgetName, NS_WIDGET );
+
+ if ( $widgetTitle && $widgetTitle->exists() ) {
+ if ( $wgWidgetsUseFlaggedRevs ) {
+ $flaggedWidgetArticle = FlaggedArticle::getTitleInstance( $widgetTitle );
+ $flaggedWidgetArticleRevision = $flaggedWidgetArticle->getStableRev();
+
+ if ( $flaggedWidgetArticleRevision ) {
+ $widgetCode = $flaggedWidgetArticleRevision->getRevText();
+ } else {
+ $widgetCode = '';
+ }
+ } else {
+ $widgetArticle = new Article( $widgetTitle, 0 );
+ $widgetCode = $widgetArticle->getContent();
+ }
+
+ // Remove <noinclude> sections and <includeonly> tags from form definition
+ $widgetCode = StringUtils::delimiterReplace( '<noinclude>', '</noinclude>', '', $widgetCode );
+ $widgetCode = strtr( $widgetCode, array( '<includeonly>' => '', '</includeonly>' => '' ) );
+
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public static function wiki_get_timestamp( $widgetName, &$widgetTimestamp, $smarty_obj ) {
+ $widgetTitle = Title::newFromText( $widgetName, NS_WIDGET );
+
+ if ( $widgetTitle && $widgetTitle->exists() ) {
+ $widgetArticle = new Article( $widgetTitle, 0 );
+ $widgetTimestamp = $widgetArticle->getTouched();
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public static function wiki_get_secure( $tpl_name, &$smarty_obj ) {
+ // assume all templates are secure
+ return true;
+ }
+
+ public static function wiki_get_trusted( $tpl_name, &$smarty_obj ) {
+ // not used for templates
+ }
+
+}
diff --git a/Widgets/Widgets.i18n.magic.php b/Widgets/Widgets.i18n.magic.php
new file mode 100644
index 00000000..92bd0da0
--- /dev/null
+++ b/Widgets/Widgets.i18n.magic.php
@@ -0,0 +1,136 @@
+<?php
+/**
+ *
+ */
+
+$magicWords = array();
+
+/** English (English) */
+$magicWords['en'] = array(
+ 'widget' => array( 0, 'widget' ),
+);
+
+/** Arabic (العربية) */
+$magicWords['ar'] = array(
+ 'widget' => array( 0, 'ودجة' ),
+);
+
+/** Egyptian Spoken Arabic (مصرى) */
+$magicWords['arz'] = array(
+ 'widget' => array( 0, 'ودجة' ),
+);
+
+/** South Azerbaijani (تورکجه) */
+$magicWords['azb'] = array(
+ 'widget' => array( 0, 'آراجلار' ),
+);
+
+/** Chechen (нохчийн) */
+$magicWords['ce'] = array(
+ 'widget' => array( 0, 'тlехьажар', 'виджет' ),
+);
+
+/** German (Deutsch) */
+$magicWords['de'] = array(
+ 'widget' => array( 0, 'steuerelement' ),
+);
+
+/** Zazaki (Zazaki) */
+$magicWords['diq'] = array(
+ 'widget' => array( 0, 'çolek' ),
+);
+
+/** Greek (Ελληνικά) */
+$magicWords['el'] = array(
+ 'widget' => array( 0, 'πρόσθετο' ),
+);
+
+/** Esperanto (Esperanto) */
+$magicWords['eo'] = array(
+ 'widget' => array( 0, 'fenestraĵo', 'fenestrajxo' ),
+);
+
+/** Persian (فارسی) */
+$magicWords['fa'] = array(
+ 'widget' => array( 0, 'ابزار' ),
+);
+
+/** French (français) */
+$magicWords['fr'] = array(
+ 'widget' => array( 0, 'widget' ),
+);
+
+/** Japanese (日本語) */
+$magicWords['ja'] = array(
+ 'widget' => array( 0, 'ウィジェット' ),
+);
+
+/** Korean (한국어) */
+$magicWords['ko'] = array(
+ 'widget' => array( 0, '소도구', '위젯' ),
+);
+
+/** Macedonian (македонски) */
+$magicWords['mk'] = array(
+ 'widget' => array( 0, 'посредничкиелемент' ),
+);
+
+/** Malayalam (മലയാളം) */
+$magicWords['ml'] = array(
+ 'widget' => array( 0, 'കൂട' ),
+);
+
+/** Marathi (मराठी) */
+$magicWords['mr'] = array(
+ 'widget' => array( 0, 'विसाधन' ),
+);
+
+/** Oriya (ଓଡ଼ିଆ) */
+$magicWords['or'] = array(
+ 'widget' => array( 0, 'ବିଗେଟ' ),
+);
+
+/** Punjabi (ਪੰਜਾਬੀ) */
+$magicWords['pa'] = array(
+ 'widget' => array( 0, 'ਵਿਜੈਟ' ),
+);
+
+/** Russian (русский) */
+$magicWords['ru'] = array(
+ 'widget' => array( 0, 'виджет' ),
+);
+
+/** Sinhala (සිංහල) */
+$magicWords['si'] = array(
+ 'widget' => array( 0, 'ගැජට්', 'widget' ),
+);
+
+/** Serbian (Cyrillic script) (српски (ћирилица)‎) */
+$magicWords['sr-ec'] = array(
+ 'widget' => array( 0, 'виџет' ),
+);
+
+/** Serbian (Latin script) (srpski (latinica)‎) */
+$magicWords['sr-el'] = array(
+ 'widget' => array( 0, 'vidžet', 'element' ),
+);
+
+/** Ukrainian (українська) */
+$magicWords['uk'] = array(
+ 'widget' => array( 0, 'віджет' ),
+);
+
+/** Vietnamese (Tiếng Việt) */
+$magicWords['vi'] = array(
+ 'widget' => array( 0, 'công_cụ_đa_năng', 'côngcụđanăng' ),
+);
+
+/** Simplified Chinese (中文(简体)‎) */
+$magicWords['zh-hans'] = array(
+ 'widget' => array( 0, '小工具' ),
+);
+
+/** Traditional Chinese (中文(繁體)‎) */
+$magicWords['zh-hant'] = array(
+ 'widget' => array( 0, '小工具' ),
+); \ No newline at end of file
diff --git a/Widgets/Widgets.i18n.namespaces.php b/Widgets/Widgets.i18n.namespaces.php
new file mode 100644
index 00000000..286dc7ac
--- /dev/null
+++ b/Widgets/Widgets.i18n.namespaces.php
@@ -0,0 +1,18 @@
+<?php
+
+$namespaceNames = array();
+
+// For wikis without Widgets installed.
+if ( !defined( 'NS_WIDGET' ) ) {
+ define( 'NS_WIDGET', 274 );
+ define( 'NS_WIDGET_TALK', 275 );
+}
+
+$namespaceNames['en'] = array(
+ NS_WIDGET => 'Widget',
+ NS_WIDGET_TALK => 'Widget_talk',
+);
+
+$namespaceNames['de'] = array(
+ NS_WIDGET_TALK => 'Widget_Diskussion',
+);
diff --git a/Widgets/Widgets.i18n.php b/Widgets/Widgets.i18n.php
new file mode 100644
index 00000000..831b0a03
--- /dev/null
+++ b/Widgets/Widgets.i18n.php
@@ -0,0 +1,35 @@
+<?php
+/**
+ * This is a backwards-compatibility shim, generated by:
+ * https://git.wikimedia.org/blob/mediawiki%2Fcore.git/HEAD/maintenance%2FgenerateJsonI18n.php
+ *
+ * Beginning with MediaWiki 1.23, translation strings are stored in json files,
+ * and the EXTENSION.i18n.php file only exists to provide compatibility with
+ * older releases of MediaWiki. For more information about this migration, see:
+ * https://www.mediawiki.org/wiki/Requests_for_comment/Localisation_format
+ *
+ * This shim maintains compatibility back to MediaWiki 1.17.
+ */
+$messages = array();
+if ( !function_exists( 'wfJsonI18nShim0028640bdcb8f585' ) ) {
+ function wfJsonI18nShim0028640bdcb8f585( $cache, $code, &$cachedData ) {
+ $codeSequence = array_merge( array( $code ), $cachedData['fallbackSequence'] );
+ foreach ( $codeSequence as $csCode ) {
+ $fileName = dirname( __FILE__ ) . "/i18n/$csCode.json";
+ if ( is_readable( $fileName ) ) {
+ $data = FormatJson::decode( file_get_contents( $fileName ), true );
+ foreach ( array_keys( $data ) as $key ) {
+ if ( $key === '' || $key[0] === '@' ) {
+ unset( $data[$key] );
+ }
+ }
+ $cachedData['messages'] = array_merge( $data, $cachedData['messages'] );
+ }
+
+ $cachedData['deps'][] = new FileDependency( $fileName );
+ }
+ return true;
+ }
+
+ $GLOBALS['wgHooks']['LocalisationCacheRecache'][] = 'wfJsonI18nShim0028640bdcb8f585';
+}
diff --git a/Widgets/Widgets.php b/Widgets/Widgets.php
new file mode 100644
index 00000000..6c52c5a7
--- /dev/null
+++ b/Widgets/Widgets.php
@@ -0,0 +1,95 @@
+<?php
+/**
+ *
+ * {{#widget:<WidgetName>|<param1>=<value1>|<param2>=<value2>}}
+ *
+ * @author Sergey Chernyshev
+ * @author Yaron Koren
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ echo "This file is not a valid entry point.";
+ exit( 1 );
+}
+
+$wgExtensionCredits['parserhook'][] = array(
+ 'path' => __FILE__,
+ 'name' => 'Widgets',
+ 'descriptionmsg' => 'widgets-desc',
+ 'version' => '1.1',
+ 'author' => '[http://www.sergeychernyshev.com Sergey Chernyshev]',
+ 'url' => 'https://www.mediawiki.org/wiki/Extension:Widgets'
+);
+
+/**
+ * Set this to the index of the Widget namespace
+ */
+if ( !defined( 'NS_WIDGET' ) ) {
+ define( 'NS_WIDGET', 274 );
+}
+if ( !defined( 'NS_WIDGET_TALK' ) ) {
+ define( 'NS_WIDGET_TALK', NS_WIDGET + 1 );
+} elseif ( NS_WIDGET_TALK != NS_WIDGET + 1 ) {
+ throw new MWException( 'Configuration error. Do not define NS_WIDGET_TALK, it is automatically set based on NS_WIDGET.' );
+}
+
+// Support subpages only for talk pages by default
+$wgNamespacesWithSubpages[NS_WIDGET_TALK] = true;
+
+// Define new right
+$wgAvailableRights[] = 'editwidgets';
+
+// Assign editing to widgeteditor and sysop groups only (widgets can be dangerous so we do it here, not in LocalSettings)
+$wgGroupPermissions['*']['editwidgets'] = false;
+$wgGroupPermissions['widgeteditor']['editwidgets'] = true;
+$wgGroupPermissions['sysop']['editwidgets'] = true;
+
+// Set this to true to use FlaggedRevs extension's stable version for widget security
+$wgWidgetsUseFlaggedRevs = false;
+
+// Set a default directory for storage of compiled templates
+$wgWidgetsCompileDir = "$IP/extensions/Widgets/compiled_templates/";
+
+$dir = dirname( __FILE__ ) . '/';
+
+// Initialize Smarty
+require_once( $dir . 'smarty/libs/Smarty.class.php' );
+$wgMessagesDirs['Widgets'] = __DIR__ . '/i18n';
+$wgExtensionMessagesFiles['Widgets'] = $dir . 'Widgets.i18n.php';
+$wgExtensionMessagesFiles['WidgetsNamespaces'] = $dir . 'Widgets.i18n.namespaces.php';
+$wgAutoloadClasses['WidgetRenderer'] = $dir . 'WidgetRenderer.php';
+
+$wgExtensionMessagesFiles['WidgetsMagic'] = $dir . 'Widgets.i18n.magic.php';
+
+// Parser function registration
+$wgExtensionFunctions[] = 'widgetNamespacesInit';
+$wgExtensionFunctions[] = 'WidgetRenderer::initRandomString';
+$wgHooks['ParserFirstCallInit'][] = 'widgetParserFunctions';
+$wgHooks['ParserAfterTidy'][] = 'WidgetRenderer::processEncodedWidgetOutput';
+$wgHooks['CanonicalNamespaces'][] = 'widgetsAddNamespaces';
+
+/**
+ * @param $parser Parser
+ * @return bool
+ */
+function widgetParserFunctions( &$parser ) {
+ $parser->setFunctionHook( 'widget', array( 'WidgetRenderer', 'renderWidget' ) );
+
+ return true;
+}
+
+// Define new namespaces
+function widgetsAddNamespaces( &$list ) {
+ $list[NS_WIDGET] = 'Widget';
+ $list[NS_WIDGET_TALK] = 'Widget_talk';
+ return true;
+}
+
+function widgetNamespacesInit() {
+ global $wgNamespaceProtection, $wgWidgetsUseFlaggedRevs;
+
+ if ( !$wgWidgetsUseFlaggedRevs ) {
+ // Setting required namespace permission rights
+ $wgNamespaceProtection[NS_WIDGET] = array( 'editwidgets' );
+ }
+}
diff --git a/Widgets/compiled_templates/.htaccess b/Widgets/compiled_templates/.htaccess
new file mode 100644
index 00000000..ae5f5165
--- /dev/null
+++ b/Widgets/compiled_templates/.htaccess
@@ -0,0 +1,3 @@
+<Files *.php>
+ deny from all
+</Files>
diff --git a/Widgets/i18n/aln.json b/Widgets/i18n/aln.json
new file mode 100644
index 00000000..0bce6018
--- /dev/null
+++ b/Widgets/i18n/aln.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mdupont"
+ ]
+ },
+ "widgets-desc": "Wiki jep mundësin administratorëve të shtoni pa-formë Widgets në wiki nga faqet redaktimi brenda {{ns:widget}} hapësira. Zhvilluar Fillimisht për [http://www.ardorado.com Ardorado.com]",
+ "widgets-error": "Gabim në [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "redaktorët widget",
+ "group-widgeteditor-member": "editor widget",
+ "grouppage-widgeteditor": "Projekti: redaktorët widget",
+ "right-editwidgets": "Krijo dhe ndrysho https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets [Widgets] në <tt>{{ns:widget}}</tt> namespace"
+}
diff --git a/Widgets/i18n/ar.json b/Widgets/i18n/ar.json
new file mode 100644
index 00000000..fe8bbfd4
--- /dev/null
+++ b/Widgets/i18n/ar.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ ";Hiba;1",
+ "DRIHEM",
+ "OsamaK",
+ "زكريا"
+ ]
+ },
+ "widgets-desc": "يتيح لإداريي الويكي إضافة ودجات حرة الشكل إلى الويكي عن طريق تعديل صفحات نطاق {{ns:widget}}.\nالودجات التي يساهم بها المجتمع توجد في [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "خطأ في [[{{ns:widget}}:$1|الودجة $1]]",
+ "group-widgeteditor": "محررو الودجات",
+ "group-widgeteditor-member": "{{GENDER:$1|محرر ودجات}}",
+ "grouppage-widgeteditor": "{{ns:project}}:محررو الودجات",
+ "right-editwidgets": "إنشاء وتحرير [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] في الــ <tt>{{ns:widget}}</tt> مكان الاسم"
+}
diff --git a/Widgets/i18n/ast.json b/Widgets/i18n/ast.json
new file mode 100644
index 00000000..776e0c9d
--- /dev/null
+++ b/Widgets/i18n/ast.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Xuacu"
+ ]
+ },
+ "widgets-desc": "Permite a los alministradores de la wiki amestar widgets de mou llibre editando páxines del espaciu de nomes \"{{ns:widget}}\".\nPuen alcontrase widgets fechos pola comunidá en [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Error en [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Editores de widgets",
+ "group-widgeteditor-member": "{{GENDER:$1|editor|editora}} de widgets",
+ "grouppage-widgeteditor": "{{ns:project}}:Editores de widgets",
+ "right-editwidgets": "Crear y editar [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] nel espaciu de nomes <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/be-tarask.json b/Widgets/i18n/be-tarask.json
new file mode 100644
index 00000000..05a98e28
--- /dev/null
+++ b/Widgets/i18n/be-tarask.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "EugeneZelenko",
+ "Jim-by",
+ "Wizardist"
+ ]
+ },
+ "widgets-desc": "Дазваляе адміністратарам {{GRAMMAR:родны|{{SITENAME}}}} дадаваць віджэты вольных формаў у {{GRAMMAR:вінавальны|{{SITENAME}}}} праз рэдагаваньне старонак у прасторы назваў {{ns:widget}}. \nВіджэты, якія падтрымліваюцца супольнасьцю, можна знайсьці на [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Памылка ў [[{{ns:widget}}:$1|віджэце $1]]",
+ "group-widgeteditor": "Рэдактар віджэтаў",
+ "group-widgeteditor-member": "{{GENDER:$1|Рэдактар|Рэдактарка}} віджэтаў",
+ "grouppage-widgeteditor": "{{ns:project}}:Рэдактары віджэтаў",
+ "right-editwidgets": "стварэньне і рэдагаваньне [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets дапаўненьняў] у прасторы назваў <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/br.json b/Widgets/i18n/br.json
new file mode 100644
index 00000000..280c9c65
--- /dev/null
+++ b/Widgets/i18n/br.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fulup",
+ "Y-M D"
+ ]
+ },
+ "widgets-desc": "Talvezout a ra d'ar verourien da ouzhpennañ widgetoù d'ar wiki en ur gemmañ pajennoù en esaouenn anv {{ns:widget}}.\nAr widgetoù kinniget gant ar gumuniezh a gaver war [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Fazi e [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Aozerien widget",
+ "group-widgeteditor-member": "{{GENDER:$1|Aozer|Aozerez}} Widget",
+ "grouppage-widgeteditor": "{{ns:project}}:Aozerien widget",
+ "right-editwidgets": "Krouiñ ha kemmañ ar [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgetoù] en esaouenn anv <tt>{{ns:widget}}<tt>"
+}
diff --git a/Widgets/i18n/bs.json b/Widgets/i18n/bs.json
new file mode 100644
index 00000000..26c18452
--- /dev/null
+++ b/Widgets/i18n/bs.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "CERminator"
+ ]
+ },
+ "widgets-desc": "Omogućuje wiki administratorima da dodaju dodatke u slobodnoj formi na wiki putem uređivanja stranica unutar imenskog prostora {{ns:widget}}.\nPrvobitno razvijeni dodaci se mogu naći na [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org].",
+ "widgets-error": "Greška u [[{{ns:widget}}:$1|widgetu $1]]",
+ "group-widgeteditor": "Uređivači dodataka",
+ "group-widgeteditor-member": "Uređivač dodataka",
+ "grouppage-widgeteditor": "{{ns:project}}:Uređivač dodataka",
+ "right-editwidgets": "Pravljenje i uređivanje [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgeta] u imenskom prostoru <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/ca.json b/Widgets/i18n/ca.json
new file mode 100644
index 00000000..c53ebfbe
--- /dev/null
+++ b/Widgets/i18n/ca.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Paucabot",
+ "SMP"
+ ]
+ },
+ "right-editwidgets": "Crear i editar [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets ginys] a l'espai de noms <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/cs.json b/Widgets/i18n/cs.json
new file mode 100644
index 00000000..207d9b1e
--- /dev/null
+++ b/Widgets/i18n/cs.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kuvaly",
+ "Matěj Grabovský",
+ "Mormegil",
+ "Reaperman"
+ ]
+ },
+ "widgets-desc": "Umožňuje správcům wiki přidávat na wiki ovládací prvky úpravou stránek ve jmenném prostoru {{ns:widget}}.\nPrvky vytvořené komunitou lze nalézt na [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Chyba ve [[{{ns:widget}}:$1|widgetu $1]]",
+ "group-widgeteditor": "Editoři ovládacích prvků",
+ "group-widgeteditor-member": "{{GENDER:$1|editor ovládacích prvků|editorka ovládacích prvků}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Editoři ovládacích prvků",
+ "right-editwidgets": "Tvorba a úprava stránek [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets ovládacích prvků] ve jmenném prostoru <tt>{{ns:widget}}</tt>",
+ "group-widgeteditor.css": "/* Zde uvedené CSS bude ovlivňovat pouze editory ovládacích prvků */",
+ "group-widgeteditor.js": "/* Zde uvedený JavaScript bude použit pouze pro editory ovládacích prvků */"
+}
diff --git a/Widgets/i18n/de.json b/Widgets/i18n/de.json
new file mode 100644
index 00000000..2d5d3b65
--- /dev/null
+++ b/Widgets/i18n/de.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "Jan Luca",
+ "Kghbln",
+ "Pill",
+ "Sebastian Wallroth",
+ "The Evil IP address",
+ "Umherirrender"
+ ]
+ },
+ "widgets-desc": "Ermöglicht das Hinzufügen von Widgets. Vorhandene Widgets werden auf der Website [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org] gesammelt",
+ "widgets-error": "Fehler beim [[{{ns:widget}}:$1|Widget $1]]",
+ "group-widgeteditor": "Widget-Bearbeiter",
+ "group-widgeteditor-member": "{{GENDER:$1|Widget-Bearbeiter|Widget-Bearbeiterin}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Widget-Bearbeiter",
+ "right-editwidgets": "[https://www.mediawiki.org/wiki/Extension:Widgets Widgets] im <code>{{ns:widget}}</code>-Namensraum bearbeiten und erstellen"
+}
diff --git a/Widgets/i18n/dsb.json b/Widgets/i18n/dsb.json
new file mode 100644
index 00000000..5669507d
--- /dev/null
+++ b/Widgets/i18n/dsb.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "widgets-desc": "Dowólujo wikijowym administratoram wikijeju pśez wobźěłowanje w mjenjowem rumje {{ns:widget}} swójske miniprogramy pśidaś.\nMiniprogramy, kótarež su se napórali wót zromaźeństwa, móžoš na [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org] namakaś.",
+ "widgets-error": "Zmólka w [[{{ns:widget}}:$1|miniprogramje $1]]",
+ "group-widgeteditor": "Wobźěłowarje miniprogramow",
+ "group-widgeteditor-member": "{{GENDER:$1|Wobźěłaŕ miniprogramow|Wobźěłarka miniprogramow}}",
+ "grouppage-widgeteditor": "{{ns:project}}: Wobźěłowarje miniprogramow",
+ "right-editwidgets": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets Woknowe elementy] w mjenjowem rumje <tt>{{ns:widget}}</tt> napóraś a wobźěłaś"
+}
diff --git a/Widgets/i18n/el.json b/Widgets/i18n/el.json
new file mode 100644
index 00000000..db512a24
--- /dev/null
+++ b/Widgets/i18n/el.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Geraki",
+ "Lou",
+ "Omnipaedista",
+ "Protnet",
+ "ZaDiak"
+ ]
+ },
+ "widgets-desc": "Επιτρέπει στους διαχειριστές του wiki να προσθέτουν ελεύθερης μορφής widget στο wiki μέσω επεξεργασίας σελίδων στο χώρο ονομάτων {{ns:widget}}.\nWidget φτιαγμένα από την κοινότητα μπορούν να βρεθούν στο [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Σφάλμα στο [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Επεξεργαστές widget",
+ "group-widgeteditor-member": "Επεξεργαστής widget",
+ "grouppage-widgeteditor": "{{ns:project}}:Επεξεργαστές widget",
+ "right-editwidgets": "Δημιουργία και επεξεργασία [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widget] στο χώρο ονομάτων <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/en.json b/Widgets/i18n/en.json
new file mode 100644
index 00000000..8aa9cd08
--- /dev/null
+++ b/Widgets/i18n/en.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": []
+ },
+ "widgets-desc": "Allows wiki administrators to add free-form widgets to the wiki by editing pages within the {{ns:widget}} namespace.\nCommunity-contributed widgets can be found on [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Error in [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Widget editors",
+ "group-widgeteditor-member": "{{GENDER:$1|widget editor}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Widget editors",
+ "right-editwidgets": "Create and edit [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] in the <code>{{ns:widget}}</code> namespace",
+ "group-widgeteditor.css": "/* CSS placed here will affect widget editors only */",
+ "group-widgeteditor.js": "/* JS placed here will affect widget editors only */"
+}
diff --git a/Widgets/i18n/eo.json b/Widgets/i18n/eo.json
new file mode 100644
index 00000000..c9d8cdca
--- /dev/null
+++ b/Widgets/i18n/eo.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Airon90"
+ ]
+ },
+ "widgets-error": "Eraro en [[{{ns:widget}}:$1|fenestraĵo $1]]",
+ "group-widgeteditor": "Fenestraĵaj eldonistoj",
+ "group-widgeteditor-member": "Fenestraĵa eldonist{{GENDER:$1||in}}o",
+ "grouppage-widgeteditor": "{{ns:project}}:Fenestraĵaj eldonistoj",
+ "right-editwidgets": "Krei kaj redakti [http://www.mediawiki.org/vikia/Extension:Widgets fenestraĵojn] en la nomspaco <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/es.json b/Widgets/i18n/es.json
new file mode 100644
index 00000000..e61a94d7
--- /dev/null
+++ b/Widgets/i18n/es.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Antur",
+ "Armando-Martin",
+ "Crazymadlover",
+ "Diego Grez",
+ "Peter17"
+ ]
+ },
+ "widgets-desc": "Permite a los administradores agregar widgets a la wiki editando páginas dentro del espacio de nombres {{ns:widget}}.\nWidgets desarrollados comunitariamente pueden ser encontrados en [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Error en [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Editores de widget",
+ "group-widgeteditor-member": "{{GENDER:$1|editor|editora}} de widgets",
+ "grouppage-widgeteditor": "{{ns:project}}:Editores de widget",
+ "right-editwidgets": "Crear y editar [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] en el espacio de nombre \"{{ns:widget}}\""
+}
diff --git a/Widgets/i18n/eu.json b/Widgets/i18n/eu.json
new file mode 100644
index 00000000..de653d37
--- /dev/null
+++ b/Widgets/i18n/eu.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Theklan"
+ ]
+ },
+ "widgets-error": "Akatsa [[{{ns:widget}}:$1|$1 widgetean]]",
+ "group-widgeteditor": "Widget editoreak",
+ "group-widgeteditor-member": "{{GENDER:$1|widget editorea}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Widget editoreak",
+ "right-editwidgets": "Sortu eta aldatu [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgetak] <tt>{{ns:widget}}</tt> izen-tartean"
+}
diff --git a/Widgets/i18n/fa.json b/Widgets/i18n/fa.json
new file mode 100644
index 00000000..1cd04c1f
--- /dev/null
+++ b/Widgets/i18n/fa.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Armin1392",
+ "ZxxZxxZ"
+ ]
+ },
+ "widgets-desc": "اجازه سرپرستان ویکی برای افزودن ویدجت‌های رایگان به ویکی توسط ویرایش صفحات درون {{ns:widget}} فضای نام.\nویدجت‌های کمک به جامعه می‌توانند در [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org] پیدا شوند",
+ "widgets-error": "خطا در [[{{ns:widget}}:$1|ابزار $1]]",
+ "group-widgeteditor": "ویرایشگران ابزار",
+ "group-widgeteditor-member": "{{GENDER:$1|ویرایشگر ابزار}}",
+ "grouppage-widgeteditor": "{{ns:project}}:ویرایشگران ابزار",
+ "right-editwidgets": "ایجاد و ویرایش [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets ابزارها] در فضای‌نام <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/fi.json b/Widgets/i18n/fi.json
new file mode 100644
index 00000000..3a607dd8
--- /dev/null
+++ b/Widgets/i18n/fi.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cimon Avaro",
+ "Crt",
+ "Nike"
+ ]
+ },
+ "widgets-desc": "Mahdollistaa wikin ylläpitäjille vapaamuotoisten pienoisohjelmien lisäämisen sivua nimiavaruudessa {{ns:widget}} muokkaamalla.\nYhteisön tekemiä pienoisohjelmia löytyy osoitteesta [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org].",
+ "widgets-error": "Virhe [[{{ns:widget}}:$1|pienoisohjelmassa $1]]",
+ "group-widgeteditor": "pienoisohjelmien muokkaajat",
+ "group-widgeteditor-member": "{{GENDER:$1|pienoisohjelman muokkaaja}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Pienoisohjelmien muokkaajat",
+ "right-editwidgets": "Luoda ja muokata [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets pienoisohjelmia] nimiavaruudessa <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/fr.json b/Widgets/i18n/fr.json
new file mode 100644
index 00000000..5be7a5ee
--- /dev/null
+++ b/Widgets/i18n/fr.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Gomoko",
+ "IAlex",
+ "Jean-Frédéric",
+ "Urhixidur",
+ "Verdy p"
+ ]
+ },
+ "widgets-desc": "Permet aux administrateurs du wiki d’ajouter des ''widgets'' (gadgets logiciels) au wiki en modifiant des pages dans l’espace de noms {{ns:widget}}. Les ''widgets'' proposés par la communauté sont disponibles sur [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Erreur dans le [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Modificateurs de widgets",
+ "group-widgeteditor-member": "{{GENDER:$1|Modificateur de widget}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Modificateurs de widgets",
+ "right-editwidgets": "Créer et modifier les [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] dans l’espace de noms « {{ns:widget}} »",
+ "group-widgeteditor.css": "/* Le CSS placé ici n’affectera que les éditeurs de widgets */",
+ "group-widgeteditor.js": "/* Le Javascript placé ici n’affectera que les éditeurs de widgets */"
+}
diff --git a/Widgets/i18n/frp.json b/Widgets/i18n/frp.json
new file mode 100644
index 00000000..82447f04
--- /dev/null
+++ b/Widgets/i18n/frp.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "ChrisPtDe"
+ ]
+ },
+ "widgets-error": "Èrror dens lo [[{{ns:widget}}:$1|vouidgèt $1]]",
+ "group-widgeteditor": "Changiors de vouidgèts",
+ "group-widgeteditor-member": "changio{{GENDER:$1|r|sa}} de vouidgèts",
+ "grouppage-widgeteditor": "{{ns:project}}:Changiors de vouidgèts",
+ "right-editwidgets": "Fâre et changiér los [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets vouidgèts] dens l’èspâço de noms « {{ns:widget}} »"
+}
diff --git a/Widgets/i18n/gl.json b/Widgets/i18n/gl.json
new file mode 100644
index 00000000..e269b88d
--- /dev/null
+++ b/Widgets/i18n/gl.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Toliño"
+ ]
+ },
+ "widgets-desc": "Permite aos administradores do wiki engadir widgets ao editar páxinas no espazo de nomes \"{{ns:widget}}\".\nPódense atopar os widgets desenvolvidos para a comunidade en [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Erro no [[{{ns:widget}}:$1|widget \"$1\"]]",
+ "group-widgeteditor": "Editores de widgets",
+ "group-widgeteditor-member": "{{GENDER:$1|editor|editora}} de widgets",
+ "grouppage-widgeteditor": "{{ns:project}}:Editores de widgets",
+ "right-editwidgets": "Crear e editar [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] no espazo de nomes <tt>{{ns:widget}}</tt>",
+ "group-widgeteditor.css": "/* O CSS que se coloque aquí afectará soamente aos editores de widgets */",
+ "group-widgeteditor.js": "/* O JS que se coloque aquí afectará soamente aos editores de widgets */"
+}
diff --git a/Widgets/i18n/gsw.json b/Widgets/i18n/gsw.json
new file mode 100644
index 00000000..48f210e0
--- /dev/null
+++ b/Widgets/i18n/gsw.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Als-Chlämens",
+ "Als-Holder"
+ ]
+ },
+ "widgets-desc": "Erlaubt Wikiadministratore Frej-Form-Widgets zum Wiki zuezfiege dur d Bearbeitig vu Syte im {{ns:widget}}-Namensruum.\nVu dr Gmeinschaft aagleiti Widgets chenne unter [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org] gfunde wäre.",
+ "widgets-error": "Fähler im [[{{ns:widget}}:$1|Widget $1]]",
+ "group-widgeteditor": "Widget-Editore",
+ "group-widgeteditor-member": "{{GENDER:$1|Widget-Bearbeiter|Widget-Bearbeiteri}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Widget-Editore",
+ "right-editwidgets": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets Widgets] im <tt>{{ns:widget}}</tt>-Namensruum aalege un bearbeite"
+}
diff --git a/Widgets/i18n/he.json b/Widgets/i18n/he.json
new file mode 100644
index 00000000..082ee2bb
--- /dev/null
+++ b/Widgets/i18n/he.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Amire80",
+ "Rotemliss",
+ "YaronSh"
+ ]
+ },
+ "widgets-desc": "מתן האפשרות למנהלי אתר הוויקי להוסיף וידג׳טים הבנויים בצורה חופשית לאתר הוויקי באמצעות עריכת הדפים שבמרחב השם {{ns:widget}}.\nניתן למצוא וידג׳טים שנתרמו על ידי הקהילה ב־[http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "שגיאה ב[[{{ns:widget}}:$1|ווידג'ט $1]]",
+ "group-widgeteditor": "עורכי וידג'טים",
+ "group-widgeteditor-member": "{{GENDER:$1|עורך|עורכת}} וידג'טים",
+ "grouppage-widgeteditor": "{{ns:project}}:עורכי וידג'טים",
+ "right-editwidgets": "יצירה ועריכה של [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets וידג׳טים] במרחב השם <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/hsb.json b/Widgets/i18n/hsb.json
new file mode 100644
index 00000000..79115074
--- /dev/null
+++ b/Widgets/i18n/hsb.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Michawiki"
+ ]
+ },
+ "widgets-desc": "Dowola wikijowym administratoram wikijej přez wobdźěłowanje stronow znutřka mjenjoweho ruma {{ns:widget}} swójske miniprogramy přidać.\nWot zhromadźenstwa wutowrjene miniprogramy móžeš na [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org] namakać.",
+ "widgets-error": "Zmylk w [[{{ns:widget}}:$1|miniprogramje $1]]",
+ "group-widgeteditor": "Wobdźěłowarjo miniprogramow",
+ "group-widgeteditor-member": "{{GENDER:$1|Wobdźěłar miniprogramow|Wobdźěłarka miniprogramow}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Wobdźěłowarjo miniprogramow",
+ "right-editwidgets": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets Woknowe elementy] w mjenowym rumje <tt>{{ns:widget}}</tt> wutworić a wobdźěłać"
+}
diff --git a/Widgets/i18n/hu.json b/Widgets/i18n/hu.json
new file mode 100644
index 00000000..ad77b4c1
--- /dev/null
+++ b/Widgets/i18n/hu.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dj",
+ "Glanthor Reviol"
+ ]
+ },
+ "widgets-desc": "Lehetővé teszi a wiki adminisztrátorainak, hogy kötetlen alakú minialkalmazásokat adjanak a wikihez lapok szerkesztésével a(z) {{ns:widget}} névtérben. Közösség által fejlesztett minialkalmazások a [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org] oldalon találhatók.",
+ "widgets-error": "Hiba a(z) [[{{ns:widget}}:$1|$1 minialkalmazásban]]",
+ "group-widgeteditor": "Minialkalmazás szerkesztői",
+ "group-widgeteditor-member": "Minialkalmazás-szerkesztő",
+ "grouppage-widgeteditor": "{{ns:project}}:Minialkalmazás-szerkesztők",
+ "right-editwidgets": "widgetek létrehozása és szerkesztése a <tt>{{ns:widget}}</tt> névtérben"
+}
diff --git a/Widgets/i18n/ia.json b/Widgets/i18n/ia.json
new file mode 100644
index 00000000..53a07785
--- /dev/null
+++ b/Widgets/i18n/ia.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "McDutchie"
+ ]
+ },
+ "widgets-desc": "Permitte al administratores del wiki inserer widgets qualcunque in le wiki, per modificar paginas intra le spatio de nomines {{ns:widget}}.\nLe widgets contribuite per le communitate se trova a [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Error in [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Modificatores de widgets",
+ "group-widgeteditor-member": "{{GENDER:$1|modificator|modificatrice}} de widgets",
+ "grouppage-widgeteditor": "{{ns:project}}:Modificatores de widgets",
+ "right-editwidgets": "Crear e modificar [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] in le spatio de nomines <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/id.json b/Widgets/i18n/id.json
new file mode 100644
index 00000000..ebf12b19
--- /dev/null
+++ b/Widgets/i18n/id.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bennylin",
+ "Irwangatot"
+ ]
+ },
+ "widgets-desc": "Mengijinkan pengurus wiki untuk menambahkan formulir bebas widget ke wiki dengan menyunting halaman di ruang nama {{ns:widget}}.\nkomunitas kontribusi widgets dapat di temuai pada [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Kesalahan pada [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Penyunting widget",
+ "group-widgeteditor-member": "Penyunting widget",
+ "grouppage-widgeteditor": "{{ns:project}}:Penyunting widget",
+ "right-editwidgets": "Buat dan Sunting halaman [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] di <tt>{{ns:widget}}</tt> ruang nama"
+}
diff --git a/Widgets/i18n/it.json b/Widgets/i18n/it.json
new file mode 100644
index 00000000..31f7d13e
--- /dev/null
+++ b/Widgets/i18n/it.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Beta16",
+ "Civvì",
+ "Darth Kule"
+ ]
+ },
+ "widgets-desc": "Permette agli amministratori del sito di aggiungere widget liberi al sito modificando pagine nel namespace {{ns:widget}}.\nWidget creati dalla comunità possono essere trovati su [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Errore nel [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Editori widget",
+ "group-widgeteditor-member": "{{GENDER:$1|Editore widget|Editrice widget|Editore\\trice widget}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Editori widget",
+ "right-editwidgets": "Crea e modifica [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widget] nel namespace <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/ja.json b/Widgets/i18n/ja.json
new file mode 100644
index 00000000..152af4f4
--- /dev/null
+++ b/Widgets/i18n/ja.json
@@ -0,0 +1,19 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fryed-peach",
+ "Iwai.masaharu",
+ "Shirayuki",
+ "Whym",
+ "青子守歌"
+ ]
+ },
+ "widgets-desc": "管理者が「{{ns:widget}}」名前空間内のページを編集し、ウィキに自由な形式のウィジェットを追加できるようにする。\nコミュニティが提供しているウィジェットは [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org] にある",
+ "widgets-error": "[[{{ns:widget}}:$1|ウィジェット $1]] でのエラー",
+ "group-widgeteditor": "ウィジェット編集者",
+ "group-widgeteditor-member": "{{GENDER:$1|ウィジェット編集者}}",
+ "grouppage-widgeteditor": "{{ns:project}}:ウィジェット編集者",
+ "right-editwidgets": "<tt>{{ns:widget}}</tt>名前空間で[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets ウィジェット]を作成/編集",
+ "group-widgeteditor.css": "/* ここに記述したCSSはウィジェット編集者のみに影響します */",
+ "group-widgeteditor.js": "/* ここに記述したJSはウィジェット編集者のみに影響します */"
+}
diff --git a/Widgets/i18n/ko.json b/Widgets/i18n/ko.json
new file mode 100644
index 00000000..778599a8
--- /dev/null
+++ b/Widgets/i18n/ko.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "아라"
+ ]
+ },
+ "widgets-desc": "위키 관리자는 {{ns:widget}} 이름공간에서 문서를 편집해 자유로운 형태의 위젯을 추가할 수 있습니다.\n커뮤니티 기여 위젯은 [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]에서 찾을 수 있습니다",
+ "widgets-error": "[[{{ns:widget}}:$1|$1 위젯]] 오류",
+ "group-widgeteditor": "위젯 편집자",
+ "group-widgeteditor-member": "{{GENDER:$1|위젯 편집자}}",
+ "grouppage-widgeteditor": "{{ns:project}}:위젯 편집자",
+ "right-editwidgets": "<tt>{{ns:widget}}</tt> 이름공간에서 [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets 위젯]을 만들고 편집",
+ "group-widgeteditor.css": "/* 이 CSS 설정은 위젯 편집자에만 적용됩니다 */",
+ "group-widgeteditor.js": "/* 이 자바스크립트 설정은 위젯 편집자에만 적용됩니다 */"
+}
diff --git a/Widgets/i18n/ksh.json b/Widgets/i18n/ksh.json
new file mode 100644
index 00000000..f67343e5
--- /dev/null
+++ b/Widgets/i18n/ksh.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Purodha"
+ ]
+ },
+ "widgets-desc": "Määt et müjjelesch, dat Wiki-Köbeße <i lang=\"en\">Widgets</i> en ene freie Forrem en däm Appachtemang „{{ns:widget}}“ enndraare. \nDivärse Lück han ehr <i lang=\"en\">Widgets</i> op <i lang=\"en\">[http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]</i> öffentlesch jemaat.",
+ "widgets-error": "Doh es ene Fähler em [[{{ns:widget}}:$1|<i lang=\"en\">Widget</i> $1]]",
+ "group-widgeteditor": "Schriiver för <i lang=\"en\">Widgets</i>",
+ "group-widgeteditor-member": "{{GENDER:$1|<i lang=\"en\">Widget</i>-Schriiver}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Widget-Schriiver",
+ "right-editwidgets": "Sigge, alsu <i lang=\"en\">[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets Widgets]</i>, em Appachemang „{{ns:widget}}“ ändere udder aanlääje",
+ "group-widgeteditor.css": "/* Dat CSS heh aan dä Stell wirrek bloß beim Ändere vun Widgets */",
+ "group-widgeteditor.js": "/* Dat JavaSkrep heh aan dä Stell wirrek bloß beim Ändere vun Widgets */"
+}
diff --git a/Widgets/i18n/lb.json b/Widgets/i18n/lb.json
new file mode 100644
index 00000000..9d48eb96
--- /dev/null
+++ b/Widgets/i18n/lb.json
@@ -0,0 +1,12 @@
+{
+ "@metadata": {
+ "authors": [
+ "Robby"
+ ]
+ },
+ "widgets-error": "Feeler an [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Widget-Editeuren",
+ "group-widgeteditor-member": "{{GENDER:$1|Widget-Editeur}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Widget Editeuren",
+ "right-editwidgets": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] am <tt>{{ns:widget}}</tt> Nummraum uleeën an änneren"
+}
diff --git a/Widgets/i18n/mk.json b/Widgets/i18n/mk.json
new file mode 100644
index 00000000..ac63f103
--- /dev/null
+++ b/Widgets/i18n/mk.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Bjankuloski06"
+ ]
+ },
+ "widgets-desc": "Им овозможува на администраторите да додаваат посреднички елементи со уредување на страници во именскиот простор {{ns:widget}}.\nЕлементи изработени од учесници од заедницата можете да најдете на [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Грешка во [[{{ns:widget}}:$1|посредничкиот елемент $1]]",
+ "group-widgeteditor": "Уредници на посреднички елементи",
+ "group-widgeteditor-member": "{{GENDER:$1|уредник на посреднички елементи}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Уредници на посреднички елементи",
+ "right-editwidgets": "Создавање и уредување на [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets направи] во именскиот простор <tt>{{ns:widget}}</tt>",
+ "group-widgeteditor.css": "/* Тука поставениот CSS ќе се применува само врз уредниците на посреднички елементи (помагала) */",
+ "group-widgeteditor.js": "/* Тука поставениот JS ќе се применува само врз уредниците на посреднички елементи (помагала) */"
+}
diff --git a/Widgets/i18n/ms.json b/Widgets/i18n/ms.json
new file mode 100644
index 00000000..487c3084
--- /dev/null
+++ b/Widgets/i18n/ms.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia"
+ ]
+ },
+ "widgets-desc": "Membolehkan pentadbir wiki untuk menambahkan widget berbentuk bebas pada wiki dengan menyunting laman di dalam ruang nama {{ns:widget}}.\nWidget sumbangan komuniti boleh didapati di [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Ralat pada [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Penyunting widget",
+ "group-widgeteditor-member": "{{GENDER:$1|Penyunting widget}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Penyunting widget",
+ "right-editwidgets": "Mencipta dan menyunting [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widget] dalam ruang nama <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/nb.json b/Widgets/i18n/nb.json
new file mode 100644
index 00000000..9b7292cf
--- /dev/null
+++ b/Widgets/i18n/nb.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Danmichaelo",
+ "Nghtwlkr"
+ ]
+ },
+ "widgets-desc": "Tillater wikiadministratorer å legge til fri-form skjermelement til wikien ved å redigere siden innen {{ns:widget}}-navnerommet.\nFellesskaps-bidratte skjermelement kan finnes på [http://mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Feil i [[{{ns:widget}}:$1|skjermelement $1]]",
+ "group-widgeteditor": "Bidragsytere for skjermelement",
+ "group-widgeteditor-member": "{{GENDER:$1|Bidragsyter for skjermelement}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Bidragsytere for skjermelement",
+ "right-editwidgets": "Lag og rediger [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets skjermelement] i <tt>{{ns:widget}}</tt>-navnerommet"
+}
diff --git a/Widgets/i18n/nl.json b/Widgets/i18n/nl.json
new file mode 100644
index 00000000..0914f7f6
--- /dev/null
+++ b/Widgets/i18n/nl.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "SPQRobin",
+ "Siebrand"
+ ]
+ },
+ "widgets-desc": "Stelt wikibeheerders in staat naar eigen inzicht widgets aan de wiki toe te voegen door het bewerken van pagina's in de naamruimte {{ns:widget}}.\nDoor de gemeenschap ontwikkelde widgets zijn te vinden op [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Fout in [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Widgetbewerkers",
+ "group-widgeteditor-member": "{{GENDER:$1|widgetbewerker}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Widgetbewerkers",
+ "right-editwidgets": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets Widgets] aanmaken en bewerken in de naamruimte <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/nn.json b/Widgets/i18n/nn.json
new file mode 100644
index 00000000..6baba7df
--- /dev/null
+++ b/Widgets/i18n/nn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Harald Khan"
+ ]
+ },
+ "right-editwidgets": "Endra sider i «{{ns:widget}}»-namnerommet"
+}
diff --git a/Widgets/i18n/oc.json b/Widgets/i18n/oc.json
new file mode 100644
index 00000000..e6eaeaa1
--- /dev/null
+++ b/Widgets/i18n/oc.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cedric31"
+ ]
+ },
+ "widgets-desc": "Permet als administrators del wiki d'apondre de widgets al wiki en modificant de paginas dins l'espac de noms {{ns:widget}}. Desvolopat a la basa per [http://www.ardorado.com Ardorado.com]",
+ "widgets-error": "Error dins lo [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Modificators de widgets",
+ "group-widgeteditor-member": "{{GENDER:$1|Modificator de widget}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Modificators de widgets",
+ "right-editwidgets": "Crear e modificar las [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] dins l'espaci de noms « {{ns:widget}} »"
+}
diff --git a/Widgets/i18n/pl.json b/Widgets/i18n/pl.json
new file mode 100644
index 00000000..ce8b29ec
--- /dev/null
+++ b/Widgets/i18n/pl.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "BeginaFelicysym",
+ "Sp5uhe",
+ "ToSter",
+ "Woytecr"
+ ]
+ },
+ "widgets-desc": "Pozwala administratorom wiki na dodawanie widżetów w dowolnej formie do wiki poprzez edycję stron w przestrzeni nazw {{ns:widget}}.\nWidżety stworzone przez społeczność można odnaleźć na stronie [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Błąd w [[{{ns:widget}}:$1|widżecie $1]]",
+ "group-widgeteditor": "Redaktorzy widżetów",
+ "group-widgeteditor-member": "{{GENDER:$1|Redaktor widżetów|Redaktorka widżetów}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Redaktorzy widżetów",
+ "right-editwidgets": "Tworzenie i edycja [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widżetów] w przestrzeni nazw <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/pms.json b/Widgets/i18n/pms.json
new file mode 100644
index 00000000..b326cf4f
--- /dev/null
+++ b/Widgets/i18n/pms.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Borichèt",
+ "Dragonòt"
+ ]
+ },
+ "widgets-desc": "A përmët a j'aministrator dla wiki ëd gionté ëd widget a forma lìbera a la wiki an modificand dle pàgine ant lë spassi nominal {{ns:widget}}.\nDij widget creà da la comunità a peulo esse trovà su [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Eror an [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Editor ëd widget",
+ "group-widgeteditor-member": "{{GENDER:$1|Editor ëd widget}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Editor ëd widget",
+ "right-editwidgets": "Creé e modifiché ij [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] ant lë spassi nominal <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/pt-br.json b/Widgets/i18n/pt-br.json
new file mode 100644
index 00000000..9d3c6bfb
--- /dev/null
+++ b/Widgets/i18n/pt-br.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Cainamarques",
+ "Eduardo.mps",
+ "Giro720",
+ "Helder.wiki"
+ ]
+ },
+ "widgets-desc": "Permite que os administradores da wiki adicionem ''widgets free-form'' à wiki, editando páginas no espaço nominal {{ns:widget}}.\nWidgets fornecidos pela comunidade podem ser encontrados na [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Erro em [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Editores de widget",
+ "group-widgeteditor-member": "{{GENDER:$1|Editor|Editora}} de widget",
+ "grouppage-widgeteditor": "{{ns:project}}:Editores de widget",
+ "right-editwidgets": "Criar e editar [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] no espaço nominal <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/pt.json b/Widgets/i18n/pt.json
new file mode 100644
index 00000000..97facda5
--- /dev/null
+++ b/Widgets/i18n/pt.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Hamilton Abreu",
+ "SandroHc"
+ ]
+ },
+ "widgets-desc": "Permite que os administradores da wiki adicionem ''widgets free-form'' à wiki, editando páginas no espaço nominal {{ns:widget}}.\nWidgets fornecidos pela comunidade podem ser encontrados na [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Erro no [[{{ns:widget}}:$1|''widget'' $1]]",
+ "group-widgeteditor": "Editores de ''widgets''",
+ "group-widgeteditor-member": "{{GENDER:$1|editor|editora}} de ''widgets''",
+ "grouppage-widgeteditor": "{{ns:project}}:Editores de ''widgets''",
+ "right-editwidgets": "Criar e editar [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] no espaço nominal <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/qqq.json b/Widgets/i18n/qqq.json
new file mode 100644
index 00000000..913b2997
--- /dev/null
+++ b/Widgets/i18n/qqq.json
@@ -0,0 +1,21 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fryed-peach",
+ "Khaledelmansoury",
+ "Purodha",
+ "Shirayuki",
+ "Siebrand",
+ "Umherirrender",
+ "아라"
+ ]
+ },
+ "widgets-desc": "{{desc|name=Widgets|url=http://www.mediawiki.org/wiki/Extension:Widgets}}",
+ "widgets-error": "{{doc-important|Do not translate <code><nowiki>{{ns:widget}}</nowiki></code>.}}\nUsed as error message. Parameters:\n* $1 - widget name",
+ "group-widgeteditor": "{{doc-group|widgeteditor}}",
+ "group-widgeteditor-member": "{{doc-group|widgeteditor|member}}",
+ "grouppage-widgeteditor": "{{doc-group|widgeteditor|page}}",
+ "right-editwidgets": "{{doc-right|editwidgets}}",
+ "group-widgeteditor.css": "{{doc-group|widgeteditor|css}}",
+ "group-widgeteditor.js": "{{doc-group|widgeteditor|js}}"
+}
diff --git a/Widgets/i18n/ro.json b/Widgets/i18n/ro.json
new file mode 100644
index 00000000..cd29e58e
--- /dev/null
+++ b/Widgets/i18n/ro.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Minisarm",
+ "Stelistcristi"
+ ]
+ },
+ "group-widgeteditor": "Editori de widgeturi"
+}
diff --git a/Widgets/i18n/roa-tara.json b/Widgets/i18n/roa-tara.json
new file mode 100644
index 00000000..21d9b5f2
--- /dev/null
+++ b/Widgets/i18n/roa-tara.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joetaras"
+ ]
+ },
+ "widgets-desc": "Permette a le amministrature de uicchi de aggiungere 'nu module de ggegge gratis sus a uicchi pe cangià le pàggene cu 'u namespace {{ns:widget}}.\nLe ggegge fatte da 'a comunitate ponne essere acchiate sus a [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Errore jndr'à [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Cangiature d'u ggegge",
+ "group-widgeteditor-member": "{{GENDER:$1|cangiatore d'u ggegge}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Cangiature d'u ggegge",
+ "right-editwidgets": "Ccreje e cange [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets le ggegge] jndr'à 'u namespace <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/ru.json b/Widgets/i18n/ru.json
new file mode 100644
index 00000000..42b7385f
--- /dev/null
+++ b/Widgets/i18n/ru.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "G0rn",
+ "Okras",
+ "Александр Сигачёв"
+ ]
+ },
+ "widgets-desc": "Позволяет администраторам вики добавлять различные виджеты, посредством редактирования страниц пространства имён {{ns:widget}}. Поддерживаемые сообществом виджеты можно найти на [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org].",
+ "widgets-error": "Ошибка в [[{{ns:widget}}:$1|виджете $1]]",
+ "group-widgeteditor": "Редакторы виджетов",
+ "group-widgeteditor-member": "{{GENDER:$1|Редактор виджетов}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Редакторы виджетов",
+ "right-editwidgets": "создавать и редактировать [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets виджеты] страницы в пространстве имён <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/si.json b/Widgets/i18n/si.json
new file mode 100644
index 00000000..45cbea8b
--- /dev/null
+++ b/Widgets/i18n/si.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "පසිඳු කාවින්ද"
+ ]
+ },
+ "group-widgeteditor": "ගැජට්ටු සංස්කාරකවරු",
+ "group-widgeteditor-member": "{{GENDER:$1|ගැජට්ටු සංස්කාරක}}",
+ "grouppage-widgeteditor": "{{ns:project}}:ගැජට්ටු සංස්කාරකවරු"
+}
diff --git a/Widgets/i18n/sk.json b/Widgets/i18n/sk.json
new file mode 100644
index 00000000..2a77a247
--- /dev/null
+++ b/Widgets/i18n/sk.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Helix84",
+ "Teslaton"
+ ]
+ },
+ "widgets-desc": "Umožňuje správcom wiki pridávať ovládacie prvky na wiki úpravou stránky v mennom priestore {{ns:widget}}.\nPrvky vytvorené komunitou možno nájsť na [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Chyba v [[{{ns:widget}}:$1|ovládacom prvku $1]]",
+ "group-widgeteditor": "Editori ovládacích prvkov",
+ "group-widgeteditor-member": "{{GENDER:$1|Redaktor|Redaktorka}} ovládacích prvkov",
+ "grouppage-widgeteditor": "{{ns:project}}:Editori ovládacích prvkov",
+ "right-editwidgets": "Tvorba a úprava stránok [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets ovládacích prvkov] v mennom priestore <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/sr-ec.json b/Widgets/i18n/sr-ec.json
new file mode 100644
index 00000000..3203d4c6
--- /dev/null
+++ b/Widgets/i18n/sr-ec.json
@@ -0,0 +1,14 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rancher",
+ "Milicevic01"
+ ]
+ },
+ "widgets-desc": "Омогућава администраторима да додају елементе на викију уређивањем страница унутар именског простора {{ns:widget}}.\nЕлементи које је направила заједница могу се наћи на [http://www.mediawikiwidgets.org/Main_Page?setlang=sr-ec MediaWikiWidgets.org]",
+ "widgets-error": "Грешка у [[{{ns:widget}}:$1|$1 елементу]]",
+ "group-widgeteditor": "Уредници елемената",
+ "group-widgeteditor-member": "{{GENDER:$1|Уредник елемената|Уредница елемената|Уредник елемената}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Уредници елемената",
+ "right-editwidgets": "Прављење и уређивање [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets елемената] у именском простору <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/sr-el.json b/Widgets/i18n/sr-el.json
new file mode 100644
index 00000000..c161219b
--- /dev/null
+++ b/Widgets/i18n/sr-el.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": [],
+ "widgets-desc": "Omogućava administratorima da dodaju vidžete na vikiju uređivanjem stranica unutar {{ns:widget}} imenskog prostora.\nVidžeti napravljeni od strane zajednice mogu se naći na [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Greška u [[{{ns:widget}}:$1|$1 vidžetu]]",
+ "group-widgeteditor": "Urednici elemenata",
+ "group-widgeteditor-member": "{{GENDER:$1|Urednik elemenata|Urednica elemenata|Urednik elemenata}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Urednici elemenata",
+ "right-editwidgets": "pravljenje i uređivanje [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets vidžeta] u <tt>{{ns:widget}}</tt> imenskom prostoru"
+}
diff --git a/Widgets/i18n/sv.json b/Widgets/i18n/sv.json
new file mode 100644
index 00000000..6e056f8c
--- /dev/null
+++ b/Widgets/i18n/sv.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Martinwiss",
+ "Ozp",
+ "Per",
+ "WikiPhoenix"
+ ]
+ },
+ "widgets-desc": "Gör så att administratörer kan lägga till egna manicker (widgets) till wikin genom att skapa sidor i namnrymden {{ns:widget}}. Manicker som andra har skapat finn på [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org].",
+ "widgets-error": "Fel i [[{{ns:widget}}:$1|widget $1]]",
+ "group-widgeteditor": "Widget-redigerare",
+ "group-widgeteditor-member": "{{GENDER:$1|widget-redigerare}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Widget-redigerare",
+ "right-editwidgets": "Skapa och redigera [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] i namnrymden<tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/te.json b/Widgets/i18n/te.json
new file mode 100644
index 00000000..a1e2cd76
--- /dev/null
+++ b/Widgets/i18n/te.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Ravichandra"
+ ]
+ },
+ "group-widgeteditor": "విడ్జెట్ ఎడిటర్లు",
+ "group-widgeteditor-member": "విడ్జెట్ ఎడిటర్"
+}
diff --git a/Widgets/i18n/tl.json b/Widgets/i18n/tl.json
new file mode 100644
index 00000000..563e795a
--- /dev/null
+++ b/Widgets/i18n/tl.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "AnakngAraw"
+ ]
+ },
+ "widgets-desc": "Nagpapahintulot sa mga tagapangasiwa ng wiki na makapagdagdag ng may malayang anyong mga widyet sa wiki sa pamamagitan ng pagbago sa mga pahinang nasa loob ng puwang pampangalan na {{ns:widget}}.\nAng mga widyet na inambag ng pamayan ay matatagpuan sa [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Kamalian sa loob ng [[{{ns:widget}}:$1|widyet na $1]]",
+ "group-widgeteditor": "Mga patnugot ng widyet",
+ "group-widgeteditor-member": "{{GENDER:$1|patnugot ng widyet}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Mga patnugot ng widyet",
+ "right-editwidgets": "Lumikha at baguhin ang [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets mga widyet] sa loob ng puwang na pampangalan ng <tt>{{ns:widget}}</tt>",
+ "group-widgeteditor.css": "/* Ang inilagay na Mga Pilas ng Estilong Lumalagaslas (Cascading Style Sheets o CSS) dito ay makakaapekto lamang sa mga patnugot ng widyet */",
+ "group-widgeteditor.js": "/* Ang JavaScript o JS na inilagay dito ay makakaapekto lamang sa mga patnugot ng widyet */"
+}
diff --git a/Widgets/i18n/tzm.json b/Widgets/i18n/tzm.json
new file mode 100644
index 00000000..2aa6424e
--- /dev/null
+++ b/Widgets/i18n/tzm.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Tifinaghes"
+ ]
+ },
+ "right-editwidgets": "ⴰⵔⴰ ⵏⵖ ⴱⴷⴷⴻⵍ [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets widgets] ⴷⵉ <tt>{{ns:widget}}</tt> ⴰⵏⵙⴰ ⵏ ⵡⴰⵙⵙⴰⵖ"
+}
diff --git a/Widgets/i18n/uk.json b/Widgets/i18n/uk.json
new file mode 100644
index 00000000..c90fc02a
--- /dev/null
+++ b/Widgets/i18n/uk.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Base",
+ "Prima klasy4na",
+ "Тест"
+ ]
+ },
+ "widgets-desc": "Дозволяє адміністраторам вікі додавати різноманітні віджети шляхом редагування сторінок простору назв {{ns:widget}}.\nПідтримувані спільнотою віджети можна знайти на [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]",
+ "widgets-error": "Помилка [[{{ns:widget}}:$1|віджету $1]]",
+ "group-widgeteditor": "Редактори віджетів",
+ "group-widgeteditor-member": "{{GENDER:$1|Редактор віджетів|Редакторка віджетів}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Редактори віджетів",
+ "right-editwidgets": "Створювати і редагувати [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets віджети] у просторі назв <tt>{{ns:widget}}</tt>"
+}
diff --git a/Widgets/i18n/vi.json b/Widgets/i18n/vi.json
new file mode 100644
index 00000000..7cc9338b
--- /dev/null
+++ b/Widgets/i18n/vi.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Minh Nguyen"
+ ]
+ },
+ "widgets-desc": "Cho phép các bảo quản viên wiki thêm công cụ đa năng vào wiki bằng cách sửa đổi trang trong không gian tên {{ns:widget}}.\nCó thể lấy thêm công cụ đa năng do cộng đồng đóng góp tại [http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org].",
+ "widgets-error": "Lỗi trong [[{{ns:widget}}:$1|công cụ đa năng $1]]",
+ "group-widgeteditor": "Người sửa công cụ đa năng",
+ "group-widgeteditor-member": "người sửa công cụ đa năng",
+ "grouppage-widgeteditor": "{{ns:project}}:Người sửa công cụ đa năng",
+ "right-editwidgets": "Tạo và sửa [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets?uselang=vi công cụ đa năng] trong không gian tên <tt>{{ns:widget}}</tt>",
+ "group-widgeteditor.css": "/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến những người sửa công cụ đa năng */",
+ "group-widgeteditor.js": "/* Mã JS tại đây sẽ chỉ ảnh hưởng đến những người sửa công cụ đa năng */"
+}
diff --git a/Widgets/i18n/yue.json b/Widgets/i18n/yue.json
new file mode 100644
index 00000000..5f17570c
--- /dev/null
+++ b/Widgets/i18n/yue.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": [],
+ "widgets-desc": "容許wiki管理員響{{ns:widget}}空間名度加入自由形式嘅widget響個wiki度。\n原先為[http://www.ardorado.com Ardorado.com]而設計嘅",
+ "widgets-error": "響[[{{ns:widget}}:$1|widget $1]]出錯",
+ "group-widgeteditor": "Widget編輯器",
+ "group-widgeteditor-member": "Widget編輯器",
+ "grouppage-widgeteditor": "{{ns:project}}:Widget編輯器",
+ "right-editwidgets": "響\"{{ns:widget}}\"空間名度編輯頁"
+}
diff --git a/Widgets/i18n/zh-hans.json b/Widgets/i18n/zh-hans.json
new file mode 100644
index 00000000..01a6f08e
--- /dev/null
+++ b/Widgets/i18n/zh-hans.json
@@ -0,0 +1,16 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "PhiLiP",
+ "Xiaomingyan",
+ "Yfdyh000"
+ ]
+ },
+ "widgets-desc": "允许wiki的管理员编辑{{ns:widget}}名字空间页面以添加各种形式的小工具。您可以在[http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org]中找到社区贡献的小工具",
+ "widgets-error": "[[{{ns:widget}}:$1|小工具$1]]出错",
+ "group-widgeteditor": "小工具编辑者",
+ "group-widgeteditor-member": "{{GENDER:$1|小工具编辑者}}",
+ "grouppage-widgeteditor": "{{ns:project}}:小工具编辑者",
+ "right-editwidgets": "在<tt>{{ns:widget}}</tt>名字空间中创建和编辑[https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets 小工具]"
+}
diff --git a/Widgets/i18n/zh-hant.json b/Widgets/i18n/zh-hant.json
new file mode 100644
index 00000000..f97d01da
--- /dev/null
+++ b/Widgets/i18n/zh-hant.json
@@ -0,0 +1,15 @@
+{
+ "@metadata": {
+ "authors": [
+ "Anakmalaysia",
+ "Mark85296341",
+ "Yfdyh000"
+ ]
+ },
+ "widgets-desc": "容許 wiki 管理員通過編輯 {{ns:widget}} 名子空間中加入自由形式的 widget 至 wiki 中。\n[http://www.mediawikiwidgets.org/Main_Page MediaWikiWidgets.org] 提供社群貢獻的 widget",
+ "widgets-error": "在 [[{{ns:widget}}:$1|widget $1]] 發生錯誤",
+ "group-widgeteditor": "Widget 編輯者",
+ "group-widgeteditor-member": "{{GENDER:$1|Widget 編輯者}}",
+ "grouppage-widgeteditor": "{{ns:project}}:Widget 編輯者",
+ "right-editwidgets": "建立並編輯 <tt>{{ns:widget}}</tt> 名子空間中的 [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Widgets Widgets]"
+}
diff --git a/Widgets/smarty_plugins/modifier.validate.php b/Widgets/smarty_plugins/modifier.validate.php
new file mode 100644
index 00000000..5b287fbc
--- /dev/null
+++ b/Widgets/smarty_plugins/modifier.validate.php
@@ -0,0 +1,29 @@
+<?php
+/**
+ * Smarty plugin
+ * -------------------------------------------------------------
+ * File: modifier.validate.php
+ * Type: modifier
+ * Name: validate
+ * Purpose: Validates parameter format ('url' by default).
+ * Useful when you need to validate but not escape.
+ * -------------------------------------------------------------
+ */
+function smarty_modifier_validate( $string, $type='url' ) {
+ // mapping for PHP filters (http://us2.php.net/manual/en/filter.constants.php)
+ $filters = array(
+ 'url' => FILTER_VALIDATE_URL,
+ 'int' => FILTER_VALIDATE_INT,
+ 'boolean' => FILTER_VALIDATE_BOOLEAN,
+ 'float' => FILTER_VALIDATE_FLOAT,
+ 'email' => FILTER_VALIDATE_EMAIL,
+ 'ip' => FILTER_VALIDATE_IP
+ );
+
+ if ( array_key_exists($type, $filters) && filter_var($string, $filters[$type]) !== FALSE ) {
+ return $string;
+ }
+
+ // unless it matched some validation rule, it's not valid
+ return '';
+}