Liangent has uploaded a new change for review. https://gerrit.wikimedia.org/r/72986
Change subject: EXPERIMENTAL VERSION OF Id62fdd16187c79549328711ded5265802bc9453a ...................................................................... EXPERIMENTAL VERSION OF Id62fdd16187c79549328711ded5265802bc9453a Change-Id: Id62fdd16187c79549328711ded5265802bc9453b --- M repo/includes/api/GetEntities.php 1 file changed, 31 insertions(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/86/72986/1 diff --git a/repo/includes/api/GetEntities.php b/repo/includes/api/GetEntities.php index d542738..6e14d65 100644 --- a/repo/includes/api/GetEntities.php +++ b/repo/includes/api/GetEntities.php @@ -3,6 +3,8 @@ namespace Wikibase\Api; use ApiBase; +use DerivativeContext; +use Language; use MWException; use Wikibase\Lib\Serializers\EntitySerializationOptions; @@ -13,6 +15,7 @@ use Wikibase\EntityId; use Wikibase\Item; use Wikibase\EntityContentFactory; +use Wikibase\LanguageFallbackChain; /** * API module to get the data for one or more Wikibase entities. @@ -30,6 +33,11 @@ class GetEntities extends ApiWikibase { /** + * @var LanguageFallbackChainFactory + */ + protected $languageFallbackChainFactory; + + /** * @var \Wikibase\StringNormalizer */ protected $stringNormalizer; @@ -38,6 +46,7 @@ parent::__construct( $main, $name, $prefix ); $this->stringNormalizer = WikibaseRepo::getDefaultInstance()->getStringNormalizer(); + $this->languageFallbackChainFactory = WikibaseRepo::getDefaultInstance()->getLanguageFallbackChainFactory(); } /** @@ -189,7 +198,24 @@ // TODO: inject id formatter $options = new EntitySerializationOptions( WikibaseRepo::getDefaultInstance()->getIdFormatter() ); - $options->setLanguages( $params['languages'] ); + $languagefallback = $params['languagefallback']; + if ( $languagefallback ) { + foreach ( $params['languages'] as $languageCode ) { + try { + $contextLang = Language::factory( $languageCode ); + } catch ( MWException $e ) { + wfProfileOut( __METHOD__ ); + $this->dieUsage( "Invalid language: $languageCode", 'invalid-language' ); + } + $context = new DerivativeContext( $this->getContext() ); + $context->setLanguage( $contextLang ); + $chain = $this->languageFallbackChainFactory->newFromContext( $context ); + $languages[$languageCode] = $chain; + } + } else { + $languages = $params['languages']; + } + $options->setLanguages( $languages ); $options->setSortDirection( $params['dir'] ); $options->setProps( $props ); $options->setIndexTags( $this->getResult()->getIsRawMode() ); @@ -258,6 +284,7 @@ ApiBase::PARAM_TYPE => Utils::getLanguageCodes(), ApiBase::PARAM_ISMULTI => true, ), + 'languagefallback' => false, ) ); } @@ -287,6 +314,9 @@ 'languages' => array( 'By default the internationalized values are returned in all available languages.', 'This parameter allows filtering these down to one or more languages by providing one or more language codes.' ), + 'languagefallback' => array( 'Apply language fallback?', + 'Note: the returned data might be somehow unusable in "raw modes" such as XML output.', + ), ) ); } -- To view, visit https://gerrit.wikimedia.org/r/72986 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id62fdd16187c79549328711ded5265802bc9453b Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Liangent <liang...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits