Moduł:Lang
Przejdź do nawigacji
Przejdź do wyszukiwania
local lang = {}
local data = mw.loadData( 'Module:lang/data' )
function lang.istnieje(frame)
local languageCode = frame.args[1] if data[languageCode] then return languageCode else return nil end
end
function lang.kursywa(frame)
local languageCode = frame.args[1] if languageCode then
local languageData = data[languageCode] if languageData and (languageData.kursywa == false) then return "" end
end
return "" end
lang["hasło"] = function(frame)
local languageCode = frame.args[1] assert(languageCode, "Brak kodu języka") local languageData = data[languageCode] assert(languageData, "Nieznany kod języka") return languageData['hasło']
end
lang["skrót"] = function(frame)
local languageCode = frame.args[1] assert(languageCode, "Brak kodu języka") local languageData = data[languageCode] assert(languageData, "Nieznany kod języka") return languageData['skrót'] or languageData['mianownik']
end
function lang.mianownik(frame)
local languageCode = frame.args[1] assert(languageCode, "Brak kodu języka") local languageData = data[languageCode] assert(languageData, "Nieznany kod języka") return languageData['mianownik']
end
lang["dopełniacz"] = function(frame)
local languageCode = frame.args[1] assert(languageCode, "Brak kodu języka") local languageData = data[languageCode] assert(languageData, "Nieznany kod języka") return languageData['dopełniacz']
end
function lang.miejscownik(frame)
local languageCode = frame.args[1] assert(languageCode, "Brak kodu języka") local languageData = data[languageCode] assert(languageData, "Nieznany kod języka") return languageData['miejscownik']
end
function list(frame, multi)
-- konwersja kodów języków na kod wiki text opisujący kody local items = {} -- tabela na skonwertowane kody local invalid = false -- flaga informująca, że na liście znajduje się nieznany kod języka local warning = false -- flaga informująca, że na liście znajduje się kod języka z listy częstych błędów local lang = mw.getContentLanguage() -- język wiki local args = frame.args; if not args[1] then -- brak argumentów sugeruje wywołanie z szablonu local parent = frame:getParent() if parent then args = parent.args end end
if not args[1] then return "Błąd! Brak kodu języka." end local formatItem = function(languageCode) assert(#languageCode > 0, "Pusty kod języka") local languageData = data[languageCode] if languageData then if string.match("ee|am|an|ang|kr|se|si", languageCode) then warning = true end local skrot = languageData['skrót'] or languageData['mianownik'] local nativeName = mw.language.fetchLanguageName(languageCode) if nativeName and #nativeName > 0 and languageCode ~= "pl" then table.insert(items, string.format("%s", languageData['hasło'], languageData['miejscownik'], nativeName, skrot)) else table.insert(items, string.format("%s", languageData['hasło'], languageData['miejscownik'], skrot)) end elseif #languageCode == 0 then if #items == 0 then -- pierwszy kod nie może być pusty, reszta może, bo jest przekazywana jako pusta w szablonach cytowania invalid = true table.insert(items, "Błąd! Brak kodu języka.") end else invalid = true table.insert(items, string.format("Błąd! Nieznany kod języka: %s. Sprawdź listę kodów.", languageCode)) end end if args[2] or multi then -- wiele argumentów sugeruje przekazywnie każdego kodu języka w oddzielnych argumentach for i, v in ipairs(args) do if #v > 0 then formatItem(lang:lc(v)) end end else -- jeden argument pozwala także wysłać wszystkie kody oddzielone spacją for languageCode in string.gmatch(lang:lc(args[1]), "%S+") do formatItem(languageCode) end end if #items == 0 then -- pusta lista kodów invalid = true table.insert(items, "Błąd! Brak kodu języka.") end
-- ostateczne formatowanie wyniku
local result = {}
table.insert(result, "(")
table.insert(result, table.concat(items, " • "))
table.insert(result, ")")
if mw.title.getCurrentTitle().namespace == 0 then
if warning then
table.insert(result, "")
end
if invalid then
table.insert(result, "")
end
end
return table.concat(result, "")
end
function lang.lang(frame) return list(frame, true) end
lang["język"] = function(frame) return list(frame, false) end
return lang