jenkins-bot has submitted this change and it was merged.

Change subject: (bug #56685) localize quantities when formatting.
......................................................................


(bug #56685) localize quantities when formatting.

NOTE: for parsing of localized quantities, see I996e8d032a4.

IMPORTANT: requires Ie0ea0d5b921b3f42

Change-Id: Ia6701a202cb05e535ef70ce9ef2fd3b7d2583ecc
---
M lib/WikibaseLib.classes.php
A lib/includes/formatters/MediaWikiNumberLocalizer.php
M lib/includes/formatters/WikibaseValueFormatterBuilders.php
M lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
4 files changed, 53 insertions(+), 3 deletions(-)

Approvals:
  Tobias Gritschacher: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/WikibaseLib.classes.php b/lib/WikibaseLib.classes.php
index 4bb20af..933ecd3 100644
--- a/lib/WikibaseLib.classes.php
+++ b/lib/WikibaseLib.classes.php
@@ -126,6 +126,7 @@
                'Wikibase\Lib\UnDeserializableValueFormatter' => 
'includes/formatters/UnDeserializableValueFormatter.php',
                'Wikibase\Lib\WikibaseSnakFormatterBuilders' => 
'includes/formatters/WikibaseSnakFormatterBuilders.php',
                'Wikibase\Lib\WikibaseValueFormatterBuilders' => 
'includes/formatters/WikibaseValueFormatterBuilders.php',
+               'Wikibase\Lib\MediaWikiNumberLocalizer' => 
'includes/formatters/MediaWikiNumberLocalizer.php',
 
                // includes/IO
                'Wikibase\IO\LineReader' => 'includes/IO/LineReader.php',
diff --git a/lib/includes/formatters/MediaWikiNumberLocalizer.php 
b/lib/includes/formatters/MediaWikiNumberLocalizer.php
new file mode 100644
index 0000000..dbf162d
--- /dev/null
+++ b/lib/includes/formatters/MediaWikiNumberLocalizer.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace Wikibase\Lib;
+
+use InvalidArgumentException;
+use Language;
+use ValueFormatters\FormatterOptions;
+use ValueFormatters\Localizer;
+
+/**
+ * Localizes a numeric string using MediaWiki's Language class.
+ *
+ * @since 0.5
+ *
+ * @licence GNU GPL v2+
+ * @author Daniel Kinzler
+ */
+class MediaWikiNumberLocalizer implements Localizer {
+
+       /**
+        * @see Localizer::localize()
+        *
+        * @since 0.5
+        *
+        * @param string $number a numeric string
+        * @param string $language a language code
+        * @param FormatterOptions $options
+        *
+        * @return string
+        * @throws InvalidArgumentException
+        */
+       public function localize( $number, $language, FormatterOptions $options 
) {
+               $language = Language::factory( $language );
+
+               $localiezdNumber = $language->formatNum( $number );
+               return $localiezdNumber;
+       }
+}
diff --git a/lib/includes/formatters/WikibaseValueFormatterBuilders.php 
b/lib/includes/formatters/WikibaseValueFormatterBuilders.php
index b61b9dc..81c77dd 100644
--- a/lib/includes/formatters/WikibaseValueFormatterBuilders.php
+++ b/lib/includes/formatters/WikibaseValueFormatterBuilders.php
@@ -8,10 +8,8 @@
 use ValueFormatters\QuantityFormatter;
 use ValueFormatters\ValueFormatter;
 use Wikibase\EntityLookup;
-use Wikibase\Item;
 use Wikibase\LanguageFallbackChain;
 use Wikibase\LanguageFallbackChainFactory;
-use Wikibase\LanguageWithConversion;
 
 /**
  * Defines the formatters for DataValues supported by Wikibase.
@@ -479,7 +477,8 @@
         */
        protected static function newQuantityFormatter( FormatterOptions 
$options, $builders ) {
                //TODO: use a builder for this DecimalFormatter
-               $decimalFormatter = new DecimalFormatter( $options );
+               $localizer = new MediaWikiNumberLocalizer();
+               $decimalFormatter = new DecimalFormatter( $options, $localizer 
);
                return new QuantityFormatter( $decimalFormatter, $options );
        }
 
diff --git 
a/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php 
b/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
index 404ab67..28240ca 100644
--- a/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
+++ b/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
@@ -2,6 +2,7 @@
 namespace Wikibase\Lib\Test;
 
 use DataValues\StringValue;
+use DataValues\QuantityValue;
 use DataValues\TimeValue;
 use Language;
 use ValueFormatters\FormatterOptions;
@@ -74,6 +75,10 @@
                        ValueFormatter::OPT_LANG => 'en',
                ) );
 
+               $optionsDe = new FormatterOptions( array(
+                       ValueFormatter::OPT_LANG => 'de',
+               ) );
+
                return array(
                        'plain url' => array(
                                SnakFormatter::FORMAT_PLAIN,
@@ -104,6 +109,12 @@
                                $options,
                                new StringValue( '<http://acme.com/>' ),
                                '&lt;http://acme.com/&gt;'
+                       ),
+                       'localized quantity' => array(
+                               SnakFormatter::FORMAT_WIKI,
+                               $optionsDe,
+                               QuantityValue::newFromNumber( '+123456.789' ),
+                               '123.456,789'
                        ),
                );
        }
@@ -182,6 +193,7 @@
                        'VT:time',
                        'VT:globecoordinate',
                        'VT:wikibase-entityid',
+                       'VT:quantity',
                );
 
                // check for all the required types, that is, the ones 
supported by the fallback format

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia6701a202cb05e535ef70ce9ef2fd3b7d2583ecc
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: Daniel Werner <daniel.a.r.wer...@gmail.com>
Gerrit-Reviewer: Henning Snater <henning.sna...@wikimedia.de>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to