Skip to content

Commit 3df3628

Browse files
Merge branch '5.1' into 5.2
* 5.1: Fix transient tests Fix class resolution in Doctrine EventListenerPass [Serializer] Fix tests marked as incomplete propagate the object being validated to sub-constraints [Translator] fix handling plural for floating numbers fix redis messenger options with dsn Update ConsoleEvents.php allow Doctrine persistence 2 too [Messenger] Fix transporting non-UTF8 payloads by encoding them using base 64 add doctrine/persistence as a dev requirement Exclude non-initialized properties accessed with getters
2 parents a4815c1 + 65ace24 commit 3df3628

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

Translation/Test/TranslatorTest.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,11 @@ public function getInternal()
142142
/**
143143
* @dataProvider getChooseTests
144144
*/
145-
public function testChoose($expected, $id, $number)
145+
public function testChoose($expected, $id, $number, $locale = null)
146146
{
147147
$translator = $this->getTranslator();
148148

149-
$this->assertEquals($expected, $translator->trans($id, ['%count%' => $number]));
149+
$this->assertEquals($expected, $translator->trans($id, ['%count%' => $number], null, $locale));
150150
}
151151

152152
public function testReturnMessageIfExactlyOneStandardRuleIsGiven()
@@ -255,6 +255,18 @@ public function getChooseTests()
255255
['', '|', 1],
256256
// Empty plural set (3 plural forms) from a .PO file
257257
['', '||', 1],
258+
259+
// Floating values
260+
['1.5 liters', '%count% liter|%count% liters', 1.5],
261+
['1.5 litre', '%count% litre|%count% litres', 1.5, 'fr'],
262+
263+
// Negative values
264+
['-1 degree', '%count% degree|%count% degrees', -1],
265+
['-1 degré', '%count% degré|%count% degrés', -1],
266+
['-1.5 degrees', '%count% degree|%count% degrees', -1.5],
267+
['-1.5 degré', '%count% degré|%count% degrés', -1.5, 'fr'],
268+
['-2 degrees', '%count% degree|%count% degrees', -2],
269+
['-2 degrés', '%count% degré|%count% degrés', -2],
258270
];
259271
}
260272

Translation/TranslatorTrait.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,10 @@ public function trans(?string $id, array $parameters = [], string $domain = null
136136
* which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).
137137
* Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
138138
*/
139-
private function getPluralizationRule(int $number, string $locale): int
139+
private function getPluralizationRule(float $number, string $locale): int
140140
{
141+
$number = abs($number);
142+
141143
switch ('pt_BR' !== $locale && \strlen($locale) > 3 ? substr($locale, 0, strrpos($locale, '_')) : $locale) {
142144
case 'af':
143145
case 'bn':
@@ -205,7 +207,7 @@ private function getPluralizationRule(int $number, string $locale): int
205207
case 'pt_BR':
206208
case 'ti':
207209
case 'wa':
208-
return ((0 == $number) || (1 == $number)) ? 0 : 1;
210+
return ($number < 2) ? 0 : 1;
209211

210212
case 'be':
211213
case 'bs':

0 commit comments

Comments
 (0)