local languages = mw.loadData('Module:Languages/data') local p = {} local function isEmpty(s) return s nil or s end local function trimstr(s) return (s:gsub("^%s*(.-)%s*$", "%1")) end local function get_lang_data(code) local l = languages
Kod:
; if l ~= nil then return "[[" .. l[2] .. "|" .. l[1] .. "]]", code elseif code ~= "" then return code, "" else return "", "" end end function p.getRefHtmlFrame( frame ) return p.getRefHtml( trimstr( frame.args[1] ) ) end function p.getRefHtml( wikidataItemId ) local codeByItemId = mw.loadData( "Module:Wikidata/Language-codes" ) local code = codeByItemId[ wikidataItemId ]; if code nil then mw.log( 'Language code not found for ' .. wikidataItemId ) return "" else local l languages[code]; if l nil then mw.log( 'Language description for code ' .. code .. ' not found' ) return "" else return end end end function p.abbr(frame) local code = trimstr( frame.args[1] ) if not isEmpty(code) then return (languages[code] and languages[code][1] or ) end end function p.name(frame) local code = trimstr( frame.args[1] ) if code ~= nil and code ~= then return (languages[code] and languages[code][2] or ) end end function p.list(frame) local curr_lang = nil local result = nil for n, v in frame:argumentPairs do local trimmed = trimstr(v) if curr_lang nil then if trimmed ~ then curr_lang trimstr(v) end else if trimmed ~ then local link, lang_code get_lang_data(curr_lang) local list_item if lang_code ~ then list_item link .. "" else list_item link .. " ".."Kategori:Vikipediya:Bilinmeyen dil içeren sayfalar" end if result nil then result = list_item else result = result .. ", " .. list_item end else local link, lang_code = get_lang_data(curr_lang) if result == nil then result = link else result = result .. ", " .. link end end curr_lang = nil end end if curr_lang ~= nil then local link, lang_code = get_lang_data(curr_lang) if result ~= nil then result = result .. ", " .. link else result = link end end return result end function p.list_ref(frame) local result = local v = frame.args['в'] or nil local ref = nil if v then ref = else ref = end for x, lg in pairs( frame.args ) do local code = trimstr(lg) if code ~= and code ~= 'в' then local l = languages[code] if l and l ~= nil then result = result .. mw.ustring.gsub(mw.ustring.gsub(ref, '%%2%%', p._transform_lang(code)), '%%1%%', l[1]) else result = result .. frame:expandTemplate{ title = code .. ' icon'} .. 'Kategori:Vikipedi:Bilinmeyen dil içeren sayfalar (ref)' end end end return result end function p._transform_lang(code) if isEmpty(languages[code]) then return '<bilinmeyen kod ' .. code .. '>' end if languages[code][3] then return languages[code][3] end local ln = mw.ustring.lower( languages[code] and languages[code][2] or mw.language.fetchLanguageName(code,'tr') ):gsub('%s+dili%s+', ' '):gsub('%s*%(?dili%)?%s*', ) if not ln then return 'ISO kodlu dil '..code..' (?)' end if ln:match('.*лингва$') then return ln:gsub('а$','е') end if mw.ustring.match(ln,'[сц]кий$') or ln:match('ный$') or mw.ustring.match(ln,'[сц]кий%s%b$') or ln:match('ный%s%b$') then ln = mw.ustring.gsub( mw.ustring.gsub(ln, 'н([ыи])й(%A)', function(y,s) return (y 'ы' and 'ном' or 'нем')..s end) :gsub('ный$', 'ном'), '([сц]к)ий(%A)', '%1ом%2' ):gsub('ский$', 'ском'):gsub('цкий$', 'цком'); if ln:match('%)$') and not (ln:match('ом%)$') or ln:match('нем%)$')) then local r,s ln:gsub('(%s)(%b)$','%1 %1%2'); if s 1 then return r end end return ln.. else return ln..'' end end function p.transform_lang(frame) return p._transform_lang(trimstr(frame.args[1])) end return p