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