mirror of
https://github.com/bblaz/num2words.git
synced 2025-12-06 06:42:25 +00:00
[ADD] lang_LT: new currencies, feminine numerals
- Adding feminine numeric forms. - Implementing new currency forms: USD, GBP, PLN, RUB (with feminine numeric forms).
This commit is contained in:
@@ -22,6 +22,18 @@ from .utils import get_digits, splitbyx
|
|||||||
|
|
||||||
ZERO = ('nulis',)
|
ZERO = ('nulis',)
|
||||||
|
|
||||||
|
ONES_FEMININE = {
|
||||||
|
1: ('viena',),
|
||||||
|
2: ('dvi',),
|
||||||
|
3: ('trys',),
|
||||||
|
4: ('keturios',),
|
||||||
|
5: ('penkios',),
|
||||||
|
6: ('šešios',),
|
||||||
|
7: ('septynios',),
|
||||||
|
8: ('aštuonios',),
|
||||||
|
9: ('devynios',),
|
||||||
|
}
|
||||||
|
|
||||||
ONES = {
|
ONES = {
|
||||||
1: ('vienas',),
|
1: ('vienas',),
|
||||||
2: ('du',),
|
2: ('du',),
|
||||||
@@ -73,11 +85,25 @@ THOUSANDS = {
|
|||||||
10: ('naintilijonas', 'naintilijonai', 'naintilijonų'),
|
10: ('naintilijonas', 'naintilijonai', 'naintilijonų'),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GENERIC_CENTS = ('centas', 'centai', 'centų')
|
||||||
|
|
||||||
|
|
||||||
class Num2Word_LT(Num2Word_Base):
|
class Num2Word_LT(Num2Word_Base):
|
||||||
CURRENCY_FORMS = {
|
CURRENCY_FORMS = {
|
||||||
'LTL': (('litas', 'litai', 'litų'), ('centas', 'centai', 'centų')),
|
'LTL': (('litas', 'litai', 'litų'), GENERIC_CENTS),
|
||||||
'EUR': (('euras', 'eurai', 'eurų'), ('centas', 'centai', 'centų')),
|
'EUR': (('euras', 'eurai', 'eurų'), GENERIC_CENTS),
|
||||||
|
'USD': (('doleris', 'doleriai', 'dolerių'), GENERIC_CENTS),
|
||||||
|
'GBP': (
|
||||||
|
('svaras sterlingų', 'svarai sterlingų', 'svarų sterlingų'),
|
||||||
|
('pensas', 'pensai', 'pensų')
|
||||||
|
),
|
||||||
|
'PLN': (
|
||||||
|
('zlotas', 'zlotai', 'zlotų'),
|
||||||
|
('grašis', 'grašiai', 'grašių')),
|
||||||
|
'RUB': (
|
||||||
|
('rublis', 'rubliai', 'rublių'),
|
||||||
|
('kapeika', 'kapeikos', 'kapeikų')
|
||||||
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
@@ -114,7 +140,10 @@ class Num2Word_LT(Num2Word_Base):
|
|||||||
def to_ordinal(self, number):
|
def to_ordinal(self, number):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
def _int2word(self, n):
|
def _cents_verbose(self, number, currency):
|
||||||
|
return self._int2word(number, currency == 'RUB')
|
||||||
|
|
||||||
|
def _int2word(self, n, feminine=False):
|
||||||
if n == 0:
|
if n == 0:
|
||||||
return ZERO[0]
|
return ZERO[0]
|
||||||
|
|
||||||
@@ -139,7 +168,10 @@ class Num2Word_LT(Num2Word_Base):
|
|||||||
if n2 == 1:
|
if n2 == 1:
|
||||||
words.append(TENS[n1][0])
|
words.append(TENS[n1][0])
|
||||||
elif n1 > 0:
|
elif n1 > 0:
|
||||||
words.append(ONES[n1][0])
|
if (i == 1 or feminine and i == 0) and n < 1000:
|
||||||
|
words.append(ONES_FEMININE[n1][0])
|
||||||
|
else:
|
||||||
|
words.append(ONES[n1][0])
|
||||||
|
|
||||||
if i > 0:
|
if i > 0:
|
||||||
words.append(self.pluralize(x, THOUSANDS[i]))
|
words.append(self.pluralize(x, THOUSANDS[i]))
|
||||||
|
|||||||
@@ -62,20 +62,27 @@ class Num2WordsLTTest(TestCase):
|
|||||||
num2words(1, lang='lt', to='ordinal')
|
num2words(1, lang='lt', to='ordinal')
|
||||||
|
|
||||||
def test_to_currency(self):
|
def test_to_currency(self):
|
||||||
|
# Test all available currency forms.
|
||||||
|
# LTL
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
num2words(1.0, lang='lt', to='currency', currency='LTL'),
|
num2words(1.0, lang='lt', to='currency', currency='LTL'),
|
||||||
'vienas litas, nulis centų'
|
'vienas litas, nulis centų'
|
||||||
)
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(10.01, lang='lt', to='currency', currency='LTL'),
|
||||||
|
'dešimt litų, vienas centas'
|
||||||
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
num2words(1234.56, lang='lt', to='currency', currency='LTL'),
|
num2words(1234.56, lang='lt', to='currency', currency='LTL'),
|
||||||
'vienas tūkstantis du šimtai trisdešimt keturi litai, '
|
'vienas tūkstantis du šimtai trisdešimt keturi litai, '
|
||||||
'penkiasdešimt šeši centai'
|
'penkiasdešimt šeši centai'
|
||||||
)
|
)
|
||||||
|
# EUR
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
num2words(-1251985, lang='lt', to='currency', currency='EUR',
|
num2words(-1251981, lang='lt', to='currency', currency='EUR',
|
||||||
cents=False),
|
cents=False),
|
||||||
'minus dvylika tūkstančių penki šimtai devyniolika eurų, '
|
'minus dvylika tūkstančių penki šimtai devyniolika eurų, '
|
||||||
'85 centai'
|
'81 centas'
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
num2words(1.0, lang='lt', to='currency', currency='EUR'),
|
num2words(1.0, lang='lt', to='currency', currency='EUR'),
|
||||||
@@ -86,3 +93,73 @@ class Num2WordsLTTest(TestCase):
|
|||||||
'vienas tūkstantis du šimtai trisdešimt keturi eurai, '
|
'vienas tūkstantis du šimtai trisdešimt keturi eurai, '
|
||||||
'penkiasdešimt šeši centai'
|
'penkiasdešimt šeši centai'
|
||||||
)
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(1122.22, lang='lt', to='currency', currency='EUR'),
|
||||||
|
'vienas tūkstantis vienas šimtas dvidešimt du eurai, '
|
||||||
|
'dvidešimt du centai'
|
||||||
|
)
|
||||||
|
# USD
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(-1281, lang='lt', to='currency', currency='USD',
|
||||||
|
cents=False),
|
||||||
|
'minus dvylika dolerių, 81 centas'
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(1.0, lang='lt', to='currency', currency='USD'),
|
||||||
|
'vienas doleris, nulis centų'
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(5.06, lang='lt', to='currency', currency='USD'),
|
||||||
|
'penki doleriai, šeši centai'
|
||||||
|
)
|
||||||
|
# GBP
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(-1281, lang='lt', to='currency', currency='GBP',
|
||||||
|
cents=False),
|
||||||
|
'minus dvylika svarų sterlingų, 81 pensas'
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(1.0, lang='lt', to='currency', currency='GBP'),
|
||||||
|
'vienas svaras sterlingų, nulis pensų'
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(5.06, lang='lt', to='currency', currency='GBP'),
|
||||||
|
'penki svarai sterlingų, šeši pensai'
|
||||||
|
)
|
||||||
|
# PLN
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(-1281, lang='lt', to='currency', currency='PLN',
|
||||||
|
cents=False),
|
||||||
|
'minus dvylika zlotų, 81 grašis'
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(1.0, lang='lt', to='currency', currency='PLN'),
|
||||||
|
'vienas zlotas, nulis grašių'
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(5.06, lang='lt', to='currency', currency='PLN'),
|
||||||
|
'penki zlotai, šeši grašiai'
|
||||||
|
)
|
||||||
|
# RUB
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(-1281, lang='lt', to='currency', currency='RUB',
|
||||||
|
cents=False),
|
||||||
|
'minus dvylika rublių, 81 kapeika'
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(1.0, lang='lt', to='currency', currency='RUB'),
|
||||||
|
'vienas rublis, nulis kapeikų'
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(5.06, lang='lt', to='currency', currency='RUB'),
|
||||||
|
'penki rubliai, šešios kapeikos'
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(-12.01, lang='lt', to='currency', currency='RUB'),
|
||||||
|
'minus dvylika rublių, viena kapeika'
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
num2words(1122.22, lang='lt', to='currency', currency='RUB'),
|
||||||
|
'vienas tūkstantis vienas šimtas dvidešimt du rubliai, '
|
||||||
|
'dvidešimt dvi kapeikos'
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user