diff --git a/num2words/lang_NL.py b/num2words/lang_NL.py index b89dc4d..ede30f0 100644 --- a/num2words/lang_NL.py +++ b/num2words/lang_NL.py @@ -21,6 +21,10 @@ from .lang_EU import Num2Word_EU class Num2Word_NL(Num2Word_EU): + CURRENCY_FORMS = { + 'EUR': (('euro', 'euro'), ('cent', 'cents')), + } + GIGA_SUFFIX = "iljard" MEGA_SUFFIX = "iljoen" @@ -31,19 +35,19 @@ class Num2Word_NL(Num2Word_EU): self.pointword = "komma" # "Cannot treat float %s as ordinal." self.errmsg_floatord = ( - "Het zwevende puntnummer %s kan niet omgezet worden " + - "naar een ordernummer." - ) + "Het zwevende puntnummer %s kan niet omgezet worden " + + "naar een ordernummer." + ) # "type(((type(%s)) ) not in [long, int, float]" self.errmsg_nonnum = ( - "Alleen nummers (type (%s)) kunnen naar " + - "woorden omgezet worden." - ) + "Alleen nummers (type (%s)) kunnen naar " + + "woorden omgezet worden." + ) # "Cannot treat negative num %s as ordinal." self.errmsg_negord = ( - "Het negatieve getal %s kan niet omgezet " + - "worden naar een ordernummer." - ) + "Het negatieve getal %s kan niet omgezet " + + "worden naar een ordernummer." + ) # "abs(%s) must be less than %s." self.errmsg_toobig = "Het getal %s moet minder zijn dan %s." self.exclude_title = [] @@ -55,13 +59,14 @@ class Num2Word_NL(Num2Word_EU): "sexagint", "septuagint", "oktogint", "nonagint"] self.high_numwords = ( - ["zend"] + self.gen_high_numwords(units, tens, lows) - ) + ["zend"] + self.gen_high_numwords(units, tens, lows)) + self.mid_numwords = [(1000, "duizend"), (100, "honderd"), (90, "negentig"), (80, "tachtig"), (70, "zeventig"), (60, "zestig"), (50, "vijftig"), (40, "veertig"), (30, "dertig")] + self.low_numwords = ["twintig", "negentien", "achttien", "zeventien", "zestien", "vijftien", "veertien", "dertien", "twaalf", "elf", "tien", "negen", "acht", "zeven", @@ -129,12 +134,17 @@ class Num2Word_NL(Num2Word_EU): self.verify_ordinal(value) return str(value) + "." - def to_currency(self, val, longval=True, old=False): - if old: - return self.to_splitnum(val, hightxt="euro/s", lowtxt="cent/s", - jointxt="en", longval=longval) - return super(Num2Word_NL, self).to_currency(val, jointxt="en", - longval=longval) + def pluralize(self, n, forms): + """ + :param n: + :param forms: + :return: + + gettext form is nplurals=2; plural=(n != 1); + but this claims https://onzetaal.nl/taaladvies/euro-euros/ + not sure if it's applied only to euro + """ + return forms[0] def to_year(self, val, longval=True): if not (val // 100) % 10: diff --git a/tests/test_nl.py b/tests/test_nl.py index d8dbd1d..8b992a6 100644 --- a/tests/test_nl.py +++ b/tests/test_nl.py @@ -64,3 +64,26 @@ class Num2WordsNLTest(TestCase): def test_ordinal_for_floating_numbers(self): self.assertRaises(TypeError, num2words, 2.453, ordinal=True, lang='nl') + + def test_to_currency(self): + self.assertEqual( + num2words('38.4', lang='nl', to='currency', seperator=' en', + cents=False, currency='EUR'), + "achtendertig euro en 40 cent" + ) + self.assertEqual( + num2words('0', lang='nl', to='currency', seperator=' en', + cents=False, currency='EUR'), + "nul euro en 00 cent" + ) + + self.assertEqual( + num2words('1.01', lang='nl', to='currency', seperator=' en', + cents=True, currency='EUR'), + "één euro en één cent" + ) + + self.assertEqual( + num2words('4778.00', lang='nl', to='currency', seperator=' en', + cents=True, currency='EUR'), + 'vierduizendzevenhonderdachtenzeventig euro en nul cent')