/** * @dataProvider provideFetchLanguageCodes */ public function testGetFetchLanguageCodes(array $languages) { $languagesWithConversion = array(); foreach ($languages as $language) { $languagesWithConversion[] = LanguageWithConversion::factory($language); } $chain = new LanguageFallbackChain($languagesWithConversion); $codes = $chain->getFetchLanguageCodes(); $this->assertEquals($languages, $codes); }
/** * @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']); }
private function getPreferredTerm($termsByLanguage) { if (empty($termsByLanguage)) { return null; } return $this->languageFallback->extractPreferredValueOrAny($termsByLanguage); }
/** * @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); }
private function newClientEntitySerializer() { return new ClientEntitySerializer($this->dataTypeLookup, array_unique(array_merge($this->termsLanguages->getLanguages(), $this->fallbackChain->getFetchLanguageCodes(), array($this->language->getCode()))), array($this->language->getCode() => $this->fallbackChain)); }