WikidataBuilder has uploaded a new change for review.

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

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

New Wikidata Build - 2015-04-14T10:00:01+0000

Change-Id: I0e9b3630cce37db373cb2629bb524b548534ada0
---
M Wikidata.localisation.php
M Wikidata.php
M composer.lock
M extensions/Wikibase/client/i18n/ce.json
M extensions/Wikibase/client/i18n/fo.json
M extensions/Wikibase/client/i18n/gsw.json
M extensions/Wikibase/client/i18n/hsb.json
A extensions/Wikibase/client/i18n/khw.json
M extensions/Wikibase/client/i18n/ps.json
M extensions/Wikibase/client/i18n/sa.json
M extensions/Wikibase/client/i18n/si.json
A extensions/Wikibase/lib/i18n/fo.json
M extensions/Wikibase/lib/i18n/gsw.json
M extensions/Wikibase/lib/i18n/hsb.json
A extensions/Wikibase/lib/i18n/khw.json
M extensions/Wikibase/lib/i18n/pt-br.json
M extensions/Wikibase/lib/i18n/ru.json
M extensions/Wikibase/lib/includes/StringNormalizer.php
M extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
M extensions/Wikibase/lib/tests/phpunit/store/MockTermIndex.php
M extensions/Wikibase/repo/i18n/azb.json
M extensions/Wikibase/repo/i18n/et.json
M extensions/Wikibase/repo/i18n/fa.json
M extensions/Wikibase/repo/i18n/gsw.json
M extensions/Wikibase/repo/i18n/hsb.json
M extensions/Wikibase/repo/i18n/hu.json
M extensions/Wikibase/repo/i18n/ja.json
A extensions/Wikibase/repo/i18n/khw.json
M extensions/Wikibase/repo/i18n/ko.json
M extensions/Wikibase/repo/i18n/ml.json
M extensions/Wikibase/repo/i18n/nb.json
M extensions/Wikibase/repo/i18n/oc.json
M extensions/Wikibase/repo/i18n/ps.json
M extensions/Wikibase/repo/i18n/pt-br.json
M extensions/Wikibase/repo/i18n/qqq.json
M extensions/Wikibase/repo/i18n/yi.json
M extensions/Wikibase/repo/i18n/zh-hans.json
M extensions/Wikibase/repo/includes/CopyrightMessageBuilder.php
M extensions/Wikibase/repo/includes/Hooks/OutputPageJsConfigHookHandler.php
M extensions/Wikibase/repo/includes/api/SearchEntities.php
M extensions/Wikibase/repo/includes/specials/SpecialModifyEntity.php
M extensions/Wikibase/repo/includes/specials/SpecialNewEntity.php
M extensions/Wikibase/repo/includes/specials/SpecialPageCopyrightView.php
M extensions/Wikibase/repo/includes/store/sql/EntityPerPageBuilder.php
M extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
M extensions/Wikibase/repo/includes/store/sql/PropertyInfoTableBuilder.php
M extensions/Wikibase/repo/includes/store/sql/TermSearchKeyBuilder.php
M extensions/Wikibase/repo/maintenance/dispatchChanges.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageJsConfigHookHandlerTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/api/SearchEntitiesTest.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialPageCopyrightViewTest.php
M vendor/composer/installed.json
52 files changed, 616 insertions(+), 248 deletions(-)


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

diff --git a/Wikidata.localisation.php b/Wikidata.localisation.php
index 4a402e2..22708a5 100644
--- a/Wikidata.localisation.php
+++ b/Wikidata.localisation.php
@@ -8,11 +8,18 @@
 $wgEnableWikibaseRepo = false;
 $wgEnableWikibaseClient = false;
 
-require_once __DIR__ . '/vendor/autoload.php';
-require_once __DIR__ . '/extensions/Wikibase/repo/Wikibase.php';
-require_once __DIR__ . '/extensions/Wikidata.org/WikidataOrg.php';
-require_once __DIR__ . '/extensions/PropertySuggester/PropertySuggester.php';
-require_once __DIR__ . '/extensions/Wikibase/client/WikibaseClient.php';
+$wgWikidataBaseDir = $IP;
+
+if ( file_exists(  __DIR__ . '/vendor/autoload.php' ) ) {
+       $wgWikidataBaseDir = __DIR__;
+       require_once __DIR__ . '/vendor/autoload.php';
+}
+
+require_once "$wgWikidataBaseDir/extensions/Wikibase/repo/Wikibase.php";
+require_once "$wgWikidataBaseDir/extensions/Wikidata.org/WikidataOrg.php";
+require_once 
"$wgWikidataBaseDir/extensions/WikimediaBadges/WikimediaBadges.php";
+require_once 
"$wgWikidataBaseDir/extensions/PropertySuggester/PropertySuggester.php";
+require_once 
"$wgWikidataBaseDir/extensions/Wikibase/client/WikibaseClient.php";
 
 $wgExtensionCredits['wikibase'][] = array(
        'path' => __DIR__,
diff --git a/Wikidata.php b/Wikidata.php
index 0610e8e..c662ae3 100644
--- a/Wikidata.php
+++ b/Wikidata.php
@@ -18,18 +18,38 @@
 $wgEnableWikibaseRepo = false;
 $wgEnableWikibaseClient = false;
 
-include_once __DIR__ . '/vendor/autoload.php';
+$wgWikidataBaseDir = $IP;
+
+if ( file_exists(  __DIR__ . '/vendor/autoload.php' ) ) {
+       include_once __DIR__ . '/vendor/autoload.php';
+
+       // @fixme generating these settings with composer doesn't work with
+       // the composer-merge-plugin. We would need to fix that and probably
+       // handle this somewhat differently.  For now, this way at least
+       // works with the current Wikidata build process, with composer run
+       // here and the results committed to gerrit.
+       //
+       // see T95663 for details on migrating and supporting install with
+       // composer-merge-plugin
+       if ( !empty( $wmgUseWikibaseRepo ) ) {
+               include_once __DIR__ . '/WikibaseRepo.settings.php';
+       }
+
+       if ( !empty( $wmgUseWikibaseClient ) ) {
+               include_once __DIR__ . '/WikibaseClient.settings.php';
+       }
+
+       $wgWikidataBaseDir = __DIR__;
+}
 
 if ( !empty( $wmgUseWikibaseRepo ) ) {
-       include_once __DIR__ . '/extensions/Wikibase/repo/Wikibase.php';
-       include_once __DIR__ . '/extensions/Wikidata.org/WikidataOrg.php';
-       include_once __DIR__ . 
'/extensions/PropertySuggester/PropertySuggester.php';
-       include_once __DIR__ . '/WikibaseRepo.settings.php';
+       include_once "$wgWikidataBaseDir/extensions/Wikibase/repo/Wikibase.php";
+       include_once 
"$wgWikidataBaseDir/extensions/Wikidata.org/WikidataOrg.php";
+       include_once 
"$wgWikidataBaseDir/extensions/PropertySuggester/PropertySuggester.php";
 }
 
 if ( !empty( $wmgUseWikibaseClient ) ) {
-       include_once __DIR__ . '/extensions/Wikibase/client/WikibaseClient.php';
-       include_once __DIR__ . '/WikibaseClient.settings.php';
+       include_once 
"$wgWikidataBaseDir/extensions/Wikibase/client/WikibaseClient.php";
 }
 
 $wgHooks['UnitTestsList'][] = '\Wikidata\WikidataHooks::onUnitTestsList';
diff --git a/composer.lock b/composer.lock
index ebf3b1e..83fccd2 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1209,12 +1209,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "79b17f8347fc266df8b2830daccc2115d9e060f3"
+                "reference": "dbcaabd04ce8c8706aa4ffc839e79cab297401d2"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/79b17f8347fc266df8b2830daccc2115d9e060f3";,
-                "reference": "79b17f8347fc266df8b2830daccc2115d9e060f3",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/dbcaabd04ce8c8706aa4ffc839e79cab297401d2";,
+                "reference": "dbcaabd04ce8c8706aa4ffc839e79cab297401d2",
                 "shasum": ""
             },
             "require": {
@@ -1282,7 +1282,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2015-04-10 14:27:12"
+            "time": "2015-04-13 20:37:55"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/Wikibase/client/i18n/ce.json 
b/extensions/Wikibase/client/i18n/ce.json
index 0d37b02..bb88496 100644
--- a/extensions/Wikibase/client/i18n/ce.json
+++ b/extensions/Wikibase/client/i18n/ce.json
@@ -6,6 +6,7 @@
        },
        "wikibase-client-desc": "Wikibase шорян клиент",
        "tooltip-t-wikibase": "Йихкина элементан хьажорг хаамийн репозитори",
+       "apihelp-query+pageterms-example-label-en": "Схьаэца билгалонаш а, 
синонимаш а, ингалсан «London» агӀонца йолу",
        "wikibase-after-page-move": "Викихаамашчохь [$1 карлаяккха] хьой цӀе 
хийцина агӀона хьажорг.",
        "wikibase-after-page-move-queued": "ХӀара агӀо чохь йолу [$1 
{{grammar:genitive|{{WBREPONAME}}}} чура элемент] ша карлаяьккина хила мега.",
        "wikibase-after-page-delete-queued": "ХӀокхунца йолу [$1 
{{grammar:genitive|{{WBREPONAME}}}} элемент] ша карлаяьккина хила мега.",
@@ -22,6 +23,7 @@
        "wikibase-dataitem": "{{grammar:genitive|{{WBREPONAME}}}} чура элемент",
        "wikibase-editlinks": "Хьажоргаш нисъяр",
        "wikibase-editlinkstitle": "Меттанийн юкъара хьажоргаш нисъяр",
+       "wikibase-addlinkstitle": "ТӀетоха юкъаравикийн-хьажоргаш",
        "wikibase-linkitem-addlinks": "ТӀетоха хьажоргаш",
        "wikibase-linkitem-alreadylinked": "Ахьа кхечу Википедешкара агӀонашах 
тосуш йолу агӀо [$1 кхузахь] йолуш ю, хӀокхуна $2 тӀе хьажийна. Элементан чохь 
хӀора Википеди чура ца агӀо бе хуьлийла дац. Дехар до кхин агӀо къастае кхечу 
Википедеш чура агӀонашах таса.",
        "wikibase-linkitem-close": "ДӀачӀагӀа къамел агӀо карла йоккхуш",
@@ -45,7 +47,8 @@
        "wikibase-rc-wikibase-edit-title": "Викихаамашкахь бина хийцам",
        "wikibase-replicationnote": "Дехар до, тидам бар бина хийцам гучу ца 
болуш маситта минот яла там бу массо вики-проекташкахь.",
        "wikibase-watchlist-show-changes-pref": "Викихаамаш чохь хийла хийцамаш 
гайта тергаме могӀам чохь",
-       "wikibase-error-serialize-error": "Хаамаш кхочушъ бан тар цаделира.",
+       "wikibase-error-deserialize-error": "Хаамашна десериализаци ян 
цаделира.",
+       "wikibase-error-serialize-error": "Хаамашна сериализаци ян цаделира.",
        "wikibase-error-invalid-entity-id": "Язйина идентификатор системин 
йоьвзуш яц. Лела йе хӀинца лелаш йолу черахь цхьаъ.",
        "special-unconnectedpages": "Викихаамаш чохь вовшахтесна йоцу агӀонаш",
        "wikibase-unconnectedpages-legend": "Вовшахтесна йоцу агӀонийн 
параметраш",
diff --git a/extensions/Wikibase/client/i18n/fo.json 
b/extensions/Wikibase/client/i18n/fo.json
index 3270186..88c1459 100644
--- a/extensions/Wikibase/client/i18n/fo.json
+++ b/extensions/Wikibase/client/i18n/fo.json
@@ -8,5 +8,7 @@
        "wikibase-editlinks": "Rætta leinkjur",
        "wikibase-editlinkstitle": "Rætta leinkjur til onnur mál",
        "wikibase-rc-hide-wikidata-hide": "Fjal",
-       "wikibase-rc-hide-wikidata-show": "Vís"
+       "wikibase-rc-hide-wikidata-show": "Vís",
+       "wikibase-rc-wikibase-edit-letter": "D",
+       "wikibase-rc-wikibase-edit-title": "{{WBREPONAME}} rætting"
 }
diff --git a/extensions/Wikibase/client/i18n/gsw.json 
b/extensions/Wikibase/client/i18n/gsw.json
index 8b0011d..7891cd8 100644
--- a/extensions/Wikibase/client/i18n/gsw.json
+++ b/extensions/Wikibase/client/i18n/gsw.json
@@ -5,10 +5,16 @@
                ]
        },
        "wikibase-client-desc": "Macht e Client fir d Erwyterig Wikibase megli",
+       "tooltip-t-wikibase": "Link zum verbundenen Objäkt im Daterepositorium",
        "wikibase-after-page-move": "Du chasch au s zuegordnet Wikidata-Elemänt 
[$1 aktualisiere], go Sprochlink vu verschobene Syte verwalte.",
+       "wikibase-comment-update": "S {{WBREPONAME}}-Objäkt isch gänderet wore",
+       "wikibase-dataitem": "{{WBREPONAME}}-Datenobjäkt",
        "wikibase-editlinks": "Links bearbeite",
        "wikibase-editlinkstitle": "Sprachibergryfigi Link bearbeite",
-       "wikibase-rc-hide-wikidata": "Wikidata $1",
+       "wikibase-rc-hide-wikidata": "{{WBREPONAME}} $1",
        "wikibase-rc-hide-wikidata-hide": "uusblände",
-       "wikibase-rc-hide-wikidata-show": "aazeige"
+       "wikibase-rc-hide-wikidata-show": "aazeige",
+       "wikibase-rc-wikibase-edit-letter": "D",
+       "wikibase-rc-wikibase-edit-title": "{{WBREPONAME}}-Bearbeitig",
+       "wikibase-otherprojects": "Andri Projäkt"
 }
diff --git a/extensions/Wikibase/client/i18n/hsb.json 
b/extensions/Wikibase/client/i18n/hsb.json
index 5bac0b1..627b785 100644
--- a/extensions/Wikibase/client/i18n/hsb.json
+++ b/extensions/Wikibase/client/i18n/hsb.json
@@ -5,7 +5,7 @@
                ]
        },
        "wikibase-client-desc": "Klient za rozšěrjenje Wikibase",
-       "specialpages-group-wikibaseclient": "Klient {{WBREPONAME}}",
+       "tooltip-t-wikibase": "Wotkaz k zwjazanemu objektej w datowym 
repozitoriju",
        "wikibase-after-page-move": "Móžeš tež přirjadowany element 
{{WBREPONAME}} [$1 aktualizować], zo by mjezyrěčne wotkazy na přesunjenej 
stronje zarjadował.",
        "wikibase-after-page-move-queued": "[$1 Element {{WBREPONAME}}] 
zwjazany z tutej stronu budźe so bórze awtomatisce aktualizować.",
        "wikibase-comment-add": "Zapisk {{WBREPONAME}} je so wutworił.",
@@ -18,7 +18,7 @@
        "wikibase-comment-sitelink-change": "Mjezyrěčny wotkaz změnjeny wot $1 
do $2",
        "wikibase-comment-sitelink-remove": "Mjezyrěčny wotkaz wotstronjeny: 
$1",
        "wikibase-comment-multi": "$1 {{PLURAL:$1|změna|změnje|změny|změnow}}",
-       "wikibase-dataitem": "Datowy element",
+       "wikibase-dataitem": "Datowy element {{WBREPONAME}}",
        "wikibase-editlinks": "Wotkazy wobdźěłać",
        "wikibase-editlinkstitle": "Mjezyrěčne wotkazy wobdźěłać",
        "wikibase-linkitem-addlinks": "Wotkazy přidać",
@@ -42,6 +42,7 @@
        "wikibase-rc-show-wikidata-pref": "Změny {{WBREPONAME}} w aktualnych 
změnach pokazać",
        "wikibase-rc-wikibase-edit-letter": "D",
        "wikibase-rc-wikibase-edit-title": "Změna {{WBREPONAME}}",
+       "wikibase-replicationnote": "Prošu dźiwaj na to, zo móže wjacore 
mjeńšiny trać, doniž změny na wšěch wikijach widźomne njejsu.",
        "wikibase-watchlist-show-changes-pref": "Změny {{WBREPONAME}} w twojich 
wobkedźbowankach pokazać",
        "wikibase-error-invalid-entity-id": "Zapodaty ID je systemej njeznaty. 
Prošu wužij płaćiwy entitowy ID.",
        "special-unconnectedpages": "Strony, kotrež njejsu ze zapiskami 
zwjazane",
@@ -53,5 +54,6 @@
        "wikibase-unconnectedpages-iwdata-label": "Jenož strony z mjezyrěčnymi 
wotkazami",
        "wikibase-unconnectedpages-format-row": "($1 {{PLURAL:$1|mjezyrěčny 
wotkaz|mjezyrěčnej wotkazaj|mjezyrěcne wotkazy|mjezyrěčnych wotkazow}} na 
stronje)",
        "wikibase-pageinfo-entity-id": "ID elementa {{WBREPONAME}}",
-       "wikibase-pageinfo-entity-id-none": "Žadyn"
+       "wikibase-pageinfo-entity-id-none": "Žadyn",
+       "wikibase-otherprojects": "Druhe projekty"
 }
diff --git a/extensions/Wikibase/client/i18n/khw.json 
b/extensions/Wikibase/client/i18n/khw.json
new file mode 100644
index 0000000..7c81923
--- /dev/null
+++ b/extensions/Wikibase/client/i18n/khw.json
@@ -0,0 +1,18 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Rachitrali"
+               ]
+       },
+       "tooltip-t-wikibase": "متعلقہ ڈیٹاری منسلک کورے",
+       "wikibase-comment-update": "{{WBREPONAME}} مواد تبدیل کورونو ہوئے",
+       "wikibase-dataitem": "{{WBREPONAME}} مواد",
+       "wikibase-editlinks": "روابطہ ترمیم کورے",
+       "wikibase-editlinkstitle": "بین الزبان روابطا ترمیم",
+       "wikibase-rc-hide-wikidata": "$1 {{WBREPONAME}}",
+       "wikibase-rc-hide-wikidata-hide": "کھوشتاوے",
+       "wikibase-rc-hide-wikidata-show": "پشاوے",
+       "wikibase-rc-wikibase-edit-letter": "ڈی",
+       "wikibase-rc-wikibase-edit-title": "{{WBREPONAME}} ترمیم",
+       "wikibase-otherprojects": "دیگر منصوبہ"
+}
diff --git a/extensions/Wikibase/client/i18n/ps.json 
b/extensions/Wikibase/client/i18n/ps.json
index aa3ded6..ed1ce30 100644
--- a/extensions/Wikibase/client/i18n/ps.json
+++ b/extensions/Wikibase/client/i18n/ps.json
@@ -23,5 +23,6 @@
        "wikibase-rc-wikibase-edit-letter": "اومتوک",
        "wikibase-rc-wikibase-edit-title": "{{WBREPONAME}} سمون",
        "wikibase-pageinfo-entity-id": "د {{WBREPONAME}} توکي پېژند",
-       "wikibase-otherprojects": "نورې پروژې"
+       "wikibase-otherprojects": "نورې پروژې",
+       "wikibase-otherprojects-beta-message": "د نورو پروژو څنگپټه"
 }
diff --git a/extensions/Wikibase/client/i18n/sa.json 
b/extensions/Wikibase/client/i18n/sa.json
index ef701dd..db3ce00 100644
--- a/extensions/Wikibase/client/i18n/sa.json
+++ b/extensions/Wikibase/client/i18n/sa.json
@@ -4,6 +4,9 @@
                        "NehalDaveND"
                ]
        },
+       "wikibase-editlinks": "भाषापरिसन्धिः सम्पाद्यताम्",
+       "wikibase-editlinkstitle": "भाषापरिसन्धिः सम्पाद्यताम्",
+       "wikibase-linkitem-addlinks": "भाषापरिसन्धिः योज्यताम्",
        "wikibase-rc-hide-wikidata-hide": "गोप्यताम्",
        "wikibase-rc-hide-wikidata-show": "दृश्यताम्"
 }
diff --git a/extensions/Wikibase/client/i18n/si.json 
b/extensions/Wikibase/client/i18n/si.json
index 6ddecfe..eacf282 100644
--- a/extensions/Wikibase/client/i18n/si.json
+++ b/extensions/Wikibase/client/i18n/si.json
@@ -2,11 +2,12 @@
        "@metadata": {
                "authors": [
                        "Sahan.ssw",
-                       "පසිඳු කාවින්ද"
+                       "පසිඳු කාවින්ද",
+                       "Roonyh"
                ]
        },
        "wikibase-client-desc": "විකිපාදක දිගුව සඳහා සේවාදායකයා",
-       "wikibase-comment-update": "භාෂා සබැඳි යාවත්කාලීන කරන ලදී.",
+       "wikibase-comment-update": "{{WBREPONAME}} අයිතමය වෙනස් කරන ලදී.",
        "wikibase-comment-sitelink-add": "භාෂා සබැඳිය එක් කරන ලදී: $1",
        "wikibase-comment-sitelink-change": "භාෂා සබැඳිය $1 ගෙන් $2 වෙත වෙනස් 
වෙන ලදී",
        "wikibase-comment-sitelink-remove": "භාෂා සබැඳිය ඉවත් කරන ලදී: $1",
@@ -14,5 +15,6 @@
        "wikibase-editlinkstitle": "අන්තර්භාෂාමය සබැඳි සංස්කරණය කරන්න",
        "wikibase-rc-hide-wikidata": "$1 විකිදත්ත",
        "wikibase-rc-hide-wikidata-hide": "සඟවන්න",
-       "wikibase-rc-show-wikidata-pref": "මෑත වෙනස්කම්වල විකිදත්ත සංස්කරණ 
පෙන්වන්න"
+       "wikibase-rc-show-wikidata-pref": "මෑත වෙනස්කම්වල විකිදත්ත සංස්කරණ 
පෙන්වන්න",
+       "wikibase-otherprojects": "වෙනත් ව්‍යාපෘති"
 }
diff --git a/extensions/Wikibase/lib/i18n/fo.json 
b/extensions/Wikibase/lib/i18n/fo.json
new file mode 100644
index 0000000..3510f63
--- /dev/null
+++ b/extensions/Wikibase/lib/i18n/fo.json
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "EileenSanda"
+               ]
+       },
+       "wikibase-sitelinks-wikipedia": "Wikipedia"
+}
diff --git a/extensions/Wikibase/lib/i18n/gsw.json 
b/extensions/Wikibase/lib/i18n/gsw.json
index c7bd369..99b03fc 100644
--- a/extensions/Wikibase/lib/i18n/gsw.json
+++ b/extensions/Wikibase/lib/i18n/gsw.json
@@ -5,9 +5,7 @@
                ]
        },
        "wikibase-lib-desc": "Stellt vu dr Erwyterige Wikibase un Wikibase 
Client gmeinsam gnutzti Funktione z Verfiegig",
-       "wikibase-entity-item": "Objäkt",
-       "wikibase-entity-property": "Eigeschaft",
-       "wikibase-entity-query": "Abfrog",
+       "wikibase-sitelinks-wikipedia": "Wikipedia",
        "datatypes-type-wikibase-item": "Objäkt",
        "datatypes-type-commonsMedia": "Mediedatei uf dr Commons"
 }
diff --git a/extensions/Wikibase/lib/i18n/hsb.json 
b/extensions/Wikibase/lib/i18n/hsb.json
index 752774a..baedbfb 100644
--- a/extensions/Wikibase/lib/i18n/hsb.json
+++ b/extensions/Wikibase/lib/i18n/hsb.json
@@ -5,12 +5,7 @@
                ]
        },
        "wikibase-lib-desc": "Steji powšitkownu funkcionalnosć za rozšěrjeni 
Wikibase a Wikibase Client k dispoziciji",
-       "wikibase-entity-item": "element",
-       "wikibase-entity-property": "kajkosć",
-       "wikibase-entity-query": "naprašowanje",
-       "wikibase-diffview-reference": "referenca",
-       "wikibase-diffview-rank": "rjad",
-       "wikibase-diffview-qualifier": "kwalifikator",
+       "specialpages-group-wikibase": "Repozitorij Wikibase",
        "wikibase-error-unexpected": "Njewočakowany zmylk je wustupił.",
        "wikibase-error-save-generic": "Při składowanju je zmylk wustupił, a 
tohodla njedachu so změny přewjesć.",
        "wikibase-error-remove-generic": "Při wotstronjenu je zmylk wustupił, a 
tohodla njedachu so twoje změny přewjesć.",
@@ -20,16 +15,10 @@
        "wikibase-error-remove-timeout": "Mamy techniske ćežkosće a tohodla 
njeda so ničo wotstronić.",
        "wikibase-error-autocomplete-connection": "API sydła njeda so 
naprašować. Prošu spytaj pozdźišo hišće raz.",
        "wikibase-error-autocomplete-response": "Serwer wotmołwi: $1",
-       "wikibase-error-ui-client-error": "Zwisk k eksternej webstronje je so 
njeporadźił. Prošu spytaj pozdźišo hišće raz.",
        "wikibase-error-ui-no-external-page": "Podaty nastawk njeda so na 
wotpowědowacym sydle namakać.",
-       "wikibase-error-ui-cant-edit": "Njesměš tutu akciju wuwjesć.",
-       "wikibase-error-ui-no-permissions": "Nimaš dosć prawow, zo by tutu 
akciju wuwjedł.",
-       "wikibase-error-ui-link-exists": "Njemóžeš k tutej stronje wotkazować, 
dokelž druhi element hižo k njej wotkazuje.",
-       "wikibase-error-ui-session-failure": "Twoje posedźenje je spadnyło. 
Prošu přizjew so hišće raz.",
        "wikibase-error-ui-edit-conflict": "Je wobdźěłowanski konflikt 
wustupił. Prošu začituj a składuj znowa.",
-       "wikibase-replicationnote": "Prošu dźiwaj na to, zo móže wjacore 
mjeńšiny trać, doniž změny na wšěch wikijach widźomne njejsu.",
+       "wikibase-sitelinks-wikipedia": "Wikipedija",
        "wikibase-sitelinks-sitename-columnheading": "Rěč",
-       "wikibase-sitelinks-siteid-columnheading": "Kod",
        "wikibase-sitelinks-link-columnheading": "Wotkazana strona",
        "wikibase-snakview-snaktypeselector-somevalue": "njeznata hódnota",
        "wikibase-snakview-snaktypeselector-novalue": "žana hódnota",
diff --git a/extensions/Wikibase/lib/i18n/khw.json 
b/extensions/Wikibase/lib/i18n/khw.json
new file mode 100644
index 0000000..122e020
--- /dev/null
+++ b/extensions/Wikibase/lib/i18n/khw.json
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Rachitrali"
+               ]
+       },
+       "wikibase-sitelinks-wikipedia": "ویکیپیڈیا"
+}
diff --git a/extensions/Wikibase/lib/i18n/pt-br.json 
b/extensions/Wikibase/lib/i18n/pt-br.json
index b50ec2a..d069b46 100644
--- a/extensions/Wikibase/lib/i18n/pt-br.json
+++ b/extensions/Wikibase/lib/i18n/pt-br.json
@@ -6,12 +6,13 @@
                        "Luckas",
                        "555",
                        "Macofe",
-                       "Fasouzafreitas"
+                       "Fasouzafreitas",
+                       "TheEduGobi"
                ]
        },
        "wikibase-lib-desc": "Mantém a funcionalidade comum para as extensões 
Wikibase e Wikibase Client",
        "specialpages-group-wikibase": "Wikibase",
-       "wikibase-error-unexpected": "Ocorreu um erro inesperado.",
+       "wikibase-error-unexpected": "Erro: $1.",
        "wikibase-error-save-generic": "Ocorreu um erro ao tentar salvar e, por 
isso, as alterações não puderam ser completadas.",
        "wikibase-error-remove-generic": "Ocorreu um erro ao tentar remover e, 
por isso, as alterações não puderam ser completadas.",
        "wikibase-error-save-connection": "Ocorreu um erro de conexão ao tentar 
salvar e, por isso, as alterações não puderam ser completadas. Por favor, 
verifique sua conexão com a Internet.",
diff --git a/extensions/Wikibase/lib/i18n/ru.json 
b/extensions/Wikibase/lib/i18n/ru.json
index d7000a9..a246255 100644
--- a/extensions/Wikibase/lib/i18n/ru.json
+++ b/extensions/Wikibase/lib/i18n/ru.json
@@ -75,6 +75,12 @@
        "datatypes-type-wikibase-item": "Элемент",
        "datatypes-type-commonsMedia": "Медиафайл на Викискладе",
        "version-wikibase": "Вики-база",
+       "wikibase-time-precision-Gannum": "$1 миллиард{{PLURAL:$1||ов|а}} лет",
+       "wikibase-time-precision-Mannum": "$1 миллион{{PLURAL:$1||ов|а}} лет 
н.э.",
+       "wikibase-time-precision-annum": "$1 {{PLURAL:$1|год|лет|года}} н.э.",
+       "wikibase-time-precision-millennium": "в $1 
тысячелети{{PLURAL:$1|е|й|я}}",
+       "wikibase-time-precision-century": "в $1 век{{PLURAL:$1||ов|а}}",
+       "wikibase-time-precision-10annum": "в $1 десятилети{{PLURAL:$1|е|й|я}}",
        "wikibase-snakformatter-valuetype-mismatch": "Тип значения «$1» не 
соответствует типу свойства «$2».",
        "wikibase-snakformatter-property-not-found": "Свойство $1 не найдено, 
невозможно определить тип данных для использования."
 }
diff --git a/extensions/Wikibase/lib/includes/StringNormalizer.php 
b/extensions/Wikibase/lib/includes/StringNormalizer.php
index 5bead8c..3439506 100644
--- a/extensions/Wikibase/lib/includes/StringNormalizer.php
+++ b/extensions/Wikibase/lib/includes/StringNormalizer.php
@@ -87,11 +87,11 @@
        public function trimWhitespace( $inputString ) {
                $inputString = $this->trimBadChars( $inputString );
 
-               // \p{Z} - whitespace
-               // \p{Cc} - control chars
                // WARNING: *any* invalid UTF8 sequence causes preg_replace to 
return an empty string.
-               $trimmed = preg_replace( 
'/^(\p{Z}|\p{Cc})+|(\p{Z}|\p{Cc})+$/u', '', $inputString );
-               $trimmed = preg_replace( '/[\p{Cc}]+/u', ' ', $trimmed );
+               // \p{Cc} only includes general control characters.
+               $trimmed = preg_replace( '/\p{Cc}+/u', ' ', $inputString );
+               // \p{Z} includes all whitespace characters and invisible 
separators.
+               $trimmed = preg_replace( '/^\p{Z}+|\p{Z}+$/u', '', $trimmed );
                return $trimmed;
        }
 
diff --git a/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php 
b/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
index c26f724..345742a 100644
--- a/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
+++ b/extensions/Wikibase/lib/includes/store/sql/TermSqlIndex.php
@@ -968,12 +968,11 @@
                        wfWarn( "Unicode normalization failed for `$text`" );
                }
 
-               // \p{Z} - whitespace
-               // \p{C} - control chars
                // WARNING: *any* invalid UTF8 sequence causes preg_replace to 
return an empty string.
-               $strippedText = $nfcText;
-               $strippedText = preg_replace( '/[\p{Cc}\p{Cf}\p{Cn}\p{Cs}]+/u', 
' ', $strippedText );
-               $strippedText = preg_replace( '/^[\p{Z}]+|[\p{Z}]+$/u', '', 
$strippedText );
+               // Control character classes excluding private use areas.
+               $strippedText = preg_replace( '/[\p{Cc}\p{Cf}\p{Cn}\p{Cs}]+/u', 
' ', $nfcText );
+               // \p{Z} includes all whitespace characters and invisible 
separators.
+               $strippedText = preg_replace( '/^\p{Z}+|\p{Z}+$/u', '', 
$strippedText );
 
                if ( $strippedText === '' ) {
                        // NOTE: This happens when there is only whitespace in 
the string.
diff --git a/extensions/Wikibase/lib/tests/phpunit/store/MockTermIndex.php 
b/extensions/Wikibase/lib/tests/phpunit/store/MockTermIndex.php
index 42d386d..d647c44 100644
--- a/extensions/Wikibase/lib/tests/phpunit/store/MockTermIndex.php
+++ b/extensions/Wikibase/lib/tests/phpunit/store/MockTermIndex.php
@@ -291,21 +291,49 @@
                        if ( ( $language === null || $term->getLanguage() === 
$language )
                                && ( $entityType === null || 
$term->getEntityType() === $entityType )
                                && ( $termType === null || $term->getType() === 
$termType )
-                               && $this->termMatchesTemplates( $term, $terms )
+                               && $this->termMatchesTemplates( $term, $terms, 
$options )
                        ) {
 
                                $matchingTerms[] = $term;
                        }
                }
 
+               $limit = isset( $options['LIMIT'] ) ? $options['LIMIT'] : 0;
+
+               if ( $limit > 0 ) {
+                       $matchingTerms = array_slice( $matchingTerms, 0, $limit 
);
+               }
+
                return $matchingTerms;
        }
 
        /**
-        * @throws Exception always
+        * @param Term[] $terms
+        * @param string|null $entityType
+        * @param array $options
+        *
+        * @return EntityId[]
         */
        public function getMatchingIDs( array $terms, $entityType = null, array 
$options = array() ) {
-               throw new Exception( 'not implemented by mock class ' );
+               // We can't pass the limit on to getMatchingTerms, since 
getMatchingTerms may
+               // return multiple terms for an EntityId.
+               $limit = isset( $options['LIMIT'] ) ? $options['LIMIT'] : 0;
+               unset( $options['LIMIT'] );
+
+               $terms = $this->getMatchingTerms( $terms, null, $entityType, 
$options );
+
+               $ids = array();
+               foreach ( $terms as $term ) {
+                       $id = $term->getEntityId();
+                       $key = $id->getSerialization();
+                       $ids[$key] = $id;
+               }
+
+               if ( $limit > 0 ) {
+                       $ids = array_slice( $ids, 0, $limit );
+               }
+
+               return $ids;
        }
 
        /**
@@ -353,10 +381,11 @@
        /**
         * @param Term $term
         * @param Term[] $templates
+        * @param array $options
         *
         * @return bool
         */
-       private function termMatchesTemplates( Term $term, array $templates ) {
+       private function termMatchesTemplates( Term $term, array $templates, 
array $options = array() ) {
                foreach ( $templates as $template ) {
                        if ( $template->getType() !== null && 
$template->getType() != $term->getType() ) {
                                continue;
@@ -370,7 +399,7 @@
                                continue;
                        }
 
-                       if ( $template->getText() !== null && 
$template->getText() != $term->getText() ) {
+                       if ( $template->getText() !== null && 
!$this->textMatches( $template->getText(), $term->getText(), $options ) ) {
                                continue;
                        }
 
@@ -384,4 +413,17 @@
                return false;
        }
 
+       private function textMatches( $find, $text, array $options = array() ) {
+
+               if ( isset( $options[ 'caseSensitive' ] ) && !$options[ 
'caseSensitive' ] ) {
+                       $find = strtolower( $find );
+                       $text = strtolower( $text );
+               }
+
+               if ( isset( $options[ 'prefixSearch' ] ) && $options[ 
'prefixSearch' ] ) {
+                       $text = substr( $text, 0, strlen( $find ) );
+               }
+
+               return $find === $text;
+       }
 }
diff --git a/extensions/Wikibase/repo/i18n/azb.json 
b/extensions/Wikibase/repo/i18n/azb.json
index f2a2f8b..651be14 100644
--- a/extensions/Wikibase/repo/i18n/azb.json
+++ b/extensions/Wikibase/repo/i18n/azb.json
@@ -2,11 +2,14 @@
        "@metadata": {
                "authors": [
                        "Erdemaslancan",
-                       "Amir a57"
+                       "Amir a57",
+                       "Koroğlu"
                ]
        },
        "wikibase-edit": "دَییشدیر",
        "wikibase-add": "آرتیرماق",
+       "wikibase-label-empty": "هئچ بیر آد تعریف اولونماییب‌دیر.",
+       "wikibase-description-empty": "هئچ بیر آچیقلاما تعریف اولماییب‌دیر.",
        "wikibase-statements": "ایظهالار",
        "wikibase-sitelinks-special": "آیری سایتلار",
        "wikibase-aliases-empty": "هئچ بیر موستعار آدی سئچیلمییب.",
diff --git a/extensions/Wikibase/repo/i18n/et.json 
b/extensions/Wikibase/repo/i18n/et.json
index 367a5a4..f5cf40c 100644
--- a/extensions/Wikibase/repo/i18n/et.json
+++ b/extensions/Wikibase/repo/i18n/et.json
@@ -367,7 +367,7 @@
        "wikibase-listdatatypes-string-head": "Sõne",
        "wikibase-listdatatypes-string-body": "Literaalandmete väli glüüfidest 
sõne jaoks. Tüüpilises kasutuses on see näiteks identifikaator, millel on 
kirjalikke kujusid, mis ei olene lugeja keelest.\n* väärtus – ilmutatud väärtus 
keelele eriomase variantsõne jaoks",
        "wikibase-listdatatypes-time-head": "Aeg",
-       "wikibase-listdatatypes-time-body": "Literaalandmete väli ajaväärtuste 
jaoks. Aeg esitatakse teatud esitustäpsuse ja piiridega. Sisemiselt 
salvestatakse aeg alati proleptilise uue kalendri vormingus, aga parsimiseks ja 
vormindamiseks saab kasutada ka teisi vorminguid (?).\n* aeg – ilmutatud 
väärtus ajahetke jaoks, esitatud ISO8601 järgi, aasta on alati 11-kohaline ja 
kuupäev on alati märgiga, vormingus +00000002013-01-01T00:00:00Z\n* ajavöönd – 
ilmutatud väärtus märgiga täisarvuna. Teave ajavööndi kohta minutites ajavahena 
UTC suhtes.\n* enne – ilmutatud täisarvuline väärtus, mis näitab mitu ühikut 
pärast antud aega saab miski olla. Ühik on määratud esitustäpsusega.\n* pärast 
– ilmutatud täisarvuline väärtus, mis näitab mitu ühikut enne antud aega saab 
miski olla. Ühik on määratud esitustäpsusega.\n* esitustäpsus – ilmutatud 
väärtus, mis on kodeeritud lühikese täisarvuna. Arvude tähendused on järgmised: 
0 – miljard aastat, 1 – sada miljonit aastat, ..., 6 – aastatuhat, 7 – sajand, 
8 – aastakümme, 9 – aasta, 10 – kuu, 11 – päev, 12 – tund, 13 – minut, 14 – 
sekund.\n* kalendrimudel – ilmutatud väärtus URI-na. Sellega määratakse 
kalendrimudel, mida tuleks kasutada ajaväärtuse kuvamiseks.",
+       "wikibase-listdatatypes-time-body": "Literaalandmete väli ajaväärtuste 
jaoks. Aeg esitatakse teatud esitustäpsuse ja piiridega. Sisemiselt 
salvestatakse aeg alati proleptilise uue kalendri vormingus, aga parsimiseks ja 
vormindamiseks saab kasutada ka teisi vorminguid.\n* aeg – ilmutatud väärtus 
ajahetke jaoks, esitatud ISO 8601 järgi, näiteks +2013-01-01T00:00:00Z. Aasta 
on alati arvu märgiga ja täidistatud 1–16 numbrimärgi kohaliseks.\n* ajavöönd – 
ilmutatud väärtus märgiga täisarvuna. Teave ajavööndi kohta minutites ajavahena 
UTC suhtes.\n* enne – ilmutatud täisarvuline väärtus, mis näitab mitu ühikut 
pärast antud aega saab miski olla. Ühik on määratud esitustäpsusega.\n* pärast 
– ilmutatud täisarvuline väärtus, mis näitab mitu ühikut enne antud aega saab 
miski olla. Ühik on määratud esitustäpsusega.\n* esitustäpsus – ilmutatud 
väärtus, mis on kodeeritud lühikese täisarvuna. Arvude tähendused on järgmised: 
0 – miljard aastat, 1 – sada miljonit aastat, ..., 6 – aastatuhat, 7 – sajand, 
8 – aastakümme, 9 – aasta, 10 – kuu, 11 – päev, 12 – tund, 13 – minut, 14 – 
sekund.\n* kalendrimudel – ilmutatud väärtus URI-na. Sellega määratakse 
kalendrimudel, mida tuleks kasutada ajaväärtuse kuvamiseks.",
        "wikibase-listdatatypes-url-body": "Literaalandmete väli URL-i jaoks. 
Sobivad URL-id on piiratud protokollidega, mis on toetatud ka vikiteksti 
välislinkides.",
        "wikibase-concept-uri": "Mõiste URI",
        "wikibase-concept-uri-tooltip": "URI, mis identifitseerib mõiste, mida 
see üksus kirjeldab",
diff --git a/extensions/Wikibase/repo/i18n/fa.json 
b/extensions/Wikibase/repo/i18n/fa.json
index 4c21611..cb1163c 100644
--- a/extensions/Wikibase/repo/i18n/fa.json
+++ b/extensions/Wikibase/repo/i18n/fa.json
@@ -387,7 +387,7 @@
        "wikibase-listdatatypes-string-head": "رشته",
        "wikibase-listdatatypes-string-body": "داده حروفی برای یک رشته کارکتر. 
در مواقعی که صورت نوشتاری یک شناسه بدون تبعیت از زبانی معین نوشته شده باشد، این 
نوع داده ها زیاد به کار می روند. بعضی اوقات این نوع داده ها در قالب سامانه‌های 
نوشتاری غیر حرف نگاری می شوند.\n* زبان - مقداری معین برای شناساندن زبان بخش 
متن\n* متن - مقداری معین برای رشته متغیر مختص آن زبان",
        "wikibase-listdatatypes-time-head": "زمان",
-       "wikibase-listdatatypes-time-body": "داده حروفی برای مقداری از زمان. 
این داده به صورت دقیق و با قاعده هایی بیان می شود. زمان را طبق گاه‌شماری میلادی 
ویژه تاریخ نگاری وارد کرده ولی می توان برای جدا کردن و نیز در شکل نوشتن 
تغییرهایی نیز انجام داد.(؟)\n* زمان - مقداری معین برای اشاره به برهه ای از زمان 
که با استاندارد ایزو 8601 وارد می شود، سال به صورت 11 رقمی و با علامت مثبت یا 
منفی در قالب +00000002013-01-01T00:00:00Z وارد می شود\n* منطقه زمانی - مقداری 
معین در قالب عدد صحیح با علامت مثبت یا منفی، برحسب دقیقه و بنا به فاصله ای که 
از مبدای زمانی گرینویچ(با دقت تصحیح شده) دارد، منطقه زمانی بیان می شود\n* پیش 
از - مقدار عددی صحیح که نشان می دهد که چند واحد پس از زمان بیان شده، رخ داده 
است. واحد باید به دقت بیان شود\n* پس از - مقدار عددی صحیح که نشان می دهد که چند 
واحد پیش از زمان بیان شده، رخ داده است. واحد باید به دقت بیان شود\n* دقت - 
مقداری معین(مشخص) که به صورت مخفف عددی است. عددها به صورت زیر معنی می شوند: 
0-میلیارد سال، 1-صد میلیون سال،...،6-هزاره، 7-قرن، 8-دهه، 9-سال، 10-ماه، 
11-روز، 12-ساعت، 13-دقیقه، 14-ثانیه.\n* شیوه گاهشماری - مقداری معلوم(مشخص) که 
به صورت یوآرآی بیان می شود و نوع گاهشماری را که برای بیان مقدار زمان مورد 
استفاده قرار گرفته است، به ما می شناساند",
+       "wikibase-listdatatypes-time-body": "داده حروفی برای مقداری از زمان. 
این داده به صورت دقیق و با قاعده‌هایی بیان می شود. زمان، طبق گاه‌شماری میلادی 
ویژه تاریخ نگاری ذخیره می‌شود ولی می توان برای جدا کردن و نیز ویرایش شکل نوشتن 
از صورت‌های دیگری استفاده کرد.\n* زمان - مقداری معین برای اشاره به برهه‌ای از 
زمان که با استاندارد ایزو ۸۶۰۱ وارد می‌شود، سال به صورت ۱۱ رقمی و با علامت مثبت 
یا منفی در قالب +00000002013-01-01T00:00:00Z وارد می شود. سال همیشه همراه با 
علامت مثبت یا منفی نوشته می‌شود و بین ۱ تا ۱۶ رقم دارد.\n* منطقه زمانی - مقداری 
معین در قالب عدد صحیح با علامت مثبت یا منفی، برحسب دقیقه و بنا به فاصله ای که 
از مبدای زمانی گرینویچ(با دقت تصحیح شده) دارد، منطقه زمانی بیان می شود\n* پیش 
از - مقدار عددی صحیح که نشان می دهد که چند واحد پس از زمان بیان شده، رخ داده 
است. واحد باید به دقت بیان شود\n* پس از - مقدار عددی صحیح که نشان می دهد که چند 
واحد پیش از زمان بیان شده، رخ داده است. واحد باید به دقت بیان شود\n* دقت - 
مقداری معین(مشخص) که به صورت مخفف عددی است. عددها به صورت زیر معنی می شوند: 
0-میلیارد سال، 1-صد میلیون سال،...،6-هزاره، 7-قرن، 8-دهه، 9-سال، 10-ماه، 
11-روز، 12-ساعت، 13-دقیقه، 14-ثانیه.\n* شیوه گاهشماری - مقداری معلوم(مشخص) که 
به صورت یوآرآی بیان می شود و نوع گاهشماری را که برای بیان مقدار زمان مورد 
استفاده قرار گرفته است، به ما می شناساند",
        "wikibase-listdatatypes-url-head": "نشانی",
        "wikibase-listdatatypes-url-body": "دادهٔ دقیق برای نشانی. نشانی‌ها 
محدود به پروتکل‌ها است که برای پیوندهای بیرونی در ویکی‌متن پشتیبانی می‌شوند.",
        "wikibase-concept-uri": "نشانی مفهوم",
@@ -427,11 +427,42 @@
        "apihelp-wbeditentity-param-baserevid": "شناسۀ عددی برای بازبینی برای 
مبنا قرار دادن برای تغییرات.\nاین برای شناسایی تداخل‌ها در زمان ذخیره‌سازی 
استفاده می‌شود.",
        "apihelp-wbeditentity-param-summary": "خلاصه ویرایش.\nیک نظر خود به 
خودی ایجاد می‌شود. محدودیت طول آن، ۲۶۰ نویسه است. دقت کنید که بیشتر از آن نشان 
داده نمی‌شود.",
        "apihelp-wbeditentity-param-bot": "این ویرایش را به عنوان ربات 
علامتگذاری کن\nفلگ یوآرال تنها در صورتی قابل اعتنا است که کاربر موردنظر عضو 
گروه «ربات» باشد.",
+       "apihelp-wbeditentity-param-data": "شی پشت سر همی که به عنوان منبع داده 
استفاده شده است.\nیک جوهره که به تازگی ایجاد شده است با یک شناسه مشخص خواهد 
شد.",
+       "apihelp-wbeditentity-param-clear": "اگر قرار داده شود قبل از جلو رفتن 
کل جوهره خالی می‌شود. پیش از آنکه داده‌ها کامل پر شوند، امکان ذخیزه جوهره وجود 
نخواهد داشت.",
+       "apihelp-wbeditentity-param-new": "اگر قرار داده شود، یک جوهره جدید 
ساخته خواهدشد.\nاین را نوع جوهره‌ای قرار بدهید که قصد دارید ایجادش کنید (فعلا 
آیتم|خصوصیت).\nمجاز نیستید هنگامی که شناسه وجود دارد، این را قرار بدهید.",
        "apihelp-wbeditentity-example-1": "ساخت یک آیتم خالی، بازگرداندن ساختار 
کلی ورودی",
        "apihelp-wbeditentity-example-2": "ساخت یک آیتم و برچسب برای de و en",
        "apihelp-wbeditentity-example-4": "پاک کردن همه اطلاعات از ورودی با ID 
Q42",
+       "apihelp-wbeditentity-example-5": "همه داده‌ها را از جوهره‌ای به شناسه 
Q42 پاک کن و یک برچسب فارسی برای آن قرار بده.",
+       "apihelp-wbeditentity-example-6": "پیوندادی برای ویکی قرار می‌دهد و در 
صورتی که قبلا یکی وجود داشته باشد دوباره روی آن می‌نویسد",
+       "apihelp-wbeditentity-example-7": "توضیحاتی برای nb قرار می‌دهد و در 
صورتی که قبلا یکی وجود داشته باشد دوباره روی آن می‌نویسد",
+       "apihelp-wbeditentity-example-8": "یک اظهارنظر جدید برای آیتمی ایجاد 
می‌کند که خصوصیت P56 و مقدار «مثال رشته‌ای» دارد.",
        "apihelp-wbeditentity-example-9": "حذف ادعا از آیتم توسط GUID 
Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F و 
Q42$GH678DSA-01PQ-28XC-HJ90-DDFD9990126X",
+       "apihelp-wbeditentity-example-10": "اظهار نظری را که دارای شناسه GU (جی 
یو آی دی) است به مقدار اظهار نظر بر می گرداند",
        "apihelp-wbformatvalue-description": "ساختار مقدارهای داده",
+       "apihelp-wbformatvalue-param-generate": "فرمت خروجی",
+       "apihelp-wbgetclaims-description": "اظهارات ویکی‌بیس ایجاد می‌کند.",
+       "apihelp-wbgetclaims-param-ungroupedlist": "اسنک‌ها را بر اساس شناسۀ 
خصوصیت (عدد پی) گروه‌بندی نکن",
+       "apihelp-wbgetclaims-example-1": "اظهارنظرهایی را برای آیتم با شناسۀ 
Q42 دریافت می‌کند",
+       "apihelp-wbgetclaims-example-2": "اظهارات مربوط به یک آیتم با شناسۀ Q42 
و یک خصوصیت با شناسۀ P2 را دریافت می‌کند.",
+       "apihelp-wbgetclaims-example-3": "اظهارات مربوط به یک آیتم با شناسۀ Q42 
که دارای رتبه معمولی است را دریافت می‌کند.",
+       "apihelp-wbgetclaims-example-4": "اظهار نظری با شناسۀ GU ی 
Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F دریافت می‌کند.",
+       "apihelp-wbgetentities-description": "داده‌ها را از چند جوهره مختلف 
ویکی‌بیس دریافت می‌کند.",
+       "apihelp-wbgetentities-param-ids": "شناسۀ جوهره‌هایی که می‌توان از 
آن‌ها داده دریافت کرد",
+       "apihelp-wbgetentities-param-ungroupedlist": "اسنک‌ها را بر اساس شناسۀ 
خصوصیت (عدد P) گروه‌بندی نکن",
+       "apihelp-wbgetentities-example-1": "جوهره‌هایی با شناسۀ Q42 به همه 
زبان‌های موجود دریافت کن",
+       "apihelp-wbgetentities-example-2": "جوهره‌هایی با شناسۀ P17 به همه 
زبان‌های موجود دریافت کن",
+       "apihelp-wbgetentities-example-3": "جوهره‌هایی با شناسۀ Q42 و P17 به 
همه زبان‌های موجود دریافت کن",
+       "apihelp-wbgetentities-example-4": "جوهره‌هایی با شناسۀ Q42 به زبان 
انگلیسی دریافت کن",
+       "apihelp-wbgetentities-example-5": "جوهره‌هایی با شناسۀ Q42 به همه 
زبان‌های پشتیبان (کمکی) موجود دریافت کن",
+       "apihelp-wbgetentities-example-6": "جوهره‌هایی با شناسۀ Q42 به همه 
زبان‌های موجود دریافت کن و همه برچسب‌هایشان را نیز نشان بده",
+       "apihelp-wbgetentities-example-7": "جوهره‌هایی با شناسۀ P17 و P3 دریافت 
کن که فقط نوع داده دارند",
+       "apihelp-wbgetentities-example-8": "جوهره‌هایی با شناسۀ Q42 دریافت کن 
که نام‌های مستعار آن‌ها به زبان انگلیسی نوشته شده باشد",
+       "apihelp-wbgetentities-example-9": "جوهره‌هایی با شناسۀ Q1 و Q2 دریافت 
کن که توضیحات شان به زبان های انگلیسی، آلمانی و فرانسوی باشد",
+       "apihelp-wbgetentities-example-10": "آیتم مربوط به صفحه «برلین» را در 
«ویکی انگلیسی» دریافت کن که خصوصیت‌هایش به زبان انگلیسی باشد",
+       "apihelp-wbgetentities-example-11": "آیتم مربوط به صفحه «برلین» را در 
«ویکی انگلیسی» دریافت کن پس از اینکه عنوان را از «برلین» نرمالسازی کردی",
+       "apihelp-wbgetentities-example-12": "پیوندادهای مربوط به آیتم Q42 زا 
دریافت کن",
+       "apihelp-wbgetentities-example-13": "جوهره‌های دارای شناسۀ Q42 را 
دریافت کن که فقط یک پیونداد از enwiki داشته باشند",
        "apihelp-wbmergeitems-description": "ادغام چند آیتم.",
        "apihelp-wbmergeitems-param-fromid": "شناسه برای ادغام از",
        "apihelp-wbmergeitems-param-toid": "شناسه برای ادغام به",
@@ -439,6 +470,7 @@
        "apihelp-wbmergeitems-example-2": "ادغام اطلاعات از Q555 به Q3",
        "apihelp-wbmergeitems-example-3": "ادغام اطلاعات از Q66 به Q99 بدون 
درنظر گرفتن هیچ تداخل برچسب",
        "apihelp-wbmergeitems-example-4": "ادغام اطلاعات از Q66 به Q99 بدون 
درنظر گرفتن هیچ تداخل برچسب و توضیحات",
+       "apihelp-wbremovequalifiers-description": "یک گستره‌نما را از یک 
اظهارنظر حذف می‌کند.",
        "apihelp-wbsearchentities-description": "جستجوی ورودی‌ها",
        "apihelp-wbsearchentities-param-search": "جستجوی این متن",
        "apihelp-wbsearchentities-param-language": "جستجو در این زبان",
@@ -451,10 +483,32 @@
        "apihelp-wbsetaliases-description": "ثبت نام مستعار برای ورودی 
ویکی‌بیس",
        "apihelp-wbsetclaimvalue-description": "ثبت کردن مقدار ادعای ویکی‌بیس",
        "apihelp-wbsetclaimvalue-param-claim": "GUID یک اظهار را پیدا کرد",
+       "apihelp-wbsetclaimvalue-param-snaktype": "نوع اسنک",
+       "apihelp-wbsetclaimvalue-param-summary": "خلاصه ویرایش.\nیک نظر خود به 
خودی ایجاد می‌شود. محدودیت طول آن، ۲۶۰ نویسه است. دقت کنید که بیشتر از آن نشان 
داده نمی‌شود.",
+       "apihelp-wbsetclaimvalue-param-baserevid": "شناسۀ عددی برای بازبینی 
برای مبنا قرار دادن برای تغییرات.\nاین برای شناسایی تداخل‌ها در زمان ذخیره‌سازی 
استفاده می‌شود.",
+       "apihelp-wbsetclaimvalue-param-bot": "این ویرایش را به عنوان ربات 
علامتگذاری کن\nفلگ یوآرال تنها در صورتی قابل اعتنا است که کاربر موردنظر عضو 
گروه «ربات» باشد.",
+       "apihelp-wbsetdescription-description": "برای یک جوهره ویکی‌بیس که 
منفرد باشد یک توضیحات قرار می‌دهد",
+       "apihelp-wbsetdescription-param-id": "شناسۀ جوهره شامل پیشوند.\nیا از 
«شناسه» یا از «وبگاه» و «عنوان» با هم استفاده کنید.",
+       "apihelp-wbsetdescription-param-site": "شناسۀ وبگاهی که صفحه در آن وجود 
دارد.\nبه همراه «عنوان» استفاده کنید تا تشکیل یک پیونداد کامل دهد.",
+       "apihelp-wbsetdescription-param-title": "عنوان صفحه که با آن مطابقت 
دارد.\nهمراه با «وبگاه» استفاده کنید تا تشکیل یک پیونداد کامل دهد.",
+       "apihelp-wbsetdescription-param-baserevid": "شناسۀ عددی برای بازبینی 
برای مبنا قرار دادن برای تغییرات.\nاین برای شناسایی تداخل‌ها در زمان ذخیره‌سازی 
استفاده می‌شود.",
+       "apihelp-wbsetdescription-param-summary": "خلاصه ویرایش.\nیک نظر خود به 
خودی ایجاد می‌شود. محدودیت طول آن، ۲۶۰ نویسه است. دقت کنید که بیشتر از آن نشان 
داده نمی‌شود.",
+       "apihelp-wbsetdescription-param-bot": "این ویرایش را به عنوان ربات 
علامتگذاری کن\nفلگ یوآرال تنها در صورتی قابل اعتنا است که کاربر موردنظر عضو 
گروه «ربات» باشد.",
        "apihelp-wbsetdescription-param-language": "زبان توضیحات",
        "apihelp-wbsetdescription-param-value": "مقدار برای تنظیم توضیحات",
+       "apihelp-wbsetdescription-example-1": "برای صفحه‌ای با شناسۀ Q42 یک 
توضیحات به زبان انگلیسی به صورت رشته «An encyclopedia that everyone can edit» 
قرار می‌دهد",
+       "apihelp-wbsetdescription-example-2": "برای صفحه‌ای با پیونداد 
enwiki:Wikipedia یک توضیحات به زبان انگلیسی به صورت رشته «An encyclopedia that 
everyone can edit» قرار می‌دهد",
        "apihelp-wbsetlabel-description": "تنظیم برچسب برای یک ورودی ویکی‌بیس",
+       "apihelp-wbsetlabel-param-id": "شناسۀ جوهره شامل پیشوند.\nیا از «شناسه» 
یا از «وبگاه» و «عنوان» با هم استفاده کنید.",
+       "apihelp-wbsetlabel-param-site": "شناسۀ وبگاهی که صفحه در آن وجود 
دارد.\nبه همراه «عنوان» استفاده کنید تا تشکیل یک پیونداد کامل دهد.",
+       "apihelp-wbsetlabel-param-title": "عنوان صفحه که با آن مطابقت 
دارد.\nهمراه با «وبگاه» استفاده کنید تا تشکیل یک پیونداد کامل دهد.",
+       "apihelp-wbsetlabel-param-baserevid": "شناسۀ عددی برای بازبینی برای 
مبنا قرار دادن برای تغییرات.\nاین برای شناسایی تداخل‌ها در زمان ذخیره‌سازی 
استفاده می‌شود.",
+       "apihelp-wbsetlabel-param-summary": "خلاصه ویرایش.\nیک نظر خود به خودی 
ایجاد می‌شود. محدودیت طول آن، ۲۶۰ نویسه است. دقت کنید که بیشتر از آن نشان داده 
نمی‌شود.",
+       "apihelp-wbsetlabel-param-bot": "این ویرایش را به عنوان ربات علامتگذاری 
کن\nفلگ یوآرال تنها در صورتی قابل اعتنا است که کاربر موردنظر عضو گروه «ربات» 
باشد.",
        "apihelp-wbsetlabel-param-language": "زبان برچسب",
        "apihelp-wbsetlabel-param-value": "مقدار برچسب",
+       "apihelp-wbsetlabel-example-1": "برای صفحه‌ای با شناسۀ Q42 یک توضیحات 
به زبان انگلیسی به صورت رشته «An encyclopedia that everyone can edit» قرار بده 
و آن را به عنوان یک جیسون خوب چاپ شده گزارش کن",
+       "apihelp-wbsetlabel-example-2": "برای آیتمی با پیونداد enwiki => 
\"Earth\" یک برچسب به زبان انگلیسی به صورت «Earth» قرار بده.",
+       "apihelp-wbsetqualifier-description": "یک گستره‌نما ایجاد می‌کند یا یک 
مقدار مربوط به یکی از گستره‌نماهای موجود را قرار می‌دهد.",
        "apihelp-wbsetsitelink-example-4": "حذف پیوند زبان آلمانی از آیتم"
 }
diff --git a/extensions/Wikibase/repo/i18n/gsw.json 
b/extensions/Wikibase/repo/i18n/gsw.json
index 6c1e31a..e230a19 100644
--- a/extensions/Wikibase/repo/i18n/gsw.json
+++ b/extensions/Wikibase/repo/i18n/gsw.json
@@ -5,14 +5,24 @@
                ]
        },
        "wikibase-desc": "Repositorium vu strukturierte Date",
+       "wikibase-entity-item": "Objäkt",
+       "wikibase-entity-property": "Eigeschaft",
+       "wikibase-entity-query": "Abfrog",
        "wikibase-edit": "bearbeite",
        "wikibase-save": "spyychere",
        "wikibase-cancel": "abbräche",
        "wikibase-add": "zuefiege",
+       "wikibase-label-empty": "S git kei Uusdruck",
        "wikibase-label-edit-placeholder": "Bezeichnig yygee",
+       "wikibase-description-empty": "S git kei Bschrybig",
        "wikibase-description-edit-placeholder": "Bschryybig yygee",
        "wikibase-label-input-help-message": "Gib dr Name fir dää Datesatz in 
$1 aa.",
        "wikibase-description-input-help-message": "Gib e churzi Bschryybig in 
$1 aa.",
+       "wikibase-statements": "Uussage",
        "wikibase-sitelinks-empty": "Bishär sin kei {{SITENAME}}-Syte mit däm 
Datenelemänt verchnipft.",
-       "wikibase-remove": "uuseneh"
+       "wikibase-sitelinks-special": "Anderi Websyte",
+       "wikibase-remove": "uuseneh",
+       "wikibase-aliases-empty": "S kei Alias definiert wore.",
+       "wikibase-statementview-rank-normal": "Normale Rang",
+       "wikibase-statementview-referencesheading-pendingcountersubject": 
"{{PLURAL:$1|Fueßnote}}"
 }
diff --git a/extensions/Wikibase/repo/i18n/hsb.json 
b/extensions/Wikibase/repo/i18n/hsb.json
index e25f2ac..1b89ad0 100644
--- a/extensions/Wikibase/repo/i18n/hsb.json
+++ b/extensions/Wikibase/repo/i18n/hsb.json
@@ -17,9 +17,9 @@
        "wikibase-addreference": "žórło přidać",
        "wikibase-save-inprogress": "Składuje so...",
        "wikibase-remove-inprogress": "Wotstronja so...",
-       "wikibase-label-empty": "Hišće njeje so žane woznamjenjenje 
definowało.",
+       "wikibase-label-empty": "Žane pomjenowanje definowane",
        "wikibase-label-edit-placeholder": "pomjenowanje zapodać",
-       "wikibase-description-empty": "Hišće njeje so žane wopisanje 
definowało.",
+       "wikibase-description-empty": "Žane wopisanje definowane",
        "wikibase-description-edit-placeholder": "wopisanje zapodać",
        "wikibase-diffview-reference": "referenca",
        "wikibase-diffview-rank": "rjad",
@@ -33,6 +33,7 @@
        "wikibase-terms": "W druhich rěčach",
        "wikibase-sitelinks-empty": "Dotal žadyn wotkaz sydła za tutón element 
njeje.",
        "wikibase-sitelinks-input-help-message": "Wotkaz k stronje wutworić, 
kotraž je z tutym elementom zwjazana.",
+       "wikibase-sitelinks-special": "Druhe sydła",
        "wikibase-remove": "wotstronić",
        "wikibase-move-up": "Horje přesunyć",
        "wikibase-move-down": "Dele přesunyć",
@@ -55,6 +56,7 @@
        "wikibase-propertypage-datatype": "Datowy typ",
        "wikibase-claimview-snak-tooltip": "Zapodaj hódnotu po kajkosći z 
mjenom \"$1\". Jeli kajkosć nima wěstu hódnotu abo tuchwilna hódnota znata 
njeje, móžeš alternatiwu wubrać, zo by swójsku hódnotu podał, kliknjo na symbol 
pódla zapodawanskeho kašćika za hódnoty.",
        "wikibase-claimview-snak-new-tooltip": "Po podawanju kajkosće móžeš 
wotpowědnu hódnotu zapodać. Jeli kajkosć nima wěstu hódnotu abo tuchwilna 
hódnota znata njeje, móžeš alternatiwu wubrać, zo by swójsku hódnotu podał, 
kliknjo na symbol pódla zapodawanskeho kašćika za hódnoty.",
+       "wikibase-statementview-rank-normal": "Normalny rjad",
        "wikibase-statementview-referencesheading-pendingcountersubject": 
"{{PLURAL:$1|žórło|žórle|žórła}}",
        "wikibase-statementview-referencesheading-pendingcountertooltip": 
"{{PLURAL:$1|Jedne žórło hišće njeskładowane|$1 žórle hišće njeskładowanej|$1 
žórła hišće njeskładowane|$1 žórłow hišće njeskładowanych}}",
        "wikibase-snakview-property-input-placeholder": "kajkosć",
diff --git a/extensions/Wikibase/repo/i18n/hu.json 
b/extensions/Wikibase/repo/i18n/hu.json
index 5ccb7d6..ba48a8a 100644
--- a/extensions/Wikibase/repo/i18n/hu.json
+++ b/extensions/Wikibase/repo/i18n/hu.json
@@ -30,10 +30,10 @@
        "wikibase-entitytermsforlanguagelistview-description": "Leírás",
        "wikibase-entitytermsforlanguagelistview-label": "Címke",
        "wikibase-entitytermsforlanguagelistview-language": "Nyelv",
-       "wikibase-label-empty": "Még nincs címke",
+       "wikibase-label-empty": "Nincs címke",
        "wikibase-label-edit-placeholder": "add meg a címkét",
        "wikibase-label-edit-placeholder-language-aware": "Add meg a címkét $1 
nyelven!",
-       "wikibase-description-empty": "Még nincs leírás",
+       "wikibase-description-empty": "Nincs leírás",
        "wikibase-description-edit-placeholder": "add meg a leírást",
        "wikibase-description-edit-placeholder-language-aware": "Add meg a 
leírást $1 nyelven!",
        "wikibase-sitelink-site-edit-placeholder": "wiki",
diff --git a/extensions/Wikibase/repo/i18n/ja.json 
b/extensions/Wikibase/repo/i18n/ja.json
index d94a691..095ab09 100644
--- a/extensions/Wikibase/repo/i18n/ja.json
+++ b/extensions/Wikibase/repo/i18n/ja.json
@@ -29,10 +29,10 @@
        "wikibase-entitytermsforlanguagelistview-description": "説明",
        "wikibase-entitytermsforlanguagelistview-label": "ラベル",
        "wikibase-entitytermsforlanguagelistview-language": "言語",
-       "wikibase-label-empty": "ラベルはまだ設定されていません",
+       "wikibase-label-empty": "ラベルは設定されていません",
        "wikibase-label-edit-placeholder": "ラベルを入力",
        "wikibase-label-edit-placeholder-language-aware": "ラベルを $1 で入力",
-       "wikibase-description-empty": "説明はまだ設定されていません",
+       "wikibase-description-empty": "説明は設定されていません",
        "wikibase-description-edit-placeholder": "説明を入力",
        "wikibase-description-edit-placeholder-language-aware": "説明を $1 で入力",
        "wikibase-diffview-reference": "情報源",
diff --git a/extensions/Wikibase/repo/i18n/khw.json 
b/extensions/Wikibase/repo/i18n/khw.json
new file mode 100644
index 0000000..5605475
--- /dev/null
+++ b/extensions/Wikibase/repo/i18n/khw.json
@@ -0,0 +1,14 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Rachitrali"
+               ]
+       },
+       "wikibase-edit": "ترمیم",
+       "wikibase-add": "شامل کورے",
+       "wikibase-label-empty": "کیہ لیبل ڈیفائن کورونو نو بیتی شیر",
+       "wikibase-statements": "بیانات",
+       "wikibase-sitelinks-special": "دیگر ویب سائٹ",
+       "wikibase-statementview-rank-normal": "عام درجہ بندی",
+       "wikibase-statementview-referencesheading-pendingcountersubject": 
"{{PLURAL:$1|reference|references}}"
+}
diff --git a/extensions/Wikibase/repo/i18n/ko.json 
b/extensions/Wikibase/repo/i18n/ko.json
index ebc444a..9d40b4d 100644
--- a/extensions/Wikibase/repo/i18n/ko.json
+++ b/extensions/Wikibase/repo/i18n/ko.json
@@ -23,6 +23,11 @@
        "wikibase-addreference": "출처 추가",
        "wikibase-save-inprogress": "저장 중…",
        "wikibase-remove-inprogress": "삭제 중…",
+       "wikibase-entitytermsview-entitytermsforlanguagelistview-toggler": "다른 
언어",
+       "wikibase-entitytermsforlanguagelistview-aliases": "다른 이름",
+       "wikibase-entitytermsforlanguagelistview-description": "설명",
+       "wikibase-entitytermsforlanguagelistview-label": "레이블",
+       "wikibase-entitytermsforlanguagelistview-language": "언어",
        "wikibase-label-empty": "정의한 레이블이 없습니다.",
        "wikibase-label-edit-placeholder": "레이블 입력",
        "wikibase-label-edit-placeholder-language-aware": "$1로 번역",
@@ -44,6 +49,8 @@
        "wikibase-alias-edit-placeholder": "다른 이름 입력",
        "wikibase-label-input-help-message": "$1로 이 개체의 레이블을 입력하세요.",
        "wikibase-description-input-help-message": "$1로 이 개체의 짧은 설명을 입력하세요.",
+       "wikibase-entitytermsview-input-help-message": "이 개체의 레이블과 간단한 설명, 다른 
이름을 언어별로 입력하십시오.",
+       "wikibase-entitytermsforlanguageview-input-help-message": "이 개체의 레이블과 
간단한 설명, 다른 이름을 $1로 입력하십시오.",
        "wikibase-statements": "서술",
        "wikibase-terms": "다른 언어",
        "wikibase-sitelinks-empty": "이 항목에 연결된 페이지가 없습니다.",
@@ -150,6 +157,9 @@
        "wikibase-setaliases-label": "별칭:",
        "wikibase-setaliases-submit": "별칭 설정",
        "wikibase-setaliases-warning-remove": "[[$1]]의 모든 별칭을 제거하겠습니까?",
+       "wikibase-setlabeldescriptionaliases-label-label": "레이블:",
+       "wikibase-setlabeldescriptionaliases-description-label": "설명:",
+       "wikibase-setlabeldescriptionaliases-aliases-label": "다른 이름:",
        "special-setsitelink": "사이트 링크 설정",
        "wikibase-setsitelink-introfull": "[[$1]]에 대한 $2의 사이트 링크를 설정합니다.",
        "wikibase-setsitelink-intro": "이 양식은 개체의 사이트 링크를 설정할 수 있습니다. 개체(예를 들어 
Q23), 사이트 id(예를 들어 \"kowiki\")와 설정하는 사이트 링크의 ID를 제공해야 합니다.",
diff --git a/extensions/Wikibase/repo/i18n/ml.json 
b/extensions/Wikibase/repo/i18n/ml.json
index d57ef13..3ea21b9 100644
--- a/extensions/Wikibase/repo/i18n/ml.json
+++ b/extensions/Wikibase/repo/i18n/ml.json
@@ -21,10 +21,10 @@
        "wikibase-addreference": "അവലംബം ചേർക്കുക",
        "wikibase-save-inprogress": "സേവ് ചെയ്യുന്നു...",
        "wikibase-remove-inprogress": "നീക്കം ചെയ്യുന്നു...",
-       "wikibase-label-empty": "ഇതുവരെ തലക്കുറിയൊന്നും നിർവചിച്ചിട്ടില്ല",
+       "wikibase-label-empty": "തലക്കുറിയൊന്നും നിർവചിച്ചിട്ടില്ല",
        "wikibase-label-edit-placeholder": "തലക്കുറി നൽകുക",
        "wikibase-label-edit-placeholder-language-aware": "$1 ഭാഷയിൽ തലക്കുറി 
നൽകുക",
-       "wikibase-description-empty": "ഇതുവരെ വിവരണമൊന്നും നിർവചിച്ചിട്ടില്ല",
+       "wikibase-description-empty": "വിവരണമൊന്നും നിർവചിച്ചിട്ടില്ല",
        "wikibase-description-edit-placeholder": "വിവരണം നൽകുക",
        "wikibase-description-edit-placeholder-language-aware": "$1 ഭാഷയിൽ 
വിവരണം നൽകുക",
        "wikibase-diffview-reference": "അവലംബം",
diff --git a/extensions/Wikibase/repo/i18n/nb.json 
b/extensions/Wikibase/repo/i18n/nb.json
index a28078b..66875b3 100644
--- a/extensions/Wikibase/repo/i18n/nb.json
+++ b/extensions/Wikibase/repo/i18n/nb.json
@@ -131,7 +131,7 @@
        "wikibase-newproperty-datatype": "Datatype:",
        "wikibase-newproperty-invalid-datatype": "En ugyldig datatype er 
angitt.",
        "special-newitem": "Lag et nytt element",
-       "wikibase-newitem-summary": "Sjekk at [[Special:ItemByTitle|elementet 
allerede finnes]]!<br />Du bør lage en [[Help:Label|etikett]] og 
[[Help:Description|beskrivelse]] for alle nye elementer.",
+       "wikibase-newitem-summary": "Sjekk først at 
[[Special:ItemByTitle|elementet ikke allerede finnes]]!<br>For alle nye 
elementer bør du fylle inn en [[Help:Label|etikett]] og en kort 
[[Help:Description|beskrivelse]].",
        "wikibase-newitem-fieldset": "Opprettt et nytt element",
        "wikibase-newitem-site": "Nettsted for første nettstedlenke",
        "wikibase-newitem-page": "Tittel for første nettstedlenke",
diff --git a/extensions/Wikibase/repo/i18n/oc.json 
b/extensions/Wikibase/repo/i18n/oc.json
index 9fb5764..c86ef63 100644
--- a/extensions/Wikibase/repo/i18n/oc.json
+++ b/extensions/Wikibase/repo/i18n/oc.json
@@ -7,6 +7,9 @@
                ]
        },
        "wikibase-desc": "Referencial de donadas estructuradas",
+       "wikibase-entity-item": "element",
+       "wikibase-entity-property": "proprietat",
+       "wikibase-entity-query": "requèsta",
        "wikibase-edit": "modificar",
        "wikibase-save": "enregistrar",
        "wikibase-cancel": "anullar",
@@ -15,15 +18,31 @@
        "wikibase-addreference": "apondre una referéncia",
        "wikibase-save-inprogress": "Salvament en cors...",
        "wikibase-remove-inprogress": "Supression en cors…",
+       "wikibase-entitytermsview-entitytermsforlanguagelistview-toggler": "Mai 
de lengas",
+       
"wikibase-entitytermsview-entitytermsforlanguagelistview-configure-link-label": 
"Configurar",
+       "wikibase-entitytermsforlanguagelistview-description": "Descripcion",
+       "wikibase-entitytermsforlanguagelistview-label": "Libellat",
+       "wikibase-entitytermsforlanguagelistview-language": "Lenga",
        "wikibase-label-empty": "Cap de libellat pas definit",
        "wikibase-label-edit-placeholder": "picar un libellat",
-       "wikibase-description-empty": "Pas cap de descripcion pel moment",
+       "wikibase-label-edit-placeholder-language-aware": "entrar lo libellat 
en $1",
+       "wikibase-description-empty": "Cap de descripcion pas provesida",
        "wikibase-description-edit-placeholder": "picar una descripcion",
        "wikibase-description-edit-placeholder-language-aware": "entrar la 
descripcion en $1",
+       "wikibase-diffview-reference": "referéncia",
+       "wikibase-diffview-rank": "reng",
+       "wikibase-diffview-rank-preferred": "Reng privilegiat",
+       "wikibase-diffview-rank-normal": "Reng normal",
+       "wikibase-diffview-rank-deprecated": "Reng depreciat",
+       "wikibase-diffview-qualifier": "qualificador",
+       "wikibase-diffview-label": "libellat",
+       "wikibase-diffview-alias": "aliasses",
+       "wikibase-diffview-description": "descripcion",
+       "wikibase-diffview-link": "ligams",
        "wikibase-sitelink-site-edit-placeholder": "site",
        "wikibase-sitelink-page-edit-placeholder": "pagina",
        "wikibase-alias-edit-placeholder": "entrar un aliàs",
-       "wikibase-label-input-help-message": "Picatz lo títol d'aqueste 
ensemble de donadas en $1.",
+       "wikibase-label-input-help-message": "Picatz lo libellat d'aquesta 
entitat en $1.",
        "wikibase-description-input-help-message": "Picatz una brèva 
descripcion en $1.",
        "wikibase-statements": "Declaracions",
        "wikibase-terms": "Autras lengas",
@@ -51,7 +70,9 @@
        "wikibase-aliases-empty": "Cap d'aliàs pas definit.",
        "wikibase-propertypage-datatype": "Tipe de donadas&nbsp;",
        "wikibase-claimview-snak-tooltip": "Picatz una valor que correspond a 
la proprietat apelada « $1 ». Se la proprietat a pas de valor designada o se sa 
valor actuala es pas coneguda, podètz causir una alternativa per especificar 
una valor personalizada en clicant sus l’icòna al costat de la zòna de picada 
de la valor.",
+       "wikibase-statementview-rank-preferred": "Reng privilegiat",
        "wikibase-statementview-rank-normal": "Reng normal",
+       "wikibase-statementview-rank-deprecated": "Reng depreciat",
        "wikibase-statementview-referencesheading-pendingcountersubject": 
"{{PLURAL:$1|referéncia|referéncias}}",
        "wikibase-statementview-referencesheading-pendingcountertooltip": 
"{{PLURAL:$1|Una referéncia|$1 referéncias}} pas encara 
enregistrada{{PLURAL:$1||s}}",
        "wikibase-snakview-property-input-placeholder": "proprietat",
@@ -63,17 +84,23 @@
        "wikibase-snakview-variations-somevalue-label": "valor desconeguda",
        "wikibase-snakview-variations-novalue-label": "pas cap de valor",
        "wikibase-snakview-snaktypeselector-value": "valor personalizada",
+       "wikibase-snakformat-invalid-value": "Valor invalida",
+       "wikibase-snakformat-propertynotfound": "Proprietat pas trobada.",
        "wikibase-copyrighttooltip-acknowledge": "Accèpti aquelas condicions 
per mos modificacions que venon. Afichar pas mai aqueste messatge.",
        "wikibase-entityselector-more": "mai",
        "wikibase-anonymouseditwarning": "Atencion: Sètz pas connectat.\nVòstra 
adreça IP serà enregistrada dins l’istoric de las modificacions d'aquesta 
entitat.",
        "wikibase-validator-label-conflict": "La proprietat $3 a ja un libellat 
« $1 » associat al còde de lenga $2.",
        "wikibase-wikibaserepopage-invalid-id": "L’ID « $1 » es desconegut del 
sistèma. Utilizatz un ID d’entitat valid.",
+       "wikibase-wikibaserepopage-unresolved-redirect": "$1 es una 
redireccion.",
        "special-itembytitle": "Element per títol",
        "wikibase-itembytitle-lookup-fieldset": "Recercar dels elements per 
site e per títol",
        "wikibase-itembytitle-lookup-site": "Site&nbsp;:&nbsp;",
        "wikibase-itembytitle-lookup-page": "Pagina :",
        "wikibase-itembytitle-submit": "Recercar",
        "wikibase-itembytitle-create": "Tanben podètz [$1 crear un element 
novèl].",
+       "wikibase-gotolinkedpage-lookup-site": "Site :",
+       "wikibase-gotolinkedpage-lookup-item": "Id de l’element :",
+       "wikibase-gotolinkedpage-submit": "Anar",
        "special-itemdisambiguation": "Omonimia d’elements",
        "wikibase-itemdisambiguation-lookup-fieldset": "Recercar d'elements per 
lenga e libellat",
        "wikibase-itemdisambiguation-lookup-language": "Còde de lenga :",
@@ -107,10 +134,14 @@
        "wikibase-setaliases-label": "Aliasses :",
        "wikibase-setaliases-submit": "Fixar los aliasses",
        "wikibase-setaliases-warning-remove": "Sètz segur que volètz suprimir 
totes los aliasses de [[$1]] ?",
+       "wikibase-setlabeldescriptionaliases-label-label": "Labèl :",
+       "wikibase-setlabeldescriptionaliases-description-label": "Descripcion 
:",
+       "wikibase-setlabeldescriptionaliases-aliases-label": "Aliasses :",
        "special-setsitelink": "Definir un ligam de site",
        "wikibase-setsitelink-introfull": "Sètz a definir lo ligam de site $2 
per [[$1]].",
        "wikibase-setsitelink-site": "Id de site :",
        "wikibase-setsitelink-label": "Ligam de site :",
+       "wikibase-setsitelink-badges": "Badges :",
        "wikibase-setsitelink-submit": "Definir lo ligam de site",
        "wikibase-setsitelink-warning-remove": "Sètz segur que volètz suprimir 
lo libellat de site de [[$1]] ?",
        "wikibase-setsitelink-invalid-site": "L’id de site « $1 » es 
desconegut. Utilizatz un id de site existent, coma « enwiki ».",
@@ -236,6 +267,7 @@
        "wikibase-listdatatypes-string-head": "Cadena",
        "wikibase-listdatatypes-time-head": "Data",
        "wikibase-listdatatypes-url-head": "URL",
+       "wikibase-concept-uri": "URI del concèpte",
        "datatypes-type-url": "URL",
        "content-model-wikibase-item": "Element de Wikibase",
        "content-model-wikibase-property": "Propietat de Wikibase",
diff --git a/extensions/Wikibase/repo/i18n/ps.json 
b/extensions/Wikibase/repo/i18n/ps.json
index 921964b..6df8b40 100644
--- a/extensions/Wikibase/repo/i18n/ps.json
+++ b/extensions/Wikibase/repo/i18n/ps.json
@@ -13,8 +13,8 @@
        "wikibase-entitytermsview-entitytermsforlanguagelistview-toggler": "په 
نورو ژبو کې",
        "wikibase-entitytermsforlanguagelistview-description": "څرگندونه",
        "wikibase-entitytermsforlanguagelistview-language": "ژبه",
-       "wikibase-label-empty": "تر اوسه پورې کوم نوم نه دی پېژندل شوی",
-       "wikibase-description-empty": "کومه څرگندونه لا نه ته تعريف شوې",
+       "wikibase-label-empty": "کوم لېبل نه دی څرگند شوی",
+       "wikibase-description-empty": "کوم تعريف نه دی څرگند شوی",
        "wikibase-sitelink-site-edit-placeholder": "وېبځی",
        "wikibase-sitelink-page-edit-placeholder": "ليکنه",
        "wikibase-statements": "څرگندونې",
diff --git a/extensions/Wikibase/repo/i18n/pt-br.json 
b/extensions/Wikibase/repo/i18n/pt-br.json
index 3452e91..9148064 100644
--- a/extensions/Wikibase/repo/i18n/pt-br.json
+++ b/extensions/Wikibase/repo/i18n/pt-br.json
@@ -12,7 +12,8 @@
                        "Luckas",
                        "Mordecool",
                        "Fasouzafreitas",
-                       "Macofe"
+                       "Macofe",
+                       "TheEduGobi"
                ]
        },
        "wikibase-desc": "Repositório de dados estruturados",
@@ -32,7 +33,7 @@
        "wikibase-entitytermsforlanguagelistview-aliases": "Também conhecido 
como",
        "wikibase-entitytermsforlanguagelistview-label": "Rótulo",
        "wikibase-entitytermsforlanguagelistview-language": "Idioma",
-       "wikibase-label-empty": "Rótulo ainda não definido",
+       "wikibase-label-empty": "Nenhum rótulo definido",
        "wikibase-label-edit-placeholder": "insira um rótulo",
        "wikibase-description-empty": "Descrição ainda não definida",
        "wikibase-description-edit-placeholder": "insira uma descrição",
diff --git a/extensions/Wikibase/repo/i18n/qqq.json 
b/extensions/Wikibase/repo/i18n/qqq.json
index 209c632..d6bbc52 100644
--- a/extensions/Wikibase/repo/i18n/qqq.json
+++ b/extensions/Wikibase/repo/i18n/qqq.json
@@ -37,7 +37,8 @@
                        "Cwlin0416",
                        "Robby",
                        "KuboF",
-                       "Umherirrender"
+                       "Umherirrender",
+                       "Macofe"
                ]
        },
        "wikibase-desc": 
"{{desc|name=Wikibase|url=https://www.mediawiki.org/wiki/Extension:Wikibase}}\nSee
 also [[d:Wikidata:Glossary#Wikidata|Wikidata]].",
diff --git a/extensions/Wikibase/repo/i18n/yi.json 
b/extensions/Wikibase/repo/i18n/yi.json
index 061e417..c5eba78 100644
--- a/extensions/Wikibase/repo/i18n/yi.json
+++ b/extensions/Wikibase/repo/i18n/yi.json
@@ -19,10 +19,10 @@
        "wikibase-remove-inprogress": "אוועקנעמען אין גאנג…",
        "wikibase-entitytermsview-entitytermsforlanguagelistview-toggler": "אין 
נאך שפראַכן",
        "wikibase-entitytermsforlanguagelistview-label": "באצייכענונג",
-       "wikibase-label-empty": "קיין באצייכענונג נאך נישט דעפֿינירט",
+       "wikibase-label-empty": "קיין באצייכענונג נישט דעפֿינירט",
        "wikibase-label-edit-placeholder": "אריינגעבן באצייכענונג",
        "wikibase-label-edit-placeholder-language-aware": "אײַנגעבן באצייכענונג 
אויף $1",
-       "wikibase-description-empty": "קיין שילדערונג נאך נישט דעפֿינירט",
+       "wikibase-description-empty": "קיין שילדערונג נישט דעפֿינירט",
        "wikibase-description-edit-placeholder": "ארײַנגעבן באשרײַבונג",
        "wikibase-description-edit-placeholder-language-aware": "אײַנגעבן 
שילדערונג אין $1",
        "wikibase-diffview-reference": "רעפערענץ",
@@ -39,7 +39,7 @@
        "wikibase-description-input-help-message": "איינגעבן א קורצע באשרייבונג 
פאר דער וועזנהייט אויף $1.",
        "wikibase-statements": "אַרויסזאָגן",
        "wikibase-terms": "אין אַנדערע שפראַכן",
-       "wikibase-sitelinks-empty": "קיין בלאט איז נאך נישט פארלינקט מיט דעם 
דאטנאביעקט.",
+       "wikibase-sitelinks-empty": "קיין בלאט איז נישט פארלינקט מיט דעם 
דאטנאביעקט.",
        "wikibase-sitelinks-input-help-message": "שטעלן א לינק צו א בלאט 
פֿארבונדן מיט דעם דאטנאביעקט.",
        "wikibase-sitelinks-special": "אנדערע וועבזייטלעך",
        "wikibase-remove": "אַראָפּנעמען",
diff --git a/extensions/Wikibase/repo/i18n/zh-hans.json 
b/extensions/Wikibase/repo/i18n/zh-hans.json
index db1accf..f3ec262 100644
--- a/extensions/Wikibase/repo/i18n/zh-hans.json
+++ b/extensions/Wikibase/repo/i18n/zh-hans.json
@@ -391,7 +391,7 @@
        "wikibase-listdatatypes-string-head": "字符串",
        "wikibase-listdatatypes-string-body": 
"符号的原始数据字段。典型的用途是与读者语言无关之书写方式的标识符。\n*文字——特定语言变体字串的明确的数值",
        "wikibase-listdatatypes-time-head": "时间",
-       "wikibase-listdatatypes-time-body": 
"时间值的字面数据字段。含精度和边界给定一个的时间。时间总是保存为外推格里历格式,但在解析和排版时可用其他格式。\n* 时刻(time) – 
时间点的明确值,表现为符合ISO 8601标准的时间戳,例如+2013-01-01T00:00:00Z。The year is always signed 
and padded to have between 1 and 16 digits.\n* 时区 – 
明确的有符号整数。时区信息是以分为单位以国际标准时间(UTC)为基准的一个偏移量。\n* 早 – 表示它发生时可能晚于给定时间多少单位。单位由精度给定。\n* 
晚 – 表示它发生时可能早于给定时间多少单位。单位由精度给定。\n* 精度 – 编码为短整数的明确值。数字含义如下:0 - 十亿年,1 - 亿年,...,6 
- 千年,7 - 世纪,8 - 十年,9 - 年,10 - 月,11 - 天,12 - 小时,13 - 分,14 - 秒。\n* 日历模型 – 
由一个URI给定的明确值。它可以确定用于显示时间值的日历模型。",
+       "wikibase-listdatatypes-time-body": 
"时间值的字面数据字段。给出一个拥有一定精度和边界的时间。时间总是以预先计算的公历格式保存在内部,但在解析和排版时可使用其他格式。\n* 时刻(time) – 
时间点的确定值,表现为类似ISO 8601标准的时间戳,例如+2013-01-01T00:00:00Z。年份总是用1-16位数来标记并保存。\n* 
时区(timezone) – 有符号整数确定值。时区信息是以分为单位以国际标准时间(UTC)为基准的一个偏移量。\n* 早于(before) – 
表示它发生时可能晚于给定时间多少单位的整数确定值。单位由精度给定。\n* 晚于(after) – 
表示它发生时可能早于给定时间多少单位的整数确定值。单位由精度给定。\n* 精度(precision) – 编码为短整数的确定值。数字含义如下:0 - 
十亿年,1 - 亿年,...,6 - 千年,7 - 世纪,8 - 十年,9 - 年,10 - 月,11 - 天,12 - 小时,13 - 分,14 - 
秒。\n* 日历模型(calendarmodel) – 由一个URI给定的确定值。它可以用于识别应使用何种日历模型来显示该时间值。",
        "wikibase-listdatatypes-url-head": "URL",
        "wikibase-listdatatypes-url-body": 
"一个URL的文本数据字段。协议中限制使用的URL支持以外部链接的方式写在维基文本中。",
        "wikibase-concept-uri": "概念URI",
diff --git a/extensions/Wikibase/repo/includes/CopyrightMessageBuilder.php 
b/extensions/Wikibase/repo/includes/CopyrightMessageBuilder.php
index a7e3b03..89e79f7 100644
--- a/extensions/Wikibase/repo/includes/CopyrightMessageBuilder.php
+++ b/extensions/Wikibase/repo/includes/CopyrightMessageBuilder.php
@@ -20,11 +20,12 @@
         * @param string $rightsUrl
         * @param string $rightsText
         * @param Language $language
+        * @param string $saveMessageKey defaults to 'wikibase-save'
         *
         * @return Message
         */
-       public function build( $rightsUrl, $rightsText, Language $language ) {
-               $renderedSaveMessage = $this->renderSaveMessage( $language );
+       public function build( $rightsUrl, $rightsText, Language $language, 
$saveMessageKey = 'wikibase-save' ) {
+               $renderedSaveMessage = $this->renderSaveMessage( $language, 
$saveMessageKey );
                $renderedCopyrightPageMessage = 
$this->renderCopyrightPageMessage();
 
                $rightsWarningMessage = new Message(
@@ -37,11 +38,12 @@
 
        /**
         * @param Language $language
+        * @param string $saveMessageKey
         *
         * @return string
         */
-       private function renderSaveMessage( Language $language ) {
-               $saveMessage = new Message( 'wikibase-save' );
+       private function renderSaveMessage( Language $language, $saveMessageKey 
) {
+               $saveMessage = new Message( $saveMessageKey );
                return $saveMessage->inLanguage( $language )->text();
        }
 
diff --git 
a/extensions/Wikibase/repo/includes/Hooks/OutputPageJsConfigHookHandler.php 
b/extensions/Wikibase/repo/includes/Hooks/OutputPageJsConfigHookHandler.php
index 34a8f7b..618989b 100644
--- a/extensions/Wikibase/repo/includes/Hooks/OutputPageJsConfigHookHandler.php
+++ b/extensions/Wikibase/repo/includes/Hooks/OutputPageJsConfigHookHandler.php
@@ -4,7 +4,7 @@
 
 use OutputPage;
 use Wikibase\OutputPageJsConfigBuilder;
-use Wikibase\Settings;
+use Wikibase\SettingsArray;
 
 /**
  * @since 0.5
@@ -15,7 +15,7 @@
 class OutputPageJsConfigHookHandler {
 
        /**
-        * @var Settings
+        * @var SettingsArray
         */
        protected $settings;
 
@@ -25,9 +25,11 @@
        protected $outputPageConfigBuilder;
 
        /**
-        * @param Settings $settings
+        * @todo: don't pass around SettingsArray, just take specific 
constructor params.
+        *
+        * @param SettingsArray $settings
         */
-       public function __construct( Settings $settings ) {
+       public function __construct( SettingsArray $settings ) {
                $this->settings = $settings;
                $this->outputPageConfigBuilder = new 
OutputPageJsConfigBuilder();
        }
@@ -49,9 +51,9 @@
         * @return array
         */
        private function buildConfigVars( OutputPage $out, $isExperimental ) {
-               $rightsUrl = $this->settings->get( 'dataRightsUrl' );
-               $rightsText = $this->settings->get( 'dataRightsText' );
-               $badgeItems = $this->settings->get( 'badgeItems' );
+               $rightsUrl = $this->settings->getSetting( 'dataRightsUrl' );
+               $rightsText = $this->settings->getSetting( 'dataRightsText' );
+               $badgeItems = $this->settings->getSetting( 'badgeItems' );
 
                $configVars = $this->outputPageConfigBuilder->build(
                        $out,
diff --git a/extensions/Wikibase/repo/includes/api/SearchEntities.php 
b/extensions/Wikibase/repo/includes/api/SearchEntities.php
index b774947..1dedced 100644
--- a/extensions/Wikibase/repo/includes/api/SearchEntities.php
+++ b/extensions/Wikibase/repo/includes/api/SearchEntities.php
@@ -7,9 +7,11 @@
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\EntityIdParser;
 use Wikibase\DataModel\Entity\EntityIdParsingException;
+use Wikibase\Lib\ContentLanguages;
 use Wikibase\Lib\Store\EntityTitleLookup;
 use Wikibase\Repo\WikibaseRepo;
 use Wikibase\Term;
+use Wikibase\TermIndex;
 
 /**
  * API module to search for Wikibase entities.
@@ -42,6 +44,21 @@
        private $idParser;
 
        /**
+        * @var TermIndex
+        */
+       private $termIndex;
+
+       /**
+        * @var ContentLanguages
+        */
+       private $termsLanguages;
+
+       /**
+        * @var string[]
+        */
+       private $entityTypes;
+
+       /**
         * @param ApiMain $mainModule
         * @param string $moduleName
         * @param string $modulePrefix
@@ -51,9 +68,37 @@
        public function __construct( ApiMain $mainModule, $moduleName, 
$modulePrefix = '' ) {
                parent::__construct( $mainModule, $moduleName, $modulePrefix );
 
-               //TODO: provide a mechanism to override the services
-               $this->titleLookup = 
WikibaseRepo::getDefaultInstance()->getEntityTitleLookup();
-               $this->idParser = 
WikibaseRepo::getDefaultInstance()->getEntityIdParser();
+               $repo = WikibaseRepo::getDefaultInstance();
+               $this->setServices(
+                       $repo->getStore()->getTermIndex(),
+                       $repo->getEntityTitleLookup(),
+                       $repo->getEntityIdParser(),
+                       $repo->getEntityFactory()->getEntityTypes(),
+                       $repo->getTermsLanguages()
+               );
+       }
+
+       /**
+        * Override services, for use for testing.
+        *
+        * @param TermIndex $termIndex
+        * @param EntityTitleLookup $titleLookup
+        * @param EntityIdParser $idParser
+        * @param array $entityTypes
+        * @param ContentLanguages $termLanguages
+        */
+       public function setServices(
+               TermIndex $termIndex,
+               EntityTitleLookup $titleLookup,
+               EntityIdParser $idParser,
+               array $entityTypes,
+               ContentLanguages $termLanguages
+       ) {
+               $this->termIndex = $termIndex;
+               $this->titleLookup = $titleLookup;
+               $this->idParser = $idParser;
+               $this->entityTypes = $entityTypes;
+               $this->termsLanguages = $termLanguages;
        }
 
        /**
@@ -69,17 +114,17 @@
         * @return EntityId[]
         */
        private function searchEntities( $term, $entityType, $language, $limit, 
$prefixSearch ) {
-               return 
WikibaseRepo::getDefaultInstance()->getStore()->getTermIndex()->getMatchingIDs(
+               return $this->termIndex->getMatchingIDs(
                        array(
                                new Term( array(
-                                       'termType'              => 
Term::TYPE_LABEL,
-                                       'termLanguage'  => $language,
-                                       'termText'              => $term
+                               'termType'              => Term::TYPE_LABEL,
+                               'termLanguage'  => $language,
+                               'termText'              => $term
                                ) ),
                                new Term( array(
-                                       'termType'              => 
Term::TYPE_ALIAS,
-                                       'termLanguage'  => $language,
-                                       'termText'              => $term
+                               'termType'              => Term::TYPE_ALIAS,
+                               'termLanguage'  => $language,
+                               'termText'              => $term
                                ) )
                        ),
                        $entityType,
@@ -204,7 +249,7 @@
                }
 
                // Find all the remaining terms for the given entities
-               $terms = 
WikibaseRepo::getDefaultInstance()->getStore()->getTermIndex()->getTermsOfEntities(
+               $terms = $this->termIndex->getTermsOfEntities(
                        $entityIds, null, array( $languageCode ) );
                // TODO: This needs to be rethought when a different search 
engine is used
                $aliasPattern = '/^' . preg_quote( $search, '/' ) . '/i';
@@ -305,7 +350,6 @@
         * @see ApiBase::getAllowedParams
         */
        protected function getAllowedParams() {
-               $entityFactory = 
WikibaseRepo::getDefaultInstance()->getEntityFactory();
 
                return array(
                        'search' => array(
@@ -313,11 +357,11 @@
                                ApiBase::PARAM_REQUIRED => true,
                        ),
                        'language' => array(
-                               ApiBase::PARAM_TYPE => 
WikibaseRepo::getDefaultInstance()->getTermsLanguages()->getLanguages(),
+                               ApiBase::PARAM_TYPE => 
$this->termsLanguages->getLanguages(),
                                ApiBase::PARAM_REQUIRED => true,
                        ),
                        'type' => array(
-                               ApiBase::PARAM_TYPE => 
$entityFactory->getEntityTypes(),
+                               ApiBase::PARAM_TYPE => $this->entityTypes,
                                ApiBase::PARAM_DFLT => 'item',
                        ),
                        'limit' => array(
diff --git a/extensions/Wikibase/repo/includes/specials/SpecialModifyEntity.php 
b/extensions/Wikibase/repo/includes/specials/SpecialModifyEntity.php
index 174d83e..e5a53db 100644
--- a/extensions/Wikibase/repo/includes/specials/SpecialModifyEntity.php
+++ b/extensions/Wikibase/repo/includes/specials/SpecialModifyEntity.php
@@ -138,7 +138,7 @@
                        $this->rightsText
                );
 
-               $html = $copyrightView->getHtml( $this->getLanguage() );
+               $html = $copyrightView->getHtml( $this->getLanguage(), 
'wikibase-' . strtolower( $this->getName() ) . '-submit' );
                $this->getOutput()->addHTML( $html );
        }
 
diff --git a/extensions/Wikibase/repo/includes/specials/SpecialNewEntity.php 
b/extensions/Wikibase/repo/includes/specials/SpecialNewEntity.php
index 615068a..98a7d5a 100644
--- a/extensions/Wikibase/repo/includes/specials/SpecialNewEntity.php
+++ b/extensions/Wikibase/repo/includes/specials/SpecialNewEntity.php
@@ -318,7 +318,7 @@
                        $this->rightsText
                );
 
-               $html = $copyrightView->getHtml( $this->getLanguage() );
+               $html = $copyrightView->getHtml( $this->getLanguage(), 
'wikibase-newentity-submit' );
 
                $this->getOutput()->addHTML( $html );
        }
diff --git 
a/extensions/Wikibase/repo/includes/specials/SpecialPageCopyrightView.php 
b/extensions/Wikibase/repo/includes/specials/SpecialPageCopyrightView.php
index 08b6c41..d696a91 100644
--- a/extensions/Wikibase/repo/includes/specials/SpecialPageCopyrightView.php
+++ b/extensions/Wikibase/repo/includes/specials/SpecialPageCopyrightView.php
@@ -43,11 +43,12 @@
 
        /**
         * @param Language $language
+        * @param string $saveMessageKey
         *
         * @return string
         */
-       public function getHtml( Language $language ) {
-               $message = $this->getCopyrightMessage( $language );
+       public function getHtml( Language $language, $saveMessageKey ) {
+               $message = $this->getCopyrightMessage( $language, 
$saveMessageKey );
                $renderedMessage = $this->render( $message, $language );
 
                return $this->wrapMessage( $renderedMessage );
@@ -55,14 +56,16 @@
 
        /**
         * @param Language $language
+        * @param string $saveMessageKey
         *
         * @return Message
         */
-       private function getCopyrightMessage( Language $language ) {
+       private function getCopyrightMessage( Language $language, 
$saveMessageKey ) {
                $copyrightMessage = $this->messageBuilder->build(
                        $this->rightsUrl,
                        $this->rightsText,
-                       $language
+                       $language,
+                       $saveMessageKey
                );
 
                return $copyrightMessage;
diff --git 
a/extensions/Wikibase/repo/includes/store/sql/EntityPerPageBuilder.php 
b/extensions/Wikibase/repo/includes/store/sql/EntityPerPageBuilder.php
index b610299..a65b26c 100644
--- a/extensions/Wikibase/repo/includes/store/sql/EntityPerPageBuilder.php
+++ b/extensions/Wikibase/repo/includes/store/sql/EntityPerPageBuilder.php
@@ -130,7 +130,7 @@
                $this->report( 'Start rebuild...' );
 
                while ( $numPages > 0 ) {
-                       $this->waitForSlaves( $dbw );
+                       wfWaitForSlaves();
 
                        $pages = $dbw->select(
                                array( 'page', 'redirect', 'wb_entity_per_page' 
),
@@ -246,29 +246,6 @@
                        $this->entityPerPageTable->addRedirectPage( $entityId, 
$pageId, $targetId );
                } else {
                        $this->entityPerPageTable->addEntityPage( $entityId, 
$pageId );
-               }
-       }
-
-       /**
-        * Wait for slaves (quietly)
-        *
-        * @todo: this should be in the Database class.
-        * @todo: thresholds should be configurable
-        *
-        * @author Tim Starling (stolen from recompressTracked.php)
-        */
-       protected function waitForSlaves() {
-               $lb = wfGetLB(); //TODO: allow foreign DB, get from $this->table
-
-               while ( true ) {
-                       list( , $maxLag ) = $lb->getMaxLag();
-                       if ( $maxLag < 2 ) {
-                               break;
-                       }
-
-                       $this->report( "Slaves are lagged by $maxLag seconds, 
sleeping..." );
-                       sleep( 5 );
-                       $this->report( "Resuming..." );
                }
        }
 
diff --git 
a/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php 
b/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
index acdf924..6fa57f8 100644
--- a/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
+++ b/extensions/Wikibase/repo/includes/store/sql/ItemsPerSiteBuilder.php
@@ -108,32 +108,9 @@
                        $c++;
                }
                // Wait for the slaves (just in case we eg. hit a range of ids 
which need a lot of writes)
-               $this->waitForSlaves();
+               wfWaitForSlaves();
 
                return $c;
-       }
-
-       /**
-        * Wait for slaves (quietly)
-        *
-        * @todo: this should be in the Database class.
-        * @todo: thresholds should be configurable
-        *
-        * @author Tim Starling (stolen from recompressTracked.php)
-        */
-       protected function waitForSlaves() {
-               $lb = wfGetLB(); //TODO: allow foreign DB, get from $this->table
-
-               while ( true ) {
-                       list( , $maxLag ) = $lb->getMaxLag();
-                       if ( $maxLag < 2 ) {
-                               break;
-                       }
-
-                       $this->report( "Slaves are lagged by $maxLag seconds, 
sleeping..." );
-                       sleep( 5 );
-                       $this->report( "Resuming..." );
-               }
        }
 
        /**
diff --git 
a/extensions/Wikibase/repo/includes/store/sql/PropertyInfoTableBuilder.php 
b/extensions/Wikibase/repo/includes/store/sql/PropertyInfoTableBuilder.php
index 07d15eb..9ded71e 100644
--- a/extensions/Wikibase/repo/includes/store/sql/PropertyInfoTableBuilder.php
+++ b/extensions/Wikibase/repo/includes/store/sql/PropertyInfoTableBuilder.php
@@ -174,7 +174,7 @@
                while ( true ) {
                        // Make sure we are not running too far ahead of the 
slaves,
                        // as that would cause the site to be rendered read 
only.
-                       $this->waitForSlaves( $dbw );
+                       wfWaitForSlaves();
 
                        if ( $this->useTransactions ) {
                                $dbw->begin();
@@ -229,29 +229,6 @@
                }
 
                return $total;
-       }
-
-       /**
-        * Wait for slaves (quietly)
-        *
-        * @todo: this should be in the Database class.
-        * @todo: thresholds should be configurable
-        *
-        * @author Tim Starling (stolen from recompressTracked.php)
-        */
-       private function waitForSlaves() {
-               $lb = wfGetLB(); //TODO: allow foreign DB, get from 
$this->propertyInfoTable
-
-               while ( true ) {
-                       list( , $maxLag ) = $lb->getMaxLag();
-                       if ( $maxLag < 2 ) {
-                               break;
-                       }
-
-                       $this->reportMessage( "Slaves are lagged by $maxLag 
seconds, sleeping..." );
-                       sleep( 5 );
-                       $this->reportMessage( "Resuming..." );
-               }
        }
 
        /**
diff --git 
a/extensions/Wikibase/repo/includes/store/sql/TermSearchKeyBuilder.php 
b/extensions/Wikibase/repo/includes/store/sql/TermSearchKeyBuilder.php
index d20de18..69d28a2 100644
--- a/extensions/Wikibase/repo/includes/store/sql/TermSearchKeyBuilder.php
+++ b/extensions/Wikibase/repo/includes/store/sql/TermSearchKeyBuilder.php
@@ -129,7 +129,7 @@
                while ( true ) {
                        // Make sure we are not running too far ahead of the 
slaves,
                        // as that would cause the site to be rendered read 
only.
-                       $this->waitForSlaves( $dbw );
+                       wfWaitForSlaves();
 
                        $dbw->begin();
 
@@ -180,29 +180,6 @@
                }
 
                return $total;
-       }
-
-       /**
-        * Wait for slaves (quietly)
-        *
-        * @todo: this should be in the Database class.
-        * @todo: thresholds should be configurable
-        *
-        * @author Tim Starling (stolen from recompressTracked.php)
-        */
-       protected function waitForSlaves() {
-               $lb = wfGetLB(); //TODO: allow foreign DB, get from $this->table
-
-               while ( true ) {
-                       list( , $maxLag ) = $lb->getMaxLag();
-                       if ( $maxLag < 2 ) {
-                               break;
-                       }
-
-                       $this->report( "Slaves are lagged by $maxLag seconds, 
sleeping..." );
-                       sleep( 5 );
-                       $this->report( "Resuming..." );
-               }
        }
 
        /**
diff --git a/extensions/Wikibase/repo/maintenance/dispatchChanges.php 
b/extensions/Wikibase/repo/maintenance/dispatchChanges.php
index 9e69ffb..514a8c3 100644
--- a/extensions/Wikibase/repo/maintenance/dispatchChanges.php
+++ b/extensions/Wikibase/repo/maintenance/dispatchChanges.php
@@ -10,6 +10,7 @@
 use Wikibase\Lib\Store\SiteLinkTable;
 use Wikibase\Repo\ChangeDispatcher;
 use Wikibase\Repo\Notifications\JobQueueChangeNotificationSender;
+use Wikibase\Repo\WikibaseRepo;
 use Wikibase\Store\DualSubscriptionLookup;
 use Wikibase\Store\SiteLinkSubscriptionLookup;
 use Wikibase\Store\Sql\SqlChangeDispatchCoordinator;
@@ -61,15 +62,20 @@
 
        /**
         * Initializes members from command line options and configuration 
settings.
+        *
+        * @param SettingsArray $settings
+        *
+        * @return ChangeDispatcher
+        * @throws MWException
         */
-       private function newChangeDispatcher() {
+       private function newChangeDispatcher( SettingsArray $settings ) {
                $changesTable = new ChangesTable(); //TODO: allow injection of 
a mock instance for testing
 
-               $repoDB = Settings::get( 'changesDatabase' );
-               $clientWikis = Settings::get( 'localClientDatabases' );
-               $batchChunkFactor = Settings::get( 'dispatchBatchChunkFactor' );
-               $batchCacheFactor = Settings::get( 'dispatchBatchCacheFactor' );
-               $subscriptionLookupMode = Settings::get( 
'subscriptionLookupMode' );
+               $repoDB = $settings->getSetting( 'changesDatabase' );
+               $clientWikis = $settings->getSetting( 'localClientDatabases' );
+               $batchChunkFactor = $settings->getSetting( 
'dispatchBatchChunkFactor' );
+               $batchCacheFactor = $settings->getSetting( 
'dispatchBatchCacheFactor' );
+               $subscriptionLookupMode = $settings->getSetting( 
'subscriptionLookupMode' );
 
                $batchSize = intval( $this->getOption( 'batch-size', 1000 ) );
                $dispatchInterval = intval( $this->getOption( 
'dispatch-interval', 60 ) );
@@ -147,7 +153,8 @@
                $maxPasses = intval( $this->getOption( 'max-passes', $maxTime < 
PHP_INT_MAX ? PHP_INT_MAX : 1 ) );
                $delay = intval( $this->getOption( 'idle-delay', 10 ) );
 
-               $dispatcher = $this->newChangeDispatcher();
+               $settings = WikibaseRepo::getDefaultInstance()->getSettings();
+               $dispatcher = $this->newChangeDispatcher( $settings );
 
                $dispatcher->getDispatchCoordinator()->initState();
 
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageJsConfigHookHandlerTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageJsConfigHookHandlerTest.php
index d8be5ad..ae3b47b 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageJsConfigHookHandlerTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/Hooks/OutputPageJsConfigHookHandlerTest.php
@@ -70,6 +70,7 @@
                $settings = new Settings();
                $settings->setSetting( 'dataRightsUrl', 
'https://creativecommons.org' );
                $settings->setSetting( 'dataRightsText', 'CC-0' );
+               $settings->setSetting( 'badgeItems', array() );
 
                return $settings;
        }
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/api/SearchEntitiesTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/api/SearchEntitiesTest.php
index 46811de..079a87f 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/api/SearchEntitiesTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/api/SearchEntitiesTest.php
@@ -2,11 +2,24 @@
 
 namespace Wikibase\Test\Api;
 
+use ApiMain;
+use FauxRequest;
+use PHPUnit_Framework_TestCase;
+use RequestContext;
+use Title;
+use Wikibase\DataModel\Entity\EntityId;
+use Wikibase\Lib\ContentLanguages;
+use Wikibase\Lib\Store\EntityTitleLookup;
+use Wikibase\Term;
+use Wikibase\TermIndex;
+use Wikibase\Api\SearchEntities;
+use Wikibase\DataModel\Entity\BasicEntityIdParser;
+use Wikibase\Test\MockTermIndex;
+
 /**
  * @covers Wikibase\Api\SearchEntities
  *
  * @group API
- * @group Database
  * @group Wikibase
  * @group WikibaseAPI
  * @group WikibaseRepo
@@ -15,20 +28,167 @@
  *
  * @licence GNU GPL v2+
  * @author Adam Shorland
+ * @author Daniel Kinzler
  */
-class SearchEntitiesTest extends WikibaseApiTestCase {
+class SearchEntitiesTest extends PHPUnit_Framework_TestCase {
 
-       private static $hasSetup;
+       private static $terms = array(
+               'Berlin' => array(
+                       'id' => 'Q64',
+                       'labels' => array(
+                               array( 'language' => 'en', 'value' => 'Berlin' 
),
+                               array( 'language' => 'de', 'value' => 'Berlin' 
),
+                       ),
+                       'aliases' => array(
+                               array( array( 'language' => 'de', 'value' => 
'Dickes B' ) ),
+                               array( array( 'language' => 'en', 'value' => 
'Dickes B' ) ),
+                       ),
+                       'descriptions' => array(
+                               array( 'language' => 'en', 'value' => 'Capital 
city and a federated state of the Federal Republic of Germany.' ),
+                               array( 'language' => 'de', 'value' => 
'Bundeshauptstadt und Regierungssitz der Bundesrepublik Deutschland.' ),
+                       ),
+               ),
+               'Bern' => array(
+                       'id' => 'Q45',
+                       'labels' => array(
+                               array( 'language' => 'en', 'value' => 'Bern' ),
+                               array( 'language' => 'de', 'value' => 'Bern' ),
+                               array( 'language' => 'fr', 'value' => 'Berne' ),
+                               array( 'language' => 'it', 'value' => 'Berna' ),
+                       ),
+                       'aliases' => array(
+                       ),
+                       'descriptions' => array(
+                               array( 'language' => 'de', 'value' => 'Stadt in 
der Schweiz.' ),
+                       ),
+               ),
+               'Guangzhou' => array(
+                       'id' => 'Q231',
+                       'labels' => array(
+                               array( 'language' => 'en', 'value' => 
'Guangzhou' ),
+                               array( 'language' => 'yue', 'value' => '廣州' ),
+                               array( 'language' => 'zh-cn', 'value' => '广州市' 
),
+                       ),
+                       'aliases' => array(
+                       ),
+                       'descriptions' => array(
+                               array( 'language' => 'en', 'value' => 'Capital 
of Guangdong.' ),
+                               array( 'language' => 'zh-hk', 'value' => 
'廣東的省會。' ),
+                       ),
+               ),
+       );
 
-       protected function setUp() {
-               parent::setUp();
+       private function getEntityId( $handle ) {
+               $parser = new BasicEntityIdParser();
+               return $parser->parse( self::$terms[$handle]['id'] );
+       }
 
-               if( !isset( self::$hasSetup ) ) {
-                       $this->initTestEntities( array( 'StringProp', 'Berlin', 
'London', 'Oslo', 'Episkopi',
-                               'Leipzig', 'Guangzhou', 'Osaka' )
-                       );
+       private function getEntityData( $handle ) {
+               return self::$terms[$handle];
+       }
+
+       /**
+        * @param array $params
+        *
+        * @return ApiMain
+        */
+       private function getApiMain( array $params ) {
+               $context = new RequestContext();
+               $context->setRequest( new FauxRequest( $params, true ) );
+
+               $main = new ApiMain( $context );
+               return $main;
+       }
+
+       /**
+        * @return EntityTitleLookup
+        */
+       private function getTitleLookup() {
+               $titleLookup = $this->getMock( 
'Wikibase\Lib\Store\EntityTitleLookup' );
+               $titleLookup->expects( $this->any() )->method( 'getTitleForId' )
+                       ->will( $this->returnCallback( function( EntityId $id ) 
{
+                               $title = Title::makeTitle( NS_MAIN, 
$id->getEntityType() . ':' . $id->getSerialization() );
+                               $title->resetArticleID( $id->getNumericId() );
+                               return $title;
+                       } ) );
+
+               return $titleLookup;
+       }
+
+       /**
+        * @return ContentLanguages
+        */
+       private function getContentLanguages() {
+               $titleLookup = $this->getMock( 'Wikibase\Lib\ContentLanguages' 
);
+               $titleLookup->expects( $this->any() )->method( 'getLanguages' )
+                       ->will( $this->returnValue( array( 'de', 'de-ch', 'en', 
'ii', 'nn', 'ru', 'zh-cn' ) ) );
+
+               return $titleLookup;
+       }
+
+       /**
+        * @return TermIndex
+        */
+       private function getTermIndex() {
+               $idParser = new BasicEntityIdParser();
+               $termObjects = array();
+               foreach ( self::$terms as $entity ) {
+                       $id = $idParser->parse( $entity['id'] );
+
+                       foreach ( $entity['labels'] as $row ) {
+                               $termObjects[] = $this->newTermFromDataRow( 
$id, Term::TYPE_LABEL, $row );
+                       }
+
+                       foreach ( $entity['descriptions'] as $row ) {
+                               $termObjects[] = $this->newTermFromDataRow( 
$id, Term::TYPE_DESCRIPTION, $row );
+                       }
+
+                       foreach ( $entity['aliases'] as $rows ) {
+                               foreach ( $rows as $row ) {
+                                       $termObjects[] = 
$this->newTermFromDataRow( $id, Term::TYPE_ALIAS, $row );
+                               }
+                       }
                }
-               self::$hasSetup = true;
+
+               $termIndex = new MockTermIndex( $termObjects );
+
+               return $termIndex;
+       }
+
+       private function newTermFromDataRow( EntityId $entityId, $type, $row ) {
+               return new Term( array(
+                       'termType' => $type,
+                       'termLanguage' => $row['language'],
+                       'termText' => $row['value'],
+                       'entityType' => $entityId->getEntityType(),
+                       'entityId' => $entityId->getNumericId()
+               ) );
+       }
+
+       /**
+        * @param array $params
+        *
+        * @return array[]
+        */
+       private function callApiModule( array $params ) {
+               $module = new SearchEntities(
+                       $this->getApiMain( $params ),
+                       'wbsearchentities'
+               );
+
+               $module->setServices(
+                       $this->getTermIndex(),
+                       $this->getTitleLookup(),
+                       new BasicEntityIdParser(),
+                       array( 'item', 'property' ),
+                       $this->getContentLanguages()
+
+               );
+
+               $module->execute();
+
+               $result = $module->getResult();
+               return $result->getData();
        }
 
        public function provideData() {
@@ -36,14 +196,13 @@
 
                //Search via full Labels
                $testCases[] = array( array( 'search' => 'berlin', 'language' 
=> 'en' ), array( 'handle' => 'Berlin' ) );
-               $testCases[] = array( array( 'search' => 'LoNdOn', 'language' 
=> 'en' ), array( 'handle' => 'London' ) );
-               $testCases[] = array( array( 'search' => 'OSLO', 'language' => 
'en' ), array( 'handle' => 'Oslo' ) );
+               $testCases[] = array( array( 'search' => 'bERliN', 'language' 
=> 'en' ), array( 'handle' => 'Berlin' ) );
+               $testCases[] = array( array( 'search' => 'BERLIN', 'language' 
=> 'en' ), array( 'handle' => 'Berlin' ) );
                $testCases[] = array( array( 'search' => '广州市', 'language' => 
'zh-cn' ), array( 'handle' => 'Guangzhou' ) );
 
                //Search via partial Labels
-               $testCases[] = array( array( 'search' => 'BER', 'language' => 
'nn' ), array( 'handle' => 'Berlin' ) );
-               $testCases[] = array( array( 'search' => 'Episkop', 'language' 
=> 'de' ), array( 'handle' => 'Episkopi' ) );
-               $testCases[] = array( array( 'search' => 'L', 'language' => 
'de' ), array( 'handle' => 'Leipzig' ) );
+               $testCases[] = array( array( 'search' => 'BER', 'language' => 
'de' ), array( 'handle' => 'Berlin' ) );
+               $testCases[] = array( array( 'search' => '广', 'language' => 
'zh-cn' ), array( 'handle' => 'Guangzhou' ) );
 
                return $testCases;
        }
@@ -54,7 +213,7 @@
        public function testSearchEntities( $params, $expected ) {
                $params['action'] = 'wbsearchentities';
 
-               list( $result,, ) = $this->doApiRequest( $params );
+               $result = $this->callApiModule( $params );
 
                $this->assertResultLooksGood( $result );
                $this->assertApiResultHasExpected( $result['search'], $params, 
$expected );
@@ -63,31 +222,30 @@
        public function testSearchExactMatch() {
                $params = array(
                        'action' => 'wbsearchentities',
-                       'search' => EntityTestHelper::getId( 'Berlin' ),
+                       'search' => $this->getEntityId( 'Berlin' ),
                        'language' => 'en'
                );
 
                $expected = array( 'handle' => 'Berlin' );
 
-               list( $result,, ) = $this->doApiRequest( $params );
+               $result = $this->callApiModule( $params );
                $this->assertApiResultHasExpected( $result['search'], $params, 
$expected );
        }
 
        public function testSearchContinue() {
                $params = array(
                        'action' => 'wbsearchentities',
-                       'search' => 'O',
-                       'language' => 'en',
+                       'search' => 'B',
+                       'language' => 'de',
                        'limit' => 1
                );
 
-               list( $result,, ) = $this->doApiRequest( $params );
+               $result = $this->callApiModule( $params );
 
                $this->assertArrayHasKey( 'search-continue', $result );
        }
 
        private function assertResultLooksGood( $result ) {
-               $this->assertResultSuccess( $result );
                $this->assertArrayHasKey( 'searchinfo', $result );
                $this->assertArrayHasKey( 'search', $result['searchinfo'] );
                $this->assertArrayHasKey( 'search', $result );
@@ -103,8 +261,8 @@
        private function assertApiResultHasExpected( $searchResults, $params, 
$expected ) {
                $foundResult = 0;
 
-               $expectedId = EntityTestHelper::getId( $expected['handle'] );
-               $expectedData = EntityTestHelper::getEntityData( 
$expected['handle'] );
+               $expectedId = $this->getEntityId( $expected['handle'] 
)->getSerialization();
+               $expectedData = $this->getEntityData( $expected['handle'] );
 
                foreach( $searchResults as $searchResult ) {
                        $assertFound = $this->assertSearchResultHasExpected( 
$searchResult, $params, $expectedId, $expectedData );
@@ -145,4 +303,5 @@
                        }
                }
        }
+
 }
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialPageCopyrightViewTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialPageCopyrightViewTest.php
index ef49af9..8369cf2 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialPageCopyrightViewTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/specials/SpecialPageCopyrightViewTest.php
@@ -28,7 +28,7 @@
                        $this->getCopyrightMessageBuilder( $message ), 'x', 'y'
                );
 
-               $html = $specialPageCopyrightView->getHtml( $lang );
+               $html = $specialPageCopyrightView->getHtml( $lang, 
'wikibase-submit' );
                $this->assertEquals( $expected, $html );
        }
 
@@ -46,12 +46,12 @@
        public function getHtmlProvider() {
                $message = new Message(
                        'wikibase-shortcopyrightwarning',
-                       array( 'wikibase-save', 'copyrightpage', 
'copyrightlink' )
+                       array( 'wikibase-submit', 'copyrightpage', 
'copyrightlink' )
                );
 
                return array(
                        array(
-                               '<div>(wikibase-shortcopyrightwarning: 
wikibase-save, copyrightpage, copyrightlink)</div>',
+                               '<div>(wikibase-shortcopyrightwarning: 
wikibase-submit, copyrightpage, copyrightlink)</div>',
                                $message,
                                'qqx'
                        )
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 34e7b52..3f55dd8 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1199,12 +1199,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "79b17f8347fc266df8b2830daccc2115d9e060f3"
+            "reference": "dbcaabd04ce8c8706aa4ffc839e79cab297401d2"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/79b17f8347fc266df8b2830daccc2115d9e060f3";,
-            "reference": "79b17f8347fc266df8b2830daccc2115d9e060f3",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/dbcaabd04ce8c8706aa4ffc839e79cab297401d2";,
+            "reference": "dbcaabd04ce8c8706aa4ffc839e79cab297401d2",
             "shasum": ""
         },
         "require": {
@@ -1231,7 +1231,7 @@
         "conflict": {
             "mediawiki/mediawiki": "<1.23"
         },
-        "time": "2015-04-10 14:27:12",
+        "time": "2015-04-13 20:37:55",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0e9b3630cce37db373cb2629bb524b548534ada0
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