Wikipedia
lnwiki
https://ln.wikipedia.org/wiki/Lok%C3%A1s%C3%A1_ya_libos%C3%B3
MediaWiki 1.47.0-wmf.18
first-letter
Média
Spécial
Discussion
Utilisateur
Discussion utilisateur
Wikipedia
Discussion Wikipedia
Fichier
Discussion fichier
MediaWiki
Discussion MediaWiki
Modèle
Discussion modèle
Aide
Discussion aide
Catégorie
Discussion catégorie
TimedText
TimedText talk
Module
Discussion module
Event
Event talk
Module:TableTools
828
8496
136020
119454
2026-09-03T13:00:05Z
Hamish
9768
Update from [[d:Special:GoToLinkedPage/enwiki/Q15408619|master]] using [[mw:Synchronizer| #Synchronizer]]
136020
Scribunto
text/plain
------------------------------------------------------------------------------------
-- TableTools --
-- --
-- This module includes a number of functions for dealing with Lua tables. --
-- It is a meta-module, meant to be called from other Lua modules, and should not --
-- be called directly from #invoke. --
------------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local p = {}
-- Define often-used variables and functions.
local floor = math.floor
local infinity = math.huge
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti
------------------------------------------------------------------------------------
-- isPositiveInteger
--
-- This function returns true if the given value is a positive integer, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
------------------------------------------------------------------------------------
function p.isPositiveInteger(v)
return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity
end
------------------------------------------------------------------------------------
-- isNan
--
-- This function returns true if the given number is a NaN value, and false if
-- not. Although it doesn't operate on tables, it is included here as it is useful
-- for determining whether a value can be a valid table key. Lua will generate an
-- error if a NaN is used as a table key.
------------------------------------------------------------------------------------
function p.isNan(v)
return type(v) == 'number' and v ~= v
end
------------------------------------------------------------------------------------
-- shallowClone
--
-- This returns a clone of a table. The value returned is a new table, but all
-- subtables and functions are shared. Metamethods are respected, but the returned
-- table will have no metatable of its own.
------------------------------------------------------------------------------------
function p.shallowClone(t)
checkType('shallowClone', 1, t, 'table')
local ret = {}
for k, v in pairs(t) do
ret[k] = v
end
return ret
end
------------------------------------------------------------------------------------
-- removeDuplicates
--
-- This removes duplicate values from an array. Non-positive-integer keys are
-- ignored. The earliest value is kept, and all subsequent duplicate values are
-- removed, but otherwise the array order is unchanged.
------------------------------------------------------------------------------------
function p.removeDuplicates(arr)
checkType('removeDuplicates', 1, arr, 'table')
local isNan = p.isNan
local ret, exists = {}, {}
for _, v in ipairs(arr) do
if isNan(v) then
-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.
ret[#ret + 1] = v
elseif not exists[v] then
ret[#ret + 1] = v
exists[v] = true
end
end
return ret
end
------------------------------------------------------------------------------------
-- numKeys
--
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
------------------------------------------------------------------------------------
function p.numKeys(t)
checkType('numKeys', 1, t, 'table')
local isPositiveInteger = p.isPositiveInteger
local nums = {}
for k in pairs(t) do
if isPositiveInteger(k) then
nums[#nums + 1] = k
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- affixNums
--
-- This takes a table and returns an array containing the numbers of keys with the
-- specified prefix and suffix. For example, for the table
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return
-- {1, 3, 6}.
------------------------------------------------------------------------------------
function p.affixNums(t, prefix, suffix)
checkType('affixNums', 1, t, 'table')
checkType('affixNums', 2, prefix, 'string', true)
checkType('affixNums', 3, suffix, 'string', true)
local function cleanPattern(s)
-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
end
prefix = prefix or ''
suffix = suffix or ''
prefix = cleanPattern(prefix)
suffix = cleanPattern(suffix)
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'
local nums = {}
for k in pairs(t) do
if type(k) == 'string' then
local num = mw.ustring.match(k, pattern)
if num then
nums[#nums + 1] = tonumber(num)
end
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- numData
--
-- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table
-- of subtables in the format
-- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}.
-- Keys that don't end with an integer are stored in a subtable named "other". The
-- compress option compresses the table so that it can be iterated over with
-- ipairs.
------------------------------------------------------------------------------------
function p.numData(t, compress)
checkType('numData', 1, t, 'table')
checkType('numData', 2, compress, 'boolean', true)
local ret = {}
for k, v in pairs(t) do
local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')
if num then
num = tonumber(num)
local subtable = ret[num] or {}
if prefix == '' then
-- Positional parameters match the blank string; put them at the start of the subtable instead.
prefix = 1
end
subtable[prefix] = v
ret[num] = subtable
else
local subtable = ret.other or {}
subtable[k] = v
ret.other = subtable
end
end
if compress then
local other = ret.other
ret = p.compressSparseArray(ret)
ret.other = other
end
return ret
end
------------------------------------------------------------------------------------
-- compressSparseArray
--
-- This takes an array with one or more nil values, and removes the nil values
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
------------------------------------------------------------------------------------
function p.compressSparseArray(t)
checkType('compressSparseArray', 1, t, 'table')
local ret = {}
local nums = p.numKeys(t)
for _, num in ipairs(nums) do
ret[#ret + 1] = t[num]
end
return ret
end
------------------------------------------------------------------------------------
-- sparseIpairs
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
------------------------------------------------------------------------------------
function p.sparseIpairs(t)
checkType('sparseIpairs', 1, t, 'table')
local nums = p.numKeys(t)
local i = 0
local lim = #nums
return function ()
i = i + 1
if i <= lim then
local key = nums[i]
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- size
--
-- This returns the size of a key/value pair table. It will also work on arrays,
-- but for arrays it is more efficient to use the # operator.
------------------------------------------------------------------------------------
function p.size(t)
checkType('size', 1, t, 'table')
local i = 0
for _ in pairs(t) do
i = i + 1
end
return i
end
local function defaultKeySort(item1, item2)
-- "number" < "string", so numbers will be sorted before strings.
local type1, type2 = type(item1), type(item2)
if type1 ~= type2 then
return type1 < type2
elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then
return tostring(item1) < tostring(item2)
else
return item1 < item2
end
end
------------------------------------------------------------------------------------
-- keysToList
--
-- Returns an array of the keys in a table, sorted using either a default
-- comparison function or a custom keySort function.
------------------------------------------------------------------------------------
function p.keysToList(t, keySort, checked)
if not checked then
checkType('keysToList', 1, t, 'table')
checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'})
end
local arr = {}
local index = 1
for k in pairs(t) do
arr[index] = k
index = index + 1
end
if keySort ~= false then
keySort = type(keySort) == 'function' and keySort or defaultKeySort
table.sort(arr, keySort)
end
return arr
end
------------------------------------------------------------------------------------
-- sortedPairs
--
-- Iterates through a table, with the keys sorted using the keysToList function.
-- If there are only numerical keys, sparseIpairs is probably more efficient.
------------------------------------------------------------------------------------
function p.sortedPairs(t, keySort)
checkType('sortedPairs', 1, t, 'table')
checkType('sortedPairs', 2, keySort, 'function', true)
local arr = p.keysToList(t, keySort, true)
local i = 0
return function ()
i = i + 1
local key = arr[i]
if key ~= nil then
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- isArray
--
-- Returns true if the given value is a table and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArray(v)
if type(v) ~= 'table' then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- isArrayLike
--
-- Returns true if the given value is iterable and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArrayLike(v)
if not pcall(pairs, v) then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- invert
--
-- Transposes the keys and values in an array. For example, {"a", "b", "c"} ->
-- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to
-- the index of the last duplicate) and NaN values are ignored.
------------------------------------------------------------------------------------
function p.invert(arr)
checkType("invert", 1, arr, "table")
local isNan = p.isNan
local map = {}
for i, v in ipairs(arr) do
if not isNan(v) then
map[v] = i
end
end
return map
end
------------------------------------------------------------------------------------
-- listToSet
--
-- Creates a set from the array part of the table. Indexing the set by any of the
-- values of the array returns true. For example, {"a", "b", "c"} ->
-- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them
-- never equal to any value (including other NaNs or even themselves).
------------------------------------------------------------------------------------
function p.listToSet(arr)
checkType("listToSet", 1, arr, "table")
local isNan = p.isNan
local set = {}
for _, v in ipairs(arr) do
if not isNan(v) then
set[v] = true
end
end
return set
end
------------------------------------------------------------------------------------
-- deepCopy
--
-- Recursive deep copy function. Preserves identities of subtables.
------------------------------------------------------------------------------------
local function _deepCopy(orig, includeMetatable, already_seen)
if type(orig) ~= "table" then
return orig
end
-- already_seen stores copies of tables indexed by the original table.
local copy = already_seen[orig]
if copy ~= nil then
return copy
end
copy = {}
already_seen[orig] = copy -- memoize before any recursion, to avoid infinite loops
for orig_key, orig_value in pairs(orig) do
copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen)
end
if includeMetatable then
local mt = getmetatable(orig)
if mt ~= nil then
setmetatable(copy, _deepCopy(mt, true, already_seen))
end
end
return copy
end
function p.deepCopy(orig, noMetatable, already_seen)
checkType("deepCopy", 3, already_seen, "table", true)
return _deepCopy(orig, not noMetatable, already_seen or {})
end
------------------------------------------------------------------------------------
-- sparseConcat
--
-- Concatenates all values in the table that are indexed by a number, in order.
-- sparseConcat{a, nil, c, d} => "acd"
-- sparseConcat{nil, b, c, d} => "bcd"
------------------------------------------------------------------------------------
function p.sparseConcat(t, sep, i, j)
local arr = {}
local arr_i = 0
for _, v in p.sparseIpairs(t) do
arr_i = arr_i + 1
arr[arr_i] = v
end
return table.concat(arr, sep, i, j)
end
------------------------------------------------------------------------------------
-- length
--
-- Finds the length of an array, or of a quasi-array with keys such as "data1",
-- "data2", etc., using an exponential search algorithm. It is similar to the
-- operator #, but may return a different value when there are gaps in the array
-- portion of the table. Intended to be used on data loaded with mw.loadData. For
-- other tables, use #.
-- Note: #frame.args in frame object always be set to 0, regardless of the number
-- of unnamed template parameters, so use this function for frame.args.
------------------------------------------------------------------------------------
function p.length(t, prefix)
-- requiring module inline so that [[Module:Exponential search]] which is
-- only needed by this one function doesn't get millions of transclusions
local expSearch = require("Module:Exponential search")
checkType('length', 1, t, 'table')
checkType('length', 2, prefix, 'string', true)
return expSearch(function (i)
local key
if prefix then
key = prefix .. tostring(i)
else
key = i
end
return t[key] ~= nil
end) or 0
end
------------------------------------------------------------------------------------
-- inArray
--
-- Returns true if searchElement is a member of the array, and false otherwise.
-- Equivalent to JavaScript array.includes(searchElement) or
-- array.includes(searchElement, fromIndex), except fromIndex is 1 indexed
------------------------------------------------------------------------------------
function p.inArray(array, searchElement, fromIndex)
checkType("inArray", 1, array, "table")
-- if searchElement is nil, error?
fromIndex = tonumber(fromIndex)
if fromIndex then
if (fromIndex < 0) then
fromIndex = #array + fromIndex + 1
end
if fromIndex < 1 then fromIndex = 1 end
for _, v in ipairs({unpack(array, fromIndex)}) do
if v == searchElement then
return true
end
end
else
for _, v in pairs(array) do
if v == searchElement then
return true
end
end
end
return false
end
------------------------------------------------------------------------------------
-- merge
--
-- Given the arrays, returns an array containing the elements of each input array
-- in sequence.
------------------------------------------------------------------------------------
function p.merge(...)
local arrays = {...}
local ret = {}
for i, arr in ipairs(arrays) do
checkType('merge', i, arr, 'table')
for _, v in ipairs(arr) do
ret[#ret + 1] = v
end
end
return ret
end
------------------------------------------------------------------------------------
-- extend
--
-- Extends the first array in place by appending all elements from the second
-- array.
------------------------------------------------------------------------------------
function p.extend(arr1, arr2)
checkType('extend', 1, arr1, 'table')
checkType('extend', 2, arr2, 'table')
for _, v in ipairs(arr2) do
arr1[#arr1 + 1] = v
end
end
return p
4n03zk6kcoeg4gz82mieeh94c1szcjy
Module:Databox
828
13408
136031
135454
2026-09-04T07:03:12Z
Viyowoyero-vya-Malaŵi
16224
136031
Scribunto
text/plain
-- This extended version of Databox is stored at https://sv.wikipedia.org/wiki/Modul:Databox, but can be used by other languages
-- Versions: (Besides minor adjustments to the property_blacklist and layout)
-- 2024-03-03 Parameter "keep_title_case" to not change first letter to upper case (default false)
-- 2023-06-18 Shows monolingualtext but only in local language - and maximum one value per property
-- Can show any commonsMedia file that has media caption qualifier in the local language, or with content in ("language of work" qualifier) the local language
-- Can show several maps if several coordinates, limited by parameter maxFiles (default 1).
-- 2023-06-11 Locator map image shown if it has media caption in the local language
-- 2020-05-25 Hide "is instance of" -> "human"
-- 2020-05-25 Category:Databox that shows qid code
-- 2020-05-24 Years linked to articles. Decades, centuries and millennia formated in local language.
-- 2020-05-13 P155 (follows) and P156 (followed by) merged into one "Chronology" list, also showing current object.
-- Parameter "list_separator" for replacing comma in lists.
-- 2020-05-10 Parameter "era" for choosing if year "BCE" (or similar in local language) should be replaced by "BC", empty string or other.
-- Upper-case initial letter of P31 (instance of).
-- 2020-05-05 P31 hidden if too long list. Administrative wiki category if too long list.
-- 2020-05-02 More than two parent/child levels in bulleted list.
-- 2020-05-01 Property short names based on P1813. Image legend/caption.
-- 2020-04-28 Properties linked to articles (based on Property:P1629 of the property).
-- Datatype "url" not shown (except for official web site). Input parameter "levels".
-- 2020-04-27 Two higher and two lower levels of child and parent items shown as bulleted list for some properties
-- 2020-04-21 Parameters "width", "height", "zoom" and "list_length". Soft hyphens auto-inserted in long property names.
-- 2020-04-18 (Monolingual text strings hidden.) Property name hidden if no good value. First image shown if several images.
-- 2020-04-16 Description shown (only in local language). First letter of label upper-case.
-- 2020-04-13 Values of datatype "quantity" shown. Pen hidden in printout.
-- 2020-04-13 Mapframe code copied from the 2019-03-04 af.wikipedia.org version.
-- 2020-04-07 Imported from the 2019-04-26 fr.wikipedia.org version
-- Blocked properties:
local property_blacklist = {
'P10280', -- category for honorary citizens of entity
'P1036', -- DDC
'P1149', -- LCC
'P1150', -- RVK
'P1151', -- topic's main Wikimedia portal
'P1190', -- UDC
'P1193', -- prevalence (often different value in different countries)
'P1200', -- bodies of water basin category
'P1204', -- Wikimedia portal's main topic
'P1282', -- OSM tag or key
'P1299', -- depicted by
'P1343', -- described by source
'P1382', -- coincident with
'P1402', -- Foundational Model of Anatomy ID
'P1423', -- template's main topic
'P1424', -- topic's main template
'P1433', -- published in
'P1438', -- Jewish Encyclopedia ID (Russian)e
'P1461', -- Patientplus ID
'P1464', -- category for people born here
'P1465', -- category for people who died here
'P1472', -- Commons Creator page
'P1559', -- name in native language
'P1612', -- Commons Institution page
'P1687', -- Wikidata main property for this item
'P1692', -- ICD-9-CM code
'P1709', -- equivalent class
'P1740', -- category for films shot at this location
'P1748', -- NCI Thesaurus ID
'P1753', -- list related to category
'P1754', -- category related to list
'P1791', -- category of people buried here
'P1792', -- category of associated people
'P1793', -- format as a regex
'P1814', -- Japanese name in kana
'P1830', -- owner of (seldom useful)
'P1889', -- different from
'P1921', -- Wikidata RDF URI format
'P1963', -- properties for this type
'P1987', -- MCN code
'P2033', -- Category for pictures taken with camera
'P217', -- inventory number
'P2176', -- drug used for treatment (we avoid medical advise)
'P2184', -- History of subject. (Should be shown if article in local language)
'P2263', -- ISOCat id
'P2283', -- Uses
'P2293', -- genetic association
'P2354', -- list article (seldom available in local language)
'P2445', -- metasubclass of
'P2517', -- category for recipients of this award
'P2540', -- Aarne–Thompson–Uther Tale Type Index
'P2559', -- Wikidata usage instructions
'P2572', -- hashtag
'P2670', -- has parts of the class
'P2737', -- union of
'P2738', -- disjoint union of
'P2817', -- appears in the heritage monument list
'P2860', -- cites
'P2888', -- exact match
'P2959', -- permanent duplicated item
'P301', -- category's main topic
'P3113', -- does not have part
'P3176', -- uses property
'P360', --is a list of
'P3722', -- Commons maps category
'P373', -- Commons category
'P3761', -- IPv4 range
'P3876', -- category for alumni of educational institution
'P3921', -- Wikidata SPARQL query equivalent
'P3950', -- narrower external class
'P4195', -- category for employees of the organization
'P4224', --category contains
'P4354', -- search formatter URL
'P460', -- said to be the same as
'P461', -- opposite of
'P4839', -- Wolfram Language entity code
'P487', -- Unicode character
'P4969', -- derivative work
'P5008', -- on focus list of Wikimedia project
'P5125', -- wikimedia outline
'P528', -- catalog code
'P553', -- web site account
'P5692', -- Wikidata dummy value
'P5869', -- model item
'P5996', -- Category for films in this language
'P6104', -- Maintained by Wikiproject
'P6112', -- category for members of a team
'P6216', -- copyright status
'P6344', -- rural population
'P6365', -- member category
'P667', -- ICPC 2 ID
'P6686', -- musical motif (not supported)
'P7084', -- related category
'P747', -- editions
'P7561', -- for the interior of the item
'P7763', -- copyright status as a creator
'P7782', -- category for ship name
'P7867', -- category for maps
'P7973', -- quantity symbol (LaTeX)
'P8402', -- open data portal
'P859', -- sponsor
'P8596', -- category for multimedia files depicting exterior views of this item
'P8687', -- social media followers
'P8933', -- category for the view from the item
'P8989', -- category for the view of the item
'P910', -- topic's main category
'P935', -- Commons gallery
'P944', -- Code of nomenclature
'P968', -- email
'P971', -- category combines topics
'P972', -- catalogue
'P989', -- spoken text. (Should be shown if in local language)
}
-- Exceptions to the datatype blocking:
local property_whitelist = {
'P856', -- official website
'P3896',-- geoshape
'P345', -- IMDB id
'P6375' -- street address
}
-- Properties with higher level items:
local properties_with_parents = {
'P131', -- located in the administrative territorial entity
'P144', -- based on
'P155', -- follows
'P171', -- parent taxon
'P276', -- location
'P279', -- subclass of
'P361', -- part of
'P706', -- located on terrain feature
'P749', -- parent organization
'P807', -- separated/forked from
'P1365', -- replaced
'P1647', -- subproperty of
'P3730' -- next higher rank
}
local properties_with_children = {
-- Properties with lower level items:
'P150', -- contains administrative territorial entity
'P156', -- followed by
'P355', -- subsidiary
'P527', -- has part
'P1012', -- contains
'P1366', -- replaced by
'P3729', -- next lower rank
'P4330', -- contains
'P7888' -- merged into
}
local function buildInteractiveMap(width, point, item_id, zoom)
--Utility function to build maps
local geojson = {
{
type = 'Feature',
geometry = {
type = "Point",
coordinates = {point.longitude, point.latitude}
},
properties = {
title = point.text or '',
['marker-symbol'] = point.marker or 'marker',
['marker-color'] = point.markercolor or "#224422",
}
}
}
local args = {
['height'] = width,
['width'] = width,
['frameless'] = 'frameless',
['align'] = 'center',
['latitude'] = point.latitude,
['longitude'] = point.longitude,
['zoom'] = zoom,
['lang'] = lang -- fallbacks to wiki language if local name is missing. )
}
return mw.getCurrentFrame():extensionTag('mapframe', mw.text.jsonEncode(geojson), args)
end
function Set(list) -- values to booleans with keys
local set = {}
for _, l in pairs(list) do
set[l] = true
end
return set
end
function listCase(str)
-- Capitalizes first visible character of list produced by formatStatements()
-- Example: <span><span>[[link|first item]]</span>, <span>second item</span></span>
-- --> <span><span>[[link|First item]]</span>, <span>second item</span></span>
return str
:gsub('^<span><span>%[%[(.-)|(.-)%]%]</span>',
function(a,b)
return '<span><span>[[' .. a .. '|'
.. b:gsub('^%l', string.upper)
.. ']]</span>'
end)
:gsub('^<span><span>(%l)',
function(a)
return '<span><span>' ..string.upper(a)
end)
end
function listSeparate(str, list_separator)
-- Replaces comma in list produced by formatStatements()
-- Example: list_separator = ';<br>'
-- str = <span><span>[[link|first item]]</span>, <span>second item</span></span>
-- -> <span><span>[[link|first item]]</span>;<br> <span>second item</span></span>
if list_separator ~= ',' then
return str
:gsub('</span>,', '</span>'..list_separator)
else
return str
end
end
function hyphenate(str, lang)
-- Inserts soft hyphens in long words, typically before each consonant that is followed by a vowel (lower-case letters)
-- Should work good enough for most languages. Language specific exceptions may be added.
local nonHyphenatedLanguages = Set{'ar', 'he', 'zh', 'ja', 'ko', 'vi', 'fa', 'ps'}
if nonHyphenatedLanguages[lang] then -- Not languages without alphabetic writing system or with few vowels
return str
end
result = ''
for word in str:gmatch("%S+") do
if #word < 10 then
result = result .. ' ' .. word
else
result = result .. ' '
.. word:sub(1,3) -- Not too early in word
.. word:sub(4)
:gsub("([bcdfghjklmnpqrstvwxzđçčĉñŋĝĥĵŝšŧžßÐðþğşśćńŁżźбвгжийклмнпрст]"
.. "[aouåeiyäöæøáéíóúýàèâêëüãŭœāēīōūəąęóадеёзоу])",
"­%1") -- Insert soft-hyphens before each consonant that is followed by vowel
:gsub("­([\128-\193])", "%1" ) -- Revert split of two-byte UTF-8 character
:gsub("-(%a?%a?%a?%a?)­", "-%1"):gsub("­(%a?%a?%a?%a?)-", "%1-") -- Not too near a hard hyphen
-- Some Scandinavian exceptions for wikidata properties, relevant to similar languages:
:gsub("­x", "x­") -- Example: tids-komp-le-xi-tet -> tids-komp-lex-i-tet
:gsub("sc­h", "­sch") -- Example: sc-h -> -sch
:gsub("ss­j", "s­sj")-- Example: ss-j-> s-sj
:gsub("n­g", "ng­") -- Example: n-g -> ng-
:gsub("ngs", "ngs­") -- Example: Befolk-ningsg-rup-pe -> Befolk-nings-g-rup-pe, Rege-ring-s-che-fens -> Rege-rings-chefens
:gsub("g­rup­pe", "­gruppe") -- Example: g-rup-pe -> -gruppe
:gsub("nist­ra", "nis­tra") -- Example: admi-nist-ra-tion -> admi-nis-tra-tion
:gsub("­ror­ga[­]*n", "r­organ") -- Example: dotte-ror-ga-ni-sa-tion -> dotter-organi-sa-tion
:gsub("­rob[­]*jek", "r­objek") -- Example: dot-te-rob-jekt -> dot-ter-objekt
:gsub("s­ta­tus", "­status") -- Example: skydds-status
:gsub("k­las[­]*s", "­klass") -- Example: deci-malk-las-si-fi-ka-tion -> deci-mal-klas-si-fi-ka-tion
:gsub("­nom­rå­de", "n­område") -- Example: vatte-nom-rå-de -> vatten-område
:gsub("­som­rå­de", "s­område") -- Example: Rets-gyl-dig-hed-som-rå-de -> Rets-gyl-dig-heds-om-rå-de
:gsub("ra­lort", "ral­ort") -- Example: central-ort
:gsub("s­kydd", "­skydd") -- Example: Kul-turs-kydd -> Kul-tur-skydd
:gsub("k­ri­te­ri", "­kri­te­ri")-- Example: Värld-sarvsk-ri-te-rium -> Värld-sarvs-kri-te-rium
:gsub("guasp­he", "gua­sphe") -- Example: lingua-sphere
:gsub("gars­kap", "gar­skap") -- Example: medbor-gars-kap -> medbor-gar-skap
:gsub("k­var­ter", "­kvarter") -- Example: Hovedk-var-ter -> Hoved-kvarter
:gsub("s­ted", "­sted") -- Example: Pro-duk-tionss-ted -> Pro-duk-tions-sted
:gsub("t­rä­dan­de", "­trä­dan­de") -- Example: plats för förs-ta framt-rä-dan-de -> plats för förs-ta fram-trä-dan-de
:gsub("­­", "­") -- Example -- -> -
end
end
return result:sub(2,-1)
-- :gsub("­", "-") -- Show soft hyphens as hard hyphens. Only for sandboxed test purposes.
end
function year(str, lang, replaceTime)
-- Postprocesses years (datatype time) in local language
-- Incorrect formating of the first decade.
if lang == 'sv' then
str = str
:gsub("<span>0</span>", "<span>00-talet</span>")
:gsub("<span>0 BCE</span>", "<span>00-talet f.v.t.</span>")
end
-- Replace BCE with BC (or corresponding in local language) depending on era template parameter:
if replaceTime then
for p,r in pairs(replaceTime) do
str = str:gsub(p, r)
end
end
-- Link years to articles:
str = str
:gsub("([%s>])(%d?%d?%d?%d)</span>", "%1[[%2]]</span>") -- April 1852 -> April [[1852]]
:gsub("([%s>])(%d?%d?%d?%d) ([%a%.]*)</span>", "%1[[%2 %3]]</span>") -- April 20 BCE -> April [[20 BCE]]
-- Format decades, centuries and millennias correctly in local language, and link to articles:
if lang=='sv' then
str = str
:gsub("(%d?1%d)%.? år([h|t])(%a+)det?", "%1:e år%2%3det") -- 12. årtusende -> 12:e årtusendet
:gsub("(%d?%d?[1-2])%.? år([h|t])(%a+)det?", "%1:a år%2%3det") -- 2. århundrade -> 2:a århundradet
:gsub("(%d?%d?[0,3-9])%.? år([h|t])(%a+)det?", "%1:e år%2%3det") -- 13 århundrandet f.Kr. -> 13:e århundradet f.Kr
:gsub("<span>(%d?%d?%d?)00-talet</span>", "<span>[[%100-talet (decennium)]]</span>") -- 1900-talet -> [[1900-talet (årtionde)]]
:gsub("<span>(%d?%d?%d?)00-talet ([%a%.]*)</span>", "<span>[[%100-talet (decennium) %2]]</span>") -- 100-talet f.Kr. -> [[100-talet f.Kr. (decennium)]]
:gsub("(%d?%d?%d):[a|e] århundradet",
function(a)
return tonumber(a)-1 .. '00-talet'
end) -- 21:a århundradet -> 2000-talet
:gsub("<span>(%d+)-talet</span>", "<span>[[%1-talet]]</span>") -- 2000-talet -> [[2000-talet]]
:gsub("<span>(%d+)-talet ([%a%.]*)</span>", "<span>[[%1-talet %2]]</span>") -- 000-talet f.Kr. -> [[000-talet f.Kr.]]
:gsub("(%d?%d?%d):[a|e] årtusendet",
function(a)
return tonumber(a)-1 .. '000-talet'
end) -- 2:a århundradet -> 2000-talet
:gsub("<span>(%d+)-talet</span>", "<span>[[%1-talet (millennium)]]</span>") -- 2000-talet -> [[2000-talet (millennium)]]
:gsub("<span>(%d+)-talet ([%a%.]*)</span>", "<span>[[%1-talet %2 (millennium)]]</span>") -- 0000-talet f.Kr. -> [[0000-talet f.Kr. (millennium)]]
end
return str
end
local p = {}
function p.databox(frame)
local args = frame:getParent().args
local itemId = nil
if args.item then
itemId = args.item
end
local item = mw.wikibase.getEntity(itemId)
if item == nil then
mw.addWarning("Wikidata item not found")
return ""
end
local width = '260' -- default max width of template, image and map, and height of map
if args.width then
width = args.width
end
local height = '240' -- default max height of image. hidden if <= 0.
if args.height then
height = args.height
end
local zoom = 12 -- default map zoom level. hidden if <0.
if args.zoom then
zoom = tonumber(args.zoom)
end
local list_length = 8 -- default max no of values in lists
if args.list_length then
list_length = tonumber(args.list_length)
end
local list_separator = ',' -- default no replacement of comma in lists
if args.list_separator then
list_separator = args.list_separator
end
local levels = 3 -- default max no of child and parent levels
if args.levels then
levels = tonumber(args.levels)
end
local maxFiles = 1 -- default max no of coordinate location maps
if args.maxFiles then
maxFiles = tonumber(args.maxFiles)
end
local langObject = mw.language.getContentLanguage()
local lang = langObject:getCode()
local langIdDict = { -- Dictionary for translating language code to language Wikidata item id
['af'] = 'Q14196',
['atj'] = 'Q56590',
['be-tarask'] = 'Q8937989',
['ca'] = 'Q7026',
['ceb'] = 'Q33239',
['ckb'] = 'Q36811',
['cs'] = 'Q9056',
['da'] = 'Q9035',
['dag'] = 'Q32238',
['de'] = 'Q188',
['en'] = 'Q1860',
['es'] = 'Q1321',
['ewe'] = 'Q30005',
['fi'] = 'Q1412',
['fa'] = 'Q9168',
['fr'] = 'Q150',
['frr'] = 'Q28224',
['haw'] = 'Q33569',
['he'] = 'Q9288',
['hi'] = 'Q1568',
['it'] = 'Q652',
['ja'] = 'Q5287',
['kab'] = 'Q35853',
['ko'] = 'Q9176',
['mzn'] = 'Q13356',
['nap'] = 'Q33845',
['nds'] = 'Q25433',
['nl'] = 'Q10000',
['no'] = 'Q9043',
['nqo'] = 'Q18546266',
['pap'] = 'Q33856',
['pl'] = 'Q809',
['pcm'] = 'Q33655',
['pt'] = 'Q5146',
['ru'] = 'Q7737',
['rue'] = 'Q26245',
['sh'] = 'Q9301',
['sv'] = 'Q9027',
['tr'] = 'Q256',
['uk'] = 'Q8798',
['vi'] = 'Q9199',
['zh'] = 'Q7850'
}
local dump = ''
local langId -- Local language Wikidata item id
langId = langIdDict[lang] or nil
local edit_message = mw.message.new('vector-view-edit'):plain() .. ' Wikidata'
-- Date formating
local bceDict = { -- Dictionary: Before current era (BCE) in different languages
['da'] = 'f.v.t.',
['en'] = 'BCE',
['sv'] = 'f.v.t.'
}
local bcDict = { -- Dictionary: Before Christ (BC) in different languages
['da'] = 'f.Kr.',
['en'] = 'BC',
['sv'] = 'f.Kr.'
}
local bc = bcDict[lang] or 'BC'
local bce = bceDict[lang] or 'BCE'
local era = bc -- default era
if args.era then
if args.era == 'BC' then
era = bc -- replace 'BCE' by 'BC' in content language
elseif args.era == 'BCE' then
era = bce -- replace 'BC' by 'BCE' in content language
else
era = args.era -- replace 'BCE' and 'BC' by arbitrary argument value, for example empty string
end
end
local replaceTime = {} -- global variable
replaceTime[' BCE'] = ' '..era
replaceTime[' '..bce] = ' '..era
replaceTime[' '..bc] = ' '..era
local noValueDict = { -- Dictionary: No value
['da'] = 'ingen værdi',
['en'] = 'no value',
['sv'] = 'inget värde'
}
local wikicategory = ''
local databoxRoot = mw.html.create('div')
:addClass('infobox')
:css({
float = 'right',
clear = 'right',
border = '1px solid #aaa',
['background-color'] = '#f9f9f9',
['width'] = width .. 'px',
padding = '0 0.4em',
margin = '0 0 0.4em 0.4em',
})
--Title
local title = item:getLabel() or mw.title.getCurrentTitle().text
if args.keep_title_case == nil or #args.keep_title_case == 0 or args.keep_title_case == 'false' then
title = langObject:ucfirst(title)
end
databoxRoot:tag('div')
:css({
['text-align'] = 'center',
['background-color'] = 'LightGrey',
padding = '0em 0.4',
margin = '0em 0',
['font-size'] = '120%',
['font-weight'] = 'bold',
})
:wikitext(title)
--Description
local descr, descrLang = item:getDescriptionWithLang()
if descrLang == lang then -- Do not show any fallback language
databoxRoot:tag('div')
:css({
['text-align'] = 'center',
['vertical-align'] = 'text-top',
['font-size'] = '90%',
['line-height'] = '140%',
padding = '0.2em 0.4',
margin = '0.0em 0.4',
['padding-bottom'] = '0.5em',
})
:wikitext(langObject:ucfirst(descr):sub(1,-1))
:wikitext('<sup class="noprint Inline-Template"> [[File:Arbcom_ru_editing.svg|'
.. edit_message .. '|8px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/'
.. item.id .. ']]</sup>')
end
--Show first good image with legend/caption in content language, or first good image
if tonumber(height) > 0 then
local images = item:getBestStatements('P18') -- p18 is 'image'
if #images >= 1 then
local image = images[1]
for _, i in pairs(images) do
if i.qualifiers and i.qualifiers.P2096 then -- P2096 is 'caption'
for _, c in pairs(i.qualifiers.P2096) do
if c.snaktype == 'value' and c.datavalue.value.language == lang then
caption = c
image = i
break
end
end
end
if caption then
break
end
end
if image.mainsnak.snaktype == 'value' then
databoxRoot
:tag('div')
:css({
['text-align'] = 'center',
padding = '0.0em 0.4',
})
:wikitext('[[File:' .. image.mainsnak.datavalue.value .. '|frameless|'
.. width .. 'x' .. height .. 'px]]')
if caption then
databoxRoot
:tag('div')
:css({
['text-align'] = 'center',
['font-size'] = '90%',
['line-height'] = '140%',
['padding-bottom'] = '0.5em',
})
:wikitext(caption.datavalue.value.text)
:wikitext('<sup class="noprint Inline-Template"> [[File:Arbcom_ru_editing.svg|'
.. edit_message .. '|8px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/'
.. item.id .. '#' .. 'P18' .. ']]</sup>')
end
end
end
end
--Table:
local dataTable = databoxRoot
:tag('table')
:css({
['text-align'] = 'left',
['font-size'] = '90%',
['line-height'] = '140%',
['hyphens'] = 'auto', -- works only in some browsers and languages
['word-break'] = 'break-word',
['width'] = '100%',
['table-layout'] = 'fixed',
['padding-bottom'] = '0.5em',
})
--Instance of:
local dataValues
local statements = item:getBestStatements('P31')
if #statements > list_length then -- Hide too long list of values
if lang == 'sv' then
wikicategory = wikicategory .. '[[Kategori:Databox med dold lång lista]]'
end
elseif #statements >= 1 then
dataValues=item:formatStatements('P31').value
if lang == 'sv' then
if dataValues:match("<span>%[%[Människa|människa%]%]</span>") then -- Remove 'is instance of' -> 'human' TODO: Same for other languages
if #statements == 1 then
dataValues = ''
else
dataValues = dataValues:gsub("<span>%[%[Människa|människa%]%]</span>,?%s?", "")
end
end
elseif lang == 'da' then
if dataValues:match("<span>%[%[Menneske|menneske%]%]</span>") then -- Remove 'is instance of' -> 'human'
if #statements == 1 then
dataValues = ''
else
dataValues = dataValues:gsub("<span>%[%[Menneske|menneske%]%]</span>,?%s?", "")
end
end
end
dataValues = dataValues:gsub(", </span>$", "</span>") -- Removing ending comma after removed ", human"
if #dataValues > 0 then
dataValues=listCase(dataValues)
dataTable:tag('caption')
:css({
['background-color'] = 'LightGrey',
['font-weight'] = 'bold',
['margin-top'] = '0.4em',
margin = '0.5em 0',
padding = '1em 1',
})
:wikitext(dataValues)
:wikitext('<sup class="noprint Inline-Template"> [[File:Arbcom_ru_editing.svg|'
.. edit_message .. '|8px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/'
.. item.id .. '#P31' .. ']]</sup>')
if #statements >= math.max(list_length-3,3) and lang == 'sv' then -- warning of long list but not too long list
wikicategory = wikicategory .. '[[Kategori:Databox med lång lista]]'
end
end
end
local properties = mw.wikibase.orderProperties(item:getProperties())
local property_blacklist_hash = Set(property_blacklist)
property_blacklist_hash['P18'] = true --Showed separately
property_blacklist_hash['P31'] = true --Showed separately
local property_whitelist_hash = Set(property_whitelist)
local properties_with_parents_hash = Set(properties_with_parents)
local properties_with_children_hash = Set(properties_with_children)
local countryid = ' '
pcall(function ()
countryid = item.claims['P17'][1].mainsnak.datavalue.value.id
end)
for _, property in pairs(properties) do
local datatype = item.claims[property][1].mainsnak.datatype
local statements = item:getBestStatements(property)
if ( (datatype ~= 'external-id'
and datatype ~= 'commonsMedia'
and datatype ~= 'url')
or property_whitelist_hash[property] )
and not property_blacklist_hash[property]
and 1 <= #statements then
if #statements > list_length then
if lang == 'sv' then
wikicategory = wikicategory .. '[[Kategori:Databox med dold lång lista]]'
end
else
local propertyValue = item:formatStatements(property)
propertyValue.label = langObject:ucfirst(hyphenate(propertyValue.label, lang)) -- left table cell content
local propertyEntity = mw.wikibase.getEntity(property) -- Time consuming
if propertyEntity then
-- Replace property name by short name if only one in content language:
if propertyEntity['claims']['P1813'] then
local shortNames = propertyEntity['claims']['P1813'] -- 'P1813' = short name.
shortname = ''
for _, s in pairs(shortNames) do
if s.mainsnak.snaktype == 'value'
and s.mainsnak.datavalue.value.language == lang then -- (Should check that only one value is in the content lang)
if #shortname > 0 then
shortname = ''
break -- Several shortnames in the local language
end
shortname = s.mainsnak.datavalue.value.text
end
end
if #shortname > 0 then
propertyValue.label = langObject:ucfirst(hyphenate(shortname, lang))
end
end
-- Link row label (property name) to related article in content language:
local propertySubjects = propertyEntity:getBestStatements('P1629') -- 'P1629 = subject item of this property'
if #propertySubjects == 1
and propertyEntity['claims']['P1629'][1].mainsnak.snaktype == 'value' then
local subjectItemQid = propertyEntity['claims']['P1629'][1].mainsnak.datavalue.value.id
articleSitelink = mw.wikibase.getSitelink(subjectItemQid)
if articleSitelink ~= nil then -- Property subject item has local article
propertyValue.label = '[[' .. articleSitelink .. '|' .. propertyValue.label .. ']]'
end
end
end
local dataValues -- right table cell content
if #statements == 1
and levels >= 2
and (properties_with_parents_hash[property]
or properties_with_children_hash[property])
then
dataValues = propertyValue.value
if merged_chronology and property == 'P156' then -- If 'P155' (follows) already shown as bulleted list, P156 (followed by) should be part of same list.
propertyValue.label = '' -- Hide 'Followed by' in left column
end
if property == 'P155' or property == 'P156' then -- follows or followed by
dataValues = '• ' .. dataValues
end
local level = {}
-- Show parent/child item if any:
if item['claims'][property][1].mainsnak.snaktype == 'value' then
level[1] = {}
level[1].value = item['claims'][property][1].mainsnak.datavalue.value -- (Can give non-best statement?)
level[1].item = mw.wikibase.getEntity(level[1].value.id) -- Time consuming
level[1].statements = mw.wikibase.getBestStatements(level[1].item.id, property)
end
if item['claims'][property][1].mainsnak.snaktype == 'value'
and #level[1].statements == 1 and level[1].statements[1].mainsnak.datavalue then
level[1].qid = level[1].statements[1].mainsnak.datavalue.value.id
if level[1].qid ~= countryid then -- do not repeat country as administrative belonging or place
level[1].propertyValue = level[1].item:formatStatements(property)
if level[1].propertyValue then
-- Show multi-level list as bulleted list:
if not (property == 'P155' or property == 'P156') then
dataValues = '• ' .. dataValues
end
level[1].qid = level[1].statements[1].mainsnak.datavalue.value.id
if properties_with_children_hash[property] then -- next lower level / child item: put in end of the list.
if property == 'P156' then -- follows
dataValues = dataValues
.. '<br/>• ' .. level[1].propertyValue.value
else -- indent
dataValues = dataValues
.. '<br/>' .. ' • ' .. level[1].propertyValue.value
end
else -- next higher level / parent item: put first in list
if property == 'P155' then -- followed by
dataValues = '• ' .. level[1].propertyValue.value
.. '<br/>' .. dataValues
else -- indent
dataValues = '• ' .. level[1].propertyValue.value
.. '<br/> ' .. dataValues
end
end
local lc = 2 -- level counter
while lc<levels and level[lc-1].item.claims[property][1].mainsnak.datavalue do
level[lc]={}
level[lc].value = level[lc-1].item.claims[property][1].mainsnak.datavalue.value -- (Best statement?)
level[lc].item = mw.wikibase.getEntity(level[lc].value.id) -- Time consuming
level[lc].statements = mw.wikibase.getBestStatements(level[lc].item.id, property)
if #level[lc].statements > 0 and level[lc].statements[1].mainsnak.datavalue then
level[lc].qid = level[lc].statements[1].mainsnak.datavalue.value.id
if #level[lc].statements == 1
and level[lc].qid ~= countryid -- do not repeat country as administrative belonging or place
then
level[lc].propertyValue = level[lc].item:formatStatements(property) -- (Best statement?)
if properties_with_children_hash[property] then -- next lower level / child item
if property == 'P156' then -- follows
dataValues = dataValues .. '<br/>'
.. '• ' .. level[lc].propertyValue.value
else -- indent
dataValues = dataValues .. '<br/>'
.. string.rep(' ', lc) .. '• ' .. level[lc].propertyValue.value
end
else -- next higher level / parent item
if property == 'P155' then -- followed by
dataValues = '• ' .. level[lc].propertyValue.value
.. '<br/>' .. dataValues
else -- indent
dataValues = '• ' .. level[lc].propertyValue.value
.. '<br/> ' .. dataValues:gsub('<br/>', '<br/> ')
end
end
lc = lc+1
else
break
end
else
break
end
end -- while lc
if lang == 'sv' then
wikicategory = wikicategory .. '[[Kategori:Databox med ' .. lc .. ' nivåer]]'
end
end
end
end
if property == 'P155' then -- P155 (follows) was a bulleted list
if level[1] then
followed_by = mw.wikibase.getBestStatements(level[1].item.id, 'P156')
if followed_by and #followed_by == 1 then -- P156 (followed by) may also be a bulleted list
-- Show merged chronology list, including this wikidata object
dataValues = dataValues
.. "<br>• \'\'\'" .. item:getLabel() .. "\'\'\'"
if lang == 'da' or lang == 'sv' then
propertyValue.label = 'Kronologi'
merged_chronology = true
end
if lang == 'en' then
propertyValue.label = 'Chronology'
merged_chronology = true
end
end
end
end
else -- not a multi-level list
if datatype == 'url' then -- only show first url
if statements[1].mainsnak.snaktype == 'value' then
if #statements[1].mainsnak.datavalue.value>40 then -- replace long url by "link"
if lang == 'sv' then
dataValues = frame:preprocess('[' .. statements[1].mainsnak.datavalue.value .. ' länk]')
else
dataValues = frame:preprocess('[' .. statements[1].mainsnak.datavalue.value .. ' link]')
end
else -- hide "https://" or "http:// and / in the end"
dataValues = frame:preprocess('[' .. statements[1].mainsnak.datavalue.value
.. ' ' .. statements[1].mainsnak.datavalue.value:gsub('https?://', ''):gsub('/$', '') .. ']')
end
end
elseif datatype == 'geo-shape' then -- only show first geo-shape
if lang == 'sv' then
dataValues = frame:preprocess('[https://commons.wikimedia.org/wiki/'
.. statements[1].mainsnak.datavalue.value:gsub(' ', '_') .. ' kartlänk]')
else
dataValues = frame:preprocess('[https://commons.wikimedia.org/wiki/'
.. statements[1].mainsnak.datavalue.value:gsub(' ', '_') .. ' link]')
end
elseif datatype == 'monolingualtext' then
for _, s in pairs(statements) do
if s.mainsnak.snaktype == 'value'
and s.mainsnak.datavalue.value.language == lang then
dataValues = frame:preprocess(s.mainsnak.datavalue.value)
if lang == 'sv' then
wikicategory = wikicategory .. '[[Kategori:Databox med monolingualtext]]'
end
break -- Maximum one monolingualtext per property
end
end
else
dataValues = frame:preprocess(propertyValue.value)
if #statements > 1 then
dataValues = listSeparate(dataValues, list_separator)
end
if datatype == 'time' then
dataValues = year(dataValues, lang, replaceTime)
end
if #statements >= math.max(list_length-3,3)
and lang == 'sv' then --Warning on long but not hidden list
wikicategory = wikicategory .. '[[Kategori:Databox med lång lista]]'
end
end
end
-- Replace "no value" with a dash:
if dataValues and noValueDict[lang] then
dataValues = dataValues:gsub('<span>' .. noValueDict[lang] .. '</span>', '<span>–</span>')
end
-- Render table row:
if dataValues and dataValues ~= '<span>–</span>' then
dataTable:tag('tr')
:tag('th')
:css({
['vertical-align'] = 'text-top',
})
:attr('scope', 'row')
:attr('colspan', '1')
:wikitext(frame:preprocess(propertyValue.label)):done()
:tag('td')
:css({
['vertical-align'] = 'text-top',
})
:attr('colspan', '2')
:wikitext(dataValues)
:wikitext('<sup class="noprint Inline-Template"> [[File:Arbcom_ru_editing.svg|'
.. edit_message .. '|8px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/'
.. item.id .. '#' .. property .. ']]</sup>')
end -- if dataValues
end -- if #statements
end -- if datatype
end -- for property
--Automatic coordinate location map(s)
if zoom >= 0 then
local coordinates_statements = item:getBestStatements('P625') -- P625 is coordinate location
local cnt = 0
for _, s in pairs(coordinates_statements) do
if s.mainsnak.datavalue and s.mainsnak.datavalue.value.globe == 'http://www.wikidata.org/entity/Q2' then
cnt = cnt + 1
databoxRoot:wikitext(buildInteractiveMap(width, s.mainsnak.datavalue.value, item.id, zoom))
if lang == 'sv' then
if cnt == 1 then
wikicategory = wikicategory .. '[[Kategori:Sidor med kartor skapade med Databox]]' .. ' '
else
wikicategory = wikicategory .. '[[Kategori:Sidor med flera kartor skapade med Databox]]' .. ' '
end
end
end
if cnt >= maxFiles then
break -- Show maximum maxFiles maps or coordinates.
end
end -- for
end
--Other commonsMedia files: show first good file for each property that have media legend in content language
if tonumber(height) > 0 then
for _, property in pairs(properties) do
local datatype = item.claims[property][1].mainsnak.datatype
local statements = item:getBestStatements(property)
if (datatype == 'commonsMedia')
and not property_blacklist_hash[property]
and property ~= 'P18' then -- Image showed separately
local files = item:getBestStatements(property)
if #files >= 1 then
local file
local caption
for _, i in pairs(files) do
if i.qualifiers then
if i.qualifiers.P2096 then -- P2096 is 'caption'
for _, q in pairs(i.qualifiers.P2096) do
if q.snaktype == 'value' and q.datavalue.value.language == lang then
caption = q
file = i
break
end
end
elseif langId and i.qualifiers.P407 then -- P407 is 'language of work or name'
for _, q in pairs(i.qualifiers.P407) do
if q.snaktype == 'value'
and q.datavalue.value.id == langId -- local language
then
file = i
break
end
end
end
end -- if i.qualifiers
if file then
break
end
end -- for _, i in pairs(files)
if file then
if caption then
databoxRoot
:tag('div')
:css({
['text-align'] = 'center',
padding = '0.0em 0.4',
})
:wikitext('[[File:' .. file.mainsnak.datavalue.value .. '|frameless|'
.. width .. 'x' .. height .. 'px]]')
databoxRoot
:tag('div')
:css({
['text-align'] = 'center',
['font-size'] = '90%',
['line-height'] = '140%',
['padding-bottom'] = '0.5em',
})
:wikitext(caption.datavalue.value.text)
:wikitext('<sup class="noprint Inline-Template"> [[File:Arbcom_ru_editing.svg|'
.. edit_message .. '|8px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/'
.. item.id .. '#' .. property .. ']]</sup>')
else -- no caption
databoxRoot
:tag('div')
:css({
['text-align'] = 'center',
padding = '0.0em 0.4',
})
:wikitext('[[File:' .. file.mainsnak.datavalue.value .. '|frameless|'
.. width .. 'x' .. height .. 'px]]')
databoxRoot
:tag('div')
:css({
['text-align'] = 'center',
['font-size'] = '90%',
['line-height'] = '140%',
['padding-bottom'] = '0.5em',
})
end -- if caption
if lang == 'sv' then
if property == 'P242' then -- P242 is 'locator map image'
wikicategory = wikicategory .. '[[Kategori:Sidor med översiktskartor skapade med Databox]]' .. ' '
else
wikicategory = wikicategory .. '[[Kategori:Sidor med andra mediafiler i Databox]]' .. ' '
end
end
end -- if file
end -- if #files
end -- if datatype
end -- for _, property
end -- if height
--Category
if mw.title.getCurrentTitle().namespace == 0 then -- Only in main namespace
if tostring(databoxRoot):match('<span>Q%d+</span>') then
if lang == 'da' then
wikicategory = wikicategory .. '[[Kategori:Databox der viser Qid-kode]]' .. ' '
elseif lang == 'sv' then
wikicategory = wikicategory .. '[[Kategori:Databox som visar qid-kod]]' .. ' '
elseif lang == 'en' then
wikicategory = wikicategory .. '[[Category:Databox that shows qid code]]' .. ' '
elseif lang == 'frr' then
wikicategory = wikicategory .. '[[Kategorie:Databox mit Qid-Code]]' .. ' '
end
end
if #wikicategory then
databoxRoot:wikitext(wikicategory)
end
end
if #dump then
databoxRoot:wikitext(dump)
end
return tostring(databoxRoot)
end -- function
return p
827jtdogzwyxxxaot9y2az7398zbvmu
Laetitia Malira Tembeya
0
15305
136019
2026-09-03T11:59:17Z
Jacques RADJABU
14442
likwe ya mokuse
136019
wikitext
text/x-wiki
Laetitia Malira Tembeya (abotámí o mokɔlɔ 11 sánzá ya zómi na míbalé 1999 na [[Goma]], ekolo [[:fr:République_démocratique_du_Congo|Congo démocratique)]] azali mopanzi-nsango ya kala ya bana, mobundi ya [[:fr:Droits_de_l'enfant|makoki ya bana]], mpe mokomi ya Congo. Ayebani mpo na komipesa na ye na bilenge na est ya Congo, botomboli na ye na kati ya Parlement ya bana, mpe kosangana na ye na misala ndenge na ndenge ya etuka na etuka ya Grands Lacs.
== Lisolo ya bomoi ==
Bilenge mpe Boyekoli
Laetitia Malira Tembeya asilisaki kelasi na ye ya ebandeli na CS Mama Mulezi na Goma<ref>https://www.radiookapi.net/recherche?search_api_views_fulltext=CS+Mama+Mulezi+%C3%A0+Goma</ref>. Akobaki ba études secondaires na ye na Institut Mwanga mpe sima na Institut Mont-Goma, nionso mibale na mboka na ye.
== Ebandeli lokola mopanzi sango ya mwana ==
Na mbula 14, akota na réseau ya ba journalistes ya bana ya [[Goma]]. Na nzela ya réseau oyo, asanganaki na Forum ya Elikya, bokutani ya bilenge ya mikili mingi na etuka ya Grands Lacs.<ref>https://ponabana.com/bujumbura-par-bus-une-longue-marche-vers-la-paix/</ref>
Asali mpe na film A Long Walk to Peace, production collaborative oyo esalemaki na ba journalistes ya bana mike ya RDC mpe ba pays voisins misusu. Filme yango emonisi bopusi oyo matata ezali na yango likoló na bana mpe bamposa na bango oyo bazali na yango mpo na kimya.
== Mikano na Parlement ya Bana ==
Uta sanza ya misato 2014, Laetitia Malira Tembeya azali mosangani ya Parlement ya bana – Zone orientale RDC<ref>https://www.radiookapi.net/2016/11/20/actualite/societe/goma-le-parlement-denfants-oppose-leur-utilisation-dans-les</ref>.
Azali kosala lokola Mokambi ya Commission ya Education, Games, Culture, and Recreation, esika wapi akambaka misala mingi ya koyebisa bato na ntina ya makoki ya bana mpe mokumba ya bilenge na kotonga lobi ya kimia<ref>https://www.radiookapi.net/2016/11/20/actualite/societe/goma-le-parlement-denfants-oppose-leur-utilisation-dans-les</ref>
Na 2016, aponami Vice-président ya Bureau ya Assemblée ya bana, oyo azali na mokumba ya kobatela bana mpe kosangana na yango.
Na mokumba oyo, azali kotala misala oyo ezali na mokano ya kolendisa bokengi mpe bolamu ya bana, kolendisa bosangani na bango na bibongiseli ya bozwi mikano, mpe kolendisa bobimisi ya bilenge mpe bosangani ya bana mboka.
== Mosala ya bokomi ==
Laetitia Malira Tembeya azali mokomi ya buku *Bitumba na Est, Guerre ya Est, Facing Devastation: Resilience or Complicity?<ref>https://actualite.cd/2024/07/14/livre-guerres-dans-lest-guerre-de-lest-face-aux-devastations-resilience-ou-complaisance</ref>, ebimisami na Ukweli Éditions. Buku oyo esangisaka matatoli ya bato oyo bazwaki mpasi, bato oyo balongolamaki na bandako na bango, mpe bavandi ya ɛsti ya RDC. Ezali kotalela makanisi ya koyika mpiko, mpasi, mpe bokundoli ya lisanga na etuka oyo emonisami na pene na mibu ntuku misato ya bitumba ya minduki.
== Komipesa ==
Pembeni ya mosala na ye ya botomboli makanisi, azali na kati ya misala ya bosungi bato na [[Goma]]. Mingimingi, azali kosangana na programme ya kokabola bilei mokolo na mokolo mpo na bato oyo balongolami na bandako na bango oyo bafandaka na bakaa. Immersion oyo na terrain e informer ba réflexions na ye mpe ba écrits na ye na ba réalités oyo ba populations affectées na bitumba.
Mosala mpe mikano ya Laetitia Malira Tembeya etali mingi : makoki ya bana, mbano ya bitumba ya minduki, bokasi ya moto na moto mpe ya bato banso, mosala ya bilenge na botongi kimia, lisungi ya makanisi mpo na baye bazwaki mpasi, mpe bokundoli mpe botongi lisusu ya bato ya mboka oyo ezwaki mpasi na bitumba.
9ipu3nlhpruijouxhw2bl19zt1z9vx1
Yvette Tembo Kulemfuka
0
15306
136021
2026-09-03T14:52:03Z
OtikolenoiL
12703
Créé en traduisant la page « [[:fr:Special:Redirect/revision/239193127|Yvette Tembo Kulemfuka]] »
136021
wikitext
text/x-wiki
'''Yvette Tembo Kulemfuka''', abotama na mokolo ya 26 sanza ya misato 1981 na Kinshasa na ekolo Congo démocratique, azali mwasi ya politiki ya ekolo Congo démocratique. Na kati ya UDPS/Tshisekedi, azalaki kosala na misala ya Leta liboso ya koponama ministre ya etuka na Kinshasa. Na ndakisa, azali Ministre ya Finances na Economie na gouvernement ya ville-province ya Kinshasa oyo ekambami na 2024 gouverneur Daniel Bumba Lubaki.
1ptg4426za04hskvu67omt5ydo20sls
136022
136021
2026-09-03T14:55:10Z
OtikolenoiL
12703
136022
wikitext
text/x-wiki
'''Yvette Tembo Kulemfuka''', abotama na mokolo ya 26 sanza ya misato 1981 na Kinshasa na ekolo Congo démocratique, azali mwasi ya politiki ya ekolo Congo démocratique. Na kati ya UDPS/Tshisekedi, azalaki kosala na misala ya Leta liboso ya koponama ministre ya etuka na Kinshasa. Na ndakisa, azali Ministre ya Finances na Economie na gouvernement ya ville-province ya Kinshasa oyo ekambami na 2024 gouverneur Daniel Bumba Lubaki.
== Biografi ya bomoi ya bato ==
=== Bomwana mpe Ebandeli ===
Yvette Tembo Kulemfuka abotami le 26 mars 1981, na Kinshasa; azali na ebandeli ya teritware ya Gungu na etuka ya Kwilu.
=== Mateya ===
Atangi école secondaire na Collège de la Salle na Kinshasa. Na nsima, azwaki diplôme ya l’Etat na makambo ya mombongo mpe ya administration. Azali na diplôme ya économie, diplôme ya licence na économie monétaire, mpe diplôme ya master na économie, marketing, mpe gestion ya parti politique.
=== Kosangana na makambo ya politiki ===
Yvette Tembo Kulemfuka azali membre ya Union pour la démocratie et progrès social (UDPS/Tshisekedi). Asanganaki na misala ya politiki ya lingomba yambo ya kozwa mikumba na kati ya administration provinciale ya Kinshasa.
Na maponami ya bituka ya décembre 2023, azalaki kati na ba candidats ya UDPS/Tshisekedi na district électoral Gungu na etuka ya Kwilu. Liste ya suka oyo ebimisami na CENI elakisi ye lokola candidat mobimba
rs64hr6ajvpxepj62rk9gyib8b4hy4m
Jean Elongo Ongona
0
15307
136023
2026-09-03T15:07:24Z
OtikolenoiL
12703
Créé en traduisant la page « [[:fr:Special:Redirect/revision/239193758|Jean Elongo Ongona]] »
136023
wikitext
text/x-wiki
'''Jean Elongo Ongona''' (abotámí o mokɔlɔ 5 Mársi 1954, o Kindu) azalí économiste mpé mosali ya Leta ya likolo o République Démocratique du Congo.
q946u7usqhd8c13134wi1jlal9zv7ov
136024
136023
2026-09-03T15:07:53Z
OtikolenoiL
12703
136024
wikitext
text/x-wiki
'''Jean Elongo Ongona''' (abotámí o mokɔlɔ 5 Mársi 1954, o Kindu) azalí économiste mpé mosali ya Leta ya likolo o République Démocratique du Congo.
== Carrière ==
Professeur na Ecole nationale ya Finances, azali na diplôme na économie na université ya Lovanium (Kinshasa). M. Elongo azali macroéconomiste oyo azwi formation na Institut ya Fonds monétaire international mpe mpo na ba programmes ya ajustement ya Banque mondiale na université ya Clermont-Ferrand (France). Asali lokola Directeur ya ba départements ebele na Banque centrale du Congo (BCC) (oyo ezalaki kala Banque de Zaïre) mpe lokola Auditeur général ya BCC. En tant que directeur supérieur na Banque centrale du Congo (BCC), a participer elongo na Gouverneur Jean-Claude Masangu na mosala oyo ememaki na retour ya franc congolais na 1998.
En tant que Chef d’état-major na Ministère ya Finances mpe Président ya Comité ya ba experts ya Gouvernement entre juin 1994 na février 1996, akambaki équipe technique oyo e conçu mpe e mettre en œuvre Programme ya gestion macroéconomique autonome ya gouvernement, oyo ememaki suka na hyperinflation na Zaïre, ekitisaki yango wuta 23.773,132% na 1994 kino 541.909% na 1995. Uta eleko oyo ya ntina mingi na lisolo ya nkita ya République démocratique du Congo, mboka ekutanaki lisusu na hyperinflation te. Na bokambi ya ministre ya Finances ya tango wana, Pierre Pay-Pay wa Syakasighe, akokaki mpe kozala na confiance na Nicolas Kazadi, conseiller économique mpe financier na cabinet. Ezalaki na période wana nde abandaki kosala structure oyo ebongisamaki mpo na kosunga l’Etat ematisaka revenu na ye : Direction générale ya Revenu Administratif, Judiciaire, ya Propriété ya l’Etat, mpe ya Equité (DGRAD).
Na 2007, aponamaki na décret présidentiel lokola Directeur général ya Direction générale ya Direction générale ya administratif, judiciaire, ya ba biens ya l’Etat, mpe ya Revenu d’Equité (DGRAD), ebonga oyo azuaki tee na 2011. Na tango na ye, revenu ya agence financière oyo emati koleka mbala mibale.[6] Na juillet 2021, aponamaki na décret présidentiel lokola Membre ya Conseil d’administration ya Banque centrale du Congo (BCC).
Na mars 2021, abimisi buku moko na kombo ya KOTONGA EMERGENCE YA CONGO DEMOCRATIQUE NA NZELA YA GOUVERNANCE.
=== Misala ya socio-éducatif ===
Président ya Fondation FONJEL, asalisaka pona kopesa ville ya Kindu, capitale ya province ya Maniema, morgue pe ba infrastructures misusu ya santé.
oifjgrnihoehqzja8405l070ncrtzk4
Marie-Chantal Kaninda
0
15308
136025
2026-09-03T15:32:51Z
OtikolenoiL
12703
Créé en traduisant la page « [[:fr:Special:Redirect/revision/235461029|Marie-Chantal Kaninda]] »
136025
wikitext
text/x-wiki
'''Marie-Chantal Kaninda''' azali mokambi ya ba kompani na kongo
o59ut20o2an0zr95zg4vcdh6al3xh75
136026
136025
2026-09-03T15:33:28Z
OtikolenoiL
12703
136026
wikitext
text/x-wiki
'''Marie-Chantal Kaninda''' azali mokambi ya mombongo ya Congo.
== Biographie ==
=== Education ===
Marie-Chantal azali na diplôme na économie na université ya Liège na Belgique.
=== Carrière ===
Marie-Chantal abandaki carrière na ye na industrie ya or, kosala na groupe mines ya Ghana Ashanti Goldfields na 1998. Na 2003, tango Ashanti Goldfields esanganaki na AngloGold mpo na kokoma AngloGold Ashanti, Marie-Chantal atikalaki na entreprise ya sika lokola Directrice Administrative et Commerciale, oyo azalaki mpe responsable ya gestion ya ba ressources humaines.
Na 2005, akendaki na industrie ya diamant mpe akoti na compagnie ya Afrique du Sud De Beers, esika wapi azuaki ba postes mpe mikumba ndenge na ndenge na ba pays différents na période ya mbula motoba. Na 2011, abandisi Fondation Marie-Chantal Kaninda Muelu (MCKM), lingomba oyo ezali koluka litomba te, oyo epesameli na bopesi makoki na basi mpe bana basi. Kaka na mbula wana, akambaki groupe d’étude oyo esala Code de conduite ya liboso mpo na secteur privé na République démocratique du Congo (RDC), na boyokani na Fédération des entreprises congolaises.
Na 2012, Marie-Chantal akomaki Directrice ya Relations extérieures mpo na Afrique na société anglo-australienne Rio Tinto, ebonga oyo azuaki koleka mibu minei. Na 2016, alongwaki na Rio Tinto mpe abandi société na ye moko, MCK&L Consulting Limited, esika asalaki lokola Directeur. Na mars 2017, akomi mwasi ya liboso ya Afrika oyo azuaki ebonga ya Directrice exécutif ya Conseil mondial ya diamant (WDC), rôle oyo azuaki sima ya kosala na conseil d’administration ya ba Initiatives multilatérales ya développement ya diamant (DDI). Na 2019, akoti na groupe Glencore RDC lokola Directeur exécutif mpe Chef ya Affaires Générales. Uta sanza ya nsambo 2022, azali mokambi ya conseil d’administration ya Kamoto Copper Company (KCC). Na 2023, akomi Président ya Glencore RDC.
Prix mpe bokeseni : Azwaki nkombo na liste ya Forbes Africa ya basi oyo bazali na nguya mingi, lokumu oyo azwi mbula misato na molongo, oyo euti koleka na sanza ya misato 2023.
sauc11flw227k136mum5qjmemp65395
Theoveul Lotika Likwela
0
15309
136027
2026-09-03T19:57:24Z
AdamLynnMcGill007
14035
Création en traduction article "Theoveul Lotika Likwela" #WIKI100DaysRDC
136027
wikitext
text/x-wiki
[[Fichier:défaut.svg|thumb|Theoveul Lotika Likwela]]
'''Theoveul Lotika Likwela''', azali politicien ya République Démocratique du Congo. Azali député national wuto 2024, aponami na circonscription ya engumba Kisangani na etuka ya [[Tshopo]] lokola membre ya parti Alliance des Forces démocratiques du Congo et alliés (AFDC-A). Na Assemblée nationale, afandi na comité oyo ezali na mokumba ya makambo ya politiki, ya administratif, mpe ya mibeko<ref name = "ALM001">{{Lien web |langue=FR |titre= Portrait : Théoveul Lotika Likwela|url=https://talatala.cd/deputes/674/ |site=talatala.cd |date= |consulté le=01-09-2026}}</ref>{{,}}<ref name = "ALM002">{{Lien web |langue=FR |titre=Profil du députée nationale : lotika-likwela-theoveul|url=https://assembleenationale.cd/deputes/lotika-likwela-theoveul/ |site=assembléenationale.cd |date=2024 |consulté le=01-09-2026}}</ref>.
Honorable Theoveul Lotika Likwela akambaki mpe commission parlementaire monene ya enquête na société LIBELA, mosala oyo esengelaki mobembo na Panga<ref name = "ALM003">{{Lien web |langue=FR|auteur=François Okonda|titre=Tshopo : Madeleine NIKOMBA et Theoveul LOTIKA sur la route SIMISIMI, le député provincial dissipe le malentendu et déplore la contre performance de la session de Mars 2023| url=https://depechesdelatshopo.com/tshopo-madeleine-nikomba-et-theoveul-lotika-sur-la-route-simisimi-le-depute-provincial-dissipe-le-malentendu-et-deplore-la-contre-performance-de-la-session-de-mars-2023/|accès url=libre|site=depechesdelatshopo.com|date=03 juillet 2023 |consulté le=01 septembre 2026}}</ref>.
== Biographie ==
Theoveul Lotika Likwela abotami na Kisangani, na etuka ya Orientale (lelo Tshopo), na mokolo ya 28 mai 1981. Auti na libota ya Lotika<ref name = "ALM002" />.
== Boyekoli ==
Theoveul Lotika Likwela azali professionnel juridique na formation; asilisaki ba études universitaires na université ya Kisangani.<ref name = "ALM001" />.
== Carrière politique ==
=== Makambo ya politiki ===
* Na 2019, Théoveul Lotika Likwela —avoka oyo autaki na teritware ya Isangi —aponamaki lokola député provincial mpo na Tshopo; azalaki substitut ya liboso ya Jean Saidi Bamanisa na maponami ya mibeko ya le 30 décembre 2018. Tango Bamanisa amilongolaki mpo na koponama mpo na Gouverneur ya Ituri, Lotika a confirmer comme député provincial na bosukisi ya session extraordinaire na mars 2019<ref name="Actu30_2019">{{Lien web|titre=Tshopo : suppléant, Me Lotika Likwela Theoveul remplace Jean Saidi Bamanisa à l'Assemblée provinciale|url=https://actu30.cd/2019/03/tshopo-suppleant-me-lotika-likwela-theoveul-remplace-jean-saidi-bamanisa-a-lassemblee-provinciale/|site=Actu30.cd|date=28 mars 2019|consulté le=2026-09-01}}</ref> Azali kosala na Assemblée provinciale ya Tshopo na Kisangani]].
* Na 2023–2024, maponami masalamaki mpe aponamaki mpo na kiti na Assemblée nationale oyo azali ko représenter circonscription ya Kisangani; asakolamaki mpo na mwa ntango ete aponami na CENI na maponami ya mibeko ya sanza ya zomi na mibale 2023.<ref name = "ALM001" />. Mandat na bango ekomami lokola ebandaki le 12 février 2024, mpo na mandat législatif 2024–2028<ref name = "ALM001" />.
* Na sanza ya minei 2024, invalidation esalemaki mpe elandaki kozongisama na mosala. Na mars 2024, Cour constitutionnelle elongolaki maponami na ye na faveur ya gouverneur Madeleine Nikomba Sabangu. Population ya Kisangani basalaki manifestation mpo na kosenga bozongisi ye na ebonga<ref name="MediaCongo_2024">{{Lien web|titre=Tshopo : Théoveul Lotika Likwela récupère son siège au détriment de la gouverneure Madeleine Nikomba|url=https://www.mediacongo.net/article-actualite-136123|site=MediaCongo Press|date=22 avril 2024|consulté le=2026-09-01}}</ref>.
* Na mokolo ya 22/04/2024, ntango efandaki na makambo ya matata ya maponami mpe ya kobongisa mabunga ya bakomeli, Cour constitutionnelle epesaki bikateli na yango ya nsuka na makambo 134, oyo 19 kati na yango etalelama lokola oyo ekoki kondimama. Theoveul Lotika Likwela azongisami na kiti na ye lokola député national<ref name="AfricaPress_2024">{{Lien web|titre=Tshopo : Théoveul Lotika Likwela récupère son siège au détriment de la gouverneure Madeleine Nikomba|url=https://www.africa-press.net/congo-kinshasa/politique/tshopo-theoveul-lotika-likwela-recupere-son-siege-au-detriment-de-la-gouverneure-madeleine-nikomba|site=Africa-Press|date=22 avril 2024|consulté le=2026-09-01}}</ref>.
* 2024–2026: Tango azali kosala na molende lokola Membre ya Parlement, azali kosala ba actions ebele ya bokengeli parlementaire na oyo etali [[Kisangani]]:
# '''Electricité''': Apesi enquête officielle na mokanda na Directeur général ya [[SNEL]] (Compagnie nationale ya électricité) mpo na kosenga bososoli na ntina ya bosaleli ya 9 millions ya ba dollars ya Amerika ya FRIVAO (Fonds ya ba réparations mpe ya compensation ya ba victimes ya ba activités illicites ya Ouganda na RDC) mpo na centrale hydroélectrique ya ebale Tshopo. Na ko noter état délapidée ya unité génératrice No. 3, azali kotinda likambo ya déboursement ya fonds na Ministre ya Justice<ref name="Depeches2025">{{Lien web|titre=Kisangani : en vacances parlementaires, le député national Theoveul Lotika Likwela rend compte de ses plaidoyers à la base|url=https://www.depechesdelatshopo.com/2025/01/15/kisangani-en-vacances-parlementaires-le-depute-national-theoveul-lotika-likwela-rend-compte-de-ses-plaidoyers-a-la-base/|site=Dépêches de la Tshopo|date=15 janvier 2025|consulté le=2026-09-01}}</ref>. Misala miye mizali kofungola nzela mpo na bosakoli misala misato : Tshopo 2 (20 MW), centrale thermique ya 10 MW, mpe centrale photovoltaïque ya 5 MW.
# '''Industrie''': Na sanza ya minei 2026, azali kotombola bozongisi ya nokinoki ya [[Sotexki]], oyo alobeli lokola stratégique mpo na misala na Kisangani<ref name="RadioOkapi2026">{{Lien web|titre=Le député Theoveul Lotika plaide pour la relance urgente de la SOTEXKI|url=https://www.radiookapi.net/2026/04/04/actualite/politique/le-depute-theoveul-lotika-plaide-pour-la-relance-urgente-de-la-sotexki|site=Radio Okapi|date=04 avril 2026|consulté le=2026-09-01}}</ref>.
== Polémique ya maponami ==
Nsima na maponami ya mibeko ya 2023, bolongolami ya ezalela ya Theoveul Lotika Likwela lokola député national —mpe bosakoli ya Madeleine Nikomba Sabangu (Gouverneur ya etuka ya Tshopo) lokola molongi —ebimisaki réaction makasi ya population ya Kisangani.
Bato oyo bazali kosala mobulu balobi ete Theoveul Lotika mpe baninga na ye oyo bazalaki kopota mbangu nde balongi ya solosolo. Bazali koloba ete groupe eye ezuaki ba votes koleka 11.000, ezwaki esika ya misato na engumba Kisangani, nzokande liste ya Madeleine Nikomba ezwaki esika ya zomi na moko na ba votes moke koleka 7.000. Mokano moye mo Cour constitutionnelle mozali kotelemela na ba activistes ya AFDS na Tshopo, baye bazali kosenga na président Félix Tshisekedi a intervenir mpe a assurer intégrité ya ba résultats ya maponami. Bato baye bazali kotelemela injustice eye mpe bazali kosenga botali lisusu mokano ya Cour constitutionnelle. Situation yango ebimisi mituna na oyo etali état ya démocratie na [[République démocratique du Congo]]<ref name = "ALM003" />{{,}}<ref name = "ALM004">{{Lien web|auteur=Franck Yenga|titre=Tshopo : Kisangani dans la rue à la suite de l’Invalidation du député Theoveul Lotika Likwela |url=https://infos27.cd/2024/03/19/tshopo-kisangani-dans-la-rue-a-la-suite-de-linvalidation-du-depute-theoveul-lotika-likwela/|site=infos27.cd|accès url=libre|date=19 mars 2024|consulté le=2026-09-01}}</ref>
== Masolo oyo etali yango ==
* [[Madeleine Nikomba Sabangu]]]
== Ba références ==
{{Références}}
== Ba liens ya libanda ==
{{ndambo}}
h8xst2sgrnbfgt8geqem2bzyytup7rc
Lucien Hervé
0
15310
136028
2026-09-03T20:20:16Z
Yannick Ikombe
14195
Création d'un article
136028
wikitext
text/x-wiki
'''Lucien Hervé''', abotami László Elkán o mokɔlɔ 7 août 1910, o Hódmezővásárhely, Hongrie, mpe akufi o mokɔlɔ 26 yúni 2007, o Neuilly-sur-Seine, France[1], azalaki mokangami ya bafɔtɔ́ ya architecture ya France. Ayebani mingi mpo na collaboration na ye na Le Corbusier, mpo na ye azalaki photographe officiel. Na 1937, azwi ndingisa ya kozala mwana-mboka ya France.
==Biografi ya bomoi ya bato==
László Elkán abotamaki na mokolo ya 7 Augusto 1910, na Hódmezővásárhely, na Hongrie, mwana ya Lajos Elkán, motɛkisi ya mposo ya nyama mpe conseiller ya engumba, mpe Nelly Ritscher. Alobaki ete autaki na libota ya Bayuda oyo bazalaki kosala ba banque oyo bautaki na Barcelone oyo, na 1492, babenganaki bango na Espagne na ntango ya Kobengana Bayuda.[2] Na 1918, libota ya Elkán ekendaki kofanda na Budapest. Tata na ye akufaki na mokolo ya 3 Mársi 1920.
Na 1920, abandaki koyekola piano. Akendaki na Vienne, na Autriche, na 1928, epai akomaki nkombo lokola moyekoli ya nkita. Bobele na ntango yango, azwaki bakelasi ya kosala mayemi na Académie des Beaux-Arts. Na eleko ya molunge ya 1929, asanganaki na ndeko na ye na Paris mpe azalaki kokende mingi na ba musées na molende. Na nsuka ya mbula, azongaki na Budapest. Azongi na Paris na février 1930 mpe asali lokola mosali ya banque.
==Kotonga==
Na 1920, abandaki komeka kobunda ya Grèce-Romain elongo na masano mosusu mingi. Na 1934, azalaki membre ya équipe nationale ya volleyball ya France oyo elongaki Allemagne na compétition officielle.
==Etumba ya Mibale ya mokili mobimba==
Na 1939, sima ya kokende ya Muller, ye moko akomi photojournaliste na Marianne Magazine (mpo na ba raisons ya propriété, abatelaki kombo Muller). Abengamaki mpo na mosala ya soda, na régiment ya mitano ya ba infanterie, asalaki lokola mokangami ya bafoto ya mampinga na nse ya bokonzi ya Colonel de Lattre de Tassigny.
Na mokolo ya 4 Yuni 1940, bakangaki ye na libongo ya Dunkerque. Azalaki mokangami ya etumba na Hohenstein (Prusse orientale). Na boumeli ya bokangami na ye, abandaki koyekola mayemi. Azalaki molobeli ya botɛmɛli oyo ezalaki na kati ya kaa ya bakangami ya etumba.
Na mokolo ya 2 Febwali 1941, ba Gestapo bakangaki ye mpo na misala na ye ya kotɛmɛla bato na kati ya kaa. Akimaki na sanza ya libwa mpe akɔtaki na limpinga ya kobombana na Grenoble. Azalaki na mokumba ya kopesa biloko na bisika ya mosala oyo ezalaki na bisika ya likoló. Kobanda na suka ya 1941, azalaki na maquis ya Vercors. Na Résistance, asalelaki kombo Lucien Hervé.
Na décembre 1943, ba bengi ye na Paris mpo na ko diriger ba activités clandestines ya MNPGD (Mouvement national des prisonniers de guerre et déportés).
Na 1945, asali na leadership ya MNPGD, ndenge moko na François Mitterrand. Akutanaki na Deng Xiaoping, oyo asalaki eskeche ya elilingi na ye, na ba congrès ya fondateur ya Fédération mondiale ya ba syndicats. Azalaki mosungi ya prezida ya Croix-Rouge ya France mpe Secrétaire général ya Association ya ba prisonniers soviétiques mpe ba déportés na France.
ep7i1bzubm0oy5kxzd4elra51q6nwy0
Module:Exponential search
828
15311
136029
2026-09-03T22:06:10Z
Hamish
9768
[IPE-NEXT] Quick edit imported from [[:w:en:Module:Exponential search]]
136029
Scribunto
text/plain
-- This module provides a generic exponential search algorithm.
require[[strict]]
local checkType = require('libraryUtil').checkType
local floor = math.floor
local function midPoint(lower, upper)
return floor(lower + (upper - lower) / 2)
end
local function search(testFunc, i, lower, upper)
if testFunc(i) then
if i + 1 == upper then
return i
end
lower = i
if upper then
i = midPoint(lower, upper)
else
i = i * 2
end
return search(testFunc, i, lower, upper)
else
upper = i
i = midPoint(lower, upper)
return search(testFunc, i, lower, upper)
end
end
return function (testFunc, init)
checkType('Exponential search', 1, testFunc, 'function')
checkType('Exponential search', 2, init, 'number', true)
if init and (init < 1 or init ~= floor(init) or init == math.huge) then
error(string.format(
"invalid init value '%s' detected in argument #2 to " ..
"'Exponential search' (init value must be a positive integer)",
tostring(init)
), 2)
end
init = init or 2
if not testFunc(1) then
return nil
end
return search(testFunc, init, 1, nil)
end
jqqi8l27tb73lglksbukg2g3bzt3fmv
Bobómi ya Tupac Shakur
0
15312
136030
2026-09-04T07:01:28Z
Viyowoyero-vya-Malaŵi
16224
New article in Lingala. I'm not that good at it yet though
136030
wikitext
text/x-wiki
{{Databox}}
Na mokɔlɔ́ ya 7 Sɛtɛmbɛ 1996, na ngɔ́nga ya 11:15 p.m. (PDT), [[Tupac Shakur]], rapɛ́rɛ́ ya [[Lisangá lya Ameríka|Amerikáni]] ya mibu 25, azwákí masási na motúká na Paradíse, na Nevada. Masási maye masálémákí ntángó motúká moyé momémákí Shakur etélémísámákí na mwínda ya motáné na nzéla ya East Flamingo mpe Koval Lane.<ref>{{Cite book|last=Golus|first=Carrie|url=https://archive.org/details/tupacshakur0000golu_d6i5/page/73|title=Tupac Shakur: Hip-Hop Idol|publisher=Twenty-First Century Books|year=2010|isbn=978-0761354734|page=[https://archive.org/details/tupacshakur0000golu_d6i5/page/73 73]}}</ref> Shakur abétámákí na bá ballɛ́ mínei oyo ebétámákí na pistólɛ́ ya calibre .40 Glock 22: míbalé na ntɔ́lɔ́, mókɔ́ na lobɔ́kɔ́, mpe mókɔ́ na cuísse.<ref name="MTV">{{Cite web|date=September 13, 1996|title=Rapper Tupac Shakur Gunned Down|url=http://www.mtv.com/news/1434032/rapper-tupac-shakur-gunned-down/|url-status=dead|archive-url=https://web.archive.org/web/20160303091049/http://www.mtv.com/news/1434032/rapper-tupac-shakur-gunned-down/|archive-date=March 3, 2016|access-date=November 8, 2014|publisher=MTV}}</ref> Mokúmbi motúká, mogúlú ya Death Row Records Suge Knight, azwákí matítí na lisási na masási mayé. Shakur akúfákí mpo na bampɔ́ta na ye mikɔlɔ́ motóbá na nsimá.
== Références ==
<references />
[[Catégorie:Masási oyo ezali kobɛ́támá]]
rrwc9d2ovesvc3n8g1cxomfdk2tnz0t