Liangent has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/71996


Change subject: Use requested variant language instead of target language to 
fetch labels
......................................................................

Use requested variant language instead of target language to fetch labels

Change-Id: I5a461251c5c4b0ff6c5abd701707c5c04910fadf
---
M client/includes/parserhooks/PropertyParserFunction.php
1 file changed, 25 insertions(+), 2 deletions(-)


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

diff --git a/client/includes/parserhooks/PropertyParserFunction.php 
b/client/includes/parserhooks/PropertyParserFunction.php
index 4d09ab9..3a15074 100644
--- a/client/includes/parserhooks/PropertyParserFunction.php
+++ b/client/includes/parserhooks/PropertyParserFunction.php
@@ -2,6 +2,7 @@
 
 namespace Wikibase;
 
+use Language;
 use Wikibase\Client\WikibaseClient;
 use Wikibase\DataModel\SimpleSiteLink;
 use Wikibase\Lib\SnakFormatter;
@@ -188,7 +189,18 @@
                $propertyLabelResolver = 
$wikibaseClient->getStore()->getPropertyLabelResolver();
                $formatter = $wikibaseClient->newSnakFormatter();
 
-               $instance = new self( $targetLanguage,
+               // Use variant language instead of content language itself when 
the output will
+               // be converted, in case some labels can't be converted 
correctly afterwards.
+               $parserOptions = $parser->getOptions();
+               $handleVariants = $parser->ot['html'] && 
!$parserOptions->getInterfaceMessage()
+                       && !$parserOptions->getDisableContentConversion();
+               if ( $handleVariants ) {
+                       $labelLanguage = Language::factory( 
$targetLanguage->getPreferredVariant() );
+               } else {
+                       $labelLanguage = $targetLanguage;
+               }
+
+               $instance = new self( $labelLanguage,
                        $entityLookup, $propertyLabelResolver,
                        $errorFormatter, $formatter );
 
@@ -210,10 +222,21 @@
 
                $text = $status->isOK() ? $status->getValue() : '';
 
+               // This condition is less strict than handleVariants.
+               if ( $parser->ot['html'] || $parser->ot['pre'] ) {
+                       $text = wfEscapeWikitext( $text );
+
+                       // Since we've already fetched labels in requested 
variant languages,
+                       // prevent them from being converted again in further 
parsing process.
+                       // Some tests may be added to ensure this behavior.
+                       if ( $handleVariants ) {
+                               $text = 
$targetLanguage->getConverter()->markNoConversion( $text );
+                       }
+               }
+
                $result = array(
                        $text,
                        'noparse' => false,
-                       'nowiki' => true,
                );
 
                wfProfileOut( __METHOD__ );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5a461251c5c4b0ff6c5abd701707c5c04910fadf
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

Reply via email to