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/>' ),
'<http://acme.com/>'
+ ),
+ '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 <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: Daniel Werner <[email protected]>
Gerrit-Reviewer: Henning Snater <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits