WikidataBuilder has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/237070

Change subject: New Wikidata Build - 2015-09-09T10:00:01+0000
......................................................................

New Wikidata Build - 2015-09-09T10:00:01+0000

Change-Id: If3d1d8ae9a67de1713f34728b804c11349a255c3
---
M composer.lock
M extensions/Constraints/specials/SpecialConstraintReport.php
M extensions/Wikibase/client/WikibaseClient.hooks.php
M extensions/Wikibase/client/i18n/ar.json
M extensions/Wikibase/client/i18n/arz.json
M extensions/Wikibase/client/includes/Hooks/SpecialWatchlistQueryHandler.php
M extensions/Wikibase/client/includes/LangLinkHandler.php
M extensions/Wikibase/client/includes/Usage/SiteLinkUsageLookup.php
M extensions/Wikibase/client/includes/recentchanges/ExternalChangeFactory.php
M extensions/Wikibase/client/includes/specials/SpecialPagesWithBadges.php
M extensions/Wikibase/client/tests/phpunit/includes/LangLinkHandlerTest.php
M extensions/Wikibase/lib/i18n/nap.json
M extensions/Wikibase/lib/i18n/sr-ec.json
M extensions/Wikibase/lib/i18n/sr-el.json
M extensions/Wikibase/lib/includes/formatters/TimeDetailsFormatter.php
M extensions/Wikibase/lib/tests/phpunit/formatters/TimeDetailsFormatterTest.php
M extensions/Wikibase/repo/i18n/arz.json
M extensions/Wikibase/repo/i18n/ast.json
M extensions/Wikibase/repo/i18n/nap.json
M extensions/Wikibase/repo/i18n/yi.json
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpValidationException.php
M extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php
M extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
M extensions/Wikibase/repo/includes/EntityIdHtmlLinkFormatterFactory.php
M extensions/Wikibase/repo/includes/EntityIdLabelFormatterFactory.php
M extensions/Wikibase/repo/includes/Localizer/MessageParameterFormatter.php
M extensions/Wikibase/repo/includes/api/ResultBuilder.php
M extensions/Wikibase/repo/includes/specials/SpecialListProperties.php
A extensions/Wikibase/repo/tests/phpunit/data/api/getentities.json
M 
extensions/Wikibase/repo/tests/phpunit/includes/EntityIdHtmlLinkFormatterFactoryTest.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/EntityIdLabelFormatterFactoryTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/api/ApiJsonFormatTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/api/ResultBuilderTest.php
M 
extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
M 
extensions/Wikibase/view/resources/jquery/wikibase/toolbar/controller/jquery.wikibase.toolbarcontroller.js
M extensions/Wikibase/view/src/EntityIdFormatterFactory.php
M extensions/Wikibase/view/src/EntityViewFactory.php
M extensions/Wikibase/view/src/EntityViewPlaceholderExpander.php
M extensions/Wikibase/view/src/TextInjector.php
M extensions/Wikibase/view/tests/phpunit/EntityViewFactoryTest.php
M vendor/composer/installed.json
42 files changed, 564 insertions(+), 210 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata 
refs/changes/70/237070/1

diff --git a/composer.lock b/composer.lock
index 5489d82..750cdcc 100644
--- a/composer.lock
+++ b/composer.lock
@@ -912,7 +912,7 @@
             "source": {
                 "type": "git",
                 "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints";,
-                "reference": "b027b159a5e16e30fdb221d31d148f83624745a7"
+                "reference": "e3d43e6b70d2c07224375ef8a0200b861330c105"
             },
             "require": {
                 "php": ">=5.3.0",
@@ -958,7 +958,7 @@
             "support": {
                 "issues": 
"https://phabricator.wikimedia.org/project/profile/1202/";
             },
-            "time": "2015-09-03 18:41:10"
+            "time": "2015-09-09 08:07:38"
         },
         {
             "name": "wikibase/data-model",
@@ -1385,12 +1385,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "3b6778162e94ce36fbb8d88ec3e663aa638fc83c"
+                "reference": "6237102013a9a5654ca18fa89b6c5913898f38a0"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/3b6778162e94ce36fbb8d88ec3e663aa638fc83c";,
-                "reference": "3b6778162e94ce36fbb8d88ec3e663aa638fc83c",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/6237102013a9a5654ca18fa89b6c5913898f38a0";,
+                "reference": "6237102013a9a5654ca18fa89b6c5913898f38a0",
                 "shasum": ""
             },
             "require": {
@@ -1459,7 +1459,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2015-09-07 20:40:44"
+            "time": "2015-09-09 09:23:29"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/Constraints/specials/SpecialConstraintReport.php 
b/extensions/Constraints/specials/SpecialConstraintReport.php
index 76a2416..5d183e1 100755
--- a/extensions/Constraints/specials/SpecialConstraintReport.php
+++ b/extensions/Constraints/specials/SpecialConstraintReport.php
@@ -142,8 +142,8 @@
                $this->dataValueFormatter = 
$valueFormatterFactory->getValueFormatter( SnakFormatter::FORMAT_HTML, 
$formatterOptions );
 
                $labelLookup = new LanguageLabelDescriptionLookup( $termLookup, 
$this->getLanguage()->getCode() );
-               $this->entityIdLabelFormatter = 
$entityIdLabelFormatterFactory->getEntityIdFormater( $labelLookup );
-               $this->entityIdLinkFormatter = 
$entityIdHtmlLinkFormatterFactory->getEntityIdFormater( $labelLookup );
+               $this->entityIdLabelFormatter = 
$entityIdLabelFormatterFactory->getEntityIdFormatter( $labelLookup );
+               $this->entityIdLinkFormatter = 
$entityIdHtmlLinkFormatterFactory->getEntityIdFormatter( $labelLookup );
 
                $this->constraintChecker = $constraintChecker;
        }
diff --git a/extensions/Wikibase/client/WikibaseClient.hooks.php 
b/extensions/Wikibase/client/WikibaseClient.hooks.php
index 0725b88..20d1195 100644
--- a/extensions/Wikibase/client/WikibaseClient.hooks.php
+++ b/extensions/Wikibase/client/WikibaseClient.hooks.php
@@ -190,8 +190,12 @@
         *
         * @return bool
         */
-       public static function onSpecialWatchlistQuery( array &$conds, array 
&$tables,
-               array &$join_conds, array &$fields, $opts
+       public static function onSpecialWatchlistQuery(
+               array &$conds,
+               array &$tables,
+               array &$join_conds,
+               array &$fields,
+               $opts = null
        ) {
                $db = wfGetDB( DB_SLAVE );
                $settings = WikibaseClient::getDefaultInstance()->getSettings();
diff --git a/extensions/Wikibase/client/i18n/ar.json 
b/extensions/Wikibase/client/i18n/ar.json
index e8268bf..7128d1a 100644
--- a/extensions/Wikibase/client/i18n/ar.json
+++ b/extensions/Wikibase/client/i18n/ar.json
@@ -10,7 +10,8 @@
                        "Peadara",
                        "Tarawneh",
                        "زكريا",
-                       "محمد أحمد عبد الفتاح"
+                       "محمد أحمد عبد الفتاح",
+                       "Hiba Alshawi"
                ]
        },
        "wikibase-client-desc": "عميل امتداد ويكيبيس",
@@ -56,6 +57,9 @@
        "wikibase-error-invalid-entity-id": "المعرِّف الذي أدخلته يجهله النظام. 
يرجى إدخال معرِّف كائن صالح.",
        "unconnectedpages": "صفحات غير متصلة بعناصر",
        "wikibase-unconnectedpages-format-row": "يوجد ({{PLURAL:$1|وصلة بين 
اللغات|وصلتان بين اللغات|$1 وصلات بين اللغات|$1 وصلة بين اللغات}} في هذه 
الصفحة)",
+       "pageswithbadges": "الصفحات التي تحوي على باجات",
+       "wikibase-pageswithbadges-legend": "قائمة الصفحات مع باج معين",
+       "wikibase-pageswithbadges-badge": "باج",
        "wikibase-pageinfo-entity-id": "معرف عنصر {{WBREPONAME}}",
        "wikibase-pageinfo-entity-id-none": "لا شيء",
        "wikibase-otherprojects": "مشاريع أخرى",
diff --git a/extensions/Wikibase/client/i18n/arz.json 
b/extensions/Wikibase/client/i18n/arz.json
index 0d4d72c..f5f6099 100644
--- a/extensions/Wikibase/client/i18n/arz.json
+++ b/extensions/Wikibase/client/i18n/arz.json
@@ -13,5 +13,6 @@
        "wikibase-rc-hide-wikidata-hide": "تخبية",
        "wikibase-rc-hide-wikidata-show": "عرض",
        "wikibase-rc-wikibase-edit-letter": "د",
-       "wikibase-rc-wikibase-edit-title": "تعديل {{WBREPONAME}}"
+       "wikibase-rc-wikibase-edit-title": "تعديل {{WBREPONAME}}",
+       "wikibase-otherprojects": "مشاريع تانيه"
 }
diff --git 
a/extensions/Wikibase/client/includes/Hooks/SpecialWatchlistQueryHandler.php 
b/extensions/Wikibase/client/includes/Hooks/SpecialWatchlistQueryHandler.php
index 9ac495e..2dd5270 100644
--- a/extensions/Wikibase/client/includes/Hooks/SpecialWatchlistQueryHandler.php
+++ b/extensions/Wikibase/client/includes/Hooks/SpecialWatchlistQueryHandler.php
@@ -53,7 +53,7 @@
         *
         * @return array
         */
-       public function addWikibaseConditions( WebRequest $request, array 
$conds, $opts ) {
+       public function addWikibaseConditions( WebRequest $request, array 
$conds, $opts = null ) {
                // do not include wikibase changes for activated enhanced 
watchlist
                // since we do not support that format yet
                if ( $this->shouldHideWikibaseChanges( $request, $opts ) ) {
@@ -71,7 +71,7 @@
         *
         * @return boolean
         */
-       private function shouldHideWikibaseChanges( WebRequest $request, $opts 
) {
+       private function shouldHideWikibaseChanges( WebRequest $request, $opts 
= null ) {
                if ( !$this->showExternalChanges || 
$this->isEnhancedChangesEnabled( $request ) === true ) {
                        return true;
                }
diff --git a/extensions/Wikibase/client/includes/LangLinkHandler.php 
b/extensions/Wikibase/client/includes/LangLinkHandler.php
index 1bebff2..ca4112d 100644
--- a/extensions/Wikibase/client/includes/LangLinkHandler.php
+++ b/extensions/Wikibase/client/includes/LangLinkHandler.php
@@ -65,7 +65,7 @@
         * @param NamespaceChecker $namespaceChecker determines which 
namespaces wikibase is enabled on
         * @param SiteLinkLookup $siteLinkLookup A site link lookup service
         * @param EntityLookup $entityLookup An entity lookup service
-        * @param SiteStore $sites
+        * @param SiteStore $siteStore
         * @param string $siteId The global site ID for the local wiki
         * @param string $siteGroup The ID of the site group to use for showing 
language links.
         */
@@ -128,7 +128,7 @@
         *
         * @return SiteLink[] The SiteLinks in $links, indexed by site ID
         */
-       private function indexLinksBySiteId( $links ) {
+       private function indexLinksBySiteId( array $links ) {
                $indexed = array();
 
                foreach ( $links as $link ) {
@@ -144,7 +144,7 @@
         *
         * @return SiteLink[] The SiteLinks in $links, indexed by interwiki 
prefix.
         */
-       private function indexLinksByInterwiki( $links ) {
+       private function indexLinksByInterwiki( array $links ) {
                $indexed = array();
 
                foreach ( $links as $link ) {
diff --git a/extensions/Wikibase/client/includes/Usage/SiteLinkUsageLookup.php 
b/extensions/Wikibase/client/includes/Usage/SiteLinkUsageLookup.php
index afe3582..0f7d012 100644
--- a/extensions/Wikibase/client/includes/Usage/SiteLinkUsageLookup.php
+++ b/extensions/Wikibase/client/includes/Usage/SiteLinkUsageLookup.php
@@ -42,7 +42,7 @@
         * @param SiteLinkLookup $siteLinkLookup
         * @param TitleFactory $titleFactory
         *
-        * @throws \InvalidArgumentException
+        * @throws InvalidArgumentException
         */
        public function __construct( $clientSiteId, SiteLinkLookup 
$siteLinkLookup, TitleFactory $titleFactory ) {
                if ( !is_string( $clientSiteId ) ) {
@@ -175,7 +175,7 @@
         *
         * @return ItemId[]
         */
-       private function makeItemIds( $numericIds ) {
+       private function makeItemIds( array $numericIds ) {
                return array_map(
                        function ( $numericId ) {
                                return ItemId::newFromNumber( $numericId );
diff --git 
a/extensions/Wikibase/client/includes/recentchanges/ExternalChangeFactory.php 
b/extensions/Wikibase/client/includes/recentchanges/ExternalChangeFactory.php
index cddd1f9..43f1d9d 100644
--- 
a/extensions/Wikibase/client/includes/recentchanges/ExternalChangeFactory.php
+++ 
b/extensions/Wikibase/client/includes/recentchanges/ExternalChangeFactory.php
@@ -87,7 +87,7 @@
        }
 
        /**
-        * @param array $changeParams
+        * @param mixed $changeParams
         *
         * @throws UnexpectedValueException
         * @return bool
@@ -198,7 +198,7 @@
         *
         * @return string
         */
-       private function extractComment( $changeParams ) {
+       private function extractComment( array $changeParams ) {
                $comment = array(
                        'key' => 'wikibase-comment-update'
                );
@@ -223,7 +223,7 @@
         *
         * @return int
         */
-       private function countCompositeComments( $comments ) {
+       private function countCompositeComments( array $comments ) {
                $compositeComments = array_filter( $comments );
 
                return count( $compositeComments );
diff --git 
a/extensions/Wikibase/client/includes/specials/SpecialPagesWithBadges.php 
b/extensions/Wikibase/client/includes/specials/SpecialPagesWithBadges.php
index 9a7d71c..e344cbc 100644
--- a/extensions/Wikibase/client/includes/specials/SpecialPagesWithBadges.php
+++ b/extensions/Wikibase/client/includes/specials/SpecialPagesWithBadges.php
@@ -3,6 +3,7 @@
 
 namespace Wikibase\Client\Specials;
 
+use HTMLForm;
 use Html;
 use InvalidArgumentException;
 use Linker;
@@ -120,50 +121,37 @@
         * @return string
         */
        public function getPageHeader() {
-               return Html::openElement(
-                       'form',
-                       array(
-                               'action' => $this->getPageTitle()->getLocalURL()
-                       )
-               ) .
-               Html::openElement( 'fieldset' ) .
-               Html::element(
-                       'legend',
-                       array(),
-                       $this->msg( 'wikibase-pageswithbadges-legend' )->text()
-               ) .
-               Html::openElement( 'p' ) .
-               Html::element(
-                       'label',
-                       array(
-                               'for' => 'wb-pageswithbadges-badge'
-                       ),
-                       $this->msg( 'wikibase-pageswithbadges-badge' )->text()
-               ) . ' ' .
-               Html::rawElement(
-                       'select',
-                       array(
+               $formDescriptor = array(
+                       'badge' => array(
                                'name' => 'badge',
+                               'type' => 'select',
                                'id' => 'wb-pageswithbadges-badge',
-                               'class' => 'wb-select'
+                               'cssclass' => 'wb-select',
+                               'label-message' => 
'wikibase-pageswithbadges-badge',
+                               'options' => $this->getOptionsArray()
                        ),
-                       $this->getOptionsHtml()
-               ) . ' ' .
-               Html::input(
-                       '',
-                       $this->msg( 'wikibase-pageswithbadges-submit' )->text(),
-                       'submit',
-                       array(
+                       'submit' => array(
+                               'name' => '',
+                               'type' => 'submit',
                                'id' => 'wikibase-pageswithbadges-submit',
-                               'class' => 'wb-input-button'
+                               'cssclass' => 'wb-input-button',
+                               'default' => $this->msg( 
'wikibase-pageswithbadges-submit' )->text()
                        )
-               ) .
-               Html::closeElement( 'p' ) .
-               Html::closeElement( 'fieldset' ) .
-        Html::closeElement( 'form' );
+               );
+
+               if ( $this->badgeId !== null ) {
+                       $formDescriptor['badge']['default'] = 
$this->badgeId->getSerialization();
+               }
+
+               return HTMLForm::factory( 'inline', $formDescriptor, 
$this->getContext() )
+                       ->setMethod( 'get' )
+                       ->setWrapperLegendMsg( 
'wikibase-pageswithbadges-legend' )
+                       ->suppressDefaultSubmit()
+                       ->prepareForm()
+                       ->getHTML( '' );
        }
 
-       private function getOptionsHtml() {
+       private function getOptionsArray() {
                /** @var ItemId[] $badgeItemIds */
                $badgeItemIds = array_map(
                        function( $badgeId ) {
@@ -177,7 +165,7 @@
                        $badgeItemIds
                );
 
-               $html = '';
+               $options = array();
 
                foreach ( $this->badgeIds as $badgeId ) {
                        $label = $labelLookup->getLabel( new ItemId( $badgeId ) 
);
@@ -185,17 +173,10 @@
                        // show plain id if no label has been found
                        $label = $label === null ? $badgeId : $label->getText();
 
-                       $html .= Html::element(
-                               'option',
-                               array(
-                                       'value' => $badgeId,
-                                       'selected' => $this->badgeId !== null 
&& $this->badgeId->getSerialization() === $badgeId
-                               ),
-                               $label
-                       );
+                       $options[$label] = $badgeId;
                }
 
-               return $html;
+               return $options;
        }
 
        /**
diff --git 
a/extensions/Wikibase/client/tests/phpunit/includes/LangLinkHandlerTest.php 
b/extensions/Wikibase/client/tests/phpunit/includes/LangLinkHandlerTest.php
index 9c9eadc..909e5ff 100644
--- a/extensions/Wikibase/client/tests/phpunit/includes/LangLinkHandlerTest.php
+++ b/extensions/Wikibase/client/tests/phpunit/includes/LangLinkHandlerTest.php
@@ -2,12 +2,10 @@
 
 namespace Wikibase\Client\Tests;
 
-use MediaWikiSite;
 use ParserOutput;
+use Site;
 use Title;
 use Wikibase\Client\Hooks\LanguageLinkBadgeDisplay;
-use Wikibase\Client\Hooks\OtherProjectsSidebarGenerator;
-use Wikibase\Client\Hooks\OtherProjectsSidebarGeneratorFactory;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\SiteLink;
@@ -70,11 +68,9 @@
        }
 
        /**
-        * @param string[] $otherProjects
-        *
         * @return LangLinkHandler
         */
-       private function getLangLinkHandler( array $otherProjects = array() ) {
+       private function getLangLinkHandler() {
                $this->mockRepo = new MockRepository();
 
                foreach ( $this->getItems() as $item ) {
@@ -92,44 +88,6 @@
                        'srwiki',
                        'wikipedia'
                );
-       }
-
-       /**
-        * @param string[] $otherProjects
-        *
-        * @return OtherProjectsSidebarGeneratorFactory
-        */
-       private function getOtherProjectsSidebarGeneratorFactory( array 
$otherProjects ) {
-               $otherProjectsSidebarGenerator = 
$this->getOtherProjectsSidebarGenerator( $otherProjects );
-
-               $otherProjectsSidebarGeneratorFactory = $this->getMockBuilder(
-                               
'Wikibase\Client\Hooks\OtherProjectsSidebarGeneratorFactory'
-                       )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-
-               $otherProjectsSidebarGeneratorFactory->expects( $this->any() )
-                       ->method( 'getOtherProjectsSidebarGenerator' )
-                       ->will( $this->returnValue( 
$otherProjectsSidebarGenerator ) );
-
-               return $otherProjectsSidebarGeneratorFactory;
-       }
-
-       /**
-        * @param string[] $otherProjects
-        *
-        * @return OtherProjectsSidebarGenerator
-        */
-       private function getOtherProjectsSidebarGenerator( array $otherProjects 
) {
-               $otherProjectsSidebarGenerator = $this->getMockBuilder( 
'Wikibase\Client\Hooks\OtherProjectsSidebarGenerator' )
-                       ->disableOriginalConstructor()
-                       ->getMock();
-
-               $otherProjectsSidebarGenerator->expects( $this->any() )
-                       ->method( 'buildProjectLinkSidebar' )
-                       ->will( $this->returnValue( $otherProjects ) );
-
-               return $otherProjectsSidebarGenerator;
        }
 
        /**
@@ -605,15 +563,15 @@
        }
 
        public function getInterwikiCodeFromSiteProvider() {
-               $enwiki = new MediaWikiSite();
+               $enwiki = new Site();
                $enwiki->setGlobalId( 'enwiki' );
                $enwiki->setLanguageCode( 'en' );
 
-               $bexold = new MediaWikiSite();
+               $bexold = new Site();
                $bexold->setGlobalId( 'be_x_oldwiki' );
                $bexold->setLanguageCode( 'be-x-old' );
 
-               $dewikivoyage = new MediaWikiSite();
+               $dewikivoyage = new Site();
                $dewikivoyage->setGlobalId( 'dewikivoyage' );
                $dewikivoyage->setLanguageCode( 'de' );
 
diff --git a/extensions/Wikibase/lib/i18n/nap.json 
b/extensions/Wikibase/lib/i18n/nap.json
index a3fb2b1..392f02a 100644
--- a/extensions/Wikibase/lib/i18n/nap.json
+++ b/extensions/Wikibase/lib/i18n/nap.json
@@ -96,7 +96,7 @@
        "wikibase-item-summary-wbeditentity-update": "Cangiato nu oggietto",
        "wikibase-item-summary-wbeditentity-override": "Sbacantato n'elemento",
        "wikibase-item-summary-wbsetreference": "Mpusta nu riferimiento",
-       "wikibase-item-summary-wbsetreference-add": "Azzeccato nu riferimento a 
na richiesta",
+       "wikibase-item-summary-wbsetreference-add": "Azzeccato nu riferimento a 
n'asserzione",
        "wikibase-item-summary-wbsetreference-set": "Cagnato nu riferimiento 'e 
n'asserzione",
        "wikibase-item-summary-wbsetlabel-add": "Azzeccata n'etichetta [$2]",
        "wikibase-item-summary-wbsetlabel-set": "Cagnata etichetta [$2]",
@@ -117,37 +117,37 @@
        "wikibase-item-summary-wbsetsitelink-remove": "Luvaje cullegamento a 
[$2]",
        "wikibase-item-summary-wblinktitles-create": "Criato st'elemento pe' 
cullegà paggene",
        "wikibase-item-summary-wblinktitles-connect": "Azzeccato nu culegamento 
lenguisteco pe' cullegà pagene",
-       "wikibase-item-summary-wbcreateclaim-value": "{{PLURAL:$1|Criaje nu 
richiamo|Criaje richame}}",
-       "wikibase-item-summary-wbcreateclaim-novalue": "{{PLURAL:$1|Criaje nu 
richiamo|Criaje richame}}",
-       "wikibase-item-summary-wbcreateclaim-somevalue": "{{PLURAL:$1|Criaje nu 
richiamo|Criaje richame}}",
-       "wikibase-item-summary-wbcreateclaim": "{{PLURAL:$1|Criaje nu 
richiamo|Criaje richame}}",
-       "wikibase-item-summary-wbsetclaimvalue": "{{PLURAL:$1|Mpusta nu 
richiamo|Mpusta richiame}}",
-       "wikibase-item-summary-wbremoveclaims": "{{PLURAL:$1|Luvato nu 
richiamo|Luvate richame}}",
+       "wikibase-item-summary-wbcreateclaim-value": "{{PLURAL:$1|Criaje 
n'asserzione|Criaje asserziune}}",
+       "wikibase-item-summary-wbcreateclaim-novalue": "{{PLURAL:$1|Criaje 
n'asserzione|Criaje asserziune}}",
+       "wikibase-item-summary-wbcreateclaim-somevalue": "{{PLURAL:$1|Criaje 
n'asserzione|Criaje asserziune}}",
+       "wikibase-item-summary-wbcreateclaim": "{{PLURAL:$1|Criaje 
n'asserzione|Criaje asserziune}}",
+       "wikibase-item-summary-wbsetclaimvalue": "{{PLURAL:$1|Mpusta 
n'asserzione|Mpusta asserziune}}",
+       "wikibase-item-summary-wbremoveclaims": "{{PLURAL:$1|Luvata 
n'asserzione|Luvate asserziune}}",
        "wikibase-item-summary-special-create-item": "Criato n'elemento [$2] cu 
{{PLURAL:$1|valore|valure}}",
        "wikibase-item-summary-wbcreateclaim-create": "Creata asserzione",
-       "wikibase-item-summary-wbremoveclaims-remove": "{{PLURAL:$1|Luvato 
richiamo|Luvate richiame}}",
-       "wikibase-item-summary-wbsetclaim-update": "{{PLURAL:$3|Cagnato 
richiamo|Cagnate richiame}}",
-       "wikibase-item-summary-wbsetclaim-create": "{{PLURAL:$3|Criaje nu 
richiamo|Criaje richame}}",
-       "wikibase-item-summary-wbsetclaim-update-qualifiers": "Cagnato 
{{PLURAL:$4|nu qualificatore|nu $4 qualificature}} 'e {{PLURAL:$3|nu 
richiamo|d' 'e richiame}}",
-       "wikibase-item-summary-wbsetclaim-update-references": "Cagnato 
{{PLURAL:$4|nu riferimento|nu $4 riferimente}} 'e {{PLURAL:$3|nu richiamo|d' 'e 
richiame}}",
-       "wikibase-item-summary-wbsetclaim-update-rank": "{{PLURAL:$3|Cagnata 
clasifeca richiamo|Cagnate classifece richiame}}",
+       "wikibase-item-summary-wbremoveclaims-remove": "{{PLURAL:$1|Luvato 
asserzione|Luvate asserziune}}",
+       "wikibase-item-summary-wbsetclaim-update": "{{PLURAL:$3|Cagnata 
asserzione|Cagnate asserziune}}",
+       "wikibase-item-summary-wbsetclaim-create": "{{PLURAL:$3|Criaje 
n'asserzione|Criaje asserziune}}",
+       "wikibase-item-summary-wbsetclaim-update-qualifiers": "Cagnato 
{{PLURAL:$4|nu qualificatore|nu $4 qualificature}} 'e 
{{PLURAL:$3|n'asserzione|ll'asserziune}}",
+       "wikibase-item-summary-wbsetclaim-update-references": "Cagnato 
{{PLURAL:$4|nu riferimento|nu $4 riferimente}} 'e 
{{PLURAL:$3|n'asserzione|ll'asserziune}}",
+       "wikibase-item-summary-wbsetclaim-update-rank": "{{PLURAL:$3|Cagnata 
clasifeca asserzione|Cagnate classifece asserziune}}",
        "wikibase-item-summary-clientsitelink-update": "Paggena spostata da 
[$3] a [$4]",
        "wikibase-item-summary-clientsitelink-remove": "Paggena su [$3] 
canciellata",
        "wikibase-item-summary-wbsetqualifier-add": "{{PLURAL:$1|Jonta 
qualificatore|Jonte qualificature}}",
        "wikibase-item-summary-wbsetqualifier-update": "{{PLURAL:$1|Cagnato 
qualificatore|Cagnate qualificature}}",
        "wikibase-item-summary-wbremovequalifiers-remove": "{{PLURAL:$1|Luvato 
qualificatore|Luvate qualificature}}",
-       "wikibase-item-summary-wbremovereferences-remove": "{{PLURAL:$3|Luvato 
riferimento|Luvate riferimente}} 'a n'asserziona richiamo",
+       "wikibase-item-summary-wbremovereferences-remove": "{{PLURAL:$3|Luvato 
riferimento|Luvate riferimente}} 'a n'asserziona",
        "wikibase-item-summary-wbmergeitems-from": "Elemento aunito 'a $3",
        "wikibase-item-summary-wbmergeitems-to": "Elemento aunito a $3",
        "wikibase-property-summary-wbcreate-new": "Criata na proprietà nuova",
        "wikibase-property-summary-wbcreateclaim-create": "Creata asserzione 
richiamo",
-       "wikibase-property-summary-wbcreateclaim": "{{PLURAL:$1|Criaje nu 
richiamo|Criaje richame}}",
-       "wikibase-property-summary-wbsetclaimvalue": "{{PLURAL:$1|Mpusta nu 
richiamo|Mpusta richiame}}",
+       "wikibase-property-summary-wbcreateclaim": "{{PLURAL:$1|Criaje 
n'asserzione|Criaje asserziune}}",
+       "wikibase-property-summary-wbsetclaimvalue": "{{PLURAL:$1|Mpusta 
n'asserzione|Mpusta asserziune}}",
        "wikibase-property-summary-wbsetreference": "Mpusta nu riferimiento",
-       "wikibase-property-summary-wbsetreference-add": "Azzeccato nu 
riferimento a na richiesta",
+       "wikibase-property-summary-wbsetreference-add": "Azzeccato nu 
riferimento a n'asserzione",
        "wikibase-property-summary-wbsetreference-set": "Cagnato nu 
riferimiento 'e n'asserzione",
-       "wikibase-property-summary-wbremoveclaims": "{{PLURAL:$1|Luvato nu 
richiamo|Luvate richame}}",
-       "wikibase-property-summary-wbremoveclaims-remove": "{{PLURAL:$1|Luvato 
richiamo|Luvate richiame}}",
+       "wikibase-property-summary-wbremoveclaims": "{{PLURAL:$1|Luvata 
n'asserzione|Luvate asserziune}}",
+       "wikibase-property-summary-wbremoveclaims-remove": "{{PLURAL:$1|Luvato 
asserzione|Luvate asserziune}}",
        "wikibase-property-summary-wbeditentity-create": "Criata na proprietà 
nuova",
        "wikibase-property-summary-wbeditentity-update": "Cagnata na proprietà",
        "wikibase-property-summary-wbeditentity-override": "Scancelata na 
proprietà",
@@ -162,14 +162,14 @@
        "wikibase-property-summary-wbsetaliases-add": "Azzeccaje [$2] 
{{PLURAL:$1|aliàs|aliasse}}",
        "wikibase-property-summary-wbsetaliases-remove": "Luvaje [$2] 
{{PLURAL:$1|aliàs|aliasse}}",
        "wikibase-property-summary-wbsetlabeldescriptionaliases": "Cagnaje 
l'etichetta [$2], 'a descriziona e l'aliasse",
-       "wikibase-property-summary-wbsetclaim-update": "{{PLURAL:$3|Cagnato 
richiamo|Cagnate richiame}}",
-       "wikibase-property-summary-wbsetclaim-create": "{{PLURAL:$3|Criaje nu 
richiamo|Criaje richame}}",
-       "wikibase-property-summary-wbsetclaim-update-qualifiers": "Cagnato 
{{PLURAL:$4|nu qualificatore|nu $4 qualificature}} 'e {{PLURAL:$3|nu 
richiamo|d' 'e richiame}}",
-       "wikibase-property-summary-wbsetclaim-update-references": "Cagnato 
{{PLURAL:$4|nu riferimento|nu $4 riferimente}} 'e {{PLURAL:$3|nu richiamo|d' 'e 
richiame}}",
-       "wikibase-property-summary-wbsetclaim-update-rank": 
"{{PLURAL:$3|Cagnata clasifeca richiamo|Cagnate classifece richiame}}",
+       "wikibase-property-summary-wbsetclaim-update": "{{PLURAL:$3|Cagnata 
asserzione|Cagnate asserziune}}",
+       "wikibase-property-summary-wbsetclaim-create": "{{PLURAL:$3|Criaje 
n'asserzione|Criaje asserziune}}",
+       "wikibase-property-summary-wbsetclaim-update-qualifiers": "Cagnato 
{{PLURAL:$4|nu qualificatore|nu $4 qualificature}} 'e 
{{PLURAL:$3|n'asserzione|ll'asserziune}}",
+       "wikibase-property-summary-wbsetclaim-update-references": "Cagnato 
{{PLURAL:$4|nu riferimento|nu $4 riferimente}} 'e 
{{PLURAL:$3|n'asserzione|ll'asserziune}}",
+       "wikibase-property-summary-wbsetclaim-update-rank": 
"{{PLURAL:$3|Cagnata clasifeca asserzione|Cagnate classifeche asserziune}}",
        "wikibase-property-summary-wbsetqualifier-add": "{{PLURAL:$1|Jonta 
qualificatore|Jonte qualificature}}",
        "wikibase-property-summary-wbsetqualifier-update": "{{PLURAL:$1|Cagnato 
qualificatore|Cagnate qualificature}}",
        "wikibase-property-summary-wbremovequalifiers-remove": 
"{{PLURAL:$1|Luvato qualificatore|Luvate qualificature}}",
-       "wikibase-property-summary-wbremovereferences-remove": 
"{{PLURAL:$3|Luvato riferimento|Luvate riferimente}} 'a n'asserziona richiamo",
+       "wikibase-property-summary-wbremovereferences-remove": 
"{{PLURAL:$3|Luvato riferimento|Luvate riferimente}} 'a n'asserziona",
        "wikibase-property-summary-special-create-property": "Criato n'elemento 
[$2] cu {{PLURAL:$1|valore|valure}}"
 }
diff --git a/extensions/Wikibase/lib/i18n/sr-ec.json 
b/extensions/Wikibase/lib/i18n/sr-ec.json
index 47462d0..fca926b 100644
--- a/extensions/Wikibase/lib/i18n/sr-ec.json
+++ b/extensions/Wikibase/lib/i18n/sr-ec.json
@@ -3,7 +3,8 @@
                "authors": [
                        "Milicevic01",
                        "TheStefan12345",
-                       "Милан Јелисавчић"
+                       "Милан Јелисавчић",
+                       "Rancher"
                ]
        },
        "wikibase-lib-desc": "Садржи заједничке функционалности за Викибазу и 
проширења за клијента Викибазе",
@@ -19,7 +20,7 @@
        "wikibase-error-autocomplete-response": "Одговор сервера: $1",
        "wikibase-error-ui-no-external-page": "Наведени чланак није пронађен на 
одговарајућем сајту.",
        "wikibase-error-ui-edit-conflict": "Дошло је до сукоба измена. Молимо 
учитајте и сачувајте поново страну.",
-       "wikibase-language-fallback-transliteration-hint": "$1 (преведено)",
+       "wikibase-language-fallback-transliteration-hint": "$1 
(транслитерација)",
        "wikibase-quantitydetails-amount": "Количина",
        "wikibase-quantitydetails-unit": "Јединица",
        "wikibase-timedetails-time": "Време",
@@ -49,5 +50,63 @@
        "datatypes-type-wikibase-property": "Својство",
        "datatypes-type-commonsMedia": "Датотека са Оставе",
        "version-wikibase": "Викибаза",
-       "wikibase-snakformatter-valuetype-mismatch": "Врста вредности „$1“ 
непоклапа се са врстом својства „$2“."
+       "wikibase-snakformatter-valuetype-mismatch": "Врста вредности „$1“ 
непоклапа се са врстом својства „$2“.",
+       "wikibase-item-summary-wbsetitem": "Направљена нова ставка",
+       "wikibase-item-summary-wbcreate-new": "Направљена нова ставка",
+       "wikibase-item-summary-wbeditentity": "Направљена нова ставка",
+       "wikibase-item-summary-wbeditentity-create": "Направљена нова ставка",
+       "wikibase-item-summary-wbeditentity-update": "Измењена ставка",
+       "wikibase-item-summary-wbeditentity-override": "Преснимљена ставка",
+       "wikibase-item-summary-wbsetreference": "Унета референца",
+       "wikibase-item-summary-wbsetreference-add": "Додата референца за 
тврдњу",
+       "wikibase-item-summary-wbsetreference-set": "Промењена референца за 
тврдњу:",
+       "wikibase-item-summary-wbsetlabel-add": "Додат [$2] назив",
+       "wikibase-item-summary-wbsetlabel-set": "Измењен [$2] назив",
+       "wikibase-item-summary-wbsetlabel-remove": "Уклоњен [$2] назив",
+       "wikibase-item-summary-wbsetdescription-add": "Додат [$2] опис",
+       "wikibase-item-summary-wbsetdescription-set": "Измењен [$2] опис",
+       "wikibase-item-summary-wbsetdescription-remove": "Уклоњен [$2] опис",
+       "wikibase-item-summary-wbsetaliases-set": "Постављено [$2] 
{{PLURAL:$1|псеудоним|псеудонима}}",
+       "wikibase-item-summary-wbsetaliases-add-remove": "Додато и уклоњено 
[$2] {{PLURAL:$1|псеудоним|псеудонима}}",
+       "wikibase-item-summary-wbsetaliases-add": "Додато [$2] 
{{PLURAL:$1|псеудоним|псеудонима}}",
+       "wikibase-item-summary-wbsetaliases-remove": "Уклоњено [$2] 
{{PLURAL:$1|псеудоним|псеудонима}}",
+       "wikibase-item-summary-wbsetsitelink-add": "Додата веза ка [$2]",
+       "wikibase-item-summary-wbsetsitelink-set": "Измењена веза ка [$2]",
+       "wikibase-item-summary-wbsetsitelink-set-both": "Промењена веза и 
значка за [$2]",
+       "wikibase-item-summary-wbsetsitelink-remove": "Уклоњена веза ка [$2]",
+       "wikibase-item-summary-wblinktitles-create": "Направљена ставка како би 
повезала странице",
+       "wikibase-item-summary-wblinktitles-connect": "Додата језичка веза за 
повезивање страница",
+       "wikibase-item-summary-wbcreateclaim-value": "{{PLURAL:$1|Направљена 
тврдња|Направљено $1 тврдњи}}",
+       "wikibase-item-summary-wbcreateclaim-novalue": "{{PLURAL:$1|Направљена 
тврдња|Направљено $1 тврдњи}}",
+       "wikibase-item-summary-wbcreateclaim-somevalue": 
"{{PLURAL:$1|Направљена тврдња|Направљено $1 тврдњи}}",
+       "wikibase-item-summary-wbcreateclaim": "{{PLURAL:$1|Направљена 
тврдња|Направљено $1 тврдњи}}",
+       "wikibase-item-summary-wbsetclaimvalue": "{{PLURAL:$1|Постављена 
тврдња|Постављено $1 тврдњи}}",
+       "wikibase-item-summary-wbremoveclaims": "{{PLURAL:$1|Уклоњена 
тврдња|Уклоњено $1 тврдњи}}",
+       "wikibase-item-summary-special-create-item": "Направљена [$2] ставка са 
{{PLURAL:$1|вредношћу|вредностима}}",
+       "wikibase-item-summary-wbcreateclaim-create": "Направљена тврдња",
+       "wikibase-item-summary-wbremoveclaims-remove": "{{PLURAL:$1|Уклоњена 
тврдња|Уклоњено $1 тврдњи}}",
+       "wikibase-item-summary-wbsetclaim-update": "{{PLURAL:$3|Измењена 
тврдња|Измењено $3 тврдњи}}",
+       "wikibase-item-summary-wbsetclaim-create": "{{PLURAL:$3|Направљена 
тврдња|Направљено $3 тврдњи}}",
+       "wikibase-item-summary-wbsetclaim-update-qualifiers": 
"{{PLURAL:$4|Измењен квалификатор|Измењено $4 квалификатора}} на 
{{PLURAL:$3|тврдњу|тврдњи}}",
+       "wikibase-item-summary-wbsetclaim-update-references": 
"{{PLURAL:$4|Измењена референца|Измењено $4 референци}} на 
{{PLURAL:$3|тврдњу|тврдњи}}",
+       "wikibase-item-summary-wbsetclaim-update-rank": "Промењен ранг 
{{PLURAL:$3|тврдњи|тврдњама}}",
+       "wikibase-item-summary-clientsitelink-update": "Страница премештена са 
[$3] на [$4]",
+       "wikibase-item-summary-clientsitelink-remove": "Страница је обрисана на 
[$3]",
+       "wikibase-item-summary-wbmergeitems-from": "Спојена ставка из $3",
+       "wikibase-item-summary-wbmergeitems-to": "Спојена ставка у $3",
+       "wikibase-property-summary-wbcreate-new": "Направљено ново својство",
+       "wikibase-property-summary-wbcreateclaim-create": "Направљена тврдња",
+       "wikibase-property-summary-wbcreateclaim": "{{PLURAL:$1|Направљена 
тврдња|Направљене тврдње}}",
+       "wikibase-property-summary-wbeditentity-create": "Направљено ново 
својство",
+       "wikibase-property-summary-wbeditentity-update": "Измењено својство",
+       "wikibase-property-summary-wbeditentity-override": "Преиначено 
својство",
+       "wikibase-property-summary-wbsetlabel-set": "Измењен [$2] назив",
+       "wikibase-property-summary-wbsetlabel-remove": "Уклоњен [$2] назив",
+       "wikibase-property-summary-wbsetdescription-set": "Измењен [$2] опис",
+       "wikibase-property-summary-wbsetdescription-remove": "Уклоњен [$2] 
опис",
+       "wikibase-property-summary-wbsetaliases-set": "Постављено [$2] 
{{PLURAL:$1|псеудоним|псеудонима}}",
+       "wikibase-property-summary-wbsetaliases-add-remove": "Додато и уклоњено 
[$2] {{PLURAL:$1|псеудоним|псеудонима}}",
+       "wikibase-property-summary-wbsetaliases-add": "Додато [$2] 
{{PLURAL:$1|псеудоним|псеудонима}}",
+       "wikibase-property-summary-wbsetaliases-remove": "Уклоњено [$2] 
{{PLURAL:$1|псеудоним|псеудонима}}",
+       "wikibase-property-summary-special-create-property": "Направљено [$2] 
својство са {{PLURAL:$1|вредношћу|вредностима}}"
 }
diff --git a/extensions/Wikibase/lib/i18n/sr-el.json 
b/extensions/Wikibase/lib/i18n/sr-el.json
index 9967bba..5ca35a4 100644
--- a/extensions/Wikibase/lib/i18n/sr-el.json
+++ b/extensions/Wikibase/lib/i18n/sr-el.json
@@ -17,6 +17,7 @@
        "wikibase-error-autocomplete-response": "Odgovor servera: $1",
        "wikibase-error-ui-no-external-page": "Navedeni članak nije pronađen na 
odgovarajućem sajtu.",
        "wikibase-error-ui-edit-conflict": "Došlo je do sukoba izmena. Molimo 
učitajte i sačuvajte ponovo stranu.",
+       "wikibase-language-fallback-transliteration-hint": "$1 
(transliteracija)",
        "wikibase-timedetails-time": "Vreme",
        "wikibase-timedetails-timezone": "Vremenska zona",
        "wikibase-timedetails-calendar": "Kalendar",
@@ -41,5 +42,61 @@
        "datatypes-type-wikibase-item": "Stavka",
        "datatypes-type-commonsMedia": "Datoteka sa Ostave",
        "version-wikibase": "Vikibaza",
-       "wikibase-snakformatter-valuetype-mismatch": "Vrsta vrednosti „$1“ 
nepoklapa se sa vrstom svojstva „$2“."
+       "wikibase-snakformatter-valuetype-mismatch": "Vrsta vrednosti „$1“ 
nepoklapa se sa vrstom svojstva „$2“.",
+       "wikibase-item-summary-wbsetitem": "Napravljena nova stavka",
+       "wikibase-item-summary-wbcreate-new": "Napravljena nova stavka",
+       "wikibase-item-summary-wbeditentity": "Napravljena nova stavka",
+       "wikibase-item-summary-wbeditentity-create": "Napravljena nova stavka",
+       "wikibase-item-summary-wbeditentity-update": "Izmenjena stavka",
+       "wikibase-item-summary-wbeditentity-override": "Presnimljena stavka",
+       "wikibase-item-summary-wbsetreference": "Uneta referenca",
+       "wikibase-item-summary-wbsetreference-add": "Dodata referenca za 
tvrdnju",
+       "wikibase-item-summary-wbsetreference-set": "Promenjena referenca za 
tvrdnju:",
+       "wikibase-item-summary-wbsetlabel-add": "Dodat [$2] naziv",
+       "wikibase-item-summary-wbsetlabel-set": "Izmenjen [$2] naziv",
+       "wikibase-item-summary-wbsetlabel-remove": "Uklonjen [$2] naziv",
+       "wikibase-item-summary-wbsetdescription-add": "Dodat [$2] opis",
+       "wikibase-item-summary-wbsetdescription-set": "Izmenjen [$2] opis",
+       "wikibase-item-summary-wbsetdescription-remove": "Uklonjen [$2] opis",
+       "wikibase-item-summary-wbsetaliases-set": "Postavljeno [$2] 
{{PLURAL:$1|pseudonim|pseudonima}}",
+       "wikibase-item-summary-wbsetaliases-add-remove": "Dodato i uklonjeno 
[$2] {{PLURAL:$1|pseudonim|pseudonima}}",
+       "wikibase-item-summary-wbsetaliases-add": "Dodato [$2] 
{{PLURAL:$1|pseudonim|pseudonima}}",
+       "wikibase-item-summary-wbsetaliases-remove": "Uklonjeno [$2] 
{{PLURAL:$1|pseudonim|pseudonima}}",
+       "wikibase-item-summary-wbsetsitelink-add": "Dodata veza ka [$2]",
+       "wikibase-item-summary-wbsetsitelink-set": "Izmenjena veza ka [$2]",
+       "wikibase-item-summary-wbsetsitelink-set-both": "Promenjena veza i 
značka za [$2]",
+       "wikibase-item-summary-wbsetsitelink-remove": "Uklonjena veza ka [$2]",
+       "wikibase-item-summary-wblinktitles-create": "Napravljena stavka kako 
bi povezala stranice",
+       "wikibase-item-summary-wblinktitles-connect": "Dodata jezička veza za 
povezivanje stranica",
+       "wikibase-item-summary-wbcreateclaim-value": "{{PLURAL:$1|Napravljena 
tvrdnja|Napravljeno $1 tvrdnji}}",
+       "wikibase-item-summary-wbcreateclaim-novalue": "{{PLURAL:$1|Napravljena 
tvrdnja|Napravljeno $1 tvrdnji}}",
+       "wikibase-item-summary-wbcreateclaim-somevalue": 
"{{PLURAL:$1|Napravljena tvrdnja|Napravljeno $1 tvrdnji}}",
+       "wikibase-item-summary-wbcreateclaim": "{{PLURAL:$1|Napravljena 
tvrdnja|Napravljeno $1 tvrdnji}}",
+       "wikibase-item-summary-wbsetclaimvalue": "{{PLURAL:$1|Postavljena 
tvrdnja|Postavljeno $1 tvrdnji}}",
+       "wikibase-item-summary-wbremoveclaims": "{{PLURAL:$1|Uklonjena 
tvrdnja|Uklonjeno $1 tvrdnji}}",
+       "wikibase-item-summary-special-create-item": "Napravljena [$2] stavka 
sa {{PLURAL:$1|vrednošću|vrednostima}}",
+       "wikibase-item-summary-wbcreateclaim-create": "Napravljena tvrdnja",
+       "wikibase-item-summary-wbremoveclaims-remove": "{{PLURAL:$1|Uklonjena 
tvrdnja|Uklonjeno $1 tvrdnji}}",
+       "wikibase-item-summary-wbsetclaim-update": "{{PLURAL:$3|Izmenjena 
tvrdnja|Izmenjeno $3 tvrdnji}}",
+       "wikibase-item-summary-wbsetclaim-create": "{{PLURAL:$3|Napravljena 
tvrdnja|Napravljeno $3 tvrdnji}}",
+       "wikibase-item-summary-wbsetclaim-update-qualifiers": 
"{{PLURAL:$4|Izmenjen kvalifikator|Izmenjeno $4 kvalifikatora}} na 
{{PLURAL:$3|tvrdnju|tvrdnji}}",
+       "wikibase-item-summary-wbsetclaim-update-references": 
"{{PLURAL:$4|Izmenjena referenca|Izmenjeno $4 referenci}} na 
{{PLURAL:$3|tvrdnju|tvrdnji}}",
+       "wikibase-item-summary-wbsetclaim-update-rank": "Promenjen rang 
{{PLURAL:$3|tvrdnji|tvrdnjama}}",
+       "wikibase-item-summary-clientsitelink-update": "Stranica premeštena sa 
[$3] na [$4]",
+       "wikibase-item-summary-wbmergeitems-from": "Spojena stavka iz $3",
+       "wikibase-item-summary-wbmergeitems-to": "Spojena stavka u $3",
+       "wikibase-property-summary-wbcreate-new": "Napravljeno novo svojstvo",
+       "wikibase-property-summary-wbeditentity-create": "Napravljeno novo 
svojstvo",
+       "wikibase-property-summary-wbeditentity-update": "Izmenjeno svojstvo",
+       "wikibase-property-summary-wbeditentity-override": "Preinačeno 
svojstvo",
+       "wikibase-property-summary-wbsetlabel-set": "Izmenjen [$2] naziv",
+       "wikibase-property-summary-wbsetlabel-remove": "Uklonjen [$2] naziv",
+       "wikibase-property-summary-wbsetdescription-add": "Dodat [$2] opis",
+       "wikibase-property-summary-wbsetdescription-set": "Izmenjen [$2] opis",
+       "wikibase-property-summary-wbsetdescription-remove": "Uklonjen [$2] 
opis",
+       "wikibase-property-summary-wbsetaliases-set": "Postavljeno [$2] 
{{PLURAL:$1|pseudonim|pseudonima}}",
+       "wikibase-property-summary-wbsetaliases-add-remove": "Dodato i 
uklonjeno [$2] {{PLURAL:$1|pseudonim|pseudonima}}",
+       "wikibase-property-summary-wbsetaliases-add": "Dodato [$2] 
{{PLURAL:$1|pseudonim|pseudonima}}",
+       "wikibase-property-summary-wbsetaliases-remove": "Uklonjeno [$2] 
{{PLURAL:$1|pseudonim|pseudonima}}",
+       "wikibase-property-summary-special-create-property": "Napravljeno [$2] 
svojstvo sa {{PLURAL:$1|vrednošću|vrednostima}}"
 }
diff --git 
a/extensions/Wikibase/lib/includes/formatters/TimeDetailsFormatter.php 
b/extensions/Wikibase/lib/includes/formatters/TimeDetailsFormatter.php
index 6aba78d..b08426c 100644
--- a/extensions/Wikibase/lib/includes/formatters/TimeDetailsFormatter.php
+++ b/extensions/Wikibase/lib/includes/formatters/TimeDetailsFormatter.php
@@ -106,17 +106,19 @@
         * @return string HTML
         */
        private function getTimestampHtml( $timestamp ) {
-               // Loose check if the ISO-like string contains at least year, 
month, day and hour.
-               if ( !preg_match( '/^([-+]?)(\d+)(-\d+-\d+T\d+(?::\d+)*)Z?$/i', 
$timestamp, $matches ) ) {
+               // Loose check if the ISO-like string contains at least year, 
month, day and the "T".
+               if ( !preg_match( '/^([-+]?)(\d+)(-\d+-\d+T.*)/', $timestamp, 
$matches ) ) {
                        return htmlspecialchars( $timestamp );
                }
 
+               list( , $sign, $year, $rest ) = $matches;
+
                // Actual MINUS SIGN (U+2212) instead of HYPHEN-MINUS (U+002D)
-               $sign = $matches[1] === '-' ? "\xE2\x88\x92" : '+';
+               $sign = $sign === '-' ? "\xE2\x88\x92" : '+';
                // Warning, never cast the year to integer to not run into 
32-bit integer overflows!
-               $year = ltrim( $matches[2], '0' );
-               // Keep the sign. Pad the year. Keep month, day, and time. Drop 
the trailing "Z".
-               return htmlspecialchars( $sign . str_pad( $year, 4, '0', 
STR_PAD_LEFT ) . $matches[3] );
+               $year = ltrim( $year, '0' );
+               // Keep the sign. Pad the year. Keep month, day, time, and 
timezone.
+               return htmlspecialchars( $sign . str_pad( $year, 4, '0', 
STR_PAD_LEFT ) . $rest );
        }
 
        /**
diff --git 
a/extensions/Wikibase/lib/tests/phpunit/formatters/TimeDetailsFormatterTest.php 
b/extensions/Wikibase/lib/tests/phpunit/formatters/TimeDetailsFormatterTest.php
index 1e8ebc2..5dc1ede 100644
--- 
a/extensions/Wikibase/lib/tests/phpunit/formatters/TimeDetailsFormatterTest.php
+++ 
b/extensions/Wikibase/lib/tests/phpunit/formatters/TimeDetailsFormatterTest.php
@@ -110,7 +110,7 @@
                                '@' . implode( '.*',
                                        array(
                                                '<h4[^<>]*><a>HTML</a></h4>',
-                                               
'<td[^<>]*>\+0*2001-01-01T00:00:00</td>',
+                                               
'<td[^<>]*>\+0*2001-01-01T00:00:00Z</td>',
                                                '<td[^<>]*>\+01:00</td>',
                                                
'<td[^<>]*>\(valueview-expert-timevalue-calendar-gregorian\)</td>',
                                                '<td[^<>]*>\(months: 1\)</td>',
@@ -121,11 +121,11 @@
                        ),
                        '3 digit year' => array(
                                new TimeValue( '+999-01-01T00:00:00Z', 0, 0, 0, 
$day, $gregorian ),
-                               
'@.*<td[^<>]*isotime">\+0999-01-01T00:00:00</td>.*@s'
+                               
'@.*<td[^<>]*isotime">\+0999-01-01T00:00:00Z</td>.*@s'
                        ),
                        'Negative, padded year' => array(
                                new TimeValue( '-099999-01-01T00:00:00Z', 0, 0, 
0, $day, $gregorian ),
-                               
'@.*<td[^<>]*isotime">\xE2\x88\x9299999-01-01T00:00:00</td>.*@s'
+                               
'@.*<td[^<>]*isotime">\xE2\x88\x9299999-01-01T00:00:00Z</td>.*@s'
                        ),
                        'Optional Z' => array(
                                $this->getTimeValue( '-099999-01-01T00:00:00' ),
@@ -133,7 +133,7 @@
                        ),
                        'Optional sign' => array(
                                $this->getTimeValue( '099999-01-01T00:00:00Z' ),
-                               
'@.*<td[^<>]*isotime">\+99999-01-01T00:00:00</td>.*@s'
+                               
'@.*<td[^<>]*isotime">\+99999-01-01T00:00:00Z</td>.*@s'
                        ),
                        'Julian' => array(
                                new TimeValue( '+2001-01-01T00:00:00Z', 0, 0, 
0, $day, $julian ),
diff --git a/extensions/Wikibase/repo/i18n/arz.json 
b/extensions/Wikibase/repo/i18n/arz.json
index 7a4e80f..416bab9 100644
--- a/extensions/Wikibase/repo/i18n/arz.json
+++ b/extensions/Wikibase/repo/i18n/arz.json
@@ -7,6 +7,7 @@
        "wikibase-edit": "تعديل",
        "wikibase-add": "ضيف",
        "wikibase-statements": "بيانات",
+       "wikibase-sitelinks-special": "مواقع تانيه",
        "wikibase-statementview-rank-normal": "ترتيب طبيعى",
        "wikibase-statementview-referencesheading-pendingcountersubject": 
"{{PLURAL:$1|مرجع واحد|مرجعين|$1 مراجع|$1 مراجع|$1 مرجع|0=مافيش مراجع}}"
 }
diff --git a/extensions/Wikibase/repo/i18n/ast.json 
b/extensions/Wikibase/repo/i18n/ast.json
index d3f0c74..8be291c 100644
--- a/extensions/Wikibase/repo/i18n/ast.json
+++ b/extensions/Wikibase/repo/i18n/ast.json
@@ -347,6 +347,24 @@
        "apihelp-wbeditentity-param-clear": "Si se indica, la entidá completa 
balérase antes de siguir. La entidá nun se guardará antes de llenase colos 
\"datos\", posiblemente con partes eliminaes.",
        "apihelp-wbeditentity-param-new": "Si se indica, crearáse una entidá 
nueva.\nConfigura esto como'l tipu d'entidá que quies crear - actualmente 
'item'|'property' (elementu|propiedá).\nNun ta permitío configurar esto cuando 
tamién ta configurao 'id'.",
        "apihelp-wbeditentity-example-1": "Crear un elementu baleru nuevu, 
devuelve la estructura d'entidá completa",
+       "apihelp-wbeditentity-example-2": "Crear un nuevu elementu y fixar les 
etiquetes pa de y en",
+       "apihelp-wbeditentity-example-3": "Crear una propiedá nueva que contien 
los datos json, devuelve la estructura completa de la entidá",
+       "apihelp-wbeditentity-example-4": "Llimpia tolos datos de la entidá col 
identificador Q42",
+       "apihelp-wbeditentity-example-5": "Llimpia tolos datos de la entidá col 
identificador Q42 y fixar la etiqueta pa en",
+       "apihelp-wbeditentity-example-6": "Configura l'enllaz del sitiu pa 
nowiki, sobreescribiéndolu si yá existe",
+       "apihelp-wbeditentity-example-7": "Configura la descripción de nb, 
sobreescribiéndola si yá existe",
+       "apihelp-wbeditentity-example-8": "Crea una declaración nueva nel 
elementu pa la propiedá P56 y un valor de \"ExampleString\" 
(\"ExempluCadenaTestu\")",
+       "apihelp-wbeditentity-example-9": "Desanicia les declaraciones del 
elementu coles GUIDs Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F y 
Q42$GH678DSA-01PQ-28XC-HJ90-DDFD9990126X",
+       "apihelp-wbeditentity-example-10": "Configura la declaración col GUID 
al valor de la declaración",
+       "apihelp-wbformatvalue-description": "Da formatu a DataValues.",
+       "apihelp-wbformatvalue-param-generate": "El formatu de salida deseáu a 
xenerar.",
+       "apihelp-wbformatvalue-param-datatype": "El tipu de datu del valor. 
Esto ye diferente del tipu del valor",
+       "apihelp-wbformatvalue-param-datavalue": "Los datos a los que dar 
formatu. Esto tien que ser la serialización JSON d'un oxetu DataValue.",
+       "apihelp-wbformatvalue-param-options": "Les opciones que tien d'usar el 
formateador. Daes como oxetu JSON.",
+       "apihelp-wbformatvalue-example-1": "Da formatu a un valor simple de 
cadena de testu.",
+       "apihelp-wbformatvalue-example-2": "Da formatu a un valor de cadena de 
testu como URL en HTML.",
+       "apihelp-wbgetclaims-description": "Recibe afirmaciones de Wikibase.",
+       "apihelp-wbgetclaims-param-entity": "ID de la entidá de la que recibir 
les afirmaciones. Riquíu mentanto nun se de un GUID d'afirmación.",
        "apihelp-wbmergeitems-description": "Fusiona múltiples elementos.",
        "apihelp-wbmergeitems-param-fromid": "ID dende la que fusionar",
        "apihelp-wbmergeitems-param-toid": "ID a la que fusionar",
diff --git a/extensions/Wikibase/repo/i18n/nap.json 
b/extensions/Wikibase/repo/i18n/nap.json
index 5b2e952..801a672 100644
--- a/extensions/Wikibase/repo/i18n/nap.json
+++ b/extensions/Wikibase/repo/i18n/nap.json
@@ -290,11 +290,98 @@
        "wikibase-listdatatypes-wikibase-property-body": "Cullega 'e proprietà 
int' 'o proggetto. Pe' tramente ca s'azzecca sarranno asciate 'e pruprietà 
currispunnente dint' 'o namespace \"Property\" d' 'o pruggetto.",
        "wikibase-listdatatypes-commonsmedia-head": "File multimediale su 
Commons",
        "wikibase-listdatatypes-commonsmedia-body": "Cullega file archiviate 
ncopp'a Wikimedia Commons. Pe' tramente ca se nzertano sarranno aciate 
l'elmente curispunente dint' 'o namespace \"File\" 'e Commons.",
+       "wikibase-listdatatypes-globe-coordinate-head": "Coordinate 
giugrafiche",
+       "wikibase-listdatatypes-globe-coordinate-body": "Camp' 'e date 
letterale pe' na posizione giugrafica scritta comme latitudine-longitudine in 
gms o grade decimale p' 'o cuorpo stellare dato. 'E valure predefinite songo 
\"Terra\" e \"WGS84\". Azzecca risoluzione e ntervallo 'errure.\n* latitudine – 
sta dint'a primma parte (float, dms, dm, dd) della coordinata, 'a direzione è 
data d' 'o segno preposto o 'e valure pusposte N/S\n* longitudine – implicito 
seconda parte (float, dms, dm, dd) d' 'a coordinata, 'a direzione è stata d' 'o 
segno preposto o 'e valure pusposte E/W\n* globbo – valore 'e date esplicito 
(?), indicato comme cuorpo stellare ch'avesse comme valore predefinito 'a Terra 
\"http://www.wikidata.org/entity/Q2\"\n* precisione - precisione nummerica 'e 
coordinate",
+       "wikibase-listdatatypes-quantity-head": "Quantità",
+       "wikibase-listdatatypes-quantity-body": "Campo 'e date letterale pe' na 
quantità relativa a n'unità definita bene. L'unità ausata è uno 'e chiste 
valure nzertàte:\n* quantità – valore implicito d' 'a stringa (mappatura 'e 
ll'unetà prefisso nun è chiara)\n* unità — valore implicito d' 'a stringa, 
predefinito a 1 (mappatura d' 'o corpo standard nun è chiara)\n* precisione 
(facoltativo) - valore esplicito, tene 'a stessa unità d' 'o valore\n* lemmeto 
superiore - valore massimo d' 'a quantità\n* lemmeto inferiore - valore minimo 
d' 'a quantità",
+       "wikibase-listdatatypes-monolingualtext-head": "Testo monolengua",
+       "wikibase-listdatatypes-monolingualtext-body": "Campo 'e date letterale 
pe' na stringa ca nun è tradotta dint'a ll'ati llengue. Stu tipo 'e stringa è 
definita na vota e riausata pe' tuttuquante 'e llengue. L'uso tipico è pe nomme 
giugrafece, scritte dint'a lengua locale, o pe' n'identificatore 'e cocche 
tipo, na formula chimica o nu nome scientifico in latino.\n* lengua - valore 
esplicito pe' puté identificà 'a lengua d' 'a parte testuale\n* valore - valore 
esplicito d' 'a stringa p' 'a lengua indicata",
+       "wikibase-listdatatypes-multilingualtext-head": "Testo multilengua",
+       "wikibase-listdatatypes-multilingualtext-body": "'O campo 'e date 
literale pe' na stringa ca s'avess'a traducere dint'a n'ati llengue.\nL'uso 
tipico è pe' nomme 'entità d'interesse globbale ca nun teneno na forma scritta 
nun localizzata. Po' essere differente fosse pe' llengua fosse pe' sistema 'e 
scrittura.\n * lengua – valore esplicito pe' puté identificà 'a lengua d' 'a 
parte testuale\n* valore – valore esplicito d' 'a stringa p' 'a lengua 
indicata",
        "wikibase-listdatatypes-string-head": "Stringa",
+       "wikibase-listdatatypes-string-body": "Campo 'e date letterale pe' na 
string a'e glife. L'uso tipico è pe' puté ffà identificature ca fossero scritte 
cu furmato ca nun dipendesse d' 'a lengua d' 'o lettore.\n* valore — valore 
esplicito p' 'a stringa 'e variante specifica d' 'a lengua",
        "wikibase-listdatatypes-time-head": "Tiempo",
+       "wikibase-listdatatypes-time-body": "Campo 'e date letterale pe' nu 
valore temporale. Fornito comm'a nu tiempo dint'a na certa precisiona 'e 
lemmete. 'O tiempo è sempre sarvato dint' 'o formato gregoriano prolettico, ma 
putess'ausà ati furmatte pe' tramente ca se facesse l'analisi e 
furmattaziona.\n* tiempo — valore esplicito pe' n'istante d' 'o tiempo, 
rappresentato comm'a nu timestamp simmele a ISO 8601, p'esempio: 
+2013-01-01T00:00:00Z.\nL'hanno ave sempe 'o segno e nfra 1 e 16 cifre.\n* fuso 
orario — valore espresso comm'a n'intero c' 'o segno. L'infurmaziune d' 'o fuso 
orario è innecata comm'a n'offset 'a ll'orario UTC scritto 'n minute.\n* primma 
— valore sano espresso pe' quante unità, aròpp' 'o tiempo specificato, putesse 
essere. L'unità è data d' 'a precisione.\n* aropp — valore sano sano espresso 
pe' quante unità, primma ca 'o tiempo specificato, putesse essere. L'unità è 
data d' 'a precisione.\n* precisione — valore espresso codificato int'a 
n'intero breve. 'E nummere hanno 'o significato ccà: 0 - meliarde d'anne, 100 
meliune d'anne, ..., 6 - millenio, 7 - siecolo, 8 - decade, 9 - anno, 10 - 
mese, 11 - juorno, 12 - ora, 13 - minuto, 14 - seconno.\n* calannario — valore 
espresso fornito comm'a n'URI. Farrà identificazione d' 'o modello 'e 
calannario ca s'avess'ausà pe' puté mmustà 'o valore d' 'o tiempo.",
        "wikibase-listdatatypes-url-head": "URL",
+       "wikibase-listdatatypes-url-body": "Date literale pe' n'URL. Ll'URL so' 
limmetate a 'e protocolle suppurtate pure pe' link esterne 'n wikitesto.",
+       "wikibase-concept-uri": "Concetto URI",
+       "wikibase-concept-uri-tooltip": "URI ca identificasse 'o concetto 
descritto 'a st'elemento",
+       "wikibase-add-badges": "Azzecca distintivo",
        "datatypes-type-url": "URL",
        "content-model-wikibase-item": "Oggietto Wikibase",
        "content-model-wikibase-property": "Proprietà Wikibase",
+       "content-model-wikibase-query": "Interrogazione Wikibase",
+       "right-item-term": "Cagna 'e termene elemente (etichette, descriziune, 
aliasse)",
+       "right-item-merge": "Aunisce elemente",
+       "right-item-redirect": "Crèa elemente redirect",
+       "right-property-term": "Cagna 'e termene 'e pruprietà (etichette, 
descriziune, aliasse)",
+       "right-property-create": "Crea pruprietà",
+       "wikibase-entity-not-viewable-title": "Nun azzeccano 'e tipe 'e 
cuntenute: Nun se pò mmustà 'o cuntenuto 'e schermo",
+       "wikibase-entity-not-viewable": "'O tipo 'e cuntenuto dato \"$1\" nun è 
n'Entità e nun se putesse mmustà 'a Wikibase.",
+       "action-item-merge": "aunisce elemente",
+       "action-property-create": "crèa pruprietà",
+       "apihelp-wbavailablebadges-description": "Addimanne ncopp'a l'elemente 
'n distizione",
+       "apihelp-wbavailablebadges-example-1": "Addimanne ncopp'a tuttuquante 
'elemente 'n distinzione",
+       "apihelp-wbcreateclaim-description": "Crèa asserziune Wikibase",
+       "apihelp-wbcreateclaim-param-entity": "ID 'e ll'entità 'a quale staje 
azzeccanno l'asserziona",
+       "apihelp-wbcreateclaim-param-property": "ID d' 'a pruprietà snaks",
+       "apihelp-wbcreateclaim-param-value": "Valore d' 'o snak quanno se crèa 
n'asserzione c' 'a snak ca tene nu valore",
+       "apihelp-wbcreateclaim-param-snaktype": "'O tipo 'e snak",
+       "apihelp-wbcreateclaim-example-1": "Crèa n'asserzione pe' ll'elemento 
Q42 'e pruprietà P9001 cu nu nunvalore snak.",
+       "apihelp-wbcreateclaim-example-2": "Crèa n'asserzione pe' ll'item Q42 
'e pruprietà P9002 ausanno valore 'e string \"itsastring\"",
+       "apihelp-wbcreateclaim-example-3": "Crèa n'asserzione pe' ll'elemento 
Q42 'e pruprietà P9003 cu nu valore 'e Q1",
+       "apihelp-wbcreateclaim-example-4": "Crèa n'asserzione pe' ll'elemento 
Q42 'e pruprietà P9004 cu nu valore 'e coordinate snak",
+       "apihelp-wbcreateredirect-description": "Crèa redirect a ll'Entità",
+       "apihelp-wbcreateredirect-param-from": "ID entità pe' puté ffà nu 
redirect",
+       "apihelp-wbcreateredirect-param-to": "ID entita addò s'avess'a spuntà 
'o redirect",
+       "apihelp-wbcreateredirect-param-bot": "Nzegna stu cagnamiento comm'a nu 
bot. Sta bannera 'URL sarrà surtanto rispettata si l'utente appartene a 'o 
gruppo \"bot\".",
+       "apihelp-wbcreateredirect-example-1": "Tuòrna Q11 comme fosse nu 
redirect 'e Q12",
+       "apihelp-wbeditentity-description": "Crè n'elemento 'e trasuta semprice 
'e Wikibase e cagna chisto c' 'a nformazione serializata.",
+       "apihelp-wbeditentity-param-id": "L'identificatore 'e n'entità, 
mettenno pure 'o prefisso.\nAusate tutte dduje 'id' o 'sito' e 'titolo' 
nzieme.",
+       "apihelp-wbeditentity-param-site": "N'identificatore p' 'o sito addò se 
mpizza 'a paggena.\nAúsa nzieme c' 'o 'titolo' pe' ffà nu sitelink sano sano.",
+       "apihelp-wbeditentity-param-title": "Titolo d' 'a paggena a ffa 
suoccio.\nAusà nzieme c' 'o 'sito' pe' ffà nu sitelink sano sano.",
+       "apihelp-wbeditentity-param-baserevid": "L'identificatore nummerico p' 
'a verziona 'e ca pigliasse 'o cagnamiento.\nChest'è ausato pe' putè scummiglià 
cunflitte pe' tramente ca se sarva.",
+       "apihelp-wbeditentity-param-summary": "Sommario pe' l'edizione.\nSarrà 
pre'appiso 'a nu cummento automatecamente criato. 'O lemmeto 'e luongo 'e 
n'autocommento nziem'a sommario fosse 260 carattere. Pe' piacere stateve 
accuorte ca tutto pe' coppa fosse nu lemmeto 'e passa e ferma.",
+       "apihelp-wbeditentity-param-bot": "Nzegna stu cagnamiento comm'a nu 
bot. Sta bannera 'URL sarrà surtanto rispettata si l'utente appartene a 'o 
gruppo \"bot\".",
+       "apihelp-wbeditentity-param-data": "L'oggetto serializzato ca s'ausasse 
comm' 'a fonte 'e date.\nN'entità criata mò mò sarrà nzegnata na 'id' dinto.",
+       "apihelp-wbeditentity-param-clear": "Si se mpustasse, l'entità sana 
sana fosse sbacantata primm' 'e prucedere.\nL'entità nun sarrà sarvata primma 
'e se ghienchere ch' 'e \"date\", può darse ca se fossero luvat'a miezo cocche 
parte.",
+       "apihelp-wbeditentity-param-new": "Se si mpustasse, n'entità nova se 
criasse.\nMpustate chesto a 'o tipo 'entità ca vulite crià - mo' mo' 
'item'|'property'.\nNun è premmesso 'e n'avé sta mpustaziona quanno l' 'id' è 
pure mpustato.",
+       "apihelp-wbeditentity-example-1": "Crèa n'element nuovo abbacante, 
tòrna 'a struttura entità sana sana",
+       "apihelp-wbeditentity-example-2": "Crè n'elemento nuovo 'e mpusta 
'etichette pe' de e en",
+       "apihelp-wbeditentity-example-3": "Crèa na pruprietà nova cuntenenno 'e 
date json, turnanno na struttura entità nova",
+       "apihelp-wbeditentity-example-4": "Sbacanta tuttuquante date 'a 
ll'entità cu ll'ID Q42",
+       "apihelp-wbeditentity-example-5": "Sbacanta tuttuquante date 'a 
ll'entità cu ll'ID Q42 e mpusta n'etichetta pe' en",
+       "apihelp-wbeditentity-example-6": "Mpusta 'o sitelink pe' nowiki, 
sovrascrivenno se esisteva già",
+       "apihelp-wbeditentity-example-7": "Mpusta descrizione pe' nb, passanno 
pe' coppa si esisteva già",
+       "apihelp-wbeditentity-example-8": "Crèa n'asserzione nova ncopp'a 
l'item p' 'a pruprietà P56 e nu valore 'e \"ExampleString\"",
+       "apihelp-wbeditentity-example-9": "Lèva 'e richiame 'a ll'elemento ch' 
'e GUIDs Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F e 
Q42$GH678DSA-01PQ-28XC-HJ90-DDFD9990126X",
+       "apihelp-wbeditentity-example-10": "Miette 'asserzione c' 'o GUID addò 
'o valore d' 'asserziona",
+       "apihelp-wbformatvalue-description": "Furmato DataValues.",
+       "apihelp-wbformatvalue-param-generate": "'O furmato asciuta a se 
generà.",
+       "apihelp-wbformatvalue-param-datatype": "'E valure 'e tipe 'e data. 
Chesto è differente d' 'o tipo 'e valore",
+       "apihelp-wbformatvalue-param-datavalue": "'E date a se fà 'o furmato. 
Chest'avess'a essere JSON serializzato pe' n'oggetto DataValue.",
+       "apihelp-wbformatvalue-param-options": "L'oziune ca 'o furmatatore 
avess'ausà. Dato comm'a n'oggetto JSON.",
+       "apihelp-wbformatvalue-example-1": "Furmata nu valore 'e stringa 
semprice.",
+       "apihelp-wbformatvalue-example-2": "Furmata nu valore 'e stringa comm'a 
na URL int'a n'HTML.",
+       "apihelp-wbgetclaims-description": "Piglia-accucchia asserziune 'e 
Wikibase.",
+       "apihelp-wbgetclaims-param-entity": "ID 'e ll'entità addò s'avessero a 
uttenè 'asserziune. Servesse si nun è ca l'asserziune GUID songo date.",
+       "apihelp-wbgetclaims-param-property": "Filtro opzionale pe' turnà 
surtanto l'asserziune cu nu snak prencepale c'avesse 'a pruprietà specificata.",
+       "apihelp-wbgetclaims-param-claim": "Na GUID facenno mmosta d' 
'asserzione. Nce vulesse si nun è ca n'entità è data. 'O  GUID è 
l'identificatore globbale unico pe' n'asserzione, e.g. 
\"q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F\".",
+       "apihelp-wbgetclaims-param-rank": "Filtro opzionale pe' turnà surtanto 
ll'asserziune c'avessero na classifeca specifica",
+       "apihelp-wbgetclaims-param-props": "Cocche parte 'e ll'asserziune songo 
turnate comm'a n'opzione. Stu parametro cuntrullasse quale parta se turnasse.",
+       "apihelp-wbgetclaims-example-1": "Piglia-accucchia asserziune pe' 
n'elemento cu l'ID Q42",
+       "apihelp-wbgetclaims-example-2": "Piglia-accucchia asserziune pe' 
n'elemento ID Q42 e na pruprietà 'ID P2",
+       "apihelp-wbgetclaims-example-3": "Piglia asserziune pe' item cu ll'ID 
Q42 ca songo classifecate comme normale",
+       "apihelp-wbgetclaims-example-4": "Piglia st'asserzione c' 'o GUID 'e 
Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F",
+       "apihelp-wbgetentities-description": "Piglia 'e date 'e ll'entità 
multiple 'e Wikibase",
+       "apihelp-wbgetentities-param-ids": "Ll'ID 'e ll'entità addò se 
pigliassero 'e date",
+       "apihelp-wbgetentities-param-sites": "Identificatore d' 'o sito addò na 
paggena ca currispunnesse fosse astipata\nAusate nzieme c' 'o 'titolo', ma date 
uno surtanto pe' tante titule o date mmece tante site pe' nu titolo solo.",
+       "apihelp-wbgetentities-param-titles": "'O titolo d' 'a paggena 
currispunnente\nAusate nzieme ch' 'e 'site', ma date surtanto nu sito pe' tante 
titule o date mmece tante site pe' nu titolo solo.",
+       "apihelp-wbgetentities-param-redirects": "Si 'e redirect 
s'avesser'arricetta.\nSi mpustat'a \"no\", 'e redirect sarranno trattate comm'a 
n'elemento scancellato.",
+       "apihelp-wbgetentities-param-props": "'E nomme 'e pruprietà a se piglià 
arreto d'ogne entità.\nSarrà filtrato p' 'e llengue date.",
+       "apihelp-wbgetentities-param-languages": "Predetefinito fossero 'e 
valure nternaziunalizzate ca fossero turnate dint'a tuttuquante llengue a 
disposizione.\nStu parametro permettesse filtrà chiste nfin'a una o cchiù 
llengue danno uno o cchiù codece 'e llengue.",
+       "apihelp-wbgetentities-param-languagefallback": "Apprecate na lengua 'e 
supponta p' 'e llengue definite dint' 'e parametre \"lengue\", c' 'o cuntesto 
'e na chiammata a ll'API.",
+       "apihelp-wbgetentities-param-normalize": "Tentate 'e normalizzà 'a 
paggena nfront' 'o sito 'e cliente.\nChesto servesse surtanto si fosse dato nu 
sito e na paggena.",
+       "apihelp-wbgetentities-param-sitefilter": "Filtra 'e sitelink int'a 
ll'entità 'e chille ca teneno siteid.",
        "apihelp-wbsearchentities-param-limit": "Nummero massimo 'e risultate"
 }
diff --git a/extensions/Wikibase/repo/i18n/yi.json 
b/extensions/Wikibase/repo/i18n/yi.json
index b360479..2c35da6 100644
--- a/extensions/Wikibase/repo/i18n/yi.json
+++ b/extensions/Wikibase/repo/i18n/yi.json
@@ -96,6 +96,7 @@
        "wikibase-copyrighttooltip-acknowledge": "איך נעם אָן די דאָזיקע תנאים 
פאַר מיינע קומעדיקע רעדאַקטירונגען. ווייז נישט מער די דאָזיקע מעלדונג.",
        "wikibase-entityselector-more": "נאך",
        "wikibase-anonymouseditwarning": "ווארענונג: איר זענט נישט אריינלאגירט. 
\nאייער IP־אדרעס וועט ווערן דאקומענטירט אין דעם רעדאקטירן היסטאריע פון דעם 
אביעקט.",
+       "wikibase-validator-sitelink-conflict": "דער לינק $1 ווערט שוין געניצט 
אין אביעקט $2. איר קענט אים אראפנעמען טאמער ער געהערט נישט דארט אדער צונויפמישן 
די אביעקטן ווען זיי באהאנדלען די זעלבן טעמע.",
        "wikibase-validator-label-conflict": "אייגנשאפט $3 האט שוין די 
באצייכענונג \"$1\" אסאציאירט מיט שפראך קאד $2.",
        "wikibase-validator-label-with-description-conflict": "דאטנאביעקט $3 
האט שויך די באצייכענונג \"$1\" אסאציאירט מיט שפראך קאד $2, וואס ניצט דעם זעלבן 
באשרײַבונג טעקסט.",
        "wikibase-wikibaserepopage-not-itemid": "\"$1\" איז נישט קיין גילטיקער 
אביעקט אידענטיפיצירער.",
@@ -108,6 +109,7 @@
        "wikibase-itembytitle-lookup-site": "וועבזײַטל:",
        "wikibase-itembytitle-lookup-page": "בלאט:",
        "wikibase-itembytitle-submit": "זוכן",
+       "wikibase-itembytitle-error-site": "ביטע ניצט אן עקזעסטירנדן 
וועבזייטל־אידענטיפיצירער, למשל \"enwiki\" פאר דער ענגליש־וויקיפעדיע.",
        "wikibase-itembytitle-create": "איר קענט אויך [$1 שאפֿן א דאטנאביעקט].",
        "wikibase-itembytitle-summary": "ודער באזונדערער בלאט 
Special:ItemByTitle ניצט מען צו טרעפן דעם פאסנדיקן אביעקט פאר אן אנגעגעבענעם 
בלאט אויף א פארבונדענעם וועבזייטל. <br /> אינעם ערשטן פעלד, \"וועבזייטל:\", 
לייגט מען דעם שפראך און וועבזייטל קאד. <br /> אינעם אנדערן פעלד , \"בלאט:\", 
דארפט איר איינגעבן דעם גענויעם טיטל פונעם בלאט אזוי ווי ער ערשיינט אויפן 
פארבונדענעם וועבזייטל.",
        "special-gotolinkedpage": "גיין צו פארלינקטן בלאט",
diff --git 
a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpValidationException.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpValidationException.php
index 17ded97..db0ad4b 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpValidationException.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpValidationException.php
@@ -48,7 +48,7 @@
         *
         * @return string
         */
-       private function composeErrorMessage( $errors ) {
+       private function composeErrorMessage( array $errors ) {
                $text = implode( '; ', array_map( function( Error $error ) {
                        return $error->getText();
                }, $errors ) );
diff --git a/extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php 
b/extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php
index a4e8017..c26529b 100644
--- a/extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php
+++ b/extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php
@@ -135,7 +135,7 @@
         *
         * @return string HTML
         */
-       private function generateValueHtml( $values ) {
+       private function generateValueHtml( array $values ) {
                $html = '';
 
                foreach ( $values as $value ) {
diff --git a/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php 
b/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
index 01651d9..6a29d96 100644
--- a/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
+++ b/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
@@ -84,7 +84,7 @@
                $labelDescriptionLookup = new LanguageLabelDescriptionLookup( 
$termLookup, $langCode );
 
                $htmlFormatterFactory = 
$wikibaseRepo->getEntityIdHtmlLinkFormatterFactory();
-               $this->propertyNameFormatter = 
$htmlFormatterFactory->getEntityIdFormater( $labelDescriptionLookup );
+               $this->propertyNameFormatter = 
$htmlFormatterFactory->getEntityIdFormatter( $labelDescriptionLookup );
 
                $formatterFactory = $wikibaseRepo->getSnakFormatterFactory();
                $this->detailedSnakFormatter = 
$formatterFactory->getSnakFormatter( SnakFormatter::FORMAT_HTML_DIFF, $options 
);
diff --git 
a/extensions/Wikibase/repo/includes/EntityIdHtmlLinkFormatterFactory.php 
b/extensions/Wikibase/repo/includes/EntityIdHtmlLinkFormatterFactory.php
index eb71ab4..a531589 100644
--- a/extensions/Wikibase/repo/includes/EntityIdHtmlLinkFormatterFactory.php
+++ b/extensions/Wikibase/repo/includes/EntityIdHtmlLinkFormatterFactory.php
@@ -49,13 +49,13 @@
        }
 
        /**
-        * @see EntityIdFormatterFactory::getEntityIdFormater
+        * @see EntityIdFormatterFactory::getEntityIdFormatter
         *
         * @param LabelDescriptionLookup $labelDescriptionLookup
         *
         * @return EntityIdHtmlLinkFormatter
         */
-       public function getEntityIdFormater( LabelDescriptionLookup 
$labelDescriptionLookup ) {
+       public function getEntityIdFormatter( LabelDescriptionLookup 
$labelDescriptionLookup ) {
                return new EntityIdHtmlLinkFormatter(
                        $labelDescriptionLookup,
                        $this->titleLookup,
diff --git 
a/extensions/Wikibase/repo/includes/EntityIdLabelFormatterFactory.php 
b/extensions/Wikibase/repo/includes/EntityIdLabelFormatterFactory.php
index 3668871..6c3bbf8 100644
--- a/extensions/Wikibase/repo/includes/EntityIdLabelFormatterFactory.php
+++ b/extensions/Wikibase/repo/includes/EntityIdLabelFormatterFactory.php
@@ -25,13 +25,13 @@
        }
 
        /**
-        * @see EntityIdFormatterFactory::getEntityIdFormater
+        * @see EntityIdFormatterFactory::getEntityIdFormatter
         *
         * @param LabelDescriptionLookup $labelDescriptionLookup
         *
         * @return EntityIdLabelFormatter
         */
-       public function getEntityIdFormater( LabelDescriptionLookup 
$labelDescriptionLookup ) {
+       public function getEntityIdFormatter( LabelDescriptionLookup 
$labelDescriptionLookup ) {
                return new EntityIdLabelFormatter( $labelDescriptionLookup );
        }
 
diff --git 
a/extensions/Wikibase/repo/includes/Localizer/MessageParameterFormatter.php 
b/extensions/Wikibase/repo/includes/Localizer/MessageParameterFormatter.php
index ee4d66d..ae38d64 100644
--- a/extensions/Wikibase/repo/includes/Localizer/MessageParameterFormatter.php
+++ b/extensions/Wikibase/repo/includes/Localizer/MessageParameterFormatter.php
@@ -96,7 +96,7 @@
         *
         * @return string[]
         */
-       private function formatValueList( $values ) {
+       private function formatValueList( array $values ) {
                $formatted = array();
 
                foreach ( $values as $key => $value ) {
diff --git a/extensions/Wikibase/repo/includes/api/ResultBuilder.php 
b/extensions/Wikibase/repo/includes/api/ResultBuilder.php
index 707aa8b..a9f6385 100644
--- a/extensions/Wikibase/repo/includes/api/ResultBuilder.php
+++ b/extensions/Wikibase/repo/includes/api/ResultBuilder.php
@@ -85,7 +85,7 @@
         * @param SerializerFactory $serializerFactory
         * @param SiteStore $siteStore
         * @param PropertyDataTypeLookup $dataTypeLookup
-        * @param bool $addMetaData when special elements such as '_element' 
are needed
+        * @param bool|null $addMetaData when special elements such as 
'_element' are needed
         */
        public function __construct(
                ApiResult $result,
@@ -101,6 +101,7 @@
                $this->siteStore = $siteStore;
                $this->dataTypeLookup = $dataTypeLookup;
                $this->addMetaData = $addMetaData;
+
                $this->modifier = new SerializationModifier();
                $this->callbackFactory = new CallbackFactory();
        }
@@ -254,7 +255,7 @@
         *     entity id before any redirects were resolved.
         * @param EntityRevision $entityRevision
         * @param string[]|string $props a list of fields to include, or "all"
-        * @param string[] $filterSiteIds A list of site IDs to filter by
+        * @param string[]|null $filterSiteIds A list of site IDs to filter by
         * @param string[] $filterLangCodes A list of language codes to filter 
by
         * @param LanguageFallbackChain[] $fallbackChains with keys of the 
origional language
         *
@@ -264,9 +265,9 @@
                $sourceEntityIdSerialization,
                EntityRevision $entityRevision,
                $props = 'all',
-               $filterSiteIds = array(),
-               $filterLangCodes = array(),
-               $fallbackChains = array()
+               array $filterSiteIds = null,
+               array $filterLangCodes = array(),
+               array $fallbackChains = array()
        ) {
                $entity = $entityRevision->getEntity();
                $entityId = $entity->getId();
@@ -310,7 +311,13 @@
 
                $this->appendValue( array( 'entities' ), 
$sourceEntityIdSerialization, $record, 'entity' );
                if ( $this->addMetaData ) {
-                       $this->result->addArrayType( array( 'entities' ), 
'array' );
+                       $this->result->addArrayType( array( 'entities' ), 
'kvp', 'id' );
+                       $this->result->addValue(
+                               array( 'entities' ),
+                               ApiResult::META_KVP_MERGE,
+                               true,
+                               ApiResult::OVERRIDE
+                       );
                }
        }
 
@@ -328,9 +335,9 @@
        private function getEntityArray(
                Entity $entity,
                $props,
-               $filterSiteIds,
-               $filterLangCodes,
-               $fallbackChains
+               array $filterSiteIds = null,
+               array $filterLangCodes,
+               array $fallbackChains
        ) {
                $entitySerializer = 
$this->serializerFactory->newEntitySerializer();
                $serialization = $entitySerializer->serialize( $entity );
@@ -416,7 +423,10 @@
                return $serialization;
        }
 
-       private function filterEntitySerializationUsingSiteIds( array 
$serialization, $siteIds ) {
+       private function filterEntitySerializationUsingSiteIds(
+               array $serialization,
+               array $siteIds = null
+       ) {
                if ( !empty( $siteIds ) && array_key_exists( 'sitelinks', 
$serialization ) ) {
                        foreach ( $serialization['sitelinks'] as $siteId => 
$siteLink ) {
                                if ( is_array( $siteLink ) && !in_array( 
$siteLink['site'], $siteIds ) ) {
@@ -483,7 +493,16 @@
                return $newSerialization;
        }
 
-       private function filterEntitySerializationUsingLangCodes( array 
$serialization, $langCodes ) {
+       /**
+        * @param array $serialization
+        * @param string[] $langCodes
+        *
+        * @return array
+        */
+       private function filterEntitySerializationUsingLangCodes(
+               array $serialization,
+               array $langCodes
+       ) {
                if ( !empty( $langCodes ) ) {
                        if ( array_key_exists( 'labels', $serialization ) ) {
                                foreach ( $serialization['labels'] as $langCode 
=> $languageArray ) {
@@ -510,7 +529,7 @@
                return $serialization;
        }
 
-       private function getEntitySerializationWithMetaData( $serialization ) {
+       private function getEntitySerializationWithMetaData( array 
$serialization ) {
                $arrayTypes = array(
                        'aliases' => 'id',
                        'claims/*/*/references/*/snaks' => 'id',
@@ -981,7 +1000,7 @@
                );
        }
 
-       private function getReferenceArrayWithMetaData( $array ) {
+       private function getReferenceArrayWithMetaData( array $array ) {
                $array = $this->modifier->modifyUsingCallback( $array, 
'snaks-order', function ( $array ) {
                        ApiResult::setIndexedTagName( $array, 'property' );
                        return $array;
@@ -1010,7 +1029,7 @@
         *
         * @since 0.5
         */
-       public function addMissingEntity( $key, $missingDetails ) {
+       public function addMissingEntity( $key, array $missingDetails ) {
                if ( $key === null && isset( $missingDetails['id'] ) ) {
                        $key = $missingDetails['id'];
                }
@@ -1028,6 +1047,13 @@
 
                if ( $this->addMetaData ) {
                        $this->result->addIndexedTagName( 'entities', 'entity' 
);
+                       $this->result->addArrayType( array( 'entities' ), 
'kvp', 'id' );
+                       $this->result->addValue(
+                               array( 'entities' ),
+                               ApiResult::META_KVP_MERGE,
+                               true,
+                               ApiResult::OVERRIDE
+                       );
                }
 
                $this->missingEntityCounter--;
diff --git 
a/extensions/Wikibase/repo/includes/specials/SpecialListProperties.php 
b/extensions/Wikibase/repo/includes/specials/SpecialListProperties.php
index 835797c..f8213f3 100644
--- a/extensions/Wikibase/repo/includes/specials/SpecialListProperties.php
+++ b/extensions/Wikibase/repo/includes/specials/SpecialListProperties.php
@@ -107,7 +107,7 @@
 
                $this->dataTypeFactory = $dataTypeFactory;
                $this->propertyInfoStore = $propertyInfoStore;
-               $this->entityIdFormatter = 
$entityIdFormatterFactory->getEntityIdFormater(
+               $this->entityIdFormatter = 
$entityIdFormatterFactory->getEntityIdFormatter(
                        $this->labelDescriptionLookup
                );
                $this->titleLookup = $titleLookup;
diff --git a/extensions/Wikibase/repo/tests/phpunit/data/api/getentities.json 
b/extensions/Wikibase/repo/tests/phpunit/data/api/getentities.json
new file mode 100644
index 0000000..d4201c3
--- /dev/null
+++ b/extensions/Wikibase/repo/tests/phpunit/data/api/getentities.json
@@ -0,0 +1,66 @@
+{
+       "entities": {
+               "$itemIdUnderTest": {
+                       "type": "item",
+                       "id": "$itemIdUnderTest",
+                       "labels": {
+                               "en": {
+                                       "language": "en",
+                                       "value": "en-label"
+                               },
+                               "de": {
+                                       "language": "de",
+                                       "value": "de-label"
+                               }
+                       },
+                       "descriptions": {
+                               "de": {
+                                       "language": "de",
+                                       "value": "de-desc"
+                               },
+                               "es": {
+                                       "language": "es",
+                                       "value": "es-desc"
+                               }
+                       },
+                       "aliases": {
+                               "pt": [
+                                       {
+                                               "language": "pt",
+                                               "value": "AA"
+                                       },
+                                       {
+                                               "language": "pt",
+                                               "value": "BB"
+                                       }
+                               ],
+                               "en": [
+                                       {
+                                               "language": "en",
+                                               "value": "AA-en"
+                                       },
+                                       {
+                                               "language": "en",
+                                               "value": "BB-en"
+                                       }
+                               ]
+                       },
+                       "claims": {
+                               "$propertyIdUnderTest": [
+                                       {
+                                               "mainsnak": {
+                                                       "snaktype": "novalue",
+                                                       "property": 
"$propertyIdUnderTest",
+                                                       "datatype": "string"
+                                               },
+                                               "type": "statement",
+                                               "id": 
"$itemIdUnderTest$1111AAAA-43cb-ed6d-3adb-760e85bd17ee",
+                                               "rank": "normal"
+                                       }
+                               ]
+                       },
+                       "sitelinks": {}
+               }
+       },
+       "success": 1
+}
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/EntityIdHtmlLinkFormatterFactoryTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/EntityIdHtmlLinkFormatterFactoryTest.php
index d65c01a..1daafb7 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/EntityIdHtmlLinkFormatterFactoryTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/EntityIdHtmlLinkFormatterFactoryTest.php
@@ -36,7 +36,7 @@
        public function testGetEntityIdFormatter() {
                $factory = $this->getFormatterFactory();
 
-               $formatter = $factory->getEntityIdFormater( $this->getMock( 
'Wikibase\DataModel\Services\Lookup\LabelDescriptionLookup' ) );
+               $formatter = $factory->getEntityIdFormatter( $this->getMock( 
'Wikibase\DataModel\Services\Lookup\LabelDescriptionLookup' ) );
                $this->assertInstanceOf( 
'Wikibase\DataModel\Services\EntityId\EntityIdFormatter', $formatter );
        }
 
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/EntityIdLabelFormatterFactoryTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/EntityIdLabelFormatterFactoryTest.php
index ad87dc8..ba5ba82 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/EntityIdLabelFormatterFactoryTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/EntityIdLabelFormatterFactoryTest.php
@@ -31,7 +31,7 @@
        public function testGetEntityIdFormatter() {
                $factory = $this->getFormatterFactory();
 
-               $formatter = $factory->getEntityIdFormater( $this->getMock( 
'Wikibase\DataModel\Services\Lookup\LabelDescriptionLookup' ) );
+               $formatter = $factory->getEntityIdFormatter( $this->getMock( 
'Wikibase\DataModel\Services\Lookup\LabelDescriptionLookup' ) );
                $this->assertInstanceOf( 
'Wikibase\DataModel\Services\EntityId\EntityIdFormatter', $formatter );
        }
 
diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
index 9e4252d..02d17df 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/RepoHooksTest.php
@@ -40,21 +40,52 @@
 
        public function revisionInfoProvider() {
                return array(
-                       'empty' => array( array() ),
-                       'wikitext' => array( array( 'model' => 
CONTENT_MODEL_WIKITEXT ) ),
-                       'item' => array( array( 'model' => 
CONTENT_MODEL_WIKIBASE_ITEM ), 'MWException' ),
+                       'empty_allowimport' => array(
+                               array(),
+                               true
+                       ),
+                       'empty_noimport' => array(
+                               array(),
+                               true
+                       ),
+                       'wikitext_allowimport' => array(
+                               array( 'model' => CONTENT_MODEL_WIKITEXT ),
+                               true
+                       ),
+                       'wikitext_noimport' => array(
+                               array( 'model' => CONTENT_MODEL_WIKITEXT ),
+                               false
+                       ),
+                       'item_allowimport' => array(
+                               array( 'model' => CONTENT_MODEL_WIKIBASE_ITEM ),
+                               false,
+                               'MWException'
+                       ),
+                       'item_noimport' => array(
+                               array( 'model' => CONTENT_MODEL_WIKIBASE_ITEM ),
+                               true
+                       )
                );
        }
 
        /**
         * @dataProvider revisionInfoProvider
         */
-       public function testOnImportHandleRevisionXMLTag( array $revisionInfo, 
$expectedException = null ) {
+       public function testOnImportHandleRevisionXMLTag(
+               array $revisionInfo,
+               $allowEntityImport,
+               $expectedException = null
+       ) {
                //NOTE: class is unclear, see Bug T66657. But we don't use that 
object anyway.
                $importer = $this->getMockBuilder( 'Import' )
                        ->disableOriginalConstructor()
                        ->getMock();
 
+               WikibaseRepo::getDefaultInstance()->getSettings()->setSetting(
+                       'allowEntityImport',
+                       $allowEntityImport
+               );
+
                if ( $expectedException !== null ) {
                        $this->setExpectedException( $expectedException );
                }
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/api/ApiJsonFormatTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/api/ApiJsonFormatTest.php
index 50651a9..32f40a1 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/api/ApiJsonFormatTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/api/ApiJsonFormatTest.php
@@ -34,10 +34,26 @@
                }
                if ( $replacements ) {
                        foreach ( $array as $key => $val ) {
-                               if ( is_string( $val ) && isset( 
$replacements[$val] ) ) {
-                                       $array[$key] = $replacements[$val];
-                               } elseif ( is_array( $val ) ) {
-                                       $array[$key] = 
$this->replaceIdsInArray( $val );
+                               $newKey = null;
+                               $newVal = null;
+                               foreach ( $replacements as $before => $after ) {
+                                       if ( is_string( $key ) && strstr( $key, 
$before ) !== false ) {
+                                               // replace keys...
+                                               $newKey = str_replace( $before, 
$after, $key );
+                                       }
+                                       if ( is_string( $val ) && strstr( $val, 
$before ) !== false ) {
+                                               // ...and values
+                                               $newVal = str_replace( $before, 
$after, $val );
+                                       } elseif ( is_array( $val ) ) {
+                                               // recursively
+                                               $newVal = 
$this->replaceIdsInArray( $val );
+                                       }
+                               }
+                               if ( $newKey !== null ) {
+                                       $array[$newKey] = $newVal === null ? 
$val : $newVal;
+                                       unset( $array[$key] );
+                               } elseif ( $newVal !== null ) {
+                                       $array[$key] = $newVal;
                                }
                        }
                }
@@ -45,10 +61,16 @@
        }
 
        private function removePageInfoAttributes( array $result, $entityId = 
null ) {
-               $attributesToRemove = array( 'lastrevid' );
+               $attributesToRemove = array( 'pageid', 'lastrevid', 'modified', 
'title', 'ns' );
 
                foreach ( $attributesToRemove as $attributeToRemove ) {
-                       unset( $result['entity'][$attributeToRemove] );
+                       if ( isset( $result['entity'] ) ) {
+                               unset( $result['entity'][$attributeToRemove] );
+                       } elseif ( isset( $result['entities'] ) ) {
+                               foreach ( $result['entities'] as $entityId => 
$serialization ) {
+                                       unset( 
$result['entities'][$entityId][$attributeToRemove] );
+                               }
+                       }
                }
 
                return $result;
@@ -72,6 +94,22 @@
                return json_decode( $printer->getBuffer(), true );
        }
 
+       public function testGetEntitiesJsonFormat() {
+               $entityRevision = $this->getNewEntityRevision( true );
+               $entityId = 
$entityRevision->getEntity()->getId()->getSerialization();
+
+               $params = array(
+                       'action' => 'wbgetentities',
+                       'ids' => $entityId
+               );
+
+               $module = $this->getApiModule( 
'\Wikibase\Repo\Api\GetEntities', 'wbgetentities', $params );
+               $result = $this->executeApiModule( $module );
+               $actual = $this->removePageInfoAttributes( $result, $entityId );
+
+               $this->assertEquals( $this->getExpectedJson( 'getentities' ), 
$actual );
+       }
+
        public function testSetLabelJsonFormat() {
                $entityRevision = $this->getNewEntityRevision();
                $entityId = 
$entityRevision->getEntity()->getId()->getSerialization();
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/api/ResultBuilderTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/api/ResultBuilderTest.php
index a69c3fa..035166a 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/api/ResultBuilderTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/api/ResultBuilderTest.php
@@ -329,7 +329,9 @@
                                        ),
                                ),
                                '_element' => 'entity',
-                               '_type' => 'array',
+                               '_type' => 'kvp',
+                               '_kvpkeyname' => 'id',
+                               '_kvpmerge' => true,
                        ),
                        '_type' => 'assoc',
                );
@@ -462,7 +464,9 @@
                                        ),
                                ),
                                '_element' => 'entity',
-                               '_type' => 'array',
+                               '_type' => 'kvp',
+                               '_kvpkeyname' => 'id',
+                               '_kvpmerge' => true,
                        ),
                        '_type' => 'assoc',
                );
@@ -645,7 +649,9 @@
                                        ),
                                ),
                                '_element' => 'entity',
-                               '_type' => 'array',
+                               '_type' => 'kvp',
+                               '_kvpkeyname' => 'id',
+                               '_kvpmerge' => true,
                        ),
                        '_type' => 'assoc',
                );
@@ -1286,6 +1292,9 @@
                                                        'missing' => '',
                                                ),
                                                '_element' => 'entity',
+                                               '_type' => 'kvp',
+                                               '_kvpkeyname' => 'id',
+                                               '_kvpmerge' => true,
                                        ),
                                        '_type' => 'assoc',
                                )
@@ -1301,6 +1310,9 @@
                                                        'missing' => '',
                                                ),
                                                '_element' => 'entity',
+                                               '_type' => 'kvp',
+                                               '_kvpkeyname' => 'id',
+                                               '_kvpmerge' => true,
                                        ),
                                        '_type' => 'assoc',
                                )
@@ -1316,6 +1328,9 @@
                                                        'missing' => '',
                                                ),
                                                '_element' => 'entity',
+                                               '_type' => 'kvp',
+                                               '_kvpkeyname' => 'id',
+                                               '_kvpmerge' => true,
                                        ),
                                        '_type' => 'assoc',
                                )
@@ -1338,6 +1353,9 @@
                                                        'missing' => '',
                                                ),
                                                '_element' => 'entity',
+                                               '_type' => 'kvp',
+                                               '_kvpkeyname' => 'id',
+                                               '_kvpmerge' => true,
                                        ),
                                        '_type' => 'assoc',
                                )
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
index 5e33cba..1ee2d0b 100644
--- 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
+++ 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
@@ -100,8 +100,8 @@
                        .prop( 'lang', this.options.value.getLanguageCode() )
                        .prop( 'dir', $.util.getDirectionality( 
this.options.value.getLanguageCode() ) );
 
-                       $.each( this.options.value.getTexts(), function() {
-                               self.$list.append( mw.wbTemplate( 
'wikibase-aliasesview-list-item', this ) );
+                       $.each( this.options.value.getTexts(), function( index, 
text ) {
+                               self.$list.append( mw.wbTemplate( 
'wikibase-aliasesview-list-item', text ) );
                        } );
                }
 
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/controller/jquery.wikibase.toolbarcontroller.js
 
b/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/controller/jquery.wikibase.toolbarcontroller.js
index 39e2b8b..097d224 100644
--- 
a/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/controller/jquery.wikibase.toolbarcontroller.js
+++ 
b/extensions/Wikibase/view/resources/jquery/wikibase/toolbar/controller/jquery.wikibase.toolbarcontroller.js
@@ -46,9 +46,8 @@
                        this.options.toolbars = this.options.toolbars || {};
 
                        $.each( this.options.toolbars, function( type, ids ) {
-                               $.each( ids, function() {
-                                       var id = this,
-                                               def = 
$.wikibase.toolbarcontroller.definition( type, id );
+                               $.each( ids, function( index, id ) {
+                                       var def = 
$.wikibase.toolbarcontroller.definition( type, id );
 
                                        if( !def ) {
                                                throw new Error( 'Missing 
toolbar controller definition for type "'
diff --git a/extensions/Wikibase/view/src/EntityIdFormatterFactory.php 
b/extensions/Wikibase/view/src/EntityIdFormatterFactory.php
index d8c0b89..43fe049 100644
--- a/extensions/Wikibase/view/src/EntityIdFormatterFactory.php
+++ b/extensions/Wikibase/view/src/EntityIdFormatterFactory.php
@@ -17,7 +17,7 @@
         * Returns the formatter's output format, as defined by the
         * SnakFormatter::FORMAT_XXX constants.
         *
-        * This allows callers to assert that the formatter returned by 
getEntityIdFormater()
+        * This allows callers to assert that the formatter returned by 
getEntityIdFormatter()
         * will generate text in the desired format, applying the appropriate 
escaping.
         *
         * @see SnakFormatter::FORMAT_WIKITEXT
@@ -32,6 +32,6 @@
         *
         * @return EntityIdFormatter
         */
-       public function getEntityIdFormater( LabelDescriptionLookup 
$labelDescriptionLookup );
+       public function getEntityIdFormatter( LabelDescriptionLookup 
$labelDescriptionLookup );
 
 }
diff --git a/extensions/Wikibase/view/src/EntityViewFactory.php 
b/extensions/Wikibase/view/src/EntityViewFactory.php
index ba3730e..cdc2ab1 100644
--- a/extensions/Wikibase/view/src/EntityViewFactory.php
+++ b/extensions/Wikibase/view/src/EntityViewFactory.php
@@ -173,7 +173,7 @@
                                        $this->templateFactory,
                                        $this->siteStore->getSites(),
                                        $editSectionGenerator,
-                                       
$this->plainTextIdFormatterFactory->getEntityIdFormater( 
$labelDescriptionLookup ),
+                                       
$this->plainTextIdFormatterFactory->getEntityIdFormatter( 
$labelDescriptionLookup ),
                                        $this->languageNameLookup,
                                        $this->badgeItems,
                                        $this->specialSiteLinkGroups
@@ -214,7 +214,7 @@
                LabelDescriptionLookup $labelDescriptionLookup,
                EditSectionGenerator $editSectionGenerator
        ) {
-               $propertyIdFormatter = 
$this->htmlIdFormatterFactory->getEntityIdFormater( $labelDescriptionLookup );
+               $propertyIdFormatter = 
$this->htmlIdFormatterFactory->getEntityIdFormatter( $labelDescriptionLookup );
 
                $snakHtmlGenerator = new SnakHtmlGenerator(
                        $this->templateFactory,
diff --git a/extensions/Wikibase/view/src/EntityViewPlaceholderExpander.php 
b/extensions/Wikibase/view/src/EntityViewPlaceholderExpander.php
index d255711..92a3f05 100644
--- a/extensions/Wikibase/view/src/EntityViewPlaceholderExpander.php
+++ b/extensions/Wikibase/view/src/EntityViewPlaceholderExpander.php
@@ -263,6 +263,8 @@
                        $this->languageNameLookup,
                        $this->uiLanguage->getCode()
                );
+
+               // FIXME: assumes all entities have a fingerprint
                $html = $entityTermsView->getEntityTermsForLanguageListView(
                        $entity->getFingerprint(),
                        $languages,
diff --git a/extensions/Wikibase/view/src/TextInjector.php 
b/extensions/Wikibase/view/src/TextInjector.php
index c2c8505..e17cd95 100644
--- a/extensions/Wikibase/view/src/TextInjector.php
+++ b/extensions/Wikibase/view/src/TextInjector.php
@@ -39,7 +39,7 @@
                $this->markers = $markers;
 
                // idea stolen from Parser class in core
-               $this->uniqPrefix = "\x7fUNIQ" . wfRandom( 16 );
+               $this->uniqPrefix = "\x7fUNIQ" . wfRandomString( 16 );
                $this->markerIndex = 0;
        }
 
diff --git a/extensions/Wikibase/view/tests/phpunit/EntityViewFactoryTest.php 
b/extensions/Wikibase/view/tests/phpunit/EntityViewFactoryTest.php
index 418a45f..b105c88 100644
--- a/extensions/Wikibase/view/tests/phpunit/EntityViewFactoryTest.php
+++ b/extensions/Wikibase/view/tests/phpunit/EntityViewFactoryTest.php
@@ -104,7 +104,7 @@
                        ->will( $this->returnValue( $format ) );
 
                $formatterFactory->expects( $this->any() )
-                       ->method( 'getEntityIdFormater' )
+                       ->method( 'getEntityIdFormatter' )
                        ->will( $this->returnValue( $entityIdFormatter ) );
 
                return $formatterFactory;
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index dcac6cb..e76eee5 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1278,12 +1278,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "3b6778162e94ce36fbb8d88ec3e663aa638fc83c"
+            "reference": "6237102013a9a5654ca18fa89b6c5913898f38a0"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/3b6778162e94ce36fbb8d88ec3e663aa638fc83c";,
-            "reference": "3b6778162e94ce36fbb8d88ec3e663aa638fc83c",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/6237102013a9a5654ca18fa89b6c5913898f38a0";,
+            "reference": "6237102013a9a5654ca18fa89b6c5913898f38a0",
             "shasum": ""
         },
         "require": {
@@ -1314,7 +1314,7 @@
         "require-dev": {
             "squizlabs/php_codesniffer": "~2.1"
         },
-        "time": "2015-09-07 20:40:44",
+        "time": "2015-09-09 09:23:29",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {
@@ -1501,7 +1501,7 @@
         "source": {
             "type": "git",
             "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints";,
-            "reference": "b027b159a5e16e30fdb221d31d148f83624745a7"
+            "reference": "e3d43e6b70d2c07224375ef8a0200b861330c105"
         },
         "require": {
             "php": ">=5.3.0",
@@ -1513,7 +1513,7 @@
             "phpunit/phpunit": "^3.7.37|~4.5",
             "satooshi/php-coveralls": "master-dev"
         },
-        "time": "2015-09-03 18:41:10",
+        "time": "2015-09-09 07:03:33",
         "type": "mediawiki-extension",
         "installation-source": "source",
         "autoload": {

-- 
To view, visit https://gerrit.wikimedia.org/r/237070
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If3d1d8ae9a67de1713f34728b804c11349a255c3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to