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 <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