/** * @param string[] $terms * @param string[] $fetchLanguages * * @return TermFallback|null */ private function getTermFallback(array $terms, array $fetchLanguages) { $extractedData = $this->languageFallbackChain->extractPreferredValue($terms); if ($extractedData === null) { return null; } // $fetchLanguages are in order of preference $requestLanguage = reset($fetchLanguages); // see extractPreferredValue for array keys return new TermFallback($requestLanguage, $extractedData['value'], $extractedData['language'], $extractedData['source']); }
/** * @param ParserOutput $parserOutput * @param EntityDocument $entity */ private function addTitleTextToParserOutput(ParserOutput $parserOutput, EntityDocument $entity) { $titleText = null; if ($entity instanceof FingerprintProvider) { $labels = $entity->getFingerprint()->getLabels()->toTextArray(); $preferred = $this->languageFallbackChain->extractPreferredValue($labels); if (is_array($preferred)) { $titleText = $preferred['value']; } } if (!is_string($titleText)) { $entityId = $entity->getId(); if ($entityId instanceof EntityId) { $titleText = $entityId->getSerialization(); } } $parserOutput->setExtensionData('wikibase-titletext', $titleText); }