Opened 11 years ago
Closed 11 years ago
#22798 closed Bug (fixed)
pluralize filter should pluralize float/Decimal values between 1 and 2
| Reported by: | Daniel Watkins | Owned by: | nobody |
|---|---|---|---|
| Component: | Template system | Version: | 1.6 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
The pluralize filter works as expected for floats/Decimals outside of the range 1-2:
>>> pluralize(0.9) u's' >>> pluralize(2.1) u's'
However, when applied to a decimal number between 1 and 2, it (incorrectly) does not pluralize:
>>> pluralize(1.2) u''
Not only is this incorrect from an English standpoint, it also contradicts pluralize's docstring: "Returns a plural suffix if the value is not 1."
The problem appears to be at line 937 where the given value is converted directly to an integer; this chops the decimal part of the number off, making it appear to be 1.
The specific use case for this is:
{{ widget_count|floatformat:"-2" }} widget{{ widget_count|pluralize }}
This will produce "0.5 widgets", "1 widget", and "2.1 widgets" correctly, but "1.2 widget" incorrectly.
(This ticket is a descendant of #16723, but that ticket was about a broader issue that encompassed this, and so ended up being closed as invalid.)
Change History (3)
comment:1 by , 11 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:2 by , 11 years ago
| Has patch: | set |
|---|
PR: https://github.com/django/django/pull/2789
Thanks.
comment:3 by , 11 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Aaah now I get it. Yes, the current behaviour should be changed for decimals when
1 < d < 2. Sorry for closing incorrectly the other ticket.