jenkins-bot has submitted this change and it was merged.

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


New Wikidata Build - 2015-07-23T10:00:01+0000

Change-Id: I9d262aec7a2fb80acb1dd24b01c5a70dd5122007
---
M composer.lock
M extensions/Constraints/WikibaseQualityConstraints.php
M extensions/Wikibase/client/i18n/br.json
M extensions/Wikibase/client/i18n/es.json
M extensions/Wikibase/client/i18n/yue.json
M extensions/Wikibase/client/i18n/zh-hant.json
M 
extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
M extensions/Wikibase/client/tests/phpunit/MockClientStore.php
M extensions/Wikibase/lib/i18n/zh-hant.json
M 
extensions/Wikibase/lib/includes/formatters/FormatterLabelDescriptionLookupFactory.php
M extensions/Wikibase/lib/includes/formatters/WikibaseValueFormatterBuilders.php
M extensions/Wikibase/lib/includes/serializers/LibSerializerFactory.php
M 
extensions/Wikibase/lib/tests/phpunit/formatters/FormatterLabelDescriptionLookupFactoryTest.php
M 
extensions/Wikibase/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
M 
extensions/Wikibase/lib/tests/phpunit/serializers/DataModelSerializationRoundtripTest.php
M extensions/Wikibase/lib/tests/phpunit/serializers/LibSerializerFactoryTest.php
M extensions/Wikibase/repo/i18n/eu.json
M extensions/Wikibase/repo/i18n/hy.json
M extensions/Wikibase/repo/i18n/yi.json
M extensions/Wikibase/repo/i18n/zh-hant.json
M extensions/Wikibase/repo/includes/WikibaseHtmlSnakFormatterFactory.php
M extensions/Wikibase/repo/includes/api/EditEntity.php
M extensions/Wikibase/repo/includes/api/SetClaim.php
M extensions/Wikibase/repo/includes/content/EntityContent.php
M extensions/Wikibase/repo/includes/content/ItemContent.php
M extensions/Wikibase/repo/includes/content/PropertyContent.php
M 
extensions/Wikibase/repo/tests/phpunit/includes/WikibaseHtmlSnakFormatterFactoryTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/api/SetClaimTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/api/SetReferenceTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php
M extensions/Wikibase/repo/tests/phpunit/includes/content/ItemContentTest.php
M 
extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinkview.js
M vendor/composer/installed.json
33 files changed, 175 insertions(+), 259 deletions(-)

Approvals:
  Tobias Gritschacher: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/composer.lock b/composer.lock
index 79b0c6a..e727569 100644
--- a/composer.lock
+++ b/composer.lock
@@ -909,7 +909,7 @@
             "source": {
                 "type": "git",
                 "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints";,
-                "reference": "9f68ef591546a4a900f16128fddccd51acc8e0dd"
+                "reference": "a04eb8fe6f62d5545a0de45440e90b4c99256914"
             },
             "require": {
                 "php": ">=5.3.0",
@@ -954,7 +954,7 @@
             "support": {
                 "issues": 
"https://phabricator.wikimedia.org/project/profile/1202/";
             },
-            "time": "2015-07-13 14:10:20"
+            "time": "2015-07-22 13:21:59"
         },
         {
             "name": "wikibase/data-model",
@@ -1326,12 +1326,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "c1e8527a87f29049f9cb318ac0661b144b3c0cd6"
+                "reference": "86d1a2b39c73bce7928be46f121c4c6ee8effece"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/c1e8527a87f29049f9cb318ac0661b144b3c0cd6";,
-                "reference": "c1e8527a87f29049f9cb318ac0661b144b3c0cd6",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/86d1a2b39c73bce7928be46f121c4c6ee8effece";,
+                "reference": "86d1a2b39c73bce7928be46f121c4c6ee8effece",
                 "shasum": ""
             },
             "require": {
@@ -1399,7 +1399,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2015-07-21 19:49:13"
+            "time": "2015-07-23 01:14:59"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/Constraints/WikibaseQualityConstraints.php 
b/extensions/Constraints/WikibaseQualityConstraints.php
index a4338d7..4a3e0f7 100755
--- a/extensions/Constraints/WikibaseQualityConstraints.php
+++ b/extensions/Constraints/WikibaseQualityConstraints.php
@@ -44,5 +44,4 @@
 
        // Jobs
        $GLOBALS['wgJobClasses']['evaluateConstraintReportJob'] = 
'WikibaseQuality\ConstraintReport\EvaluateConstraintReportJob';
-       $GLOBALS['wgDebugLogGroups']['wbq_evaluation'] = 
'/var/log/mediawiki/wbq_evaluation.log';
 } );
\ No newline at end of file
diff --git a/extensions/Wikibase/client/i18n/br.json 
b/extensions/Wikibase/client/i18n/br.json
index ea7532a..6735f38 100644
--- a/extensions/Wikibase/client/i18n/br.json
+++ b/extensions/Wikibase/client/i18n/br.json
@@ -23,7 +23,7 @@
        "wikibase-rc-hide-wikidata-show": "Diskouez",
        "wikibase-rc-show-wikidata-pref": "Diskouez kemmoù {{WBREPONAME}} er 
c'hemmoù ziwezhañ",
        "wikibase-rc-wikibase-edit-letter": "R",
-       "wikibase-rc-wikibase-edit-title": "Kemmañ {{WBREPONAME}}.",
-       "special-unconnectedpages": "Pajennoù n’int ket liammet gant elfennoù",
+       "wikibase-rc-wikibase-edit-title": "Ur c'hemm eus {{WBREPONAME}}",
+       "unconnectedpages": "Pajennoù n’int ket liammet gant elfennoù",
        "wikibase-otherprojects": "Raktresoù all"
 }
diff --git a/extensions/Wikibase/client/i18n/es.json 
b/extensions/Wikibase/client/i18n/es.json
index 76a5790..74bc693 100644
--- a/extensions/Wikibase/client/i18n/es.json
+++ b/extensions/Wikibase/client/i18n/es.json
@@ -55,7 +55,7 @@
        "wikibase-linkitem-confirmitem-button": "Confirmar",
        "wikibase-linkitem-not-loggedin-title": "Debes iniciar sesión",
        "wikibase-linkitem-not-loggedin": "Debes iniciar sesión en esta wiki y 
en el [$1 repositorio central de datos] para usar esta función.",
-       "wikibase-linkitem-success-link": "Se han enlazado las páginas 
correctamente. Puede encontrar el elemento que contiene los enlaces en el [$1 
depósito central de datos].",
+       "wikibase-linkitem-success-link": "Se han enlazado las páginas 
correctamente. Puedes encontrar el elemento que contiene los enlaces en nuestro 
[$1 depósito central de datos].",
        "wikibase-property-notfound": "No se encontró la propiedad «$1».",
        "wikibase-rc-hide-wikidata": "$1 {{WBREPONAME}}",
        "wikibase-rc-hide-wikidata-hide": "Ocultar",
diff --git a/extensions/Wikibase/client/i18n/yue.json 
b/extensions/Wikibase/client/i18n/yue.json
index c398836..9865b22 100644
--- a/extensions/Wikibase/client/i18n/yue.json
+++ b/extensions/Wikibase/client/i18n/yue.json
@@ -2,12 +2,13 @@
        "@metadata": {
                "authors": [
                        "Waihorace",
-                       "Yueman"
+                       "Yueman",
+                       "CRCHF"
                ]
        },
        "wikibase-client-desc": "Wikibase擴展客戶端",
        "tooltip-t-wikibase": "連到接住資料儲存庫嘅項目",
-       "wikibase-after-page-move": "你仲可以[$1 更新]有關嘅維基數據項目,將佢連結去搬咗之後嘅頁面。",
+       "wikibase-after-page-move": "你重可以[$1 更新]有關嘅維基數據項目,將佢連結去搬咗之後嘅頁。",
        "wikibase-comment-update": "改好{{WBREPONAME}}項目",
        "wikibase-dataitem": "{{WBREPONAME}}項目",
        "wikibase-editlinks": "修改連結",
diff --git a/extensions/Wikibase/client/i18n/zh-hant.json 
b/extensions/Wikibase/client/i18n/zh-hant.json
index 7e1e450..bc3104c 100644
--- a/extensions/Wikibase/client/i18n/zh-hant.json
+++ b/extensions/Wikibase/client/i18n/zh-hant.json
@@ -32,6 +32,7 @@
        "wikibase-dataitem": "{{WBREPONAME}} 項目",
        "wikibase-editlinks": "編輯連結",
        "wikibase-editlinkstitle": "編輯跨語言連結",
+       "wikibase-addlinkstitle": "加入跨語言連結",
        "wikibase-linkitem-addlinks": "新增連結",
        "wikibase-linkitem-alreadylinked": "您欲連結的頁面已與於中央資料儲存庫的 [$1 項目] 
關聯,於本站的連結為 $2。 \n每個項目僅可以關聯網站的一個頁面,請選擇其他要連結頁面。",
        "wikibase-linkitem-close": "關閉對話方塊並重新整理頁面",
@@ -57,8 +58,7 @@
        "wikibase-watchlist-show-changes-pref": "顯示 {{WBREPONAME}} 編輯於您的監視清單中",
        "wikibase-error-serialize-error": "序列化資料失敗",
        "wikibase-error-invalid-entity-id": "系統無法辨識輸入的 ID。請使用一個有效的 ID。",
-       "special-unconnectedpages": "頁面未連結至項目",
-       "wikibase-unconnectedpages-legend": "未連結頁面選項",
+       "unconnectedpages": "頁面未連結至項目",
        "wikibase-unconnectedpages-page": "從此頁面開始顯示結果:",
        "wikibase-unconnectedpages-submit": "執行",
        "wikibase-unconnectedpages-invalid-language": "\"$1\" 不是有效的語言代碼。",
diff --git 
a/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
 
b/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
index b726219..0c625cd 100644
--- 
a/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
+++ 
b/extensions/Wikibase/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
@@ -12,6 +12,7 @@
 use Wikibase\DataAccess\StatementTransclusionInteractor;
 use Wikibase\DataAccess\SnaksFinder;
 use Wikibase\LanguageFallbackChainFactory;
+use Wikibase\Lib\FormatterLabelDescriptionLookupFactory;
 use Wikibase\Lib\OutputFormatSnakFormatterFactory;
 use Wikibase\Lib\SnakFormatter;
 use Wikibase\Lib\Store\EntityLookup;
@@ -198,7 +199,7 @@
                );
 
                $options = new FormatterOptions( array(
-                       'languages' => $languageFallbackChain,
+                       
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN => 
$languageFallbackChain,
                        // ...more options... (?)
                ) );
 
diff --git a/extensions/Wikibase/client/tests/phpunit/MockClientStore.php 
b/extensions/Wikibase/client/tests/phpunit/MockClientStore.php
index a6aaa73..1cef882 100644
--- a/extensions/Wikibase/client/tests/phpunit/MockClientStore.php
+++ b/extensions/Wikibase/client/tests/phpunit/MockClientStore.php
@@ -5,16 +5,10 @@
 use Wikibase\ChangesTable;
 use Wikibase\Client\Usage\NullSubscriptionManager;
 use Wikibase\Client\Usage\NullUsageTracker;
-use Wikibase\Client\Usage\SubscriptionManager;
-use Wikibase\Client\Usage\UsageLookup;
-use Wikibase\Client\Usage\UsageTracker;
 use Wikibase\ClientStore;
-use Wikibase\Lib\Store\EntityLookup;
-use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\Lib\Store\NullEntityPrefetcher;
-use Wikibase\Lib\Store\SiteLinkLookup;
 use Wikibase\PropertyInfoStore;
-use Wikibase\PropertyLabelResolver;
+use Wikibase\Store\EntityIdLookup;
 use Wikibase\TermIndex;
 
 /**
@@ -52,7 +46,7 @@
        /**
         * @see ClientStore::getUsageLookup
         *
-        * @return UsageLookup
+        * @return NullUsageTracker
         */
        public function getUsageLookup() {
                return new NullUsageTracker();
@@ -61,7 +55,7 @@
        /**
         * @see ClientStore::getUsageTracker
         *
-        * @return UsageTracker
+        * @return NullUsageTracker
         */
        public function getUsageTracker() {
                return new NullUsageTracker();
@@ -70,7 +64,7 @@
        /**
         * @see ClientStore::getSubscriptionManager
         *
-        * @return SubscriptionManager
+        * @return NullSubscriptionManager
         */
        public function getSubscriptionManager() {
                return new NullSubscriptionManager();
@@ -79,7 +73,7 @@
        /**
         * @see ClientStore::getPropertyLabelResolver
         *
-        * @return PropertyLabelResolver
+        * @return MockPropertyLabelResolver
         */
        public function getPropertyLabelResolver() {
                return new MockPropertyLabelResolver(
@@ -100,7 +94,7 @@
        /**
         * @see ClientStore::getEntityIdLookup
         *
-        * @return \Wikibase\Store\EntityIdLookup
+        * @return EntityIdLookup
         */
        public function getEntityIdLookup() {
                // FIXME: Incomplete
@@ -141,7 +135,7 @@
        /**
         * @see ClientStore::getEntityLookup
         *
-        * @return EntityLookup
+        * @return MockRepository
         */
        public function getEntityLookup() {
                return $this->getMockRepository();
@@ -150,7 +144,7 @@
        /**
         * @see ClientStore::getEntityRevisionLookup
         *
-        * @return EntityRevisionLookup
+        * @return MockRepository
         */
        public function getEntityRevisionLookup() {
                return $this->getMockRepository();
@@ -159,7 +153,7 @@
        /**
         * @see ClientStore::getSiteLinkLookup
         *
-        * @return SiteLinkLookup
+        * @return MockRepository
         */
        public function getSiteLinkLookup() {
                return $this->getMockRepository();
@@ -168,7 +162,7 @@
        /**
         * @see ClientStore::getPropertyInfoStore
         *
-        * @return PropertyInfoStore
+        * @return MockPropertyInfoStore
         */
        public function getPropertyInfoStore() {
                if ( self::$propertyInfoStore === null ) {
@@ -181,7 +175,7 @@
        /**
         * @see ClientStore::getEntityPrefetcher
         *
-        * @return EntityPrefetcher
+        * @return NullEntityPrefetcher
         */
        public function getEntityPrefetcher() {
                return new NullEntityPrefetcher();
diff --git a/extensions/Wikibase/lib/i18n/zh-hant.json 
b/extensions/Wikibase/lib/i18n/zh-hant.json
index fb2acd2..6ef31a1 100644
--- a/extensions/Wikibase/lib/i18n/zh-hant.json
+++ b/extensions/Wikibase/lib/i18n/zh-hant.json
@@ -14,7 +14,7 @@
                ]
        },
        "wikibase-lib-desc": "Wikibase 與 Wikibase 用戶端擴充套件所共用的功能",
-       "specialpages-group-wikibase": "Wikibase 儲存庫",
+       "specialpages-group-wikibase": "Wikibase",
        "wikibase-deletedentity-item": "已刪除項目",
        "wikibase-deletedentity-property": "已刪除屬性",
        "wikibase-deletedentity-query": "已刪除查詢",
@@ -29,12 +29,13 @@
        "wikibase-error-autocomplete-response": "伺服器回應:$1",
        "wikibase-error-ui-no-external-page": "於關聯的網站查無指定的文章。",
        "wikibase-error-ui-edit-conflict": "發生編輯衝突。請重新整理再儲存一次。",
+       "wikibase-language-fallback-transliteration-hint": "$1 (已轉換拼寫)",
        "wikibase-quantitydetails-amount": "總計",
        "wikibase-quantitydetails-upperbound": "上限",
        "wikibase-quantitydetails-lowerbound": "下限",
        "wikibase-quantitydetails-unit": "單位",
        "wikibase-timedetails-time": "時間",
-       "wikibase-timedetails-isotime": "ISO 時間戳記",
+       "wikibase-timedetails-isotime": "時間戳記",
        "wikibase-timedetails-timezone": "時區",
        "wikibase-timedetails-calendar": "日曆",
        "wikibase-timedetails-precision": "精度",
@@ -85,7 +86,12 @@
        "wikibase-time-precision-millennium": "$1 千年",
        "wikibase-time-precision-century": "$1 世紀",
        "wikibase-time-precision-10annum": "$1",
+       "wikibase-time-precision-BCE-Gannum": "公元前 $1 十億年",
        "wikibase-time-precision-BCE-Mannum": "$1 百萬年 BCE",
+       "wikibase-time-precision-BCE-annum": "公元前 $1 年",
+       "wikibase-time-precision-BCE-millennium": "公元前 $1 千年",
+       "wikibase-time-precision-BCE-century": "公元前 $1 世紀",
+       "wikibase-time-precision-BCE-10annum": "公元前 $1 年",
        "wikibase-snakformatter-valuetype-mismatch": "數值型態 \"$1\" 與屬性型態 \"$2\" 
不符。",
        "wikibase-snakformatter-property-not-found": "查無屬性 $1,無法辨識要使用的資料型態。"
 }
diff --git 
a/extensions/Wikibase/lib/includes/formatters/FormatterLabelDescriptionLookupFactory.php
 
b/extensions/Wikibase/lib/includes/formatters/FormatterLabelDescriptionLookupFactory.php
index a62f4bf..d539852 100644
--- 
a/extensions/Wikibase/lib/includes/formatters/FormatterLabelDescriptionLookupFactory.php
+++ 
b/extensions/Wikibase/lib/includes/formatters/FormatterLabelDescriptionLookupFactory.php
@@ -6,19 +6,19 @@
 use ValueFormatters\FormatterOptions;
 use ValueFormatters\ValueFormatter;
 use Wikibase\LanguageFallbackChain;
-use Wikibase\Lib\Store\TermLookup;
 use Wikibase\Lib\Store\LabelDescriptionLookup;
 use Wikibase\Lib\Store\LanguageFallbackLabelDescriptionLookup;
 use Wikibase\Lib\Store\LanguageLabelDescriptionLookup;
+use Wikibase\Lib\Store\TermLookup;
 
 /**
  * Factory for LabelDescriptionLookup objects based on FormatterOptions.
  *
  * The LabelDescriptionLookup is created based on the values of the options
- * 'LabelDescriptionLookup', 'languages', and ValueFormatter::OPT_LANG:
+ * OPT_LABEL_DESCRIPTION_LOOKUP, OPT_LANGUAGE_FALLBACK_CHAIN, and 
ValueFormatter::OPT_LANG:
  *
- * * 'LabelDescriptionLookup' can be used to provide a custom 
LabelDescriptionLookup instance directly
- * * If 'languages' is set, a LanguageFallbackLabelDescriptionLookup will be 
created byed on
+ * * OPT_LABEL_DESCRIPTION_LOOKUP can be used to provide a custom 
LabelDescriptionLookup instance directly
+ * * If OPT_LANGUAGE_FALLBACK_CHAIN is set, a 
LanguageFallbackLabelDescriptionLookup will be created byed on
  *   the LanguageFallbackChain contained in that option.
  * * If ValueFormatter::OPT_LANG is set, a LanguageLabelDescriptionLookup is 
created
  * * If none of these options is set, an InvalidArgumentException is thrown.
@@ -29,6 +29,9 @@
  * @author Daniel Kinzler
  */
 class FormatterLabelDescriptionLookupFactory {
+
+       const OPT_LABEL_DESCRIPTION_LOOKUP = 'LabelDescriptionLookup';
+       const OPT_LANGUAGE_FALLBACK_CHAIN = 'languages';
 
        /**
         * @var TermLookup
@@ -46,23 +49,23 @@
         * @return LabelDescriptionLookup
         */
        public function getLabelDescriptionLookup( FormatterOptions $options ) {
-               if ( $options->hasOption( 'LabelDescriptionLookup' ) ) {
+               if ( $options->hasOption( self::OPT_LABEL_DESCRIPTION_LOOKUP ) 
) {
                        return $this->getLabelDescriptionLookupFromOptions( 
$options );
-               } elseif ( $options->hasOption( 'languages' ) ) {
+               } elseif ( $options->hasOption( 
self::OPT_LANGUAGE_FALLBACK_CHAIN ) ) {
                        return 
$this->newLanguageFallbackLabelDescriptionLookup( $options );
                } elseif ( $options->hasOption( ValueFormatter::OPT_LANG ) ) {
                        return $this->newLanguageLabelDescriptionLookup( 
$options );
                } else {
-                       throw new InvalidArgumentException( 'OPT_LANG, 
languages (fallback chain), '
-                               . 'or LabelDescriptionLookup must be set in 
FormatterOptions.' );
+                       throw new InvalidArgumentException( 'OPT_LANG, 
OPT_LANGUAGE_FALLBACK_CHAIN, '
+                               . 'or OPT_LABEL_DESCRIPTION_LOOKUP must be set 
in FormatterOptions.' );
                }
        }
 
        private function getLabelDescriptionLookupFromOptions( FormatterOptions 
$options ) {
-               $labelDescriptionLookup = $options->getOption( 
'LabelDescriptionLookup' );
+               $labelDescriptionLookup = $options->getOption( 
self::OPT_LABEL_DESCRIPTION_LOOKUP );
 
                if ( !( $labelDescriptionLookup instanceof 
LabelDescriptionLookup ) ) {
-                       throw new InvalidArgumentException( 'Option 
LabelDescriptionLookup must be used ' .
+                       throw new InvalidArgumentException( 
'OPT_LABEL_DESCRIPTION_LOOKUP must be used ' .
                                'with an instance of LabelDescriptionLookup.' );
                }
 
@@ -70,10 +73,10 @@
        }
 
        private function newLanguageFallbackLabelDescriptionLookup( 
FormatterOptions $options ) {
-               $fallbackChain = $options->getOption( 'languages' );
+               $fallbackChain = $options->getOption( 
self::OPT_LANGUAGE_FALLBACK_CHAIN );
 
                if ( !( $fallbackChain instanceof LanguageFallbackChain ) ) {
-                       throw new InvalidArgumentException( 'Option `languages` 
must be used ' .
+                       throw new InvalidArgumentException( 
'OPT_LANGUAGE_FALLBACK_CHAIN must be used ' .
                                'with an instance of LanguageFallbackChain.' );
                }
 
diff --git 
a/extensions/Wikibase/lib/includes/formatters/WikibaseValueFormatterBuilders.php
 
b/extensions/Wikibase/lib/includes/formatters/WikibaseValueFormatterBuilders.php
index 84b2916..7e1ce1d 100644
--- 
a/extensions/Wikibase/lib/includes/formatters/WikibaseValueFormatterBuilders.php
+++ 
b/extensions/Wikibase/lib/includes/formatters/WikibaseValueFormatterBuilders.php
@@ -261,8 +261,8 @@
        }
 
        /**
-        * Initializes the options keys ValueFormatter::OPT_LANG and 
'languages' if
-        * they are not yet set.
+        * Initializes the options keys ValueFormatter::OPT_LANG and
+        * FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN 
if they are not yet set.
         *
         * @param FormatterOptions $options The options to modify.
         *
@@ -279,20 +279,25 @@
 
                $lang = $options->getOption( ValueFormatter::OPT_LANG );
                if ( !is_string( $lang ) ) {
-                       throw new InvalidArgumentException( 'The value of 
OPT_LANG must be a language code. For a fallback chain, use the `languages` 
option.' );
+                       throw new InvalidArgumentException(
+                               'The value of OPT_LANG must be a language code. 
For a fallback chain, use OPT_LANGUAGE_FALLBACK_CHAIN.'
+                       );
                }
 
-               if ( !$options->hasOption( 'languages' ) ) {
+               if ( !$options->hasOption( 
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN ) ) {
                        $fallbackMode = (
                                LanguageFallbackChainFactory::FALLBACK_VARIANTS
                                | LanguageFallbackChainFactory::FALLBACK_OTHERS
                                | LanguageFallbackChainFactory::FALLBACK_SELF );
 
-                       $options->setOption( 'languages', 
$languageFallbackChainFactory->newFromLanguageCode( $lang, $fallbackMode ) );
+                       $options->setOption(
+                               
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN,
+                               
$languageFallbackChainFactory->newFromLanguageCode( $lang, $fallbackMode )
+                       );
                }
 
-               if ( !( $options->getOption( 'languages' ) instanceof 
LanguageFallbackChain ) ) {
-                       throw new InvalidArgumentException( 'The value of the 
`languages` option must be an instance of LanguageFallbackChain.' );
+               if ( !( $options->getOption( 
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN ) 
instanceof LanguageFallbackChain ) ) {
+                       throw new InvalidArgumentException( 'The value of 
OPT_LANGUAGE_FALLBACK_CHAIN must be an instance of LanguageFallbackChain.' );
                }
        }
 
diff --git 
a/extensions/Wikibase/lib/includes/serializers/LibSerializerFactory.php 
b/extensions/Wikibase/lib/includes/serializers/LibSerializerFactory.php
index 77c75ec..b8ec77b 100644
--- a/extensions/Wikibase/lib/includes/serializers/LibSerializerFactory.php
+++ b/extensions/Wikibase/lib/includes/serializers/LibSerializerFactory.php
@@ -67,13 +67,6 @@
        }
 
        /**
-        * @param PropertyDataTypeLookup $dataTypeLookup
-        */
-       public function setDataTypeLookup( PropertyDataTypeLookup 
$dataTypeLookup ) {
-               $this->dataTypeLookup = $dataTypeLookup;
-       }
-
-       /**
         * @param mixed $object
         * @param SerializationOptions $options
         *
@@ -111,46 +104,6 @@
                }
 
                throw new OutOfBoundsException( 'There is no serializer for the 
provided type of object "' . get_class( $object ) . '"' );
-       }
-
-       /**
-        * @param string $className
-        * @param SerializationOptions $options
-        *
-        * @return Unserializer
-        * @throws OutOfBoundsException
-        * @throws InvalidArgumentException
-        */
-       public function newUnserializerForClass( $className, $options = null ) {
-               if ( $options === null ) {
-                       $options = new SerializationOptions();
-               }
-
-               //TODO: The factory should take options in the constructor (?!)
-               //TODO: The factory should offer clones of the options via 
newSerializationOptions().
-               //TODO: This method should merge to options given with the 
options from the constructor.
-
-               if ( !is_string( $className ) ) {
-                       throw new OutOfBoundsException( '$className needs to be 
a string' );
-               }
-
-               switch ( ltrim( $className, '\\' ) ) {
-                       case 'Wikibase\DataModel\Entity\Item':
-                               return $this->newItemUnserializer( $options );
-                       case 'Wikibase\DataModel\Entity\Property':
-                               return $this->newPropertyUnserializer( $options 
);
-                       //TODO: support extra entity types!
-                       case 'Wikibase\DataModel\Snak\Snak':
-                               return $this->newSnakUnserializer( $options );
-                       case 'Wikibase\DataModel\Reference':
-                               return $this->newReferenceUnserializer($options 
);
-                       case 'Wikibase\DataModel\Claim\Claim':
-                               return $this->newClaimUnserializer( $options );
-                       case 'Wikibase\DataModel\Claim\Claims':
-                               return $this->newClaimsUnserializer( $options );
-               }
-
-               throw new OutOfBoundsException( '"' . $className . '" has no 
associated unserializer' );
        }
 
        /**
@@ -250,44 +203,8 @@
         *
         * @return Serializer
         */
-       public function newSiteLinkSerializer( SerializationOptions $options ) {
-               return new SiteLinkSerializer( $this->makeOptions( $options ), 
$this->siteStore );
-       }
-
-       /**
-        * @param SerializationOptions $options
-        *
-        * @return Serializer
-        */
-       public function newLabelSerializer( SerializationOptions $options ) {
-               return new LabelSerializer( $this->makeOptions( $options ) );
-       }
-
-       /**
-        * @param SerializationOptions $options
-        *
-        * @return Serializer
-        */
-       public function newDescriptionSerializer( SerializationOptions $options 
) {
-               return new DescriptionSerializer( $this->makeOptions( $options 
) );
-       }
-
-       /**
-        * @param SerializationOptions $options
-        *
-        * @return Serializer
-        */
        public function newAliasSerializer( SerializationOptions $options ) {
                return new AliasSerializer( $this->makeOptions( $options ) );
-       }
-
-       /**
-        * @param SerializationOptions $options
-        *
-        * @return Unserializer
-        */
-       public function newSnakUnserializer( SerializationOptions $options ) {
-               return $this->newSnakSerializer( $this->makeOptions( $options ) 
);
        }
 
        /**
@@ -313,15 +230,6 @@
         *
         * @return Unserializer
         */
-       public function newClaimsUnserializer( SerializationOptions $options ) {
-               return $this->newClaimsSerializer( $this->makeOptions( $options 
) );
-       }
-
-       /**
-        * @param SerializationOptions $options
-        *
-        * @return Unserializer
-        */
        public function newItemUnserializer( SerializationOptions $options ) {
                return $this->newItemSerializer( $this->makeOptions( $options ) 
);
        }
@@ -333,33 +241,6 @@
         */
        public function newPropertyUnserializer( SerializationOptions $options 
) {
                return $this->newPropertySerializer( $this->makeOptions( 
$options ) );
-       }
-
-       /**
-        * @param SerializationOptions $options
-        *
-        * @return Unserializer
-        */
-       public function newLabelUnserializer( SerializationOptions $options ) {
-               return $this->newLabelSerializer( $this->makeOptions( $options 
) );
-       }
-
-       /**
-        * @param SerializationOptions $options
-        *
-        * @return Unserializer
-        */
-       public function newDescriptionUnserializer( SerializationOptions 
$options ) {
-               return $this->newDescriptionSerializer( $this->makeOptions( 
$options ) );
-       }
-
-       /**
-        * @param SerializationOptions $options
-        *
-        * @return Unserializer
-        */
-       public function newAliasUnserializer( SerializationOptions $options ) {
-               return $this->newAliasSerializer( $this->makeOptions( $options 
) );
        }
 
        /**
diff --git 
a/extensions/Wikibase/lib/tests/phpunit/formatters/FormatterLabelDescriptionLookupFactoryTest.php
 
b/extensions/Wikibase/lib/tests/phpunit/formatters/FormatterLabelDescriptionLookupFactoryTest.php
index eb63c01..b61cff5 100644
--- 
a/extensions/Wikibase/lib/tests/phpunit/formatters/FormatterLabelDescriptionLookupFactoryTest.php
+++ 
b/extensions/Wikibase/lib/tests/phpunit/formatters/FormatterLabelDescriptionLookupFactoryTest.php
@@ -79,7 +79,7 @@
                                $termLookup,
                                new FormatterOptions( array(
                                        ValueFormatter::OPT_LANG => 'fr',
-                                       'languages' => $deChChain,
+                                       
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN => 
$deChChain,
                                ) ),
                                'Kätzchen'
                        ),
@@ -87,8 +87,8 @@
                                $termLookup,
                                new FormatterOptions( array(
                                        ValueFormatter::OPT_LANG => 'fr',
-                                       'languages' => $frChain,
-                                       'LabelDescriptionLookup' => 
$labelDescriptionLookup
+                                       
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN => $frChain,
+                                       
FormatterLabelDescriptionLookupFactory::OPT_LABEL_DESCRIPTION_LOOKUP => 
$labelDescriptionLookup
                                ) ),
                                'Kätzchen'
                        ),
@@ -115,12 +115,12 @@
                        ),
                        'bad fallback chain' => array(
                                new FormatterOptions( array(
-                                       'languages' => array( 'x', 'y', 'z' ),
+                                       
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN => array( 
'x', 'y', 'z' ),
                                ) ),
                        ),
                        'bad LabelDescriptionLookup' => array(
                                new FormatterOptions( array(
-                                       'LabelDescriptionLookup' => new 
LanguageFallbackChain( array() )
+                                       
FormatterLabelDescriptionLookupFactory::OPT_LABEL_DESCRIPTION_LOOKUP => new 
LanguageFallbackChain( array() )
                                ) ),
                        ),
                        'no options' => array(
diff --git 
a/extensions/Wikibase/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
 
b/extensions/Wikibase/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
index de059b7..fa7dc73 100644
--- 
a/extensions/Wikibase/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
+++ 
b/extensions/Wikibase/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
@@ -327,14 +327,14 @@
                        ),
                        'fallback option' => array(
                                new FormatterOptions( array(
-                                       'languages' => $fallbackChain,
+                                       
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN => 
$fallbackChain,
                                ) ),
                                new ItemId( 'Q5' ),
                                '@>Name für Q5<@'
                        ),
                        'LabelDescriptionLookup option' => array(
                                new FormatterOptions( array(
-                                       'LabelDescriptionLookup' => 
$labelDescriptionLookup,
+                                       
FormatterLabelDescriptionLookupFactory::OPT_LABEL_DESCRIPTION_LOOKUP => 
$labelDescriptionLookup,
                                ) ),
                                new ItemId( 'Q5' ),
                                '@>Custom LabelDescriptionLookup<@'
@@ -611,16 +611,16 @@
 
                if ( $expectedLanguage !== null ) {
                        $lang = $options->getOption( ValueFormatter::OPT_LANG );
-                       $this->assertEquals( $expectedLanguage, $lang, 'option: 
' . ValueFormatter::OPT_LANG );
+                       $this->assertEquals( $expectedLanguage, $lang, 
'OPT_LANG' );
                }
 
                if ( $expectedFallback !== null ) {
                        /** @var LanguageFallbackChain $languageFallback */
-                       $languageFallback = $options->getOption( 'languages' );
+                       $languageFallback = $options->getOption( 
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN );
                        $languages = $languageFallback->getFallbackChain();
                        $lang = $languages[0]->getLanguage()->getCode();
 
-                       $this->assertEquals( $expectedFallback, $lang, 'option: 
languages' );
+                       $this->assertEquals( $expectedFallback, $lang, 
'OPT_LANGUAGE_FALLBACK_CHAIN' );
                }
        }
 
@@ -640,12 +640,17 @@
                                'de'  // derived from language code
                        ),
                        'language fallback set' => array(
-                               new FormatterOptions( array( 'languages' => 
$languageFallback ) ),
+                               new FormatterOptions( array(
+                                       
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN => 
$languageFallback
+                               ) ),
                                'en', // default code is taken from the 
constructor, not the fallback chain
                                'fr'  // as given
                        ),
                        'language code and fallback set' => array(
-                               new FormatterOptions( array( 
ValueFormatter::OPT_LANG => 'de', 'languages' => $languageFallback ) ),
+                               new FormatterOptions( array(
+                                       ValueFormatter::OPT_LANG => 'de',
+                                       
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN => 
$languageFallback
+                               ) ),
                                'de', // as given
                                'fr'  // as given
                        ),
diff --git 
a/extensions/Wikibase/lib/tests/phpunit/serializers/DataModelSerializationRoundtripTest.php
 
b/extensions/Wikibase/lib/tests/phpunit/serializers/DataModelSerializationRoundtripTest.php
index 53cb995..71f4f19 100644
--- 
a/extensions/Wikibase/lib/tests/phpunit/serializers/DataModelSerializationRoundtripTest.php
+++ 
b/extensions/Wikibase/lib/tests/phpunit/serializers/DataModelSerializationRoundtripTest.php
@@ -26,7 +26,7 @@
 use Wikibase\DataModel\Snak\SnakList;
 use Wikibase\DataModel\Statement\Statement;
 use Wikibase\Lib\Serializers\SerializationOptions;
-use Wikibase\Lib\Serializers\LibSerializerFactory as LegacySerializerFactory;
+use Wikibase\Lib\Serializers\LibSerializerFactory;
 
 /**
  * @todo Add tests with $options->setIndexTags( true ).
@@ -283,17 +283,17 @@
        private function getLegacySerializer( Entity $entity ) {
                $options = new SerializationOptions();
 
-               $legacySerializerFactory = new LegacySerializerFactory();
+               $LibSerializerFactory = new LibSerializerFactory();
                $entityType = $entity->getType();
-               return $legacySerializerFactory->newSerializerForEntity( 
$entityType, $options );
+               return $LibSerializerFactory->newSerializerForEntity( 
$entityType, $options );
        }
 
        private function getLegacyUnserializer( Entity $entity ) {
                $options = new SerializationOptions();
 
-               $legacySerializerFactory = new LegacySerializerFactory();
+               $LibSerializerFactory = new LibSerializerFactory();
                $entityType = $entity->getType();
-               return $legacySerializerFactory->newUnserializerForEntity( 
$entityType, $options );
+               return $LibSerializerFactory->newUnserializerForEntity( 
$entityType, $options );
        }
 
        private function getSerializer() {
diff --git 
a/extensions/Wikibase/lib/tests/phpunit/serializers/LibSerializerFactoryTest.php
 
b/extensions/Wikibase/lib/tests/phpunit/serializers/LibSerializerFactoryTest.php
index 07f6177..063f5d4 100644
--- 
a/extensions/Wikibase/lib/tests/phpunit/serializers/LibSerializerFactoryTest.php
+++ 
b/extensions/Wikibase/lib/tests/phpunit/serializers/LibSerializerFactoryTest.php
@@ -66,22 +66,6 @@
                return $argLists;
        }
 
-       /**
-        * @dataProvider serializationProvider
-        *
-        * @param string $className
-        * @param array $serialization
-        */
-       public function testNewUnserializerForClass( $className, array 
$serialization ) {
-               $factory = new LibSerializerFactory();
-
-               $unserializer = $factory->newUnserializerForClass( $className );
-
-               $this->assertInstanceOf( 
'Wikibase\Lib\Serializers\Unserializer', $unserializer );
-
-               $unserializer->newFromSerialization( $serialization );
-       }
-
        public function entityTypeProvider() {
                return array(
                        array( Item::ENTITY_TYPE ),
@@ -115,15 +99,10 @@
 
        public function newUnserializerProvider() {
                $names = array(
-                       'SnakUnserializer',
                        'ReferenceUnserializer',
                        'ClaimUnserializer',
-                       'ClaimsUnserializer',
                        'PropertyUnserializer',
                        'ItemUnserializer',
-                       'LabelUnserializer',
-                       'DescriptionUnserializer',
-                       'AliasUnserializer',
                );
 
                return array_map( function( $name ) {
@@ -152,11 +131,7 @@
                        'ClaimsSerializer',
                        'PropertySerializer',
                        'ItemSerializer',
-                       'LabelSerializer',
-                       'DescriptionSerializer',
                        'AliasSerializer',
-
-                       'SiteLinkSerializer',
                );
 
                return array_map( function( $name ) {
diff --git a/extensions/Wikibase/repo/i18n/eu.json 
b/extensions/Wikibase/repo/i18n/eu.json
index 74624c0..d0b528e 100644
--- a/extensions/Wikibase/repo/i18n/eu.json
+++ b/extensions/Wikibase/repo/i18n/eu.json
@@ -14,13 +14,24 @@
        "wikibase-save": "gorde",
        "wikibase-cancel": "utzi",
        "wikibase-add": "gehitu",
+       "wikibase-addreference": "Erreferentzia gehitu",
        "wikibase-save-inprogress": "Gordetzen...",
        "wikibase-remove-inprogress": "Ezabatzen...",
+       "wikibase-entitytermsview-entitytermsforlanguagelistview-toggler": 
"Hizkuntza gehiagotan",
+       
"wikibase-entitytermsview-entitytermsforlanguagelistview-configure-link-label": 
"Konfiguratu",
+       "wikibase-entitytermsforlanguagelistview-description": "Deskribapena",
+       "wikibase-entitytermsforlanguagelistview-label": "Etiketa",
+       "wikibase-entitytermsforlanguagelistview-language": "Hizkuntza",
        "wikibase-label-empty": "Ez da etiketarik zehaztu",
+       "wikibase-label-edit-placeholder": "Sartu etiketa bat",
+       "wikibase-description-edit-placeholder-language-aware": "sartu 
deskribapen bat $1-n",
+       "wikibase-diffview-label": "etiketa",
+       "wikibase-diffview-description": "deskribapena",
        "wikibase-statements": "Adierazpenak",
        "wikibase-terms": "Beste hizkuntzetan",
        "wikibase-sitelinks-special": "Beste guneak",
        "wikibase-remove": "kendu",
+       "wikibase-propertyedittool-counter-entrieslabel": 
"{{PLURAL:$1|entry|sarrera}}",
        "wikibase-aliases-empty": "Ez da aliasik zehaztu",
        "wikibase-statementview-referencesheading-pendingcountersubject": 
"{{PLURAL:$1|iturri|iturriak}}",
        "wikibase-statementview-referencesheading-pendingcountertooltip": 
"{{PLURAL:$1|Iturri bat ez da|$1 iturri ez dira}} gorde oraindik",
@@ -30,9 +41,19 @@
        "wikibase-itembytitle-submit": "Bilatu",
        "wikibase-itemdisambiguation-lookup-language": "Hizkuntza kodea:",
        "wikibase-itemdisambiguation-submit": "Bilatu",
+       "special-newproperty": "Propietate berria sortu",
+       "special-newitem": "Elementu berria sortu",
+       "wikibase-newentity-label": "Etiketa:",
+       "wikibase-newentity-description": "Deskribapena:",
        "wikibase-newentity-submit": "Sortu",
        "wikibase-setlabel-label": "Etiketa:",
+       "wikibase-setlabeldescriptionaliases-description-label": 
"Deskribapena:",
        "wikibase-modifyentity-id": "ID:",
+       "wikibase-modifyterm-language": "Hizkuntza kodea:",
+       "wikibase-entitieswithoutlabel-label-language": "Hizkuntza kodea:",
+       "wikibase-entitieswithoutlabel-invalid-language": "\"$1\" ez da 
hizkuntza kode erabilgarria.",
        "wikibase-restoreold": "leheneratu",
-       "apihelp-wbsetdescription-param-language": "Deskribapenaren hizkuntza"
+       "apihelp-wbsearchentities-param-language": "Bilatu hizkuntza honetan.",
+       "apihelp-wbsetdescription-param-language": "Deskribapenaren hizkuntza",
+       "apihelp-wbsetlabel-param-language": "Etiketaren hizkuntza"
 }
diff --git a/extensions/Wikibase/repo/i18n/hy.json 
b/extensions/Wikibase/repo/i18n/hy.json
index c23eb32..15255a1 100644
--- a/extensions/Wikibase/repo/i18n/hy.json
+++ b/extensions/Wikibase/repo/i18n/hy.json
@@ -24,6 +24,7 @@
        "wikibase-statements": "Պնդումներ",
        "wikibase-sitelinks-special": "Այլ կայքեր",
        "wikibase-aliases-empty": "Այլ անվանումներ (հոմանիշներ) նշված չեն",
+       "wikibase-statementview-rank-normal": "Նորմալ աստիճան",
        "wikibase-statementview-referencesheading-pendingcountersubject": 
"{{PLURAL:$1|աղբյուր|աղբյուրներ}}",
        "wikibase-entityselector-more": "Ավելին"
 }
diff --git a/extensions/Wikibase/repo/i18n/yi.json 
b/extensions/Wikibase/repo/i18n/yi.json
index 56ecf2e..e32a104 100644
--- a/extensions/Wikibase/repo/i18n/yi.json
+++ b/extensions/Wikibase/repo/i18n/yi.json
@@ -281,5 +281,6 @@
        "content-model-wikibase-item": "Wikibase-דאטנאביעקט",
        "content-model-wikibase-property": "Wikibase-אייגנשאפֿט",
        "content-model-wikibase-query": "Wikibase-פֿראגע",
+       "action-property-create": "שאַפן אייגנשאַפֿטן",
        "apihelp-wbremoveclaims-description": "נעמט אראפ וויקיבאזע טענות."
 }
diff --git a/extensions/Wikibase/repo/i18n/zh-hant.json 
b/extensions/Wikibase/repo/i18n/zh-hant.json
index b4bb2bf..9034a67 100644
--- a/extensions/Wikibase/repo/i18n/zh-hant.json
+++ b/extensions/Wikibase/repo/i18n/zh-hant.json
@@ -233,7 +233,12 @@
        "wikibase-listdatatypes-intro": "此為目前所有可用的資料型態:",
        "wikibase-history-title-with-label": "\"$2\" ($1) 的修訂歷史",
        "wikibase-history-title-without-label": "($1) 的修訂歷史",
+       "special-listproperties": "屬性清單",
+       "wikibase-listproperties-legend": "依資料型態取得屬性清單",
+       "wikibase-listproperties-datatype": "資料型態:",
+       "wikibase-listproperties-all": "所有資料型態",
        "wikibase-listproperties-submit": "尋找",
+       "wikibase-listproperties-invalid-datatype": "\"$1\" 不是有效的資料型態。",
        "special-entitieswithoutdescription": "無描述的實體",
        "wikibase-entitieswithoutdescription-legend": "取得無描述的實體清單",
        "special-entitieswithoutlabel": "無標籤的實體",
@@ -384,6 +389,7 @@
        "right-item-redirect": "建立項目重新導向",
        "right-property-term": "更改屬性用語 (標籤、描述與別名)",
        "right-property-create": "建立屬性",
+       "action-item-merge": "合併項目",
        "action-property-create": "建立屬性",
        "apihelp-wbcreateclaim-description": "建立 Wikibase 主張。",
        "apihelp-wbcreateredirect-description": "建立實體重新導向。",
@@ -399,6 +405,7 @@
        "apihelp-wbsearchentities-description": "搜尋項目。",
        "apihelp-wbsearchentities-param-search": "搜尋此文字。",
        "apihelp-wbsearchentities-param-language": "搜尋此語言。",
+       "apihelp-wbsearchentities-param-strictlanguage": "是否要關閉備用語言",
        "apihelp-wbsearchentities-param-type": "搜尋此類型的實體。",
        "apihelp-wbsearchentities-param-limit": "結果數量上限",
        "apihelp-wbsetaliases-description": "設定 Wikibase 實體的別名。",
diff --git 
a/extensions/Wikibase/repo/includes/WikibaseHtmlSnakFormatterFactory.php 
b/extensions/Wikibase/repo/includes/WikibaseHtmlSnakFormatterFactory.php
index a8b796a..8520b30 100644
--- a/extensions/Wikibase/repo/includes/WikibaseHtmlSnakFormatterFactory.php
+++ b/extensions/Wikibase/repo/includes/WikibaseHtmlSnakFormatterFactory.php
@@ -5,6 +5,7 @@
 use ValueFormatters\FormatterOptions;
 use ValueFormatters\ValueFormatter;
 use Wikibase\LanguageFallbackChain;
+use Wikibase\Lib\FormatterLabelDescriptionLookupFactory;
 use Wikibase\Lib\OutputFormatSnakFormatterFactory;
 use Wikibase\Lib\SnakFormatter;
 use Wikibase\Lib\Store\LabelDescriptionLookup;
@@ -43,8 +44,8 @@
        ) {
                $formatterOptions = new FormatterOptions( array(
                        ValueFormatter::OPT_LANG => $languageCode,
-                       'languages' => $languageFallbackChain,
-                       'LabelDescriptionLookup' => $labelDescriptionLookup,
+                       
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN => 
$languageFallbackChain,
+                       
FormatterLabelDescriptionLookupFactory::OPT_LABEL_DESCRIPTION_LOOKUP => 
$labelDescriptionLookup,
                ) );
                return $formatterOptions;
        }
diff --git a/extensions/Wikibase/repo/includes/api/EditEntity.php 
b/extensions/Wikibase/repo/includes/api/EditEntity.php
index fbb9ab0..8b81160 100644
--- a/extensions/Wikibase/repo/includes/api/EditEntity.php
+++ b/extensions/Wikibase/repo/includes/api/EditEntity.php
@@ -24,6 +24,7 @@
 use Wikibase\DataModel\Entity\Property;
 use Wikibase\DataModel\Term\FingerprintProvider;
 use Wikibase\Lib\Serializers\LibSerializerFactory;
+use Wikibase\Lib\Serializers\SerializationOptions;
 use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\Lib\ContentLanguages;
 use Wikibase\Repo\WikibaseRepo;
@@ -515,7 +516,7 @@
                $opsToReturn = array();
 
                $serializerFactory = new LibSerializerFactory();
-               $unserializer = $serializerFactory->newUnserializerForClass( 
'Wikibase\DataModel\Claim\Claim' );
+               $unserializer = $serializerFactory->newClaimUnserializer( new 
SerializationOptions() );
 
                foreach ( $claims as $claimArray ) {
                        if ( !array_key_exists( 'remove', $claimArray ) ) {
diff --git a/extensions/Wikibase/repo/includes/api/SetClaim.php 
b/extensions/Wikibase/repo/includes/api/SetClaim.php
index 237ee4d..1e5e5d7 100644
--- a/extensions/Wikibase/repo/includes/api/SetClaim.php
+++ b/extensions/Wikibase/repo/includes/api/SetClaim.php
@@ -17,6 +17,7 @@
 use Wikibase\DataModel\Statement\StatementGuidParsingException;
 use Wikibase\DataModel\Statement\StatementListProvider;
 use Wikibase\Lib\Serializers\LibSerializerFactory;
+use Wikibase\Lib\Serializers\SerializationOptions;
 use Wikibase\Repo\Diff\ClaimDiffer;
 use Wikibase\Repo\WikibaseRepo;
 use Wikibase\Summary;
@@ -142,7 +143,7 @@
         */
        private function getClaimFromParams( array $params ) {
                $serializerFactory = new LibSerializerFactory();
-               $unserializer = $serializerFactory->newUnserializerForClass( 
'Wikibase\DataModel\Claim\Claim' );
+               $unserializer = $serializerFactory->newClaimUnserializer( new 
SerializationOptions() );
 
                try {
                        $serializedClaim = json_decode( $params['claim'], true 
);
diff --git a/extensions/Wikibase/repo/includes/content/EntityContent.php 
b/extensions/Wikibase/repo/includes/content/EntityContent.php
index 547ec12..d7e18c7 100644
--- a/extensions/Wikibase/repo/includes/content/EntityContent.php
+++ b/extensions/Wikibase/repo/includes/content/EntityContent.php
@@ -292,7 +292,6 @@
 
                $output = $outputGenerator->getParserOutput( $entityRevision, 
$options, $generateHtml );
 
-               // register page properties
                $this->applyEntityPageProperties( $output );
 
                return $output;
@@ -710,8 +709,11 @@
         * @param ParserOutput $output
         */
        private function applyEntityPageProperties( ParserOutput $output ) {
-               $properties = $this->getEntityPageProperties();
+               if ( $this->isRedirect() ) {
+                       return;
+               }
 
+               $properties = $this->getEntityPageProperties();
                foreach ( $properties as $name => $value ) {
                        $output->setProperty( $name, $value );
                }
@@ -729,13 +731,9 @@
         * @return array A map from property names to property values.
         */
        public function getEntityPageProperties() {
-               if ( $this->isRedirect() ) {
-                       return array();
-               }
-
                $properties = array();
-               $status = $this->getEntityStatus();
 
+               $status = $this->getEntityStatus();
                if ( $status !== self::STATUS_NONE ) {
                        $properties['wb-status'] = $status;
                }
diff --git a/extensions/Wikibase/repo/includes/content/ItemContent.php 
b/extensions/Wikibase/repo/includes/content/ItemContent.php
index d9853a1..bea8366 100644
--- a/extensions/Wikibase/repo/includes/content/ItemContent.php
+++ b/extensions/Wikibase/repo/includes/content/ItemContent.php
@@ -42,7 +42,7 @@
        private $redirect;
 
        /**
-        * @var Title|null
+        * @var Title|null Title of the redirect target.
         */
        private $redirectTitle;
 
@@ -55,7 +55,7 @@
         *
         * @param EntityHolder|null $itemHolder
         * @param EntityRedirect|null $entityRedirect
-        * @param Title|null $redirectTitle
+        * @param Title|null $redirectTitle Title of the redirect target.
         *
         * @throws InvalidArgumentException
         */
@@ -112,7 +112,7 @@
         * @since 0.5
         *
         * @param EntityRedirect $redirect
-        * @param Title $redirectTitle
+        * @param Title $redirectTitle Title of the redirect target.
         *
         * @return ItemContent
         */
@@ -123,7 +123,7 @@
        /**
         * @see Content::getRedirectTarget
         *
-        * @return null|Title
+        * @return Title|null
         */
        public function getRedirectTarget() {
                return $this->redirectTitle;
@@ -233,7 +233,9 @@
         * @return bool True if the item is not empty, but does not contain 
statements.
         */
        public function isStub() {
-               return !$this->isEmpty() && 
$this->getItem()->getStatements()->isEmpty();
+               return !$this->isRedirect()
+                       && !$this->getItem()->isEmpty()
+                       && $this->getItem()->getStatements()->isEmpty();
        }
 
        /**
@@ -245,13 +247,13 @@
         * @return array A map from property names to property values.
         */
        public function getEntityPageProperties() {
-               if ( $this->isRedirect() ) {
-                       return array();
-               }
-
                $properties = parent::getEntityPageProperties();
-               $properties['wb-claims'] = 
$this->getItem()->getStatements()->count();
-               $properties['wb-sitelinks'] = 
$this->getItem()->getSiteLinkList()->count();
+
+               if ( !$this->isRedirect() ) {
+                       $item = $this->getItem();
+                       $properties['wb-claims'] = 
$item->getStatements()->count();
+                       $properties['wb-sitelinks'] = 
$item->getSiteLinkList()->count();
+               }
 
                return $properties;
        }
@@ -271,12 +273,15 @@
         */
        public function getEntityStatus() {
                $status = parent::getEntityStatus();
-               $hasSiteLinks = !$this->getItem()->getSiteLinkList()->isEmpty();
 
-               if ( $status === self::STATUS_EMPTY && $hasSiteLinks ) {
-                       $status = self::STATUS_LINKSTUB;
-               } elseif ( $status === self::STATUS_STUB && $hasSiteLinks ) {
-                       $status = self::STATUS_LINKSTUB;
+               if ( !$this->isRedirect() ) {
+                       $hasSiteLinks = 
!$this->getItem()->getSiteLinkList()->isEmpty();
+
+                       if ( $status === self::STATUS_EMPTY && $hasSiteLinks ) {
+                               $status = self::STATUS_LINKSTUB;
+                       } elseif ( $status === self::STATUS_STUB && 
$hasSiteLinks ) {
+                               $status = self::STATUS_LINKSTUB;
+                       }
                }
 
                return $status;
diff --git a/extensions/Wikibase/repo/includes/content/PropertyContent.php 
b/extensions/Wikibase/repo/includes/content/PropertyContent.php
index 0ceaa0d..3f35d6f 100644
--- a/extensions/Wikibase/repo/includes/content/PropertyContent.php
+++ b/extensions/Wikibase/repo/includes/content/PropertyContent.php
@@ -100,11 +100,8 @@
         * @return array A map from property names to property values.
         */
        public function getEntityPageProperties() {
-               if ( $this->isRedirect() ) {
-                       return array();
-               }
-
                $properties = parent::getEntityPageProperties();
+
                $properties['wb-claims'] = 
$this->getProperty()->getStatements()->count();
 
                return $properties;
@@ -148,7 +145,9 @@
         * @return bool True if the property is not empty, but does not contain 
statements.
         */
        public function isStub() {
-               return !$this->isEmpty() && 
$this->getProperty()->getStatements()->isEmpty();
+               return !$this->isRedirect()
+                       && !$this->getProperty()->isEmpty()
+                       && $this->getProperty()->getStatements()->isEmpty();
        }
 
 }
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/WikibaseHtmlSnakFormatterFactoryTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/WikibaseHtmlSnakFormatterFactoryTest.php
index c99804f..4774884 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/WikibaseHtmlSnakFormatterFactoryTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/WikibaseHtmlSnakFormatterFactoryTest.php
@@ -6,6 +6,7 @@
 use ValueFormatters\FormatterOptions;
 use ValueFormatters\ValueFormatter;
 use Wikibase\LanguageFallbackChain;
+use Wikibase\Lib\FormatterLabelDescriptionLookupFactory;
 use Wikibase\Lib\SnakFormatter;
 use Wikibase\Repo\WikibaseHtmlSnakFormatterFactory;
 
@@ -35,8 +36,8 @@
                                SnakFormatter::FORMAT_HTML_WIDGET,
                                new FormatterOptions( array(
                                        ValueFormatter::OPT_LANG => 'en',
-                                       'languages' => $languageFallbackChain,
-                                       'LabelDescriptionLookup' => 
$labelDescriptionLookup
+                                       
FormatterLabelDescriptionLookupFactory::OPT_LANGUAGE_FALLBACK_CHAIN => 
$languageFallbackChain,
+                                       
FormatterLabelDescriptionLookupFactory::OPT_LABEL_DESCRIPTION_LOOKUP => 
$labelDescriptionLookup
                                ) )
                        )
                        ->will( $this->returnValue( $snakFormatter ) );
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/api/SetClaimTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/api/SetClaimTest.php
index ce90b54..c3d257f 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/api/SetClaimTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/api/SetClaimTest.php
@@ -21,6 +21,7 @@
 use Wikibase\DataModel\Statement\Statement;
 use Wikibase\Lib\ClaimGuidGenerator;
 use Wikibase\Lib\Serializers\LibSerializerFactory;
+use Wikibase\Lib\Serializers\SerializationOptions;
 use Wikibase\Repo\WikibaseRepo;
 
 /**
@@ -301,7 +302,7 @@
                        $serializer = 
$serializerFactory->newSerializerForObject( $claim );
                        $serializedClaim = $serializer->getSerialized( $claim );
                } else {
-                       $unserializer = 
$serializerFactory->newUnserializerForClass( 'Wikibase\DataModel\Claim\Claim' );
+                       $unserializer = 
$serializerFactory->newClaimUnserializer( new SerializationOptions() );
                        $serializedClaim = $claim;
                        $claim = $unserializer->newFromSerialization( 
$serializedClaim );
                }
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/api/SetReferenceTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/api/SetReferenceTest.php
index b38e842..26ab7ef 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/api/SetReferenceTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/api/SetReferenceTest.php
@@ -16,6 +16,7 @@
 use Wikibase\DataModel\Snak\SnakList;
 use Wikibase\DataModel\Statement\Statement;
 use Wikibase\Lib\Serializers\LibSerializerFactory;
+use Wikibase\Lib\Serializers\SerializationOptions;
 use Wikibase\Repo\WikibaseRepo;
 
 /**
@@ -253,7 +254,7 @@
                if ( is_array( $reference ) ) {
                        unset( $reference['hash'] );
                        $reference = $this->newLibSerializerFactory()
-                               ->newUnserializerForClass( 
'Wikibase\DataModel\Reference' )
+                               ->newReferenceUnserializer( new 
SerializationOptions() )
                                ->newFromSerialization( $reference );
                }
                return $reference;
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php
index 13d576e..a59a3c6 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php
@@ -234,7 +234,6 @@
                                        'wb-claims' => 0,
                                )
                        ),
-
                        'labels' => array(
                                $labeledEntityContent,
                                array(
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/content/ItemContentTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/content/ItemContentTest.php
index b4f744a..451620f 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/content/ItemContentTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/content/ItemContentTest.php
@@ -204,6 +204,14 @@
                        $case[1]['wb-sitelinks'] = 0;
                }
 
+               $cases['redirect'] = array(
+                       ItemContent::newFromRedirect(
+                               new EntityRedirect( new ItemId( 'Q1' ), new 
ItemId( 'Q2' ) ),
+                               Title::newFromText( 'Item:Q2' )
+                       ),
+                       array()
+               );
+
                $cases['claims'] = array(
                        $this->getItemContentWithClaim(),
                        array(
diff --git 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinkview.js
 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinkview.js
index fd7d0fb..e7789e8 100644
--- 
a/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinkview.js
+++ 
b/extensions/Wikibase/view/resources/jquery/wikibase/jquery.wikibase.sitelinkview.js
@@ -300,7 +300,8 @@
                                $pageNameInput
                                .attr( 'lang', site.getLanguageCode() )
                                .attr( 'dir', site.getLanguageDirection() )
-                               .show();
+                               .show()
+                               .focus();
                        } else {
                                $pageNameInput.hide();
                        }
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 96039b0..3ff400f 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1165,12 +1165,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "c1e8527a87f29049f9cb318ac0661b144b3c0cd6"
+            "reference": "86d1a2b39c73bce7928be46f121c4c6ee8effece"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/c1e8527a87f29049f9cb318ac0661b144b3c0cd6";,
-            "reference": "c1e8527a87f29049f9cb318ac0661b144b3c0cd6",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/86d1a2b39c73bce7928be46f121c4c6ee8effece";,
+            "reference": "86d1a2b39c73bce7928be46f121c4c6ee8effece",
             "shasum": ""
         },
         "require": {
@@ -1200,7 +1200,7 @@
         "require-dev": {
             "squizlabs/php_codesniffer": "~2.1"
         },
-        "time": "2015-07-21 19:49:13",
+        "time": "2015-07-23 01:14:59",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {
@@ -1401,7 +1401,7 @@
         "source": {
             "type": "git",
             "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints";,
-            "reference": "9f68ef591546a4a900f16128fddccd51acc8e0dd"
+            "reference": "a04eb8fe6f62d5545a0de45440e90b4c99256914"
         },
         "require": {
             "php": ">=5.3.0",
@@ -1412,7 +1412,7 @@
             "phpunit/phpunit": "~3.7,>=3.7.37|~4.5",
             "satooshi/php-coveralls": "master-dev"
         },
-        "time": "2015-06-22 16:50:01",
+        "time": "2015-07-22 13:21:59",
         "type": "mediawiki-extension",
         "installation-source": "source",
         "autoload": {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I9d262aec7a2fb80acb1dd24b01c5a70dd5122007
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <wikidata-servi...@wikimedia.de>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Siebrand <siebr...@kitano.nl>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to