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äöæøáéíóúýàèâêëüãŭœāēīōūəąęóадеёзоу])", "&shy;%1") -- Insert soft-hyphens before each consonant that is followed by vowel :gsub("&shy;([\128-\193])", "%1" ) -- Revert split of two-byte UTF-8 character :gsub("-(%a?%a?%a?%a?)&shy;", "-%1"):gsub("&shy;(%a?%a?%a?%a?)-", "%1-") -- Not too near a hard hyphen -- Some Scandinavian exceptions for wikidata properties, relevant to similar languages: :gsub("&shy;x", "x&shy;") -- Example: tids-komp-le-xi-tet -> tids-komp-lex-i-tet :gsub("sc&shy;h", "&shy;sch") -- Example: sc-h -> -sch :gsub("ss&shy;j", "s&shy;sj")-- Example: ss-j-> s-sj :gsub("n&shy;g", "ng&shy;") -- Example: n-g -> ng- :gsub("ngs", "ngs&shy;") -- Example: Befolk-ningsg-rup-pe -> Befolk-nings-g-rup-pe, Rege-ring-s-che-fens -> Rege-rings-chefens :gsub("g&shy;rup&shy;pe", "&shy;gruppe") -- Example: g-rup-pe -> -gruppe :gsub("nist&shy;ra", "nis&shy;tra") -- Example: admi-nist-ra-tion -> admi-nis-tra-tion :gsub("&shy;ror&shy;ga[&shy;]*n", "r&shy;organ") -- Example: dotte-ror-ga-ni-sa-tion -> dotter-organi-sa-tion :gsub("&shy;rob[&shy;]*jek", "r&shy;objek") -- Example: dot-te-rob-jekt -> dot-ter-objekt :gsub("s&shy;ta&shy;tus", "&shy;status") -- Example: skydds-status :gsub("k&shy;las[&shy;]*s", "&shy;klass") -- Example: deci-malk-las-si-fi-ka-tion -> deci-mal-klas-si-fi-ka-tion :gsub("&shy;nom&shy;rå&shy;de", "n&shy;område") -- Example: vatte-nom-rå-de -> vatten-område :gsub("&shy;som&shy;rå&shy;de", "s&shy;område") -- Example: Rets-gyl-dig-hed-som-rå-de -> Rets-gyl-dig-heds-om-rå-de :gsub("ra&shy;lort", "ral&shy;ort") -- Example: central-ort :gsub("s&shy;kydd", "&shy;skydd") -- Example: Kul-turs-kydd -> Kul-tur-skydd :gsub("k&shy;ri&shy;te&shy;ri", "&shy;kri&shy;te&shy;ri")-- Example: Värld-sarvsk-ri-te-rium -> Värld-sarvs-kri-te-rium :gsub("guasp&shy;he", "gua&shy;sphe") -- Example: lingua-sphere :gsub("gars&shy;kap", "gar&shy;skap") -- Example: medbor-gars-kap -> medbor-gar-skap :gsub("k&shy;var&shy;ter", "&shy;kvarter") -- Example: Hovedk-var-ter -> Hoved-kvarter :gsub("s&shy;ted", "&shy;sted") -- Example: Pro-duk-tionss-ted -> Pro-duk-tions-sted :gsub("t&shy;rä&shy;dan&shy;de", "&shy;trä&shy;dan&shy;de") -- Example: plats för förs-ta framt-rä-dan-de -> plats för förs-ta fram-trä-dan-de :gsub("&shy;&shy;", "&shy;") -- Example -- -> - end end return result:sub(2,-1) -- :gsub("&shy;", "-") -- 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">&nbsp;[[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">&nbsp;[[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">&nbsp;[[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/>' .. '&nbsp;• ' .. 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/>&nbsp;' .. 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('&nbsp;', 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/>&nbsp;' .. dataValues:gsub('<br/>', '<br/>&nbsp;') 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">&nbsp;[[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">&nbsp;[[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