Telugu Language num2words file

This commit is contained in:
VENUGOPAL ACHHE
2019-05-21 18:15:38 +02:00
parent 2d1a318359
commit e887530462
3 changed files with 107 additions and 2 deletions

View File

@@ -22,7 +22,7 @@ from . import (lang_AR, lang_CZ, lang_DE, lang_DK, lang_EN, lang_EN_IN,
lang_FR_CH, lang_FR_DZ, lang_HE, lang_ID, lang_IT, lang_JA, lang_FR_CH, lang_FR_DZ, lang_HE, lang_ID, lang_IT, lang_JA,
lang_KN, lang_KO, lang_LT, lang_LV, lang_NL, lang_NO, lang_PL, lang_KN, lang_KO, lang_LT, lang_LV, lang_NL, lang_NO, lang_PL,
lang_PT, lang_PT_BR, lang_RO, lang_RU, lang_SL, lang_SR, lang_PT, lang_PT_BR, lang_RO, lang_RU, lang_SL, lang_SR,
lang_TH, lang_TR, lang_UK, lang_VI) lang_TH, lang_TR, lang_UK, lang_VI, lang_TE)
CONVERTER_CLASSES = { CONVERTER_CLASSES = {
'ar': lang_AR.Num2Word_AR(), 'ar': lang_AR.Num2Word_AR(),
@@ -59,7 +59,8 @@ CONVERTER_CLASSES = {
'th': lang_TH.Num2Word_TH(), 'th': lang_TH.Num2Word_TH(),
'tr': lang_TR.Num2Word_TR(), 'tr': lang_TR.Num2Word_TR(),
'nl': lang_NL.Num2Word_NL(), 'nl': lang_NL.Num2Word_NL(),
'uk': lang_UK.Num2Word_UK() 'uk': lang_UK.Num2Word_UK(),
'te': lang_TE.Num2Word_TE()
} }

56
num2words/lang_TE.py Normal file
View File

@@ -0,0 +1,56 @@
from __future__ import unicode_literals
from .base import Num2Word_Base
class Num2Word_TE(Num2Word_Base):
def set_high_numwords(self, high):
for n, word in self.high_numwords:
self.cards[10 ** n] = word
def setup(self):
self.low_numwords = [
"తొంభై తొమ్మిది", "తొంభై ఎనిమిది", "తొంభై ఏడు", "తొంభై ఆరు", "తొంభై అయిదు", "తొంభై నాలుగు ", "తొంభై మూడు", "తొంభై రెండు", "తొంభై ఒకటి", "తొంభై ", "ఎనభై తొమ్మిది", "ఎనభై ఎనిమిది", "ఎనభై ఏడు", "ఎనభై ఆరు", "ఎనభై అయిదు",
"ఎనభై నాలుగు", "ఎనభై మూడు", "ఎనభై రెండు" , "ఎనభై ఒకటి", "ఎనభై" ,"డెబ్బై తొమ్మిది" , "డెబ్బై ఎనిమిది" , "డెబ్బై ఏడు" , "డెబ్బై ఆరు" , "డెబ్బై అయిదు" , "డెబ్బై నాలుగు" ,"డెబ్బై మూడు", "డెబ్బై రెండు", "డెబ్బై ఒకటి" ,"డెబ్బై" ,
"అరవై తొమ్మిది ", "అరవై ఎనిమిది" , "అరవై ఏడు " , "అరవై ఆరు ","అరవై అయిదు ", "అరవై నాలుగు ", "అరవై మూడు ", "అరవై రెండు ", "అరవై ఒకటి" , "అరవై " , "యాభై తొమ్మిది", "యాభై ఎనిమిది" , "యాభై ఏడు", "యాభై ఆరు",
"యాభై అయిదు", "యాభై నాలుగు", "యాభై మూడు" , "యాభై రెండు", "యాభై ఒకటి", "యాభై " , "నలభై తొమ్మిది" ,"నలభై ఎనిమిది", "నలభై ఏడు", "నలభై ఆరు", "నలభై అయిదు" , "నలభై నాలుగు", "నలభై మూడు", "నలభై రెండు" ,
"నలభై ఒకటి" , "నలభై" , "ముప్పై తొమ్మిది", "ముప్పై ఎనిమిది", "ముప్పై ఏడు", "ముప్పై ఆరు", "ముప్పై ఐదు", "ముప్పై నాలుగు", "ముప్పై మూడు", "ముప్పై రెండు", "ముప్పై ఒకటి", "ముప్పై", "ఇరవై తొమ్మిది", "ఇరవై ఎనిమిది", "ఇరవై ఏడు",
"ఇరవై ఆరు", "ఇరవై అయిదు", "ఇరవై నాలుగు", "ఇరవై మూడు", "ఇరవై రెండు", "ఇరవై ఒకటి", "ఇరవై", "పందొమ్మిది", "పధ్ధెనిమిది", "పదిహేడు", "పదహారు", "పదునయిదు", "పధ్నాలుగు", "పదమూడు", "పన్నెండు", "పదకొండు", "పది", "తొమ్మిది",
"ఎనిమిది", "ఏడు", "ఆరు", "అయిదు","నాలుగు", "మూడు", "రెండు", "ఒకటి", "సున్న"
]
self.mid_numwords = [(100, "వందల")]
self.high_numwords = [(7, "కోటి" ), (5, "లక్షల"), (3, "వేల" )]
self.pointword = "బిందువు "
self.modifiers = [
"","", " ి ", "","","" ,"","" ,"" ,"" ,"" ,"" ,"" ,"" ,"" ," " ,""
]
def merge(self, lpair, rpair):
ltext, lnum = lpair
rtext, rnum = rpair
if lnum == 1 and rnum < 100:
return (rtext, rnum)
elif 100 > lnum > rnum:
return ("%s-%s" % (ltext, rtext), lnum + rnum)
elif lnum >= 100 > rnum:
return ("%s %s" % (ltext, rtext), lnum + rnum)
elif rnum > lnum:
return ("%s %s" % (ltext, rtext), lnum * rnum)
return ("%s %s" % (ltext, rtext), lnum + rnum)
def to_ordinal_num(self, value):
self.verify_ordinal(value)
return "%s%s" % (value, self.to_ordinal(value))
def to_ordinal(self, value):
self.verify_ordinal(value)
outwords = self.to_cardinal(value)
if outwords[-1] in self.modifiers:
outwords = outwords[:-1]
ordinal_num = outwords + ""
return ordinal_num

48
tests/test_te.py Normal file
View File

@@ -0,0 +1,48 @@
from unittest import TestCase
from num2words import num2words
class Num2WordsTETest(TestCase):
def test_numbers(self):
self.assertEqual(num2words(42, lang="te"), u"నలభై రెండు ")
self.assertEqual(num2words(893, lang="te"), u"ఎనిమిది వందల తొంబై మూడు")
self.assertEqual(
num2words(1729, lang="te"), u"ఒక వేయి ఏడు వందల ఇరవై తొమ్మిది ")
self.assertEqual(num2words(123, lang="te"), u"ఒక వంద ఇరవై మూడు")
self.assertEqual(num2words(32211, lang="te"),
u"ముప్పై రెండు వేల రెండు వందల పదకొండు")
def test_cardinal_for_float_number(self):
self.assertEqual(num2words(3.14, lang="te"), u"మూడు బిందువు ఒకటి నాలుగు ")
self.assertEqual(num2words(1.61803, lang="te"),
u"ఒకటి బిందువు ఆరు ఒకటి ఎనిమిది సున్నా మూడు ")
def test_ordinal(self):
self.assertEqual(
num2words(1, lang='te', to='ordinal'),
u'ఒకటవ '
)
self.assertEqual(
num2words(22, lang='te', to='ordinal'),
u'ఇరవై రెండవ '
)
self.assertEqual(
num2words(12, lang='te', to='ordinal'),
u'పన్నెండవ'
)
self.assertEqual(
num2words(130, lang='te', to='ordinal'),
u'ఒక వంద ముప్పయ్యవ '
)
self.assertEqual(
num2words(1003, lang='te', to='ordinal'),
u'ఒక వెయ్యి మూడవ'
)
def test_ordinal_num(self):
self.assertEqual(num2words(2, lang="te", ordinal=True), u"రెండవ")
self.assertEqual(num2words(5, lang="te", ordinal=True), u"అయిదవ ")
self.assertEqual(num2words(16, lang="te", ordinal=True), u"పదహారవ ")
self.assertEqual(num2words(113, lang="te", ordinal=True),
u"ఒక వంద పదమూడవ")