Daniel Kinzler has uploaded a new change for review.

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

Change subject: Language fallback for labels of referenced items.
......................................................................

Language fallback for labels of referenced items.

Change-Id: I3973b059ec9ea03cd3cbcdd672ee1a0c8432d262
---
M lib/includes/LanguageFallbackChain.php
M lib/tests/phpunit/LanguageFallbackChainTest.php
M repo/includes/EntityParserOutputGenerator.php
M repo/includes/EntityParserOutputGeneratorFactory.php
4 files changed, 36 insertions(+), 8 deletions(-)


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

diff --git a/lib/includes/LanguageFallbackChain.php 
b/lib/includes/LanguageFallbackChain.php
index 4bd2f7d..27f8a76 100644
--- a/lib/includes/LanguageFallbackChain.php
+++ b/lib/includes/LanguageFallbackChain.php
@@ -39,6 +39,21 @@
        }
 
        /**
+        * Returns the language codes of the languages in the fallback chain.
+        *
+        * @return string[]
+        */
+       public function getLanguageCodes() {
+               $codes = array();
+
+               foreach ( $this->chain as $language ) {
+                       $codes[] = $language->getLanguageCode();
+               }
+
+               return $codes;
+       }
+
+       /**
         * Try to fetch the best value in a multilingual data array.
         *
         * @param string[]|array[] $data Multilingual data with language codes 
as keys
diff --git a/lib/tests/phpunit/LanguageFallbackChainTest.php 
b/lib/tests/phpunit/LanguageFallbackChainTest.php
index e1294d5..ff56411 100644
--- a/lib/tests/phpunit/LanguageFallbackChainTest.php
+++ b/lib/tests/phpunit/LanguageFallbackChainTest.php
@@ -3,7 +3,9 @@
 namespace Wikibase\Test;
 
 use Language;
+use Wikibase\LanguageFallbackChain;
 use Wikibase\LanguageFallbackChainFactory;
+use Wikibase\LanguageWithConversion;
 
 /**
  * @covers Wikibase\LanguageFallbackChain
@@ -198,4 +200,19 @@
                );
        }
 
+       /**
+        */
+       public function testGetLanguageCodes() {
+               $chain = new LanguageFallbackChain( array(
+                       LanguageWithConversion::factory( 'de-ch' ),
+                       LanguageWithConversion::factory( 'de' ),
+                       LanguageWithConversion::factory( 'en' ),
+               ) );
+
+               $codes = $chain->getLanguageCodes();
+
+               $expected = array( 'de-ch', 'de', 'en' );
+               $this->assertEquals( $expected, $codes );
+       }
+
 }
diff --git a/repo/includes/EntityParserOutputGenerator.php 
b/repo/includes/EntityParserOutputGenerator.php
index 767a319..9f85098 100644
--- a/repo/includes/EntityParserOutputGenerator.php
+++ b/repo/includes/EntityParserOutputGenerator.php
@@ -7,7 +7,6 @@
 use ValueFormatters\ValueFormatter;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\Item;
-use Wikibase\DataModel\Entity\Property;
 use Wikibase\DataModel\SiteLinkList;
 use Wikibase\DataModel\StatementListProvider;
 use Wikibase\Lib\Store\EntityInfoBuilderFactory;
@@ -221,10 +220,9 @@
                $entityInfoBuilder->resolveRedirects();
                $entityInfoBuilder->removeMissing();
 
-               // @todo: apply language fallback!
                $entityInfoBuilder->collectTerms(
                        array( 'label', 'description' ),
-                       array( $this->languageCode )
+                       $this->languageFallbackChain->getLanguageCodes()
                );
 
                $entityInfoBuilder->collectDataTypes();
diff --git a/repo/includes/EntityParserOutputGeneratorFactory.php 
b/repo/includes/EntityParserOutputGeneratorFactory.php
index 1efa6cc..bdb1463 100644
--- a/repo/includes/EntityParserOutputGeneratorFactory.php
+++ b/repo/includes/EntityParserOutputGeneratorFactory.php
@@ -131,11 +131,9 @@
         * @return LanguageFallbackChain
         */
        private function getLanguageFallbackChain( $languageCode ) {
-               // @fixme inject User
-               $context = RequestContext::getMain();
-
-               return 
$this->languageFallbackChainFactory->newFromUserAndLanguageCodeForPageView(
-                       $context->getUser(),
+               // Language fallback must depend ONLY on the target language,
+               // so we don't confuse the parser cache with user specific HTML.
+               return $this->languageFallbackChainFactory->newFromLanguageCode(
                        $languageCode
                );
        }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3973b059ec9ea03cd3cbcdd672ee1a0c8432d262
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <[email protected]>

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

Reply via email to