Module:number list/data/tl

From Wiktionary, the free dictionary
Jump to navigation Jump to search

This module contains data on various types of numbers in Tagalog.

Number Cardinal Spanish cardinal Ordinal Spanish ordinal Ordinal abbreviation Adverbial Multiplier Distributive Collective Restrictive Fractional Wikipedia link
0 wala sero
1 isa uno una, pang-una, ikaisa primero, primera ika-1, pang-1 minsan isang ibayo tig-isa, isahan, isa-isa iisa buo 1 (bilang)
2 dalawa dos ikalawa, pangalawa segundo, segunda ika-2, pang-2 makalawa, makadalawa doble, dalawang ibayo tigdalawa, dalawahan, dala-dalawa dadalawa kalahati 2 (bilang)
3 tatlo tres ikatlo, ikatatlo, pangatlo tersero, tersera ika-3, pang-3 makatlo, makaitlo, makatatlo triple, tatlong ibayo tigtatlo, tatluhan, tatlo-tatlo tatatlo katlo, sangkatlo, saikatlo 3 (bilang)
4 apat kuwatro ikaapat, pang-apat kuwarta ika-4, pang-4 makaapat, makaipat apat na ibayo tig-apat, apatan, apat-apat aapat kapat, sangkapat, saikapat 4 (bilang)
5 lima singko ikalima, panlima kinto, kinta ika-5, pang-5 makalima limang ibayo tiglima, limahan, lima-lima lilima kalima, sangkalima, ikalima, saikalima 5 (bilang)
6 anim seis ikaanim, pang-anim ika-6, pang-6 makaanim anim na ibayo tig-anim, animan, anim-anim aanim kanim, sangkanim, saikanim, kaanim, sangkaanim, ikaanim, saikaanim 6 (bilang)
7 pito siyete ikapito, pampito ika-7, pang-7 makapito pitong ibayo tigpito, pituhan, pito-pito pipito kapito, sangkapito, ikapito, saikapito 7 (bilang)
8 walo otso ikawalo, pangwalo oktabo, oktaba ika-8, pang-8 makawalo walong ibayo tigwalo, waluhan, walo-walo wawalo kawalo, sangkawalo, ikawalo, saikawalo 8 (bilang)
9 siyam nuwebe ikasiyam, pansiyam ika-9, pang-9 makasiyam siyam na ibayo tigsiyam, siyaman, siyam-siyam sisiyam kasiyam, sangkasiyam, ikasiyam, saikasiyam 9 (bilang)
10 sampu diyes ikapu, ikasampu, pansampu ika-10, pang-10 makasampu sampung ibayo tigsampu, sampuan, sampu-sampu pu, desena sasampu
kapu
, ikapu, saikapu,
kasampu
, sangkasampu, ikasampu, saikasampu
10 (bilang)
11 labing-isa onse ikalabing-isa, panlabing-isa ika-11, pang-11 makalabing-isa labing-isang ibayo tiglabing-isa, labing-isahan, labi-labing-isa lalabing-isa kalabing-isa, sangkalabing-isa, ikalabing-isa, saikalabing-isa 11 (bilang)
12 labindalawa dose ikalabindalawa, panlabindalawa ika-12, pang-12 makalabindalawa labindalawang ibayo tiglabindalawa, labindalawahan, labi-labindalawa dosena lalabindalawa kalabindalawa, sangkalabindalawa, ikalabindalawa, saikalabindalawa 12 (bilang)
13 labintatlo trese ikalabintatlo, panlabintatlo ika-13, pang-13 makalabintatlo labintatlong ibayo tiglabintatlo, labintatluhan, labi-labintatlo lalabintatlo kalabintatlo, sangkalabintatlo, ikalabintatlo, saikalabintatlo 13 (bilang)
14 labing-apat katorse ikalabing-apat, panlabing-apat ika-14, pang-14 makalabing-apat labing-apat na ibayo tiglabing-apat, labing-apatan, labi-labing-apat lalabing-apat kalabing-apat, sangkalabing-apat, ikalabing-apat, saikalabing-apat 14 (bilang)
15 labinlima kinse ikalabinlima, panlabinlima ika-15, pang-15 makalabinlima labinlimang ibayo tiglabinlima, labinlimahan, labi-labinlima lalabinlima kalabinlima, sangkalabinlima, ikalabinlima, saikalabinlima 15 (bilang)
16 labing-anim disiseis ikalabing-anim, panlabing-anim ika-16, pang-16 makalabing-anim labing-anim na ibayo tiglabing-anim, labing-animan, labi-labing-anim lalabing-anim kalabing-anim, sangkalabing-anim, ikalabing-anim, saikalabing-anim 16 (bilang)
17 labimpito disisiyete ikalabimpito, panlabimpito ika-17, pang-17 makalabimpito labimpitong ibayo tiglabimpito, labimpituhan, labi-labimpito lalabimpito kalabimpito, sangkalabimpito, ikalabimpito, saikalabimpito 17 (bilang)
18 labingwalo disiotso ikalabingwalo, panlabingwalo ika-18, pang-18 makalabingwalo labingwalong ibayo tiglabingwalo, labingwaluhan, labi-labingwalo lalabingwalo kalabingwalo, sangkalabingwalo, ikalabingwalo, saikalabingwalo 18 (bilang)
19 labinsiyam disinuwebe ikalabinsiyam, panlabinsiyam ika-19, pang-19 makalabinsiyam labinsiyam na ibayo tiglabinsiyam, labinsiyaman, labi-labinsiyam lalabinsiyam kalabinsiyam, sangkalabinsiyam, ikalabinsiyam, saikalabinsiyam 19 (bilang)
20 dalawampu beynte ikadalawampu, pandalawampu ika-20, pang-20 makadalawampu dalawampung ibayo tigdalawampu, dalawampuan, dala-dalawampu dadalawampu kadalawampu, sangkadalawampu, ikadalawampu, saikadalawampu 20 (bilang)
21 dalawampu't isa beynte uno ikadalawampu't isa, pandalawampu't isa ika-21, pang-21 makadalawampu't isa dalawampu't isang ibayo tigdalawampu't isa, dalawampu't isahan, dala-dalawampu't isa dadalawampu't isa kadalawampu't isa, sangkadalawampu't isa, ikadalawampu't isa, saikadalawampu't isa
22 dalawampu't dalawa beynte dos ikadalawampu't dalawa, pandalawampu't dalawa ika-22, pang-22
23 dalawampu't tatlo beynte tres ikadalawampu't tatlo, pandalawampu't tatlo ika-23, pang-23
24 dalawampu't apat beynte kuwatro ikadalawampu't apat, pandalawampu't apat ika-24, pang-24
25 dalawampu't lima beynte singko ikadalawampu't lima, pandalawampu't lima ika-25, pang-25
26 dalawampu't anim beynte seis ikadalawampu't anim, pandalawampu't anim ika-26, pang-26
27 dalawampu't pito beynte siyete ikadalawampu't pito, pandalawampu't pito ika-27, pang-27
28 dalawampu't walo beynte otso ikadalawampu't walo, pandalawampu't walo ika-28, pang-28
29 dalawampu't siyam beynte nuwebe ikadalawampu't siyam, pandalawampu't siyam ika-29, pang-29
30 tatlumpu treynta ikatatlumpu, pantatlumpu ika-30, pang-30 makatatlumpu tatlumpung ibayo tigtatlumpu, tatlumpuan, tatlu-tatlumpu tatatlumpu katatlumpu, sangkatatlumpu, ikatatlumpu, saikatatlumpu
31 tatlumpu't isa treynta y uno ikatatlumpu't isa, pantatlumpu't isa ika-31, pang-31
32 tatlumpu't dalawa treynta y dos ikatatlumpu't dalawa, pantatlumpu't dalawa ika-32, pang-32
33 tatlumpu't tatlo treynta y tres ikatatlumpu't tatlo, pantatlumpu't tatlo ika-33, pang-33
34 tatlumpu't apat treynta y kuwatro ikatatlumpu't apat, pantatlumpu't apat ika-34, pang-34
35 tatlumpu't lima treynta y singko ikatatlumpu't lima, pantatlumpu't lima ika-35, pang-35
36 tatlumpu't anim treynta y seis ikatatlumpu't anim, pantatlumpu't anim ika-36, pang-36
37 tatlumpu't pito treynta y siyete ikatatlumpu't pito, pantatlumpu't pito ika-37, pang-37
38 tatlumpu't walo treynta y otso ikatatlumpu't walo, pantatlumpu't walo ika-38, pang-38
39 tatlumpu't siyam treynta y nuwebe ikatatlumpu't siyam, pantatlumpu't siyam ika-39, pang-39
40 apatnapu kuwarenta ikaapatnapu, pang-apatnapu ika-40, pang-40 makaapatnapu apatnapung ibayo tig-apatnapu, apatnapuan, apa-apatnapu aapatnapu kaapatnapu, sangkaapatnapu, ikaapatnapu, saikaapatnapu
41 apatnapu't isa kuwarenta y uno ikaapatnapu't isa, pang-apatnapu't isa ika-41, pang-41
42 apatnapu't dalawa kuwarenta y dos ikaapatnapu't dalawa, pang-apatnapu't dalawa ika-42, pang-42
43 apatnapu't tatlo kuwarenta y tres ikaapatnapu't tatlo, pang-apatnapu't tatlo ika-43, pang-43
44 apatnapu't apat kuwarenta y kuwatro ikaapatnapu't apat, pang-apatnapu't apat ika-44, pang-44
45 apatnapu't lima kuwarenta y singko ikaapatnapu't lima, pang-apatnapu't lima ika-45, pang-45
46 apatnapu't anim kuwarenta y seis ikaapatnapu't anim, pang-apatnapu't anim ika-46, pang-46
47 apatnapu't pito kuwarenta y siyete ikaapatnapu't pito, pang-apatnapu't pito ika-47, pang-47
48 apatnapu't walo kuwarenta y otso ikaapatnapu't walo, pang-apatnapu't walo ika-48, pang-48
49 apatnapu't siyam kuwarenta y nuwebe ikaapatnapu't siyam, pang-apatnapu't siyam ika-49, pang-49
50 limampu singkuwenta ikalimampu, panlimampu ika-50, pang-50 makalimampu limampung ibayo tiglimampu, limampuan, lima-limampu lilimampu kalimampu, sangkalimampu, ikalimampu, saikalimampu
51 limampu't isa singkuwenta y uno ikalimampu't isa, panlimampu't isa ika-51, pang-51
52 limampu't dalawa singkuwenta y dos ikalimampu't dalawa, panlimampu't dalawa ika-52, pang-52
53 limampu't tatlo singkuwenta y tres ikalimampu't tatlo, panlimampu't tatlo ika-53, pang-53
54 limampu't apat singkuwenta y kuwatro ikalimampu't apat, panlimampu't apat ika-54, pang-54
55 limampu't lima singkuwenta y singko ikalimampu't lima, panlimampu't lima ika-55, pang-55
56 limampu't anim singkuwenta y seis ikalimampu't anim, panlimampu't anim ika-56, pang-56
57 limampu't pito singkuwenta y siyete ikalimampu't pito, panlimampu't pito ika-57, pang-57
58 limampu't walo singkuwenta y otso ikalimampu't walo, panlimampu't walo ika-58, pang-58
59 limampu't siyam singkuwenta y nuwebe ikalimampu't siyam, panlimampu't siyam ika-59, pang-59
60 animnapu sesenta ikaanimnapu, pang-animnapu ika-60, pang-60 makaanimnapu animnapung ibayo tig-animnapu, animnapuan, ani-animnapu aanimnapu kaanimnapu, sangkaanimnapu, ikaanimnapu, saikaanimnapu
61 animnapu't isa sesenta y uno ikaanimnapu't isa, pang-animnapu't isa ika-61, pang-61
62 animnapu't dalawa sesenta y dos ikaanimnapu't dalawa, pang-animnapu't dalawa ika-62, pang-62
63 animnapu't tatlo sesenta y tres ikaanimnapu't tatlo, pang-animnapu't tatlo ika-63, pang-63
64 animnapu't apat sesenta y kuwatro ikaanimnapu't apat, pang-animnapu't apat ika-64, pang-64
65 animnapu't lima sesenta y singko ikaanimnapu't lima, pang-animnapu't lima ika-65, pang-65
66 animnapu't anim sesenta y seis ikaanimnapu't anim, pang-animnapu't anim ika-66, pang-66
67 animnapu't pito sesenta y siyete ikaanimnapu't pito, pang-animnapu't pito ika-67, pang-67
68 animnapu't walo sesenta y otso ikaanimnapu't walo, pang-animnapu't walo ika-68, pang-68
69 animnapu't siyam sesenta y nuwebe ikaanimnapu't siyam, pang-animnapu't siyam ika-69, pang-69
70 pitumpu setenta ikapitumpu, pampitumpu ika-70, pang-70 makapitumpu pitumpung ibayo tigpitumpu, pitumpuan, pitu-pitumpu pipitumpu kapitumpu, sangkapitumpu, ikapitumpu, saikapitumpu
71 pitumpu't isa setenta y uno ikapitumpu't isa, pampitumpu't isa ika-71, pang-71
72 pitumpu't dalawa setenta y dos ikapitumpu't dalawa, pampitumpu't dalawa ika-72, pang-72
73 pitumpu't tatlo setenta y tres ikapitumpu't tatlo, pampitumpu't tatlo ika-73, pang-73
74 pitumpu't apat setenta y kuwatro ikapitumpu't apat, pampitumpu't apat ika-74, pang-74
75 pitumpu't lima setenta y singko ikapitumpu't lima, pampitumpu't lima ika-75, pang-75
76 pitumpu't anim setenta y seis ikapitumpu't anim, pampitumpu't anim ika-76, pang-76
77 pitumpu't pito setenta y siyete ikapitumpu't pito, pampitumpu't pito ika-77, pang-77
78 pitumpu't walo setenta y otso ikapitumpu't walo, pampitumpu't walo ika-78, pang-78
79 pitumpu't siyam setenta y nuwebe ikapitumpu't siyam, pampitumpu't siyam ika-79, pang-79
80 walumpu otsenta ikawalumpu, pangwalumpu ika-80, pang-80 makawalumpu walumpung ibayo tigwalumpu, walumpuan, walu-walumpu wawalumpu kawalumpu, sangkawalumpu, ikawalumpu, saikawalumpu
81 walumpu't isa otsenta y uno ikawalumpu't isa, pangwalumpu't isa ika-81, pang-81
82 walumpu't dalawa otsenta y dos ikawalumpu't dalawa, pangwalumpu't dalawa ika-82, pang-82
83 walumpu't tatlo otsenta y tres ikawalumpu't tatlo, pangwalumpu't tatlo ika-83, pang-83
84 walumpu't apat otsenta y kuwatro ikawalumpu't apat, pangwalumpu't apat ika-84, pang-84
85 walumpu't lima otsenta y singko ikawalumpu't lima, pangwalumpu't lima ika-85, pang-85
86 walumpu't anim otsenta y seis ikawalumpu't anim, pangwalumpu't anim ika-86, pang-86
87 walumpu't pito otsenta y siyete ikawalumpu't pito, pangwalumpu't pito ika-87, pang-87
88 walumpu't walo otsenta y otso ikawalumpu't walo, pangwalumpu't walo ika-88, pang-88
89 walumpu't siyam otsenta y nuwebe ikawalumpu't siyam, pangwalumpu't siyam ika-89, pang-89
90 siyamnapu nobenta ikasiyamnapu, pansiyamnapu ika-90, pang-90 makasiyamnapu siyamnapung ibayo tigsiyamnapu, siyamnapuan, siya-siyamnapu sisiyamnapu kasiyamnapu, sangkasiyamnapu, ikasiyamnapu, saikasiyamnapu
91 siyamnapu't isa nobenta y uno ikasiyamnapu't isa, pansiyamnapu't isa ika-91, pang-91
92 siyamnapu't dalawa nobenta y dos ikasiyamnapu't dalawa, pansiyamnapu't dalawa ika-92, pang-92
93 siyamnapu't tatlo nobenta y tres ikasiyamnapu't tatlo, pansiyamnapu't tatlo ika-93, pang-93
94 siyamnapu't apat nobenta y kuwatro ikasiyamnapu't apat, pansiyamnapu't apat ika-94, pang-94
95 siyamnapu't lima nobenta y singko ikasiyamnapu't lima, pansiyamnapu't lima ika-95, pang-95
96 siyamnapu't anim nobenta y seis ikasiyamnapu't anim, pansiyamnapu't anim ika-96, pang-96
97 siyamnapu't pito nobenta y siyete ikasiyamnapu't pito, pansiyamnapu't pito ika-97, pang-97
98 siyamnapu't walo nobenta y otso ikasiyamnapu't walo, pansiyamnapu't walo ika-98, pang-98
99 siyamnapu't siyam nobenta y nuwebe ikasiyamnapu't siyam, pansiyamnapu't siyam ika-99, pang-99 makasiyamnapu't siyam siyamnapu't siyam na ibayo tigsiyamnapu't siyam, siyamnapu't siyaman, siya-siyamnapu't siyam sisiyamnapu't siyam kasiyamnapu't siyam, sangkasiyamnapu't siyam, ikasiyamnapu't siyam, saikasiyamnapu't siyam
100 sandaan siyento ikasandaan, pansandaan ika-100, pang-100 makasandaan sandaang ibayo manaan, mandaan, tigsandaan, sanda-sandaan, sandaanan daan sasandaan ikaraan, ikasandaan, saikaraan, saikasandaan 100 (bilang)
200 dalawandaan dosyentos ikadalawandaan, pandalawandaan ika-200, pang-200
300 tatlundaan tresyentos ikatatlundaan, pantatlundaan ika-300, pang-300
400 apatnaraan kuwatrosiyentos ikaapatnaraan, pang-apatnaraan ika-400, pang-400
500 limandaan kinyentos ikalimandaan, panlimandaan ika-500, pang-500 makalimandaan limandaang ibayo tiglimandaan, limandaanan, lima-limandaan lilimandaan kalimandaan, sangkalimandaan, ikalimandaan, saikalimandaan
600 animnaraan seissiyentos ikaanimnaraan, pang-animnaraan ika-600, pang-600
700 pitundaan setesiyentos ikapitundaan, pampitundaan ika-700, pang-700
800 walongdaan otsosiyentos ikawalongdaan, pangwalongdaan ika-800, pang-800
900 siyamnaraan nobesiyentos ikasiyamnaraan, pansiyamnaraan ika-900, pang-900
1,000 sanlibo mil ikalibo, panlibo, ikasanlibo, pansanlibo ika-1000, pang-1000 makalibo, makalilibo, makasanlibo sanlibong ibayo libo-libo, panlibo, tigsanlibo, sanlibuhan, sanli-sanlibo libo sasanlibo kasanlibo, sangkasanlibo, ikasanlibo, saikasanlibo 1000 (bilang)
1,100 sanlibo't sandaan mil siyento ikasanlibo't sandaan, pansanlibo't sandaan ika-1100, pang-1100
2,000 dalawang libo dos mil ikadalawang libo, pandalawang libo ika-2000, pang-2000
3,000 tatlong libo tres mil ikatatlong libo, pantatlong libo ika-3000, pang-3000
4,000 apat na libo kuwatro mil ikaapat na libo, pang-apat na libo ika-4000, pang-4000
5,000 limang libo singko mil ikalimang libo, panlimang libo ika-5000, pang-5000
6,000 anim na libo seis mil ikaanim na libo, pang-anim na libo ika-6000, pang-6000
7,000 pitong libo siyete mil ikapitong libo, pampitong libo ika-7000, pang-7000
8,000 walong libo otso mil ikawalong libo, pangwalong libo ika-8000, pang-8000
9,000 siyam na libo nuwebe mil ikasiyam na libo, pansiyam na libo ika-9000, pang-9000
9,999 siyam na libo't siyamnaraan at siyamnapu't siyam nuwebe mil nobesiyentos nobenta y nuwebe ikasiyam na libo't siyamnaraan at siyamnapu't siyam,
pansiyam na libo't siyamnaraan at siyamnapu't siyam
ika-9999, pang-9999
10,000 sampung libo, sanlaksa diyes mil ikasampung libo, pansampung libo, ikalaksa, ikasanlaksa, pansanlaksa ika-10000, pang-10000 laksa 10000 (bilang)
100,000 sandaang libo, sangyuta siyento mil ikasandaang libo, pansandaang libo, ikayuta, pangyuta, ikasangyuta ika-100000, pang-100000 daang libo, yuta 100000 (bilang)
1,000,000 (106) sang-angaw, sang-angaw-angaw, sampung yuta, sanlibong-libo milyon ikasang-angaw, pansang-angaw, ikaangaw,
pang-angaw
, ikasang-angaw-angaw, ikasampung yuta
ika-1000000, pang-1000000 angaw 1000000 (bilang)
10,000,000 (107) sampung angaw, sangkati diyes milyones ikasampung angaw, pansampung angaw,
ikakati
, pangkati, ikasangkati
ika-10000000, pang-10000000 kati
100,000,000 (108) sandaang angaw, sambahala siyento milyones ikasandaang angaw, pansandaang angaw, ikabahala, pangbahala, ikasambahala ika-100000000, pang-100000000 bahala
1,000,000,000 (109) sanlibong-angaw, sanggatos bilyon ikasanlibong-angaw, pansanlibong-angaw, ikagatos, panggatos, ikasanggatos ika-1000000000, pang-1000000000 gatos 1000000000 (bilang)
1012 sang-angaw-na-angaw trilyon ikasang-angaw-na-angaw, pansang-angaw-na-angaw ika-1000000000000, pang-1000000000000 1000000000000 (bilang)

local export = {numbers = {}}

export.additional_number_types = {
	{key = "spanish_cardinal", after = "cardinal"},
	{key = "spanish_ordinal", after = "ordinal"},
	{key = "restrictive", after = "collective"}
}

local lang_tl = "tl"
local lang_es = "es"

local numbers = export.numbers

--- Table operations for simpler use

local function table_merge(t1,t2)
	local merged = {}
    for key, value in pairs(t1) do
        merged[key] = value
    end
    for key, value in pairs(t2) do
    	merged[key] = value
    end
    return merged
end

local function table_append(t1,t2)
	local appended = {}
    for key, value in pairs(t1) do
        table.insert(appended, value)
    end
    for key, value in pairs(t2) do
    	table.insert(appended, value)
    end
    return appended
end

-- canonicalize multiple spaces and remove leading and trailing spaces
local function canon_spaces(text)
	text = text:gsub("%s+", " ")
	text = text:gsub("^ ", "")
	text = text:gsub(" $", "")
	return text
end

-- List down preset names

local number_names = {
	ones = {
		[lang_tl] = {"isa", "dalawa", "tatlo", "apat", "lima", "anim", "pito", "walo", "siyam"},
		[lang_es] = {"uno", "dos", "tres", "kuwatro", "singko", "seis", "siyete", "otso", "nuwebe"}
	},
	tens = {
		[lang_es] = {"diyes", "beynte", "treynta", "kuwarenta", "singkuwenta", "sesenta", "setenta", "otsenta", "nobenta"}
	},
	nteens = {
		[lang_es] = {"onse", "dose", "trese", "katorse", "kinse"}
	},
	hundreds = {
		[lang_tl] = {"sandaan", "dalawandaan", "tatlundaan", "apatnaraan", "limandaan", "animnaraan", "pitundaan", "walongdaan", "siyamnaraan"},
		[lang_es] = {"siyento", "dosyentos", "tresyentos", "kuwatrosiyentos", "kinyentos", "seissiyentos", "setesiyentos", "otsosiyentos", "nobesiyentos"} 
	},
	power_10 = {
		[lang_tl] = {"", "pu", "daan", "libo", "laksa", "yuta", "angaw", "kati", "bahala", "libong-angaw", "", "", "angaw-na-angaw"},
		[lang_es] = {"mil", "milyon", "bilyon", "trilyon"}
	},
	ordinals = {
		[lang_es] = {
			{"primero", "primera"},  
			{"segundo", "segunda"}, 
			{"tersero", "tersera"},
			"kuwarta",
			{"kinto", "kinta"},
			nil,
			nil,
			{"oktabo", "oktaba"},
			nil
		}
	}
}

local number_data_preset = {
	[1] = {
		ordinal = {"una", "pang-una", "ikaisa" },
		adverbial = "minsan",
		fractional = "buo"
	},
	[2] = {
		ordinal = {"ikalawa", "pangalawa"},
		adverbial = {{"makalawa"}, "?"},
		fractional = {"kalahati"},
		multiplier = {"doble", "?"}
	},
	[3] = {
		ordinal = {"ikatlo", "ikatatlo", "pangatlo"},
		adverbial = {{"makatlo", "makaitlo"}, "?"},
		fractional = {"katlo", "sangkatlo", "saikatlo"},
		multiplier = {{"triple"}, "?"}
	},
	[4] = {
		adverbial =  {"?", {"makaipat"}},
		fractional = {"kapat", "sangkapat", "saikapat"}
	},
	[6] = {
		fractional = {{"kanim", "sangkanim", "saikanim"}, "?"}
	},
	[10] = {
		ordinal = {{"ikapu"}, "?"},
		fractional = {{"kapu", "ikapu", "saikapu"}, "?"},
		collective = {"pu", "desena"}
	},
	[12] = {
		collective = "dosena"
	},
	[100] = {
		distributive = {"manaan", "mandaan", "tigsandaan", "sanda-sandaan", "sandaanan"},
		fractional = {"ikaraan", "ikasandaan", "saikaraan", "saikasandaan"},
		collective = "daan"
	},
	[10^3] = {
		adverbial = {{"makalibo", "makalilibo"}, "?"},
		ordinal = {{"ikalibo", "panlibo"}, "?"},
		distributive = {{"libo-libo", "panlibo"}, "?"},
		collective = "libo"
	},
	[10^4] = {
		cardinal = {'?', {"sanlaksa"}},
		ordinal = {'?', {"ikalaksa", "ikasanlaksa", "pansanlaksa"}},
		collective = "laksa"
	},
	[10^5] = {
		cardinal = {'?', {"sangyuta"}},
		ordinal = {'?', {"ikayuta", "pangyuta", "ikasangyuta"}},
		collective = {'daang libo', "yuta"}
	},
	[10^6] = {
		cardinal = {'?', {"sang-angaw-angaw", "sampung yuta", "sanlibong-libo"}},
		ordinal = {'?', {"ikaangaw", "<br>pang-angaw", "ikasang-angaw-angaw", "ikasampung yuta"}},
		collective = "angaw"
	},
	[10^7] = {
		cardinal = {'?', {"sangkati"}},
		ordinal = {'?', {"<br>ikakati", "pangkati", "ikasangkati"}},
		collective = "kati"
	},
	[10^8] = {
		cardinal = {'?', {"sambahala"}},
		ordinal = {'?', {"ikabahala", "pangbahala", "ikasambahala"}},
		collective = "bahala"
	},
	[10^9] = {
		cardinal = {'?', {"sanggatos"}},
		ordinal = {'?', {"ikagatos", "panggatos", "ikasanggatos"}},
		collective = "gatos"
	}
}

local affixes = {
	["ordinal"] = {"ika", "pang-"},
	["adverbial"] = {"maka"},
	["grouping"] = {"-an"},
	["distributive"] = {"tig-"},
	["tens"] = {"labing-"},
	["es_tens"] = {"disi"},
	["fractional"] = {"ka", "sangka", "ika", "saika"}
}

local function append_affix(affixes, root, nasal, br)
	affixed_list = {}
	new_root = tostring(root)
	nasal = nasal or "none"

	if type(root) == "number" then
		new_root = '-' .. new_root	
	end
	
	if type(affixes) ~= "table" then
		affixes = { affixes }
	end
	
	for idx, affix in pairs(affixes) do
		if affix:match("^-") then
			-- If affix is a suffix, do the following:
			new_root = new_root:gsub("o$", "u")
			if new_root:match("[aeiou]$") and not new_root:match("pu$") then
				new_root = new_root .. "h"
			end
			table.insert(affixed_list, new_root .. affix:sub(2))
		else
			if affix:match("-$") and not new_root:match("^[aeiou]") then
				-- If affix is a prefix and root is starting with a consonant
				affix = affix:sub(1, -2)
				if nasal ~= "none" then
					affix = affix:gsub("ng$", (new_root:match("^[bp]") and "m") or (new_root:match("^[dlst]") and "n") or "ng")
					if nasal == "total" then
						new_root = new_root:sub(2)
					end
				end
			end
			table.insert(affixed_list, (br and #affixed_list > 0 and "<br>" or '') .. affix .. new_root)
		end
	end
	
	if #affixed_list == 1 then
		affixed_list = affixed_list[1]
	end
	
	return affixed_list
end

local function syllable_rdp(word, rdp_type)
	local words =  mw.text.split(word, " ") -- Multiple word, just apply repetition on the first word
	syll_temp = words[1]
	syll_result = ""
	
	if type(rdp_type) == "number" then
		--Find reduplication
		syll_temp = syll_temp:gsub("([aeiou])", "%1.")
		syll_temp = mw.text.split(syll_temp, "%.")
		
		if not syll_temp[#syll_temp]:match("[aeiou]") then
			syll_temp[#syll_temp-1] = syll_temp[#syll_temp-1] .. syll_temp[#syll_temp]
			table.remove(syll_temp, #syll_temp)
		end
		
		if rdp_type == #syll_temp then
			syll_result = words[1] .. "-"
		elseif rdp_type == 1 then
			syll_result = syll_temp[1]:sub(1,1) .. 	(syll_temp[1]:len() > 1 and  syll_temp[1]:sub(-1,-1) or '') -- Fix clusters
		else
			for i = 1, rdp_type do
				syll_result = syll_result .. syll_temp[i] or ""	
			end
			syll_result = syll_result .. "-"
		end
	elseif rdp_type == "full" then
		syll_result = words[1] .. "-"
	end
	
	words[1] = syll_result .. words[1]
	return table.concat(words, " ")
end

local function enclitic(word, append, space)
	result = ""
	encl = "ng"
	space = space or " "
	if not word:match("[aeioun]$") then
		result = word .. space .. "na" .. space .. append
	else
		if word:match("n$") then
			encl = "g"
		end
		
		word = word .. encl
		if space == "" then
			local root_replace = (append:match("^[bp]") and "m") or (append:match("^[dlst]") and "n") or "ng"
			word = word:gsub("ong$", "u" .. root_replace)
			word = word:gsub("ng$", root_replace)
		end
		
		result = word .. space .. append
	end
	return result
end

local function make_number(number)
	local num_table = {} 
	if number == 0 then
		num_table =  {
			cardinal = "wala",
			spanish_cardinal = "sero"
		}
	else
		local comma_separated = tostring(number)
		comma_separated = comma_separated:gsub("(%d)(%d%d%d)$", "%1,%2")
		while comma_separated:match("(%d)(%d%d%d)(,)") do
			comma_separated = comma_separated:gsub("(%d)(%d%d%d)(,)", "%1,%2%3")
		end	
		
		local place_values = mw.text.split(comma_separated, ",")
		
		local hundred = 0
		local tens = 0
		local ones = 0
		
		local tl_name = {}
		local es_name = {}
		
		for idx1, temp_places in pairs(place_values) do
			places = tonumber(temp_places)
			
			local thousands_name = {}
			local thousands_name_es = {}
			
			hundreds = places - (places % 100)
			tens_ones = (places % 100)
			tens = (places % 100) - (places % 10)
			ones = (places % 10)
			
			if places ~= 0 then
				values_names = {
					['hundreds'] = {},
					['tens'] = {},
					['ones'] = {}
				}
				
				if hundreds > 0 then
					values_names['hundreds'] = {
						cardinal =  number_names.hundreds[lang_tl][hundreds/100],
						spanish_cardinal =  number_names.hundreds[lang_es][hundreds/100]
					}
				end
				
				if tens_ones > 10 and tens_ones < 20 then
					values_names['ones'] = {
						cardinal = append_affix(affixes["tens"], number_names.ones[lang_tl][ones], "partial"),
						spanish_cardinal = number_names.nteens[lang_es][ones] or affixes["es_tens"][1] .. number_names.ones[lang_es][ones]
					}
				else
					if tens > 0 then
						if tens == 10 then
							num_param = append_affix("sang-", number_names.power_10[lang_tl][2], "partial")
						else
							num_param = enclitic(number_names.ones[lang_tl][tens/10], number_names.power_10[lang_tl][2], "")
						end
						
						values_names['tens'] = {
							cardinal = num_param,
							spanish_cardinal = number_names.tens[lang_es][tens/10],
						}
					end
					if ones > 0 then
						values_names['ones'] = 	{
							cardinal = number_names.ones[lang_tl][ones],
							spanish_cardinal = number_names.ones[lang_es][ones],
							spanish_ordinal = number_names.ordinals[lang_es][ones],
						}
					end
				end
				
				-- Build final name
				for idx2, key in pairs({'hundreds', 'tens', 'ones'}) do
					if values_names[key].cardinal ~= nil then
						table.insert(thousands_name, values_names[key].cardinal)
					end
					if values_names[key].spanish_cardinal ~= nil then
						table.insert(thousands_name_es, values_names[key].spanish_cardinal)
						if key == "tens" and tens >= 30 and ones > 0 then
							table.insert(thousands_name_es, "y")
						end
					end
				end
				
				table.insert(tl_name, table.concat(thousands_name, " at "))
				table.insert(es_name, table.concat(thousands_name_es, " "))
				
				if (idx1 < #place_values) and (#place_values > 1) then
					local place_distance = #place_values-idx1

					if tl_name[#tl_name] == "isa" then
						tl_name[#tl_name] =  append_affix("sang-", number_names.power_10[lang_tl][(3*place_distance)+1], "partial")
					else
						tl_name[#tl_name] = enclitic(tl_name[#tl_name], number_names.power_10[lang_tl][(3*place_distance)+1])
					end
					
					if es_name[#es_name] == "uno" then
						es_name[#es_name] = number_names.power_10[lang_es][place_distance]
					else
						table.insert(es_name, number_names.power_10[lang_es][place_distance])
						if place_distance > 1 then
							es_name[#es_name] = es_name[#es_name] .. "es"
						end
					end
				end
			end
			
			num_table = {
				cardinal = canon_spaces(table.concat(tl_name, " at ")),
				spanish_cardinal = canon_spaces(table.concat(es_name, " ")),
				spanish_ordinal = number < 10 and number_names.ordinals[lang_es][ones] or nil
			}
		end
	end
	num_table.cardinal =  num_table.cardinal:gsub("([aeiou]) (at)", "%1't")
	return num_table
end

-- Start list process

local number = 0

while (true) do
	local data = make_number(number)
	if number ~= 0 then
		local cardinal_num = data.cardinal
		data = table_merge(data, {
			ordinal = append_affix(affixes["ordinal"], cardinal_num, "partial", number == 9999),
			ordinal_abbr = append_affix(affixes["ordinal"], number, "partial"),
		})
		
		local limitation = require("Module:table").contains({
			number <= 21, 
			number % 10 == 0 and number <= 100,
			number == 99,
			number % 500 == 0 and number <= 1000
		}, true)
		if limitation then
			-- Limit the following data only to certain numbers for a cleaner table
			data = table_merge(data, {
				adverbial = append_affix(affixes["adverbial"], cardinal_num),
				multiplier =  ("[[" .. cardinal_num .. "|" .. canon_spaces(enclitic(cardinal_num, "")) .. "]] [[ibayo]]"),
				distributive = {
					append_affix(affixes["distributive"], cardinal_num),
					append_affix(affixes["grouping"], cardinal_num),
					syllable_rdp(cardinal_num, 2), 
				},
				restrictive = syllable_rdp(cardinal_num, 1),
				fractional = append_affix(affixes["fractional"], cardinal_num)
			})
			data.multiplier = data.multiplier:gsub(" na]]", "]] [[na]]")
		end
		
		if (number <= 20) or 
			(tostring(number):gsub("0", ""):len() == 1 and
			(number <= 10^6 and (number % 1000 and tostring(number):gsub("0", "") == "1") or math.log10(number) % 3 == 0)
		) then
			data.wplink = number .. " (bilang)"
		end
	
		local preset = number_data_preset[number]
		if preset then
			for num_type, num_vals in pairs(preset) do
				if type(preset[num_type]) == "table" then
					local new_preset_list = {}
					for index, value in pairs(preset[num_type]) do
						local insert_value = value
						if insert_value == "?" and data[num_type] then
							if type(data[num_type]) == "string" then
								data[num_type] = {data[num_type]}	
							end
							insert_value = data[num_type]
						end
						if type(insert_value) == "string" then
							insert_value = {insert_value}	
						end
						if number == 10 and num_type == "fractional" then
							insert_value[1] = "<br>" .. insert_value[1]
						end
						new_preset_list = table_append(new_preset_list, insert_value)
					end
					preset[num_type] = new_preset_list
				end
			end
			data = table_merge(data, preset)
		end
	end
	
	-- Set data to export
	numbers[number] = data
	
	if number < 100 or number == 9999 then
		number = number + 1
	elseif number <= 1100 then
		if number == 1100 then
			number = 2000
		else
			number = number + 100
		end
	elseif number < 10^4 then
		number = number + 1000
		if number == 10^4 then
			number = 9999
		end
	elseif number < 10^9 then
		number = number * 10
	elseif number < 10^12 then
		number = number * 10^3
	else
		break
	end
end

return export