وحدة:Ill-WD2
المظهر
- تستخدم هذه الوحدة أساساً عبر قالب:Ill-WD2.
هذه الوحدة مستخدمة في عدد كبير من الصفحات (+547092) . لتفادي خلق بلبلة على نطاق واسع من الصفحات وزيادة الأعباء على الخوادم، يجب تجربة أي تعديل في هذه الصفحات الفرعية /ملعب أو /تجربة أو في ملعبك. بعدها يمكنك اضافة التعديلات دفعة واحدة، ورجاءً، لا تنسَ مناقشة أمر التعديلات أوّلًا قبل القيام بها. |
الهدف من القالب
يستخدم هذا القالب مثل قالب {{وصلة إنترويكي}} (وإو) ولكن يعتمد هذا القالب بشكل أساسي على عنصر ويكي بيانات الذي يتم وضعه في القيمة الثانية |المعرف=Q001
عند وجود قيمة للوسيط الأول |1=وصلة
أو يوضع في الوسيط |المعرف=Q001
عند عدم وجود أول قيمة، فإن كانت هناك وصلة في ويكي بيانات فستظهر عند عدم وضع وصلة محلية، أو تظهر بدل ذلك الوصلة التي توضع في الوسيط الأول |1=وصلة
.
- سؤال: لماذا هذا القالب؟!
- جواب: للتأكد من أن المقالة ربطت بالمقالة المطلوبة، حتى عند وجود تكرار في الاسم أو الوصلة، حيث أن القالب لا يظهر الصفحة في تصنيف:صفحات بها وصلات للإزالة إلا عند ارتباط مقالة في العنصر المطلوب في ويكي بيانات.
- في حالة وجود صفحة في ويكي بيانات للوسيط
|المعرف=
سيقوم البوت Mr.Ibrahembot بإزالة القالب ووضع الوصلة المناسبة.
الاستعمال
- الوسيط (
|المعرف=
أو|id=
) يجب أن يستخدم كشرط أساسي لعمل القالب.
استخدام |نص=
- يمكن استخدام
|نص=
في جميع الحالات التي ينتج فيها القالب وصلة، سواء حمراء أم زرقاء.{{Ill-WD2|جائزة الرئيس|المعرف=Q17011862}}
← جائزة الرئيس {{Ill-WD2|المعرف=Q76|نص=أوباما}}
← أوباما
وصلة موجودة في ويكي بيانات
- عند وجود وصلة في ويكي بيانات سيتجاهل القالب عمل الوسائط
|1=
و|لغ=
و|en=
.{{Ill-WD2|المعرف=Q76}}
← باراك أوباما
- استعمال
|1=
(يقوم القالب بتجاهله لوجود وصلة في ويكي بيانات) :{{Ill-WD2|أوباما|المعرف=Q76}}
← باراك أوباما {{Ill-WD2|أوباما|المعرف=Q76|لغ=fa}}
← باراك أوباما
- يمكن استعمال
|نص=
(ليظهر مكان الوصلة) :{{Ill-WD2|المعرف=Q76|نص=أوباما}}
← أوباما {{Ill-WD2|المعرف=Q21857932}}
← طواف العالم للدراجات 2017 {{Ill-WD2|المعرف=Q21857932|نص=طواف 2017}}
← طواف 2017
استخدام |en=
- يمكن استخدام
|en=
في جميع حالات عدم وجود وصلة عربية في ويكي بيانات: - إذا أردنا استخدام تسمية غير الإنجليزية فيمكن استخدام الوسيط
|لغ=
. - يظهر هذا الوسيط التسمية الإنجليزية في ويكي بيانات (ويضع وصلة إلى ويكيبيديا الإنجليزية) عند عدم استخدام
|1=
وعدم وجود تسمية عربية:{{وإود|en=نعم|المعرف=Q3402429}}
← Groeslon [الإنجليزية]
- عند عدم وجود وصلة لويكيبيديا الإنجليزية لا ينتج شيء كالتالي:
{{وإود|en=نعم|المعرف=Q21475076}}
←
استخدام |enlabel=
- إذا أردنا إضافة نص يظهر بدلًا عن التسمية الإنجليزية من ويكي بيانات بدون وصلة (في حالة عدم وجود تسمية عربية):
{{Ill-WD2|المعرف=Q15836474|enlabel=Nederland Bloeit 2011}}
← Nederland Bloeit 2011
استخدام |لغ=
وسائط بديلة: |target=
القيم المستخدمة: رمز لغة.
- يظهر الوسيط الوصلة إلى ويكي بيانات أو إلى أحد الموسوعات الشقيقة للمقالة التي نريد.
- يمكن استخدام
|لغ=
في جميع حالات عدم وجود وصلة عربية في ويكي بيانات:
- وجود تسمية عربية في ويكي بيانات أو باستخدام
|1=
{{Ill-WD2|المعرف=Q17011862|لغ=en}}
← جائزة الرابطة الوطنية لتقدّم الملونين - جائزة الرئيس [الإنجليزية]{{Ill-WD2|جروسلون|المعرف=Q3402429|لغ=fa}}
← جروسلون
- عدم وجود تسمية عربية
{{Ill-WD2|المعرف=Q3402429|لغ=en}}
← Groeslon [الإنجليزية]{{Ill-WD2|en=نعم|لغ=fa|المعرف=Q3402429}}
← Groeslon [الإنجليزية]- عند عدم استخدام
|en=
سيظهر التسمية التي نضع رمز لغتها:{{Ill-WD2|المعرف=Q3402429|لغ=es}}
← Groeslon [الإسبانية]
- عند استخدام رمز لغة خاطئ:
- باستخدام
|en=
لإضافة التسمية الإنجليزية{{Ill-WD2|en=نعم|لغ=fai|المعرف=Q3402429}}
← Groeslon [الإنجليزية] {{Ill-WD2|المعرف=Q3402429|لغ=fai}}
←
- باستخدام
تسمية عربية أو |1=
النص يساوي مقالة موجودة
- (مع استخدام
|المعرف=
للعنصر جون جونز (Q18201527))
- عند وجود تسمية عربية تساوي (جون جونز) أو أستخدمنا
|1=جون جونز
: - سيتجاهل القالب عمل وصلة إلى "جون جونز" بسبب وجود مقالة جون جونز تحمل هذا الاسم في ويكبيديا العربية وهي مرتبطة بعنصر آخر في ويكي بيانات:
- وستظهر الصفحة في تصنيف:وصلات إنترويكي بحاجة لمراجعة.
{{Ill-WD2|المعرف=Q18201527}}
← جون جونز {{Ill-WD2|جون جونز|المعرف=Q18201527}}
← جون جونز {{Ill-WD2|اليمن|المعرف=Q18201527|لغ=en}}
← اليمن [الإنجليزية]
- استخدام
|1=جون جونز (كاتب مسرحي)
لنفس العنصر:{{Ill-WD2|جون جونز (كاتب مسرحي)|المعرف=Q18201527}}
← جون جونز (كاتب مسرحي) {{Ill-WD2|جون جونز (كاتب مسرحي)|المعرف=Q18201527|نص=جون جونز}}
← جون جونز {{Ill-WD2|جون جونز (كاتب مسرحي)|المعرف=Q18201527|نص=جون جونز|لغ=en}}
← جون جونز [الإنجليزية]
النص لا يساوي مقالة موجودة
- مع وجود تسمية عربية:
{{Ill-WD2|المعرف=Q17011862}}
← جائزة الرابطة الوطنية لتقدّم الملونين - جائزة الرئيس {{Ill-WD2|المعرف=Q17011862|لغ=en}}
← جائزة الرابطة الوطنية لتقدّم الملونين - جائزة الرئيس [الإنجليزية]{{Ill-WD2|جائزة الرئيس|المعرف=Q17011862}}
← جائزة الرئيس
أمثلة أخرى
- عدم وجود تسمية عربية وعدم استخدام
|1=
:{{Ill-WD2|المعرف=Q3402429}}
←
y
|y=أي قيمة
يستخدم عند الرغبة في إظهار السنة فقط إن كانت موجودة وإن لم تكن موجودة يظهر الوصلة كما هي، تستخدم غالبا في قوالب السباقات مثل : قالب:طواف لومبارديا- مثال بدون استخدام الوسيط:
{{Ill-WD2|المعرف=Q29456648}}
← سباق الزمن للفرق في بطولة العالم لسباق الدراجات على الطريق 2017 - مثال يستخدم الوسيط:
{{Ill-WD2|المعرف=Q29456648|y=نعم}}
← 2017
noy
|noy=أي قيمة
يستخدم عكس الوسيط السابق|y=
حيث يقوم بإزالة السنة الموجودة في نهاية التسمية:{{Ill-WD2|المعرف=Q29456648|noy=t}}
← سباق الزمن للفرق في بطولة العالم لسباق الدراجات على الطريق {{Ill-WD2|المعرف=Q1629020|noy=t}}
← طواف هوت فار {{Ill-WD2|طواف هوتفار 2011|المعرف=Q1629020|noy=t}}
← طواف هوتفار
ملاحظة
- عند عدم وجود أي وصلات لغات أخرى في عنصر ويكي بيانات لن تظهر
[لغات أخرى]
ولن تظهر وصلة عربية.- وسيتم إضافة الصفحة في: تصنيف:صفحات بها قالب:Ill-WD2 دون وصلات لغات
تصنيفات التتبع
- تصنيف:صفحات بها وصلات إنترويكي 2 (152٬002 صفحة)
- تصنيف:صفحات بها قالب:Ill-WD2 دون وصلات لغات (13٬839 صفحة)
- تصنيف:صفحات بها وصلات للإزالة (200 صفحة)
- تصنيف:وصلات إنترويكي بحاجة لمراجعة (1 صفحة)
وسائط
---@diagnostic disable: undefined-global
local p = {}
local Frame
local RTL = "‏"
local options = {}
local Category = {
["remove"] = " [[تصنيف:صفحات بها وصلات للإزالة]]",
["review"] = " [[تصنيف:وصلات إنترويكي بحاجة لمراجعة|%s]]",
["nositelinks"] = " [[تصنيف:صفحات بها قالب:Ill-WD2 دون وصلات لغات|%s]]",
["add"] = "[[تصنيف:صفحات بها وصلات إنترويكي 2|%s]]"
}
local function isvalid(x)
if x and x ~= "" then
return x
end
return nil
end
function debug(msg)
if isvalid(options.debug) then
mw.log("Module:Ill-WD2: " .. msg)
end
end
local function countSiteLinks()
local numb = 0
local entity = mw.wikibase.getEntityObject(options.id)
if entity and entity.sitelinks then
for i, v in pairs(entity.sitelinks) do
numb = numb + 1
end
end
return numb
end
local function sitelink(site)
local site = site or "arwiki"
local link = mw.wikibase.sitelink(options.id, site) or ""
debug("mw.wikibase.sitelink : " .. link)
return link
end
local function labelIn(langcode)
local label, lange = mw.wikibase.getLabelWithLang(options.id)
if lange == langcode then
return label
end
debug("label = " .. (label or "") .. "lange = " .. (lange or "") .. "langcode = " .. langcode)
return ""
end
local function makeCategory(key)
if key ~= "add" and isvalid(options.nocat) then
return ""
end
return Category[key]
end
local function make_noy_text(str, langcode)
if not isvalid(options.noy) then
return str
end
local prefix = langcode == "ar" and "" or "^"
local suffix = langcode == "ar" and "$" or ""
local ca = str:gsub(prefix .. "%d%d%d%d[–-]%d%d%d%d%s*" .. suffix, "")
ca = ca:gsub(prefix .. "%d%d[–-]%d%d%d%d%s*" .. suffix, "")
ca = ca:gsub(prefix .. "%d%d%d%d[–-]%d%d%s*" .. suffix, "")
ca = ca:gsub(prefix .. "%d%d%d%d%s*" .. suffix, "")
debug("ca: " .. ca)
return ca
end
local function maketext(String)
if isvalid(options.text) then
debug("text: " .. options.text)
return options.text
end
local String2 = mw.ustring.gsub(String, "–", "-")
if isvalid(options.year) then
return mw.ustring.match(String2, "%d%d%d%d[%–-]%d%d%d%d%s*$", 1) or
mw.ustring.match(String2, "%d%d[%–-]%d%d%d%d%s*$", 1) or
mw.ustring.match(String2, "%d%d%d%d[%–-]%d%d%s*$", 1) or
mw.ustring.match(String2, "%d%d%d%d%s*$", 1) or
mw.ustring.match(String2, "^%d%d%d%d[%–-]%d%d%d%d%s", 1) or
mw.ustring.match(String2, "^%d%d[%–-]%d%d%d%d%s", 1) or
mw.ustring.match(String2, "^%d%d%d%d[%–-]%d%d%s", 1) or
mw.ustring.match(String2, "^%d%d%d%d%s", 1) or
String
end
if isvalid(options.noy) then
local ca = make_noy_text(String, "ar")
return ca == String and make_noy_text(String, "en") or ca
end
return String
end
local function make_suffix(target_Site, target_Link, sitelinks_count)
if sitelinks_count == 0 and not isvalid(options.from_lua) and not isvalid(options.wdlink) then
return string.format(makeCategory("nositelinks"), options.id)
end
local other_lang = """ .. options.id .. "" في لغات أخرى"
other_lang = '<sup class=reference title="' .. other_lang .. '">[لغات أخرى]</sup>'
local other_lang_text = " [[d:" .. options.id .. "#sitelinks-wikipedia|" .. other_lang .. "]]"
local suff =
mw.text.tag(
"span",
{
class = "noprint",
style = "font-size: smaller; font-style: normal; font-weight: normal;"
},
other_lang_text
)
if isvalid(target_Link) and isvalid(target_Site) then
local language = Frame:callParserFunction("#language", target_Site, "ar")
suff =
"[[:" ..
target_Site ..
":" .. target_Link .. '|<sup class=reference title="' .. target_Link .. '">[' .. language .. "]</sup>]]"
end
local suffe = " " .. suff
local text = isvalid(options.from_lua) and string.format(makeCategory("add"), options.id) or ""
return suffe .. text
end
local function make_ar_link(title, suffix, sitelinks_count)
local text = maketext(title)
local link
local tit = mw.title.new(title)
local cate = isvalid(options.from_lua) and string.format(makeCategory("review"), options.id) or ""
if sitelinks_count == 0 and not isvalid(options.wdlink) then
link = text .. suffix
elseif tit and tit.exists then
debug(cate)
link = text .. suffix .. cate
mw.log('review "' .. title .. '", id: ' .. options.id)
else
title = mw.ustring.gsub(title, "^تصنيف:", "")
text = mw.ustring.gsub(text, "^تصنيف:", "")
link = "[[" .. title .. "|" .. text .. "]]" .. suffix
end
debug("link: " .. link)
return link
end
local function argument_wrapper(frame)
local args = frame.args
-- merge args with frame:getParent().args
for k, v in pairs(frame:getParent().args) do
if args[k] == nil or args[k] == "" then
args[k] = v
end
end
local origin = {}
local aliases = {
["wdlink"] = { "wdlink" },
["debug"] = { "debug" },
["en_label"] = { "enlabel" },
["use_en_target"] = { "en" },
["id"] = { "المعرف", "id", 2 },
["label"] = { "label", 1 },
["target"] = { "target", "لغ" },
["nocat"] = { "nocat" },
["noy"] = { "noy" },
["year"] = { "y" },
["text"] = { "text", "نص" },
["from_lua"] = { "fromlua", "from_lua" }
}
-- iterate over the aliases table
for k, v in pairs(aliases) do
for _, alias in ipairs(v) do
if args[alias] and args[alias] ~= "" then
-- mw.log("Module:Ill-WD2: alias: " .. alias .. ": for " .. k)
origin[k] = args[alias]
break
end
end
origin[k] = origin[k] or ""
end
-- return the new table with the original argument names
return origin
end
function p.link(frame)
options = argument_wrapper(frame)
Frame = frame:getParent()
local id = options.id
if not isvalid(id) then
return "No ID"
end
local target = options.target
if isvalid(options.use_en_target) then
target = "en"
end
local en_label = options.en_label or (target == "en" and labelIn("en"))
local target_SiteLink = isvalid(target) and sitelink(target .. "wiki") or ""
local SiteLink = mw.wikibase.sitelink(id)
local sitelinks_count = countSiteLinks()
if SiteLink then
local Link = "[[" .. SiteLink .. "|" .. maketext(SiteLink) .. "]]"
mw.log("remove: " .. id)
return Link .. " [[تصنيف:صفحات بها وصلات للإزالة" .. "|" .. id .. "]]" .. RTL
end
local suffix = make_suffix(target, target_SiteLink, sitelinks_count)
local ar_label = labelIn("ar")
local ar_link = isvalid(options.label) and options.label or (isvalid(ar_label) and ar_label)
if isvalid(ar_link) then
debug("ar_link : " .. ar_link)
return make_ar_link(ar_link, suffix, sitelinks_count) .. RTL
elseif isvalid(en_label) then
debug("en_label " .. en_label)
return maketext(en_label) .. make_suffix("", "", sitelinks_count) .. RTL
elseif isvalid(target) and isvalid(target_SiteLink) then
debug("target " .. target .. ": " .. target_SiteLink)
return maketext(target_SiteLink) .. suffix .. RTL
else
debug("nothing en_label: " .. en_label)
return ""
end
end
return p