Matěj Suchánek has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/362215 )

Change subject: Use language fallback when showing descriptions in search 
results
......................................................................

Use language fallback when showing descriptions in search results

This fixes a todo comment in the code.

Change-Id: I45039f579054c0130162c9e14c87c94dfe3cb1c3
---
M repo/Wikibase.hooks.php
1 file changed, 17 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/15/362215/1

diff --git a/repo/Wikibase.hooks.php b/repo/Wikibase.hooks.php
index dbbc9f4..8791675 100644
--- a/repo/Wikibase.hooks.php
+++ b/repo/Wikibase.hooks.php
@@ -12,6 +12,7 @@
 use HistoryPager;
 use Html;
 use IContextSource;
+use Language;
 use LogEntry;
 use MediaWiki\MediaWikiServices;
 use MWException;
@@ -546,15 +547,22 @@
 
                        if ( $content && !$content->isRedirect() ) {
                                $entity = $content->getEntity();
-                               $languageCode = 
$searchPage->getLanguage()->getCode(); // TODO: language fallback!
-
-                               if ( $entity instanceof DescriptionsProvider &&
-                                       
$entity->getDescriptions()->hasTermForLanguage( $languageCode )
-                               ) {
-                                       $description = 
$entity->getDescriptions()->getByLanguage( $languageCode )->getText();
-                                       $attr = array( 'class' => 
'wb-itemlink-description' );
-                                       $link .= $searchPage->msg( 
'colon-separator' )->text();
-                                       $link .= Html::element( 'span', $attr, 
$description );
+                               if ( $entity instanceof DescriptionsProvider ) {
+                                       $language = $searchPage->getLanguage();
+                                       $chain = ( new 
LanguageFallbackChainFactory() )->newFromLanguage( $language );
+                                       $terms = 
$entity->getDescriptions()->toTextArray();
+                                       $termData = 
$chain->extractPreferredValue( $terms );
+                                       if ( $termData !== null ) {
+                                               $description = 
$termData['value'];
+                                               $attr = array( 'class' => 
'wb-itemlink-description' );
+                                               if ( $termData['language'] !== 
$language->getCode() ) {
+                                                       $lang = 
Language::factory( $termData['language'] );
+                                                       $attr['lang'] = 
$lang->getHtmlCode();
+                                                       $attr['dir'] = 
$lang->getDir();
+                                               }
+                                               $link .= $searchPage->msg( 
'colon-separator' )->text();
+                                               $link .= Html::element( 'span', 
$attr, $description );
+                                       }
                                }
                        }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/362215
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I45039f579054c0130162c9e14c87c94dfe3cb1c3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Matěj Suchánek <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to