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',)
|
||||
|
||||
ONES_FEMININE = {
|
||||
1: ('viena',),
|
||||
2: ('dvi',),
|
||||
3: ('trys',),
|
||||
4: ('keturios',),
|
||||
5: ('penkios',),
|
||||
6: ('šešios',),
|
||||
7: ('septynios',),
|
||||
8: ('aštuonios',),
|
||||
9: ('devynios',),
|
||||
}
|
||||
|
||||
ONES = {
|
||||
1: ('vienas',),
|
||||
2: ('du',),
|
||||
@@ -73,11 +85,25 @@ THOUSANDS = {
|
||||
10: ('naintilijonas', 'naintilijonai', 'naintilijonų'),
|
||||
}
|
||||
|
||||
GENERIC_CENTS = ('centas', 'centai', 'centų')
|
||||
|
||||
|
||||
class Num2Word_LT(Num2Word_Base):
|
||||
CURRENCY_FORMS = {
|
||||
'LTL': (('litas', 'litai', 'litų'), ('centas', 'centai', 'centų')),
|
||||
'EUR': (('euras', 'eurai', 'eurų'), ('centas', 'centai', 'centų')),
|
||||
'LTL': (('litas', 'litai', 'litų'), GENERIC_CENTS),
|
||||
'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):
|
||||
@@ -114,7 +140,10 @@ class Num2Word_LT(Num2Word_Base):
|
||||
def to_ordinal(self, number):
|
||||
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:
|
||||
return ZERO[0]
|
||||
|
||||
@@ -139,7 +168,10 @@ class Num2Word_LT(Num2Word_Base):
|
||||
if n2 == 1:
|
||||
words.append(TENS[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:
|
||||
words.append(self.pluralize(x, THOUSANDS[i]))
|
||||
|
||||
@@ -62,20 +62,27 @@ class Num2WordsLTTest(TestCase):
|
||||
num2words(1, lang='lt', to='ordinal')
|
||||
|
||||
def test_to_currency(self):
|
||||
# Test all available currency forms.
|
||||
# LTL
|
||||
self.assertEqual(
|
||||
num2words(1.0, lang='lt', to='currency', currency='LTL'),
|
||||
'vienas litas, nulis centų'
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(10.01, lang='lt', to='currency', currency='LTL'),
|
||||
'dešimt litų, vienas centas'
|
||||
)
|
||||
self.assertEqual(
|
||||
num2words(1234.56, lang='lt', to='currency', currency='LTL'),
|
||||
'vienas tūkstantis du šimtai trisdešimt keturi litai, '
|
||||
'penkiasdešimt šeši centai'
|
||||
)
|
||||
# EUR
|
||||
self.assertEqual(
|
||||
num2words(-1251985, lang='lt', to='currency', currency='EUR',
|
||||
num2words(-1251981, lang='lt', to='currency', currency='EUR',
|
||||
cents=False),
|
||||
'minus dvylika tūkstančių penki šimtai devyniolika eurų, '
|
||||
'85 centai'
|
||||
'81 centas'
|
||||
)
|
||||
self.assertEqual(
|
||||
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, '
|
||||
'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