diff --git a/num2words/lang_CZ.py b/num2words/lang_CZ.py index 0a29049..7cfa1f6 100644 --- a/num2words/lang_CZ.py +++ b/num2words/lang_CZ.py @@ -130,6 +130,10 @@ class Num2Word_CZ(Num2Word_Base): i = len(chunks) for x in chunks: i -= 1 + + if x == 0: + continue + n1, n2, n3 = get_digits(x) if n3 > 0: diff --git a/num2words/lang_HE.py b/num2words/lang_HE.py index 3789cc5..1c59e1e 100644 --- a/num2words/lang_HE.py +++ b/num2words/lang_HE.py @@ -94,9 +94,11 @@ def int2word(n): i = len(chunks) for x in chunks: i -= 1 - n1, n2, n3 = get_digits(x) - # print str(n3) + str(n2) + str(n1) + if x == 0: + continue + + n1, n2, n3 = get_digits(x) if n3 > 0: if n3 <= 2: diff --git a/num2words/lang_LT.py b/num2words/lang_LT.py index ddd003e..1d13824 100644 --- a/num2words/lang_LT.py +++ b/num2words/lang_LT.py @@ -149,6 +149,10 @@ class Num2Word_LT(Num2Word_Base): for x in chunks: i -= 1 + + if x == 0: + continue + n1, n2, n3 = get_digits(x) if n3 > 0: diff --git a/num2words/lang_LV.py b/num2words/lang_LV.py index d1bd934..cd88472 100644 --- a/num2words/lang_LV.py +++ b/num2words/lang_LV.py @@ -157,6 +157,10 @@ class Num2Word_LV(Num2Word_Base): i = len(chunks) for x in chunks: i -= 1 + + if x == 0: + continue + n1, n2, n3 = get_digits(x) if n3 > 0: @@ -176,7 +180,7 @@ class Num2Word_LV(Num2Word_Base): elif n1 > 0 and not (i > 0 and x == 1): words.append(ONES[n1][0]) - if i > 0 and x != 0: + if i > 0: words.append(self.pluralize(x, THOUSANDS[i])) return ' '.join(words) diff --git a/num2words/lang_PL.py b/num2words/lang_PL.py index 4289177..34249cc 100644 --- a/num2words/lang_PL.py +++ b/num2words/lang_PL.py @@ -66,20 +66,31 @@ HUNDREDS = { 6: ('sześćset',), 7: ('siedemset',), 8: ('osiemset',), - 9: ('dziewęćset',), + 9: ('dziewięćset',), } THOUSANDS = { - 1: ('tysiąc', 'tysiące', 'tysięcy'), # 10^3 - 2: ('milion', 'miliony', 'milionów'), # 10^6 - 3: ('miliard', 'miliardy', 'miliardów'), # 10^9 - 4: ('bilion', 'biliony', 'bilionów'), # 10^12 - 5: ('biliard', 'biliardy', 'biliardów'), # 10^15 - 6: ('trylion', 'tryliony', 'trylionów'), # 10^18 - 7: ('tryliard', 'tryliardy', 'tryliardów'), # 10^21 - 8: ('kwadrylion', 'kwadryliony', 'kwadrylionów'), # 10^24 - 9: ('kwaryliard', 'kwadryliardy', 'kwadryliardów'), # 10^27 - 10: ('kwintylion', 'kwintyliony', 'kwintylionów'), # 10^30 + 1: ('tysiąc', 'tysiące', 'tysięcy'), # 10^3 + 2: ('milion', 'miliony', 'milionów'), # 10^6 + 3: ('miliard', 'miliardy', 'miliardów'), # 10^9 + 4: ('bilion', 'biliony', 'bilionów'), # 10^12 + 5: ('biliard', 'biliardy', 'biliardów'), # 10^15 + 6: ('trylion', 'tryliony', 'trylionów'), # 10^18 + 7: ('tryliard', 'tryliardy', 'tryliardów'), # 10^21 + 8: ('kwadrylion', 'kwadryliony', 'kwadrylionów'), # 10^24 + 9: ('kwadryliard', 'kwadryliardy', 'kwadryliardów'), # 10^27 + 10: ('kwintylion', 'kwintyliony', 'kwintylionów'), # 10^30 + 11: ('kwintyliard', 'kwintyliardy', 'kwintyliardów'), # 10^33 + 12: ('sekstylion', 'sekstyliony', 'sekstylionów'), # 10^36 + 13: ('sekstyliard', 'sekstyliardy', 'sekstyliardów'), # 10^39 + 14: ('septylion', 'septyliony', 'septylionów'), # 10^42 + 15: ('septyliard', 'septyliardy', 'septyliardów'), # 10^45 + 16: ('oktylion', 'oktyliony', 'oktylionów'), # 10^48 + 17: ('oktyliard', 'oktyliardy', 'oktyliardów'), # 10^51 + 18: ('nonylion', 'nonyliony', 'nonylionów'), # 10^54 + 19: ('nonyliard', 'nonyliardy', 'nonyliardów'), # 10^57 + 20: ('decylion', 'decyliony', 'decylionów'), # 10^60 + 21: ('decyliard', 'decyliardy', 'decyliardów'), # 10^63 } @@ -130,6 +141,10 @@ class Num2Word_PL(Num2Word_Base): i = len(chunks) for x in chunks: i -= 1 + + if x == 0: + continue + n1, n2, n3 = get_digits(x) if n3 > 0: diff --git a/num2words/lang_RU.py b/num2words/lang_RU.py index 349657a..032ddcf 100644 --- a/num2words/lang_RU.py +++ b/num2words/lang_RU.py @@ -209,6 +209,10 @@ class Num2Word_RU(Num2Word_Base): i = len(chunks) for x in chunks: i -= 1 + + if x == 0: + continue + n1, n2, n3 = get_digits(x) if n3 > 0: @@ -223,7 +227,7 @@ class Num2Word_RU(Num2Word_Base): ones = ONES_FEMININE if i == 1 or feminine and i == 0 else ONES words.append(ones[n1][0]) - if i > 0 and x != 0: + if i > 0: words.append(self.pluralize(x, THOUSANDS[i])) return ' '.join(words) diff --git a/num2words/lang_UK.py b/num2words/lang_UK.py index b751bed..9672a88 100644 --- a/num2words/lang_UK.py +++ b/num2words/lang_UK.py @@ -147,6 +147,10 @@ class Num2Word_UK(Num2Word_Base): i = len(chunks) for x in chunks: i -= 1 + + if x == 0: + continue + n1, n2, n3 = get_digits(x) if n3 > 0: @@ -162,7 +166,7 @@ class Num2Word_UK(Num2Word_Base): ones = ONES_FEMININE if i == 1 or feminine and i == 0 else ONES words.append(ones[n1][0]) - if i > 0 and ((n1 + n2 + n3) > 0): + if i > 0: words.append(self.pluralize(x, THOUSANDS[i])) return ' '.join(words) diff --git a/tests/test_lt.py b/tests/test_lt.py index 3424548..81e8938 100644 --- a/tests/test_lt.py +++ b/tests/test_lt.py @@ -53,9 +53,6 @@ class Num2WordsLTTest(TestCase): 'minus penki tūkstančiai kablelis dvidešimt du', ) - # print(fill(n2w(1000000000000000000000000000000))) - # naintilijonas - def test_to_ordinal(self): # @TODO: implement to_ordinal with self.assertRaises(NotImplementedError): diff --git a/tests/test_lv.py b/tests/test_lv.py index df3b679..ef265c0 100644 --- a/tests/test_lv.py +++ b/tests/test_lv.py @@ -48,9 +48,6 @@ class Num2WordsLVTest(TestCase): 'mīnus pieci tūkstoši komats divdesmit divi', ) - # >>> print(fill(n2w(1000000000000000000000000000000))) - # nontiljons - self.assertEqual(num2words(0, lang='lv'), 'nulle') self.assertEqual(num2words(5, lang='lv'), "pieci") self.assertEqual(num2words(15, lang='lv'), "piecpadsmit") diff --git a/tests/test_pl.py b/tests/test_pl.py index c8a8462..9be1314 100644 --- a/tests/test_pl.py +++ b/tests/test_pl.py @@ -45,6 +45,10 @@ class Num2WordsPLTest(TestCase): "miliard dwieście trzydzieści cztery miliony pięćset " "sześćdziesiąt siedem tysięcy osiemset dziewięćdzisiąt" ) + self.assertEqual( + num2words(10000000001000000100000, lang='pl'), + "dziesięć tryliardów bilion sto tysięcy" + ) self.assertEqual( num2words(215461407892039002157189883901676, lang='pl'), "dwieście piętnaście kwintylionów czterysta sześćdziesiąt jeden " @@ -52,7 +56,7 @@ class Num2WordsPLTest(TestCase): "dziewięćdzisiąt dwa tryliardy trzydzieści dziewięć trylionów " "dwa biliardy sto pięćdziesiąt siedem bilionów sto osiemdziesiąt " "dziewięć miliardów osiemset osiemdziesiąt trzy miliony " - "dziewęćset jeden tysięcy sześćset siedemdziesiąt sześć" + "dziewięćset jeden tysięcy sześćset siedemdziesiąt sześć" ) self.assertEqual( num2words(719094234693663034822824384220291, lang='pl'), @@ -64,6 +68,18 @@ class Num2WordsPLTest(TestCase): "osiemdziesiąt cztery miliony dwieście dwadzieścia " "tysięcy dwieście dziewięćdzisiąt jeden" ) + self.assertEqual( + num2words( + 963301000001918264129471001047146102 * 10**30 + 1007, + lang='pl' + ), + "dziewięćset sześćdziesiąt trzy decyliardy trzysta jeden " + "decylionów nonylion dziewięćset osiemnaście oktyliardów dwieście " + "sześćdziesiąt cztery oktyliony sto dwadzieścia dziewięć " + "septyliardów czterysta siedemdziesiąt jeden septylionów " + "sekstyliard czterdzieści siedem sekstylionów sto czterdzieści " + "sześć kwintyliardów sto dwa kwintyliony tysiąc siedem" + ) def test_to_ordinal(self): # @TODO: implement to_ordinal