Adrian Heine has uploaded a new change for review.

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

Change subject: Introduce LocalizedTextProvider
......................................................................

Introduce LocalizedTextProvider

Change-Id: I96ec3c211c338d3ab8df3ecfebec7370628a848f
---
M repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
A repo/includes/MediaWikiLocalizedTextProvider.php
M repo/includes/ParserOutput/EntityParserOutputGenerator.php
M repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php
M repo/includes/WikibaseRepo.php
M repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php
M view/src/ClaimHtmlGenerator.php
M view/src/EntityTermsView.php
M view/src/EntityViewPlaceholderExpander.php
M view/src/ItemView.php
A view/src/KeyNameLocalizedTextProvider.php
A view/src/LocalizedTextProvider.php
M view/src/PropertyView.php
M view/src/SiteLinksView.php
M view/src/SnakHtmlGenerator.php
M view/src/StatementSectionsView.php
M view/src/ToolbarEditSectionGenerator.php
M view/src/ViewFactory.php
M view/tests/phpunit/ClaimHtmlGeneratorTest.php
M view/tests/phpunit/EmptyEditSectionGeneratorTest.php
M view/tests/phpunit/EntityTermsViewTest.php
M view/tests/phpunit/EntityViewPlaceholderExpanderTest.php
M view/tests/phpunit/EntityViewTest.php
M view/tests/phpunit/ItemViewTest.php
M view/tests/phpunit/PropertyViewTest.php
M view/tests/phpunit/SiteLinksViewTest.php
M view/tests/phpunit/SnakHtmlGeneratorTest.php
M view/tests/phpunit/StatementGroupListViewTest.php
M view/tests/phpunit/StatementSectionsViewTest.php
M view/tests/phpunit/Template/TemplateRegistryTest.php
M view/tests/phpunit/ToolbarEditSectionGeneratorTest.php
M view/tests/phpunit/ViewFactoryTest.php
32 files changed, 382 insertions(+), 127 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/18/282118/1

diff --git a/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php 
b/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
index 1e282c1..ed506e1 100644
--- a/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
+++ b/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
@@ -9,6 +9,7 @@
 use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\Lib\UserLanguageLookup;
 use Wikibase\Repo\BabelUserLanguageLookup;
+use Wikibase\Repo\MediaWikiLocalizedTextProvider;
 use Wikibase\Repo\WikibaseRepo;
 use Wikibase\View\EntityViewPlaceholderExpander;
 use Wikibase\View\Template\TemplateFactory;
@@ -167,7 +168,8 @@
                        $aliasesProvider,
                        $this->userLanguageLookup,
                        $this->termsLanguages,
-                       $this->languageNameLookup
+                       $this->languageNameLookup,
+                       new MediaWikiLocalizedTextProvider( 
$out->getLanguage()->getCode() )
                );
        }
 
diff --git a/repo/includes/MediaWikiLocalizedTextProvider.php 
b/repo/includes/MediaWikiLocalizedTextProvider.php
new file mode 100644
index 0000000..6a8ae3c
--- /dev/null
+++ b/repo/includes/MediaWikiLocalizedTextProvider.php
@@ -0,0 +1,56 @@
+<?php
+
+namespace Wikibase\Repo;
+
+use Wikibase\View\LocalizedTextProvider;
+
+/**
+ * A service providing localized texts for keys
+ *
+ * @since 0.5
+ *
+ * @license GPL-2.0+
+ * @author Adrian Heine < [email protected] >
+ */
+class MediaWikiLocalizedTextProvider implements LocalizedTextProvider {
+
+       /**
+        * @var string
+        */
+       private $languageCode;
+
+       /**
+        * @param string $languageCode
+        */
+       public function __construct( $languageCode ) {
+               $this->languageCode = $languageCode;
+       }
+
+       /**
+        * @param string $key
+        * @param string[] $params Parameters that could be used for generating 
the text
+        *
+        * @return string The localized text
+        */
+       public function get( $key, $params = [] ) {
+               return wfMessage( $key, $params )->inLanguage( 
$this->languageCode )->text();
+       }
+
+       /**
+        * @param string $key
+        *
+        * @return bool
+        */
+       public function has( $key ) {
+               return wfMessage( $key )->exists();
+       }
+
+       /**
+        * @param string $key
+        *
+        * @return string The language of the text returned for a specific key
+        */
+       public function getLanguageOf( $key ) {
+               return $this->languageCode;
+       }
+}
diff --git a/repo/includes/ParserOutput/EntityParserOutputGenerator.php 
b/repo/includes/ParserOutput/EntityParserOutputGenerator.php
index 96e8459..2ae2657 100644
--- a/repo/includes/ParserOutput/EntityParserOutputGenerator.php
+++ b/repo/includes/ParserOutput/EntityParserOutputGenerator.php
@@ -17,6 +17,7 @@
 use Wikibase\Repo\LinkedData\EntityDataFormatProvider;
 use Wikibase\Repo\View\RepoSpecialPageLinker;
 use Wikibase\View\EmptyEditSectionGenerator;
+use Wikibase\View\LocalizedTextProvider;
 use Wikibase\View\Template\TemplateFactory;
 use Wikibase\View\ToolbarEditSectionGenerator;
 
@@ -24,7 +25,7 @@
  * Creates the parser output for an entity.
  *
  * @note This class relies on Entity and behaves differently when you pass an 
item as paramater.
- *              We should split this into classes for items and other types of 
entities.
+ *       We should split this into classes for items and other types of 
entities.
  *
  * @since 0.5
  *
@@ -65,6 +66,11 @@
        private $templateFactory;
 
        /**
+        * @var LocalizedTextProvider
+        */
+       private $textProvider;
+
+       /**
         * @var EntityDataFormatProvider
         */
        private $entityDataFormatProvider;
@@ -103,6 +109,7 @@
                EntityInfoBuilderFactory $entityInfoBuilderFactory,
                LanguageFallbackChain $languageFallbackChain,
                TemplateFactory $templateFactory,
+               LocalizedTextProvider $textProvider,
                EntityDataFormatProvider $entityDataFormatProvider,
                array $dataUpdaters,
                $languageCode,
@@ -114,6 +121,7 @@
                $this->entityInfoBuilderFactory = $entityInfoBuilderFactory;
                $this->languageFallbackChain = $languageFallbackChain;
                $this->templateFactory = $templateFactory;
+               $this->textProvider = $textProvider;
                $this->entityDataFormatProvider = $entityDataFormatProvider;
                $this->dataUpdaters = $dataUpdaters;
                $this->languageCode = $languageCode;
@@ -260,7 +268,8 @@
 
                $editSectionGenerator = $this->editable ? new 
ToolbarEditSectionGenerator(
                        new RepoSpecialPageLinker(),
-                       $this->templateFactory
+                       $this->templateFactory,
+                       $this->textProvider
                ) : new EmptyEditSectionGenerator();
 
                $entityView = $this->entityViewFactory->newEntityView(
diff --git a/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php 
b/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php
index c7c5aaa..9f87cc4 100644
--- a/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php
+++ b/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php
@@ -12,6 +12,7 @@
 use Wikibase\Lib\Store\EntityInfoBuilderFactory;
 use Wikibase\Lib\Store\EntityTitleLookup;
 use Wikibase\Repo\LinkedData\EntityDataFormatProvider;
+use Wikibase\Repo\MediaWikiLocalizedTextProvider;
 use Wikibase\View\Template\TemplateFactory;
 
 /**
@@ -134,6 +135,7 @@
                        $this->entityInfoBuilderFactory,
                        $this->getLanguageFallbackChain( $userLanguage ),
                        $this->templateFactory,
+                       new MediaWikiLocalizedTextProvider( $userLanguageCode ),
                        $this->entityDataFormatProvider,
                        $this->getDataUpdaters(),
                        $userLanguageCode,
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index 7b0fe68..ebe1705 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -1569,7 +1569,8 @@
                        new MediaWikiNumberLocalizer( $wgLang ),
                        $this->settings->getSetting( 'siteLinkGroups' ),
                        $this->settings->getSetting( 'specialSiteLinkGroups' ),
-                       $this->settings->getSetting( 'badgeItems' )
+                       $this->settings->getSetting( 'badgeItems' ),
+                       new MediaWikiLocalizedTextProvider( $wgLang->getCode() )
                );
        }
 
diff --git 
a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php 
b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php
index f72eec7..4c31202 100644
--- 
a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php
+++ 
b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php
@@ -25,6 +25,7 @@
 use Wikibase\Repo\ParserOutput\ParserOutputJsConfigBuilder;
 use Wikibase\Repo\ParserOutput\ReferencedEntitiesDataUpdater;
 use Wikibase\View\EntityView;
+use Wikibase\View\LocalizedTextProvider;
 use Wikibase\View\Template\TemplateFactory;
 
 /**
@@ -166,6 +167,7 @@
                        new SqlEntityInfoBuilderFactory(),
                        $this->newLanguageFallbackChain(),
                        TemplateFactory::getDefaultInstance(),
+                       $this->getMock( LocalizedTextProvider::class ),
                        $entityDataFormatProvider,
                        $dataUpdaters,
                        'en',
diff --git a/view/src/ClaimHtmlGenerator.php b/view/src/ClaimHtmlGenerator.php
index 4c5139d..2d7fa79 100644
--- a/view/src/ClaimHtmlGenerator.php
+++ b/view/src/ClaimHtmlGenerator.php
@@ -53,18 +53,26 @@
        private $statementRankSelector = array();
 
        /**
+        * @var LocalizedTextProvider
+        */
+       private $textProvider;
+
+       /**
         * @param TemplateFactory $templateFactory
         * @param SnakHtmlGenerator $snakHtmlGenerator
         * @param NumberLocalizer $numberLocalizer
+        * @param LocalizedTextProvider $textProvider
         */
        public function __construct(
                TemplateFactory $templateFactory,
                SnakHtmlGenerator $snakHtmlGenerator,
-               NumberLocalizer $numberLocalizer
+               NumberLocalizer $numberLocalizer,
+               LocalizedTextProvider $textProvider
        ) {
                $this->snakHtmlGenerator = $snakHtmlGenerator;
                $this->templateFactory = $templateFactory;
                $this->numberLocalizer = $numberLocalizer;
+               $this->textProvider = $textProvider;
        }
 
        /**
@@ -204,10 +212,10 @@
 
                if ( !array_key_exists( $referenceCount, 
$this->referenceHeadings ) ) {
                        $formattedReferenceCount = 
$this->numberLocalizer->localizeNumber( $referenceCount );
-                       $this->referenceHeadings[ $referenceCount ] = 
htmlspecialchars( wfMessage(
+                       $this->referenceHeadings[ $referenceCount ] = 
htmlspecialchars( $this->textProvider->get(
                                'wikibase-statementview-referencescounter',
-                               $formattedReferenceCount
-                       )->text() );
+                               [ $formattedReferenceCount ]
+                       ) );
                }
 
                return $this->referenceHeadings[ $referenceCount ];
@@ -232,7 +240,7 @@
                                'wikibase-rankselector',
                                'ui-state-disabled',
                                'wikibase-rankselector-' . $rankName,
-                               htmlspecialchars( wfMessage( 
'wikibase-statementview-rank-' . $rankName )->text() )
+                               htmlspecialchars( $this->textProvider->get( 
'wikibase-statementview-rank-' . $rankName ) )
                        );
 
                        $this->statementRankSelector[ $rank ] = $rankSelector;
diff --git a/view/src/EntityTermsView.php b/view/src/EntityTermsView.php
index a8507df..6d11091 100644
--- a/view/src/EntityTermsView.php
+++ b/view/src/EntityTermsView.php
@@ -2,7 +2,6 @@
 
 namespace Wikibase\View;
 
-use Message;
 use Title;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Term\AliasGroupList;
@@ -48,22 +47,30 @@
        private $languageNameLookup;
 
        /**
+        * @var LocalizedTextProvider
+        */
+       private $textProvider;
+
+       /**
         * @param TemplateFactory $templateFactory
         * @param EditSectionGenerator|null $sectionEditLinkGenerator
         * @param LanguageNameLookup $languageNameLookup
         * @param string $languageCode Desired language of the label, 
description and aliases in the
         *  title and header section. Not necessarily identical to the 
interface language.
+        * @param LocalizedTextProvider $textProvider
         */
        public function __construct(
                TemplateFactory $templateFactory,
                EditSectionGenerator $sectionEditLinkGenerator = null,
                LanguageNameLookup $languageNameLookup,
-               $languageCode
+               $languageCode,
+               LocalizedTextProvider $textProvider
        ) {
                $this->sectionEditLinkGenerator = $sectionEditLinkGenerator;
                $this->languageCode = $languageCode;
                $this->templateFactory = $templateFactory;
                $this->languageNameLookup = $languageNameLookup;
+               $this->textProvider = $textProvider;
        }
 
        /**
@@ -112,7 +119,7 @@
 
                if ( $entityId !== null ) {
                        $id = $entityId->getSerialization();
-                       $idInParenthesesHtml = htmlspecialchars( wfMessage( 
'parentheses', $id )->text() );
+                       $idInParenthesesHtml = htmlspecialchars( 
$this->textProvider->get( 'parentheses', [ $id ] ) );
                }
 
                if ( $labels->hasTermForLanguage( $this->languageCode ) ) {
@@ -124,7 +131,7 @@
                } else {
                        return $this->templateFactory->render( 'wikibase-title',
                                'wb-empty',
-                               htmlspecialchars( wfMessage( 
'wikibase-label-empty' )->text() ),
+                               htmlspecialchars( $this->textProvider->get( 
'wikibase-label-empty' ) ),
                                $idInParenthesesHtml
                        );
                }
@@ -139,7 +146,7 @@
                if ( $descriptions->hasTermForLanguage( $this->languageCode ) ) 
{
                        $text = $descriptions->getByLanguage( 
$this->languageCode )->getText();
                } else {
-                       $text = wfMessage( 'wikibase-description-empty' 
)->text();
+                       $text = $this->textProvider->get( 
'wikibase-description-empty' );
                }
                return htmlspecialchars( $text );
        }
@@ -160,7 +167,7 @@
                                );
                        }
                } else {
-                       $aliasesHtml = htmlspecialchars( wfMessage( 
'wikibase-aliases-empty' )->text() );
+                       $aliasesHtml = htmlspecialchars( 
$this->textProvider->get( 'wikibase-aliases-empty' ) );
                }
                return $this->templateFactory->render( 
'wikibase-entitytermsview-aliases', $aliasesHtml );
        }
@@ -194,10 +201,10 @@
                }
 
                return $this->templateFactory->render( 
'wikibase-entitytermsforlanguagelistview',
-                       htmlspecialchars( $this->msg( 
'wikibase-entitytermsforlanguagelistview-language' )->text() ),
-                       htmlspecialchars( $this->msg( 
'wikibase-entitytermsforlanguagelistview-label' )->text() ),
-                       htmlspecialchars( $this->msg( 
'wikibase-entitytermsforlanguagelistview-description' )->text() ),
-                       htmlspecialchars( $this->msg( 
'wikibase-entitytermsforlanguagelistview-aliases' )->text() ),
+                       htmlspecialchars( $this->textProvider->get( 
'wikibase-entitytermsforlanguagelistview-language' ) ),
+                       htmlspecialchars( $this->textProvider->get( 
'wikibase-entitytermsforlanguagelistview-label' ) ),
+                       htmlspecialchars( $this->textProvider->get( 
'wikibase-entitytermsforlanguagelistview-description' ) ),
+                       htmlspecialchars( $this->textProvider->get( 
'wikibase-entitytermsforlanguagelistview-aliases' ) ),
                        $entityTermsForLanguageViewsHtml
                );
        }
@@ -239,7 +246,7 @@
                                $hasLabel ? '' : 'wb-empty',
                                htmlspecialchars( $hasLabel
                                        ? $labels->getByLanguage( $languageCode 
)->getText()
-                                       : $this->msg( 'wikibase-label-empty' 
)->text()
+                                       : $this->textProvider->get( 
'wikibase-label-empty' )
                                ),
                                ''
                        ),
@@ -247,7 +254,7 @@
                                $hasDescription ? '' : 'wb-empty',
                                htmlspecialchars( $hasDescription
                                        ? $descriptions->getByLanguage( 
$languageCode )->getText()
-                                       : $this->msg( 
'wikibase-description-empty' )->text()
+                                       : $this->textProvider->get( 
'wikibase-description-empty' )
                                ),
                                '',
                                ''
@@ -302,15 +309,6 @@
                        $this->languageCode,
                        $entityId
                );
-       }
-
-       /**
-        * @param string $key
-        *
-        * @return Message
-        */
-       private function msg( $key ) {
-               return wfMessage( $key );
        }
 
 }
diff --git a/view/src/EntityViewPlaceholderExpander.php 
b/view/src/EntityViewPlaceholderExpander.php
index 6b867fe..855fde8 100644
--- a/view/src/EntityViewPlaceholderExpander.php
+++ b/view/src/EntityViewPlaceholderExpander.php
@@ -31,6 +31,7 @@
  *
  * @license GPL-2.0+
  * @author Daniel Kinzler
+ * @author Adrian Heine <[email protected]>
  */
 class EntityViewPlaceholderExpander {
 
@@ -90,6 +91,11 @@
        private $languageNameLookup;
 
        /**
+        * @var LocalizedTextProvider
+        */
+       private $textProvider;
+
+       /**
         * @param TemplateFactory $templateFactory
         * @param Title $targetPage the page for which this expander is 
supposed to handle expansion.
         * @param User $user the current user
@@ -100,6 +106,7 @@
         * @param UserLanguageLookup $userLanguageLookup
         * @param ContentLanguages $termsLanguages
         * @param LanguageNameLookup $languageNameLookup
+        * @param LocalizedTextProvider $textProvider
         */
        public function __construct(
                TemplateFactory $templateFactory,
@@ -111,7 +118,8 @@
                AliasesProvider $aliasesProvider = null,
                UserLanguageLookup $userLanguageLookup,
                ContentLanguages $termsLanguages,
-               LanguageNameLookup $languageNameLookup
+               LanguageNameLookup $languageNameLookup,
+               LocalizedTextProvider $textProvider
        ) {
                $this->targetPage = $targetPage;
                $this->user = $user;
@@ -123,6 +131,7 @@
                $this->templateFactory = $templateFactory;
                $this->termsLanguages = $termsLanguages;
                $this->languageNameLookup = $languageNameLookup;
+               $this->textProvider = $textProvider;
        }
 
        /**
@@ -225,7 +234,8 @@
                        $this->templateFactory,
                        null,
                        $this->languageNameLookup,
-                       $this->uiLanguage->getCode()
+                       $this->uiLanguage->getCode(),
+                       $this->textProvider
                );
 
                $html = $entityTermsView->getEntityTermsForLanguageListView(
diff --git a/view/src/ItemView.php b/view/src/ItemView.php
index 30d90d6..f348e9b 100644
--- a/view/src/ItemView.php
+++ b/view/src/ItemView.php
@@ -35,6 +35,11 @@
        private $siteLinkGroups;
 
        /**
+        * @var LocalizedTextProvider
+        */
+       private $textProvider;
+
+       /**
         * @see EntityView::__construct
         *
         * @param TemplateFactory $templateFactory
@@ -44,6 +49,7 @@
         * @param string $languageCode
         * @param SiteLinksView $siteLinksView
         * @param string[] $siteLinkGroups
+        * @param LocalizedTextProvider $textProvider
         */
        public function __construct(
                TemplateFactory $templateFactory,
@@ -52,13 +58,15 @@
                StatementSectionsView $statementSectionsView,
                $languageCode,
                SiteLinksView $siteLinksView,
-               array $siteLinkGroups
+               array $siteLinkGroups,
+               LocalizedTextProvider $textProvider
        ) {
                parent::__construct( $templateFactory, $entityTermsView, 
$languageDirectionalityLookup, $languageCode );
 
                $this->statementSectionsView = $statementSectionsView;
                $this->siteLinksView = $siteLinksView;
                $this->siteLinkGroups = $siteLinkGroups;
+               $this->textProvider = $textProvider;
        }
 
        /**
@@ -117,7 +125,7 @@
         * @return string
         */
        protected function getHtmlForPageImage() {
-               $helpText = wfMessage( 'wikibase-pageimage-helptext' )->text();
+               $helpText = $this->textProvider->get( 
'wikibase-pageimage-helptext' );
                return $this->templateFactory->render(
                        'wikibase-pageimage',
                        htmlspecialchars( $helpText )
diff --git a/view/src/KeyNameLocalizedTextProvider.php 
b/view/src/KeyNameLocalizedTextProvider.php
new file mode 100644
index 0000000..f6a51d2
--- /dev/null
+++ b/view/src/KeyNameLocalizedTextProvider.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Wikibase\View;
+
+/**
+ * A service providing localized texts for keys
+ *
+ * @since 0.5
+ *
+ * @license GPL-2.0+
+ * @author Adrian Heine < [email protected] >
+ */
+class KeyNameLocalizedTextProvider implements LocalizedTextProvider {
+
+       /**
+        * @var string
+        */
+       private $languageCode;
+
+       /**
+        * @param string $languageCode
+        */
+       public function __construct( $languageCode ) {
+               $this->languageCode = $languageCode;
+       }
+
+       /**
+        * @param string $key
+        * @param string[] $params Parameters that could be used for generating 
the text
+        *
+        * @return string The localized text
+        */
+       public function get( $key, $params = [] ) {
+               return "($key" . ( $params !== [] ? ": " . implode( $params, ", 
" ) : "" ) . ")";
+       }
+
+       /**
+        * @param string $key
+        *
+        * @return bool
+        */
+       public function has( $key ) {
+               return true;
+       }
+
+       /**
+        * @param string $key
+        *
+        * @return string The language of the text returned for a specific key
+        */
+       public function getLanguageOf( $key ) {
+               return $this->languageCode;
+       }
+}
diff --git a/view/src/LocalizedTextProvider.php 
b/view/src/LocalizedTextProvider.php
new file mode 100644
index 0000000..ed91cbc
--- /dev/null
+++ b/view/src/LocalizedTextProvider.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Wikibase\View;
+
+/**
+ * A service providing localized texts for keys
+ *
+ * @since 0.5
+ *
+ * @license GPL-2.0+
+ * @author Adrian Heine < [email protected] >
+ */
+interface LocalizedTextProvider {
+
+       /**
+        * @param string $key
+        * @param string[] $params Parameters that could be used for generating 
the text
+        *
+        * @return string The localized text
+        */
+       public function get( $key, $params = [] );
+
+       /**
+        * @param string $key
+        *
+        * @return bool
+        */
+       public function has( $key );
+
+       /**
+        * @param string $key
+        *
+        * @return string The language of the text returned for a specific key
+        */
+       public function getLanguageOf( $key );
+}
diff --git a/view/src/PropertyView.php b/view/src/PropertyView.php
index 16c6ab6..f36a917 100644
--- a/view/src/PropertyView.php
+++ b/view/src/PropertyView.php
@@ -32,12 +32,20 @@
        private $dataTypeFactory;
 
        /**
+        * @var LocalizedTextProvider
+        */
+       private $textProvider;
+
+       /**
+        * @see EntityView::__construct
+        *
         * @param TemplateFactory $templateFactory
         * @param EntityTermsView $entityTermsView
         * @param LanguageDirectionalityLookup $languageDirectionalityLookup
         * @param StatementSectionsView $statementSectionsView
         * @param DataTypeFactory $dataTypeFactory
         * @param string $languageCode
+        * @param LocalizedTextProvider $textProvider
         */
        public function __construct(
                TemplateFactory $templateFactory,
@@ -45,12 +53,14 @@
                LanguageDirectionalityLookup $languageDirectionalityLookup,
                StatementSectionsView $statementSectionsView,
                DataTypeFactory $dataTypeFactory,
-               $languageCode
+               $languageCode,
+               LocalizedTextProvider $textProvider
        ) {
                parent::__construct( $templateFactory, $entityTermsView, 
$languageDirectionalityLookup, $languageCode );
 
                $this->statementSectionsView = $statementSectionsView;
                $this->dataTypeFactory = $dataTypeFactory;
+               $this->textProvider = $textProvider;
        }
 
        /**
@@ -91,7 +101,7 @@
        private function getHtmlForDataType( $propertyType ) {
 
                $html = $this->templateFactory->render( 'wb-section-heading',
-                       htmlspecialchars( wfMessage( 
'wikibase-propertypage-datatype' )->text() ),
+                       htmlspecialchars( $this->textProvider->get( 
'wikibase-propertypage-datatype' ) ),
                        'datatype',
                        'wikibase-propertypage-datatype'
                );
@@ -102,7 +112,7 @@
                        $dataTypeLabelHtml = htmlspecialchars( 
$dataType->getLabel( $this->languageCode ) );
                } catch ( OutOfBoundsException $ex ) {
                        $dataTypeLabelHtml .= '<span class="error">' .
-                               htmlspecialchars( wfMessage( 
'wikibase-propertypage-bad-datatype', $propertyType )->text() ) .
+                               htmlspecialchars( $this->textProvider->get( 
'wikibase-propertypage-bad-datatype', [ $propertyType ] ) ) .
                                '</span>';
                }
                $html .= $this->templateFactory->render( 
'wikibase-propertyview-datatype', $dataTypeLabelHtml );
diff --git a/view/src/SiteLinksView.php b/view/src/SiteLinksView.php
index 85c3c9d..1b5f230 100644
--- a/view/src/SiteLinksView.php
+++ b/view/src/SiteLinksView.php
@@ -58,6 +58,11 @@
        private $specialSiteLinkGroups;
 
        /**
+        * @var LocalizedTextProvider
+        */
+       private $textProvider;
+
+       /**
         * @param TemplateFactory $templateFactory
         * @param SiteList $sites
         * @param EditSectionGenerator $sectionEditLinkGenerator
@@ -65,6 +70,7 @@
         * @param LanguageNameLookup $languageNameLookup
         * @param string[] $badgeItems
         * @param string[] $specialSiteLinkGroups
+        * @param LocalizedTextProvider $textProvider
         */
        public function __construct(
                TemplateFactory $templateFactory,
@@ -73,7 +79,8 @@
                EntityIdFormatter $entityIdFormatter,
                LanguageNameLookup $languageNameLookup,
                array $badgeItems,
-               array $specialSiteLinkGroups
+               array $specialSiteLinkGroups,
+               LocalizedTextProvider $textProvider
        ) {
                $this->sites = $sites;
                $this->sectionEditLinkGenerator = $sectionEditLinkGenerator;
@@ -82,6 +89,7 @@
                $this->templateFactory = $templateFactory;
                $this->languageNameLookup = $languageNameLookup;
                $this->entityIdFormatter = $entityIdFormatter;
+               $this->textProvider = $textProvider;
        }
 
        /**
@@ -125,7 +133,7 @@
        private function getHtmlForSectionHeading( $heading ) {
                $html = $this->templateFactory->render(
                        'wb-section-heading',
-                       htmlspecialchars( wfMessage( $heading )->text() ),
+                       htmlspecialchars( $this->textProvider->get( $heading ) 
),
                        'sitelinks', // ID - TODO: should not be added if 
output page is not the entity's page
                        $heading
                );
@@ -154,14 +162,16 @@
                        'wikibase-sitelinkgroupview',
                        // TODO: support entity-id as prefix for element IDs.
                        htmlspecialchars( 'sitelinks-' . $group, ENT_QUOTES ),
-                       htmlspecialchars( wfMessage( 'wikibase-sitelinks-' . 
$group )->text() ),
-                       htmlspecialchars( wfMessage( 'parentheses',
-                               wfMessage(
+                       htmlspecialchars( $this->textProvider->get( 
'wikibase-sitelinks-' . $group ) ),
+                       htmlspecialchars( $this->textProvider->get( 
'parentheses', [
+                               $this->textProvider->get(
                                        'wikibase-sitelinks-counter',
-                                       $count, // FIXME: NumberLocalizer
-                                       0
-                               )->text()
-                       )->text() ),
+                                       [
+                                               $count, // FIXME: 
NumberLocalizer
+                                               0
+                                       ]
+                               )
+                       ] ) ),
                        $this->templateFactory->render(
                                'wikibase-sitelinklistview',
                                $this->getHtmlForSiteLinks( $siteLinksForTable, 
$group === 'special' )
@@ -279,8 +289,8 @@
                // FIXME: this is a quickfix to allow a custom site-name for 
the site groups which are
                // special according to the specialSiteLinkGroups setting
                if ( $isSpecialGroup ) {
-                       $siteNameMsg = wfMessage( 
'wikibase-sitelinks-sitename-' . $siteId );
-                       $siteName = $siteNameMsg->exists() ? 
$siteNameMsg->text() : $siteId;
+                       $siteNameMsg = 'wikibase-sitelinks-sitename-' . $siteId;
+                       $siteName = $this->textProvider->has( $siteNameMsg ) ? 
$this->textProvider->get( $siteNameMsg ) : $siteId;
                } else {
                        // TODO: get an actual site name rather then just the 
language
                        $siteName = $this->languageNameLookup->getName( 
$languageCode );
diff --git a/view/src/SnakHtmlGenerator.php b/view/src/SnakHtmlGenerator.php
index 93b9238..fce3868 100644
--- a/view/src/SnakHtmlGenerator.php
+++ b/view/src/SnakHtmlGenerator.php
@@ -20,6 +20,7 @@
  * @author Pragunbhutani
  * @author Katie Filbert < [email protected] >
  * @author Daniel Kinzler
+ * @author Adrian Heine <[email protected]>
  */
 class SnakHtmlGenerator {
 
@@ -39,16 +40,23 @@
        private $propertyIdFormatter;
 
        /**
+        * @var LocalizedTextProvider
+        */
+       private $textProvider;
+
+       /**
         * @param TemplateFactory $templateFactory
         * @param SnakFormatter $snakFormatter
         * @param EntityIdFormatter $propertyIdFormatter
+        * @param LocalizedTextProvider $textProvider
         *
         * @throws InvalidArgumentException
         */
        public function __construct(
                TemplateFactory $templateFactory,
                SnakFormatter $snakFormatter,
-               EntityIdFormatter $propertyIdFormatter
+               EntityIdFormatter $propertyIdFormatter,
+               LocalizedTextProvider $textProvider
        ) {
                if ( $snakFormatter->getFormat() !== SnakFormatter::FORMAT_HTML
                                && $snakFormatter->getFormat() !== 
SnakFormatter::FORMAT_HTML_WIDGET ) {
@@ -59,6 +67,7 @@
                $this->snakFormatter = $snakFormatter;
                $this->propertyIdFormatter = $propertyIdFormatter;
                $this->templateFactory = $templateFactory;
+               $this->textProvider = $textProvider;
        }
 
        /**
@@ -137,14 +146,14 @@
         * @return string HTML
         */
        private function getInvalidSnakMessage() {
-               return htmlspecialchars( wfMessage( 
'wikibase-snakformat-invalid-value' )->text() );
+               return htmlspecialchars( $this->textProvider->get( 
'wikibase-snakformat-invalid-value' ) );
        }
 
        /**
         * @return string HTML
         */
        private function getPropertyNotFoundMessage() {
-               return htmlspecialchars( wfMessage( 
'wikibase-snakformat-propertynotfound' )->text() );
+               return htmlspecialchars( $this->textProvider->get( 
'wikibase-snakformat-propertynotfound' ) );
        }
 
 }
diff --git a/view/src/StatementSectionsView.php 
b/view/src/StatementSectionsView.php
index 1865a3c..b8aca88 100644
--- a/view/src/StatementSectionsView.php
+++ b/view/src/StatementSectionsView.php
@@ -12,6 +12,7 @@
  *
  * @license GPL-2.0+
  * @author Thiemo Mättig
+ * @author Adrian Heine <[email protected]>
  */
 class StatementSectionsView {
 
@@ -30,14 +31,21 @@
         */
        private $statementListView;
 
+       /**
+        * @var LocalizedTextProvider
+        */
+       private $textProvider;
+
        public function __construct(
                TemplateFactory $templateFactory,
                StatementGrouper $statementGrouper,
-               StatementGroupListView $statementListView
+               StatementGroupListView $statementListView,
+               LocalizedTextProvider $textProvider
        ) {
                $this->templateFactory = $templateFactory;
                $this->statementGrouper = $statementGrouper;
                $this->statementListView = $statementListView;
+               $this->textProvider = $textProvider;
        }
 
        /**
@@ -92,7 +100,7 @@
                // TODO: Add link to SpecialPage that allows adding a new 
statement.
                return $this->templateFactory->render(
                        'wb-section-heading',
-                       htmlspecialchars( wfMessage( $messageKey )->text() ),
+                       htmlspecialchars( $this->textProvider->get( $messageKey 
) ),
                        $id,
                        $className
                );
diff --git a/view/src/ToolbarEditSectionGenerator.php 
b/view/src/ToolbarEditSectionGenerator.php
index 8fa443d..c4ca711 100644
--- a/view/src/ToolbarEditSectionGenerator.php
+++ b/view/src/ToolbarEditSectionGenerator.php
@@ -31,12 +31,23 @@
        private $templateFactory;
 
        /**
+        * @var LocalizedTextProvider
+        */
+       private $textProvider;
+
+       /**
         * @param SpecialPageLinker $specialPageLinker
         * @param TemplateFactory $templateFactory
+        * @param LocalizedTextProvider $textProvider
         */
-       public function __construct( SpecialPageLinker $specialPageLinker, 
TemplateFactory $templateFactory ) {
+       public function __construct(
+               SpecialPageLinker $specialPageLinker,
+               TemplateFactory $templateFactory,
+               LocalizedTextProvider $textProvider
+       ) {
                $this->templateFactory = $templateFactory;
                $this->specialPageLinker = $specialPageLinker;
+               $this->textProvider = $textProvider;
        }
 
        public function getSiteLinksEditSection( EntityId $entityId = null ) {
@@ -81,7 +92,7 @@
        ) {
 
                $editUrl = $this->getEditUrl( $specialPageName, 
$specialPageUrlParams );
-               $toolbarButton = $this->getToolbarButton( 'edit', wfMessage( 
'wikibase-edit' )->text(), $editUrl );
+               $toolbarButton = $this->getToolbarButton( 'edit', 
$this->textProvider->get( 'wikibase-edit' ), $editUrl );
 
                return $this->getToolbarContainer(
                        $this->templateFactory->render( 'wikibase-toolbar', '', 
$toolbarButton )
diff --git a/view/src/ViewFactory.php b/view/src/ViewFactory.php
index 5a06de0..55deb41 100644
--- a/view/src/ViewFactory.php
+++ b/view/src/ViewFactory.php
@@ -11,6 +11,7 @@
 use Wikibase\LanguageFallbackChain;
 use Wikibase\Lib\LanguageNameLookup;
 use Wikibase\Lib\SnakFormatter;
+use Wikibase\View\LocalizedTextProvider;
 use Wikibase\View\Template\TemplateFactory;
 
 /**
@@ -92,6 +93,11 @@
        private $badgeItems;
 
        /**
+        * @var LocalizedTextProvider
+        */
+       private $textProvider;
+
+       /**
         * @param EntityIdFormatterFactory $htmlIdFormatterFactory
         * @param EntityIdFormatterFactory $plainTextIdFormatterFactory
         * @param HtmlSnakFormatterFactory $htmlSnakFormatterFactory
@@ -105,6 +111,7 @@
         * @param string[] $siteLinkGroups
         * @param string[] $specialSiteLinkGroups
         * @param string[] $badgeItems
+        * @param LocalizedTextProvider $textProvider
         *
         * @throws InvalidArgumentException
         */
@@ -121,7 +128,8 @@
                NumberLocalizer $numberLocalizer,
                array $siteLinkGroups = array(),
                array $specialSiteLinkGroups = array(),
-               array $badgeItems = array()
+               array $badgeItems = array(),
+               LocalizedTextProvider $textProvider
        ) {
                if ( !$this->hasValidOutputFormat( $htmlIdFormatterFactory, 
'text/html' )
                        || !$this->hasValidOutputFormat( 
$plainTextIdFormatterFactory, 'text/plain' )
@@ -142,6 +150,7 @@
                $this->siteLinkGroups = $siteLinkGroups;
                $this->specialSiteLinkGroups = $specialSiteLinkGroups;
                $this->badgeItems = $badgeItems;
+               $this->textProvider = $textProvider;
        }
 
        /**
@@ -196,7 +205,8 @@
                        
$this->plainTextIdFormatterFactory->getEntityIdFormatter( 
$labelDescriptionLookup ),
                        $this->languageNameLookup,
                        $this->badgeItems,
-                       $this->specialSiteLinkGroups
+                       $this->specialSiteLinkGroups,
+                       $this->textProvider
                );
 
                return new ItemView(
@@ -206,7 +216,8 @@
                        $statementSectionsView,
                        $languageCode,
                        $siteLinksView,
-                       $this->siteLinkGroups
+                       $this->siteLinkGroups,
+                       $this->textProvider
                );
        }
 
@@ -241,7 +252,8 @@
                        $this->languageDirectionalityLookup,
                        $statementSectionsView,
                        $this->dataTypeFactory,
-                       $languageCode
+                       $languageCode,
+                       $this->textProvider
                );
        }
 
@@ -270,12 +282,14 @@
                $snakHtmlGenerator = new SnakHtmlGenerator(
                        $this->templateFactory,
                        $snakFormatter,
-                       $propertyIdFormatter
+                       $propertyIdFormatter,
+                       $this->textProvider
                );
                $claimHtmlGenerator = new ClaimHtmlGenerator(
                        $this->templateFactory,
                        $snakHtmlGenerator,
-                       $this->numberLocalizer
+                       $this->numberLocalizer,
+                       $this->textProvider
                );
                $statementGroupListView = new StatementGroupListView(
                        $this->templateFactory,
@@ -287,7 +301,8 @@
                return new StatementSectionsView(
                        $this->templateFactory,
                        $this->statementGrouper,
-                       $statementGroupListView
+                       $statementGroupListView,
+                       $this->textProvider
                );
        }
 
@@ -302,7 +317,8 @@
                        $this->templateFactory,
                        $editSectionGenerator,
                        $this->languageNameLookup,
-                       $languageCode
+                       $languageCode,
+                       $this->textProvider
                );
        }
 
diff --git a/view/tests/phpunit/ClaimHtmlGeneratorTest.php 
b/view/tests/phpunit/ClaimHtmlGeneratorTest.php
index c19a61e..5e89133 100644
--- a/view/tests/phpunit/ClaimHtmlGeneratorTest.php
+++ b/view/tests/phpunit/ClaimHtmlGeneratorTest.php
@@ -12,6 +12,7 @@
 use Wikibase\DataModel\Snak\SnakList;
 use Wikibase\DataModel\Statement\Statement;
 use Wikibase\View\ClaimHtmlGenerator;
+use Wikibase\View\KeyNameLocalizedTextProvider;
 use Wikibase\View\SnakHtmlGenerator;
 use Wikibase\View\Template\TemplateFactory;
 
@@ -61,7 +62,8 @@
                $claimHtmlGenerator = new ClaimHtmlGenerator(
                        $templateFactory,
                        $snakHtmlGenerator,
-                       new BasicNumberLocalizer()
+                       new BasicNumberLocalizer(),
+                       new KeyNameLocalizedTextProvider( 'lkt' )
                );
 
                $html = $claimHtmlGenerator->getHtmlForClaim( $statement, 
'edit' );
diff --git a/view/tests/phpunit/EmptyEditSectionGeneratorTest.php 
b/view/tests/phpunit/EmptyEditSectionGeneratorTest.php
index 120340e..10c5fcf 100644
--- a/view/tests/phpunit/EmptyEditSectionGeneratorTest.php
+++ b/view/tests/phpunit/EmptyEditSectionGeneratorTest.php
@@ -2,7 +2,7 @@
 
 namespace Wikibase\View\Tests;
 
-use MediaWikiTestCase;
+use PHPUnit_Framework_TestCase;
 use Wikibase\DataModel\Entity\PropertyId;
 use Wikibase\DataModel\Snak\PropertyNoValueSnak;
 use Wikibase\DataModel\Statement\Statement;
@@ -17,7 +17,7 @@
  * @license GPL-2.0+
  * @author Adrian Heine < [email protected] >
  */
-class EmptyEditSectionGeneratorTest extends MediaWikiTestCase {
+class EmptyEditSectionGeneratorTest extends PHPUnit_Framework_TestCase {
 
        /**
         * @dataProvider getAddStatementToGroupSectionProvider
diff --git a/view/tests/phpunit/EntityTermsViewTest.php 
b/view/tests/phpunit/EntityTermsViewTest.php
index 992c216..734c3e4 100644
--- a/view/tests/phpunit/EntityTermsViewTest.php
+++ b/view/tests/phpunit/EntityTermsViewTest.php
@@ -2,8 +2,7 @@
 
 namespace Wikibase\View\Tests;
 
-use MediaWikiLangTestCase;
-use MessageCache;
+use PHPUnit_Framework_TestCase;
 use Title;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
@@ -11,6 +10,8 @@
 use Wikibase\Lib\LanguageNameLookup;
 use Wikibase\View\EditSectionGenerator;
 use Wikibase\View\EntityTermsView;
+use Wikibase\View\KeyNameLocalizedTextProvider;
+use Wikibase\View\LocalizedTextProvider;
 use Wikibase\View\Template\TemplateFactory;
 use Wikibase\View\TextInjector;
 
@@ -22,7 +23,6 @@
  * @uses Wikibase\View\Template\TemplateRegistry
  * @uses Wikibase\View\TextInjector
  *
- * @group Database
  * @group Wikibase
  * @group WikibaseView
  *
@@ -30,18 +30,13 @@
  * @author Bene* < [email protected] >
  * @author Thiemo Mättig
  */
-class EntityTermsViewTest extends MediaWikiLangTestCase {
-
-       protected function setUp() {
-               parent::setUp();
-
-               $this->setUserLang( 'qqx' );
-       }
+class EntityTermsViewTest extends PHPUnit_Framework_TestCase {
 
        private function getEntityTermsView(
                $editSectionCalls = 0,
                $languageNameCalls = 0,
-               $languageCode = 'en'
+               $languageCode = 'en',
+               LocalizedTextProvider $textProvider = null
        ) {
                $editSectionGenerator = $this->getMock( 
EditSectionGenerator::class );
                $editSectionGenerator->expects( $this->exactly( 
$editSectionCalls ) )
@@ -55,11 +50,16 @@
                                return "<LANGUAGENAME-$languageCode>";
                        } ) );
 
+               if ( $textProvider === null ) {
+                       $textProvider = new KeyNameLocalizedTextProvider( 'lkt' 
);
+               }
+
                return new EntityTermsView(
                        TemplateFactory::getDefaultInstance(),
                        $editSectionGenerator,
                        $languageNameLookup,
-                       $languageCode
+                       $languageCode,
+                       $textProvider
                );
        }
 
@@ -260,19 +260,22 @@
        }
 
        public function testGetEntityTermsForLanguageListView_isEscaped() {
-               MessageCache::singleton()->enable();
-               $this->setUserLang( 'en' );
-               $this->insertPage( 
'MediaWiki:wikibase-entitytermsforlanguagelistview-language', "''RAW''" );
+               $textProvider = $this->getMock( LocalizedTextProvider::class );
+               $textProvider->expects( $this->any() )
+                       ->method( 'get' )
+                       ->will( $this->returnCallback( function( $key ) {
+                               return $key === 
'wikibase-entitytermsforlanguagelistview-language' ? '"RAW"' : "($key)";
+                       } ) );
 
                $item = new Item(
                        new ItemId( 'Q1' ),
                        new Fingerprint()
                );
-               $view = $this->getEntityTermsView();
+               $view = $this->getEntityTermsView( 0, 0, 'en', $textProvider );
                $html = $view->getEntityTermsForLanguageListView( $item, $item, 
$item, [] );
 
-               $this->assertContains( '&#039;&#039;RAW&#039;&#039;', $html );
-               $this->assertNotContains( "'RAW'", $html );
+               $this->assertContains( '&quot;RAW&quot;', $html );
+               $this->assertNotContains( '"RAW"', $html );
        }
 
        public function testGetEntityTermsForLanguageListView_isMarkedAsEmpty() 
{
diff --git a/view/tests/phpunit/EntityViewPlaceholderExpanderTest.php 
b/view/tests/phpunit/EntityViewPlaceholderExpanderTest.php
index 0e3fd4f..df041d0 100644
--- a/view/tests/phpunit/EntityViewPlaceholderExpanderTest.php
+++ b/view/tests/phpunit/EntityViewPlaceholderExpanderTest.php
@@ -3,7 +3,7 @@
 namespace Wikibase\View\Tests;
 
 use Language;
-use MediaWikiTestCase;
+use PHPUnit_Framework_TestCase;
 use Title;
 use User;
 use Wikibase\DataModel\Entity\Item;
@@ -13,6 +13,7 @@
 use Wikibase\Lib\MediaWikiContentLanguages;
 use Wikibase\Lib\UserLanguageLookup;
 use Wikibase\View\EntityViewPlaceholderExpander;
+use Wikibase\View\KeyNameLocalizedTextProvider;
 use Wikibase\View\Template\TemplateFactory;
 
 /**
@@ -29,7 +30,7 @@
  * @license GPL-2.0+
  * @author Daniel Kinzler
  */
-class EntityViewPlaceholderExpanderTest extends MediaWikiTestCase {
+class EntityViewPlaceholderExpanderTest extends PHPUnit_Framework_TestCase {
 
        /**
         * @param User $user
@@ -65,7 +66,8 @@
                        $aliasesProvider,
                        $userLanguages,
                        new MediaWikiContentLanguages(),
-                       $languageNameLookup
+                       $languageNameLookup,
+                       new KeyNameLocalizedTextProvider( 'lkt' )
                );
        }
 
@@ -145,10 +147,10 @@
                $itemId = $item->getId();
 
                $expander = $this->newExpander( $this->newUser( true ), $item, 
$itemId, $aliasesProvider );
-               $this->assertArrayEquals( array(), 
$expander->getExtraUserLanguages() );
+               $this->assertEquals( array(), 
$expander->getExtraUserLanguages() );
 
                $expander = $this->newExpander( $this->newUser(), $item, 
$itemId, $aliasesProvider );
-               $this->assertArrayEquals( array( 'de', 'ru' ), 
$expander->getExtraUserLanguages() );
+               $this->assertEquals( array( 'de', 'ru' ), array_values( 
$expander->getExtraUserLanguages() ) );
        }
 
 }
diff --git a/view/tests/phpunit/EntityViewTest.php 
b/view/tests/phpunit/EntityViewTest.php
index 991685a..ccd2a82 100644
--- a/view/tests/phpunit/EntityViewTest.php
+++ b/view/tests/phpunit/EntityViewTest.php
@@ -2,7 +2,7 @@
 
 namespace Wikibase\View\Tests;
 
-use MediaWikiLangTestCase;
+use PHPUnit_Framework_TestCase;
 use Wikibase\DataModel\Entity\EntityDocument;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Statement\Statement;
@@ -18,7 +18,7 @@
  * @author H. Snater < [email protected] >
  * @author Daniel Kinzler
  */
-abstract class EntityViewTest extends MediaWikiLangTestCase {
+abstract class EntityViewTest extends PHPUnit_Framework_TestCase {
 
        /**
         * @param EntityId $id
diff --git a/view/tests/phpunit/ItemViewTest.php 
b/view/tests/phpunit/ItemViewTest.php
index 2048a53..54bff61 100644
--- a/view/tests/phpunit/ItemViewTest.php
+++ b/view/tests/phpunit/ItemViewTest.php
@@ -10,6 +10,7 @@
 use Wikibase\View\EntityTermsView;
 use Wikibase\View\ItemView;
 use Wikibase\View\LanguageDirectionalityLookup;
+use Wikibase\View\LocalizedTextProvider;
 use Wikibase\View\SiteLinksView;
 use Wikibase\View\StatementSectionsView;
 use Wikibase\View\Template\TemplateFactory;
@@ -74,7 +75,8 @@
                        $this->getMockBuilder( SiteLinksView::class )
                                ->disableOriginalConstructor()
                                ->getMock(),
-                       array()
+                       array(),
+                       $this->getMock( LocalizedTextProvider::class )
                );
 
                return array(
diff --git a/view/tests/phpunit/PropertyViewTest.php 
b/view/tests/phpunit/PropertyViewTest.php
index e0819d1..537253f 100644
--- a/view/tests/phpunit/PropertyViewTest.php
+++ b/view/tests/phpunit/PropertyViewTest.php
@@ -11,6 +11,7 @@
 use Wikibase\DataModel\Statement\StatementList;
 use Wikibase\View\EntityTermsView;
 use Wikibase\View\LanguageDirectionalityLookup;
+use Wikibase\View\LocalizedTextProvider;
 use Wikibase\View\PropertyView;
 use Wikibase\View\StatementSectionsView;
 use Wikibase\View\Template\TemplateFactory;
@@ -85,7 +86,8 @@
                                ->disableOriginalConstructor()
                                ->getMock(),
                        $this->getDataTypeFactory(),
-                       'en'
+                       'en',
+                       $this->getMock( LocalizedTextProvider::class )
                );
 
                return array(
diff --git a/view/tests/phpunit/SiteLinksViewTest.php 
b/view/tests/phpunit/SiteLinksViewTest.php
index cc77a9f..9fdff34 100644
--- a/view/tests/phpunit/SiteLinksViewTest.php
+++ b/view/tests/phpunit/SiteLinksViewTest.php
@@ -2,7 +2,7 @@
 
 namespace Wikibase\View\Tests;
 
-use MediaWikiTestCase;
+use PHPUnit_Framework_TestCase;
 use Site;
 use SiteList;
 use Wikibase\DataModel\Entity\EntityId;
@@ -11,6 +11,7 @@
 use Wikibase\DataModel\SiteLink;
 use Wikibase\Lib\LanguageNameLookup;
 use Wikibase\View\EditSectionGenerator;
+use Wikibase\View\KeyNameLocalizedTextProvider;
 use Wikibase\View\SiteLinksView;
 use Wikibase\View\Template\TemplateFactory;
 use Wikibase\View\Template\TemplateRegistry;
@@ -30,13 +31,7 @@
  * @author Bene* < [email protected] >
  * @author Thiemo Mättig
  */
-class SiteLinksViewTest extends MediaWikiTestCase {
-
-       protected function setUp() {
-               parent::setUp();
-
-               $this->setUserLang( 'qqx' );
-       }
+class SiteLinksViewTest extends PHPUnit_Framework_TestCase {
 
        public function testNoGroups() {
                $html = $this->newInstance()->getHtml( array(), null, array() );
@@ -157,7 +152,8 @@
                                'Q42' => 'wb-badge-featuredarticle',
                                'Q12' => 'wb-badge-goodarticle'
                        ),
-                       array( 'special group' )
+                       array( 'special group' ),
+                       new KeyNameLocalizedTextProvider( 'lkt' )
                );
        }
 
diff --git a/view/tests/phpunit/SnakHtmlGeneratorTest.php 
b/view/tests/phpunit/SnakHtmlGeneratorTest.php
index 0ffdf25..449f429 100644
--- a/view/tests/phpunit/SnakHtmlGeneratorTest.php
+++ b/view/tests/phpunit/SnakHtmlGeneratorTest.php
@@ -11,6 +11,7 @@
 use Wikibase\DataModel\Snak\PropertyValueSnak;
 use Wikibase\DataModel\Snak\Snak;
 use Wikibase\Lib\SnakFormatter;
+use Wikibase\View\KeyNameLocalizedTextProvider;
 use Wikibase\View\SnakHtmlGenerator;
 use Wikibase\View\Template\TemplateFactory;
 
@@ -54,7 +55,8 @@
                return new SnakHtmlGenerator(
                        TemplateFactory::getDefaultInstance(),
                        $snakFormatter,
-                       $propertyIdFormatter
+                       $propertyIdFormatter,
+                       new KeyNameLocalizedTextProvider( 'lkt' )
                );
        }
 
diff --git a/view/tests/phpunit/StatementGroupListViewTest.php 
b/view/tests/phpunit/StatementGroupListViewTest.php
index 4eee803..90b0a43 100644
--- a/view/tests/phpunit/StatementGroupListViewTest.php
+++ b/view/tests/phpunit/StatementGroupListViewTest.php
@@ -3,7 +3,7 @@
 namespace Wikibase\View\Tests;
 
 use DataValues\StringValue;
-use MediaWikiLangTestCase;
+use PHPUnit_Framework_TestCase;
 use Wikibase\DataModel\Entity\EntityIdValue;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\Entity\PropertyId;
@@ -33,15 +33,7 @@
  * @author Bene* < [email protected] >
  * @author Katie Filbert < [email protected] >
  */
-class StatementGroupListViewTest extends MediaWikiLangTestCase {
-
-       protected function setUp() {
-               parent::setUp();
-
-               $this->setMwGlobals( array(
-                       'wgArticlePath' => '/wiki/$1'
-               ) );
-       }
+class StatementGroupListViewTest extends PHPUnit_Framework_TestCase {
 
        public function testGetHtml() {
                $propertyId = new PropertyId( 'P77' );
diff --git a/view/tests/phpunit/StatementSectionsViewTest.php 
b/view/tests/phpunit/StatementSectionsViewTest.php
index f2c6496..6a02c02 100644
--- a/view/tests/phpunit/StatementSectionsViewTest.php
+++ b/view/tests/phpunit/StatementSectionsViewTest.php
@@ -3,10 +3,11 @@
 namespace Wikibase\View\Tests;
 
 use InvalidArgumentException;
-use MediaWikiTestCase;
+use PHPUnit_Framework_TestCase;
 use Wikibase\DataModel\Services\Statement\Grouper\StatementGrouper;
 use Wikibase\DataModel\Snak\PropertyNoValueSnak;
 use Wikibase\DataModel\Statement\StatementList;
+use Wikibase\View\KeyNameLocalizedTextProvider;
 use Wikibase\View\StatementGroupListView;
 use Wikibase\View\StatementSectionsView;
 use Wikibase\View\Template\TemplateFactory;
@@ -25,13 +26,7 @@
  * @license GPL-2.0+
  * @author Thiemo Mättig
  */
-class StatementSectionsViewTest extends MediaWikiTestCase {
-
-       protected function setUp() {
-               parent::setUp();
-
-               $this->setUserLang( 'qqx' );
-       }
+class StatementSectionsViewTest extends PHPUnit_Framework_TestCase {
 
        private function newInstance( array $statementLists = array() ) {
                $templateFactory = new TemplateFactory( new TemplateRegistry( 
array(
@@ -53,7 +48,8 @@
                return new StatementSectionsView(
                        $templateFactory,
                        $statementGrouper,
-                       $statementListView
+                       $statementListView,
+                       new KeyNameLocalizedTextProvider( 'lkt' )
                );
        }
 
diff --git a/view/tests/phpunit/Template/TemplateRegistryTest.php 
b/view/tests/phpunit/Template/TemplateRegistryTest.php
index a6e9f7f..9ed1514 100644
--- a/view/tests/phpunit/Template/TemplateRegistryTest.php
+++ b/view/tests/phpunit/Template/TemplateRegistryTest.php
@@ -2,6 +2,7 @@
 
 namespace Wikibase\View\Tests\Template;
 
+use PHPUnit_Framework_TestCase;
 use Wikibase\View\Template\TemplateRegistry;
 
 /**
@@ -13,7 +14,7 @@
  * @license GPL-2.0+
  * @author Thiemo Mättig
  */
-class TemplateRegistryTest extends \MediaWikiTestCase {
+class TemplateRegistryTest extends PHPUnit_Framework_TestCase {
 
        public function testCanConstructWithEmptyArray() {
                $registry = new TemplateRegistry( array() );
diff --git a/view/tests/phpunit/ToolbarEditSectionGeneratorTest.php 
b/view/tests/phpunit/ToolbarEditSectionGeneratorTest.php
index 9a48e86..77f85f8 100644
--- a/view/tests/phpunit/ToolbarEditSectionGeneratorTest.php
+++ b/view/tests/phpunit/ToolbarEditSectionGeneratorTest.php
@@ -2,11 +2,12 @@
 
 namespace Wikibase\View\Tests;
 
-use MediaWikiTestCase;
+use PHPUnit_Framework_TestCase;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\PropertyId;
 use Wikibase\DataModel\Snak\PropertyNoValueSnak;
 use Wikibase\DataModel\Statement\Statement;
+use Wikibase\View\LocalizedTextProvider;
 use Wikibase\View\SpecialPageLinker;
 use Wikibase\View\Template\TemplateFactory;
 use Wikibase\View\ToolbarEditSectionGenerator;
@@ -26,7 +27,7 @@
  * @author Daniel Kinzler
  * @author Adrian Heine
  */
-class ToolbarEditSectionGeneratorTest extends MediaWikiTestCase {
+class ToolbarEditSectionGeneratorTest extends PHPUnit_Framework_TestCase {
 
        /**
         * @dataProvider getAddStatementToGroupSectionProvider
@@ -112,7 +113,11 @@
 
                $templateFactory = TemplateFactory::getDefaultInstance();
 
-               return new ToolbarEditSectionGenerator( $specialPageLinker, 
$templateFactory );
+               return new ToolbarEditSectionGenerator(
+                       $specialPageLinker,
+                       $templateFactory,
+                       $this->getMock( LocalizedTextProvider::class )
+               );
        }
 
 }
diff --git a/view/tests/phpunit/ViewFactoryTest.php 
b/view/tests/phpunit/ViewFactoryTest.php
index 58f1661..223b7a7 100644
--- a/view/tests/phpunit/ViewFactoryTest.php
+++ b/view/tests/phpunit/ViewFactoryTest.php
@@ -18,6 +18,7 @@
 use Wikibase\View\HtmlSnakFormatterFactory;
 use Wikibase\View\ItemView;
 use Wikibase\View\LanguageDirectionalityLookup;
+use Wikibase\View\LocalizedTextProvider;
 use Wikibase\View\PropertyView;
 use Wikibase\View\StatementSectionsView;
 use Wikibase\View\ViewFactory;
@@ -76,7 +77,8 @@
                        new BasicNumberLocalizer(),
                        array(),
                        array(),
-                       array()
+                       array(),
+                       $this->getMock( LocalizedTextProvider::class )
                );
        }
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I96ec3c211c338d3ab8df3ecfebec7370628a848f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Heine <[email protected]>

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

Reply via email to