Liangent has uploaded a new change for review. https://gerrit.wikimedia.org/r/72260
Change subject: ApiGetEntities now accepts a new parameter, contextlanguage. ...................................................................... ApiGetEntities now accepts a new parameter, contextlanguage. API calls from Web UI should send the context language fallback chain info back from mw.config.get( 'wbContextLanguage' ), to receive multilingual data for what their context wants. Change-Id: Id62fdd16187c79549328711ded5265802bc9453a --- M repo/includes/api/GetEntities.php 1 file changed, 35 insertions(+), 1 deletion(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/60/72260/1 diff --git a/repo/includes/api/GetEntities.php b/repo/includes/api/GetEntities.php index 9969088..b644bde 100644 --- a/repo/includes/api/GetEntities.php +++ b/repo/includes/api/GetEntities.php @@ -3,6 +3,7 @@ namespace Wikibase\Api; use ApiBase; +use ApiMain; use MWException; use Wikibase\Lib\Serializers\EntitySerializationOptions; @@ -13,6 +14,8 @@ use Wikibase\EntityId; use Wikibase\Item; use Wikibase\EntityContentFactory; +use Wikibase\LanguageFallbackChain; +use Wikibase\LanguageFallbackChainSerializer; /** * API module to get the data for one or more Wikibase entities. @@ -28,6 +31,22 @@ * @author Jeroen De Dauw < jeroended...@gmail.com > */ class GetEntities extends ApiWikibase { + + /** + * @var LanguageFallbackChainSerializer + */ + protected $languageFallbackChainSerializer; + + /** + * Constructor. + * + * @since 0.4 + */ + public function __construct( ApiMain $mainModule, $moduleName, $modulePrefix = '' ) { + parent::__construct( $mainModule, $moduleName, $modulePrefix ); + + $this->languageFallbackChainSerializer = new LanguageFallbackChainSerializer(); + } /** * @see \ApiBase::execute() @@ -178,7 +197,14 @@ // TODO: inject id formatter $options = new EntitySerializationOptions( WikibaseRepo::getDefaultInstance()->getIdFormatter() ); - $options->setLanguages( $params['languages'] ); + $languages = $params['languages']; + if ( $params['contextlanguage'] !== '' ) { + $chain = $this->languageFallbackChainSerializer->unserialize( $params['contextlanguage'] ); + if ( $chain ) { + $languages[LanguageFallbackChain::CONTEXT_LANGUAGE_CODE] = $chain; + } + } + $options->setLanguages( $languages ); $options->setSortDirection( $params['dir'] ); $options->setProps( $props ); $options->setIndexTags( $this->getResult()->getIsRawMode() ); @@ -247,6 +273,11 @@ ApiBase::PARAM_TYPE => Utils::getLanguageCodes(), ApiBase::PARAM_ISMULTI => true, ), + 'contextlanguage' => array( + ApiBase::PARAM_TYPE => 'string', + ApiBase::PARAM_DFLT => '', + ApiBase::PARAM_ISMULTI => false, + ), ) ); } @@ -276,6 +307,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.' ), + 'contextlanguage' => array( 'Serialized form of context language fallback chain to fetch values.', + "Taken from mw.config.get( 'wbContextLanguage' ), or don't send one for standalone requests.", + ), ) ); } -- To view, visit https://gerrit.wikimedia.org/r/72260 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id62fdd16187c79549328711ded5265802bc9453a 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