Modul:Plural
Documentația acestui modul poate fi creată la Modul:Plural/doc
local getArgs = require('Module:Arguments').getArgs
local lang = mw.getLanguage("ro")
local p = {}
function p.build_first_plural(singular)
local plural = mw.loadData("Modul:Plural/data").plural
if plural[singular] ~= nil then
return plural[singular]
else
return string.format("%si", singular)
end
end
function p.build_plural(count, singular, first_plural, second_plural)
local form
if count == 1 then
form = singular
elseif count == 0 or count ~= nil and (count%100 > 0 and count%100 < 20) then
if first_plural == nil then
form = p.build_first_plural(singular)
else
form = first_plural
end
else
if second_plural == nil and first_plural == nil then
form = "de " .. p.build_first_plural(singular)
elseif first_plural ~= nil then
form = "de " .. first_plural
else
form = second_plural
end
end
return string.format("%s %s", lang:formatNum(count), form)
end
function p.get_plural(frame)
-- if we don't have any args, try to get them from the template
if frame.args[1] == nil then
origArgs = getArgs(frame, { wrappers = { 'Format:Plural' } })
else
origArgs = frame.args
end
local form = ""
local count = lang:parseFormattedNumber(origArgs[1])
local singular = origArgs[2]
local first_plural = nil
local second_plural = nil
if origArgs[3] ~= nil then
first_plural = origArgs[3]
end
if origArgs[4] ~= nil then
local first_plural = origArgs[4]
end
return p.build_plural(count, singular, first_plural, second_plural)
end
function p.get_first_plural(frame)
if frame.args or frame.args[1] == nil then
origArgs = getArgs(frame, { wrappers = { 'Format:Plural' } })
else
origArgs = frame.args
end
return p.build_first_plural(origArgs[1])
end
return p