Модуль:Wikidata/Interproject
Зовнішній вигляд
Документація модуля[перегляд] [редагувати] [історія] [очистити кеш]
{{Module rating }}
Модуль повертає посилання на інші проєкти Wikimedia, що зберігаються на Вікіданих:
- 1. модуль дивиться чи є посилання на Україномовні ВікіДжерела (чи інші україномовні вікі проєкти Wikimedia), і дає посилання на нього якщо він там є
- 2. якщо немає посилання на Україномовні ВікіДжерела (чи інші україномовні вікі проєкти Wikimedia), то модуль бере посилання з тої ж мовної версії Вікіджерел (чи іншого україномовного вікі проєкту Wikimedia), яка є рідною для автора (P103) (зауважте що береться саме "рідна мова" (P103), а не наприклад параметр "мова(и), якими людина розмовляє або пише" (P1412)
- 3. якщо немає посилання й на ту мовну версію, повертається порожній рядок
Використання
{{#invoke:Wikidata|назва функції}}
- Приклади
{{#invoke:Wikidata/Interproject|getWikibooksLink}}
{{#invoke:Wikidata/Interproject|getWiktionaryLink}}
{{#invoke:Wikidata/Interproject|getWikiquoteLink}}
{{#invoke:Wikidata/Interproject|getWikinewsLink}}
{{#invoke:Wikidata/Interproject|getWikipediaLink}}
{{#invoke:Wikidata/Interproject|getWikisourceLink}}
Документація вище включена з Модуль:Wikidata/Interproject/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля. Будь ласка, додавайте категорії до підсторінки /Interproject/документація. Підсторінки цієї сторінки. |
local p = {};
function p.getWikibooksLink ( )
return p.getSisterProjectLink( 'b', 'wikibooks' );
end
function p.getWikiquoteLink ( )
return p.getSisterProjectLink( 'q', 'wikiquote' );
end
function p.getWikinewsLink ( )
return p.getSisterProjectLink( 'n', 'wikinews' );
end
function p.getWikisourceLink ( )
return p.getSisterProjectLink( 's', 'wikisource' );
end
function p.getWikipediaLink ( )
return p.getSisterProjectLink( 'w', 'wiki' );
end
function p.getWiktionaryLink ( )
return p.getSisterProjectLink( 'wikt', 'wiktionary' );
end
function p.getSisterProjectLink( projectInterwikiLettter, projectName )
-- По замовчуванню намагається дістати посилання українською, інакше - рідною (P103)
local entity = mw.wikibase.getEntityObject()
if not entity or not entity.sitelinks then
return ''
end
if entity.sitelinks['uk' .. projectName] then
return projectInterwikiLettter .. ':' .. entity.sitelinks['uk' .. projectName].title
end
if entity.claims then
local propValues = entity.claims['P103']
if propValues then
local codes = mw.loadData('Module:Wikidata:Dictionary/P424');
for i, propClaim in pairs(propValues) do
if propClaim.mainsnak and propClaim.mainsnak.datavalue and propClaim.mainsnak.datavalue.value and propClaim.mainsnak.datavalue.value["numeric-id"] then
local languageWikidataId = 'Q' .. propClaim.mainsnak.datavalue.value["numeric-id"]
local codesById = codes[languageWikidataId];
if ( codesById ) then
for j, code in pairs( codesById ) do
local sitelink = entity.sitelinks[code .. projectName]
if sitelink then
return projectInterwikiLettter .. ':' .. code .. ':' .. sitelink.title
end
end
end
end
end
end
end
return ''
end
return p;