Module:بطاقة/أدوات
-- Credits: -- Original from fr:Module:Infobox/Fonctions -- forked by وهراني @arwiki (ar:وحدة:بطاقة/أدوات) -- Version: 20240607
-- أدوات مشتركة لبناء قوالب infobox local localdata = require("وحدة:بطاقة/بيانات") local item = localdata.item
local generic = {} generic.description = {"أدوات مشتركة عامة لبناء البطائق"}
local xmath = require("Module:Math")
function FormatNumVal(value)
value = tonumber(value) if value == 0 then return value end
if (math.abs(value) > 1E15) then return xmath.round({precision = 3, value = value / 1E15}) .. " بليار" elseif (math.abs(value) > 1E12) then return xmath.round({precision = 3, value = value / 1E12}) .. " تريليون" elseif (math.abs(value) > 1E9) then return xmath.round({precision = 3, value = value / 1E9}) .. " بليون" elseif (math.abs(value) > 1E6) then return xmath.round({precision = 3, value = value / 1E6}) .. " مليون" end
return xmath.round({precision = 3, value = value})
end
generic.FormatNumVal = FormatNumVal
generic.description["title"] = "وضع لبنة «العنوان» وتحوي اسما مشارا إليه أو اسم المقالة."; function generic.title(params)
if(type(params) ~='table') then params={} end return { type = "title", value = params.value or {"اسم","الاسم","title","name"}, wikidata = function(item) return (localdata.getValue(params.titleparam)) or (type(item) == "table" and type(item.id) == "string" and mw.wikibase.label(item.id) and mw.language.getContentLanguage():ucfirst(mw.wikibase.label(item.id))) or mw.title.getCurrentTitle().text end, subtitle = function() return params and localdata.getValue(params.subtitleparam) end, wikidatasubtitle = params.subtitlequery, icon = params.icon, style = params.style, metadata = {
description = params.description or "عنوان أو اسم المقالة", option = "suggested", type = "",
} }
end
generic.description["native_name"] = "وضع لبنة «اسم أصلي»"; function generic.native_name(params) if(type(params) ~='table') then params={} end return { type = params.type or 'subtitle' , label = params.label, value = params.value or {'اسم أصلي','العنوان الأصلي' , 'الاسم الأصلي','native_name','title_orig'},
wikidata = params.wikidata or { property = params.property or 'P1476', list = 'notlang', formatting='$text ⴰⵍⴱⵓⴹ:Language icon', conjunction = "
" , listmax= 1, listrank='bestrank' }, metadata = params.metadata or {
description = "الاسم الأصلي للموضوع.(يفضل إضافة اللغة كذلك)", option = "", type = "string", example = "Evolution ⴰⵍⴱⵓⴹ:لغة وصلة",
}
} end
generic.description["mainimage"] = " وضع لبنة «صورة» وتعرض صورة من المدخلات أو ويكي بيانات"; function generic.mainimage(params)
if(type(params) ~='table') then params={} end
return { type = "images", wikidata = params.wikidata or {property = "P18"}, imageparameters = params.imageparameters or {"صورة", "الصورة", "Image", "image"}, defaultimage = params.defaultimage, maintenancecat = params.maintenancecat or params.cat or "مقالات تحتاج إلى صور", sizeparameter = params.sizeparameter or {"حجم الصورة", "حجم_الصورة", "عرض_الصورة"}, uprightparameter = params.uprightparameter or "upright", defaultupright = params.upright, defaultsize = params.size, captionparameter = params.captionparameter or { "تعليق", "تعليق_الصورة", "تعليق الصورة", "عنوان_الصورة", "عنوان الصورة", "التعليق", "caption", "image_caption", "Caption" }, altparameter = params.altparameter or "بديل الصورة" or "image_alt", defaultalt = params.alt, defaultimagealt = params.defaultimagealt, numval = 1, metadata = {
description = params.description or " صورة تناسب الموضوع (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»).", example = "abc.jpg", option = "suggested", type = "wiki-file-name",
} }
end
generic.description["logo"] = "وضع لبنة «الشعار المرسوم» وتعرض صورة الشعار."; function generic.logo(params)
if(type(params) ~='table') then params={} end
return { type = "images", wikidata = params.wikidata or {property = "P154"}, imageparameters = params.imageparameters or {"شعار", "الشعار", "logo"}, defaultimage = params.defaultimage, maintenancecat = params.maintenancecat, captionparameter = params.captionparameter or {"تعليق الشعار", 'logo_caption'}, defaultupright = params.upright or "0.6", uprightparameter = params.uprightparameter or "upright logo", sizeparameter = params.sizeparameter or {"حجم الشعار", "عرض_الشعار"}, numval = 1, defaultcaption = 'الشعار', metadata = {
description = params.description or "صورة للشعار (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)", example = "abc_logo.jpg", option = "suggested", type = "wiki-file-name",
} }
end
generic.description["coat_of_arms"] = "إضافة صورة شعار النبالة"; function generic.coat_of_arms(params)
if(type(params) ~='table') then params={} end
return { type = "images", wikidata = params.wikidata or {property = {"P94"}}, imageparameters = params.imageparameters or {"شعار_النبالة", "coat_of_arms"}, defaultimage = params.defaultimage, maintenancecat = params.maintenancecat, captionparameter = params.captionparameter or {"تعليق نبالة", "coat_of_arms_caption"}, defaultupright = params.upright or "0.8", uprightparameter = params.uprightparameter or {"upright coa"}, sizeparameter = params.sizeparameter or {"coa_size"}, numval = 1, defaultcaption = 'شعار النبالة', metadata = {
description = params.description or "صورة لشعار النبالة (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)", example = "abc_coat.jpg", option = "", type = "wiki-file-name",
} }
end generic.blason = generic.coat_of_arms
generic.description["seal"] = "إضافة صورة الختم"; function generic.seal(params)
if(type(params) ~='table') then params={} end
return { type = "images", wikidata = params.wikidata or {property = {"P158"}}, imageparameters = params.imageparameters or { "ختم", "seal"}, defaultimage = params.defaultimage, maintenancecat = params.maintenancecat, captionparameter = params.captionparameter or { "تعليق ختم", "seal_caption"}, defaultupright = params.upright or "0.8", uprightparameter = params.uprightparameter or { "upright seal"}, sizeparameter = params.sizeparameter or { "seal_size"}, numval = 1, defaultcaption = 'الختم', metadata = {
description = params.description or "صورة للختم (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)", example = "abc_seal.jpg", option = "", type = "wiki-file-name",
} }
end generic.sceau = generic.seal
generic.description["flag"] = "إضافة صورة العلم"; function generic.flag(params)
if(type(params) ~='table') then params={} end
return { type = "images", wikidata = params.wikidata or {property = "P41"}, imageparameters = params.imageparameters or {"العلم", "علم", "flag"}, defaultimage = params.defaultimage, maintenancecat = params.maintenancecat, captionparameter = params.captionparameter or {"تعليق العلم",'flag_caption'}, defaultupright = params.upright or "0.6", uprightparameter = params.uprightparameter or "upright drapeau", sizeparameter = params.sizeparameter or {"حجم العلم", "flag_size"}, numval = 1, defaultcaption = 'العلم', metadata = {
description = params.description or "صورة للعلم (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)", example = "abc_flag.jpg", option = "suggested", type = "wiki-file-name",
} }
end
generic.description["sign"] = "إضافة صورة لافتة"; function generic.sign(params)
if(type(params) ~='table') then params={} end
return { type = "images", wikidata = params.wikidata or {property = "P14"}, imageparameters = params.imageparameters or {"لافتة"}, defaultimage = params.defaultimage, maintenancecat = params.maintenancecat, captionparameter = params.captionparameter or {"تعليق اللافتة","sign_caption"}, defaultupright = params.upright or "0.4", uprightparameter = params.uprightparameter or "upright signalisation", sizeparameter = params.sizeparameter or "حجم اللافتة", numval = 1, metadata = {
description = params.description or "صورة اللافتة (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)", example = "abc.jpg", option = "", type = "wiki-file-name",
} }
end
generic.description["icon"] = "إضافة صورة أيقونة"; function generic.icon(params)
if(type(params) ~='table') then params={} end
return { type = "images", wikidata = params.wikidata or {property = "P2910"}, imageparameters = params.imageparameters or {"أيقونة", "icon"}, defaultimage = params.defaultimage, maintenancecat = params.maintenancecat, captionparameter = params.captionparameter or {"تعليق أيقونة","icon_caption"}, defaultupright = params.upright or "0.4", uprightparameter = params.uprightparameter or "upright icon", sizeparameter = params.sizeparameter or "icon_size", numval = 1, metadata = {
description = params.description or "صورة الأيقونة (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)", example = "abc_icon.jpg", option = "", type = "wiki-file-name",
} }
end
generic.description["scheme"] = "إضافة صورة مخطط"; function generic.scheme(params)
if(type(params) ~='table') then params={} end
return { type = "images", wikidata = params.wikidata or {property = "P5555"}, imageparameters = params.imageparameters or {"مخطط", "scheme"}, captionparameter = params.captionparameter or {"تعليق المخطط","scheme_caption"}, defaultupright = params.upright, uprightparameter = params.uprightparameter or "upright scheme", sizeparameter = params.sizeparameter or "حجم المخطط", numval = 1, metadata = {
description = params.description or "صورة المخطط (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)", example = "abc_scheme.jpg", option = "", type = "wiki-file-name",
} }
end
generic.description["planview"] = "إضافة صورة مسقط"; function generic.planview(params)
if(type(params) ~='table') then params={} end
return { type = "images", wikidata = params.wikidata or {property = "P3311"}, imageparameters = params.imageparameters or {"مسقط", "planview"}, captionparameter = params.captionparameter or {"تعليق المسقط","planview_caption"}, defaultupright = params.upright, uprightparameter = params.uprightparameter or "upright planview", sizeparameter = params.sizeparameter or "حجم المسقط", numval = 1, metadata = {
description = params.description or "صورة المسقط (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)", example = "abc_planview.jpg", option = "", type = "wiki-file-name",
} }
end
generic.description["bathymetricmap"] = "إضافة صورة خريطة قياس الأعماق"; function generic.bathymetricmap(params)
if(type(params) ~='table') then params={} end
return { type = "images", wikidata = params.wikidata or {property = "P207"}, imageparameters = params.imageparameters or {"خريطة قياس الأعماق"}, defaultimage = params.defaultimage, maintenancecat = params.maintenancecat, captionparameter = params.captionparameter or {"تعليق خريطة قياس الأعماق",'bathymetricmap_caption'}, defaultupright = params.upright or "1", uprightparameter = params.uprightparameter or "upright bathymetricmap", sizeparameter = params.sizeparameter or "حجم خريطة قياس الأعماق", numval = 1, metadata = {
description = params.description or "صورة خريطة قياس الأعماق (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)", example = "abc.jpg", option = "", type = "wiki-file-name",
} }
end
-- روابط خارجية generic.description["website"] = "إضافة موقع ويب"; function generic.website(params)
if(type(params) ~='table') then params={} end return { type = "mixed", label = params.label or "موقع الويب", plurallabel = params.plurallabel or "مواقع الويب", value = params.value or {"موقع ويب", "موقع_ويب", "موقع", "url", "website"}, valueStyle = {["text-align"] = "left", ["direction"] = "ltr", ["font-size"] = "0.9em"}, wikidata = { wikimod = "Wikidata.Ca", property = params.property or "P856", qualifier = "P407", whitelist1 = "Q13955", -- for arabic website qualifier2 = "P518", blacklist2 = "Q19778981", -- for Tor onion service formatting = "table", conjunction = "
", rowformat = "$0$R0 $1", rowsubformat1 = '($1)', colformat0 = "weblink", colformat1 = "label" }, wikidata2 = { wikimod = "Wikidata.Ca", property = params.property or "P856", listrank = "bestrank", qualifier = "P407", -- for other languages website qualifier2 = "P518", blacklist2 = "Q19778981", -- for Tor onion service formatting = "table", conjunction = "
", rowformat = "$0$R0 $1", rowsubformat1 = '($1)', colformat0 = "weblink", colformat1 = "label" }, metadata = {
description = params.description or "فقط الموقع الرسمي على الويب (المواقع غير الرسمية تذكر في فقرة «وصلات خارجية»).", option = "suggested", type = "url",
} }
end
generic.description["blog"] = "إضافة موقع المدونة"; function generic.blog(params)
if(type(params) ~='table') then params={} end
return generic.website({ label = params.label or "المدونة الرسمية", value = params.value or {'مدونة','blog'}, property = params.property or 'P1581', description = params.description or 'فقط المدونة الرسمية (المواقع غير الرسمية تذكر في فقرة «وصلات خارجية»).' }) end
-- أصوات generic.description["selectSound"] = "إضافة صوت"; function generic.selectSound(params)
if(type(params) ~='table') then params={} end
params.type = "images"
params.style = params.style or {["padding-top"] = "25px"} params.defaultcaption = params.defaultcaption or "الصوت" params.captionparameter = params.captionparameter or {"تعليق الصوت",'sound_caption'} params.imageparameters = params.imageparameters or params.valueparameter or {"صوت", "sound"} params.defaultsize = params.defaultsize or "280" params.numval = params.numval or 1
params.wikidata = { wikimod = "Wikidata.Ca", property = params.property or "P51", qualifier = "P407", whitelist1 = "Q13955", -- for arabic formatting = "table", conjunction = "
", rowformat = "$0" } params.wikidata2 = { wikimod = "Wikidata.Ca", property = params.property or "P51", listrank = "bestrank", qualifier = "P407", -- for other languages formatting = "table", conjunction = "
", rowformat = "$0" } params.metadata = { description = params.description or "ملف صوتي (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)",
example = "abc.ogg",
option = "", type = "wiki-file-name", }
return params
end
generic.description["pronunciation"] = "إضافة ملف صوتي للتهجئة"; function generic.pronunciation(params)
if(type(params) ~='table') then params={} end
params.property = params.property or "P443"
params.defaultcaption = "التهجئة" params.captionparameter = params.captionparameter or {"تعليق التهجئة",'pronunciation_caption'} params.value = params.valueparameter or {"تهجئة", "pronunciation"} params.numval = 1
return generic.selectSound(params)
end
generic.description["dimensions"] = "إضافة الأبعاد"; function generic.dimensions()
local function getDimensions(params) local Dimensionsfunction = require("Module:Dimensions").main
local noerr, data, nb
noerr, data = pcall(Dimensionsfunction, params)
if noerr then
return data
else
addMaintenanceCat("مقالات بها أخطاء مصدرها وحدة بطاقة")
mw.log("WD Query Error : " .. mw.dumpObject(data))
return '' .. (data) .. ""
end
end
return { type = "mixed", label = "الأبعاد", value = {"أبعاد","الأبعاد","dimensions","dim"}, wikidata = function(item) return getDimensions({ item = item.id, diameter = localdata.getValue({"diameter","قطر"}), height = localdata.getValue({"height","ارتفاع"}), draft = localdata.getValue({"draft","عمق تحت خط الماء"}), clearance = localdata.getValue({"clearance","مسافة تحتية"}), width = localdata.getValue({"width","beam","عرض"}), length = localdata.getValue({"length","horizontal depth","طول","عمق أفقي"}), span = localdata.getValue({"span","بين الركائز"}), thickness = localdata.getValue({"thickness","سمك"}) }) end, metadata = {
description = "قيم الأبعاد (طول- عرض - عمق - قطر - ارتفاع - سمك ...) بوحدات القياس", option = "", type = "",
} }
end
generic.description["awards"] = "إضافة الجوائز"; function generic.awards(params)
if(type(params) ~='table') then params={} end return { type = params.type or "row", label = params.label or "الجوائز", value = params.value or {"جوائز", "جائزة", "awards"}, wikidata = { wikimod = "Wikidata.Ca", property = params.property or "P166", tablesort = "1", sorting = "-1", separator = "
", qualifier = "P585", qualifier2 = "P1686", qualifier3 = "P1027", qualifier4 = "P166/P2425", qualifier5 = "P1346", formatting = "table", rowformat = "* $4 $0$R0 $1$2$3$5", rowsubformat1 = "($1)", rowsubformat2 = "
, عن عمل «$2»", rowsubformat3 = "
تمنحها $3", rowsubformat4 = "30px|link=", rowsubformat5 = "
منحت لـ $5" }, metadata = {
description = params.description or "الجوائز الملحوظة فقط والتي لا تمنح ألقاب.", option = "", type = "string",
} }
end
generic.description["motto"] = "إضافة الشعار النصي"; function generic.motto(params)
if(type(params) ~='table') then params={} end return { type = params.type or "row", label = params.label or "الشعار النصي", value = params.value or {"شعار_نصي", "motto", "motto_text"}, defaultvalue = params.defaultvalue, wikidata = { wikimod = "Wikidata.Ca", property = params.property or "P1451", conjunction = "
", listrank="bestrank", formatting = "$text ⴰⵍⴱⵓⴹ:Language icon" }, metadata = {
description = params.description or "شعار نصي (بالإنجليزية:motto) (وليس صورة)", option = "", type = "string",
} }
end
-- أدوات تحديد الموقع الجغرافي
generic.description["country"] = "إضافة البلد"; function generic.country(params)
if(type(params) ~='table') then params={} end return { type = params.type or "row", label = params.label or "البلد", value = params.value or {"دولة", "بلد", "country"}, wikidata = { wikimod = "Wikidata.Ca", property = params.property or "P17", listrank="bestrank", formatting = "table", conjunction = "
", rowformat = "ⴰⵍⴱⵓⴹ:Country data $0$R0", colformat0 = "label" }, metadata = { description = "دولة ذات سيادة لهذا الموضوع", option = "", type = "string", } }
end
generic.description["geoloc"] = "إضافة خريطة الموقع التفاعلية"; function generic.geoloc(params)
if(type(params) ~='table') then params={} end
if (localdata.getValue("خريطة الموقع") == "-") then return nil end
local params2 params.id = params.id or (localdata.item and localdata.item.id) local geotype = "Point" if params.id then if(#(mw.wikibase.getBestStatements(params.id, "P3896")) > 0) then local commons2 = mw.wikibase.getBestStatements(params.id, "P3896") commons2 = commons2[1]["mainsnak"]["datavalue"]["value"] params2 = {geotype2 = 'page', commons2= commons2, id2 = params.id, stroke2 = "#FF0000"} elseif(#(mw.wikibase.getBestStatements(params.id, "P402")) > 0) then geotype = "geoshape" params2 = {geotype2 = 'geoline', id2 = params.id, stroke2 = "#FF0000"} end end
return { type = "map", latitude = {"دائرة عرض", "دائرة العرض", "latitude"}, longitude = {"خط طول", "خط الطول", "longitude"}, pointtype = params.pointtype, maptype = params.type, globe = localdata.globe or localdata.getValue("كوكب") or params.globe, marker = params.marker, markercolor = params.markercolor, shapecolor = params.shapecolor, markersize = params.markersize, markersymbol = params.markersymbol, default_zoom = localdata.getValue({"zoom","تكبير"}) or params.default_zoom, ids = params.ids , id = params.id, geotype = params.geotype or geotype, params = params2, --debug = 1, metadata = {
description = params.description or "", option = "", type = "",
} }
end
generic.description["coordinates"] = "إضافة الإحداثيات"; function generic.coordinates(params)
if(type(params) ~='table') then params={} end
return { type = "mixed", label = "الإحداثيات", value = {"إحداثيات", "احداثيات", "coordinates"}, wikidata = { wikimod = "Wikidata.Ca", listrank = "bestrank", property = params.property or "P625", formatting = "Coordinates: Unable to parse latitude as a number:$lat
{{#coordinates:}}: invalid latitude" }, metadata = {
description = params.description or "الإحداثيات الجغرافية", option = "", type = "string",
} }
end
generic.description["locationmap"] = "إضافة خريطة الموقع"; function generic.locationmap(params)
if(type(params) ~='table') then params={} end
return { type = "images", imageparameters = params.imageparameters or {"صورة خريطة"}, sizeparameter = params.sizeparameter or "حجم صورة خريطة", captionparameter = params.captionparameter or {"تعليق صورة خريطة"}, defaultupright = params.upright or "1", property = params.property or "P242", numval = 1, metadata = {
description = params.description or "صورة خريطة جغرافية (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)", example = "abc_map.jpg", option = "", type = "wiki-file-name",
} }
end
generic.description["detailedmap"] = "إضافة خريطة مفصلة"; function generic.detailedmap(params)
if(type(params) ~='table') then params={} end
return { type = "images", imageparameters = params.imageparameters or {"صورة خريطة مفصلة"}, sizeparameter = params.sizeparameter or "حجم صورة خريطة مفصلة", captionparameter = params.captionparameter or {"تعليق صورة خريطة مفصلة"}, defaultupright = params.upright or "1", defaultsize = params.defaultsize, property = params.property or "P1621", numval = 1, metadata = {
description = params.description or "صورة خريطة جغرافية مفصلة (ضع اسم الملف فقط دون السابقة «ملف:» أو «File:»)", example = "abc_map.jpg", option = "", type = "wiki-file-name",
} }
end
generic.description["replaces"] = "حل محل"; function generic.replaces(params)
if(type(params) ~='table') then params={} end return { type = "row", label = "عوض", value = {"عوض","replaces"}, wikidata= params.wikidata or {property = "P1398 OR P1365"}, metadata = {
description = params.description or "حل محل", option = "", type = "",
} }
end
generic.description["replacedby"] = "حل مكانه"; function generic.replacedby(params)
if(type(params) ~='table') then params={} end return { type = "row", label = "حل مكانه", value = {"حل مكانه","replaced_by"}, wikidata = params.wikidata or {property = "P167 OR P1366"}, metadata = {
description = params.description or "عوضه", option = "", type = "",
} }
end
generic.description["memberof"] = "المنظمات والهيئات التي انتسب إليها."
function generic.memberof(params) if(type(params) ~='table') then params={} end
return {
type = 'row',
label = params.label or 'عضو في',
value = params.value or {'عضو','عضو في','عضوية','member of','membre de'},
wikidata = {
wikimod = 'Wikidata.Ca', formatting='table',
property = params.property or 'P463',
qualifier1='P2868' ,rowsubformat1=' ($1)',
rowformat = '$0$R0$1', showDate = 'true',
conjunction = '
'},
metadata = {
description = params.description or "المنظمات والهيئات التي انتسب إليها.",
option = "",
type = "",
}
}
end
return generic