mirror of
https://github.com/bblaz/num2words.git
synced 2025-12-06 06:42:25 +00:00
Merge pull request #263 from venu1807/master
Adding Language Support for Telugu / Bug Fix in Kannada
This commit is contained in:
@@ -22,7 +22,7 @@ from . import (lang_AR, lang_CZ, lang_DE, lang_DK, lang_EN, lang_EN_IN,
|
|||||||
lang_FR_BE, lang_FR_CH, lang_FR_DZ, lang_HE, lang_ID, lang_IT,
|
lang_FR_BE, 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_JA, 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_PL, lang_PT, lang_PT_BR, lang_RO, lang_RU, lang_SL,
|
||||||
lang_SR, lang_TH, lang_TR, lang_UK, lang_VI)
|
lang_SR, lang_TE, lang_TH, lang_TR, lang_UK, lang_VI)
|
||||||
|
|
||||||
CONVERTER_CLASSES = {
|
CONVERTER_CLASSES = {
|
||||||
'ar': lang_AR.Num2Word_AR(),
|
'ar': lang_AR.Num2Word_AR(),
|
||||||
@@ -60,7 +60,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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17,13 +17,13 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from .base import Num2Word_Base
|
from .lang_EU import Num2Word_EU
|
||||||
|
|
||||||
|
|
||||||
class Num2Word_KN(Num2Word_Base):
|
class Num2Word_KN(Num2Word_EU):
|
||||||
def set_high_numwords(self, high):
|
def set_high_numwords(self, high):
|
||||||
for n, word in self.high_numwords:
|
for n, word in self.high_numwords:
|
||||||
self.cards[10 ** n] = word
|
self.cards[10**n] = word
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
self.low_numwords = [
|
self.low_numwords = [
|
||||||
|
|||||||
169
num2words/lang_TE.py
Normal file
169
num2words/lang_TE.py
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from .lang_EU import Num2Word_EU
|
||||||
|
|
||||||
|
|
||||||
|
class Num2Word_TE(Num2Word_EU):
|
||||||
|
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:
|
||||||
|
if ltext[-1] in self.modifiers:
|
||||||
|
return ("%s %s" % (ltext[:-1], rtext), lnum + rnum)
|
||||||
|
else:
|
||||||
|
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)[-1:])
|
||||||
|
|
||||||
|
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
|
||||||
@@ -58,10 +58,16 @@ class Num2WordsKNTest(TestCase):
|
|||||||
num2words(1003, lang='kn', to='ordinal'),
|
num2words(1003, lang='kn', to='ordinal'),
|
||||||
u'ಒಂದು ಸಾವಿರದ ಮೂರನೇ'
|
u'ಒಂದು ಸಾವಿರದ ಮೂರನೇ'
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_ordinal_num(self):
|
|
||||||
self.assertEqual(num2words(2, lang="kn", ordinal=True), u"ಎರಡನೇ")
|
self.assertEqual(num2words(2, lang="kn", ordinal=True), u"ಎರಡನೇ")
|
||||||
self.assertEqual(num2words(5, lang="kn", ordinal=True), u"ಐದನೇ")
|
self.assertEqual(num2words(5, lang="kn", ordinal=True), u"ಐದನೇ")
|
||||||
self.assertEqual(num2words(16, lang="kn", ordinal=True), u"ಹದಿನಾರನೇ")
|
self.assertEqual(num2words(16, lang="kn", ordinal=True), u"ಹದಿನಾರನೇ")
|
||||||
self.assertEqual(num2words(113, lang="kn", ordinal=True),
|
self.assertEqual(num2words(113, lang="kn", ordinal=True),
|
||||||
u"ಒಂದು ನೂರ ಹದಿಮೂರನೇ")
|
u"ಒಂದು ನೂರ ಹದಿಮೂರನೇ")
|
||||||
|
|
||||||
|
def test_ordinal_num(self):
|
||||||
|
self.assertEqual(num2words(2, lang="kn", to='ordinal_num'), u"2ಎರಡನೇ")
|
||||||
|
self.assertEqual(num2words(5, lang="kn", to='ordinal_num'), u"5ಐದನೇ")
|
||||||
|
self.assertEqual(num2words(16, lang="kn", to='ordinal_num'),
|
||||||
|
u"16ಹದಿನಾರನೇ")
|
||||||
|
self.assertEqual(num2words(113, lang="kn", to='ordinal_num'),
|
||||||
|
u"113ಒಂದು ನೂರ ಹದಿಮೂರನೇ")
|
||||||
|
|||||||
70
tests/test_te.py
Normal file
70
tests/test_te.py
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright (c) 2003, Taro Ogawa. All Rights Reserved.
|
||||||
|
# Copyright (c) 2013, Savoir-faire Linux inc. All Rights Reserved.
|
||||||
|
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
# This library is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# Lesser General Public License for more details.
|
||||||
|
# You should have received a copy of the GNU Lesser General Public
|
||||||
|
# License along with this library; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
# MA 02110-1301 USA
|
||||||
|
|
||||||
|
from unittest import TestCase
|
||||||
|
|
||||||
|
from num2words import num2words
|
||||||
|
|
||||||
|
|
||||||
|
class Num2WordsTETest(TestCase):
|
||||||
|
def test_numbers(self):
|
||||||
|
self.assertEqual(num2words(66, lang="te"), u"అరవై ఆరు")
|
||||||
|
self.assertEqual(num2words(1734, lang="te"),
|
||||||
|
u"ఒకటి వేయి ఏడు వందల ముప్పై నాలుగు")
|
||||||
|
self.assertEqual(num2words(134, lang="te"),
|
||||||
|
u"ఒకటి వందల ముప్పై నాలుగు")
|
||||||
|
self.assertEqual(num2words(54411, lang="te"),
|
||||||
|
u"యాభై నాలుగు వేయి నాలుగు వందల పదకొండు")
|
||||||
|
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(1.61803, lang="te"),
|
||||||
|
u"ఒకటి బిందువు ఆరు ఒకటి ఎనిమిది సున్న మూడు")
|
||||||
|
self.assertEqual(num2words(34.876, lang="te"),
|
||||||
|
u"ముప్పై నాలుగు బిందువు ఎనిమిది ఏడు ఆరు")
|
||||||
|
self.assertEqual(num2words(3.14, 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(23, 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"ఒకటి వేయిల మూడువ")
|
||||||
|
self.assertEqual(num2words(4, lang='te', to='ordinal'),
|
||||||
|
u"నాలుగువ")
|
||||||
|
|
||||||
|
def test_ordinal_num(self):
|
||||||
|
self.assertEqual(num2words(2, lang="te", to='ordinal_num'), u"2వ")
|
||||||
|
self.assertEqual(num2words(3, lang="te", to='ordinal_num'), u"3వ")
|
||||||
|
self.assertEqual(num2words(5, lang="te", to='ordinal_num'), u"5వ")
|
||||||
|
self.assertEqual(num2words(16, lang="te", to='ordinal_num'), u"16వ")
|
||||||
|
self.assertEqual(num2words(113, lang="te", to='ordinal_num'),
|
||||||
|
u"113వ")
|
||||||
Reference in New Issue
Block a user