mirror of
https://github.com/bblaz/num2words.git
synced 2025-12-06 06:42:25 +00:00
German: ordinals involving 'Million' etc. are written without space, and lower case
This commit is contained in:
@@ -17,6 +17,8 @@
|
|||||||
|
|
||||||
from __future__ import print_function, unicode_literals
|
from __future__ import print_function, unicode_literals
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
from .lang_EU import Num2Word_EU
|
from .lang_EU import Num2Word_EU
|
||||||
|
|
||||||
|
|
||||||
@@ -107,7 +109,7 @@ class Num2Word_DE(Num2Word_EU):
|
|||||||
|
|
||||||
def to_ordinal(self, value):
|
def to_ordinal(self, value):
|
||||||
self.verify_ordinal(value)
|
self.verify_ordinal(value)
|
||||||
outword = self.to_cardinal(value)
|
outword = self.to_cardinal(value).lower()
|
||||||
for key in self.ords:
|
for key in self.ords:
|
||||||
if outword.endswith(key):
|
if outword.endswith(key):
|
||||||
outword = outword[:len(outword) - len(key)] + self.ords[key]
|
outword = outword[:len(outword) - len(key)] + self.ords[key]
|
||||||
@@ -118,8 +120,13 @@ class Num2Word_DE(Num2Word_EU):
|
|||||||
# Exception: "hundertste" is usually preferred over "einhundertste"
|
# Exception: "hundertste" is usually preferred over "einhundertste"
|
||||||
if res == "eintausendste" or res == "einhundertste":
|
if res == "eintausendste" or res == "einhundertste":
|
||||||
res = res.replace("ein", "", 1)
|
res = res.replace("ein", "", 1)
|
||||||
if res == "eine Millionste":
|
# ... similarly for "millionste" etc.
|
||||||
res = res.replace("eine ", "", 1)
|
res = re.sub(r'eine ([a-z]+(illion|illiard)ste)$',
|
||||||
|
lambda m: m.group(1), res)
|
||||||
|
# Ordinals involving "Million" etc. are written without a space.
|
||||||
|
# see https://de.wikipedia.org/wiki/Million#Sprachliches
|
||||||
|
res = re.sub(r' ([a-z]+(illion|illiard)ste)$',
|
||||||
|
lambda m: m.group(1), res)
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|||||||
@@ -48,14 +48,17 @@ class Num2WordsDETest(TestCase):
|
|||||||
num2words(4000, ordinal=True, lang='de'), "viertausendste"
|
num2words(4000, ordinal=True, lang='de'), "viertausendste"
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
num2words(1000000, ordinal=True, lang='de'), "Millionste"
|
num2words(1000000, ordinal=True, lang='de'), "millionste"
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
num2words(2000000, ordinal=True, lang='de'), "zwei Millionste"
|
num2words(2000000, ordinal=True, lang='de'), "zweimillionste"
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(1000000000, ordinal=True, lang='de'), "milliardste"
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
num2words(5000000000, ordinal=True, lang='de'),
|
num2words(5000000000, ordinal=True, lang='de'),
|
||||||
"fünf Milliardste"
|
"fünfmilliardste"
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_cardinal_at_some_numbers(self):
|
def test_cardinal_at_some_numbers(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user