mirror of
https://github.com/bblaz/num2words.git
synced 2025-12-06 06:42:25 +00:00
Add Amharic language
This commit is contained in:
committed by
Willem Van Onsem
parent
5d1e3c7d1a
commit
16229a31a4
107
num2words/lang_AM.py
Normal file
107
num2words/lang_AM.py
Normal file
@@ -0,0 +1,107 @@
|
||||
# -*- 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 __future__ import division, print_function, unicode_literals
|
||||
|
||||
from . import lang_EU
|
||||
|
||||
|
||||
class Num2Word_AM(lang_EU.Num2Word_EU):
|
||||
def set_high_numwords(self, high):
|
||||
max = 3 + 3 * len(high)
|
||||
for word, n in zip(high, range(max, 3, -3)):
|
||||
self.cards[10 ** n] = word + "ሊዮን"
|
||||
|
||||
def setup(self):
|
||||
super(Num2Word_AM, self).setup()
|
||||
|
||||
self.negword = "አሉታዊ "
|
||||
self.pointword = "ነጥብ"
|
||||
self.exclude_title = ["እና", "ነጥብ", "አሉታዊ"]
|
||||
|
||||
self.mid_numwords = [(1000, "ሺህ"), (100, "መቶ"), (90, "ዘጠና"),
|
||||
(80, "ሰማኒያ"), (70, "ሰባ"), (60, "ስድሳ"),
|
||||
(50, "አምሳ"), (40, "አርባ"), (30, "ሠላሳ")]
|
||||
self.low_numwords = ["ሃያ", "አሥራ ዘጠኝ", "አሥራ ስምንት", "አሥራ ሰባት",
|
||||
"አስራ ስድስት", "አሥራ አምስት", "አሥራ አራት", "አሥራ ሦስት",
|
||||
"አሥራ ሁለት", "አሥራ አንድ", "አሥር", "ዘጠኝ", "ስምንት",
|
||||
"ሰባት", "ስድስት", "አምስት", "አራት", "ሦስት", "ሁለት",
|
||||
"አንድ", "ዜሮ"]
|
||||
self.ords = {"አንድ": "አንደኛ",
|
||||
"ሁለት": "ሁለተኛ",
|
||||
"ሦስት": "ሦስተኛ",
|
||||
"አራት": "አራተኛ",
|
||||
"አምስት": "አምስተኛ",
|
||||
"ስድስት": "ስድስተኛ",
|
||||
"ሰባት": "ሰባተኛ",
|
||||
"ስምንት": "ስምንተኛ",
|
||||
"ዘጠኝ": "ዘጠነኛ",
|
||||
"አሥር": "አሥረኛ",
|
||||
"አሥራ አንድ": "አሥራ አንድ",
|
||||
"አሥራ ሁለት": "አሥራ ሁለተኛ",
|
||||
"አሥራ ሦስት": "አሥራ ሦስተኛ",
|
||||
"አሥራ አራት": "አሥራ አራተኛ",
|
||||
"አሥራ አምስት": "አሥራ አምስተኛ",
|
||||
"አሥራ ስድስት": "አሥራ ስድስተኛ",
|
||||
"አሥራ ሰባት": "አሥራ ሰባተኛ",
|
||||
"አሥራ ስምንት": "አሥራ ስምንተኛ",
|
||||
"አሥራ ዘጠኝ": "አሥራ ዘጠነኛ"}
|
||||
|
||||
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(self, value):
|
||||
self.verify_ordinal(value)
|
||||
outwords = self.to_cardinal(value).split(" ")
|
||||
lastwords = outwords[-1].split("-")
|
||||
lastword = lastwords[-1].lower()
|
||||
try:
|
||||
lastword = self.ords[lastword]
|
||||
except KeyError:
|
||||
if lastword[-1] == "y":
|
||||
lastword = lastword[:-1] + "ie"
|
||||
lastword += "th"
|
||||
lastwords[-1] = self.title(lastword)
|
||||
outwords[-1] = "-".join(lastwords)
|
||||
return " ".join(outwords)
|
||||
|
||||
def to_ordinal_num(self, value):
|
||||
self.verify_ordinal(value)
|
||||
return "%s%s" % (value, self.to_ordinal(value)[-2:])
|
||||
|
||||
def to_currency(self, val, currency='ብር', cents=True, separator='.',
|
||||
adjective=False):
|
||||
result = super(Num2Word_AM, self).to_currency(
|
||||
val, currency=currency, cents=cents, separator=separator,
|
||||
adjective=adjective)
|
||||
return result
|
||||
|
||||
def to_year(self, val, longval=True):
|
||||
if not (val // 100) % 10:
|
||||
return self.to_cardinal(val)
|
||||
return self.to_splitnum(val, hightxt="መቶ", longval=longval) \
|
||||
.replace(' ', '')
|
||||
Reference in New Issue
Block a user