ሞድዩል:ሓበሬታ ሰብ
Appearance
Documentation for this module may be created at ሞድዩል:ሓበሬታ ሰብ/doc
local z = {}
local arguments -- Table of arguments with which the function is called
local argument={} -- Arguments, not counting those with no data
local Entity -- Table with the data in Wikidata of the person.
local somePropertyLinkWikidata -- For some property there is neither the label nor the link showing something of the form d:...
local getDataWikidata -- true if data should be obtained from Wikidata
-- External modules and functions
local ModuleTime = require('Module:Time')
local age = ModuleTime.age
local ModuleInfobox = require('Module:Infobox')
local ModuleTextFormat = require('Module:Text format')
local inMultipleLines = ModuleTextFormat.inMultipleLines
local inBrackets = ModuleTextFormat.inBrackets
local ModuleIdentifiers = require('Module:Identifiers')
local ModulePage = require('Module:Page')
local ModuleWikidataFormats = require('Module:Wikidata/Formats')
local URLFormat = ModuleWikidataFormats.URLFormat
local periodFormat = ModuleWikidataFormats.periodFormat
local idFormat = ModuleWikidataFormats.idFormat
local ModuleWikidata = require('Module:Wikidata')
local wikidataPencil = ModuleWikidata.addLinkback
local categorizeWikidata = ModuleWikidata.categorize
local getPropertyWikidata = ModuleWikidata.getProperty
local tableElement = require('Module:Tables').element
local toLinkURL = require('Module:URL').toLink
local withoutFlag = require('Module:Flag').withoutFlag
-- Constants
local inUppercase = {['textFormat'] = 'uppercase', ['linkback']='yes', ['highestRank'] = 'yes'}
local inUppercaseO = {['textFormat'] = 'uppercase', ['conjunction']=' ወይ ', ['linkback']='yes', ['highestRank'] = 'yes'}
local notOrderedList = {['list'] = 'not ordered', ['linkback']='yes', ['highestRank'] = 'yes'} --, ['mustExist'] = 'yes'
--local place = {['conjunction']=' ወይ ', ['value-module'] = 'Wikidata/Place format', ['value-function'] = 'placeFormat', ['linkback']='yes'}
local mustExist = {['mustExist'] = 'yes', ['textFormat'] = 'uppercase', ['linkback']='yes', ['highestRank'] = 'yes'}
local withPeriod = {['list'] = 'not ordered', ['textFormat'] = 'uppercase', ['qualifying'] = periodFormat, toOrder='ብዕለት', ['linkback']='yes', ['highestRank'] = 'yes'}
local withPeriodMustExist = {['list'] = 'not ordered', ['textFormat'] = 'uppercase', ['qualifying'] = periodFormat, toOrder='ብዕለት', ['mustExist'] = 'yes', ['linkback']='yes', ['highestRank'] = 'yes'}
local withoutLinkup = {['link']='no', ['linkback']='yes', ['highestRank'] = 'yes'}
local withoutPencil = {['highestRank'] = 'yes'}
local normal = {['linkback']='yes', ['highestRank'] = 'yes'}
-- Formats according to the type of header
local formats={
['ብንቡር'] = {['infoboxTitleStyle'] = 'background-color:#8DB1C3;color:#FFF'},
['inherit'] = {['infoboxTitleStyle'] = 'background-color:#E6E6FA;color:#000'},
--['ተዋሳኢ'] = {['infoboxTitleStyle'] = ''},
['ተጻዋታይ ቸስ'] = {['infoboxTitleStyle'] = 'background-color:#d38d47;color:#FFF'},
['ስነ ጥበበኛ'] = {['infoboxTitleStyle'] = 'background-color:#8DB1C3;color:#FFF'},
['ጠፈርተኛ'] = {['infoboxTitleStyle'] = 'background-color:transparent;'},
['መዚ'] = {['infoboxTitleStyle'] = 'background-color:transparent;', ['sectionsTitleStyle'] ='background-color:#E6E6FA;'},
['ሲነማ'] = {['infoboxTitleStyle'] = 'background-color:#f9e999'},
['ነዳፊ'] = {['infoboxTitleStyle'] = 'background-color:#ED8;color:#000'},
['ጸሓፊ'] = {['infoboxTitleStyle'] = 'background-color:#4c6099;color:#FFF'},
['ተጻዋታይ ኩዕሶ እግሪ'] = {['infoboxTitleStyle'] = 'background-color:#CC8;color:#000'},
['ወተሃደራዊ'] = {['infoboxTitleStyle'] = 'background-color:#b0c4de;color:#000'},
['ሞደል'] = {['infoboxTitleStyle'] = 'background-color:#9F9;color:#000'},
--
-- Music
--
['ደራፊ'] = {['infoboxTitleStyle'] = 'background-color:#f0e68c'}, -- Soloist of Template:Music artist sheet/Color selection
['ሙዚቀኛ'] = {['infoboxTitleStyle'] = 'background-color:#F4BF92'}, -- non-vocal_instrumentalist (members of non-vocal groups, as well as instrumental soloists and conductors)
['ካልእ ሙዚቃ'] = {['infoboxTitleStyle'] = 'background-color:#BFE0BF'}, -- other_staff (producers, composers, engineers)
--
['ሃይማኖታዊ'] = {['infoboxTitleStyle'] = 'background-color:#ffde00; color:#000'},
['ጋዜጠኛ'] = {['infoboxTitleStyle'] = 'background-color:#ED8;color:#000'},
['ተለቪዥን'] = {['infoboxTitleStyle'] = 'background-color:#ED8;color:#000'},
['ተዋጋኢ ብዕራይ'] = {['infoboxTitleStyle'] = 'background-color: #800000; color: white'},
['ጸወታ ቪድዮ'] = {['infoboxTitleStyle'] = 'background-color:#CCF;color:#000'},
['ዩትዩበር'] = {['infoboxTitleStyle'] = 'background-color:#B60000;color:#fff'},
}
local name = ''
function isodate(x)
return x.time
end
function z.Infobox(frame)
ModuleWikidata:setFrame(frame) --It doesn't work if you put ModuleWikidata.setFrame(frame)
-- Get a copy of the arguments by removing the arguments with no value
-- and leaving those with the value "no" blank (but not nil)
argument = getArgumentsWithValue(frame) -- Do not put local. It's global.
--Determine whether to get data from Wikidata
if argument['wikidata'] == 'no' and (argument['ዕለተ ሞት'] or argument['ቦታ ሞት']
or argument['ዝጠፍኣሉ ዕለት'] or argument['ዝጠፍኣሉ ቦታ']
) then
getDataWikidata = false
Entity = nil
else
getDataWikidata = true
-- Get the data of the page where the Wikidata infobox is inserted.
Entity = mw.wikibase.getEntityObject(argument['id']) or {}
end
--Determine data for the infobox
local education = argument['ትምህርቲ'] or property('P512',withoutLinkup)
local almamater = argument['ኣደ ቤት ትምህርቲ'] or argument['ኣደ_ቤት_ትምህርቲ'] or argument['ኣደቤትትምህርቲ'] or argument['ኣልማ ማተር'] or argument['ኣልማ_ማተር'] or argument['ኣልማማተር'] or argument['alma mater'] or argument['alma_mater'] or argument['almamater']
or property('P69', { ['textFormat'] = 'uppercase', ['list'] = 'not ordered', ['value-function']='ዝተማህረ ኣብ', ['value-module'] = 'Wikidata/Education formats', ['toOrder'] = 'ብዕለት', ['linkback']='yes'})
local gender = property('P21', {['link']='no', ['linkback']='no'})
if gender == 'ጓል ኣንስተይቲ' or gender == 'ስግረ ጾተኛ ሰበይቲ' then
labelActiveYears = 'ዓመታት ንጥፍቲ'
labelKnownBy = 'ፍልጥቲ ብ'
labelInfluences = 'ዝተጸልወት ብ'
labelchampion = '[[ሻምፕዮንነት ዓለም ቸስ|ሻምፕዮን ዓለም]]'
labelStudentOf = 'ተማሃሪት ናይ'
labelEducatedIn = 'ዝተማህረት ኣብ'
functionOccupation = formatOccupationFemale
labelReveredIn = 'ዝኽበረት ኣብ'
else
labelActiveYears = 'ዓመታት ንጡፍ'
labelKnownBy = 'ፍሉጥ ብ'
labelInfluences = 'ዝተጸልወ ብ'
labelchampion = '[[ሻምፕዮንነት ዓለም ቸስ|ሻምፕዮን ዓለም]]'
labelStudentOf = 'ተማሃራይ ናይ'
labelEducatedIn = 'ዝተማህረ ኣብ'
functionOccupation = formatOccupationMale
labelReveredIn = 'ዝኽበር ኣብ'
end
--In principle it is not shown for actors.
--artisticsection='ስነ ጥበባዊ ሞያ'
-- Generate the offices
local thereAreOffices
local officesTable = {type='section'}
if argument['ስልጣን'] then
thereAreOffices = true
table.insert(officesTable, {'', '<hr>'})
table.insert(officesTable, generateoffice(argument,1,frame))
argument['ቅድሚኡዝነበረ']= nil
argument['ቅድሚኣዝነበረት']= nil
argument['ተካኢ']= nil
argument['ተካኢት']= nil
end
for i=2, 10 do
if argument['ስልጣን'..i] or argument['ምጅማር'..i] then
thereAreOffices = true
table.insert(officesTable, generateoffice(argument,i,frame))
end
end
-- Occupancy and area are only obtained from Wikidata if the occupancy and area fields are not reported.
-- This is because for artists you can have in Wikidata as occupation "painter and sculptor" and
-- have the area reported as "painting and sculpture".
local occupation = argument['ስራሕ'] or argument['ሞያ']
local area = argument['ቦታ'] or argument['ፍሉይ ሞያ'] or argument['ፍሉይነት'] or argument['ዓውድታት']
if not occupation and not area then
occupation = property('P106', {['textFormat'] = 'uppercase', ['value-function']=functionOccupation, ['qualifying'] = periodFormat, ['linkback']='yes'})
area = property('P101', inUppercase) -- Work field
end
local occupationOrArea = occupation or area
name = argument['ስም'] or argument['ሽም'] or ModulePage.pageName({disambiguate='yes'})
local full_name = argument['ምሉእ ስም']
local birth_name = argument['ስም ልደት'] or property('P1477')
local birth_name_without_pencil = argument['ስም ልደት'] or property('P1477', withoutPencil)
-- Name in native script.
-- Only displayed if it does not match the name or birth name or full name
local nativeNames={type='section'}
local nativeName, nativeNameText, nativeNameLanguage
if argument['መበቆላዊ ስም'] then
if argument['መበቆላዊ ስም'] ~= name and
argument['መበቆላዊ ስም'] ~= birth_name_without_pencil and
argument['መበቆላዊ ስም'] ~= full_name then
table.insert(nativeNames,{'መበቆላዊ ስም', argument['መበቆላዊ ስም']})
end
elseif Entity then
-- In the case of obtaining from Wikidata there may be several native names
local statement = tableElement(Entity, 'claims','P1559')
if statement then
for k,v in pairs(statement) do
nativeName = tableElement(v, 'mainsnak', 'datavalue', 'value')
if nativeName then
nativeNameText = nativeName.text
nativeNameLanguage = nativeName.language
if nativeNameText and nativeNameLanguage and
nativeNameText ~= name and
nativeNameText ~= birth_name_without_pencil and
nativeNameText ~= full_name then
table.insert(nativeNames, {
'ስም ብ' .. mw.language.fetchLanguageName(nativeNameLanguage, 'ti') ,
wikidataPencil(nativeNameText,Entity.id,'P1559')
})
end
end
end
end
end
-- Inform the data of birth, disappearance and death
-- The order must not be altered so that in the event that the place of death or the place of disappearance is the same
-- as the place of birth, the place of birth is linked
local birth, disappearance, death
local birthDateTimestamp = tableElement(Entity, 'claims', 'P569', 1, 'mainsnak', 'datavalue', 'value', 'time')
local birthPlace = argument['ቦታ ልደት'] or property('P19', {['conjunction']=' ወይ ', ['value-module'] = 'Wikidata/Place format', ['value-function'] = 'placeFormat', ['linkback']='yes', date=birthDateTimestamp, ['highestRank'] = 'yes'})
local disappearancePlace = argument['ዝጠፍኣሉ ቦታ']
local deathDateTimestamp = tableElement(Entity, 'claims', 'P570', 1, 'mainsnak', 'datavalue', 'value', 'time')
local deathPlace = argument['ቦታ ሞት'] or property('P20', {['conjunction']=' ወይ ', ['value-module'] = 'Wikidata/Place format', ['value-function'] = 'placeFormat', ['linkback']='yes', date = deathDateTimestamp, ['highestRank'] = 'yes'})
death = inMultipleLines({
argument['ዕለት ሞት'] or (getDataWikidata and inBrackets(property('P570', inUppercaseO), getAgeWikidata('P570'))),
deathPlace
})
if death then
disappearance = inMultipleLines({
argument['ዝጠፍኣሉ ዕለት'] or property('P746', inUppercaseO),
disappearancePlace
})
else
disappearance = inMultipleLines({
argument['ዝጠፍኣሉ ዕለት'] or (getDataWikidata and inBrackets(property('P746', inUppercaseO), getAgeWikidata('P746'))),
argument['ዝጠፍኣሉ ቦታ']
})
end
if death or disappearance then
birth = inMultipleLines({
argument['ዕለት ልደት'] or property('P569', inUppercaseO),
birthPlace
})
else
birth = inMultipleLines({
argument['ዕለት ልደት'] or (getDataWikidata and inBrackets(property('P569', inUppercaseO), getAgeWikidata())),
birthPlace
})
end
if argument['ወለዲ'] then
parents = isLinked(argument['ወለዲ'])
else
father = property('P22')
mother = property('P25')
if father and mother then
parents = father .. '<br/>' .. mother
father = nil
mother = nil
end
end
signature = argument['ፊርማ'] or argument['ክታም'] or property('P109', {['link'] = 'no', ['linkback'] = false, ['highestRank'] = 'yes', ['one'] = 'yes'}) or ''
if signature and signature ~= '' then
signature = '[[ፋይል:' .. signature .. '|175x80px]]'
end
-- Format of the title of the file and of the sections according to the occupation, if the person has offices or if he has died
local Format, header
if argument['ርእሰዋይ'] then
header = argument['ርእሰዋይ'] -- By default use the header field of the template
elseif thereAreOffices == true then
header = 'መዚ'
elseif not occupationOrArea then
header = 'ብንቡር'
elseif occupationOrArea:find('ተዋሳኢ') or occupationOrArea:find('ተዋሳኢት') or occupationOrArea:find('ኣፍራዪ ፊልም')
or occupationOrArea:find('ዳይረክተር ፊልም') then
header = 'ሲነማ'
elseif occupationOrArea:find('ተጻዋታይ ቸስ') or argument['ኤሎ'] or chessranking then
header = 'ተጻዋታይ ቸስ'
elseif occupationOrArea:find('ጠፈርተኛ') then
header = 'ጠፈርተኛ'
elseif occupationOrArea:find('ጸሓፊ') or occupationOrArea:find('ጸሓፊ ልብ ወለድ') or
occupationOrArea:find('ገጣሚ') or occupationOrArea:find('ጸሓፊ ድራማ') then
header = 'ጸሓፊ'
elseif occupationOrArea:find('ደራፊ') then
header = 'ደራፊ'
elseif occupationOrArea:find('ሙዚቀኛ') then
header = 'ሙዚቀኛ'
elseif occupationOrArea:find('ኣወሃሃዲ ሙዚቃ') then
header = 'ካልእ ሙዚቃ'
elseif occupationOrArea:find('ፖለቲከኛ') or argument['ስልጣን'] then
header = 'ብንቡር'
elseif occupationOrArea:find('ጋዜጠኛ') then
header = 'ጋዜጠኛ'
elseif occupationOrArea:find('ነዳፊ') then
header = 'ነዳፊ'
elseif occupationOrArea:find('ኣቕራቢ') or occupationOrArea:find('ኣዳላዊ') then
header = 'ተለቪዥን'
elseif occupationOrArea:find('ሞደል') then
header = 'ሞደል'
elseif occupationOrArea:find('ወተሃደራዊ') then
header = 'ወተሃደራዊ'
elseif occupationOrArea:find('ጳጳስ') or occupationOrArea:find('ኣቡን') or
occupationOrArea:find('ካርዲናል') or occupationOrArea:find('ፓትርያርክ') then
header = 'ሃይማኖታዊ'
elseif occupationOrArea:find('ተዋጋኢ ብዕራይ') then
header = 'ተዋጋኢ ብዕራይ'
elseif occupationOrArea:find('ጸወታ ቪድዮ') then
header = 'ጸወታ ቪድዮ'
elseif occupationOrArea:find('ዩትዩበር') then
header = 'ዩትዩበር'
else
header = 'ብንቡር'
end
local DiaconalOrder
if argument['ድያቆናት ብ'] then
DiaconalOrder = argument['ድያቆናት'] .. '<small> ብ' ..argument['ድያቆናት ብ'].. '</small>'
else
DiaconalOrder = argument['ድያቆናት']
end
local PriestlyOrder -- ?item P793 Q41463697 Q585
if argument['ክህነት ብ'] then
PriestlyOrder = argument['ክህነት'] .. '<small> ብ' ..argument['ክህነት ብ'].. '</small>'
else
PriestlyOrder = argument['ክህነት']
end
local EpiscopalOrder -- ?item P793 Q125375 Q585
if argument['ኤጲስቆጶስ ብ'] then -- ?item P793 Q125375 Q1598
EpiscopalOrder = argument['ኤጲስቆጶስ'] .. '<small> ብ' ..argument['ኤጲስቆጶስ ብ'].. '</small>'
else
EpiscopalOrder = argument['ኤጲስቆጶስ']
end
local Cardinalate -- ?item P793 Q41154026 Q585
if argument['መዓርግ ካርዲናል ብ'] then -- ?item P793 Q41154026 Q748
Cardinalate = argument['መዓርግ ካርዲናል'] .. '<small> ብ' ..argument['መዓርግ ካርዲናል ብ'].. '</small>'
else
Cardinalate = argument['መዓርግ ካርዲናል']
end
local CoatOfArmsTitle, CoatOfArms
if argument['ኣርማ'] ~= '' and (header == 'ሃይማኖታዊ' and argument['ኣርማ'] or property('P94')) then -- should we use P237 instead?
CoatOfArms = argument['ኣርማ'] or property('P94', {})
CoatOfArmsTitle = 'ኣርማ'
else
CoatOfArmsTitle = ''
end
local CoatOfArmsMotto = argument['ጭርሖ'] or property('P1451')
if CoatOfArmsMotto and argument['ዝተተርጎመ ጭርሖ'] then
CoatOfArmsMotto = CoatOfArmsMotto .. '<small style="display: block;"> ብ' ..argument['ዝተተርጎመ ጭርሖ'].. '</small>'
end
Format = formats[header] or {}
local infoboxTitleStyle, sectionsTitleStyle
infoboxTitleStyle = Format['infoboxTitleStyle']
sectionsTitleStyle = Format['sectionsTitleStyle'] or Format['infoboxTitleStyle']
if thereAreOffices == true then
officesoccupied = ''
else
officesoccupied = argument['ዝተታሕዘ ስልጣን'] or property('P39', {['list'] = 'not ordered', ['textFormat'] = 'uppercase',
toOrder='ብዕለት',
['linkback']='yes',
['value-function'] = ModuleWikidataFormats.officeFormat
})
end
if argument['ደረጃ'] or argument['ኣርከን'] then
chessranking= (argument['ደረጃ'] or argument['ኣርከን']) .. frame:preprocess('<ref> [http://ratings.fide.com/toplist.phtml ደረጃ ኤፍ.ኣይ.ዲ.ኢ.] </ref>')
end
local webSite
if argument['መርበብ'] or argument['ገጽ መርበብ'] or argument['ዌብሳይት'] or argument['መርበብ ሓበሬታ'] or argument['መርበብሓበሬታ'] then
webSite = noExtend(toLinkURL(argument['መርበብ'] or argument['ገጽ መርበብ'] or argument['ዌብሳይት'] or argument['መርበብ ሓበሬታ'] or argument['መርበብሓበሬታ']))
else
webSite = property('P856', {['value-function'] = URLFormat, ['linkback']='yes', ['highestRank'] = 'yes'})
end
local victims = argument['ግዳያት']
if victims then
local ValidOccupationsVictims = {'Q484188', 'Q14886050', 'Q26267537', 'Q1154323'} -- serial killer, terrorist, serial rapist and hit-and-run killer
for k,v in pairs(ValidOccupationsVictims) do
local snak = property('P106', {['value-function'] = idFormat})
if snak and snak:match(v) then
victims = argument['ግዳያት']
break
else
victims = ''
end
end
end
-- Image and image footer
local image = argument['ምስሊ'] or argument['ስእሊ'] or argument['ፎቶ']
local imageFooter
if image then
imageFooter = argument['እግረዋይ ምስሊ'] or argument['እግረዋይምስሊ'] or
argument['መግለጺ'] or
argument['እግረዋይ ፎቶ'] or argument['እግረዋይፎቶ'] or
argument['ጽሑፍምስሊ'] or argument['ጽሑፍ_ምስሊ'] or
argument['እግረዋይ ፎቶ']
else
image, imageFooter = getImageWikidata()
-- Pending obtaining the footer of the qualifier P2096
end
local related = argument['ተዛመድቲ'] or ''
if related and mw.ustring.len(related) > 200 then
related = ''
end
local Infobox = {
wikidata = not getDataWikidata and 'no',
class = 'biography vcard',
-- Title
headertype = 'ሰብ',
title = name,
--backgroundcolor = backgroundcolor, -- Not used
titlestyle = infoboxTitleStyle,
--Image
--At the moment there is no line as in the writer's file after the image
image = image,
['imagesize']= argument['መጠን ምስሊ'] or argument['መጠን'] or
argument['መጠን ምስሊ'] or argument['መጠንምስሊ'] or
argument['መጠን ፎቶ'] or
'220px', -- or '200px' in the writer infobox, 192 in the artist infobox. I take default 220, the size of thumb
footer = imageFooter,
-- Pending: in the writer tab the text is placed between <small> and in the artist tab the font-size:smaller style is used
--Labels and data
labelstyle = 'width:33%', -- 25% in the writer's infobox. Unspecified in the person
--'padding:0.2em 1.0em 0.2em 0.2em; background-color:transparent; line-height:1.2em;', -- In the original person infobox
datastyle = 'line-height:1.3em; vertical-align:middle;',
officesTable,
{type='section',
['title'] = 'ውልቃዊ ሓበሬታ', -- See the noble infobox or the designer infobox
titlestyle = sectionsTitleStyle,
{'ምሉእ ስም', -- only if it does not match with:
(full_name ~= name) and -- - the name displayed in the infobox title
(full_name ~= birth_name_without_pencil) and -- - or with birth name
full_name},
{'ስም ልደት', -- only if it does not match the name displayed in the infobox title
(birth_name_without_pencil ~= name)
and birth_name},
nativeNames,
{'ሃይማኖታዊ ስም', argument['ሃይማኖታዊ ስም'] or property('P1635')},
{'ሳጓ', argument['ሳጓ'] or property('P1449')},
{'ካልእ ኣስማት', argument['ካልእ ኣስማት'] or argument['ካልእ ስም'],
class='nickname'},
{'ልደት', birth},
{'ምጥፋእ', disappearance},
{'ሞት', death},
{'ጠንቂ ሞት', ifItsNot(argument['ጠንቂ ሞት'] or
property('P509', inUppercase) or
property('P1196', inUppercase), 'ተፈጥሮኣዊ ጠንቅታት')}, -- circumstances of death
{'ቀብሪ', argument['መዕረፊ ቦታ'] or property('P119', {['value-module'] = 'Wikidata/Place format', ['textFormat'] = 'uppercase', ['linkback'] = 'yes'}) },
{'መንበሪ ገዛ', withoutFlag(argument['መንበሪ ገዛ'] or
argument['መንበሪ_ሃገር'] or
argument['መንበሪ_ቦታ']) or
property('P551', {['mustExist'] = 'yes', ['linkback']='yes', ['highestRank'] = 'yes'}),
class='label'},
{'ዜግነት', withoutFlag(argument['ዜግነት']) or --The demonym is missing
require('Module:Wikidata/Country formats').nationalityFormat(tableElement(Entity,'claims','P27'),{
['textFormat'] = 'uppercase',
['property'] = 'P27',
['linkback']='yes', ['entityId']=tableElement(Entity,id)}),
class='category'},
{'ዓሌት', --property('P172', inUppercase) or
argument['ዓሌት'] or argument['ዓሌታዊ ጉጅለ'],
class='category'},
{'ሃይማኖት', argument['ሃይማኖት'] or property('P140', mustExist)},
{'ቋንቋ ኣደ', argument['ቋንቋ ኣደ'] or argument['ቋንቋ_ኣደ'] or property('P103', inUppercase)},
},
{type='section',
titlestyle = sectionsTitleStyle,
['title'] = 'ኣካላዊ ባህርያት',
{'ቁመት', argument['ቁመት'] or property('P2048', {['value-function']='magnitude', ['value-module'] = 'Wikidata/Magnitude format', ['linkback']='yes'})},
{'ክብደት', argument['ክብደት'] or property('P2067', {['value-function']='magnitude', ['value-module'] = 'Wikidata/Magnitude format', ['linkback']='yes'})},
{'ዓቐናት', argument['ዓቐናት']},
{'ዓይኒ', argument['ሕብሪ ዓይኒ'] or property('P1340', inUppercase)},
{'ጸጉሪ', argument['ሕብሪ ጸጉሪ'] or property('P1884', inUppercase)},
{'[[ምዕባይ ጡብ|ተፈጥሮኣዊ ጡብ]]', argument['ተፈጥሮኣዊ ጡብ']},
--{'[[ጾታዊ ዝንባለ]]', property('P91', inUppercase) or argument['ጾታዊ ዝንባለ']}
},
{type='section',
-- Family.
titlestyle = sectionsTitleStyle,
['title'] = 'ስድራ', -- See the noble infobox
-- In the case of the spouse, the argument takes precedence until the qualifiers are shown.
class ='plainlist', -- Show lists without bullets
{'ስድራ', property('P53', mustExist)},
{(parents and 'ወለዲ') or (father and 'ኣቦ') or 'ኣዶ', -- Show parents, father or mother as reported both or only one of them
parents or father or mother},
{'በዓል ቤት', isLinked(argument['በዓል ቤት'] or
property('P26', withPeriod))},
{'በዓልቲ ቤት', isLinked(argument['በዓልቲ ቤት'] or
property('P26', withPeriod))},
{'ጽምዲ', isLinked(argument['ጽምዲ'] or property('P451', withPeriod))},
{'ቆልዑ', isLinked(argument['ቆልዑ']) or
property('P40', {['list'] = 'not ordered', ['mustExist'] = 'yes', ['linkback']='yes'}) or
property('P1971', withoutLinkup)
},
{'ኣባላት ስድራ', isLinked(argument['ኣባላት ስድራ'])},
},
{type='section',
['title'] = 'ትምህርቲ',
titlestyle = sectionsTitleStyle,
{'ትምህርቲ', education},
{labelEducatedIn, almamater, class='plainlist'},
{'ድሕረ ምረቓ', argument['ድሕረ ምረቓ']},
{'ዶክተራዊ ድርሳን',
inBrackets(
(argument['ኣድራሻ መርበብ ሓበሬታ ድርሳን'] and toLinkURL(argument['ኣድራሻ መርበብ ሓበሬታ ድርሳን'], ModuleTextFormat.inItalics(argument['ኣርእስቲ ድርሳን']))-- If the url is informed
) or (not argument['ኣድራሻ መርበብ ሓበሬታ ድርሳን'] and ModuleTextFormat.inItalics(argument['ኣርእስቲ ድርሳን']) -- If the url is not informed
)
, argument['ዓመት ድርሳን'])
},
{'ዶክተራዊ ተቖጻጻሪት', argument['ዶክተራዊ ተቖጻጻሪት']},
{'ዶክተራዊ ተቖጻጸርቲ' , argument['ዶክተራዊ ተቖጻጸርቲ']},
{'ዶክተራዊ ተቖጻጻሪ' , argument['ዶክተራዊ ተቖጻጻሪ'] or property('P184')},
{labelStudentOf, argument['ተማሃራይ ናይ'] or property('P1066', withPeriodMustExist), class='plainlist'},
},
{type='section',
['title'] = 'ሞያዊ ሓበሬታ',
titlestyle = sectionsTitleStyle,
{'ሞያ', occupation, class='role'},
{'ቦታ', area},
{labelActiveYears, argument['ዓመታት ንጡፍ'] or argument['ዓመታት ንጥፍቲ'] or argument['ዓመታትንጡፍ'] or
argument['እዋን'] or argument['እዋን'] or
argument['ግዜ'] or argument['ዓመታት ንጥፈት'] or
periodFormat({ -- the pencil is missing
['P580']={[1]=tableElement(Entity, 'claims','P2031',1,'mainsnak')},
['P582']={[1]=tableElement(Entity, 'claims','P2032',1,'mainsnak')}
})},
{labelKnownBy, argument['ፍሉጥ ብ'] or argument['ፍሉጥ']},
{'ዝተታሕዙ ስልጣናት', officesoccupied,class='plainlist'}, -- politicians or in companies
{'ኣሰያይማ', argument['ኣሰያይማ']},
{'ደሞዝ', argument['ደሞዝ']},
{'ጥሪት', argument['ጥሪት'] or argument['ሃብቲ']},
{'ኩባንያ', argument['ኩባንያ']},
{'መጽናዕቲ', argument['ስም መጽናዕቲ']}, -- Architects
{'ኣብያተ መግቢ', argument['ኣብያተ መግቢ']}, -- For cooks. Restaurants in which he has worked.
{type='section',
['title'] = 'ሃይማኖታዊ ሓበሬታ',
titlestyle = sectionsTitleStyle,
{'[[በዓለ ሲመት|ድያቆናዊ ስርዓት]]', DiaconalOrder},
{'ክህነታዊ ስርዓት', PriestlyOrder},
{'ኤጲስቆጶሳዊ ስርዓት', EpiscopalOrder},
{'ካርዲናል ኣዋጅ', Cardinalate},
{'ካርዲናል መዓርግ', argument['ካርዲናል መዓርግ']},
{'ቤተ ክርስትያን', argument['ቤተ ክርስትያን']},
{'[[ዓለማውነት]]', argument['ዓለማውነት']},
{'[[ኣብጽኦት]]', argument['ኣብጽኦት']},
{'[[ቀኖናውነት]]', argument['ቀኖናውነት'] or property('P411', inUppercase)},
{'በዓል', argument['በዓል'] or property('P841')},
{'ባህርያት', argument['ባህርያት']},
{labelReveredIn, argument['ዝኽበር ኣብ'] or property('P1049')},
{'ምጉይታት', argument['ምጉይታት'] or property('P417')},
{'ቅዱስ ቦታ', argument['ቅዱስ ቦታ']},
},
-- Artistic section (actors and, presenters?)
{type='section',
['title'] = artisticsection,
titlestyle = sectionsTitleStyle,
{'ናይ መጀመርታ ተራ' , argument['ናይ መጀመርታ ተራ']},
{'ናይ መጀመርታ ዓመት' , argument['ናይ መጀመርታ ተራ'] and argument['ናይ መጀመርታ ዓመት']},
--{'ዓመት ምውጻእ', argument['ዓመት ምውጻእ'] or property('P2032')},
{'ፊልምታት' , argument['ብዝሒ ፊልምታት']},
{'ተኸታታሊ' , argument['ተኸታታሊ']},
},
{'ኣስራሒ', argument['ኣስራሒ'] or
argument['ትካል_ስራሕ'] or
argument['ስም_መጽናዕቲ'] or
property('P108', withPeriod),
class ='plainlist'},
--Teachers
{'ዶክተራዊ ተማሃሮ', argument['ዶክተራዊ ተማሃሮ'] or property('P185', mustExist)},
{(occupationOrArea and occupationOrArea:find('መምህር') and 'ተማሃሮ'), argument['ተማሃሮ'] or property('P802', mustExist)},
-- Journalists, presenters and video bloggers
{type='section',
{'መራኸቢ ብዙሃን', argument['መራኸቢ ብዙሃን']}, -- Sometimes informed with the meaning of area and others with the employer
{'መትረብ', argument['መትረብ']},
{'መደባት', argument['መደባት'] or argument['መደብ']},
},
-- Video bloggers, especially youtubers
{type='section',
{'ቪድዮታት', argument['ቪድዮታት']},
{'ተመዝገብቲ', argument['ተመዝገብቲ']},
{'ጠቕላላ ትርኢታት', argument['ጠቕላላ ትርኢታት']},
},
-- Occupation (writers, artists, journalists, designers, etc.)
-- Artistic information
{type='section',
plural(argument['ምንቅስቓስ'] or argument['ምንቅስቓሳት'] or
property('P135', {
['value-module'] = 'Wikidata/Movement format',
['value-function'] = 'movementFormat',
['linkback']='yes',
['qualifying'] = periodFormat,
['highestRank'] = 'yes',
toOrder='ብዕለት', ['textFormat'] = 'uppercase',}), 'ምንቅስቓስ', 'ምንቅስቓሳት'),
{'ስም ብርዒ', argument['ስም ብርዒ'] or argument['ካልእ ስም'] or property('P742')},
{'ስነ ጽሑፋዊ ቋንቋ', argument['ስነ_ጽሑፋዊ_ቋንቋ']},
plural(argument['ጾታ'] or argument['ጾታ'] or property('P136', inUppercase), 'ጾታ', 'ጾታታት'),
plural(argument['መሳርሒ'] or property('P1303', inUppercase), 'መሳርሒ', 'መሳርሒታት'),
{'ዓይነት ደሃይ', argument['ደሃይ'] or argument['ዓይነት ደሃይ'] or property('P412', inUppercase)},
plural(argument['ትካል መዝገብ'] or property('P264', withPeriod), 'ትካል መዝገብ', 'ትካላት መዝገብ', 'plainlist'),
},
-- Notable works. They are put in italics for the moment but it is incorrect in the case of architects.
{'ፍሉጣት ስራሕቲ', argument['ብሉጻት ስራሕቲ'] or
argument['ፍሉጣት ስራሕቲ'] or argument['ፍሉጣት_ስራሕቲ'] or
argument['ስራሕቲ'] or
argument['ተወከልቲ_ፕሮጀክታት'] or property('P800',{['link']='yes', ['list'] = 'not ordered', ['mustExist'] = 'yes', ['textFormat']='italics', ['linkback']='yes'}),
class='plainlist'
},
{'ተወከልቲ ፕሮጀክታት', argument['ተወከልቲ ፕሮጀክታት']},
{'ተዛመድቲ ስነ ጥበባውያን', related},
{'[[ምጥቃስ ደራሲ|ኣሕጽሮተ ቃል ኣብ ስነ ዕጽዋት]]',
argument['ኣሕጽሮተ ቃል ኣብ ስነ ዕጽዋት'] or property('P428')},
{'[[ምጥቃስ ደራሲ|ኣሕጽሮተ ቃል ኣብ ስነ እንስሳታት]]',
argument['ኣሕጽሮተ ቃል ኣብ ስነ እንስሳታት'] or property('P835')},
{'[[ምጥቃስ ደራሲ|ኣሕጽሮተ ቃል ኣብ ስነ ኮኾብ]]',
argument['ኣሕጽሮተ ቃል ኣብ ስነ ኮኾብ']},
--{'', collapsibleList(labelInfluences, argument['ዝተጸልወ ብ'] or
-- argument['ጽልዋታት'], frame)},
--{'', collapsibleList('ጽልዋ ኣሕዲሩ(ራ) ን', argument['ጽልዋ ኣሕዲሩ(ራ) ን'] or argument['ጽልዋ ኣሕዲሩ'], frame)},
-- Military
{'ተኣማንነት', argument['ተኣማንነት'] or property('P945', inUppercase)},
{'ወተሃደራዊ ጨንፈር', argument['ጨንፈር'] or property('P241', inUppercase)},
{'ወተሃደራዊ ሓድነት', argument['ሓድነት'] or property('P7779', inUppercase)},
{'ትእዛዛት', argument['ትእዛዛት']},
{'[[ወተሃደራዊ መዓርግ]]', argument['መዓርግ'] or property('P410', withPeriod), class='plainlist'},
{'ግርጭታት', argument['ግርጭታት'] or argument['ውግኣት'] or property('P607', inUppercase)},
-- Astronauts (a subtype of military)
{'ተልእኾታት ጠፈር', argument['ተልእኾታት ጠፈር'] or property('P450')},
{'ኣብ ጠፈር ዝነበረ ግዜ', argument['ግዜ ጠፈር']},
{'ፖለቲካዊ ሰልፊ', argument['ፖለቲካዊ ሰልፊ'] or argument['ሰልፊ'] or property('P102', withPeriod), class='plainlist'},
{'ሃይማኖታዊ ስርዓት', argument['ምእመናን'] or property('P611', inUppercase)},
{'ምትእስሳራት', argument['ምትእስሳራት'] or property('P1416')},
{'ኣባል ናይ', argument['ኣባል ናይ'] or argument['ማሕበር ሰራሕተኛታት'] or property('P463', withPeriodMustExist), class='plainlist'},
{'ማእከል ማሕበር ሰራሕተኛታት', argument['ማእከል ማሕበር ሰራሕተኛታት'], class='plainlist'},
-- Web
{'መርበብ ሓበሬታ', webSite},
},
{type='section',
['title'] = 'ስፖርታዊ ሞያ', -- See the noble infobox or the designer infobox
titlestyle = sectionsTitleStyle,
{'ስፖርት', argument['ስፖርት'] or property('P641', inUppercase)},
{'ወኪል ናይ', argument['ወኪል'] or property('P1532', withPeriod)},
},
{type='section',
['title'] = 'መግለጺ መንነት ተጻዋታይ',
titlestyle = sectionsTitleStyle,
{'ጸወታታት', argument['ጸወታታት'] or property('P2416')},
{'ደረጃ', argument['ደረጃ'] or property('P413')},
{'ቁጽሪ', argument['ቁጽሪ'] or property('P1618')},
{'ጋንታታት', argument['ጋንታታት'] or property('P54')},
{'ሊጋት', argument['ሊጋት'] or property('P118')},
{'ምምራጽ', argument['ምምራጽ']},
{'ተዓዋቲ መዳልያ', argument['ኦሎምፒካዊ ተዓዋቲ መዳልያ']},
{'ኣሰልጣኒ', argument['ኣሰልጣኒ'] or property('P6087')},
{'መድረኻት ፈነወ', argument['መድረኽ']},
},
{type='section',
['title'] = 'መዳልያታት',
titlestyle = sectionsTitleStyle,
{'', argument['መዳልያታት'] },
},
{type='section',
['title'] = 'ገበናዊ ሓበሬታ',
titlestyle = sectionsTitleStyle,
{'ገበናዊ ክስታት', argument['ገበናዊ ክስታት'] or property('P1399'), class='plainlist'},
-- P2632 can be used in any of the two parameters below
{'ፍርዲ', argument['ፍርዲ']},
{'መቕጻዕታዊ ኩነት', argument['መቕጻዕታዊ ኩነት']},
{'ግዳያት', victims},
},
-- With label/data as in the writer and artist infoboxes instead of as in the person infobox
{'ፊርማ', signature },
{type='section',
title ='መዘኻኸሪታት',
titlestyle='border-top:1px solid #c0c0c0;text-align:left',
{'', argument['መዘኻኸሪታት'], datastyle='text-align:left;font-size:90%; line-height:1.2em'}
},
-- Hypothetical section, images below are not displayed within a section
{'',
CoatOfArmsTitle or '',
datastyle = 'text-align: center; font-weight: bold;' .. (sectionsTitleStyle or ''),
},
bottomimage = CoatOfArms,
['bottomimagesize'] = '110px',
bottomfooter = CoatOfArmsMotto,
--{'ምንጪ ታሪኽ ህይወት', argument['ምንጪታሪኽህይወት']},
entity = argument['id'], -- for the final link to wikidata
}
categories = {}
if argument['መዕረፊ_ቦታ'] or --renamed
argument['ዶክተራዊ_ተቖጻጻሪት'] or --renamed
argument['ዶክተራዊ_ተቖጻጸርቲ'] or --renamed
argument['ዶክተራዊ_ተቖጻጻሪ'] or --renamed
argument['ድርሳን_ኣድራሻ_መርበብ_ሓበሬታ'] or --renamed
argument['ድርሳን_ኣርእስቲ'] or --renamed
argument['ድርሳን_ዓመት'] or --renamed
argument['ኣሕጽሮተ ቃል ኣብ ስነ ኮኾብ']
or argument['ምንጪታሪኽህይወት'] --to be deleted
or argument['ኢመይል'] --to be deleted
then
table.insert(categories, '[[Category:Wikipedia:ካብቲ ናይ ሰብ ሓበሬታ ሞደል ክትክእዎ ዘለኩም መለክዒታት ዘለዎም ገጻት ]]')
end
local Lifetime = require('Module:Lifetime')
-- table.insert(categories, Lifetime.catLivingStatus(argument['ዕለት ልደት'], argument['ዕለት ሞት'], true ) )
table.insert(categories, Lifetime.catSexGenderIdentity())
if argument['ኣርእስታት ክፍልታት'] == '' then -- "no" when calling the infobox
--if true then return require('Module:Tables').tostring(Infobox) end
deleteSectionTitles(Infobox)
end
namespace = mw.title.getCurrentTitle().namespace
if categories[1] and (namespace == 0 or namespace == 104) then
return ModuleInfobox.infobox(Infobox) .. table.concat(categories)
else
return ModuleInfobox.infobox(Infobox)
end
end
function deleteSectionTitles (board)
if board.type == 'section' then
board.title = nil
end
for k, v in pairs( board ) do
if type(v) == 'table' then
deleteSectionTitles(v)
end
end
--if true then return require('Module:Tables').tostring(board) end
end
function generateoffice(argument,number,frame)
info=number --two variables are required for the first parameter
if number == 1 then number ='' end --if it's the first office, then it doesn't have a number
if argument ['ስልጣን'..number] == nil then title=''
elseif argument['ኣርማ'..number] == nil then title=argument['ስልጣን'..number] -- if it does not have a coat of arms then leave it blank, if it does have a coat of arms put it
else title='[[File:'..argument['ኣርማ'..number]..'|44x40px]]<br />'..argument['ስልጣን'..number] end
if argument['ወረዳ'..number] then title = title..'<br /><small>ብ'..argument['ወረዳ'..number]..'</small>' end
if argument['ኣምባሳደርናይ'..number] then title = title .. frame:preprocess('<br /> {{flagdeco|'.. argument['ኣምባሳደርናይ'..number] ..'|size=44x40px}}') end--{{flagdeco|{{{ኣምባሳደርናይ}}}|size=44x40px}}
if argument['ሃገር'..number] then title = title .. frame:preprocess('{{flagdeco|'.. argument['ሃገር'..number] ..'|size=44x40px}}') end
if argument['ንኡስኣርእስቲ'..number] then title = title .. '<br /><small>'..argument['ንኡስኣርእስቲ'..number]..'</small>' end
period = ''
if argument['ምጅማር'..number] and argument['መወዳእታ'..number] then
period = argument['ምጅማር'..number]..'-'.. argument['መወዳእታ'..number]
elseif argument['መወዳእታ'..number] then
period = 'ክሳብ ' .. argument['መወዳእታ'..number]
elseif argument['ምጅማር'..number] then
title = title .. '<br /> <small> ኣብዚ ሕጂ እዋን ኣብ ስልጣን</small>'
period = 'ካብ '..argument['ምጅማር'..number]
end
textstring={type='section',
['title']=title,
titlestyle = 'background-color:#E6E6FA;',
{'', period},
{'ብሓባር ምስ', argument['ብሓባርምስ'..number] },
{'ዝተሓጽየ ብ', argument['ዝተሓጽየ'..number] },
{'ዝተሓጽየት ብ', argument['ዝተሓጽየት'..number] },
{'ዝተመዘዘ ብ', argument['ዝተመዘዘ'..number] },
{'ዝተመዘዘት ብ', argument['ዝተመዘዘት'..number] },
{'[[ንጉስ]]', argument['ንጉስ'..number] },
{'[[ንጉስ|ንግስቲ]]', argument['ንግስቲ'..number] },
{'[[ፕረዚደንት]]', argument['ፕረዚደንት'..number] },
{'[[ቀዳማይ ሚኒስተር]]', argument['ቀዳማይሚኒስተር'..number] },
{'[[ቀዳማይ ሚኒስተር|ቀዳመይቲ ሚኒስተር]]', argument['ቀዳመይቲሚኒስተር'..number] },
{'[[ቻንስለር]]', argument['ቻንስለር'..number] },
{'[[ኣመሓዳሪ]]', argument['ኣመሓዳሪ'..number] },
{'[[ከንቲባ]]', argument['ከንቲባ'..number] },
{'[[መራሒ መንግስቲ]]', argument['መራሒ'..number] },
{'[[መራሒ መንግስቲ|መራሒት መንግስቲ]]', argument['መራሒት'..number] },
{'[[ካቢነ]]', argument['ካቢነ'..number] },
{'[[ካቢነ|ቤት ምኽሪ ሚኒስተራት]]', argument['ቤትምኽሪ'..number] },
{'ጸሓፊ', argument['ጸሓፊ'..number]},
{'ጸሓፊት', argument['ጸሓፊት'..number]},
{'[[ምክትል ፕረዚደንት]]', argument['ምክትልፕረዚደንት'..number] },
{'[[ምክትል ቀዳማይ ሚኒስተር]]', argument['ምክትልቀዳማይሚኒስተር'..number] },
{'[[ምክትል ቀዳማይ ሚኒስተር|ምክትል ቀዳመይቲ ሚኒስተር]]', argument['ምክትልቀዳመይቲሚኒስተር'..number] },
{'ምክትል ቻንስለር', argument['ምክትልቻንስለር'..number]},
{'[[ምክትል ኣመሓዳሪ]]', argument['ምክትልኣመሓዳሪ'..number] },
{'[[ምክትል ኣመሓዳሪ|ምክትል ኣመሓዳሪት]]', argument['ምክትልኣመሓዳሪት'..number] },
{'[[ለተናል ኣመሓዳሪ]]', argument['ለተናል'..number] },
{'ምክትል ከንቲባ', argument['ምክትልከንቲባ'..number] },
{'ምክትል መራሒ መንግስቲ', argument['ምክትልመራሒ'..number]},
{'ቅድሚኡ ዝነበረ', argument['ቅድሚኡዝነበረ'..number]},
{'ቅድሚኣ ዝነበረት', argument['ቅድሚኣዝነበረት'..number]},
{'ተካኢ', argument['ተካኢ'..number]},
{'ተካኢት', argument['ተካኢት'..number]},
{argument[info..'data1'], argument[info..'data2'] },
{argument[info..'data3'], argument[info..'data4'] },
{'','<hr>'}
}
return textstring
end
-- Function that returns the list of the values of a property in Wikidata formatted
function property(propertyId,options)
-- Do not get any Wikidata properties for deceased people if accessed with wikidata=no parameter
if not getDataWikidata then
return
end
if Entity and Entity.claims and Entity.claims[propertyId] then
if not options then
options = {['linkback']='yes'}
end
options.entityId = Entity.id
--if propertyId =='P1477' then return require('Module:Tables').tostring(Entity) end -- MISSING
options.property = propertyId
propertyValue = getPropertyWikidata(options,Entity.claims[propertyId])
if not propertyValue then
return
end
if propertyValue:match('%[%[:d:') then
somePropertyLinkWikidata = true
end
return propertyValue
end
end
function collapsibleList(title, list, frame)
if not list then
return
end
previousformat='background:transparent'
return frame:preprocess('{{Collapsible list|title=' .. title ..
--'|frame_style=border:0; padding:0; border-top:1px solid #c0c0c0;' ..
'|frame_style=border:0; padding:0;' ..
'|title_style=background-color:#8DB1C3;color:#FFF; text-align:left|list_style=padding-left:33%;text-align:left; display:none|1='
.. list .. '}}')
end
function dropdownSection(title, list, frame, titlestyle)
if not list then
return
end
return frame:preprocess('{{Dropdown section|title=' .. title ..
--'|border_style=border:0; padding:0; border-top:1px solid #c0c0c0;' ..
'|data=<div style="text-align:left;margin: 1px; padding: 2px; border:1px">'.. list .. '</div>|titlestyle='.. (titlestyle or '') ..';}}')
end
function isLinked(that)
if true then return that end
if not that then
return
end
for content in that:gmatch("%[%[(.+)]]") do
if not content:match('^:d:') and
not content:match('^Category:') then
return that
end
end
end
function maleOccupationFormat(value, options, frame, qualifiers)
local occupationLink, occupationLabel, occupationEntityId = ModuleWikidataFormats.getData(value)
return ModuleWikidataFormats.toLink(occupationLink, occupationLabel, occupationEntityId, options)
end
function femaleOccupationFormat(value, options, frame, qualifiers)
local occupationLink, occupationLabel, occupationEntityId = ModuleWikidataFormats.getData(value)
-- Wikidata will not be accessed for the most frequent occupations.
local femaleOccupationsTable={
['Q15253558'] = 'ተጣባቒት',
['Q1476215' ] = 'ተጣባቒት ሰብኣዊ መሰላት',
['Q33999' ] = 'ተዋሳኢት',
['Q10800557'] = 'ተዋሳኢት ፊልም',
['Q2259451' ] = 'ተዋሳኢት ትያትር',
['Q10798782'] = 'ተዋሳኢት ተለቪዥን',
['Q2405480' ] = 'ተዋሳኢት ደሃይ',
['Q488111' ] = 'ተዋሳኢት ስእለ ጽዩፍ',
['Q10873124'] = 'ተጻዋቲት ቸስ',
['Q42973' ] = 'ስነ ሃናጺት',
['Q483501' ] = 'ስነ ጥበባዊት',
['Q482980' ] = 'ደራሲት',
['Q5716684' ] = 'ሳዕሳዒት',
['Q177220' ] = 'ደራፊት',
['Q15212951'] = 'ሰራሒት ፊልም',
['Q36834' ] = 'ኣወሃሃዲት ሙዚቃ',
['Q18939491'] = 'ጸሓፊት መዝገበ ዕለት',
['Q5322166' ] = 'ነዳፊት',
['Q214917' ] = 'ጸሓፊት ተዋስኦ',
['Q43845' ] = 'ነጋዲት',
['Q36180' ] = 'ጸሓፊት',
['Q1281618' ] = 'ቀራጺት',
['Q11900058'] = 'ዳህሳሲት',
['Q33231' ] = 'ሰኣሊት',
['Q4379701 '] = 'ሞያዊ ተጻዋቲት',
['Q4610556' ] = 'ሞደል',
['Q1028181' ] = 'ቀባኢት',
['Q49757' ] = 'ገጣሚት',
['Q270389' ] = 'ኣቕራቢት ዜና',
['Q947873' ] = 'ኣቕራቢት ተለቪዥን',
['Q549322' ] = 'ተዋጋኢት ብዕራይ',
['Q333634' ] = 'ተርጓሚት',
}
local occupationLabelCorrected = femaleOccupationsTable[occupationEntityId]
if occupationLabelCorrected then
return ModuleWikidataFormats.toLink(occupationLink, occupationLabelCorrected, occupationEntityId, options)
else
-- Occupation is not in the table above. Attempting to retrieve property P2522 on Wikidata for occupation
occupationLabelCorrected = ModuleWikidata.getPropertyInTigrinya(occupationEntityId, 'P2521') or occupationLabel
return ModuleWikidataFormats.toLink(occupationLink, occupationLabelCorrected, occupationEntityId, options)
end
end
function getQualifierValue(Property, Qualifying, propertyValue)
-- Get the value of the first property qualifier with the received value
if not Entity or not Entity.claims or not Entity.claims[Property] then
return
end
for k,v in pairs(Entity.claims[Property]) do
if v.mainsnak
and v.mainsnak.datavalue
and v.mainsnak.datavalue.value
and v.mainsnak.datavalue.value['numeric-id'] == propertyValue
and v.qualifiers
and v.qualifiers[Qualifying]
and v.qualifiers[Qualifying][1]
and v.qualifiers[Qualifying][1].datavalue then
return v.qualifiers[Qualifying][1].datavalue.value
end
end
end
function getArgumentsWithValue(frame)
local original
if frame == mw.getCurrentFrame() then
original = frame:getParent().args
else
original = frame.args or frame
end
local copy= {}
for k,v in pairs(original) do
if v == 'no' and k ~= 'wikidata' then
--If "no" is valid, leave the argument blank so as not to obtain the value
--from Wikidata
copy[k] = ''
elseif v~='' then
--If it is blank leave it to nil to get the Wikidata value
-- if there is no other argument with a similar name
copy[k] = original[k]
end
end
return copy
end
function getImageWikidata()
local image, imageValue, imageFooters, k, imageFooter
if not Entity then
return
end
-- Get the first image in Wikidata of the person
local image = tableElement(Entity, 'claims','P18')
if not image then
return
end
image = require('Module:Wikidata').filterStatementByRank(image)[1]
-- Get image name
imageValue = tableElement(image, 'mainsnak','datavalue','value') -- For example, image.jpg
-- Get image footers, one per language
imageFooters = tableElement(image, 'qualifiers','P2096')
-- Find the footer in Tigrinya (the one with datavalue.value.language = "ti")
if imageFooters then
for k,imageFooter in pairs(imageFooters) do
if imageFooter.datavalue.value.language=='ti' then
-- return the image and the text of the image footer in Tigrinya
return imageValue, imageFooter.datavalue.value.text
end
end
end
-- If there is no footer in Tigrinya, check if there is a date specified for the image
imageFooters = tableElement(image, 'qualifiers', 'P585')
if imageFooters and imageFooters[1] then
if imageFooters[1].datavalue and imageFooters[1].datavalue.value then
return imageValue, name .. ' ብ' .. require('Module:Wikidata/Date').FormatDateTime(imageFooters[1].datavalue.value, {['dateFormat']='ዓመት',['link']='no'})
else
return imageValue, name
end
end
-- No image footer in Tigrinya
return imageValue
end
function getDateWikidata(property)
local dateStatements = tableElement(Entity, 'claims', property)
-- Do not return age if there are none or if there are multiple dates.
if not dateStatements or dateStatements[2] then
return
end
local dateStatement = dateStatements[1]
if not dateStatement then
return
end
local dateValue = tableElement(dateStatement, 'mainsnak', 'datavalue', 'value')
if not dateValue then
return
end
--Accuracy must reach to the day
if dateValue.accuracy ~= 11 then
return
end
local iso = dateValue.time
if not iso then
return
end
local Date = {}
Date.calendar = dateValue.calendarmodel
Date.year = tonumber(iso:sub(1, 5))
Date.month = tonumber(iso:sub(7,8))
Date.day = tonumber(iso:sub(10,11))
return Date
end
function getAgeWikidata(endProperty)
local birthDate = getDateWikidata('P569')
if not birthDate then
return
end
if endProperty then
local endDate = getDateWikidata(endProperty)
if endDate and
endDate.calendar == birthDate.calendar then
return age(birthDate, endDate)
end
else
return age(birthDate)
end
end
function noExtend(that)
if not that then
return
end
return '<div style="width:14.66em;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;">' .. that .. '</div>'
end
function plural(that, singular, plural, pClass)
if not that then
return {}
elseif that:match(',') or that:match('</li><li>') then
return {plural, that, class=pClass}
else
return {singular, that, class=pClass}
end
end
function ifItsNot(that, value)
if not that then
return
end
if not that:match(value) then
return that
end
end
return z