241 lines
8.1 KiB
Java
241 lines
8.1 KiB
Java
^0 нуль
|
||
1 один
|
||
2 два
|
||
3 три
|
||
4 чотири
|
||
5$ пʼять
|
||
5 пʼят
|
||
6$ шість
|
||
6 шіст
|
||
7 сім
|
||
8 вісім
|
||
9$ девʼять
|
||
9 девʼят
|
||
10 десять
|
||
11 одинадцять
|
||
12 дванадцять
|
||
13 тринадцять
|
||
14 чотирнадцять
|
||
15 пʼятнадцять
|
||
16 шістнадцять
|
||
17 сімнадцять
|
||
18 вісімнадцять
|
||
19 девʼятнадцять
|
||
([23])(\d) $1|дцять[ $2]
|
||
4(\d) сорок[ $1]
|
||
9(\d) девʼяносто[ $1]
|
||
(\d)(\d) $1десят[ $2]
|
||
1(\d\d) сто[ $1]
|
||
2(\d\d) двісті[ $1]
|
||
([34])(\d\d) $1ста[ $2]
|
||
(\d)(\d\d) $1сот[ $2]
|
||
(1|\d?[02-9]1)(\d{3}) $(f:$1) тисяча[ $2]
|
||
([234]|\d?[02-9][234])(\d{3}) $(f:$1) тисячі[ $2]
|
||
(\d{1,3})(\d{3}) $1| тисяч[ $2]
|
||
(1|\d?[02-9]1)(\d{6}) $1 мільйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{6}) $1 мільйона[ $2]
|
||
(\d{1,3})(\d{6}) $1| мільйонів[ $2]
|
||
(1|\d?[02-9]1)(\d{9}) $1 мільярд[ $2]
|
||
([234]|\d?[02-9][234])(\d{9}) $1 мільярда[ $2]
|
||
(\d{1,3})(\d{9}) $1| мільярдів[ $2]
|
||
(1|\d?[02-9]1)(\d{12}) $1 трильйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{12}) $1 трильйона[ $2]
|
||
(\d{1,3})(\d{12}) $1| трильйонів[ $2]
|
||
(1|\d?[02-9]1)(\d{15}) $1 квадрильйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{15}) $1 квадрильйона[ $2]
|
||
(\d{1,3})(\d{15}) $1| квадрильйонів[ $2]
|
||
(1|\d?[02-9]1)(\d{18}) $1 квінтильйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{18}) $1 квінтильйона[ $2]
|
||
(\d{1,3})(\d{18}) $1| квінтильйонів[ $2]
|
||
(1|\d?[02-9]1)(\d{21}) $1 секстильйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{21}) $1 секстильйона[ $2]
|
||
(\d{1,3})(\d{21}) $1| секстильйонів[ $2]
|
||
(1|\d?[02-9]1)(\d{24}) $1 септильйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{24}) $1 септильйона[ $2]
|
||
(\d{1,3})(\d{24}) $1| септильйонів[ $2]
|
||
(1|\d?[02-9]1)(\d{27}) $1 октильйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{27}) $1 октильйона[ $2]
|
||
(\d{1,3})(\d{27}) $1| октильйонів[ $2]
|
||
(1|\d?[02-9]1)(\d{30}) $1 нонільйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{30}) $1 нонільйона[ $2]
|
||
(\d{1,3})(\d{30}) $1| нонільйонів[ $2]
|
||
(1|\d?[02-9]1)(\d{33}) $1 децильйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{33}) $1 децильйона[ $2]
|
||
(\d{1,3})(\d{33}) $1| децильйонів[ $2]
|
||
(1|\d?[02-9]1)(\d{36}) $1 ундецильйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{36}) $1 ундецильйона[ $2]
|
||
(\d{1,3})(\d{36}) $1| ундецильйонів[ $2]
|
||
(1|\d?[02-9]1)(\d{39}) $1 дуодецильйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{39}) $1 дуодецильйона[ $2]
|
||
(\d{1,3})(\d{39}) $1| дуодецильйонів[ $2]
|
||
(1|\d?[02-9]1)(\d{42}) $1 тредецильйон[ $2]
|
||
([234]|\d?[02-9][234])(\d{42}) $1 тредецильйона[ $2]
|
||
(\d{1,3})(\d{42}) $1| тредецильйонів[ $2]
|
||
|
||
# negative numbers
|
||
|
||
[-−]1 мінус один
|
||
[-−](\d+) мінус |$1
|
||
|
||
# decimals
|
||
|
||
"([-−]?)[.,](\d+)" $(\10.\2)
|
||
"[-−]1[.,]" мінус одна ціла
|
||
"([-−]?\d+[02-9]1|1)[.,]" $(f:|$1) ціла
|
||
"([-−]?\d+)[.,]" $(f:|$1) цілих
|
||
"([-−]?\d+[.,])1" $1| й одна десята
|
||
"([-−]?\d+[.,])(\d)" $1| й $(f:|$2)| десятих
|
||
"([-−]?\d+[.,])([02-9]1)" $1| й $(f:|$2) сота
|
||
"([-−]?\d+[.,])(\d\d)" $1| й $(f:|$2)| сотих
|
||
"([-−]?\d+[.,])(\d[02-9]1)" $1| й $(f:|$2) тисячна
|
||
"([-−]?\d+[.,])(\d{3})" $1| й $(f:|$2)| тисячних
|
||
"([-−]?\d+[.,])(\d)(\d)(\d)(\d)" $1| |$2 |$3 |$4 |$5
|
||
"([-−]?\d+[.,]\d*)(\d)" $1| |$2
|
||
|
||
|
||
# female conversion
|
||
f:(.*)один \1одна
|
||
f:(.*)два \1дві
|
||
f:(.*) \1
|
||
|
||
# neuter conversion
|
||
n:(.*)один \1одне
|
||
n:(.*) \1
|
||
|
||
# possessive (1-999) - used in ordinals
|
||
"pos:(.* )?од(ин|на) ?" [$(pos:\1)]одного
|
||
"pos:(.* )?дв[аі] ?" [$(pos:\1)]двох
|
||
"pos:(.* )?три ?" [$(pos:\1)]трьох
|
||
"pos:(.* )?чотири ?" [$(pos:\1)]чотирьох
|
||
"pos:(.* )?вісім ?" [$(pos:\1)]восьми
|
||
"pos:(.* )?([а-я]+)ь ?" [$(pos:\1)]\2и
|
||
"pos:(.* )?сорок ?" [$(pos:\1)]сорока
|
||
"pos:(.* )?([а-я]+)десят ?" [$(pos:\1)]\2десяти
|
||
"pos:(.* )?([а-я]*)сто ?" [$(pos:\1)]\2ста
|
||
"pos:(.*)двісті ?" \1двохсот
|
||
"pos:(.*)иста ?" \1ьохсот
|
||
"pos:(.*)ісімсот ?" \1осьмисот
|
||
"pos:(.*[^и])сот ?" \1исот
|
||
pos:(.*) \1
|
||
|
||
# currency
|
||
|
||
# unit/subunit
|
||
|
||
us:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \1
|
||
up:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \2
|
||
ug:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \3
|
||
ss:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \4
|
||
sp:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \5
|
||
sg:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \6
|
||
|
||
EUR:(\D+) $(\1: євро, євро, євро, цент, цента, центів)
|
||
GBP:(\D+) $(\1: фунт стерлінгів, фунта стерлінгів, фунтів стерлінгів, пенні, пенса, пенсів)
|
||
RUB:(\D+) $(\1: рубль, рубля, рублів, копійка, копійки, копійок)
|
||
UAH:(\D+) $(\1: гривня, гривні, гривень, копійка, копійки, копійок)
|
||
USD:(\D+) $(\1: долар США, долара США, доларів США, цент, цента, центів)
|
||
|
||
"(UAH) ([-−]?1)([.,]00?)?" $(f:$2)|$(\1:us)
|
||
"(UAH) ([-−]?\d*[02-9]1)([.,]00?)?" $(f:$2)|$(\1:us)
|
||
"(UAH) ([-−]?[234])([.,]00?)?" $(f:$2)|$(\1:up)
|
||
"(UAH) ([-−]?\d*[02-9][234])([.,]00?)?" $(f:$2)|$(\1:up)
|
||
"(UAH) ([-−]?[0])([.,]0?)?" $2$(\1:ug)
|
||
"(UAH) ([-−]?\d+)([.,]00?)?" $(f:$2)|$(\1:ug)
|
||
|
||
"([A-Z]{3}) ([-−]?1)([.,]00?)?" $2|$(\1:us)
|
||
"([A-Z]{3}) ([-−]?\d*[02-9]1)([.,]00?)?" $2|$(\1:us)
|
||
"([A-Z]{3}) ([-−]?[234])([.,]00?)?" $2|$(\1:up)
|
||
"([A-Z]{3}) ([-−]?\d*[02-9][234])([.,]00?)?" $2|$(\1:up)
|
||
"([A-Z]{3}) ([-−]?\d+)([.,]00?)?" $2|$(\1:ug)
|
||
|
||
"((RUB) [-−]?\d+)[.,]([02-9])1" $1 [$(\30) ]одна$(\2:ss)
|
||
"((RUB) [-−]?\d+)[.,]([02-9])2" $1 [$(\30) ]двi$(\2:sp)
|
||
"((UAH) [-−]?\d+)[.,]([02-9])1" $1 [$(\30) ]одна$(\2:ss)
|
||
"((UAH) [-−]?\d+)[.,]([02-9])2" $1 [$(\30) ]двi$(\2:sp)
|
||
"(([A-Z]{3}) [-−]?\d+)[.,](01)" $1 |$(1)$(\2:ss)
|
||
"((EUR|GBP|USD) [-−]?\d+)[.,]([02-9]1)" $1 $3|$(\2:ss)
|
||
"((EUR|GBP|USD) [-−]?\d+)[.,]([02-9]2)" $1 $3|$(\2:sp)
|
||
"(([A-Z]{3}) [-−]?\d+)[.,]([02-9][234])" $1 |$3$(\2:sp)
|
||
"(([A-Z]{3}) [-−]?\d+)[.,](\d)" $1 |$(\30)$(\2:sg)
|
||
"(([A-Z]{3}) [-−]?\d+)[.,](\d\d)" $1 |$3$(\2:sg)
|
||
|
||
== cardinal(-masculine)? ==
|
||
|
||
([-−]?[0-9]+) $2
|
||
|
||
== cardinal-feminine ==
|
||
|
||
0 нуль
|
||
([-−]?[0-9]+) $(f:$1)
|
||
|
||
== cardinal-neuter ==
|
||
|
||
0 нуль
|
||
([-−]?[0-9]+) $(n:$1)
|
||
|
||
== ordinal-feminine ==
|
||
|
||
0 нульова
|
||
([-−]?\d+) $(ordinal-feminine |$1)
|
||
|
||
(.*)один \1перша
|
||
(.*)два \1друга
|
||
(.*)три \1третя
|
||
(.*)чотири \1четверта
|
||
(.*)шість \1шоста
|
||
(.*)ть \1та
|
||
(.*)вісім \1восьма
|
||
(.*)сім \1сьома
|
||
(.*)к \1кова
|
||
(.*)осто \1оста
|
||
(.*)сто \1сота
|
||
(.*)двісті \1двохсота
|
||
(.*)иста \1ьохсота
|
||
(.*)шістсот \2шестисота
|
||
(.*)вісімсот \1восьмисота
|
||
(.*)сімсот \2семисота
|
||
(.*)сот \1исота
|
||
"одна тисяча" тисячна
|
||
"(.* )тисяч[аі]?" $(pos:\1)тисячна
|
||
"один (\w+ль\w+)" \1на
|
||
"(.* )([а-я]+ль[а-я]+)(а|ов)" $(pos:\1)\2на
|
||
"(.* )([а-я]+ль[а-я]+)" $(pos:\1)\2на
|
||
(.*) \1а
|
||
|
||
== ordinal-neuter ==
|
||
|
||
([-−]?\d+) $(ordinal-neuter |$(ordinal-feminine \1))
|
||
|
||
(.*)а \1е
|
||
(.*)я \1є
|
||
(.*) \1
|
||
|
||
== ordinal(-masculine)? ==
|
||
|
||
([-−]?\d+) $(ordinal-masculine |$(ordinal-feminine \2))
|
||
|
||
(.*)а \2ий
|
||
(.*)я \2ій
|
||
(.*) \2
|
||
|
||
== ordinal-number-feminine ==
|
||
|
||
(\d+) \1-$(ordinal-number-neuter |$(ordinal-feminine \1))
|
||
|
||
== ordinal-number-neuter ==
|
||
|
||
(\d+) \1-$(ordinal-number-neuter |$(ordinal-neuter \1))
|
||
|
||
# use last two letters to get a consonant
|
||
|
||
.*(..) \1
|
||
|
||
== ordinal-number(-masculine)? ==
|
||
|
||
(\d+) \2-й
|
||
|
||
== help ==
|
||
|
||
"" |$(1)|, |$(2)|, |$(3)|\n$(help cardinal-feminine)$(help cardinal-masculine)$(help cardinal-neuter)$(help ordinal-feminine)$(help ordinal-masculine)$(help ordinal-neuter)$(help ordinal-number-feminine)$(help ordinal-number-masculine)$(help ordinal-number-neuter)currency \(наприклад, UAH\): $(UAH 2.5)
|
||
(.*) \1: |$(\1 1)|, |$(\1 2)|, |$(\1 3)|\n
|