Wikiphidiya
nrwiki
https://nr.wikipedia.org/wiki/Main_Page
MediaWiki 1.47.0-wmf.2
first-letter
Iinrhatjhi
Khethekileko
Asiqongelane
Umsebenzisi
Umsebenzisi asiqongelane
Wikiphidiya
Wikiphidiya asiqongelane
Isimumathi
Isimumathi asiqongelane
MediaWiki
MediaWiki asiqongelane
Umhlahlandlelasakhiwo
Umhlahlandlelasakhiwo asiqongelane
Lisizo
Lisizo asiqongelane
Mkhakha
Mkhakha asiqongelane
TimedText
TimedText talk
Module
Module talk
Event
Event talk
Module:Message box
828
108
6609
446
2026-05-19T06:39:34Z
NgamangaXhosa
1515
6609
Scribunto
text/plain
require('strict')
local getArgs
local yesno = require('Module:Yesno')
local lang = mw.language.getContentLanguage()
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[Category:%s|%s]]', cat, sort)
else
cat = string.format('[[Category:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
self.typeImageNeedsLink = typeData.imageNeedsLink
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Set the below row.
self.below = cfg.below and args.below
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
if self.below then
self:addClass('mbox-with-below')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Set image classes.
self.imageRightClass = args.imagerightclass or args.imageclass
self.imageLeftClass = args.imageleftclass or args.imageclass
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. (talk == '#' and '' or '#') .. talk)
talkText = string.format('([[%s|talk]])', talkLink)
else
talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s' .. (talk == '#' and '' or '#') .. '%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s%s|alt=]]', self.typeImage
or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" )
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
-- set templatestyles
self.base_templatestyles = cfg.templatestyles
self.templatestyles = args.templatestyles
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'from'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'Articles with invalid date parameter in template')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)
end
if self.isSubstituted then
self:addCat('all', 'Pages with incorrectly substituted templates')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:exportDiv()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
local frame = mw.getCurrentFrame()
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.base_templatestyles },
})
-- Add support for a single custom templatestyles sheet. Undocumented as
-- need should be limited and many templates using mbox are substed; we
-- don't want to spread templatestyles sheets around to arbitrary places
if self.templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.templatestyles },
})
end
-- Create the box.
local mbox = root:tag('div')
mbox:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
mbox:addClass(class or nil)
end
mbox
:cssText(self.style or nil)
if self.attrs then
mbox:attr(self.attrs)
end
local flex_container
if self.below then
-- we need to wrap the flex components (`image(right)` and `text`) in their
-- own container div to support the `below` parameter
flex_container = mw.html.create('div')
flex_container:addClass('mbox-flex')
else
-- the mbox itself is the parent, so we need no HTML flex_container
flex_container = mw.html.create()
end
-- Add the left-hand image.
if self.imageLeft then
local imageLeftCell = flex_container:tag('div'):addClass('mbox-image')
imageLeftCell
:addClass(self.imageLeftClass)
:wikitext(self.imageLeft or nil)
end
-- Add the text.
local textCell = flex_container:tag('div'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = flex_container:tag('div'):addClass('mbox-imageright')
imageRightCell
:addClass(self.imageRightClass)
:wikitext(self.imageRight or nil)
end
mbox:node(flex_container)
-- Add the below row.
if self.below then
mbox:tag('div')
:addClass('mbox-text mbox-below')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:addClass('mbox-invalid-type')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
local frame = mw.getCurrentFrame()
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.base_templatestyles },
})
-- Add support for a single custom templatestyles sheet. Undocumented as
-- need should be limited and many templates using mbox are substed; we
-- don't want to spread templatestyles sheets around to arbitrary places
if self.templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.templatestyles },
})
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div')
end
imageLeftCell
:addClass(self.imageLeftClass)
:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div')
end
imageRightCell
:addClass(self.imageRightClass)
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:addClass('mbox-invalid-type')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
-- DIV MIGRATION CONDITIONAL
if box.cfg.div_structure then
return box:exportDiv()
end
-- END DIV MIGRATION CONDITIONAL
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
ocboyo877qnpqum2b9fyiquh72vukqa
Ithando
0
197
6620
5791
2026-05-19T07:45:18Z
Kwamikagami
1412
6620
wikitext
text/x-wiki
[[Isimumathi:Love padlocks on the Butchers' Bridge (Ljubljana).jpg|thumb|ithando]]
'''Ithando''' mimizwa emihle umuntu abanayo ngomunye umuntu. <ref>[[mwod:love#word-history|LOVE Definition & Meaning - Merriam-Webster]]</ref>[[Imizwa]] le kungaba ngeyabantu ahlala nabo ekumndeni wakhe nanyana kube mimizwa yomuntu ohlukileko kunaye ngokobulili. Ithando yinto ehle khulu ngombana lakha ubuhlobo begodu likhulisa nemindeni. Ithando kuyinto eletha ukuthula nokuzwana emakhayeni. Abantu bakghona ukubekezelelana nokuthuthukisana ngesibanga sethando. Woke amakhaya akhona ajame ngesibanga sethando. Ithando liletha ithabo nokujabula, lapho kuphelekhona ithando abantu bahlala badanile.
Ithando libonakala lokha umuntu atshweyeka ngokuthi omunye umuntu uhleli kuhle lapho akhona. Likhombisa ukuzinkela kwabantu ababili ekutheni babe semaduze gokwenhliziyo nangommoya wabo. Ithando kuyinto yemvelo enganayo imibandela.<ref>Cordner, C., 2016. Unconditional love?. ''Cogent Arts & Humanities'', ''3''(1), p.1207918.</ref> Livela nofana lenzeka lapho umuntu angakacabangi khona. Imizwa yethando ingavuka lokha umuntu nakabona umuntu omuhle nofana umuntu onemikghwa, nofana oziphatha gendlela ayithandako. Abantu abathandako bakghone ukuthi balwe begodu babuye bakwazi ukulibalelana.
== Iinkomba ==
[[Category: Ithando]]
[[Category:Ilanga lethando]]
[[category:Imizwa]]
jjnq35pgpyffbju3tqcbva9l48nj89g
Isindebele
0
329
6537
6108
2026-05-18T12:19:50Z
NgamangaXhosa
1515
6537
wikitext
text/x-wiki
'''IsiNdebele seSewula''' (''Southern'' Ndebele), esaziwa nge'''siNdebele''', lilimi le-Afrika elivela esiqhemeni samaMbo wamalimi weBantu. Ilimeli likhulunywa maNdebele okubabantu abafumaneka e[[Isewula Afrika|Sewula Afrika]].<ref>https://www.krugerpark.co.za/africa_ndebele.html</ref> Bafumaneka eemfundeni ezifaka hlangana iMpumalanga, Gauteng, Limpopo, ne-''North-West''.
KunesiNdebele esikhulunywa e-[[Limpopo]] eendaweni ezifana ne-[[Polokwane]] (Bhulungwane), Ga-Rathoka (KaSondonga), Ga-Mashashane, Ga Maraba / [[Kalkspruit]], [[Mokopane]] (Mghumbane), Zebediela (Sebetiela), eduze ukuya eNdebeleni yeSewula.<ref>https://www.sahistory.org.za/article/ndebele-history</ref>
== Iinkomba ==
{{Reflist}}
[[Mkhakha:Sewula Afrika]]
[[Mkhakha:IsiNdebele]]
[[Mkhakha:AmaNdebele]]
1ij4tfcplabdtm0pbas9mvx3i92cgpn
6538
6537
2026-05-18T12:20:07Z
NgamangaXhosa
1515
6538
wikitext
text/x-wiki
'''IsiNdebele seSewula''' (''Southern'' Ndebele), esaziwa '''ngesiNdebele''', lilimi le-Afrika elivela esiqhemeni samaMbo wamalimi weBantu. Ilimeli likhulunywa maNdebele okubabantu abafumaneka e[[Isewula Afrika|Sewula Afrika]].<ref>https://www.krugerpark.co.za/africa_ndebele.html</ref> Bafumaneka eemfundeni ezifaka hlangana iMpumalanga, Gauteng, Limpopo, ne-''North-West''.
KunesiNdebele esikhulunywa e-[[Limpopo]] eendaweni ezifana ne-[[Polokwane]] (Bhulungwane), Ga-Rathoka (KaSondonga), Ga-Mashashane, Ga Maraba / [[Kalkspruit]], [[Mokopane]] (Mghumbane), Zebediela (Sebetiela), eduze ukuya eNdebeleni yeSewula.<ref>https://www.sahistory.org.za/article/ndebele-history</ref>
== Iinkomba ==
{{Reflist}}
[[Mkhakha:Sewula Afrika]]
[[Mkhakha:IsiNdebele]]
[[Mkhakha:AmaNdebele]]
oz994vqgkvvgfvf56drdmtb5ixabplh
Umsebenzisi:Roman Oy Bobrov
2
361
6590
1918
2026-05-19T06:17:12Z
NgamangaXhosa
1515
6590
wikitext
text/x-wiki
{{Not around|{{PAGENAME}}}}
43ncr18fghi0wiy07np8ue17ph7aec0
6591
6590
2026-05-19T06:17:40Z
NgamangaXhosa
1515
Undid revision [[Special:Diff/6590|6590]] by [[Special:Contributions/NgamangaXhosa|NgamangaXhosa]] ([[User talk:NgamangaXhosa|talk]])
6591
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
Abaphasi
0
477
6564
3115
2026-05-18T20:47:54Z
Nomsa Skosana
123
6564
wikitext
text/x-wiki
'''Abaphasi''' babantu egade baphila emhlabeni bahlongakala, nje sele baphila ngomoya ukutlhogomela abantu bemakhabo abaphilako. Babizwa bona ngabaphasi ngombana bagujelwe balele phasi emalibeni.
29gzf8j6bojs5lpques44pfupk5k8qy
Umsebenzisi asiqongelane:Roman Oy Bobrov
3
533
6592
2620
2026-05-19T06:18:51Z
NgamangaXhosa
1515
6592
wikitext
text/x-wiki
{{Not around|{{PAGENAME}}}}
== Invitation to connect with fellow contributors from language onboarding experiment ==
Hello,
Hope this message finds you well! I would like to invite you to a community conversation to connect with fellow contributors from pilot wikis (Southern Ndebele, Tai Nüa, Iban, Obolo, Pannonian Rusyn) that graduated through a [https://diff.wikimedia.org/2024/10/31/wikipedia-goes-live-for-five-languages-through-the-future-of-language-incubation-initiative/ Language Onboarding Experiment] last year. In this conversation, we plan to facilitate sharing learnings, discussing technical needs post-graduation, and collaborating on solving challenges faced by the pilot wikis.
We spoke with a few contributors from these wikis back in December, and their valuable input on contributions has given us some perspectives on what to investigate next. A report will soon be published on those learnings. We hope that this meeting will not only be a great opportunity for us to come together and learn from each other but also allow us to use your valuable input to shape our plans for the coming year!
If you can attend the call, please sign up here, and I will share more details later:
* [https://www.mediawiki.org/wiki/Language_Onboarding_and_Development/Community_conversations_2024-25#5_April_2025_01:00_UTC 5 April 2025, 01:00 UTC]
* [https://www.mediawiki.org/wiki/Language_Onboarding_and_Development/Community_conversations_2024-25#4_April_2025_15:00_UTC 4 April 2025, 15:00 UTC]
Looking forward to your participation!
Cheers, [[User:SSethi (WMF)]] via [[Umsebenzisi:MediaWiki message delivery|MediaWiki message delivery]] ([[Umsebenzisi asiqongelane:MediaWiki message delivery|talk]]) 20:52, 27 Mbimbitho 2025 (SAST)
<!-- Message sent by User:SSethi (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:SSethi_(WMF)/MassMessageList&oldid=28454981 -->
:: Hi! If you haven't signed up yet, you can still consider doing so! You can find more information on [[mediawikiwiki:Language_Onboarding_and_Development/Community_conversations_2024-25|this page]] about the upcoming meetings on April 4th and 5th.
:[[Umsebenzisi:SSethi (WMF)|SSethi (WMF)]] ([[Umsebenzisi asiqongelane:SSethi (WMF)|talk]]) 19:24, 2 Mabasa 2025 (SAST)
t87my5zwt56q89z6gzod5eaf10ex4o6
Charles II of England
0
751
6622
5110
2026-05-19T07:47:40Z
Kwamikagami
1412
6622
wikitext
text/x-wiki
Challie wesibili mntwana omdala wekosi u Charlse wokuthoma okunguye yedwa oseleko enarheni ye Scotland, Ireland ne Henrietta Maria of France. AfNgemva kukuphumala kuka charles wokuthoma ngonyaka ka-30 January 1649, Ngesikhathi sepi wabantu abamhlophe ekuyi British civil war, ipalamende ye Scotsland ibeke u Charles ikosi yesibili ngomhlaka 5 February 1649,kodwana, England yangena e skathini esiyi interregnum. Yabuya yaphathwa ngu Cromwell owahlula u Charles II epini Worcester on 3 September 1651.
du2c2mjceg96qwp5y9ii6f1hh5oov7z
6623
6622
2026-05-19T07:48:42Z
Kwamikagami
1412
Kwamikagami moved page [[Charles I of England]] to [[Charles II of England]]: wrong topic
6622
wikitext
text/x-wiki
Challie wesibili mntwana omdala wekosi u Charlse wokuthoma okunguye yedwa oseleko enarheni ye Scotland, Ireland ne Henrietta Maria of France. AfNgemva kukuphumala kuka charles wokuthoma ngonyaka ka-30 January 1649, Ngesikhathi sepi wabantu abamhlophe ekuyi British civil war, ipalamende ye Scotsland ibeke u Charles ikosi yesibili ngomhlaka 5 February 1649,kodwana, England yangena e skathini esiyi interregnum. Yabuya yaphathwa ngu Cromwell owahlula u Charles II epini Worcester on 3 September 1651.
du2c2mjceg96qwp5y9ii6f1hh5oov7z
Abantu bendabuko be-Afrika ama-Khoisan
0
765
6563
5183
2026-05-18T20:45:39Z
Nomsa Skosana
123
6563
wikitext
text/x-wiki
'''Ama-Khoisan''' babantu bomdabu be-San ne-Khoekhoe beSewula Afrika. Ngaphambilini bebaziwa ngokuthi banemibala nje basebenzisa ilungelo labo lokuzazisa begodu baziveza njengama-San nama-Khoekhoe nofana ama-Khoe-San.
== Ukwamukelwa kwama-Khoisan ==
ISewula Afrika ivowudele ukwamukelwa kwesimemezelo se-UN malungana namalungelo wabantu bendabuko kodwana ayikavumi i-ILO Convention No. 169. Abantu bendabuko be-San ne-Khoekhoe abavunywa ngokusemthethweni ngokuya ngomthetho welizwe njengomphakathi wesintu. Lokhu kuyatjhuguluka ngomthetho woburholi wendabuko nomthethomlingwa we-Khoisan okuhloswe bona wethulwe e-Palamende. Inani elipheleleko labantu beSewula Afrika lingaba ziingidi ezima-50, lapho kulinganiselwa bona isiqhema sabantu bomdabu sijame phezu ku-1%.
== Iinqhema zama-Khoisan neendawo zawo ==
Iinqhema ezikulu zama-Khoisan zifaka hlangana ama-San Khomani ahlala khulu esifundeni se-Khalahari kunye nama-Khwe nama-Xun, ahlala khulu e-Platfontein e-Kimberley. IKhoekhoe ibunjwa ma-Nama ahlala khulu esifundeni se-North Cape. I-Koran khulukhulu eendaweni ze-Kimberley ne-Free State. I-Griqua eendaweni ze-Western Cape, Eastern Cape, Northern Cape, Free State kanye naKwaZulu-Natal. Ama-Cape Khoekhoe e-Western Cape ne-Eastern Cape ngokukhula kwamaphakethe eemfundazweni ze-Gauteng ne-Free State. ESewula Afrika yanje imiphakathi yama-Khoisan itjengisa iindlela zokuphila ezahlukahlukeneko zezomnotho namasiko. Amatjhuguluko wezehlalakuhle nezepolotiki alethwe lihlelo lezepolotiki leSewula Afrika yanje edale isikhala sokuhlukaniswa kwemikhakha yezehlalakuhle yebandlululo efana nombala.
== Ilwazi lomdabu namaphrojekthi wama-Khoisan ==
Umthetho wokuvikelwa, ukuthuthukiswa nokuphathwa kwamahlelo welwazi lendabuko ka-2014 wasungula ukuvikelwa, ukuthuthukisa nokuphathwa kweenkhungo zelwazi lendabuko yemiphakathi. Umthethomlingwa lo unikela ngokusungulwa nokusebenza kwe-ofisi lenarha leenhlelo zelwazi lendabuko nokuphathwa kwamalungelo wabanikazi belwazi lendabuko. Iphrojekthi womthetho welwazi lomdabu isungula indlela yokuthola ilwazi lomdabu lemiphakathi yendawo. Ukungezelela umthethomlingwa lo uhlathulula ikambiso yokutlolisa, ukugunyaza nokuqinisekisa abasebenzi belwazi lomdabu. Inguqulo yesibili womthethomlingwa lo yenziwe ngokuya komjikelezo wokuthoma wokungena begodu inguqulo etja yesibili yavulwa bona ibonisane nomphakathi ngo-Nobayeni wee-2016.
Ikomidi yePalamende yeSewula Afrika yokubusa ngokubambisana neendaba zendabuko yethule umthethomlingwa woburholi bendabuko nama-Khoisan phambi kwePalamende ngo-2016. Iphrojekthi le ifuna ukutjheja bona imiphakathi yama-Khoisan yomlando sele yamukelwa ngeminye imiphakathi yamasiko yeSewula Afrika. Ngokokuthoma eminyakeni ema-300 edlulileko, umthethomlingwa lo unganikela ukuvunywa okusemthethweni begodu uvule amathuba wokufikelela ubulungiswa emiphakathini yomlando wama-Khoisan. Umthethomlingwa lo uzokuvumela ama-Khoisan bona afakwe eenkambisweni zokuphatha zikaRhulumende ngaphakathi kweenkonzo ezihlukahlukeneko begodu uvumele iinkonzo lezi bona zenze amalungiselelo athileko wezinto eziqakathekileko zehlalakuhle, zomnotho nezamasiko wemiphakathi yama-Khoisan.
[[Isimumathi:Khoisan languages.svg|thumb|I-diagramu yama-limi wama-Khoisan]]
== Imizamo yokubulunga amasiko wama-Khoisan ==
Iinhlelo ezinengi ezihloswe ukubulunga amalimi wama-Khoisan, amasiko kunye namahlelo welwazi zithole ukuthandwa umnyaka woke. I-South African National Editor's Forum (SANEF), i-Pan South African Language Board (PanSALB) kunye ne-UN bathoma isemina ngendima yabezindaba ekuthuthukisweni nekulondolozweni amalimi wendabuko. Umnyanya lo obanjwe mhlazana amalanga ali-07 kuRhoboyi wee-2024, ukhulume ngomthelela wobuhlakani bokufakelwa eendabeni kunye namaqhinga lapho umkhakha weendaba zamalimi wendabuko ungadosa ngakho ukukhangisa kwedijithali. Isemina le idose ababiki beendaba, iimfundiswa, abahlaziyi kanye nabasebenzi emkhakheni weendaba zamabhizinisi ngokudzimelela ebantwini beendaba zomphakathi.
Amaphrojekthi wokusebenzisana neenkhungo zefundo kanye neenhlangano zamasiko ahlonywa ukutlola nokukhuthaza amagugu wendabuko. I-PanSALB ibawe bona kube nendlela epheleleko yokukhuthaza ukuhlonipha amalimi wendabuko nokukhomba iindawo ezitlhogwa ukuvuselelwa. Lokhu kwagandelelwa ngesikhathi se-Khoisan National Language Indaba,umhlangano owahlanganisa ababambindima begodu okhambisana ne-International Decade of Indigenous Languages 2022-2032. I-PanSALB ikhuthaze woke amazinga kaRhulumende bona athathe amagadango wokuphendula iincomo ezenziwe ngesikhathi se Indaba.
== Amanothi neenkhombo ==
1. The Indigenous Peoples of Africa Co-ordinating Committee. (19 February 2020). Southern Africa - The Indigenous Peoples of Africa Co-ordinating Committee.https://www.ipacc.org.za/southern-africa/#:~:text=The%20indigenous%20peoples%20of%20South,Khoekhoe%2C%20including%20Nama%20and%20Griqua
2. Cassette, J., & Roos, E. (n.d.). Traditional Khoi-San Leadership Act: The importance of meaningful public participation during the law-making process. Cliffe Dekker Hofmeyr.https://www.cliffedekkerhofmeyr.com/news/publications/2023/Practice/ProBono/pro-bono-and-human-rights-alert-9-june-traditional-khoi-san-leadership-act
3. Jansen, Lesle and Horton, Theo. “South Africa”. In The Indigenous World 2024, ed. D. Mamo, IWGIA. April 2024. pp. 116-122.https://iwgia.org/en/south-africa/5358-iw-2024-southafrica.html
4. Zondo, W. B. (19 December 2024). In peril: How the traditional and Khoi-San Leadership Bill 2024 continues to threaten informal land rights and rural democracy — African law matters. African Law Matters.https://www.africanlawmatters.com/blog/in-peril-how-the-traditional-and-khoi-san-leadership-bill-2024-continues-to-threaten-informal-land-rights-and-rural-democracy
5.The Khoisan | South African History Online. (n.d.).https://www.sahistory.org.za/article/khoisan
hms0cmq2egqxp048ah171jku79hpsqc
Irhelo lababulali abanengi eSewula Afrika
0
1099
6621
6479
2026-05-19T07:45:52Z
Kwamikagami
1412
6621
wikitext
text/x-wiki
Lolu luhlu lwababulali abanengi beSewula Afrika eSewula Afrika.
Umbulali we-serial kuvamise ukuba mumuntu obulala abantu abathathu nofana ngaphezulu, begodu ukubulawa kwenzeka isikhathi esingaphezu kwenyanga begodu kufaka hlangana isikhathi eside hlangana nabo. Nanyana kunjalo, iSewula Afrika isebenzisa ihlathululo elula yokubulala abantu abanengi, iyihlathulula ngokuthi, "Ukubulawa kwabantu ababili nofana ngaphezulu ngokungasimthethweni mphulaphuli munye, ezehlakalweni ezihlukileko."
== Ababulali abanengi abakhonjiweko ==
{| class="wikitable sortable"
! width="200px" |Name
!Nickname / AKA
! width="100px" |Years active
! data-sort-type="number" |Proven victims
! data-sort-type="number" |Possible victims
!Status
!Notes
!Ref
|-
|Richman Makhwenkwe
|Moffat Park Killer
|2005 - 2006
|6
|7
|Sentenced to life imprisonment
|He raped and strangled his girlfriend then buried her body in a shallow grave in an overgrown park in [[Johannesburg]], then went on to kill other victims.
|
|-
|Baninzi, Asande
|
|2001
|14
|18
|Sentenced to life imprisonment
|Together with accomplice Mthutuzeli Nombewu, robbed and murdered people in the Cape Flats area
|
|-
|Barber, Peter Roy
|The Laughing Killer
|1973–1979
|3
|4
|Executed in 1980
|English immigrant who murdered his mistresses and a 12-year-old girl in Pinetown after arguments
|
|-
|Basson, Pierre
|The Insurance Killer
|1903–1906
|9
|9+
|Committed suicide to avoid apprehension
|Murdered people in Claremont, Cape Town so he could get their life insurance; South Africa's first recorded serial killer
|
|-
|Brown, John Frank
|The Cross Dressing Killer(s)
|1993–1995
|5
|5
|Sentenced to life imprisonment
|Together with accomplice and lover Jacques Coetzee murdered other gay men around [[Johannesburg]]
|
|-
|Brandt, Brydon
|
|1989–1997
|4
|5
|Sentenced to life imprisonment
|Murdered prostitutes and his roommates in the Eastern Cape
|
|-
|Burger, Cornelius
|
|1936–1937
|5
|5
|Died in a psychiatric facility
|Murdered prostitutes as revenge for contracting a venereal disease
|
|-
|Coetzee, Jacques
|The Cross Dressing Killer(s)
|1993–1995
|5
|5
|Committed suicide in custody
|Together with accomplice and lover John Frank Brown murdered other gay men around [[Johannesburg]]
|
|-
|Duma, Sibusiso
|
|2007
|7
|7
|Sentenced to life imprisonment
|Killed various people around Pietermaritzburg during robberies
|
|-
|Kgabi, John Phuko
|The Ritual Killer
|1974–1978
|6
|14
|Executed in 1980
|Former police officer who garroted and mutilated young girls in Atteridgeville and [[Limpopo]]
|
|-
|Lineveldt, Gamal
|The Cape Flats Murderer
|1940
|4
|4
|Executed in 1941
|Responsible for the "Cape Flats Murders"; bludgeoned to death white women around the Cape Flats area
|
|-
|Maake, Cedric
|The Wemmer Pan Killer
|1996–1997
|27
|27+
|Sentenced to life imprisonment
|Serial rapist who murdered victims in the Wemmer Pan area
|
|-
|Mabhayi, Bulelani
|The Monster of Tholeni
|2007–2012
|20
|20
|Sentenced to life imprisonment
|House intruder who murdered women and children in the village of Tholeni
|
|-
|Majola, Simon
|The Bruma Lake Killer(s)
|2000–2001
|8
|8+
|Sentenced to life imprisonment
|Together with accomplice Themba Nkosi, known as "The Bruma Lake Killers"; robbed and drowned men in Bruma Lake
|
|-
|Makamu, Fanuel
|The Mpumalanga Serial Rapist
|2000
|6
|6
|Sentenced to life imprisonment
|Together with accomplice Henry Maile, robbed, raped and murdered women around [[Isifunda seMpumalanga|Mpumalanga]]
|
|-
|Maketta, Jimmy
|The Jesus Killer
|2005
|16
|16
|Sentenced to life imprisonment
|Murdered farm labourers in Philippi
|
|-
|Makgae, Andries
|
|2012–2013
|3
|4+
|Sentenced to life imprisonment
|Raped and murdered women around Onderstepoort; suspected in best friend's murder
|
|-
|Makhubela, Dumisani
|Lotto Gangster(s)
|2005
|7
|7
|Sentenced to life imprisonment
|Together with accomplice Johannes van Rooyen, robbed, raped and murdered people around Mpumalanga, including a family of four
|
|-
|Mashiane, Johannes
|The Beast of Atteridgeville
|1977–1989
|13
|13
|Committed suicide to avoid apprehension
|Murdered his girlfriend; after release, raped and strangled 12 young boys around Atteridgeville
|
|-
|de Melker, Daisy
|
|1923–1932
|3
|3
|Executed in 1932
|Poisoned two husbands and her son with strychnine for life insurance; South Africa's first convicted female serial killer
|
|-
|Mfeka, Samuel Bongani
|The Kranskop Killer
|1993–1996
|6
|6+
|Sentenced to life imprisonment
|Raped and strangled women around KwaZulu-Natal
|
|-
|Mogale, Jack
|The West-End Killer
|2008–2009
|16
|16
|Sentenced to life imprisonment
|Kidnapped, raped and murdered women in southern Johannesburg
|
|-
|Msomi, Elifasi
|The Axe Killer
|1953–1955
|15
|15
|Executed in 1956
|Murdered people while he was supposedly under the influence of a Tokoloshe
|
|-
|Mulaudzi, Mukosi Freddy
|The Limpopo Serial Killer
|1990–2006
|13
|13
|Sentenced to life imprisonment
|Murdered two people in 1990, then escaped from prison and resumed killing
|
|-
|Ncama, Nicholas Lungisa
|The East Cape Killer
|1997
|6
|6
|Sentenced to life imprisonment
|Raped and strangled women around Port Elizabeth
|
|-
|Ndlangamandla, Velaphi
|The Saloon Killer
|1998
|19
|19
|Sentenced to life imprisonment
|Robbed and murdered people during home invasions in Mpumalanga
|
|-
|Ndlovu, Rosemary
|
|2012–2018
|6
|6
|Sentenced to life imprisonment
|Former policewoman who murdered her ex-partner and relatives for life and funeral insurance policies
|
|-
|Ntsieni, Ndivhuwo
|The Univen serial killer
|2014
|5
|5
|Sentenced to life imprisonment
|Raped and murdered women and young girls in and around the University of Venda
|
|-
|Nyauza, Richard
|The Quarry Killer
|2002–2006
|18
|19
|Sentenced to life imprisonment
|Raped and murdered women after being infected with HIV, dumping their bodies in a quarry
|
|-
|Randitsheni, David
|The Modimolle Serial Killer
|2004–2008
|10
|10
|Committed suicide in prison
|Abducted, raped and murdered children in [[Modimolle]]
|
|-
|van Rooyen, Gert
|
|1988–1989
|6
|6+
|Committed suicide to avoid apprehension
|Pedophile who, together with accomplice and wife Joey Haarhoff, abducted, raped and murdered six teenage girls whose bodies have never been found
|
|-
|van Rooyen, Johannes
|Lotto Gangster(s)
|2005
|7
|7
|Sentenced to life imprisonment
|Together with accomplice Dumisani Makhubela, robbed, raped and murdered people around Mpumalanga, including a family of four
|
|-
|van Schoor, Louis
|The Apartheid Killer
|1986–1989
|9
|39+
|20 years; released in the 2003 and died a free man in 2024
|Former policeman and security guard who killed black South Africans during alleged crimes
|
|-
|Sedumedi, Khangayi
|The Century City Killer
|2011–2015
|4
|6
|Sentenced to life imprisonment
|Raped and murdered women around Century City and Kensington
|
|-
|Sidyno, Samuel
|The Capital Park Serial Killer
|1998–1999
|7
|7
|Sentenced to life imprisonment
|Strangled teenagers and women, then disposed of their bodies near the Pretoria Zoo
|
|-
|Sithole, Moses
|The ABC Killer
|1994–1995
|38
|76
|Sentenced to life imprisonment
|Raped and murdered women around Atteridgeville, [[IBoksburg|Boksburg]] and Cleveland
|
|-
|Stander, Riaan
|
|2001–2007
|3
|3
|Sentenced to life imprisonment
|Murdered two prostitutes in Port Elizabeth after being released from prison for running over a woman with his car
|
|-
|Sukude, Themba
|The Newcastle Serial Killer
|2004–2005
|4
|4
|Sentenced to life imprisonment
|Attacked couples around parks, raping the female and bludgeoning the male to death with rocks. He later switched to solely targeting men
|
|-
|Taki, Thozamile
|The Sugarcane Killer
|2007
|13
|13
|Sentenced to life imprisonment
|Robbed and murdered women around KwaZulu-Natal and Eastern Cape, dumping their bodies in sugarcane and tea plantations
|
|-
|Thwala, Sipho
|The Phoenix Strangler
|1996–1997
|16
|16+
|Sentenced to life imprisonment
|Raped and murdered women in sugarcane fields near Phoenix
|
|-
|Vilakazi, Themba
|The Railway Killer
|2005
|3
|5
|Sentenced to life imprisonment
|Murdered black males around Pretoria
|
|-
|Wilken, Stewart
|The Boetie Boer
|1990–1997
|10
|10+
|Sentenced to life imprisonment
|Raped and murdered prostitutes, young boys and his own daughter around Port Elizabeth
|
|-
|Williams, Tommy
|The City Serial Killer
|1987–2008
|3
|3
|Sentenced to life imprisonment
|Strangled three acquaintances in varying circumstances; South Africa's longest active serial offender
|
|-
|Xitavhudzi, Elias
|The Pangaman
|1953–1959
|16
|16
|Executed in 1960
|Murdered and mutilated white women around Atteridgeville
|
|-
|Zikode, Christopher Mhlengwa
|The Donnybrook Serial Killer
|1994–1995
|18
|18
|Sentenced to life imprisonment
|Necrophiliac house intruder who murdered people around Donnybrook, then had sex with the female victims' corpses
|
|}
== Ababulali abanengi abangaziwako ==
{| class="wikitable sortable"
! width="200px" |Isiteketiso
! width="100px" | Iminyaka yokusebenza
! data-sort-type="number" | Iinhlupheki eziqinisekisiweko
! data-sort-type="number" | Abangaba ziinhlupheki
! Iindawo lapho zisebenza khona
! Amanothi
! Ref
|-
| Umbulali wezifebe we-Cape Town
| 1992–1996
| 19
| 19
| I-Western Cape
| Iinfebe eziklinyiweko nezisebenzi zasekhaya e -Cape Town
|
|-
| Umbulali we-Fosaville
| 1999–2003
| 13
| 13
| KwaZulu-Natal
| Abafazi abathunjiweko, babotjhwa begodu baklinywa e- Newlands East
|
|-
| Umbulali we-Sleepy Hollow
| 1990s–2007
| 13
| 16+
| Kwa-Zulu Natal (kuqinisekisiwe)<br /><br /><br /><br /> I-Free State, e-Eastern Cape (kusolwa)
| Abafazi abadlwengulwako nabaklinyako, inengi labo abathengisa ucansi nabathengisa umzimba, basebenzisa amaphenti wabo
|
|}
[[Category:Sewula Afrika]]
[[Category:Afrika]]
tm6lojw3t79clf31twh29q2rhxvxlx0
Umhlahlandlelasakhiwo:Not around
10
1106
6533
6507
2026-05-18T12:09:35Z
NgamangaXhosa
1515
6533
wikitext
text/x-wiki
<big>'''''Kungenzeka bona umsebenzisi lo utjhiye i-Wikipedia'''. {{{1}}} akazange ahlele i-Wikipedia isikhathi eside. Njengomphumela, nanyana ngiziphi iimbawo ezenziwe lapha zingathola ipendulo. Nawufuna isizo, kungatlhogeka bona uye komunye umuntu.''</big>
<noinclude>{{documentation}}</noinclude>
qkqg67hmjfsbrvthutqnhpyoe9ygwqf
6587
6533
2026-05-19T05:55:30Z
NgamangaXhosa
1515
6587
wikitext
text/x-wiki
<big>'''''Kungenzeka bona umsebenzisi lo utjhiye i-Wikiphidiya'''. {{{1}}} akazange ahlele i-Wikipedia isikhathi eside. Njengomphumela, nanyana ngiziphi iimbawo ezenziwe lapha zingathola ipendulo. Nawufuna isizo, kungatlhogeka bona uye komunye umuntu.''</big>
<noinclude>{{documentation}}</noinclude>
oebwx6796xu6yjzcboogdr70hcx2zt8
6588
6587
2026-05-19T06:13:08Z
NgamangaXhosa
1515
6588
wikitext
text/x-wiki
<big>'''''Kungenzeka bona umsebenzisi lo utjhiye i-Wikiphidiya'''. {{{1}}} akazange ahlele i-Wikiphidiya isikhathi eside. Njengomphumela, nanyana ngiziphi iimbawo ezenziwe lapha zingathola ipendulo. Nawufuna isizo, kungatlhogeka bona uye komunye umuntu.''</big>
<noinclude>{{documentation}}</noinclude>
39hy4iuzv74n7y4aavt5989wsn41bxi
6589
6588
2026-05-19T06:15:50Z
NgamangaXhosa
1515
6589
wikitext
text/x-wiki
[[File:Decision making.svg|45px]] <big>'''''Kungenzeka bona umsebenzisi lo utjhiye i-Wikiphidiya'''.</big> {{{1}}} akazange ahlele i-Wikiphidiya isikhathi eside. Njengomphumela, nanyana ngiziphi iimbawo ezenziwe lapha zingathola ipendulo. Nawufuna isizo, kungatlhogeka bona uye komunye umuntu.''
<noinclude>{{documentation}}</noinclude>
bzm49jfmo7qoioy1q3a5g4aesbypev1
6593
6589
2026-05-19T06:19:30Z
NgamangaXhosa
1515
6593
wikitext
text/x-wiki
[[File:Decision making.svg|45px]] <big>'''''Kungenzeka bona umsebenzisi lo utjhiye i-Wikiphidiya'''.</big> {{{1}}} akazange ahlele i-Wikiphidiya isikhathi eside. Njengomphumela, nanyana ngiziphi iimbawo ezenziwe lapha zingathola ipendulo. Nawufuna isizo, kungatlhogeka bona uye komunye umuntu.''<noinclude>{{documentation}}</noinclude>
cm98rhvre9qql89jju2vwy1zezx2801
6594
6593
2026-05-19T06:19:46Z
NgamangaXhosa
1515
6594
wikitext
text/x-wiki
[[File:Decision making.svg|40px]] <big>'''''Kungenzeka bona umsebenzisi lo utjhiye i-Wikiphidiya'''.</big> {{{1}}} akazange ahlele i-Wikiphidiya isikhathi eside. Njengomphumela, nanyana ngiziphi iimbawo ezenziwe lapha zingathola ipendulo. Nawufuna isizo, kungatlhogeka bona uye komunye umuntu.''<noinclude>{{documentation}}</noinclude>
drhvy7tnud9uftb666vnhocyn12h6ec
6595
6594
2026-05-19T06:20:06Z
NgamangaXhosa
1515
6595
wikitext
text/x-wiki
[[File:Decision making.svg|45px]] <big>'''''Kungenzeka bona umsebenzisi lo utjhiye i-Wikiphidiya'''.</big> {{{1}}} akazange ahlele i-Wikiphidiya isikhathi eside. Njengomphumela, nanyana ngiziphi iimbawo ezenziwe lapha zingathola ipendulo. Nawufuna isizo, kungatlhogeka bona uye komunye umuntu.''<noinclude>{{documentation}}</noinclude>
cm98rhvre9qql89jju2vwy1zezx2801
6597
6595
2026-05-19T06:23:22Z
NgamangaXhosa
1515
6597
wikitext
text/x-wiki
[[File:Decision making.svg|40px]] <big>'''''Kungenzeka bona umsebenzisi lo utjhiye i-Wikiphidiya'''.</big> {{{1}}} akazange ahlele i-Wikiphidiya isikhathi eside. Njengomphumela, nanyana ngiziphi iimbawo ezenziwe lapha zingathola ipendulo. Nawufuna isizo, kungatlhogeka bona uye komunye umuntu.''<noinclude>{{documentation}}</noinclude>
drhvy7tnud9uftb666vnhocyn12h6ec
6606
6597
2026-05-19T06:35:18Z
NgamangaXhosa
1515
6606
wikitext
text/x-wiki
{{{{#ifeq:{{{spacetype|}}}|tmbox|tmbox|mbox}}
|image = [[File:Decision making.svg|50px]]
|text = '''Kungenzeka bona umsebenzisi lo utjhiye i-Wikiphidiya'''. {{#if:{{{2|}}}|{{{2}}}|<includeonly>{{BASEPAGENAME}}</includeonly><noinclude>''Example''</noinclude>}} akazange ahlele i-Wikiphidiya isikhathi eside. Njengomphumela, nanyana ngiziphi iimbawo ezenziwe lapha zingathola ipendulo. Nawufuna isizo, kungatlhogeka bona uye komunye umuntu.
}}<noinclude>
{{documentation}}
</noinclude>
buomvvgjq3wufh05917to5qblrsu4rw
6607
6606
2026-05-19T06:36:23Z
NgamangaXhosa
1515
6607
wikitext
text/x-wiki
{{{{#ifeq:{{{spacetype|}}}|tmbox|tmbox|mbox}}
|image = [[File:Decision making.svg|50px]]
|text = '''Kungenzeka bona umsebenzisi lo utjhiye i-Wikiphidiya'''. {{#if:{{{1|}}}|{{{1}}}|<includeonly>{{BASEPAGENAME}}</includeonly><noinclude>''Example''</noinclude>}} akazange ahlele i-Wikiphidiya isikhathi eside. Njengomphumela, nanyana ngiziphi iimbawo ezenziwe lapha zingathola ipendulo. Nawufuna isizo, kungatlhogeka bona uye komunye umuntu.
}}<noinclude>
{{documentation}}
</noinclude>
8iq8k74zt9l8w45mhq9uk2uqawb0kgu
Umhlahlandlelasakhiwo:Xmark
10
1113
6561
6518
2026-05-18T13:45:52Z
NgamangaXhosa
1515
6561
wikitext
text/x-wiki
[[{{ {{{|safesubst:}}}#switch:{{ {{{|safesubst:}}}lc:{{{color|{{{colour|}}}}}} }}
|red |rd |r =File:X mark.svg
|darkred |dkred |drd |dr =File:Dark red x.svg
|orange |or |o =File:Orange x.svg
|yellow |yel |y =File:Dark yellow x.svg
|black |blk |k =File:Black x.svg
|grey |gray |gry |gy =File:SemiTransBlack x.svg
<!--default--> |File:X mark.svg
}}|{{Str number/trim|{{ {{{|safesubst:}}}#if:{{{1|}}}|{{{1}}}|20}}}}px|link=|alt=☒|20px]]<span style="display:none">N</span><!--template:Xmark--><noinclude>
{{documentation}}
</noinclude>
a05jrzy1hd56hxsmhmpcj15prnxk20q
Umhlahlandlelasakhiwo:Table flip
10
1120
6527
2026-05-18T11:59:26Z
NgamangaXhosa
1515
Created page with "<span class="nowrap" role="img" aria-label="flipping table">(╯°□°)╯︵ ┻━┻</span><noinclude>{{documentation}} </noinclude>"
6527
wikitext
text/x-wiki
<span class="nowrap" role="img" aria-label="flipping table">(╯°□°)╯︵ ┻━┻</span><noinclude>{{documentation}}
</noinclude>
aisrqofzypuobmyddhulyh999eb21ya
Umhlahlandlelasakhiwo:Isikere
10
1121
6528
2026-05-18T12:01:44Z
NgamangaXhosa
1515
Created page with "[[File:Twemoji12 2702.svg|{{{size|30px}}}|alt=scissors]] '''{{{1|Ukugijima ngesikere kuyingozi khulu ku-Wikipedia!}}}'''<noinclude> {{documentation}} </noinclude>"
6528
wikitext
text/x-wiki
[[File:Twemoji12 2702.svg|{{{size|30px}}}|alt=scissors]] '''{{{1|Ukugijima ngesikere kuyingozi khulu ku-Wikipedia!}}}'''<noinclude>
{{documentation}}
</noinclude>
aifzm7scs43agmtlfaghfk7vbhpz6ke
Umhlahlandlelasakhiwo:Doge
10
1122
6529
2026-05-18T12:04:38Z
NgamangaXhosa
1515
Created page with "[[File:Doge.svg|20px|alt=|link=|doge]]<noinclude>{{documentation |content= {{humor}} Isifanekiso lesi sisetjenziselwa ukutjengisa isithombe seDoge. ==Ukusetjenziswa== Isifanekiso lesi asinawo amapharamitha. <syntaxhighlight lang="wikitext"> {{Doge}} </syntaxhighlight> }} </noinclude>"
6529
wikitext
text/x-wiki
[[File:Doge.svg|20px|alt=|link=|doge]]<noinclude>{{documentation
|content=
{{humor}}
Isifanekiso lesi sisetjenziselwa ukutjengisa isithombe seDoge.
==Ukusetjenziswa==
Isifanekiso lesi asinawo amapharamitha.
<syntaxhighlight lang="wikitext">
{{Doge}}
</syntaxhighlight>
}}
</noinclude>
1o9f64yrpsngf56rlyqr833d8ls86xg
6531
6529
2026-05-18T12:08:40Z
NgamangaXhosa
1515
6531
wikitext
text/x-wiki
[[File:Doge.svg|20px|alt=|link=|doge]]<noinclude>{{documentation
|content=
{{humor}}
Umhlahlandlelasakhiwo lesi sisetjenziselwa ukutjengisa isithombe seDoge.
==Ukusetjenziswa==
Isifanekiso lesi asinawo amapharamitha.
<syntaxhighlight lang="wikitext">
{{Doge}}
</syntaxhighlight>
}}
</noinclude>
n19kd4u9h9ics27vs0z35uep297b3qy
Umhlahlandlelasakhiwo:Humor
10
1123
6530
2026-05-18T12:07:20Z
NgamangaXhosa
1515
Created page with "<big>'''Ikhasi leli liqukethe izinto ezithathwa njengezihlekisako'''. Iinsetjenziswa ezinjalo akukafaneli zithathwe njengezingakaqakatheki.</big> <noinclude>{{documentation}}</noinclude>"
6530
wikitext
text/x-wiki
<big>'''Ikhasi leli liqukethe izinto ezithathwa njengezihlekisako'''. Iinsetjenziswa ezinjalo akukafaneli zithathwe njengezingakaqakatheki.</big>
<noinclude>{{documentation}}</noinclude>
4ieip8n43xruhv24zbnc1jojfetxwv8
6532
6530
2026-05-18T12:09:18Z
NgamangaXhosa
1515
6532
wikitext
text/x-wiki
<big>'''''Ikhasi leli liqukethe izinto ezithathwa njengezihlekisako'''. Iinsetjenziswa ezinjalo akukafaneli zithathwe njengezingakaqakatheki.''</big>
<noinclude>{{documentation}}</noinclude>
axofly2ml68th798xx7zezytuumycx8
Umsebenzisi:NgamangaXhosa
2
1124
6534
2026-05-18T12:11:52Z
NgamangaXhosa
1515
Created page with "Ngenze isizo elikhulu kuWikipedia yesiNdebele seSewula. {{doge}} {{N/A icon}}"
6534
wikitext
text/x-wiki
Ngenze isizo elikhulu kuWikipedia yesiNdebele seSewula. {{doge}} {{N/A icon}}
ewaumt7rh7sou89bof0tttzm6v3a9d6
6535
6534
2026-05-18T12:12:11Z
NgamangaXhosa
1515
6535
wikitext
text/x-wiki
Ngenze isizo elikhulu kuWikipedia yesiNdebele seSewula. {{shrug}} {{doge}} {{N/A icon}}
a08f7y3c68rwh9qk8jpxjt3zwnn3ngr
6575
6535
2026-05-19T05:34:32Z
NgamangaXhosa
1515
6575
wikitext
text/x-wiki
{{mail|NgamangaXhosa}}
Ngenze isizo elikhulu kuWikipedia yesiNdebele seSewula. {{shrug}} {{doge}} {{N/A icon}}
6ipjswxvl2rn1m21ea8stj3f75biwij
Umhlahlandlelasakhiwo:Facepalm
10
1125
6536
2026-05-18T12:17:06Z
NgamangaXhosa
1515
Created page with "{{{{{|safesubst:}}}#switch: {{{{{|safesubst:}}}lc:{{{1}}}}} | supreme | sfod=[[File:Facepalm3.svg|{{{size|20px}}}|alt=Isandlasobuso|class=skin-invert]] '''Isandlasobuso''' | #default=[[File:Facepalm3.svg|{{{size|15px}}}|alt=Isandlasobuso|class=skin-invert]] '''{{{1|Isandlasobuso}}} '''}}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude>"
6536
wikitext
text/x-wiki
{{{{{|safesubst:}}}#switch: {{{{{|safesubst:}}}lc:{{{1}}}}} | supreme | sfod=[[File:Facepalm3.svg|{{{size|20px}}}|alt=Isandlasobuso|class=skin-invert]] '''Isandlasobuso''' | #default=[[File:Facepalm3.svg|{{{size|15px}}}|alt=Isandlasobuso|class=skin-invert]] '''{{{1|Isandlasobuso}}} '''}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
9160661zpl1b35xtt3uethhngn4f6p7
Umsebenzisi asiqongelane:JayJaytutu
3
1126
6539
2026-05-18T12:21:40Z
NgamangaXhosa
1515
/* Ngibawa ungamotjhisi iWikipedia */ new section
6539
wikitext
text/x-wiki
== Ngibawa ungamotjhisi iWikipedia ==
Nawuragela phambili nokwenza njalo, ungavinjelwa mlawuli. Zoke iintjhuguluko zakho: {{Declined}} [[Umsebenzisi:NgamangaXhosa|NgamangaXhosa]] ([[Umsebenzisi asiqongelane:NgamangaXhosa|talk]]) 14:21, 18 Nkwenkwezi 2026 (SAST)
sx30vgmkv3rmnmbwszjngc5ravesysp
6540
6539
2026-05-18T12:24:30Z
NgamangaXhosa
1515
6540
wikitext
text/x-wiki
== Ngibawa ungamotjhisi iWikipedia ==
Nawuragela phambili nokwenza njalo, ungavinjelwa mlawuli. Zoke iintjhuguluko zakho: {{Declined}} kunye {{N/A icon}}. -- [[Umsebenzisi:NgamangaXhosa|NgamangaXhosa]] ([[Umsebenzisi asiqongelane:NgamangaXhosa|talk]]) 14:21, 18 Nkwenkwezi 2026 (SAST)
rcaarwpla2fwj483ljlrf78ycfkbgdk
Umhlahlandlelasakhiwo:Not done not likely
10
1127
6541
2026-05-18T13:12:42Z
NgamangaXhosa
1515
Created page with "'''Akukenziwa begodu akukafaneli bona kwenziwe'''<noinclude> {{documentation}} </noinclude>"
6541
wikitext
text/x-wiki
'''Akukenziwa begodu akukafaneli bona kwenziwe'''<noinclude>
{{documentation}}
</noinclude>
him5gafpjykf5yqce14qhe7m6bggayn
6562
6541
2026-05-18T13:46:48Z
NgamangaXhosa
1515
6562
wikitext
text/x-wiki
{{{{{|safesubst:}}}xmark|18}} '''{{{{{|safesubst:}}}ucfirst:{{{1|Akukenziwa begodu akukafaneli bona kwenziwe}}}}}'''<noinclude>
{{documentation}}
</noinclude>
kfmiqgk16hrl2n3kedate6zviyd3iy4
Umhlahlandlelasakhiwo:You've got mail
10
1128
6542
2026-05-18T13:17:15Z
NgamangaXhosa
1515
Created page with "<big>'''''Lotjha. Sibawa uhlole i-imeyili yakho; une-imeyela!''' Kungathatha imizuzu embalwa kusukela ngesikhathi i-imeyili ithunyelwa bona ivele ebhokisini lakho lokungenayo. Ungasusa isaziso lesi nanyana kunini ngokususa umhlahlandlelasakhiwo esithi ''{{tl|You've got mail}}.<noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUB-PAGE, THANKS --></noinclude>"
6542
wikitext
text/x-wiki
<big>'''''Lotjha. Sibawa uhlole i-imeyili yakho; une-imeyela!''' Kungathatha imizuzu embalwa kusukela ngesikhathi i-imeyili ithunyelwa bona ivele ebhokisini lakho lokungenayo. Ungasusa isaziso lesi nanyana kunini ngokususa umhlahlandlelasakhiwo esithi ''{{tl|You've got mail}}.<noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUB-PAGE, THANKS --></noinclude>
olw8dql9wboowm44gjglyoenbtfh6k3
6543
6542
2026-05-18T13:18:02Z
NgamangaXhosa
1515
6543
wikitext
text/x-wiki
[[file:Mail-message-new.svg|left|25px]] <big>'''''Lotjha. Sibawa uhlole i-imeyili yakho; une-imeyela!''' Kungathatha imizuzu embalwa kusukela ngesikhathi i-imeyili ithunyelwa bona ivele ebhokisini lakho lokungenayo. Ungasusa isaziso lesi nanyana kunini ngokususa umhlahlandlelasakhiwo esithi ''{{tl|You've got mail}}.<noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUB-PAGE, THANKS --></noinclude>
bsl430fwjluhnqcv3gujxmdlmokce83
6544
6543
2026-05-18T13:18:17Z
NgamangaXhosa
1515
6544
wikitext
text/x-wiki
[[file:Mail-message-new.svg|left|50px]] <big>'''''Lotjha. Sibawa uhlole i-imeyili yakho; une-imeyela!''' Kungathatha imizuzu embalwa kusukela ngesikhathi i-imeyili ithunyelwa bona ivele ebhokisini lakho lokungenayo. Ungasusa isaziso lesi nanyana kunini ngokususa umhlahlandlelasakhiwo esithi ''{{tl|You've got mail}}.<noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUB-PAGE, THANKS --></noinclude>
5mi919k6x57fol1omd6ijtl6kenpcw0
6547
6544
2026-05-18T13:22:03Z
NgamangaXhosa
1515
6547
wikitext
text/x-wiki
[[file:Mail-message-new.svg|left|50px]] <big>'''''Lotjha. Sibawa uhlole i-imeyili yakho; une-imeyela!''' Kungathatha imizuzu embalwa kusukela ngesikhathi i-imeyili ithunyelwa bona ivele ebhokisini lakho lokungenayo. Ungasusa isaziso lesi nanyana kunini ngokususa umhlahlandlelasakhiwo esithi ''{{tl|You've got mail}}.</big><noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUB-PAGE, THANKS --></noinclude>
rktv3ni7v0zr7dv9vzfono2sz1hc6wr
6548
6547
2026-05-18T13:22:31Z
NgamangaXhosa
1515
6548
wikitext
text/x-wiki
[[file:Mail-message-new.svg|left|50px]] <big>'''''Lotjha. Sibawa uhlole i-imeyili yakho; une-imeyela!'''</big> Kungathatha imizuzu embalwa kusukela ngesikhathi i-imeyili ithunyelwa bona ivele ebhokisini lakho lokungenayo. Ungasusa isaziso lesi nanyana kunini ngokususa umhlahlandlelasakhiwo esithi ''{{tl|You've got mail}}.<noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUB-PAGE, THANKS --></noinclude>
ortvwm8nvdx9lkabmqet66032dx65pr
6549
6548
2026-05-18T13:22:59Z
NgamangaXhosa
1515
6549
wikitext
text/x-wiki
[[file:Mail-message-new.svg|left|50px]] <big>
'''Lotjha. Sibawa uhlole i-imeyili yakho; une-imeyela!'''</big> Kungathatha imizuzu embalwa kusukela ngesikhathi i-imeyili ithunyelwa bona ivele ebhokisini lakho lokungenayo. Ungasusa isaziso lesi nanyana kunini ngokususa umhlahlandlelasakhiwo esithi {{tl|You've got mail}}.<noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUB-PAGE, THANKS --></noinclude>
1o95g2evxypkt2zh77x4xfw2zxzk20y
6551
6549
2026-05-18T13:24:51Z
NgamangaXhosa
1515
6551
wikitext
text/x-wiki
[[file:Mail-message-new.svg|left|50px]] <big>
'''Lotjha. Sibawa uhlole i-imeyili yakho; une-imeyela!'''</big> Kungathatha imizuzu embalwa kusukela ngesikhathi i-imeyili ithunyelwa bona ivele ebhokisini lakho lokungenayo. Ungasusa isaziso lesi nanyana kunini ngokususa umhlahlandlelasakhiwo esithi {{tl|You've got mail}} nofana {{tl|ygm}}.<noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUB-PAGE, THANKS --></noinclude>
kavkx5kh70b8tirzlccyegojugj2t1q
6552
6551
2026-05-18T13:25:14Z
NgamangaXhosa
1515
6552
wikitext
text/x-wiki
[[file:Mail-message-new.svg|left|45px]] <big>
'''Lotjha. Sibawa uhlole i-imeyili yakho; une-imeyela!'''</big> Kungathatha imizuzu embalwa kusukela ngesikhathi i-imeyili ithunyelwa bona ivele ebhokisini lakho lokungenayo. Ungasusa isaziso lesi nanyana kunini ngokususa umhlahlandlelasakhiwo esithi {{tl|You've got mail}} nofana {{tl|ygm}}.<noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUB-PAGE, THANKS --></noinclude>
7e5nkpw7jp8v88zj2niwgviegpubsm9
Umhlahlandlelasakhiwo:Tl
10
1129
6545
2026-05-18T13:20:00Z
NgamangaXhosa
1515
Created page with "<span class="nowrap">{{</span>[[Umhlahlandlelasakhiwo:{{{1}}}|{{{1}}}]]<span class="nowrap">}}</span><noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude>"
6545
wikitext
text/x-wiki
<span class="nowrap">{{</span>[[Umhlahlandlelasakhiwo:{{{1}}}|{{{1}}}]]<span class="nowrap">}}</span><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
426vuhh2ag394kwx7lcul6dlts5hw5v
Umsebenzisi asiqongelane:Nomsa Skosana
3
1130
6546
2026-05-18T13:21:32Z
NgamangaXhosa
1515
/* Une-imeyela! */ new section
6546
wikitext
text/x-wiki
== Une-imeyela! ==
{{You've got mail}} [[Umsebenzisi:NgamangaXhosa|NgamangaXhosa]] ([[Umsebenzisi asiqongelane:NgamangaXhosa|talk]]) 15:21, 18 Nkwenkwezi 2026 (SAST)
6ee1z159snrqc8r8mwdhwwqqp46saz9
Umhlahlandlelasakhiwo:Ygm
10
1131
6550
2026-05-18T13:23:29Z
NgamangaXhosa
1515
Redirected page to [[Umhlahlandlelasakhiwo:You've got mail]]
6550
wikitext
text/x-wiki
#REDIRECT [[Umhlahlandlelasakhiwo:You've got mail]]
lu4l9qfngamdfgn306eq5rjztf4ungh
Umhlahlandlelasakhiwo:You're welcome
10
1132
6553
2026-05-18T13:29:07Z
NgamangaXhosa
1515
Created page with "<b class="nowrap">[[File:Face-smile.svg|18px|alt=|link=]] Wamukelekile!<!--Umhlahlandlelasakhiwo:You're welcome--><noinclude> {{documentation}} </noinclude>"
6553
wikitext
text/x-wiki
<b class="nowrap">[[File:Face-smile.svg|18px|alt=|link=]] Wamukelekile!<!--Umhlahlandlelasakhiwo:You're welcome--><noinclude>
{{documentation}}
</noinclude>
0fcyy53lbsiwv3rz96hwp3fo5sucgzo
6554
6553
2026-05-18T13:29:31Z
NgamangaXhosa
1515
6554
wikitext
text/x-wiki
<b class="nowrap">[[File:Face-smile.svg|18px|alt=|link=]] Wamukelekile!</b><!--Umhlahlandlelasakhiwo:You're welcome--><noinclude>
{{documentation}}
</noinclude>
lqh5nhfq3jqs8mn06lqtk4ri1g3ranh
Umhlahlandlelasakhiwo:Thank you
10
1133
6555
2026-05-18T13:30:54Z
NgamangaXhosa
1515
Created page with "<span class="nowrap">[[File:Face-smile.svg|18px|link=]] '''Ngiyathokoza'''</span><!--Template:Thank you--><noinclude> {{documentation}} </noinclude>"
6555
wikitext
text/x-wiki
<span class="nowrap">[[File:Face-smile.svg|18px|link=]] '''Ngiyathokoza'''</span><!--Template:Thank you--><noinclude>
{{documentation}}
</noinclude>
39cqf9toqqvxea6hbgrmzeyfmtivvox
Umhlahlandlelasakhiwo:Stop
10
1134
6556
2026-05-18T13:33:21Z
NgamangaXhosa
1515
Created page with "[[File:Dialog-stop-hand.svg|{{Str number/trim|{{{1|30}}}}}px|Stop|alt=stop|link=|30px]]<noinclude> {{Documentation|content=Umhlahlandlelasakhiwo lesi silingana no: :<code><nowiki>[[File:Dialog-stop-hand.svg|{{Str number/trim|{{{1|30}}}}}px|Stop|alt=stop|link=|30px]]</nowiki></code> [[Category:Wikipedia-specific image insertion templates]] }} </noinclude>"
6556
wikitext
text/x-wiki
[[File:Dialog-stop-hand.svg|{{Str number/trim|{{{1|30}}}}}px|Stop|alt=stop|link=|30px]]<noinclude>
{{Documentation|content=Umhlahlandlelasakhiwo lesi silingana no:
:<code><nowiki>[[File:Dialog-stop-hand.svg|{{Str number/trim|{{{1|30}}}}}px|Stop|alt=stop|link=|30px]]</nowiki></code>
[[Category:Wikipedia-specific image insertion templates]]
}}
</noinclude>
rubci3vv7zawounilwlox7x3jvqplcv
Umhlahlandlelasakhiwo:Bulb
10
1135
6557
2026-05-18T13:35:14Z
NgamangaXhosa
1515
Created page with "[[File:Dialog-information on.svg|{{Str number/trim|{{{1|20}}}}}px|alt=Light bulb icon|link=|20px]]<span style="display:none">B</span><!--umhlahlandlelasakhiwo:bulb--><noinclude> {{documentation}} </noinclude>"
6557
wikitext
text/x-wiki
[[File:Dialog-information on.svg|{{Str number/trim|{{{1|20}}}}}px|alt=Light bulb icon|link=|20px]]<span style="display:none">B</span><!--umhlahlandlelasakhiwo:bulb--><noinclude>
{{documentation}}
</noinclude>
8ofq6cej28xtbevszdz0yag2egvn271
Umhlahlandlelasakhiwo:Warnsign
10
1136
6558
2026-05-18T13:37:42Z
NgamangaXhosa
1515
Created page with "{{Respond|Ambox warning pn.svg|{{{1|Ukukhalima}}}}}<noinclude> {{Documentation}} <!--Please add this template's categories to the /doc subpage, not here - thanks!--> </noinclude>"
6558
wikitext
text/x-wiki
{{Respond|Ambox warning pn.svg|{{{1|Ukukhalima}}}}}<noinclude>
{{Documentation}}
<!--Please add this template's categories to the /doc subpage, not here - thanks!-->
</noinclude>
jy91y0i43shs4u08b9j2x3xahl8c10r
Umhlahlandlelasakhiwo:AfD changed
10
1137
6559
2026-05-18T13:40:36Z
NgamangaXhosa
1515
Created page with "* <small>'''Tjheja:''' I-imitlolo le '''itjhuguluke khulu''' solo yaphakanyiswa yi-AfD. ~<includeonly>~</includeonly>~~</small> <noinclude>{{Documentation}}</noinclude>"
6559
wikitext
text/x-wiki
* <small>'''Tjheja:''' I-imitlolo le '''itjhuguluke khulu''' solo yaphakanyiswa yi-AfD. ~<includeonly>~</includeonly>~~</small>
<noinclude>{{Documentation}}</noinclude>
3nqklm1wvjy8uhmn8tkufqvaybrsgdk
6560
6559
2026-05-18T13:42:01Z
NgamangaXhosa
1515
6560
wikitext
text/x-wiki
* <small>'''Tjheja:''' Iimitlolo le '''itjhuguluke khulu''' solo yaphakanyiswa yi-AfD. ~<includeonly>~</includeonly>~~</small>
<noinclude>{{Documentation}}</noinclude>
p3o5k1swafz0sxaokszieu77trmsw0g
Umhlahlandlelasakhiwo:Mail
10
1138
6565
2026-05-19T02:58:14Z
NgamangaXhosa
1515
Created page with "<includeonly>{{#if: {{NAMESPACE}} |[[File:Nuvola apps email.svg|16px|link=]] {{#if: {{{1|}}} | [[ Special:EmailUser/{{{1}}} | {{#if: {{{2|}}} | {{{2}}} | iposi {{{1}}} }} ]] | {{#switch: {{NAMESPACE}} | User | User talk = [[ Special:EmailUser/{{#titleparts: {{PAGENAME}}|1}} | ngithumelele iposi ]] | #default = {{error|Please specify user's name as first parameter.}} }} }} | {{error|Mail template not usable in article space!}} }}</incl..."
6565
wikitext
text/x-wiki
<includeonly>{{#if: {{NAMESPACE}}
|[[File:Nuvola apps email.svg|16px|link=]] {{#if: {{{1|}}}
| [[ Special:EmailUser/{{{1}}} | {{#if: {{{2|}}} | {{{2}}} | iposi {{{1}}} }} ]]
| {{#switch: {{NAMESPACE}}
| User
| User talk = [[ Special:EmailUser/{{#titleparts: {{PAGENAME}}|1}} | ngithumelele iposi ]]
| #default = {{error|Please specify user's name as first parameter.}}
}}
}}
| {{error|Mail template not usable in article space!}}
}}</includeonly><noinclude>{{mail|Example|iposi Example}}{{documentation}}</noinclude>
l7ngfrqbxi4fljixqb0lt4xbr6mjyg0
Umhlahlandlelasakhiwo:Error
10
1139
6566
2026-05-19T02:59:20Z
NgamangaXhosa
1515
Created page with "{{#invoke:Error|error|{{{message|{{{1}}}}}}|tag={{{tag|}}}}}<noinclude> {{documentation}} </noinclude>"
6566
wikitext
text/x-wiki
{{#invoke:Error|error|{{{message|{{{1}}}}}}|tag={{{tag|}}}}}<noinclude>
{{documentation}}
</noinclude>
axsripqkyjus55mon24y6efvuedy0d2
Module:Error
828
1140
6567
2026-05-19T02:59:49Z
NgamangaXhosa
1515
Created page with "-- This module implements {{error}}. local p = {} function p._error(args) local tag = mw.ustring.lower(tostring(args.tag)) -- Work out what html tag we should use. if not (tag == 'p' or tag == 'span' or tag == 'div') then tag = 'strong' end -- Generate the html. return tostring(mw.html.create(tag) :addClass('error') :cssText(args.style) :wikitext(tostring(args.message or args[1] or error('no message specified',..."
6567
Scribunto
text/plain
-- This module implements {{error}}.
local p = {}
function p._error(args)
local tag = mw.ustring.lower(tostring(args.tag))
-- Work out what html tag we should use.
if not (tag == 'p' or tag == 'span' or tag == 'div') then
tag = 'strong'
end
-- Generate the html.
return tostring(mw.html.create(tag)
:addClass('error')
:cssText(args.style)
:wikitext(tostring(args.message or args[1] or error('no message specified', 2)))
)
end
function p.error(frame)
local args
if type(frame.args) == 'table' then
-- We're being called via #invoke. The args are passed through to the module
-- from the template page, so use the args that were passed into the template.
args = frame.args
else
-- We're being called from another module or from the debug console, so assume
-- the args are passed in directly.
args = frame
end
-- if the message parameter is present but blank, change it to nil so that Lua will
-- consider it false.
if args.message == "" then
args.message = nil
end
return p._error(args)
end
return p
p2nz3ttxcounymhrrhzzv162xd74myk
Umhlahlandlelasakhiwo:Helped
10
1141
6568
2026-05-19T03:02:52Z
NgamangaXhosa
1515
Created page with "<span class="nowrap">[[File:Yes check.svg|20px|link=|alt=]] '''{{{1|Kusiziwe}}}'''</span><!--template:helped--><noinclude>{{documentation|content= [[Category:Image with comment templates]] }}</noinclude>"
6568
wikitext
text/x-wiki
<span class="nowrap">[[File:Yes check.svg|20px|link=|alt=]] '''{{{1|Kusiziwe}}}'''</span><!--template:helped--><noinclude>{{documentation|content=
[[Category:Image with comment templates]]
}}</noinclude>
jhzbz1vq2cmocnh99o03w4hqv1wkmqm
Umhlahlandlelasakhiwo:Blockedtaggedclosing
10
1142
6569
2026-05-19T03:06:30Z
NgamangaXhosa
1515
Created page with "{{Respond|bluecheck|{{{1|Ivinjelwe begodu ithegiwe. Ukuvala.}}}}}<noinclude>{{documentation|content= [[Category:Image with comment templates|{{PAGENAME}}]] [[Category:SPI templates]]}} </noinclude>"
6569
wikitext
text/x-wiki
{{Respond|bluecheck|{{{1|Ivinjelwe begodu ithegiwe. Ukuvala.}}}}}<noinclude>{{documentation|content=
[[Category:Image with comment templates|{{PAGENAME}}]]
[[Category:SPI templates]]}}
</noinclude>
og3nmvb8i70o3hv1oxggix5ag82wqoy
Umhlahlandlelasakhiwo:Agree
10
1143
6570
2026-05-19T03:08:13Z
NgamangaXhosa
1515
Created page with "<span class="nowrap">[[File:Symbol confirmed.svg|20px|link=|alt=]] '''{{{1|Ukuvuma}}}'''</span><noinclude> {{Documentation}} <!--Categories go on the /doc subpage --> </noinclude>"
6570
wikitext
text/x-wiki
<span class="nowrap">[[File:Symbol confirmed.svg|20px|link=|alt=]] '''{{{1|Ukuvuma}}}'''</span><noinclude>
{{Documentation}}
<!--Categories go on the /doc subpage -->
</noinclude>
jxa1zj6yavwwslvas7fj0qt7ueukeak
Umhlahlandlelasakhiwo:Location map
10
1144
6571
2026-05-19T03:09:10Z
NgamangaXhosa
1515
Created page with "<includeonly>{{#invoke:Location map|main}}</includeonly><noinclude>{{documentation}}</noinclude>"
6571
wikitext
text/x-wiki
<includeonly>{{#invoke:Location map|main}}</includeonly><noinclude>{{documentation}}</noinclude>
dg6vj3epjyfwx0m7tx62smhp6gs0y2u
Module:Location map
828
1145
6572
2026-05-19T03:10:01Z
NgamangaXhosa
1515
Created page with "require('strict') local p = {} local getArgs = require('Module:Arguments').getArgs local function round(n, decimals) local pow = 10^(decimals or 0) return math.floor(n * pow + 0.5) / pow end function p.getMapParams(map, frame) if not map then error('The name of the location map definition to use must be specified', 2) end local moduletitle = mw.title.new('Module:Location map/data/' .. map) if not moduletitle then error(string.format('%q is not a valid name..."
6572
Scribunto
text/plain
require('strict')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local function round(n, decimals)
local pow = 10^(decimals or 0)
return math.floor(n * pow + 0.5) / pow
end
function p.getMapParams(map, frame)
if not map then
error('The name of the location map definition to use must be specified', 2)
end
local moduletitle = mw.title.new('Module:Location map/data/' .. map)
if not moduletitle then
error(string.format('%q is not a valid name for a location map definition', map), 2)
elseif moduletitle.exists then
local mapData = mw.loadData('Module:Location map/data/' .. map)
return function(name, params)
if name == nil then
return 'Module:Location map/data/' .. map
elseif mapData[name] == nil then
return ''
elseif params then
return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain()
else
return mapData[name]
end
end
else
error('Unable to find the specified location map definition: "Module:Location map/data/' .. map .. '" does not exist', 2)
end
end
function p.data(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local params = {}
for k,v in ipairs(args) do
if k > 2 then
params[k-2] = v
end
end
return map(args[2], #params ~= 0 and params)
end
local hemisphereMultipliers = {
longitude = { W = -1, w = -1, E = 1, e = 1 },
latitude = { S = -1, s = -1, N = 1, n = 1 }
}
local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction)
if decimal then
if degrees then
error('Decimal and DMS degrees cannot both be provided for ' .. direction, 2)
elseif minutes then
error('Minutes can only be provided with DMS degrees for ' .. direction, 2)
elseif seconds then
error('Seconds can only be provided with DMS degrees for ' .. direction, 2)
elseif hemisphere then
error('A hemisphere can only be provided with DMS degrees for ' .. direction, 2)
end
local retval = tonumber(decimal)
if retval then
return retval
end
error('The value "' .. decimal .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not minutes then
error('Seconds were provided for ' .. direction .. ' without minutes also being provided', 2)
elseif not degrees then
if minutes then
error('Minutes were provided for ' .. direction .. ' without degrees also being provided', 2)
elseif hemisphere then
error('A hemisphere was provided for ' .. direction .. ' without degrees also being provided', 2)
end
return nil
end
decimal = tonumber(degrees)
if not decimal then
error('The degree value "' .. degrees .. '" provided for ' .. direction .. ' is not valid', 2)
elseif minutes and not tonumber(minutes) then
error('The minute value "' .. minutes .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not tonumber(seconds) then
error('The second value "' .. seconds .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600
if hemisphere then
local multiplier = hemisphereMultipliers[direction][hemisphere]
if not multiplier then
error('The hemisphere "' .. hemisphere .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal * multiplier
end
return decimal
end
-- Finds a parameter in a transclusion of {{Coord}}.
local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign
local lat, long = mw.ustring.match(coord,'<span class="p%-latitude latitude">([^<]+)</span><span class="p%-longitude longitude">([^<]+)</span>')
if lat then
return tonumber(para == 'longitude' and long or lat)
end
local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]')
if para == 'longitude' then result = {result[3], result[4]} end
if not tonumber(result[1]) or not result[2] then
mw.log('Malformed coordinates value')
mw.logObject(para, 'para')
mw.logObject(coord, 'coord')
return error('Malformed coordinates value', 2)
end
return tonumber(result[1]) * hemisphereMultipliers[para][result[2]]
end
-- effectively make removeBlanks false for caption and maplink, and true for everything else
-- if useWikidata is present but blank, convert it to false instead of nil
-- p.top, p.bottom, and their callers need to use this
function p.valueFunc(key, value)
if value then
value = mw.text.trim(value)
end
if value ~= '' or key == 'caption' or key == 'maplink' then
return value
elseif key == 'useWikidata' then
return false
end
end
local function getContainerImage(args, map)
if args.AlternativeMap then
return args.AlternativeMap
elseif args.relief then
local digits = mw.ustring.match(args.relief,'^[1-9][0-9]?$') or '1' -- image1 to image99
if map('image' .. digits) ~= '' then
return map('image' .. digits)
end
end
return map('image')
end
function p.top(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local width
local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*"))
if not args.width then
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
elseif mw.ustring.sub(args.width, -2) == 'px' then
width = mw.ustring.sub(args.width, 1, -3)
else
width = args.width
end
local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
if width_as_number == 0 then
-- check to see if width is junk. If it is, then use default calculation
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
end
if args.max_width ~= "" and args.max_width ~= nil then
-- check to see if width bigger than max_width
local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0;
if width_as_number>max_as_number and max_as_number>0 then
width = args.max_width;
end
end
local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Module:Location map/styles.css'}}
if args.float == 'center' then
retval = retval .. '<div class="center">'
end
if args.caption and args.caption ~= '' and args.border ~= 'infobox' then
retval = retval .. '<div class="locmap noresize thumb '
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'tleft'
elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then
retval = retval .. 'tnone'
else
retval = retval .. 'tright'
end
retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px'
if args.border == 'none' then
retval = retval .. ';border:none'
elseif args.border then
retval = retval .. ';border-color:' .. args.border
end
retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">')
else
retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;'
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'float:left;clear:left'
elseif args.float == '"center"' or args.float == 'center' then
retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto'
elseif args.float == '"none"' or args.float == 'none' then
retval = retval .. 'float:none;clear:none'
else
retval = retval .. 'float:right;clear:right'
end
retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">'
end
local image = getContainerImage(args, map)
local currentTitle = mw.title.getCurrentTitle()
retval = string.format(
'%s[[File:%s|%spx|%s%s|class=notpageimage noviewer]]',
retval,
image,
width,
args.alt or ((args.label or currentTitle.text) .. ' is located in ' .. map('name')),
args.maplink and ('|link=' .. args.maplink) or ''
)
if args.caption and args.caption ~= '' then
if (currentTitle.namespace == 0) and mw.ustring.find(args.caption, '##') then
retval = retval .. '[[Category:Pages using location map with a double number sign in the caption]]'
end
end
if args.overlay_image then
return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px|class=notpageimage noviewer]]</div>'
else
return retval
end
end
function p.bottom(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local retval = '</div>'
local currentTitle = mw.title.getCurrentTitle()
if not args.caption or args.border == 'infobox' then
if args.border then
retval = retval .. '<div style="padding-top:0.2em">'
else
retval = retval .. '<div style="font-size:91%;padding-top:3px">'
end
retval = retval
.. (args.caption or (args.label or currentTitle.text) .. ' (' .. map('name') .. ')')
.. '</div>'
elseif args.caption ~= '' then
-- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image
retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '| ]]</div>' .. args.caption .. '</div>'
end
if args.switcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>'
elseif args.autoSwitcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">Show map of ' .. map('name') .. '</span>'
end
retval = retval .. '</div></div>'
if args.caption_undefined then
mw.log('Removed parameter caption_undefined used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with removed parameters|caption_undefined]]'
end
end
if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then
mw.log('Removed parameter used in map definition ' .. map())
if currentTitle.namespace == 0 then
local key = (map('skew') ~= '' and 'skew' or '') ..
(map('lat_skew') ~= '' and 'lat_skew' or '') ..
(map('crosses180') ~= '' and 'crosses180' or '') ..
(map('type') ~= '' and 'type' or '')
retval = retval .. '[[Category:Location maps with removed parameters|' .. key .. ' ]]'
end
end
if string.find(map('name'), '|', 1, true) then
mw.log('Pipe used in name of map definition ' .. map())
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with a name containing a pipe]]'
end
end
if args.float == 'center' then
retval = retval .. '</div>'
end
return retval
end
local function markOuterDiv(x, y, imageDiv, labelDiv, label_size)
return mw.html.create('div')
:addClass('od')
:addClass('notheme') -- T236137
:cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%;font-size:' .. label_size .. '%')
:node(imageDiv)
:node(labelDiv)
end
local function markImageDiv(mark, marksize, label, link, alt, title)
local builder = mw.html.create('div')
:addClass('id')
:cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px')
:attr('title', title)
if marksize ~= 0 then
builder:wikitext(string.format(
'[[File:%s|%dx%dpx|%s|link=%s%s|class=notpageimage noviewer]]',
mark,
marksize,
marksize,
label,
link,
alt and ('|alt=' .. alt) or ''
))
end
return builder
end
local function markLabelDiv(label, label_size, label_width, position, background, x, marksize)
if tonumber(label_size) == 0 then
return mw.html.create('div'):addClass('l0'):wikitext(label)
end
local builder = mw.html.create('div')
:cssText('width:' .. label_width .. 'em')
local distance = round(marksize / 2 + 1)
if position == 'top' then -- specified top
builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'bottom' then -- specified bottom
builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left
builder:addClass('pl'):cssText('right:' .. distance .. 'px')
else -- specified right or autodetected to right
builder:addClass('pr'):cssText('left:' .. distance .. 'px')
end
builder = builder:tag('div')
:wikitext(label)
if background then
builder:cssText('background-color:' .. background)
end
return builder:done()
end
local function getX(longitude, left, right)
local width = (right - left) % 360
if width == 0 then
width = 360
end
local distanceFromLeft = (longitude - left) % 360
-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter
if distanceFromLeft - width / 2 >= 180 then
distanceFromLeft = distanceFromLeft - 360
end
return 100 * distanceFromLeft / width
end
local function getY(latitude, top, bottom)
return 100 * (top - latitude) / (top - bottom)
end
function p.mark(frame, args, map)
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map~'})
end
local mapnames = {}
if not map then
if args[1] then
map = {}
for mapname in mw.text.gsplit(args[1], '#', true) do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
mapnames[#mapnames + 1] = mapname
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
args[1] = 'World'
end
end
if type(map) == 'table' then
local outputs = {}
local oldargs = args[1]
for k,v in ipairs(map) do
args[1] = mapnames[k]
outputs[k] = tostring(p.mark(frame, args, v))
end
args[1] = oldargs
return table.concat(outputs, '#PlaceList#') .. '#PlaceList#'
end
local x, y, longitude, latitude
longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude')
latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude')
if args.excludefrom then
-- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps)
for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do
-- Check if this map is excluded. If so, return an empty string.
if args[1] == exclusionmap then
return ''
end
end
end
local builder = mw.html.create()
local currentTitle = mw.title.getCurrentTitle()
if args.coordinates then
-- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]]
-- if longitude or latitude then
-- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided')
-- end
longitude = coord2text('longitude', args.coordinates)
latitude = coord2text('latitude', args.coordinates)
elseif not longitude and not latitude and args.useWikidata then
-- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't.
local entity = mw.wikibase.getEntity()
if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then
local value = entity.claims.P625[1].mainsnak.datavalue.value
longitude, latitude = value.longitude, value.latitude
end
if args.link and (currentTitle.namespace == 0) then
builder:wikitext('[[Category:Location maps with linked markers with coordinates from Wikidata]]')
end
end
if not longitude then
error('No value was provided for longitude')
elseif not latitude then
error('No value was provided for latitude')
end
if currentTitle.namespace > 0 then
if (not args.lon_deg) ~= (not args.lat_deg) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Degrees]]')
elseif (not args.lon_min) ~= (not args.lat_min) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Minutes]]')
elseif (not args.lon_sec) ~= (not args.lat_sec) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Seconds]]')
elseif (not args.lon_dir) ~= (not args.lat_dir) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Hemisphere]]')
elseif (not args.long) ~= (not args.lat) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Decimal]]')
end
end
if ((tonumber(args.lat_deg) or 0) < 0) and ((tonumber(args.lat_min) or 0) ~= 0 or (tonumber(args.lat_sec) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if ((tonumber(args.lon_deg) or 0) < 0) and ((tonumber(args.lon_min) or 0) ~= 0 or (tonumber(args.lon_sec) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lat_min) or 0) < 0) or ((tonumber(args.lat_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lon_min) or 0) < 0) or ((tonumber(args.lon_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if args.skew or args.lon_shift or args.markhigh then
mw.log('Removed parameter used in invocation.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = (args.skew and 'skew' or '') ..
(args.lon_shift and 'lon_shift' or '') ..
(args.markhigh and 'markhigh' or '')
builder:wikitext('[[Category:Location maps with removed parameters|' .. key ..' ]]')
end
end
if map('x') ~= '' then
x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude })))
else
x = tonumber(getX(longitude, map('left'), map('right')))
end
if map('y') ~= '' then
y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude })))
else
y = tonumber(getY(latitude, map('top'), map('bottom')))
end
if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then
mw.log('Mark placed outside map boundaries without outside flag set. x = ' .. x .. ', y = ' .. y)
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = currentTitle.prefixedText
builder:wikitext('[[Category:Location maps with marks outside map and outside parameter not set|' .. key .. ' ]]')
end
end
local mark = args.mark or map('mark')
if mark == '' then
mark = 'Red pog.svg'
end
local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8
local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2])
local label_size = args.label_size or 91
local labelDiv
if args.label and args.position ~= 'none' then
labelDiv = markLabelDiv(args.label, label_size, args.label_width or 6, args.position, args.background, x, marksize)
end
return builder:node(markOuterDiv(x, y, imageDiv, labelDiv, label_size))
end
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.main(frame, args, map)
local caption_list = {}
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc})
end
if args.useWikidata == nil then
args.useWikidata = true
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
end
if args['caption'] then
if args['caption'] == "" then
while #caption_list < #map do
caption_list[#caption_list + 1] = args['caption']
end
else
for caption in mw.text.gsplit(args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
end
end
if type(map) == 'table' then
local altmaps = switcherSeparate(args.AlternativeMap)
if #altmaps > #map then
error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map))
end
if #caption_list > #map then
error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
args.caption = caption_list[k]
outputs[k] = p.main(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map)
end
end
return p
07icxbtq9eg84dyuhbuyo1sfebx4tq4
Umhlahlandlelasakhiwo:Main
10
1146
6573
2026-05-19T03:12:41Z
NgamangaXhosa
1515
Created page with "''Umtlolo omkhulu: [[{{{1}}}]]'' <noinclude>{{documentation}}</noinclude>"
6573
wikitext
text/x-wiki
''Umtlolo omkhulu: [[{{{1}}}]]''
<noinclude>{{documentation}}</noinclude>
44gfwr2qifffu2wkrjhdkcq6392wqwh
Umhlahlandlelasakhiwo:Die
10
1147
6574
2026-05-19T03:17:50Z
NgamangaXhosa
1515
Created page with "<span style="margin:0em 0.1em">[[File:{{#switch: {{{1|}}}{{{color|}}} |2red=Kismet-Deuce.png |3green=Kismet-Trey.png |4green=Kismet-Four.png |5red=Kismet-Five.png |3red=Dice-3.png |6red=Dice-6.png |#default={{#ifeq:{{{1}}}|0 |Dice-0.png |{{#ifeq:{{{color|}}}|blue |DFace {{{1}}}B |Die face {{{1}}}{{#ifeq: {{{color|}}} | red |r|b}} }}.svg }} }}|frameless|upright=0.13|alt={{{1}}}]]</span>{{#if: {{{2|}}} |{{{separator|}}}<span style="m..."
6574
wikitext
text/x-wiki
<span style="margin:0em 0.1em">[[File:{{#switch: {{{1|}}}{{{color|}}}
|2red=Kismet-Deuce.png
|3green=Kismet-Trey.png
|4green=Kismet-Four.png
|5red=Kismet-Five.png
|3red=Dice-3.png
|6red=Dice-6.png
|#default={{#ifeq:{{{1}}}|0
|Dice-0.png
|{{#ifeq:{{{color|}}}|blue
|DFace {{{1}}}B
|Die face {{{1}}}{{#ifeq: {{{color|}}} | red |r|b}}
}}.svg
}}
}}|frameless|upright=0.13|alt={{{1}}}]]</span>{{#if: {{{2|}}}
|{{{separator|}}}<span style="margin:0em 0.1em">[[File:{{#switch: {{{2|}}}{{{color|}}}
|2red=Kismet-Deuce.png
|3green=Kismet-Trey.png
|4green=Kismet-Four.png
|5red=Kismet-Five.png
|3red=Dice-3.png
|6red=Dice-6.png
|#default={{#ifeq:{{{2}}}|0
|Dice-0.png
|{{#ifeq:{{{color|}}}|blue
|DFace {{{2}}}B
|Die face {{{2}}}{{#ifeq: {{{color|}}} | red |r|b}}
}}.svg
}}
}}|frameless|upright=0.13|alt={{{2}}}]]</span>
|}}{{#if: {{{3|}}}
|{{{separator|}}}<span style="margin:0em 0.1em">[[File:{{#switch: {{{3|}}}{{{color|}}}
|2red=Kismet-Deuce.png
|3green=Kismet-Trey.png
|4green=Kismet-Four.png
|5red=Kismet-Five.png
|3red=Dice-3.png
|6red=Dice-6.png
|#default={{#ifeq:{{{3}}}|0
|Dice-0.png
|{{#ifeq:{{{color|}}}|blue
|DFace {{{3}}}B
|Die face {{{3}}}{{#ifeq: {{{color|}}} | red |r|b}}
}}.svg
}}
}}|frameless|upright=0.13|alt={{{3}}}]]</span>
|}}{{#if: {{{4|}}}
|{{{separator|}}}<span style="margin:0em 0.1em">[[File:{{#switch: {{{4|}}}{{{color|}}}
|2red=Kismet-Deuce.png
|3green=Kismet-Trey.png
|4green=Kismet-Four.png
|5red=Kismet-Five.png
|3red=Dice-3.png
|6red=Dice-6.png
|#default={{#ifeq:{{{4}}}|0
|Dice-0.png
|{{#ifeq:{{{color|}}}|blue
|DFace {{{4}}}B
|Die face {{{4}}}{{#ifeq: {{{color|}}} | red |r|b}}
}}.svg
}}
}}|frameless|upright=0.13|alt={{{4}}}]]</span>
|}}{{#if: {{{5|}}}
|{{{separator|}}}<span style="margin:0em 0.1em">[[File:{{#switch: {{{5|}}}{{{color|}}}
|2red=Kismet-Deuce.png
|3green=Kismet-Trey.png
|4green=Kismet-Four.png
|5red=Kismet-Five.png
|3red=Dice-3.png
|6red=Dice-6.png
|#default={{#ifeq:{{{5}}}|0
|Dice-0.png
|{{#ifeq:{{{color|}}}|blue
|DFace {{{5}}}B
|Die face {{{5}}}{{#ifeq: {{{color|}}} | red |r|b}}
}}.svg
}}
}}|frameless|upright=0.13|alt={{{5}}}]]</span>
|}}{{#if: {{{6|}}}
|{{{separator|}}}<span style="margin:0em 0.1em">[[File:{{#switch: {{{6|}}}{{{color|}}}
|2red=Kismet-Deuce.png
|3green=Kismet-Trey.png
|4green=Kismet-Four.png
|5red=Kismet-Five.png
|3red=Dice-3.png
|6red=Dice-6.png
|#default={{#ifeq:{{{6}}}|0
|Dice-0.png
|{{#ifeq:{{{color|}}}|blue
|DFace {{{6}}}B
|Die face {{{6}}}{{#ifeq: {{{color|}}} | red |r|b}}
}}.svg
}}
}}|frameless|upright=0.13|alt={{{6}}}]]</span>
|}}<noinclude>
{{Documentation}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
9gsy7iq9brl9y1v2iz2drcois6edfn1
Wikiphidiya:Iimbawo zokuqondisa kabutjha
4
1148
6576
2026-05-19T05:41:13Z
NgamangaXhosa
1515
Created page with "Ikhasi leli liqukethe iimbawo '''zokuqondisa kabutjha''' okutjha okwenziwe ngendlela ye-Athikili yokuDala. Nanyana yini engasi isibawo sokuqondisa kabutjha izokulahlwa ngokuzenzakalelayo nofana isuswe. Yenza iimbawo ngokusebenzisa indlela le: <code><nowiki>== Redirect request: [[...]] ==</nowiki> <nowiki>*Target of redirect: [[...]]</nowiki> <nowiki>*Reason: ...</nowiki> <nowiki>*Source (if applicable): ...</nowiki> <nowiki>~~~~</nowiki></code> ----"
6576
wikitext
text/x-wiki
Ikhasi leli liqukethe iimbawo '''zokuqondisa kabutjha''' okutjha okwenziwe ngendlela ye-Athikili yokuDala. Nanyana yini engasi isibawo sokuqondisa kabutjha izokulahlwa ngokuzenzakalelayo nofana isuswe.
Yenza iimbawo ngokusebenzisa indlela le:
<code><nowiki>== Redirect request: [[...]] ==</nowiki>
<nowiki>*Target of redirect: [[...]]</nowiki>
<nowiki>*Reason: ...</nowiki>
<nowiki>*Source (if applicable): ...</nowiki>
<nowiki>~~~~</nowiki></code>
----
ci9kiimxpwe00v294tm0zt207o05bdd
6577
6576
2026-05-19T05:42:10Z
NgamangaXhosa
1515
6577
wikitext
text/x-wiki
Ikhasi leli liqukethe iimbawo '''zokuqondisa kabutjha''' okutjha okwenziwe ngendlela ye-[[Wikiphidiya:Athikili yokuDala|Athikili yokuDala]]. Nanyana yini engasi isibawo sokuqondisa kabutjha izokulahlwa ngokuzenzakalelayo nofana isuswe.
Yenza iimbawo ngokusebenzisa indlela le:
<code><nowiki>== Redirect request: [[...]] ==</nowiki>
<nowiki>*Target of redirect: [[...]]</nowiki>
<nowiki>*Reason: ...</nowiki>
<nowiki>*Source (if applicable): ...</nowiki>
<nowiki>~~~~</nowiki></code>
----
30dtyre5dwljjtk7u9rgx7hp2ui8huk
6579
6577
2026-05-19T05:46:31Z
ThatEquatorialGuineaEditor (alt)
1517
6579
wikitext
text/x-wiki
Ikhasi leli liqukethe iimbawo '''zokuqondisa kabutjha''' okutjha okwenziwe ngendlela ye-[[Wikiphidiya:Athikili yokuDala|Athikili yokuDala]]. Nanyana yini engasi isibawo sokuqondisa kabutjha izokulahlwa ngokuzenzakalelayo nofana isuswe.
Yenza iimbawo ngokusebenzisa indlela le:
<code><nowiki>== Redirect request: [[...]] ==</nowiki>
<nowiki>*Target of redirect: [[...]]</nowiki>
<nowiki>*Reason: ...</nowiki>
<nowiki>*Source (if applicable): ...</nowiki>
<nowiki>~~~~</nowiki></code>
----
== Redirect request: [[IsiNdebele]] ==
*Target of redirect: [[Isindebele]]
*Reason: Amaledere amakhulu, madoda.
*Source (if applicable): ...
[[Umsebenzisi:ThatEquatorialGuineaEditor (alt)|ThatEquatorialGuineaEditor (alt)]] ([[Umsebenzisi asiqongelane:ThatEquatorialGuineaEditor (alt)|talk]]) 07:46, 19 Nkwenkwezi 2026 (SAST)
tb0tc0877gkzu3l9vw1e5sh7bmf9uik
6581
6579
2026-05-19T05:48:22Z
NgamangaXhosa
1515
/* Redirect request: IsiNdebele */ Reply
6581
wikitext
text/x-wiki
Ikhasi leli liqukethe iimbawo '''zokuqondisa kabutjha''' okutjha okwenziwe ngendlela ye-[[Wikiphidiya:Athikili yokuDala|Athikili yokuDala]]. Nanyana yini engasi isibawo sokuqondisa kabutjha izokulahlwa ngokuzenzakalelayo nofana isuswe.
Yenza iimbawo ngokusebenzisa indlela le:
<code><nowiki>== Redirect request: [[...]] ==</nowiki>
<nowiki>*Target of redirect: [[...]]</nowiki>
<nowiki>*Reason: ...</nowiki>
<nowiki>*Source (if applicable): ...</nowiki>
<nowiki>~~~~</nowiki></code>
----
== Redirect request: [[IsiNdebele]] ==
*Target of redirect: [[Isindebele]]
*Reason: Amaledere amakhulu, madoda.
*Source (if applicable): ...
[[Umsebenzisi:ThatEquatorialGuineaEditor (alt)|ThatEquatorialGuineaEditor (alt)]] ([[Umsebenzisi asiqongelane:ThatEquatorialGuineaEditor (alt)|talk]]) 07:46, 19 Nkwenkwezi 2026 (SAST)
:*{{Done}}. Ngiyathokoza ngokusiza iWikipedia! [[Umsebenzisi:NgamangaXhosa|NgamangaXhosa]] ([[Umsebenzisi asiqongelane:NgamangaXhosa|talk]]) 07:48, 19 Nkwenkwezi 2026 (SAST)
287l6z9jxg7s22yhly2o54cp4vntvv3
6582
6581
2026-05-19T05:48:45Z
NgamangaXhosa
1515
6582
wikitext
text/x-wiki
Ikhasi leli liqukethe iimbawo '''zokuqondisa kabutjha''' okutjha okwenziwe ngendlela ye-[[Wikiphidiya:Athikili yokuDala|Athikili yokuDala]]. Nanyana yini engasi isibawo sokuqondisa kabutjha izokulahlwa ngokuzenzakalelayo nofana isuswe.
Yenza iimbawo ngokusebenzisa indlela le:
<code><nowiki>== Redirect request: [[...]] ==</nowiki>
<nowiki>*Target of redirect: [[...]]</nowiki>
<nowiki>*Reason: ...</nowiki>
<nowiki>*Source (if applicable): ...</nowiki>
<nowiki>~~~~</nowiki></code>
----
== Redirect request: [[IsiNdebele]] ==
*Target of redirect: [[Isindebele]]
*Reason: Amaledere amakhulu, madoda.
*Source (if applicable): ...
[[Umsebenzisi:ThatEquatorialGuineaEditor (alt)|ThatEquatorialGuineaEditor (alt)]] ([[Umsebenzisi asiqongelane:ThatEquatorialGuineaEditor (alt)|talk]]) 07:46, 19 Nkwenkwezi 2026 (SAST)
:{{Done}}. Ngiyathokoza ngokusiza iWikipedia! [[Umsebenzisi:NgamangaXhosa|NgamangaXhosa]] ([[Umsebenzisi asiqongelane:NgamangaXhosa|talk]]) 07:48, 19 Nkwenkwezi 2026 (SAST)
284pnsgmhdpbcc52vxqn2ov2p3xfjzu
6625
6582
2026-05-19T11:39:05Z
NgamangaXhosa
1515
6625
wikitext
text/x-wiki
Ikhasi leli liqukethe iimbawo '''zokuqondisa kabutjha''' okutjha okwenziwe ngendlela ye-[[Wikiphidiya:Athikili yokuDala|Athikili yokuDala]]. Nanyana yini engasi isibawo sokuqondisa kabutjha izokulahlwa ngokuzenzakalelayo nofana isuswe.
Yenza iimbawo ngokusebenzisa indlela le:
<code><nowiki>== Redirect request: [[...]] ==</nowiki>
<nowiki>*Target of redirect: [[...]]</nowiki>
<nowiki>*Reason: ...</nowiki>
<nowiki>*Source (if applicable): ...</nowiki>
<nowiki>~~~~</nowiki></code>
----
== Redirect request: [[IsiNdebele]] ==
*Target of redirect: [[Isindebele]]
*Reason: Amaledere amakhulu, madoda.
*Source (if applicable): ...
[[Umsebenzisi:ThatEquatorialGuineaEditor (alt)|ThatEquatorialGuineaEditor (alt)]] ([[Umsebenzisi asiqongelane:ThatEquatorialGuineaEditor (alt)|talk]]) 07:46, 19 Nkwenkwezi 2026 (SAST)
:{{Done}}. Ngiyathokoza ngokusiza iWikiphidiya! [[Umsebenzisi:NgamangaXhosa|NgamangaXhosa]] ([[Umsebenzisi asiqongelane:NgamangaXhosa|talk]]) 07:48, 19 Nkwenkwezi 2026 (SAST)
e8ivizrdb8hp5ex1rycra23ry6pqqbb
Umsebenzisi:ThatEquatorialGuineaEditor (alt)
2
1149
6578
2026-05-19T05:43:49Z
ThatEquatorialGuineaEditor (alt)
1517
Created page with "{{#babel:es|nr-3}} Habari."
6578
wikitext
text/x-wiki
{{#babel:es|nr-3}}
Habari.
cqt3syp4w23jo2fd9lfpuakugr7dc44
Umsebenzisi asiqongelane:ThatEquatorialGuineaEditor (alt)
3
1150
6580
2026-05-19T05:47:01Z
NgamangaXhosa
1515
/* Une-imeyela! */ new section
6580
wikitext
text/x-wiki
== Une-imeyela! ==
{{ygm}} [[Umsebenzisi:NgamangaXhosa|NgamangaXhosa]] ([[Umsebenzisi asiqongelane:NgamangaXhosa|talk]]) 07:47, 19 Nkwenkwezi 2026 (SAST)
lwfy1wymq1mbeq1qa3c81x0xhye0cvo
IsiNdebele
0
1151
6583
2026-05-19T05:49:01Z
NgamangaXhosa
1515
Redirected page to [[Isindebele]]
6583
wikitext
text/x-wiki
#REDIRECT [[Isindebele]]
syazeneobecpkgm25s34ks2kndd9cfb
Umsebenzisi asiqongelane:NgamangaXhosa
3
1152
6584
2026-05-19T05:51:28Z
ThatEquatorialGuineaEditor (alt)
1517
/* Ngiyathokoza */ new section
6584
wikitext
text/x-wiki
== Ngiyathokoza ==
{{Thank you}} ngokungisiza ukuhlela i-Wikipedia ngesiNdebele seSewuta. [[Umsebenzisi:ThatEquatorialGuineaEditor (alt)|ThatEquatorialGuineaEditor (alt)]] ([[Umsebenzisi asiqongelane:ThatEquatorialGuineaEditor (alt)|talk]]) 07:51, 19 Nkwenkwezi 2026 (SAST)
2hsaktnwzr87714p9vp2sx62nt8wv90
6585
6584
2026-05-19T05:51:51Z
NgamangaXhosa
1515
/* Ngiyathokoza */ Reply
6585
wikitext
text/x-wiki
== Ngiyathokoza ==
{{Thank you}} ngokungisiza ukuhlela i-Wikipedia ngesiNdebele seSewuta. [[Umsebenzisi:ThatEquatorialGuineaEditor (alt)|ThatEquatorialGuineaEditor (alt)]] ([[Umsebenzisi asiqongelane:ThatEquatorialGuineaEditor (alt)|talk]]) 07:51, 19 Nkwenkwezi 2026 (SAST)
:{{You're welcome}} [[Umsebenzisi:NgamangaXhosa|NgamangaXhosa]] ([[Umsebenzisi asiqongelane:NgamangaXhosa|talk]]) 07:51, 19 Nkwenkwezi 2026 (SAST)
r30h28sv62osvffd79j12c3s7dm3ol2
6586
6585
2026-05-19T05:52:08Z
NgamangaXhosa
1515
6586
wikitext
text/x-wiki
== Ngiyathokoza ==
{{Thank you}} ngokungisiza ukuhlela i-Wikipedia ngesiNdebele seSewuta. [[Umsebenzisi:ThatEquatorialGuineaEditor (alt)|ThatEquatorialGuineaEditor (alt)]] ([[Umsebenzisi asiqongelane:ThatEquatorialGuineaEditor (alt)|talk]]) 07:51, 19 Nkwenkwezi 2026 (SAST)
:{{You're welcome}} [[Umsebenzisi:NgamangaXhosa|NgamangaXhosa]] ([[Umsebenzisi asiqongelane:NgamangaXhosa|talk]]) 07:52, 19 Nkwenkwezi 2026 (SAST)
287ymmzvw4ak9hq921imj08l9woe7ud
Umsebenzisi asiqongelane:MikitkoSynAlexeev
3
1153
6596
2026-05-19T06:21:43Z
NgamangaXhosa
1515
Created page with "{{Not around|{{PAGENAME}}}}"
6596
wikitext
text/x-wiki
{{Not around|{{PAGENAME}}}}
43ncr18fghi0wiy07np8ue17ph7aec0
Umhlahlandlelasakhiwo:Mbox
10
1154
6598
2026-05-19T06:25:01Z
NgamangaXhosa
1515
Created page with "{{#invoke:Message box|mbox}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude>"
6598
wikitext
text/x-wiki
{{#invoke:Message box|mbox}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
aqsrswx233se5jbjaza2b2hrk7pgx53
Module:Message box/configuration
828
1155
6599
2026-05-19T06:27:25Z
NgamangaXhosa
1515
Created page with "-------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-spee..."
6599
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
substCheck = true,
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix', 'subst'},
removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this message]]</small>',
templatestyles = 'Module:Message box/ambox.css'
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true,
templatestyles = 'Module:Message box/cmbox.css',
div_structure = true,
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false,
templatestyles = 'Module:Message box/fmbox.css',
div_structure = true,
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox-license.svg'
},
["license-related"] = {
class = 'imbox-license',
image = 'Imbox-license.svg'
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg',
imageNeedsLink = true
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes',
templatestyles = 'Module:Message box/imbox.css',
div_structure = true,
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true,
templatestyles = 'Module:Message box/ombox.css'
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
templateCategory = 'Talk message boxes',
templatestyles = 'Module:Message box/tmbox.css'
}
}
p36hrbxjy99m7clj64lhlint2en3bo0
Module:Category handler/data
828
1156
6600
2026-05-19T06:29:54Z
NgamangaXhosa
1515
Created page with "-- This module assembles data to be passed to [[Module:Category handler]] using -- mw.loadData. This includes the configuration data and whether the current -- page matches the title blacklist. local data = require('Module:Category handler/config') local mShared = require('Module:Category handler/shared') local blacklist = require('Module:Category handler/blacklist') local title = mw.title.getCurrentTitle() data.currentTitleMatchesBlacklist = mShared.matchesBlacklist(..."
6600
Scribunto
text/plain
-- This module assembles data to be passed to [[Module:Category handler]] using
-- mw.loadData. This includes the configuration data and whether the current
-- page matches the title blacklist.
local data = require('Module:Category handler/config')
local mShared = require('Module:Category handler/shared')
local blacklist = require('Module:Category handler/blacklist')
local title = mw.title.getCurrentTitle()
data.currentTitleMatchesBlacklist = mShared.matchesBlacklist(
title.prefixedText,
blacklist
)
data.currentTitleNamespaceParameters = mShared.getNamespaceParameters(
title,
mShared.getParamMappings()
)
return data
k26mwixuaeijisfddb0sxkg82iux8v4
Module:Category handler/config
828
1157
6601
2026-05-19T06:31:08Z
NgamangaXhosa
1515
Created page with "-------------------------------------------------------------------------------- -- [[Module:Category handler]] configuration data -- -- Language-specific parameter names and values can be set here. -- -- For blacklist config, see [[Module:Category handler/blacklist]]. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. ----------------------------..."
6601
Scribunto
text/plain
--------------------------------------------------------------------------------
-- [[Module:Category handler]] configuration data --
-- Language-specific parameter names and values can be set here. --
-- For blacklist config, see [[Module:Category handler/blacklist]]. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Start configuration data --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Parameter names --
-- These configuration items specify custom parameter names. --
-- To add one extra name, you can use this format: --
-- --
-- foo = 'parameter name', --
-- --
-- To add multiple names, you can use this format: --
-- --
-- foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'}, --
--------------------------------------------------------------------------------
cfg.parameters = {
-- The nocat and categories parameter suppress
-- categorisation. They are used with Module:Yesno, and work as follows:
--
-- cfg.nocat:
-- Result of yesno() Effect
-- true Categorisation is suppressed
-- false Categorisation is allowed, and
-- the blacklist check is skipped
-- nil Categorisation is allowed
--
-- cfg.categories:
-- Result of yesno() Effect
-- true Categorisation is allowed, and
-- the blacklist check is skipped
-- false Categorisation is suppressed
-- nil Categorisation is allowed
nocat = 'nocat',
categories = 'categories',
-- The parameter name for the legacy "category2" parameter. This skips the
-- blacklist if set to the cfg.category2Yes value, and suppresses
-- categorisation if present but equal to anything other than
-- cfg.category2Yes or cfg.category2Negative.
category2 = 'category2',
-- cfg.subpage is the parameter name to specify how to behave on subpages.
subpage = 'subpage',
-- The parameter for data to return in all namespaces.
all = 'all',
-- The parameter name for data to return if no data is specified for the
-- namespace that is detected.
other = 'other',
-- The parameter name used to specify a page other than the current page;
-- used for testing and demonstration.
demopage = 'page',
}
--------------------------------------------------------------------------------
-- Parameter values --
-- These are set values that can be used with certain parameters. Only one --
-- value can be specified, like this: --
-- --
-- cfg.foo = 'value name' -- --
--------------------------------------------------------------------------------
-- The following settings are used with the cfg.category2 parameter. Setting
-- cfg.category2 to cfg.category2Yes skips the blacklist, and if cfg.category2
-- is present but equal to anything other than cfg.category2Yes or
-- cfg.category2Negative then it supresses cateogrisation.
cfg.category2Yes = 'yes'
cfg.category2Negative = '¬'
-- The following settings are used with the cfg.subpage parameter.
-- cfg.subpageNo is the value to specify to not categorise on subpages;
-- cfg.subpageOnly is the value to specify to only categorise on subpages.
cfg.subpageNo = 'no'
cfg.subpageOnly = 'only'
--------------------------------------------------------------------------------
-- Default namespaces --
-- This is a table of namespaces to categorise by default. The keys are the --
-- namespace numbers. --
--------------------------------------------------------------------------------
cfg.defaultNamespaces = {
[ 0] = true, -- main
[ 6] = true, -- file
[ 12] = true, -- help
[ 14] = true, -- category
[100] = true, -- portal
[108] = true, -- book
}
--------------------------------------------------------------------------------
-- Wrappers --
-- This is a wrapper template or a list of wrapper templates to be passed to --
-- [[Module:Arguments]]. --
--------------------------------------------------------------------------------
cfg.wrappers = 'Template:Category handler'
--------------------------------------------------------------------------------
-- End configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line.
6ga9hbq2pdwalsvx68i53dmbr421rq5
Module:Category handler/shared
828
1158
6602
2026-05-19T06:32:13Z
NgamangaXhosa
1515
Created page with "-- This module contains shared functions used by [[Module:Category handler]] -- and its submodules. local p = {} function p.matchesBlacklist(page, blacklist) for i, pattern in ipairs(blacklist) do local match = mw.ustring.match(page, pattern) if match then return true end end return false end function p.getParamMappings(useLoadData) local dataPage = 'Module:Namespace detect/data' if useLoadData then return mw.loadData(dataPage).mappings else return..."
6602
Scribunto
text/plain
-- This module contains shared functions used by [[Module:Category handler]]
-- and its submodules.
local p = {}
function p.matchesBlacklist(page, blacklist)
for i, pattern in ipairs(blacklist) do
local match = mw.ustring.match(page, pattern)
if match then
return true
end
end
return false
end
function p.getParamMappings(useLoadData)
local dataPage = 'Module:Namespace detect/data'
if useLoadData then
return mw.loadData(dataPage).mappings
else
return require(dataPage).mappings
end
end
function p.getNamespaceParameters(titleObj, mappings)
-- We don't use title.nsText for the namespace name because it adds
-- underscores.
local mappingsKey
if titleObj.isTalkPage then
mappingsKey = 'talk'
else
mappingsKey = mw.site.namespaces[titleObj.namespace].name
end
mappingsKey = mw.ustring.lower(mappingsKey)
return mappings[mappingsKey] or {}
end
return p
omlsnhudxz6juptvtxz7ns97jutbzc5
Module:Category handler/blacklist
828
1159
6603
2026-05-19T06:32:40Z
NgamangaXhosa
1515
Created page with "-- This module contains the blacklist used by [[Module:Category handler]]. -- Pages that match Lua patterns in this list will not be categorised unless -- categorisation is explicitly requested. return { '^Main Page$', -- don't categorise the main page. -- Don't categorise the following pages or their subpages. -- "%f[/\0]" matches if the next character is "/" or the end of the string. '^Wikipedia:Cascade%-protected items%f[/\0]', '^User:UBX%f[/\0]', -- The userbo..."
6603
Scribunto
text/plain
-- This module contains the blacklist used by [[Module:Category handler]].
-- Pages that match Lua patterns in this list will not be categorised unless
-- categorisation is explicitly requested.
return {
'^Main Page$', -- don't categorise the main page.
-- Don't categorise the following pages or their subpages.
-- "%f[/\0]" matches if the next character is "/" or the end of the string.
'^Wikipedia:Cascade%-protected items%f[/\0]',
'^User:UBX%f[/\0]', -- The userbox "template" space.
'^User talk:UBX%f[/\0]',
-- Don't categorise subpages of these pages, but allow
-- categorisation of the base page.
'^Wikipedia:Template index/.*$',
-- Don't categorise archives.
'/[aA]rchive',
"^Wikipedia:Administrators' noticeboard/IncidentArchive%d+$",
}
fsv1drcay6t25e91hzhqxtyp7pckbpx
Module:Namespace detect/data
828
1160
6604
2026-05-19T06:33:13Z
NgamangaXhosa
1515
Created page with "-------------------------------------------------------------------------------- -- Namespace detect data -- -- This module holds data for [[Module:Namespace detect]] to be loaded per -- -- page, rather than per #invoke, for performance reasons. -- -------------------------------------------------------------------------------- local cfg = require('Module:Namespace detect/config') local function..."
6604
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Namespace detect data --
-- This module holds data for [[Module:Namespace detect]] to be loaded per --
-- page, rather than per #invoke, for performance reasons. --
--------------------------------------------------------------------------------
local cfg = require('Module:Namespace detect/config')
local function addKey(t, key, defaultKey)
if key ~= defaultKey then
t[#t + 1] = key
end
end
-- Get a table of parameters to query for each default parameter name.
-- This allows wikis to customise parameter names in the cfg table while
-- ensuring that default parameter names will always work. The cfg table
-- values can be added as a string, or as an array of strings.
local defaultKeys = {
'main',
'talk',
'other',
'subjectns',
'demospace',
'demopage'
}
local argKeys = {}
for i, defaultKey in ipairs(defaultKeys) do
argKeys[defaultKey] = {defaultKey}
end
for defaultKey, t in pairs(argKeys) do
local cfgValue = cfg[defaultKey]
local cfgValueType = type(cfgValue)
if cfgValueType == 'string' then
addKey(t, cfgValue, defaultKey)
elseif cfgValueType == 'table' then
for i, key in ipairs(cfgValue) do
addKey(t, key, defaultKey)
end
end
cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more.
end
local function getParamMappings()
--[[
-- Returns a table of how parameter names map to namespace names. The keys
-- are the actual namespace names, in lower case, and the values are the
-- possible parameter names for that namespace, also in lower case. The
-- table entries are structured like this:
-- {
-- [''] = {'main'},
-- ['wikipedia'] = {'wikipedia', 'project', 'wp'},
-- ...
-- }
--]]
local mappings = {}
local mainNsName = mw.site.subjectNamespaces[0].name
mainNsName = mw.ustring.lower(mainNsName)
mappings[mainNsName] = mw.clone(argKeys.main)
mappings['talk'] = mw.clone(argKeys.talk)
for nsid, ns in pairs(mw.site.subjectNamespaces) do
if nsid ~= 0 then -- Exclude main namespace.
local nsname = mw.ustring.lower(ns.name)
local canonicalName = mw.ustring.lower(ns.canonicalName)
mappings[nsname] = {nsname}
if canonicalName ~= nsname then
table.insert(mappings[nsname], canonicalName)
end
for _, alias in ipairs(ns.aliases) do
table.insert(mappings[nsname], mw.ustring.lower(alias))
end
end
end
return mappings
end
return {
argKeys = argKeys,
cfg = cfg,
mappings = getParamMappings()
}
ojp6d3pc8mql5nufaqdg576c9so3479
Module:Namespace detect/config
828
1161
6605
2026-05-19T06:33:40Z
NgamangaXhosa
1515
Created page with "-------------------------------------------------------------------------------- -- Namespace detect configuration data -- -- -- -- This module stores configuration data for Module:Namespace detect. Here -- -- you can localise the module to your wiki's language. -- --..."
6605
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Namespace detect configuration data --
-- --
-- This module stores configuration data for Module:Namespace detect. Here --
-- you can localise the module to your wiki's language. --
-- --
-- To activate a configuration item, you need to uncomment it. This means --
-- that you need to remove the text "-- " at the start of the line. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Parameter names --
-- These configuration items specify custom parameter names. Values added --
-- here will work in addition to the default English parameter names. --
-- To add one extra name, you can use this format: --
-- --
-- cfg.foo = 'parameter name' --
-- --
-- To add multiple names, you can use this format: --
-- --
-- cfg.foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'} --
--------------------------------------------------------------------------------
---- This parameter displays content for the main namespace:
-- cfg.main = 'main'
---- This parameter displays in talk namespaces:
-- cfg.talk = 'talk'
---- This parameter displays content for "other" namespaces (namespaces for which
---- parameters have not been specified):
-- cfg.other = 'other'
---- This parameter makes talk pages behave as though they are the corresponding
---- subject namespace. Note that this parameter is used with [[Module:Yesno]].
---- Edit that module to change the default values of "yes", "no", etc.
-- cfg.subjectns = 'subjectns'
---- This parameter sets a demonstration namespace:
-- cfg.demospace = 'demospace'
---- This parameter sets a specific page to compare:
cfg.demopage = 'page'
--------------------------------------------------------------------------------
-- Table configuration --
-- These configuration items allow customisation of the "table" function, --
-- used to generate a table of possible parameters in the module --
-- documentation. --
--------------------------------------------------------------------------------
---- The header for the namespace column in the wikitable containing the list of
---- possible subject-space parameters.
-- cfg.wikitableNamespaceHeader = 'Namespace'
---- The header for the wikitable containing the list of possible subject-space
---- parameters.
-- cfg.wikitableAliasesHeader = 'Aliases'
--------------------------------------------------------------------------------
-- End of configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line.
1o6ozz56i8q0xgyl6xa41n2v7kelhli
Umhlahlandlelasakhiwo:Tmbox
10
1162
6608
2026-05-19T06:37:59Z
NgamangaXhosa
1515
Created page with "{{#invoke:Message box|tmbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude>"
6608
wikitext
text/x-wiki
{{#invoke:Message box|tmbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
jcav8pdjkvcwg8gc4m0b4gox7yjnxku
Module:Message box/tmbox.css
828
1163
6610
2026-05-19T06:40:26Z
NgamangaXhosa
1515
Created page with "/* {{pp|small=y}} */ .tmbox { margin: 4px 0; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background-color: #f8eaba; box-sizing: border-box; } /* For the "small=yes" option. */ .tmbox.mbox-small { font-size: 88%; line-height: 1.25em; } .tmbox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .tmbox-delete { border: 2px solid #b32424; /* Red */ } .tmbox-content { bord..."
6610
sanitized-css
text/css
/* {{pp|small=y}} */
.tmbox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #c0c090; /* Default "notice" gray-brown */
background-color: #f8eaba;
box-sizing: border-box;
}
/* For the "small=yes" option. */
.tmbox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.tmbox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.tmbox-delete {
border: 2px solid #b32424; /* Red */
}
.tmbox-content {
border: 2px solid #f28500; /* Orange */
}
.tmbox-style {
border: 2px solid #fc3; /* Yellow */
}
.tmbox-move {
border: 2px solid #9932cc; /* Purple */
}
.tmbox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.tmbox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.tmbox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.tmbox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
/* keep synced with each other type of message box as this isn't qualified */
.mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.tmbox {
margin: 4px 10%;
}
.tmbox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
@media screen {
html.skin-theme-clientpref-night .tmbox {
background-color: #2e2505; /* Dark brown, same hue/saturation as light */
}
html.skin-theme-clientpref-night .tmbox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .tmbox {
background-color: #2e2505; /* Dark brown, same hue/saturation as light */
}
html.skin-theme-clientpref-os .tmbox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
/** T367463 */
body.skin--responsive table.tmbox img {
max-width: none !important;
}
ffh2lypp0mcty5c7j53ntmwywlflceo
6614
6610
2026-05-19T06:46:25Z
NgamangaXhosa
1515
6614
sanitized-css
text/css
.tmbox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #c0c090; /* Default "notice" gray-brown */
background-color: #f8eaba;
box-sizing: border-box;
}
/* For the "small=yes" option. */
.tmbox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.tmbox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.tmbox-delete {
border: 2px solid #b32424; /* Red */
}
.tmbox-content {
border: 2px solid #f28500; /* Orange */
}
.tmbox-style {
border: 2px solid #fc3; /* Yellow */
}
.tmbox-move {
border: 2px solid #9932cc; /* Purple */
}
.tmbox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.tmbox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.tmbox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.tmbox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
/* keep synced with each other type of message box as this isn't qualified */
.mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.tmbox {
margin: 4px 10%;
}
.tmbox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
@media screen {
html.skin-theme-clientpref-night .tmbox {
background-color: #2e2505; /* Dark brown, same hue/saturation as light */
}
html.skin-theme-clientpref-night .tmbox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .tmbox {
background-color: #2e2505; /* Dark brown, same hue/saturation as light */
}
html.skin-theme-clientpref-os .tmbox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
/** T367463 */
body.skin--responsive table.tmbox img {
max-width: none !important;
}
85ylhi9duvtn6hrmfoxd35tfl1431pb
Module:Message box/ombox.css
828
1164
6611
2026-05-19T06:41:10Z
NgamangaXhosa
1515
Created page with "/* {{pp|small=y}} */ .ombox { margin: 4px 0; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: var(--background-color-neutral-subtle, #f8f9fa); box-sizing: border-box; color: var(--color-base, #202122); } /* For the "small=yes" option. */ .ombox.mbox-small { font-size: 88%; line-height: 1.25em; } .ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ombox-de..."
6611
sanitized-css
text/css
/* {{pp|small=y}} */
.ombox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: var(--background-color-neutral-subtle, #f8f9fa);
box-sizing: border-box;
color: var(--color-base, #202122);
}
/* For the "small=yes" option. */
.ombox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ombox-delete {
border: 2px solid #b32424; /* Red */
}
.ombox-content {
border: 1px solid #f28500; /* Orange */
}
.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
.ombox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.ombox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.ombox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ombox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
/* keep synced with each other type of message box as this isn't qualified */
.mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.ombox {
margin: 4px 10%;
}
.ombox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
/** T367463 */
body.skin--responsive table.ombox img {
max-width: none !important;
}
@media screen {
html.skin-theme-clientpref-night .ombox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .ombox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
s3kd4o8l90hza7k55c82cm0ltkd3xp2
6612
6611
2026-05-19T06:42:26Z
NgamangaXhosa
1515
6612
sanitized-css
text/css
.ombox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: var(--background-color-neutral-subtle, #f8f9fa);
box-sizing: border-box;
color: var(--color-base, #202122);
}
/* For the "small=yes" option. */
.ombox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ombox-delete {
border: 2px solid #b32424; /* Red */
}
.ombox-content {
border: 1px solid #f28500; /* Orange */
}
.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
.ombox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.ombox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.ombox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ombox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
/* keep synced with each other type of message box as this isn't qualified */
.mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.ombox {
margin: 4px 10%;
}
.ombox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
/** T367463 */
body.skin--responsive table.ombox img {
max-width: none !important;
}
@media screen {
html.skin-theme-clientpref-night .ombox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .ombox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
j5hpz75a9bm4jwa16xb00sw1cl5djn7
6613
6612
2026-05-19T06:45:01Z
NgamangaXhosa
1515
6613
sanitized-css
text/css
.ombox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: var(--background-color-neutral-subtle, #f8f9fa);
box-sizing: border-box;
color: var(--color-base, #202122);
}
/* For the "small=yes" option. */
.ombox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ombox-delete {
border: 2px solid #b32424; /* Red */
}
.ombox-content {
border: 1px solid #f28500; /* Orange */
}
.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
.ombox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.ombox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.ombox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ombox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.ombox .mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.ombox {
margin: 4px 10%;
}
.ombox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
/** T367463 */
body.skin--responsive table.ombox img {
max-width: none !important;
}
@media screen {
html.skin-theme-clientpref-night .ombox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .ombox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
5gv8lkpvzcasyypj8kwtvyoliam8iq0
6615
6613
2026-05-19T06:47:30Z
NgamangaXhosa
1515
Undid revision [[Special:Diff/6613|6613]] by [[Special:Contributions/NgamangaXhosa|NgamangaXhosa]] ([[User talk:NgamangaXhosa|talk]])
6615
sanitized-css
text/css
.ombox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: var(--background-color-neutral-subtle, #f8f9fa);
box-sizing: border-box;
color: var(--color-base, #202122);
}
/* For the "small=yes" option. */
.ombox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ombox-delete {
border: 2px solid #b32424; /* Red */
}
.ombox-content {
border: 1px solid #f28500; /* Orange */
}
.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
.ombox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.ombox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.ombox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ombox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
/* keep synced with each other type of message box as this isn't qualified */
.mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.ombox {
margin: 4px 10%;
}
.ombox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
/** T367463 */
body.skin--responsive table.ombox img {
max-width: none !important;
}
@media screen {
html.skin-theme-clientpref-night .ombox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .ombox-speedy {
background-color: #310402; /* Dark red, same hue/saturation as light */
}
}
j5hpz75a9bm4jwa16xb00sw1cl5djn7
Umhlahlandlelasakhiwo:Umbox
10
1165
6616
2026-05-19T06:57:53Z
NgamangaXhosa
1515
Created page with "{{ safesubst:<noinclude/>ifsubst||<templatestyles src="Template:Umbox/styles.css" />}}<!-- --><div class="umbox {{{{{|safesubst:}}}#if:{{{class|}}}|{{{class|}}}|}}" style="{{ safesubst:<noinclude/>ifsubst|background-color: var(--background-color-content-added, #a3d3ff); border: var(--border-color-progressive, #36c) 1px solid; margin: 2em 0 1em; padding: 0.5em 1em; font-weight: bold; overflow: auto; vertical-align: middle;}} {{{{{|safesubst:}}}#if:{{{style|}}}|{{{style|}}..."
6616
wikitext
text/x-wiki
{{ safesubst:<noinclude/>ifsubst||<templatestyles src="Template:Umbox/styles.css" />}}<!--
--><div class="umbox {{{{{|safesubst:}}}#if:{{{class|}}}|{{{class|}}}|}}" style="{{ safesubst:<noinclude/>ifsubst|background-color: var(--background-color-content-added, #a3d3ff); border: var(--border-color-progressive, #36c) 1px solid; margin: 2em 0 1em; padding: 0.5em 1em; font-weight: bold; overflow: auto; vertical-align: middle;}} {{{{{|safesubst:}}}#if:{{{style|}}}|{{{style|}}}|}}"><noinclude><!--
// Image
--></noinclude>{{{{{|safesubst:}}}#if:{{{image|}}}|[[File:{{{image}}}|left|{{{image-size|40px}}}|link={{{imagelink|}}}]]}}<noinclude><!--
// Text
--></noinclude>{{{text|}}}</div><noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES TO THE /doc SUBPAGE, THANKS -->
</noinclude>
sc9gr4m0e4jkg0i69cxsbzpt4rl3hl6
Umhlahlandlelasakhiwo:Ifsubst
10
1166
6617
2026-05-19T06:58:18Z
NgamangaXhosa
1515
Created page with "{{ safesubst:<noinclude/>#if:{{{demo|}}} |{{ safesubst:<noinclude/>#ifeq:{{{demo}}} |no |{{{no|{{{2|}}}}}} |{{{yes|{{{1|}}}}}} }} |{{ safesubst:<noinclude/>#ifeq:{{ safesubst:<noinclude/>NAMESPACE}}|{{NAMESPACE}} |{{{no|{{{2|}}}}}} |{{{yes|{{{1|}}}}}} }}}}<noinclude> {{Documentation}} </noinclude>"
6617
wikitext
text/x-wiki
{{ safesubst:<noinclude/>#if:{{{demo|}}}
|{{ safesubst:<noinclude/>#ifeq:{{{demo}}} |no
|{{{no|{{{2|}}}}}}
|{{{yes|{{{1|}}}}}}
}}
|{{ safesubst:<noinclude/>#ifeq:{{ safesubst:<noinclude/>NAMESPACE}}|{{NAMESPACE}}
|{{{no|{{{2|}}}}}}
|{{{yes|{{{1|}}}}}}
}}}}<noinclude>
{{Documentation}}
</noinclude>
6n9xrkgwrhqddknwc59l4tya8074m0o
Umhlahlandlelasakhiwo:Umbox/styles.css
10
1167
6618
2026-05-19T06:59:11Z
NgamangaXhosa
1515
Created page with ".umbox { background-color: var(--background-color-content-added, #a3d3ff); border: 1px solid var(--border-color-progressive, #36c); padding: 0.5em 1em; margin: 2em 0 1em; font-weight: bold; overflow: auto; vertical-align: middle; }"
6618
sanitized-css
text/css
.umbox {
background-color: var(--background-color-content-added, #a3d3ff);
border: 1px solid var(--border-color-progressive, #36c);
padding: 0.5em 1em;
margin: 2em 0 1em;
font-weight: bold;
overflow: auto;
vertical-align: middle;
}
8l5tcscdaytbdr01322sa6xslrrmmv2
Umhlahlandlelasakhiwo:You've got mail/doc
10
1168
6619
2026-05-19T07:01:14Z
NgamangaXhosa
1515
Created page with "{{umbox |image={{SAFESUBST:<noinclude />#if:{{{tweet|}}}||Mail-message-new.svg}} |text=<big>'''Lotjha. Sibawa uhlole i-imeyili yakho; une-imeyela!'''</big> Kungathatha imizuzu embalwa kusukela ngesikhathi i-imeyili ithunyelwa bona ivele ebhokisini lakho lokungenayo. Ungasusa isaziso lesi nanyana kunini ngokususa umhlahlandlelasakhiwo esithi {{tl|You've got mail}} nofana {{tl|ygm}}. }} <noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUB-P..."
6619
wikitext
text/x-wiki
{{umbox
|image={{SAFESUBST:<noinclude />#if:{{{tweet|}}}||Mail-message-new.svg}}
|text=<big>'''Lotjha. Sibawa uhlole i-imeyili yakho; une-imeyela!'''</big> Kungathatha imizuzu embalwa kusukela ngesikhathi i-imeyili ithunyelwa bona ivele ebhokisini lakho lokungenayo. Ungasusa isaziso lesi nanyana kunini ngokususa umhlahlandlelasakhiwo esithi {{tl|You've got mail}} nofana {{tl|ygm}}.
}}
<noinclude>{{documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUB-PAGE, THANKS --></noinclude>
2im7346slc39an2u5602zl432b6s54f
Charles I of England
0
1169
6624
2026-05-19T07:48:42Z
Kwamikagami
1412
Kwamikagami moved page [[Charles I of England]] to [[Charles II of England]]: wrong topic
6624
wikitext
text/x-wiki
#REDIRECT [[Charles II of England]]
4sb0xfn9wry2ewg45b5e93i5fwj8int