From 23e16020ede8941e8f134b2838651f59926e4277 Mon Sep 17 00:00:00 2001 From: Cohen Karnell <7363269+ckarnell@users.noreply.github.com> Date: Mon, 17 Aug 2026 09:09:31 -0400 Subject: [PATCH] Use a comma as the French decimal separator fr_FR was the only locale in the table pairing a group separator with a dot decimal mark. French uses the comma, so intcomma and intword printed 1 234 567.89 instead of 1 234 567,89. naturalsize is unchanged because filesize.py does not read the separator. --- src/humanize/i18n.py | 2 +- tests/test_i18n.py | 54 ++++++++++++++++++++++---------------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/humanize/i18n.py b/src/humanize/i18n.py index f41d1d16..f9b1c425 100644 --- a/src/humanize/i18n.py +++ b/src/humanize/i18n.py @@ -31,7 +31,7 @@ # Mapping of locale to decimal separator _DECIMAL_SEPARATOR: dict[str | None, str] = { "de_DE": ",", - "fr_FR": ".", + "fr_FR": ",", "it_IT": ",", "pt_BR": ",", "hu_HU": ",", diff --git a/tests/test_i18n.py b/tests/test_i18n.py index 6ea61a29..4cafe936 100644 --- a/tests/test_i18n.py +++ b/tests/test_i18n.py @@ -63,8 +63,8 @@ def test_intcomma() -> None: humanize.i18n.activate("fr_FR") assert humanize.intcomma(number) == "10 000 000" - assert humanize.intcomma(1_234_567.89) == "1 234 567.89" - assert humanize.intcomma("1 234 567.89") == "1 234 567.89" + assert humanize.intcomma(1_234_567.89) == "1 234 567,89" + assert humanize.intcomma("1 234 567,89") == "1 234 567,89" humanize.i18n.activate("pt_BR") assert humanize.intcomma(number) == "10.000.000" @@ -125,46 +125,46 @@ def test_naturaldelta() -> None: ("lv", 2_000_000, "2,0 miljoni"), ("lv", 11_000_000, "11,0 miljoni"), ("lv", 21_000_000, "21,0 miljons"), - ("fr_FR", "1_000", "1.0 mille"), - ("fr_FR", "12_400", "12.4 milles"), - ("fr_FR", "12_490", "12.5 milles"), - ("fr_FR", "1_000_000", "1.0 million"), - ("fr_FR", "-1_000_000", "-1.0 million"), - ("fr_FR", "1_200_000", "1.2 millions"), - ("fr_FR", "1_290_000", "1.3 millions"), - ("fr_FR", "999_999_999", "1.0 milliard"), - ("fr_FR", "1_000_000_000", "1.0 milliard"), - ("fr_FR", "-1_000_000_000", "-1.0 milliard"), - ("fr_FR", "2_000_000_000", "2.0 milliards"), - ("fr_FR", "999_999_999_999", "1.0 billion"), - ("fr_FR", "1_000_000_000_000", "1.0 billion"), - ("fr_FR", "6_000_000_000_000", "6.0 billions"), - ("fr_FR", "-6_000_000_000_000", "-6.0 billions"), - ("fr_FR", "999_999_999_999_999", "1.0 billiard"), - ("fr_FR", "1_000_000_000_000_000", "1.0 billiard"), - ("fr_FR", "1_300_000_000_000_000", "1.3 billiards"), - ("fr_FR", "-1_300_000_000_000_000", "-1.3 billiards"), - ("fr_FR", "3_500_000_000_000_000_000_000", "3.5 trilliards"), - ("fr_FR", "8_100_000_000_000_000_000_000_000_000_000_000", "8.1 quintilliards"), + ("fr_FR", "1_000", "1,0 mille"), + ("fr_FR", "12_400", "12,4 milles"), + ("fr_FR", "12_490", "12,5 milles"), + ("fr_FR", "1_000_000", "1,0 million"), + ("fr_FR", "-1_000_000", "-1,0 million"), + ("fr_FR", "1_200_000", "1,2 millions"), + ("fr_FR", "1_290_000", "1,3 millions"), + ("fr_FR", "999_999_999", "1,0 milliard"), + ("fr_FR", "1_000_000_000", "1,0 milliard"), + ("fr_FR", "-1_000_000_000", "-1,0 milliard"), + ("fr_FR", "2_000_000_000", "2,0 milliards"), + ("fr_FR", "999_999_999_999", "1,0 billion"), + ("fr_FR", "1_000_000_000_000", "1,0 billion"), + ("fr_FR", "6_000_000_000_000", "6,0 billions"), + ("fr_FR", "-6_000_000_000_000", "-6,0 billions"), + ("fr_FR", "999_999_999_999_999", "1,0 billiard"), + ("fr_FR", "1_000_000_000_000_000", "1,0 billiard"), + ("fr_FR", "1_300_000_000_000_000", "1,3 billiards"), + ("fr_FR", "-1_300_000_000_000_000", "-1,3 billiards"), + ("fr_FR", "3_500_000_000_000_000_000_000", "3,5 trilliards"), + ("fr_FR", "8_100_000_000_000_000_000_000_000_000_000_000", "8,1 quintilliards"), ( "fr_FR", "-8_100_000_000_000_000_000_000_000_000_000_000", - "-8.1 quintilliards", + "-8,1 quintilliards", ), ( "fr_FR", 1_000_000_000_000_000_000_000_000_000_000_000_000, - "1000.0 quintilliards", + "1000,0 quintilliards", ), ( "fr_FR", 1_100_000_000_000_000_000_000_000_000_000_000_000, - "1100.0 quintilliards", + "1100,0 quintilliards", ), ( "fr_FR", 2_100_000_000_000_000_000_000_000_000_000_000_000, - "2100.0 quintilliards", + "2100,0 quintilliards", ), ], )