Mercurial > babel > old > babel-test
changeset 395:b4d207b1522d
The `format_timedelta` function now returns, for example, ?1 day? instead of ?0 days? if the granularity is `day` and the delta is less than a day but greater than zero.
author | cmlenz |
---|---|
date | Tue, 15 Jul 2008 16:02:17 +0000 |
parents | 0f7f4226f765 |
children | b283ae0e098d |
files | ChangeLog babel/dates.py babel/tests/dates.py doc/dates.txt |
diffstat | 4 files changed, 29 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Version 1.0 +http://svn.edgewall.org/repos/babel/tags/1.0.0/ +(???, from branches/stable/1.0.x) + + * Added support for the locale plural rules defined by the CLDR. + * Added `format_timedelta` function to support localized formatting of + relative times with strings such as "2 days" or "1 month" (ticket #126). + + Version 0.9.3 http://svn.edgewall.org/repos/babel/tags/0.9.3/ (Jul 9 2008, from branches/stable/0.9.x)
--- a/babel/dates.py +++ b/babel/dates.py @@ -613,7 +613,7 @@ >>> format_timedelta(timedelta(hours=3), granularity='day', ... locale='en_US') - u'0 days' + u'1 day' The threshold parameter can be used to determine at which value the presentation switches to the next higher unit. A higher threshold factor @@ -643,6 +643,8 @@ for unit, secs_per_unit in TIMEDELTA_UNITS: value = abs(seconds) / secs_per_unit if value >= threshold or unit == granularity: + if unit == granularity and value > 0: + value = max(1, value) value = int(round(value)) plural_form = locale.plural_form(value) pattern = locale._data['unit_patterns'][unit][plural_form]
--- a/babel/tests/dates.py +++ b/babel/tests/dates.py @@ -238,6 +238,21 @@ "yyyy-MM-dd HH:mm", locale='en_US') +class FormatTimedeltaTestCase(unittest.TestCase): + + def test_zero_seconds(self): + string = dates.format_timedelta(timedelta(seconds=0), locale='en') + self.assertEqual('0 seconds', string) + string = dates.format_timedelta(timedelta(seconds=0), + granularity='hour', locale='en') + self.assertEqual('0 hours', string) + + def test_small_value_with_granularity(self): + string = dates.format_timedelta(timedelta(seconds=42), + granularity='hour', locale='en') + self.assertEqual('1 hour', string) + + def suite(): suite = unittest.TestSuite() suite.addTest(doctest.DocTestSuite(dates)) @@ -246,5 +261,6 @@ suite.addTest(unittest.makeSuite(FormatTimeTestCase)) return suite + if __name__ == '__main__': unittest.main(defaultTest='suite')