Module:Ordinals
{{#invoke:Ordinals|convertNumberToOrdinal |num=2 }}
2de
3de
8ste
10de
11de
8345ste
local p = {}
p.convertNumberToOrdinal = function( frame )
local num = frame.args.num or nil
if num == nil then return "" end
num = mw.text.trim( num )
if num == "1" then return "1ste" end
if num == "8" then return "8ste" end
-- do 2-9 first
local lastDigit = string.sub( num, -1)
local numeralsWithDeSuffix1 = { "2", "3", "4", "5", "6", "7", "9" }
for _,v in ipairs( numeralsWithDeSuffix1 ) do
if num == v then
return num .. "de"
end
end
local lastTwoDigits = string.sub( num, -2)
local numeralsWithDeSuffix2 = { "10", "11", "12", "13", "14", "15", "16", "17", "18", "19" }
for _,v in ipairs( numeralsWithDeSuffix2 ) do
if lastTwoDigits == v then
return num .. "de"
end
end
-- else
return num .. "ste"
-- 1ste, 11de, 21ste, 31ste, 101ste
-- 8ste, 18de, 28ste
-- similar
-- 2de, 12de, 22ste, 32ste, etc.
-- 3rde, 13rde, 23ste, 33ste, ...
-- 4de, 14de, 24ste, ...
-- 5de, 15de, 25ste, ...
-- 6de, 16de, 26ste, ...
-- 7de, 17de, 27ste, ...
-- 9de, 19de, 29ste
-- 10de, 20ste, 21ste
end
return p
