Wiktionary omwiktionary https://om.wiktionary.org/wiki/Fuula_Dura MediaWiki 1.47.0-wmf.12 case-sensitive Media Special Talk User User talk Wiktionary Wiktionary talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk TimedText TimedText talk Module Module talk Event Event talk tokko 0 3142 82009 40727 2026-07-21T08:25:54Z EyobAbebeBot 3562 /* */ 82009 wikitext text/x-wiki {{#invoke:Numbers|main|3}} {{k}} [[lama]], [[0]] {{-om-}} {{Xinj}} Jecha durjireessa Afaan Oromooti. {{Sag|Birsaga_to.wav|to}} + {{Sag|Birsaga kko.wav|kko}} {{t|Om-aangawuu.ogg|Afán Oromó}} {{maq|tokko|tokko}} # [[takka]], lakkoofsa jalqaba Afaan Oromooti. {{mog}} # [[tokkoffaa]] # [[tokkicha]] # [[takkaffaa]] {{(|lakoofa kaardinaalii 1}} * {{ab}}: {{t+|ab|акы}} * {{af}}: {{t+|af|een}} * {{ain}}: {{t+|ain|シネ}} * {{ak}}: {{t+|ak|ishten}} * {{sq}}: {{t+|sq|një}} * {{de}}: {{t+|de|eins}} * {{als}}: {{t+|als|eins}} * {{am}}: {{t+|am|አንድ}} * {{ASL}}: {{t+|ASL|Image:LSQ 1.jpg|25 px}} * {{ang}}: {{t+|ang|an}} * {{ar}}: {{t+|ar|واحد}} * {{hy}}: {{t+|hy|մեկ}}, {{t+|hy|մի}} * {{as}}: {{t+|as|এক}} * {{ast}}: {{t+|ast|ún}} * {{av}}: {{t+|av|aeva}} * {{ay}}: {{t+|ay|maya}} * {{az}}: {{t+|az|بیر}} * {{bn}}: {{t+|bn|এক}} * {{be}}: {{t+|be|адзін}} * {{bs}}: {{t+|bs|jedan}} * {{br}}: {{t+|br|unan}} * {{bg}}: {{t+|bg|едно}} * {{ceb}}: {{t+|ceb|usa}} * {{chy}}: {{t+|chy|náʼėstse}} * {{da}}: {{t+|da|én}}, {{t+|da|et}} * {{ro}}: {{t+|ro|unu}} * {{ru}}: {{t+|ru|один}}, {{t+|ru|раз}} * {{gd}}: {{t+|gd|aon}}, {{t+|gd|aonar}} * {{sk}}: {{t+|sk|jeden}} * {{sl}}: {{t+|sl|ena}} * {{eo}}: {{t+|eo|unu}} * {{et}}: {{t+|et|üks}} * {{fo}}: {{t+|fo|eitt}} * {{fi}}: {{t+|fi|yksi}} * {{fj}}: {{t+|fj|dua}} * {{fr}}: {{t+|fr|un}} * {{fy}}: {{t+|fy|ien}} * {{ga}}: {{t+|ga|aon}}, {{t+|ga|amháin}} * {{cy}}: {{t+|cy|un}} * {{gl}}: {{t+|gl|un}} * {{es}}: {{t+|es|uno}} * {{ka}}: {{t+|ka|ერთი}} * {{el}}: {{t+|el|ένας}} * {{el-a}}: {{t+|el-a|εἷς}} * {{gn}}: {{t+|gn|peteï}} * {{gu}}: {{t+|gu|એકડો}} * {{ha}}: {{t+|ha|gùdáá}} * {{haw}}: {{t+|haw|'ekahi}} * {{he}}: {{t+|he|חד}}, {{t+|he|חדא}} * {{hi}}: {{t+|hi|एक}} * {{hu}}: {{t+|hu|egy}} * {{io}}: {{t+|io|un}} * {{id}}: {{t+|id|satu}} * {{ig}}: {{t+|ig|otu}} * {{en}}: {{t+|en|one}} * {{ia}}: {{t+|ia|un}} * {{is}}: {{t+|is|einn}} * {{it}}: {{t+|it|uno}} * {{ja}}: {{t+|ja|一}} * {{jv}}: {{t+|jv|siji}} * {{kn}}: {{t+|kn|ಒಂದು}} * {{ca}}: {{t+|ca|un}} {{-}} * {{csb}}: {{t+|csb|jeden}} * {{kk}}: {{t+|kk|бір}} * {{qu}}: {{t+|qu|shuc}} * {{ko}}: {{t+|ko|하나}}, {{t+|ko|한}} * {{kk}}: {{t+|kk|бір}} * {{co}}: {{t+|co|unu}} * {{ku}}: {{t+|ku|yek}} * {{ky}}: {{t+|ky|бир}} * {{la}}: {{t+|la|unus}} * {{lo}}: {{t+|lo|ໜຶ່ງ}} * {{lv}}: {{t+|lv|viens}} * {{li}}: {{t+|li|ein}} * {{lt}}: {{t+|lt|vienas}}, {{t+|lt|viena}} * {{lb}}: {{t+|lb|een}} * {{mi}}: {{t+|mi|tahi}} * {{ml}}: {{t+|ml|ഒന്ന്}} * {{gv}}: {{t+|gv|'nane}} * {{mr}}: {{t+|mr|एक}} * {{mt}}: {{t+|mt|wieħed}} * {{mk}}: {{t+|mk|еден}} * {{mo}}: {{t+|mo|уну}} * {{mn}}: {{t+|mn|нэг}} * {{nah}}: {{t+|nah|ce}} * {{nv}}: {{t+|nv|łáa'ii}} * {{nl}}: {{t+|nl|één}} * {{no}}: {{t+|no|en}} * {{oc}}: {{t+|oc|un}} * {{oj}}: {{t+|oj|bezhig}} * {{or}}: {{t+|or|ଏକ}} * {{os}}: {{t+|os|иу}} * {{fa}}: {{t+|fa|یک}} * {{pi}}: {{t+|pi|eka}} * {{pl}}: {{t+|pl|jeden}} * {{pt}}: {{t+|pt|um}} * {{pa}}: {{t+|pa|ਇੱਕ}} * {{sa}}: {{t+|sa|एक}} * {{sc}}: {{t+|sc|unu}} * {{nds}}: {{t+|nds|een}} * {{sd}}: {{t+|sd|هِڪُ}} * {{scn}}: {{t+|scn|unu}} * {{so}}: {{t+|so|kow}} * {{st}}: {{t+|st|nngwe}} * {{sw}}: {{t+|sw|moja}} * {{sv}}: {{t+|sv|ett}} * {{tl}}: {{t+|tl|isa}} * {{tg}}: {{t+|tg|як}} * {{th}}: {{t+|th|หนึ่ง}} * {{te}}: {{t+|te|ఒకటి}} * {{bo}}: {{t+|bo|གཅིག}} * {{tr}}: {{t+|tr|bir}} * {{tk}}: {{t+|tk|bir}} * {{cs}}: {{t+|cs|jeden}} * {{chr}}: {{t+|chr|ᏌᏊᎢ}} * {{zh}}: {{t+|zh|壹}} * {{ug}}: {{t+|ug|بىر}} * {{uk}}: {{t+|uk|один}} * {{ur}}: {{t+|ur|ایک}} * {{uz}}: {{t+|uz|бир}} * {{wa}}: {{t+|wa|onk}} * {{vi}}: {{t+|vi|một}} * {{vo}}: {{t+|vo|bal}} * {{yi}}: {{t+|yi|איינס}} {{)}} m4x4g37mr2dtpcdhe7uj21if2x48xp0 82012 82009 2026-07-21T08:32:29Z EyobAbebeBot 3562 /* */ 82012 wikitext text/x-wiki {{k}} [[lama]], [[0]] {{-om-}} {{Xinj}} Jecha durjireessa Afaan Oromooti. {{Sag|Birsaga_to.wav|to}} + {{Sag|Birsaga kko.wav|kko}} {{t|Om-aangawuu.ogg|Afán Oromó}} {{maq|tokko|tokko}} # [[takka]], lakkoofsa jalqaba Afaan Oromooti. {{mog}} # [[tokkoffaa]] # [[tokkicha]] # [[takkaffaa]] {{(|lakoofa kaardinaalii 1}} * {{ab}}: {{t+|ab|акы}} * {{af}}: {{t+|af|een}} * {{ain}}: {{t+|ain|シネ}} * {{ak}}: {{t+|ak|ishten}} * {{sq}}: {{t+|sq|një}} * {{de}}: {{t+|de|eins}} * {{als}}: {{t+|als|eins}} * {{am}}: {{t+|am|አንድ}} * {{ASL}}: {{t+|ASL|Image:LSQ 1.jpg|25 px}} * {{ang}}: {{t+|ang|an}} * {{ar}}: {{t+|ar|واحد}} * {{hy}}: {{t+|hy|մեկ}}, {{t+|hy|մի}} * {{as}}: {{t+|as|এক}} * {{ast}}: {{t+|ast|ún}} * {{av}}: {{t+|av|aeva}} * {{ay}}: {{t+|ay|maya}} * {{az}}: {{t+|az|بیر}} * {{bn}}: {{t+|bn|এক}} * {{be}}: {{t+|be|адзін}} * {{bs}}: {{t+|bs|jedan}} * {{br}}: {{t+|br|unan}} * {{bg}}: {{t+|bg|едно}} * {{ceb}}: {{t+|ceb|usa}} * {{chy}}: {{t+|chy|náʼėstse}} * {{da}}: {{t+|da|én}}, {{t+|da|et}} * {{ro}}: {{t+|ro|unu}} * {{ru}}: {{t+|ru|один}}, {{t+|ru|раз}} * {{gd}}: {{t+|gd|aon}}, {{t+|gd|aonar}} * {{sk}}: {{t+|sk|jeden}} * {{sl}}: {{t+|sl|ena}} * {{eo}}: {{t+|eo|unu}} * {{et}}: {{t+|et|üks}} * {{fo}}: {{t+|fo|eitt}} * {{fi}}: {{t+|fi|yksi}} * {{fj}}: {{t+|fj|dua}} * {{fr}}: {{t+|fr|un}} * {{fy}}: {{t+|fy|ien}} * {{ga}}: {{t+|ga|aon}}, {{t+|ga|amháin}} * {{cy}}: {{t+|cy|un}} * {{gl}}: {{t+|gl|un}} * {{es}}: {{t+|es|uno}} * {{ka}}: {{t+|ka|ერთი}} * {{el}}: {{t+|el|ένας}} * {{el-a}}: {{t+|el-a|εἷς}} * {{gn}}: {{t+|gn|peteï}} * {{gu}}: {{t+|gu|એકડો}} * {{ha}}: {{t+|ha|gùdáá}} * {{haw}}: {{t+|haw|'ekahi}} * {{he}}: {{t+|he|חד}}, {{t+|he|חדא}} * {{hi}}: {{t+|hi|एक}} * {{hu}}: {{t+|hu|egy}} * {{io}}: {{t+|io|un}} * {{id}}: {{t+|id|satu}} * {{ig}}: {{t+|ig|otu}} * {{en}}: {{t+|en|one}} * {{ia}}: {{t+|ia|un}} * {{is}}: {{t+|is|einn}} * {{it}}: {{t+|it|uno}} * {{ja}}: {{t+|ja|一}} * {{jv}}: {{t+|jv|siji}} * {{kn}}: {{t+|kn|ಒಂದು}} * {{ca}}: {{t+|ca|un}} {{-}} * {{csb}}: {{t+|csb|jeden}} * {{kk}}: {{t+|kk|бір}} * {{qu}}: {{t+|qu|shuc}} * {{ko}}: {{t+|ko|하나}}, {{t+|ko|한}} * {{kk}}: {{t+|kk|бір}} * {{co}}: {{t+|co|unu}} * {{ku}}: {{t+|ku|yek}} * {{ky}}: {{t+|ky|бир}} * {{la}}: {{t+|la|unus}} * {{lo}}: {{t+|lo|ໜຶ່ງ}} * {{lv}}: {{t+|lv|viens}} * {{li}}: {{t+|li|ein}} * {{lt}}: {{t+|lt|vienas}}, {{t+|lt|viena}} * {{lb}}: {{t+|lb|een}} * {{mi}}: {{t+|mi|tahi}} * {{ml}}: {{t+|ml|ഒന്ന്}} * {{gv}}: {{t+|gv|'nane}} * {{mr}}: {{t+|mr|एक}} * {{mt}}: {{t+|mt|wieħed}} * {{mk}}: {{t+|mk|еден}} * {{mo}}: {{t+|mo|уну}} * {{mn}}: {{t+|mn|нэг}} * {{nah}}: {{t+|nah|ce}} * {{nv}}: {{t+|nv|łáa'ii}} * {{nl}}: {{t+|nl|één}} * {{no}}: {{t+|no|en}} * {{oc}}: {{t+|oc|un}} * {{oj}}: {{t+|oj|bezhig}} * {{or}}: {{t+|or|ଏକ}} * {{os}}: {{t+|os|иу}} * {{fa}}: {{t+|fa|یک}} * {{pi}}: {{t+|pi|eka}} * {{pl}}: {{t+|pl|jeden}} * {{pt}}: {{t+|pt|um}} * {{pa}}: {{t+|pa|ਇੱਕ}} * {{sa}}: {{t+|sa|एक}} * {{sc}}: {{t+|sc|unu}} * {{nds}}: {{t+|nds|een}} * {{sd}}: {{t+|sd|هِڪُ}} * {{scn}}: {{t+|scn|unu}} * {{so}}: {{t+|so|kow}} * {{st}}: {{t+|st|nngwe}} * {{sw}}: {{t+|sw|moja}} * {{sv}}: {{t+|sv|ett}} * {{tl}}: {{t+|tl|isa}} * {{tg}}: {{t+|tg|як}} * {{th}}: {{t+|th|หนึ่ง}} * {{te}}: {{t+|te|ఒకటి}} * {{bo}}: {{t+|bo|གཅིག}} * {{tr}}: {{t+|tr|bir}} * {{tk}}: {{t+|tk|bir}} * {{cs}}: {{t+|cs|jeden}} * {{chr}}: {{t+|chr|ᏌᏊᎢ}} * {{zh}}: {{t+|zh|壹}} * {{ug}}: {{t+|ug|بىر}} * {{uk}}: {{t+|uk|один}} * {{ur}}: {{t+|ur|ایک}} * {{uz}}: {{t+|uz|бир}} * {{wa}}: {{t+|wa|onk}} * {{vi}}: {{t+|vi|một}} * {{vo}}: {{t+|vo|bal}} * {{yi}}: {{t+|yi|איינס}} {{)}} kz1m78bivla05pnk1lky09bphix744b Module:Numbers 828 62067 82007 81969 2026-07-21T08:05:51Z EyobAbebeBot 3562 82007 Scribunto text/plain local p = {} -- Array'wwan sagalee Afaan Oromoo local ones = {"zeeroo", "tokko", "lama", "sadii", "afur", "shan", "jaha", "torba", "saddeet", "sagal"} local oneSuffix = {"zeeroo", "tokkoo", "lamaa", "sadii", "afurii", "shanii", "jahaa", "torbaa", "saddeetii", "sagalii"} local tensBase = {"kudhan", "digdama", "soddoma", "afurtama", "shantama", "jahaatama", "torbaatama", "saddeettama", "sagaltama"} local tensBaseSuffix = {"kudhanii", "digdamaa", "soddomaa", "afurtamaa", "shantamaa", "jahaatamaa", "torbaatamaa", "saddeettamaa", "sagaltamaa"} local tensWithSuffix = {"kudha", "digdamii", "soddomii", "afurtamii", "shantamii", "jahaatamii", "torbaatamii", "saddeettamii", "sagaltamii"} -- Sadarkaalatatti gargar qooduuf local scales = { {val = 10^12, word = "tiriliyoona"}, {val = 10^9, word = "biiliyoona"}, {val = 10^6, word = "miiliyoona"}, {val = 10^3, word = "kuma"}, {val = 10^2, word = "dhibba"} } -- 1 - 99 local function under100(n, isSuffix) if n == 0 then return "" end if n < 10 then return isSuffix and oneSuffix[n + 1] or ones[n + 1] end local t = math.floor(n / 10) local o = n % 10 if o == 0 then return isSuffix and tensBaseSuffix[t] or tensBase[t] else local oName = isSuffix and oneSuffix[o + 1] or ones[o + 1] return tensWithSuffix[t] .. " " .. oName end end -- Lakkoofsa guutuu afaan Oromootti jijjiiruu (Recursive algorithm) local function toOromo(n, isSuffix) if n == 0 then return "zeeroo" end if n < 100 then return under100(n, isSuffix) end for _, scale in ipairs(scales) do if n >= scale.val then local count = math.floor(n / scale.val) local rem = n % scale.val local prefix = (scale.word == "dhibba" or scale.word == "kuma") and scale.word or scale.word local countStr = toOromo(count, rem > 0 or isSuffix) local out = prefix .. " " .. countStr if rem > 0 then out = out .. " fi " .. toOromo(rem, isSuffix) end return out end end end -- Chaekii mallattoo (-) local function toOromoWithSign(n) if n < 0 then return "negatiiva " .. toOromo(math.abs(n), false) end return toOromo(n, false) end -- Chaekii tuqaa (Decimal) local function toOromoDecimal(x) local s = tostring(x) local intStr, decStr = s:match("^(%-?%d+)%.(%d+)$") if not intStr then return toOromoWithSign(x) end local intWord = toOromoWithSign(tonumber(intStr)) local parts = {} for i = 1, #decStr do local d = tonumber(decStr:sub(i, i)) table.insert(parts, ones[d + 1]) end return intWord .. " tuqaa " .. table.concat(parts, " ") end -- MAIN FUNCTION (MediaWiki Frame) function p.main(frame) local arg = frame.args[1] or (frame:getParent() and frame:getParent().args[1]) if not arg or arg == "" then return "" end local n = tonumber(arg) if not n then return "" end if math.floor(n) == n then return toOromoWithSign(n) else return toOromoDecimal(n) end end return p 7tdvw36jkwphoxgdecr7hzbn1hkhhip 82008 82007 2026-07-21T08:20:14Z EyobAbebeBot 3562 82008 Scribunto text/plain local p = {} -- ===================================== -- DATA (Original) -- ===================================== local ones = { "zeeroo", "tokko", "lama", "sadii", "afur", "shan", "jaha", "torba", "saddeet", "sagal" } local oneSuffix = { "zeeroo", "tokkoo", "lamaa", "sadii", "afurii", "shanii", "jahaa", "torbaa", "saddeetii", "sagalii" } local tensBase = { "kudhan", "digdama", "soddoma", "afurtama", "shantama", "jahaatama", "torbaatama", "saddeettama", "sagaltama" } local tensBaseSuffix = { "kudhanii", "digdamaa", "soddomaa", "afurtamaa", "shantamaa", "jahaatamaa", "torbaatamaa", "saddeettamaa", "sagaltamaa" } local tensWithSuffix = { "kudha", "digdamii", "soddomii", "afurtamii", "shantamii", "jahaatamii", "torbaatamii", "saddeettamii", "sagaltamii" } local hundreds = {"dhibba"} local thousand = {"kuma"} local million = {"miiliyoona"} local billion = {"biiliyoona"} local trillion = {"tiriliyoona"} -- ===================================== -- 1 - 99 -- ===================================== local function under100(n) if n >= 0 and n <= 9 then return ones[n + 1] end if n >= 10 and n <= 90 and n % 10 == 0 then return tensBase[(n / 10)] end if n >= 11 and n <= 99 then local t = math.floor(n / 10) local o = n % 10 return tensWithSuffix[t] .. " " .. ones[o + 1] end return "" end -- ===================================== -- 1 - 999 -- ===================================== local function under1000(n) if n <= 99 then return under100(n) end if n >= 100 and n <= 900 and n % 100 == 0 then local h = n / 100 return hundreds[1] .. " " .. ones[h + 1] end if n >= 101 and n <= 999 then local h = math.floor(n / 100) local r = n % 100 local out = hundreds[1] .. " " .. oneSuffix[h + 1] if r > 0 then out = out .. " fi " .. under100(r) end return out end return "" end -- ===================================== -- HELPER: Block-level processor (Original Logic) -- ===================================== local function processBlock(n, unitName, nextFunc) local unit = unitName[1] -- 1,000 ... 9,000 if n >= 1000 and n <= 9000 and n % 1000 == 0 then return unit .. " " .. ones[(n / 1000) + 1] end -- 1,001 ... 9,999 if n <= 9999 then local th = math.floor(n / 1000) local rem = n % 1000 local out = unit .. " " .. oneSuffix[th + 1] if rem > 0 then out = out .. " fi " .. nextFunc(rem) end return out end -- 10,000 ... 90,000 if n >= 10000 and n <= 90000 and n % 10000 == 0 then return unit .. " " .. tensBase[(n / 1000) / 10] end -- 10,001 ... 90,999 if n >= 10001 and n <= 90999 and math.floor(n / 1000) % 10 == 0 then local tensIndex = math.floor(n / 1000) / 10 local rem = n % 1000 local out = unit .. " " .. tensBaseSuffix[tensIndex] if rem > 0 then out = out .. " fi " .. nextFunc(rem) end return out end -- 11,000 ... 99,000 if n >= 11000 and n <= 99000 and n % 1000 == 0 then local thousands = math.floor(n / 1000) return unit .. " " .. tensWithSuffix[math.floor(thousands / 10)] .. " " .. ones[(thousands % 10) + 1] end -- 11,001 ... 99,999 if n >= 11001 and n <= 99999 then local thousands = math.floor(n / 1000) local t = math.floor(thousands / 10) local o = thousands % 10 local rem = n % 1000 local out = unit .. " " .. tensWithSuffix[t] if o > 0 then out = out .. " " .. oneSuffix[o + 1] end if rem > 0 then out = out .. " fi " .. nextFunc(rem) end return out end -- 100,000 ... 900,000 if n >= 100000 and n <= 900000 and n % 100000 == 0 then return unit .. " " .. hundreds[1] .. " " .. ones[(n / 100000) + 1] end -- 100,001 ... 999,999 if n >= 100001 and n <= 999999 then local h = math.floor(n / 100000) local rem = n % 100000 local out = unit .. " " .. hundreds[1] .. " " .. oneSuffix[h + 1] if rem > 0 then out = out .. " fi " .. nextFunc(rem) end return out end return "" end -- ===================================== -- MAIN LOGIC -- ===================================== local function toOromo(n) if n == 0 then return "zeeroo" end if n <= 99 then return under100(n) end if n >= 100 and n <= 900 and n % 100 == 0 then return hundreds[1] .. " " .. ones[(n / 100) + 1] end if n <= 999 then return under1000(n) end -- Kuma (1,000 - 999,999) if n <= 999999 then return processBlock(n, thousand, under1000) end -- Miiliyoona (1,000,000 - 999,999,999) if n <= 999999999 then local m = math.floor(n / 1000000) local rem = n % 1000000 return processBlock(m * 1000, million, toOromo) .. (rem > 0 and (" fi " .. toOromo(rem)) or "") end -- Biiliyoona (1,000,000,000 - 999,999,999,999) if n <= 999999999999 then local b = math.floor(n / 1000000000) local rem = n % 1000000000 return processBlock(b * 1000, billion, toOromo) .. (rem > 0 and (" fi " .. toOromo(rem)) or "") end -- Tiriliyoona (1,000,000,000,000+) local t = math.floor(n / 1000000000000) local rem = n % 1000000000000 return processBlock(t * 1000, trillion, toOromo) .. (rem > 0 and (" fi " .. toOromo(rem)) or "") end -- ===================================== -- NEGATIVE & DECIMAL (Original) -- ===================================== local function toOromoWithSign(n) if n < 0 then return "negatiiva " .. toOromo(math.abs(n)) end return toOromo(n) end local function toOromoDecimal(x) if math.floor(x) == x then return toOromo(x) end local s = tostring(x) local intStr, decStr = s:match("^(%-?%d+)%.(%d+)$") local intWord = toOromo(math.abs(tonumber(intStr))) local parts = {} for i = 1, #decStr do local d = tonumber(decStr:sub(i, i)) table.insert(parts, ones[d + 1]) end local out = intWord .. " tuqaa " .. table.concat(parts, " ") if x < 0 then out = "negatiiva " .. out end return out end -- ===================================== -- MAIN (Wiki Module Entry) -- ===================================== function p.main(frame) local arg = frame.args[1] or (frame:getParent() and frame:getParent().args[1]) if not arg or arg == "" then return "" end local n = tonumber(arg) if not n then return "" end if math.floor(n) == n then return toOromoWithSign(n) else return toOromoDecimal(n) end end return p kumnpygh6hxj9ob42ivzwtd2f02z2vw 82010 82008 2026-07-21T08:28:48Z EyobAbebeBot 3562 82010 Scribunto text/plain local p = {} -- ===================================== -- DATA (Original) -- ===================================== local ones = { "zeeroo", "tokko", "lama", "sadii", "afur", "shan", "jaha", "torba", "saddeet", "sagal" } local oneSuffix = { "zeeroo", "tokkoo", "lamaa", "sadii", "afurii", "shanii", "jahaa", "torbaa", "saddeetii", "sagalii" } local tensBase = { "kudhan", "digdama", "soddoma", "afurtama", "shantama", "jahaatama", "torbaatama", "saddeettama", "sagaltama" } local tensBaseSuffix = { "kudhanii", "digdamaa", "soddomaa", "afurtamaa", "shantamaa", "jahaatamaa", "torbaatamaa", "saddeettamaa", "sagaltamaa" } local tensWithSuffix = { "kudha", "digdamii", "soddomii", "afurtamii", "shantamii", "jahaatamii", "torbaatamii", "saddeettamii", "sagaltamii" } local hundreds = {"dhibba"} local thousand = {"kuma"} local million = {"miiliyoona"} local billion = {"biiliyoona"} local trillion = {"tiriliyoona"} -- ===================================== -- 1 - 99 -- ===================================== local function under100(n) if n >= 0 and n <= 9 then return ones[n + 1] end if n >= 10 and n <= 90 and n % 10 == 0 then return tensBase[math.floor(n / 10)] end if n >= 11 and n <= 99 then local t = math.floor(n / 10) local o = n % 10 return tensWithSuffix[t] .. " " .. ones[o + 1] end return "" end -- ===================================== -- 1 - 999 -- ===================================== local function under1000(n) if n <= 99 then return under100(n) end if n >= 100 and n <= 900 and n % 100 == 0 then local h = math.floor(n / 100) return hundreds[1] .. " " .. ones[h + 1] end if n >= 101 and n <= 999 then local h = math.floor(n / 100) local r = n % 100 local out = hundreds[1] .. " " .. oneSuffix[h + 1] if r > 0 then out = out .. " fi " .. under100(r) end return out end return "" end -- ===================================== -- LOOJIKII LAKKOOFSA GURGUDDOO (ORIGINAL RULE) -- ===================================== local function processGroup(n, unitName) if n == 0 then return "" end if n <= 999 then return unitName .. " " .. under1000(n) end return "" end local function toOromo(n) if n == 0 then return "zeeroo" end if n <= 999 then return under1000(n) end -- TIRILIYOONA (10^12) if n >= 10^12 then local tr = math.floor(n / 10^12) local rem = n % 10^12 local out = processGroup(tr, trillion[1]) if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- BIILIYOONA (10^9) if n >= 10^9 then local b = math.floor(n / 10^9) local rem = n % 10^9 local out = processGroup(b, billion[1]) if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- MIILIYOONA (10^6) if n >= 10^6 then local m = math.floor(n / 10^6) local rem = n % 10^6 local out = processGroup(m, million[1]) if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- KUMA (10^3) if n >= 10^3 then local k = math.floor(n / 10^3) local rem = n % 10^3 local out = processGroup(k, thousand[1]) if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end return "" end -- ===================================== -- NEGATIVE & DECIMAL (Original) -- ===================================== local function toOromoWithSign(n) if n < 0 then return "negatiiva " .. toOromo(math.abs(n)) end return toOromo(n) end local function toOromoDecimal(x) if math.floor(x) == x then return toOromoWithSign(x) end local s = tostring(x) local intStr, decStr = s:match("^(%-?%d+)%.(%d+)$") if not intStr then return toOromoWithSign(x) end local intWord = toOromoWithSign(tonumber(intStr)) local parts = {} for i = 1, #decStr do local d = tonumber(decStr:sub(i, i)) table.insert(parts, ones[d + 1]) end local out = intWord .. " tuqaa " .. table.concat(parts, " ") return out end -- ===================================== -- MAIN (Wiki Module Entry) -- ===================================== function p.main(frame) local arg = frame.args[1] or (frame:getParent() and frame:getParent().args[1]) if not arg or arg == "" then return "" end local n = tonumber(arg) if not n then return "" end if math.floor(n) == n then return toOromoWithSign(n) else return toOromoDecimal(n) end end return p npat7clpklpzeu4m5ph6sfxhv9ikbol 82011 82010 2026-07-21T08:30:48Z EyobAbebeBot 3562 82011 Scribunto text/plain local p = {} -- ===================================== -- DATA -- ===================================== local ones = { "zeeroo", "tokko", "lama", "sadii", "afur", "shan", "jaha", "torba", "saddeet", "sagal" } local oneSuffix = { "zeeroo", "tokkoo", "lamaa", "sadii", "afurii", "shanii", "jahaa", "torbaa", "saddeetii", "sagalii" } local tensBase = { "kudhan", "digdama", "soddoma", "afurtama", "shantama", "jahaatama", "torbaatama", "saddeettama", "sagaltama" } local tensBaseSuffix = { "kudhanii", "digdamaa", "soddomaa", "afurtamaa", "shantamaa", "jahaatamaa", "torbaatamaa", "saddeettamaa", "sagaltamaa" } local tensWithSuffix = { "kudha", "digdamii", "soddomii", "afurtamii", "shantamii", "jahaatamii", "torbaatamii", "saddeettamii", "sagaltamii" } local hundreds = {"dhibba"} local thousand = {"kuma"} local million = {"miiliyoona"} local billion = {"biiliyoona"} local trillion = {"tiriliyoona"} -- ===================================== -- 1 - 99 -- ===================================== local function under100(n) if n >= 0 and n <= 9 then return ones[n + 1] end if n >= 10 and n <= 90 and n % 10 == 0 then return tensBase[(n / 10)] end if n >= 11 and n <= 99 then local t = math.floor(n / 10) local o = n % 10 return tensWithSuffix[t] .. " " .. ones[o + 1] end return "" end -- ===================================== -- 1 - 999 -- ===================================== local function under1000(n) if n <= 99 then return under100(n) end if n >= 100 and n <= 900 and n % 100 == 0 then local h = n / 100 return hundreds[1] .. " " .. ones[h + 1] end if n >= 101 and n <= 999 then local h = math.floor(n / 100) local r = n % 100 local out = hundreds[1] .. " " .. oneSuffix[h + 1] if r > 0 then out = out .. " fi " .. under100(r) end return out end return "" end -- ===================================== -- 1000 - 99,999 -- ===================================== local function toOromo(n) if n == 0 then return "zeeroo" end if n <= 99 then return under100(n) end if n >= 100 and n <= 900 and n % 100 == 0 then return hundreds[1] .. " " .. ones[(n / 100) + 1] end if n <= 999 then return under1000(n) end -- 1,000 ... 9,000 if n >= 1000 and n <= 9000 and n % 1000 == 0 then local th = n / 1000 return thousand[1] .. " " .. ones[th + 1] end -- 1,001 ... 9,999 if n <= 9999 then local th = math.floor(n / 1000) local rem = n % 1000 local out = thousand[1] .. " " .. oneSuffix[th + 1] if rem > 0 then out = out .. " fi " .. under1000(rem) end return out end -- 10,000 ... 90,000 if n >= 10000 and n <= 90000 and n % 10000 == 0 then local t = (n / 1000) / 10 return thousand[1] .. " " .. tensBase[t] end -- 10,001 ... 90,999 if n >= 10001 and n <= 90999 and math.floor(n / 1000) % 10 == 0 then local thousands = math.floor(n / 1000) local tensIndex = (thousands / 10) local rem = n % 1000 local out = thousand[1] .. " " .. tensBaseSuffix[tensIndex] if rem > 0 then out = out .. " fi " .. under1000(rem) end return out end -- 11,000 ... 99,000 if n >= 11000 and n <= 99000 and n % 1000 == 0 then local thousands = math.floor(n / 1000) local t = math.floor(thousands / 10) local o = thousands % 10 return thousand[1] .. " " .. tensWithSuffix[t] .. " " .. ones[o + 1] end -- 11,001 ... 99,999 if n >= 11001 and n <= 99999 then local thousands = math.floor(n / 1000) local t = math.floor(thousands / 10) local o = thousands % 10 local rem = n % 1000 local out = thousand[1] .. " " .. tensWithSuffix[t] if o > 0 then out = out .. " " .. oneSuffix[o + 1] end if rem > 0 then out = out .. " fi " .. under1000(rem) end return out end -- 100,000 ... 900,000 if n >= 100000 and n <= 900000 and n % 100000 == 0 then local h = n / 100000 return thousand[1] .. " " .. hundreds[1] .. " " .. ones[h + 1] end -- 100,001 ... 999,999 if n >= 100001 and n <= 999999 then local h = math.floor(n / 100000) local rem = n % 100000 local out = thousand[1] .. " " .. hundreds[1] .. " " .. oneSuffix[h + 1] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- ===================================== -- MIILIYOONA -- ===================================== -- 1,000,000 ... 9,000,000 if n >= 1000000 and n <= 9000000 and n % 1000000 == 0 then local m = n / 1000000 return million[1] .. " " .. ones[m + 1] end -- 1,000,001 ... 9,999,999 if n >= 1000001 and n <= 9999999 then local m = math.floor(n / 1000000) local rem = n % 1000000 local out = million[1] .. " " .. oneSuffix[m + 1] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- 10,000,000 ... 90,000,000 if n >= 10000000 and n <= 90000000 and n % 10000000 == 0 then local t = n / 10000000 return million[1] .. " " .. tensBase[t] end -- 10,000,001 ... 90,999,999 if n >= 10000001 and n <= 90999999 and math.floor(n / 1000000) % 10 == 0 then local millions = math.floor(n / 1000000) local tensIndex = millions / 10 local rem = n % 1000000 local out = million[1] .. " " .. tensBaseSuffix[tensIndex] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- 11,000,000 ... 99,000,000 if n >= 11000000 and n <= 99000000 and n % 1000000 == 0 then local millions = math.floor(n / 1000000) local t = math.floor(millions / 10) local o = millions % 10 return million[1] .. " " .. tensWithSuffix[t] .. " " .. ones[o + 1] end -- 11,000,001 ... 99,999,999 if n >= 11000001 and n <= 99999999 then local millions = math.floor(n / 1000000) local t = math.floor(millions / 10) local o = millions % 10 local rem = n % 1000000 local out = million[1] .. " " .. tensWithSuffix[t] .. " " .. oneSuffix[o + 1] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- 100,000,000 ... 900,000,000 if n >= 100000000 and n <= 900000000 and n % 100000000 == 0 then local h = n / 100000000 return million[1] .. " " .. hundreds[1] .. " " .. ones[h + 1] end -- 100,000,001 ... 999,999,999 if n >= 100000001 and n <= 999999999 then local h = math.floor(n / 100000000) local rem = n % 100000000 local out = million[1] .. " " .. hundreds[1] .. " " .. oneSuffix[h + 1] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- ===================================== -- BIILIYOONA -- ===================================== -- 1,000,000,000 ... 9,000,000,000 if n >= 1000000000 and n <= 9000000000 and n % 1000000000 == 0 then local b = n / 1000000000 return billion[1] .. " " .. ones[b + 1] end -- 1,000,000,001 ... 9,999,999,999 if n >= 1000000001 and n <= 9999999999 then local b = math.floor(n / 1000000000) local rem = n % 1000000000 local out = billion[1] .. " " .. oneSuffix[b + 1] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- 10,000,000,000 ... 90,000,000,000 if n >= 10000000000 and n <= 90000000000 and n % 10000000000 == 0 then local t = n / 10000000000 return billion[1] .. " " .. tensBase[t] end -- 10,000,000,001 ... 90,999,999,999 if n >= 10000000001 and n <= 90999999999 and math.floor(n / 1000000000) % 10 == 0 then local b = math.floor(n / 1000000000) local tensIndex = b / 10 local rem = n % 1000000000 local out = billion[1] .. " " .. tensBaseSuffix[tensIndex] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- 11,000,000,000 ... 99,999,999,999 if n >= 11000000001 and n <= 99999999999 then local b = math.floor(n / 1000000000) local t = math.floor(b / 10) local o = b % 10 local rem = n % 1000000000 local out = billion[1] .. " " .. tensWithSuffix[t] .. " " .. oneSuffix[o + 1] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- 100,000,000,000 ... 900,000,000,000 if n >= 100000000000 and n <= 900000000000 and n % 100000000000 == 0 then local h = n / 100000000000 return billion[1] .. " " .. hundreds[1] .. " " .. ones[h + 1] end -- 100,000,000,001 ... 999,999,999,999 if n >= 100000000001 and n <= 999999999999 then local h = math.floor(n / 100000000000) local rem = n % 100000000000 local out = billion[1] .. " " .. hundreds[1] .. " " .. oneSuffix[h + 1] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- ===================================== -- TIRILIYOONA -- ===================================== -- 1,000,000,000,000 ... 9,000,000,000,000 if n >= 1000000000000 and n <= 9000000000000 and n % 1000000000000 == 0 then local t = n / 1000000000000 return trillion[1] .. " " .. ones[t + 1] end -- 1,000,000,000,001 ... 9,999,999,999,999 if n >= 1000000000001 and n <= 9999999999999 then local t = math.floor(n / 1000000000000) local rem = n % 1000000000000 local out = trillion[1] .. " " .. oneSuffix[t + 1] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- 10,000,000,000,000 ... 90,000,000,000,000 if n >= 10000000000000 and n <= 90000000000000 and n % 10000000000000 == 0 then local t = n / 10000000000000 return trillion[1] .. " " .. tensBase[t] end -- 10,000,000,000,001 ... 90,999,999,999,999 if n >= 10000000000001 and n <= 90999999999999 and math.floor(n / 1000000000000) % 10 == 0 then local tr = math.floor(n / 1000000000000) local tensIndex = tr / 10 local rem = n % 1000000000000 local out = trillion[1] .. " " .. tensBaseSuffix[tensIndex] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- 11,000,000,000,001 ... 99,999,999,999,999 if n >= 11000000000001 and n <= 99999999999999 then local tr = math.floor(n / 1000000000000) local t = math.floor(tr / 10) local o = tr % 10 local rem = n % 1000000000000 local out = trillion[1] .. " " .. tensWithSuffix[t] .. " " .. oneSuffix[o + 1] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end -- 100,000,000,000,000 ... 900,000,000,000,000 if n >= 100000000000000 and n <= 900000000000000 and n % 100000000000000 == 0 then local h = n / 100000000000000 return trillion[1] .. " " .. hundreds[1] .. " " .. ones[h + 1] end -- 100,000,000,000,001 ... 999,999,999,999,999 if n >= 100000000000001 and n <= 999999999999999 then local h = math.floor(n / 100000000000000) local rem = n % 100000000000000 local out = trillion[1] .. " " .. hundreds[1] .. " " .. oneSuffix[h + 1] if rem > 0 then out = out .. " fi " .. toOromo(rem) end return out end return "" end -- ===================================== -- NEGATIVE -- ===================================== local function toOromoWithSign(n) if n < 0 then return "negatiiva " .. toOromo(math.abs(n)) end return toOromo(n) end -- ===================================== -- DECIMAL -- ===================================== local function toOromoDecimal(x) if math.floor(x) == x then return toOromo(x) end local s = tostring(x) local intStr, decStr = s:match("^(%-?%d+)%.(%d+)$") local intWord = toOromo(math.abs(tonumber(intStr))) local parts = {} for i = 1, #decStr do local d = tonumber(decStr:sub(i, i)) table.insert(parts, ones[d + 1]) end local out = intWord .. " tuqaa " .. table.concat(parts, " ") if x < 0 then out = "negatiiva " .. out end return out end -- ===================================== -- MAIN -- ===================================== function p.main(frame) local arg = frame.args[1] if not arg or arg == "" then return "" end local n = tonumber(arg) if not n then return "" end if math.floor(n) == n then return toOromoWithSign(n) else return toOromoDecimal(n) end end return p 1s6mp3wwcz1v3qf6k6xlijjstwy9jxu