diff --git a/src/humanize/time.py b/src/humanize/time.py index 373657d..22dbb1e 100644 --- a/src/humanize/time.py +++ b/src/humanize/time.py @@ -202,7 +202,7 @@ def naturaldelta( else: return _ngettext("1 year, %d day", "1 year, %d days", days) % days - return _ngettext("%s year", "%s years", years) % intcomma(years) + return _ngettext("%d year", "%d years", years).replace("%d", "%s") % intcomma(years) def naturaltime( diff --git a/tests/test_i18n.py b/tests/test_i18n.py index 8b64696..e4f30f0 100644 --- a/tests/test_i18n.py +++ b/tests/test_i18n.py @@ -53,6 +53,25 @@ def test_intcomma() -> None: assert humanize.intcomma(number) == "10,000,000" +def test_naturaldelta() -> None: + seconds = 1234 * 365 * 24 * 60 * 60 + + assert humanize.naturaldelta(seconds) == "1,234 years" + + try: + humanize.i18n.activate("fr_FR") + assert humanize.naturaldelta(seconds) == "1 234 ans" + humanize.i18n.activate("es_ES") + assert humanize.naturaldelta(seconds) == "1,234 aƱos" + + except FileNotFoundError: + pytest.skip("Generate .mo with scripts/generate-translation-binaries.sh") + + finally: + humanize.i18n.deactivate() + assert humanize.naturaldelta(seconds) == "1,234 years" + + @pytest.mark.parametrize( ("locale", "number", "expected_result"), (