local WDS = require( 'Module:WikidataSelectors' ); local p = {}; local categoryLinksToEntitiesWithMissingLabel = 'Kategori:Vikipedi:Vikiveri öğeleri Türkçe\'ye çevrilmemiş maddeler'; local function getGenderLabelForEntityId( entityId, isFemale ) if not isFemale then return mw.wikibase.getLabelByLang( entityId, 'tr' ) end local entity = mw.wikibase.getEntity( entityId ); if not entity.claims or not entity.claims.P2521 then return entity:getLabel; end local femLabels = WDS.filterByLanguage( WDS.filterByRank( entity.claims.P2521, 'deprecated', true ), 'tr' ); if femLabels ~= nil and femLabels[1] and femLabels[1].mainsnak and femLabels[1].mainsnak.datavalue and femLabels[1].mainsnak.datavalue.value and femLabels[1].mainsnak.datavalue.value.text then return femLabels[1].mainsnak.datavalue.value.text; end return entity:getLabel; end local function formatOccupationLinkForEntityId( entityId, isFemale ) local label = getGenderLabelForEntityId( entityId, isFemale ); -- first try to link to occupation article local link = mw.wikibase.sitelink( entityId ) if link and not label then label = link end -- if we don't have article for occupation, try to link to field of occupation if not link then local fooEntity = mw.wikibase.getEntity( entityId ); if fooEntity and fooEntity.claims and fooEntity.claims.P425 then fooEntity = WDS.filterByRank( fooEntity.claims.P425, 'deprecated', true ); if fooEntity ~= nil and fooEntity[1] and fooEntity[1].mainsnak and fooEntity[1].mainsnak.datavalue and fooEntity[1].mainsnak.datavalue.value and fooEntity[1].mainsnak.datavalue.value.id then link = mw.wikibase.sitelink( fooEntity[1].mainsnak.datavalue.value.id ); end end end -- no article about occupation or field, link to wikidata if label and not link then return end if label and link then return .. label .. end if not link and not label then return nil end end function p.formatEntityWithGenderClaim( context, options, statement ) if ( not context ) then error( 'context not specified'); end; if ( not options ) then error( 'options not specified'); end; if ( not options.entity ) then error( 'options.entity is missing'); end; if ( not statement ) then error( 'statement not specified'); end; local isFemale = options.entity.claims.P21 and options.entity.claims.P21[1] and options.entity.claims.P21[1].mainsnak and options.entity.claims.P21[1].mainsnak.datavalue and options.entity.claims.P21[1].mainsnak.datavalue.value and options.entity.claims.P21[1].mainsnak.datavalue.value.id == 'Q6581072' local snak = statement.mainsnak; if snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id then local entityId = snak.datavalue.value.id; return formatOccupationLinkForEntityId( entityId, isFemale ); end return context.formatSnak( options, snak ) end function p.applyDefaultTemplate( context, options, statement ) local snak = context.formatSnak( options, statement.mainsnak ) if ( statement.qualifiers and statement.qualifiers.P249 and statement.qualifiers.P249[1].snaktype == 'value') then entityId = statement.mainsnak.datavalue.value.id wbStatus, entity = pcall( mw.wikibase.getEntity, entityId ); if ( entity.claims and entity.claims.P1424 ) then wbStatus, template = pcall( mw.wikibase.getEntity, entity.claims.P1424[1].mainsnak.datavalue.value.id ) snak = g_framereprocess( string.gsub( template:getSitelink( ), 'Şablon:', ) else return nil end end --References if ( options.references and snak ) then snak = snak .. context.formatRefs( options, statement ); end return snak end function p.formatCategoryOnly( context, options, value ) return context.extractCategory( options, value ) end return p