请输入您要查询的百科知识:

 

词条 Module:Sandbox/RexxS/Plural
释义 -- Module to create plurals for units (initially)-- Might be split into code and data--[[

Plurals by language

--]]

local plural = {

-- English

en = {

-- standard suffix, and "per":

"s",

["per"] = "per",

-- irregular plurals:

["inch"] = "inches",

["foot"] = "feet",

["square foot"] = "square feet",

["cubic foot"] = "cubic feet",

["pound-force"] = "pounds-force",

["kilogram-force"] = "kilograms-force",

["horsepower"] = "horsepower",

["gauss"] = "gauss",

["solar mass"] = "solar masses",

["hertz"] = "hertz",

["degree Fahrenheit"] = "degrees Fahrenheit",

["degree Celsius"] = "degrees Celsius",

["standard gravity"] = "standard gravities",

},

}

--[[

findLang takes a "langcode" parameter if if supplied and valid.

Otherwise it tries to create it from the user's set language ({{int:lang}})

Failing that, it uses the wiki's content language.

It returns a language object.

--]]

local function findLang(langcode)

local langobj

langcode = mw.text.trim(langcode or "")

if mw.language.isKnownLanguageTag(langcode) then

langobj = mw.language.new(langcode)

else

langcode = mw.getCurrentFrame():preprocess( '{{int:lang}}' )

if mw.language.isKnownLanguageTag(langcode) then

langobj = mw.language.new(langcode)

else

langobj = mw.language.getContentLanguage()

end

end

return langobj

end

--[[

pl takes a unit name and an optional language code

It returns the plural of that unit in the given language, if it can.

--]]

local function pl(unit, langcode)

langcode = findLang(langcode).code

unit = tostring(unit) or ""

local ret = ""

if plural[langcode] then

if plural[langcode][unit] then

-- irregular plural from lookup

ret = plural[langcode][unit]

else

local per = plural[langcode].per

local u1, u2 = unit:match("(.+) " .. per .. " (.+)")

if u1 then

-- recurse to give plural of bit before " per "

ret = pl(u1) .. " per " .. u2

else

-- standard plural

ret = unit .. plural[langcode][1]

end

end

else

-- unknown language, so return unchanged

ret = unit

end

return ret

end

local p = {}

--[[

p.main takes a unit name and an optional language code from the frame or its parent.

It returns the plural of that unit in the given language, if it can.

--]]

function p.main(frame)

if frame.args.unit then

args = frame.args

else

args = frame:getParent().args

end

-- if nothing supplied, return nothing (or an error message if debugging)

if not args.unit then return "" end

return pl(args.unit, args.lang)

end

return p

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/21 19:51:45