Modul:înterwîkî-çêke
Belgekirina modulê[nîşan bide] [biguhêre] [rojane bike]
- Ev belge ji Modul:înterwîkî-çêke/belge hatiye girtin.
Ceribandin
biguhêre--Ev modul li gorî navê kategoriyekê lînka înterwîkiyê lê zêde dike. Bi şablona {{înterwîkî-çêke}} tê bikaranîn bi vî awayî {{subst:înterwîkî-çêke}}
-- [[Bikarhêner:Balyozxane/addAutoCat.js]] vê modulê bi kar tîne ji bo lêzêdekirina înterwîkiyê.
local k = {}
local b = require("Modul:bingeh")
local bibine = mw.ustring.find
local daneTerms = {
{"compound terms", ".*pêkhatî$"},
{"multiword terms", ".*hevedudanî$"},
}
local daneTermsBi = {
{"terms with usage examples", "Mînak.*"},
{"terms with audio links", "Deng bi.*"},
{"terms with IPA pronunciation", "Bilêvkirina IPAyê.*"},
{"terms with unknown etymologies", "Etîmolojî nayê zanîn.*"},
{"terms with unknown homophones", "Hevdeng.*"},
{"terms with unknown quotations", "Jêgirtin.*"},
{"terms by etymology", "Etîmolojî.*"},
{"doublets", "Cotreh.*"},
{"internationalisms", "Navneteweyîtî.*"},
{"clippings", "Qusandin.*"},
{"calques", "Wergerandinên yekser.*"},
{"term requests", "Daxwazên peyvan.*"},
{"compound terms", ".*pêkhatî.*"},
{"puristic terms", "Pûrizm.*"},
{"dialectal terms", "Devokî.*"},
{"metonyms", "Metonîm.*"},
}
local daneMane = {
{"derogatory terms", ".*biçûkxister.*"},
{"humorous terms", ".*henekî.*"},
{"formal terms", ".*fermî.*"},
{"colloquialisms", ".*kolankî.*"},
}
local daneDawi = {
{"Requests concerning", "Gotarên bi şaşî û kêmasî.*"},
}
local daneKodDawi = {
{"Terms with redundant transliterations", "Transliterasyona nepêwîst.*"},
}
local daneZterms = {
{"Requests for native script for", "Daxwazên skrîpta peyvê.*"},
}
local function getObj(name, family)
if not family then
return require("Modul:ziman").getByCanonicalName(name)
or require("Module:etymology languages").getByCanonicalName(name)
else
return require("Module:families").getByCanonicalName(name)
end
end
function k.ziman_en(kod)
Enziman = mw.getCurrentFrame():expandTemplate{title = "navê zimanî/en", args = {kod}}
return Enziman
end
function k.get_rezimani(label)
local m_labeldataRezimani = mw.loadData("Modul:dara kategoriyan/ferhengokkatbike/dane/rêzimanî")
if m_labeldataRezimani.interwiki[label] then
return m_labeldataRezimani.interwiki[label]
else
return nil
end
end
function k.get_label_info(label)
local m_labeldata = mw.loadData("Modul:dara kategoriyan/ferhengokkatbike/dane/ferhengok")
if m_labeldata.interwiki[label] then
return m_labeldata.interwiki[label]
else
return nil
end
end
local function splitLabelLang(rupel)
local getByCanonicalName = require("Modul:ziman").getByCanonicalName
local canonicalName
local lang
-- Progressively add another word to the potential canonical name until it
-- matches an actual canonical name.
local words = mw.text.split(rupel, " ")
for i = #words - 1, 1, -1 do
canonicalName = table.concat(words, " ", 1, i)
lang = getByCanonicalName(canonicalName)
if lang then
break
end
end
local label = lang and rupel:sub(#canonicalName + 2)
or rupel
return label, lang
end
function k.interwiki_ceke(rupel)
-- terms
for _, terms_regex in ipairs(daneTerms) do
local terms, regex = unpack(terms_regex)
if bibine(rupel, regex) then
local ziman = rupel:match("Peyvên (.+) yên.+")
local kod = require("Module:ziman").getByCanonicalName(ziman)
if kod then
kod = kod:getCode()
Enziman = k.ziman_en(kod)
return ''.. Enziman ..' '.. terms .. ''
else
return ''.. b.ucfirst(terms) .. ' by language'
end
end
end
-- [[:Kategorî:Hemû ziman
local langName = rupel:match("^(.+)")
-- Use the entire category name if it doesn't end in "language", to handle
-- cases where "language" is part of the name, e.g. ASL.
local ziman = b.lcfirst(langName)
local lang = require("Module:ziman").getByCanonicalName(ziman) or require("Module:ziman").getByCanonicalName(rupel)
if not lang then
local lang2 = require("Module:ziman").getByName(langName)
if lang2 then
error('"' .. langName .. '" is not a valid canonical name. Use "' .. lang2:getCanonicalName() .. '" instead.')
end
else
lang = lang:getCode()
Enziman = k.ziman_en(lang)
return '' .. Enziman.. ' language'
end
--[[:Kategorî:Zimanên kreyolî yan pîdgînî]]
if rupel:find("^[zZ]imanên kreyolî yan pîdgînî li ser bingeha ") then
local kreyoliName = rupel:match("^[zZ]imanên kreyolî yan pîdgînî li ser bingeha (.+)$")
local lang = require("Module:ziman").getByCanonicalName(kreyoliName)
lang = lang:getCode()
Enziman = k.ziman_en(lang)
return '' .. Enziman .. '-based creole or pidgin languages'
end
--[[:Kategorî:Ziman li gorî malbatan]]
if rupel:find("^[zZ]imanên") then
local familyName = rupel:match("^[zZ]imanên (.+)$")
local family = require("Module:families").getByCanonicalName(familyName) or
require("Module:families").getByCanonicalName(mw.ustring.lower(familyName))
local malbat = family:getCode()
local malbatKod = require("Module:families").getByCodeEn(malbat)
return '' .. malbatKod:getCanonicalName() .. ' languages'
end
-- [[Modul:dara kategoriyan/rehkatbike]]
local label, lang = splitLabelLang(rupel)
if label:find("^.+ ji rehê .") then
local ziman, after = label:match("Peyvên (.+) ji rehê (.+)$")
if ziman then
lang = require("Module:ziman").getByCanonicalName(ziman)
end
local term, id
if after:find(". %([^()]+%)$") then
term, id = after:match("^(.+) %(([^()]+)%)$")
else
term = after
end
lang = lang:getCode()
Enziman = k.ziman_en(lang)
return '' .. Enziman .. ' terms belonging to the root ' .. term .. ''
end
local label, lang = splitLabelLang(rupel)
for _, affixtype in ipairs({"circumfix", "rehan", "navgir", "pêşgir", "paşgir"}) do
if label:find("^Peyvên.+ li gorî ".. affixtype ..'an') then
local ziman = label:match("Peyvên (.+) yên li gorî " .. affixtype .. "an")
if ziman then
lang = require("Module:ziman").getByCanonicalName(ziman)
if affixtype == "navgir" then
affixtype = "interfix"
elseif affixtype == "paşgir" then
affixtype = "suffix"
elseif affixtype == "pêşgir" then
affixtype = "prefix"
elseif affixtype == "reh" then
affixtype = "root"
end
lang = lang:getCode()
Enziman = k.ziman_en(lang)
return '' .. Enziman .. ' terms by ' .. affixtype ..''
end
end
end
-- [[Modul:dara kategoriyan/qertafkatbike]]
local label, lang = splitLabelLang(rupel)
for _, affixtype in ipairs({"circumfix", "infix", "navgir", "pêşgir", "paşgir"}) do
if label:find("^.+ bi " .. affixtype .. "a .") then
local ziman, after = label:match("Peyvên (.+) bi " .. affixtype .. "a (.+)$")
if ziman then
lang = require("Module:ziman").getByCanonicalName(ziman)
lang = lang:getCode()
enZiman = k.ziman_en(lang)
end
local term, id
if after:find(". %([^()]+%)$") then
term, id = after:match("^(.+) %(([^()]+)%)$")
else
term = after
end
if affixtype == "navgir" then
affixtype = "interfix"
elseif affixtype == "paşgir" then
affixtype = "suffix"
elseif affixtype == "pêşgir" then
affixtype = "prefix"
end
return '' .. enZiman .. ' terms '.. affixtype .. 'ed with ' .. term .. ''
--return {title = affixtype .. "katbike", args = {lang:getCode(), term, pos = pos, id = id}}
end
local label, lang = splitLabelLang(rupel)
if label:find("^Peyvên.+ li gorî rehan") then
local ziman = label:match("Peyvên (.+) yên li gorî rehan")
if ziman then
lang = require("Module:ziman").getByCanonicalName(ziman)
lang = lang:getCode()
Enziman = k.ziman_en(lang)
return '' .. Enziman .. ' terms by root'
end
end
end
local label, lang = splitLabelLang(rupel)
for _, etimtype in ipairs({"deynkirî ji", "mîrasmayî ji", "ji"}) do
if label:find("(.+) y?ê?n? ?".. etimtype .. " zimanên din") then
local ziman = label:match("Peyvên (.+) y?ê?n? ?".. etimtype .. " zimanên din$")
if ziman then
ziman = getObj(ziman)
if etimtype == "deynkirî ji" then
etimtype = "borrowed"
elseif etimtype == "mîrasmayî ji" then
etimtype = "inherited"
else
etimtype = "derived "
end
lang = ziman
lang = mw.getCurrentFrame():expandTemplate{title = "navê zimanî/en", args = {lang:getCode()}}
if etimtype == "derived " then
return ''.. lang .. ' terms derived from other languages'
else
return ''.. lang .. " " .. etimtype .. ' terms'
end
end
end
end
-- [[Modul:dara kategoriyan/deynkirîkatbike]]
local label, lang = splitLabelLang(rupel)
for _, etimtype in ipairs({"deynkirî", "mîrasmayî", "wergerandina yekser"}) do
if label:find("(.+) ".. etimtype .. " ji .") then
local navewergir, sourcename = label:match("Peyvên (.+) yên ".. etimtype .. " ji (.+)$")
local wergir
local source
if navewergir then
wergir = getObj(navewergir)
if sourcename:find("^zimanên ") then
sourcename = sourcename:gsub("^zimanên ", "")
source = getObj(sourcename, true)
else
source = getObj(sourcename)
end
if etimtype == "deynkirî" then
etimtype = "borrowed"
elseif etimtype == "mîrasmayî" then
etimtype = "inherited"
elseif etimtype == "wergerandina yekser" then
etimtype = "calqued"
--[[
elseif affixtype == "lihevanîna dengî wateyî" then
affixtype = "phono-semantic matchings"
elseif affixtype == "wergirtina wateyê" then
affixtype = "semantic loans"
--]]
end
lang = wergir
lang = mw.getCurrentFrame():expandTemplate{title = "navê zimanî/en", args = {lang:getCode()}}
source = mw.getCurrentFrame():expandTemplate{title = "navê zimanî/en", args = {source:getCode()}}
return ''.. lang .. ' terms '.. etimtype .. ' from ' .. source .. ''
elseif not navewergir then
local sourcename = label:match("Peyvên ".. etimtype .. " ji (.+)$")
if sourcename:find("^zimanên ") then
sourcename = sourcename:gsub("^zimanên ", "")
source = getObj(sourcename, true)
source = source:getCode()
source = require("Module:families").getByCodeEn(source)
source = source:getCanonicalName() .. " languages"
else
source = getObj(sourcename)
source = mw.getCurrentFrame():expandTemplate{title = "navê zimanî/en", args = {source:getCode()}}
end
if etimtype == "deynkirî" then
etimtype = "borrowed"
elseif etimtype == "mîrasmayî" then
etimtype = "inherited"
elseif etimtype == "wergerandina yekser" then
etimtype = "calqued"
--[[
elseif affixtype == "lihevanîna dengî wateyî" then
affixtype = "phono-semantic matchings"
elseif affixtype == "wergirtina wateyê" then
affixtype = "semantic loans"
--]]
end
return 'Terms '.. etimtype .. ' from ' .. source .. ''
end
end
end
-- [[Modul:dara kategoriyan/jikatbike]]
local label, lang = splitLabelLang(rupel)
if label:find("(.+) ji .") then
local navewergir, sourcename = label:match("Peyvên (.+) ji (.+)$")
local wergir
local source
if navewergir then
wergir = getObj(navewergir)
if sourcename:find("^zimanên ") then
sourcename = sourcename:gsub("^zimanên ", "")
source = getObj(sourcename, true)
source = source:getCode()
source = require("Module:families").getByCodeEn(source)
source = source:getCanonicalName() .. " languages"
else
source = getObj(sourcename)
source = mw.getCurrentFrame():expandTemplate{title = "navê zimanî/en", args = {source:getCode()}}
end
lang = wergir
lang = mw.getCurrentFrame():expandTemplate{title = "navê zimanî/en", args = {lang:getCode()}}
return ''.. lang .. ' terms derived from ' .. source .. ''
elseif not navewergir then
local sourcename = label:match("Peyvên ji (.+)$")
if sourcename:find("^zimanên ") then
sourcename = sourcename:gsub("^zimanên ", "")
source = getObj(sourcename, true)
source = source:getCode()
source = require("Module:families").getByCodeEn(source)
source = source:getCanonicalName() .. " languages"
else
source = getObj(sourcename)
source = mw.getCurrentFrame():expandTemplate{title = "navê zimanî/en", args = {source:getCode()}}
end
return 'Terms derived from ' .. source .. ''
end
end
--[[Modul:dara kategoriyan/ferhengokkatbike/dane/mane]]
--[[:Kategorî:Maneyên biçûkxister bi îngilîzî]]
for _, mane_regex in ipairs(daneMane) do
local mane, regex = unpack(mane_regex)
if bibine(rupel, regex) then
local ziman = rupel:match("Maneyên .+ bi (.*)$")
local kod = require("Module:ziman").getByCanonicalName(ziman)
if kod then
kod = kod:getCode()
Enziman = k.ziman_en(kod)
return ''.. Enziman ..' '.. mane .. ''
else
return ''.. b.ucfirst(mane) .. ' by language'
end
end
end
for _, kodDawi_regex in ipairs(daneKodDawi) do
local kodDawi, regex = unpack(kodDawi_regex)
if bibine(rupel, regex) then
local ziman = rupel:match(".+ bi (.*)$")
local kod = require("Module:ziman").getByCanonicalName(ziman)
if kod then
kod = kod:getCode()
if kod == "navz" then
kod = "mul"
elseif kod =="ku" then
kod = "kmr"
end
return ''.. kodDawi ..'/' .. kod..' '
end
end
end
for _, zTerms_regex in ipairs(daneZterms) do
local zTerms, regex = unpack(zTerms_regex)
if bibine(rupel, regex) then
local ziman = rupel:match(".+ bi (.*)$")
local kod = require("Module:ziman").getByCanonicalName(ziman)
if kod then
kod = kod:getCode()
Enziman = k.ziman_en(kod)
return ''.. zTerms ..' '.. Enziman .. ' terms'
end
end
end
for _, dawi_regex in ipairs(daneDawi) do
local dawi, regex = unpack(dawi_regex)
if bibine(rupel, regex) then
local ziman = rupel:match(".+ bi (.*)$")
local kod = require("Module:ziman").getByCanonicalName(ziman)
if kod then
kod = kod:getCode()
Enziman = k.ziman_en(kod)
return ''.. dawi ..' '.. Enziman .. ''
end
end
end
for _, termsBi_regex in ipairs(daneTermsBi) do
local termsBi, regex = unpack(termsBi_regex)
if bibine(rupel, regex) then
local ziman = rupel:match(".+ bi (.*)$")
local kod = require("Module:ziman").getByCanonicalName(ziman)
if kod then
kod = kod:getCode()
Enziman = k.ziman_en(kod)
return ''.. Enziman ..' '.. termsBi .. ''
else
return '' .. b.ucfirst(termsBi) .. ' by language'
end
end
end
--[[WF:Ferhengok]]
local etiket, ziman = rupel:match("^(.+) bi (.*)$")
local etiket = b.lcfirst(etiket)
local interwiki = k.get_label_info(etiket)
if interwiki then
local kod = require("Module:ziman").getByCanonicalName(ziman)
if kod then
kod = kod:getCode()
if kod == "navz" then
kod = "mul"
elseif kod =="ku" then
kod = "kmr"
end
return ''.. kod ..':'..b.ucfirst(interwiki).. ''
end
elseif interwiki == nil then
local etiket, ziman = rupel:match("^(.+) bi (.*)$")
local etiket = b.lcfirst(etiket)
local interwiki = k.get_rezimani(etiket)
local kod = require("Module:ziman").getByCanonicalName(ziman)
if kod then
kod = kod:getCode()
if kod == "navz" then
kod = "mul"
elseif kod =="ku" then
kod = "kmr"
end
return ''.. k.ziman_en(kod) ..' '..b.lcfirst(interwiki).. ''
else
local etiket = b.lcfirst(rupel)
local interwiki = k.get_rezimani(etiket)
if interwiki then
return ''.. b.ucfirst(interwiki) .. ' by language'
else
local etiket = b.lcfirst(rupel)
local interwikiFerhengok = k.get_label_info(etiket)
if interwikiFerhengok then
return ''.. b.ucfirst(interwikiFerhengok) .. ''
else
return '[[Kategorî:Xeletiyên Modul:înterwîkî-çêke]]'
end
end
end
else
return '[[Kategorî:Xeletiyên Modul:înterwîkî-çêke]]'
end
end
function k.biwesine(frame)
if mw.title.getCurrentTitle().nsText == 'Şablon' then
return '(Ev şablon tenê li ser rûpelên [[Wîkîpediya:Kategorîkirin|kategoriyan]] tê bikaranîn.)'
end
local args = frame:getParent().args
if args[1] or frame.args[1] then
-- navê kategoriya îngilîzî dide. Nimûne di kategoriya "Navdêr bi îngilîzî" dide "English nouns"
local rupel = args[1] or frame.args[1]
return k.interwiki_ceke(rupel)
else
local rupel = mw.title.getCurrentTitle().text
-- navê kategoriyê bi kar tîne û înterwîkiyê çêdike.
local interwiki = k.interwiki_ceke(rupel)
return '[[en:Category:' .. interwiki .. ']]'
end
end
return k