Moduł:Lang: Różnice pomiędzy wersjami
m (1 wersja) |
m (1 wersja) |
||
(Nie pokazano 1 wersji utworzonej przez jednego użytkownika) | |||
Linia 4: | Linia 4: | ||
if not code or (#code == 0) then | if not code or (#code == 0) then | ||
-- brak kodu języka | -- brak kodu języka | ||
mw.log("Pusty kod języka: "..code); | --mw.log("Pusty kod języka: "..code); | ||
return | return | ||
end | end | ||
local data = mw.loadData( 'Module:lang/data' ) | local data = mw.loadData( 'Module:lang/data' ) | ||
-- bezbłędny kod | -- bezbłędny kod | ||
local lang = data[code] | local lang = data[code] | ||
Linia 20: | Linia 20: | ||
lang = data[lcode] | lang = data[lcode] | ||
if lang then | if lang then | ||
mw.log('kod "'..code..'" został zamieniony na "'..lcode..'"') | --mw.log('kod "'..code..'" został zamieniony na "'..lcode..'"') | ||
return lang, lcode | return lang, lcode | ||
end | end | ||
-- może kod jest podany z variantem | -- może kod jest podany z variantem | ||
local scode = string.match( | local scode, vcode = string.match(code, "%s*([a-zA-Z]+)%-([^%s]+)%s*$") | ||
if not scode then | |||
scode, vcode = string.match(code, "%s*([a-zA-Z]+)_([^%s]+)%s*$") | |||
end | |||
if scode then | if scode then | ||
mw.log('kod "'..code..'" został | --mw.log('kod "'..code..'" został rozdzielony na "'..scode..'" i wariant "'..vcode..'"') | ||
return lang, scode | lang = data[scode] | ||
if not lang then | |||
--mw.log('kod "'..scode..'" został zamieniony na "'..string.lower(scode)..'"') | |||
scode = string.lower(scode) | |||
lang = data[scode] | |||
end | |||
if lang then | |||
-- test variant | |||
if lang.warianty then | |||
local lvcode = string.lower(vcode) | |||
for k, v in pairs(lang.warianty) do | |||
if (type(k) == "number") and (type(v) == "string") and (lvcode == string.lower(v)) then | |||
--mw.log('kod "'..code..'" w formie kanonicznej "'..scode..'-'..v..'"') | |||
return lang, scode, scode.."-"..v | |||
elseif (type(k) == "string") and (type(v) == "table") and (lvcode == string.lower(k)) then | |||
--mw.log('zindywizualizowany kod "'..code..'" w formie kanonicznej "'..scode..'-'..k..'"') | |||
local fields = { "hasło", "mianownik", "dopełniacz", "miejscownik", "skrót" } | |||
local vlang = {} | |||
for _, f in ipairs(fields) do | |||
vlang[f] = v[f] or lang[f] | |||
end | |||
return vlang, scode, scode.."-"..k | |||
end | |||
end | |||
end | |||
--mw.log('kod "'..code..'" z nieznanym wariantem') | |||
return lang, scode | |||
end | |||
end | end | ||
-- poddaje się | -- poddaje się | ||
mw.log('Nieznany kod języka: "'..code..'"'); | --mw.log('Nieznany kod języka: "'..code..'"'); | ||
return false, code | return false, code | ||
end | end | ||
function lang.istnieje(frame) | function lang.istnieje(frame) | ||
local languageData, code = langData(frame.args[1]) | local languageData, code, _ = langData(frame.args[1]) | ||
return languageData and code or nil | return languageData and code or nil | ||
end | end | ||
function lang.kursywa(frame) | function lang.kursywa(frame) | ||
local languageData, code = langData( | local langCode = frame.args[1] | ||
local languageData, code, _ = langData(langCode) | |||
if langCode and (langCode ~= code) and string.match(langCode, "^%a+%-[Ll][Aa][Tt][Nn]$") or string.match(langCode, "^%a+%-[Ll][Aa][Tt][Nn]%-") then | |||
-- Latn script | |||
return "''" | |||
end | |||
return (languageData and (languageData.kursywa ~= false)) and "''" or "" | return (languageData and (languageData.kursywa ~= false)) and "''" or "" | ||
end | end | ||
lang["hasło"] = function(frame) | lang["hasło"] = function(frame) | ||
local languageData, _ = langData(frame.args[1]) | local languageData, _, _ = langData(frame.args[1]) | ||
return languageData['hasło'] | return languageData['hasło'] | ||
end | end | ||
lang["skrót"] = function(frame) | lang["skrót"] = function(frame) | ||
local languageData, _ = langData(frame.args[1]) | local languageData, _, _ = langData(frame.args[1]) | ||
return languageData['skrót'] or languageData['mianownik'] | return languageData['skrót'] or languageData['mianownik'] | ||
end | end | ||
function lang.mianownik(frame) | function lang.mianownik(frame) | ||
local languageData, _ = langData(frame.args[1]) | local languageData, _, _ = langData(frame.args[1]) | ||
return languageData['mianownik'] | return languageData['mianownik'] | ||
end | end | ||
lang["dopełniacz"] = function(frame) | lang["dopełniacz"] = function(frame) | ||
local languageData, _ = langData(frame.args[1]) | local languageData, _, _ = langData(frame.args[1]) | ||
return languageData['dopełniacz'] | return languageData['dopełniacz'] | ||
end | |||
lang["dopełniacz?"] = function(frame) | |||
local languageData, _, _ = langData(frame.args[1]) | |||
return languageData and languageData['dopełniacz'] or nil | |||
end | end | ||
function lang.miejscownik(frame) | function lang.miejscownik(frame) | ||
local languageData, _ = langData(frame.args[1]) | local languageData, _, _ = langData(frame.args[1]) | ||
return languageData['miejscownik'] | return languageData['miejscownik'] | ||
end | |||
lang["miejscownik?"] = function(frame) | |||
local languageData, _, _ = langData(frame.args[1]) | |||
return languageData and languageData['miejscownik'] or nil | |||
end | end | ||
Linia 85: | Linia 133: | ||
local args = frame.args; | local args = frame.args; | ||
if not args[1] then | if not args[1] then | ||
-- brak argumentów sugeruje wywołanie z szablonu | -- brak argumentów sugeruje wywołanie z szablonu | ||
local parent = frame:getParent() | local parent = frame.getParent and frame:getParent() or nil | ||
if parent then | if parent then | ||
args = parent.args | args = parent.args | ||
Linia 108: | Linia 156: | ||
} | } | ||
local formatLanguageItem = function(langCode, languageData) | local formatLanguageItem = function(langCode, languageData, alt) | ||
local class = alt and "lang-link-warning" or "" | |||
if #class > 0 then | |||
class = 'class="'..class..'"' | |||
end | |||
local skrot = languageData['skrót'] or languageData['mianownik'] | local skrot = languageData['skrót'] or languageData['mianownik'] | ||
local nativeName = mw.language.fetchLanguageName(langCode) | local nativeName = mw.language.fetchLanguageName(langCode) | ||
if nativeName and #nativeName > 0 and langCode ~= "pl" then | if nativeName and #nativeName > 0 and langCode ~= "pl" then | ||
return string.format(" | return string.format("<abbr %s title=\"Treść w języku %s (%s)\">%s</abbr>", class, languageData['miejscownik'], nativeName, skrot) | ||
else | else | ||
return string.format(" | return string.format("<abbr %s title=\"Treść w języku %s\">%s</abbr>", class, languageData['miejscownik'], skrot) | ||
end | end | ||
end | end | ||
Linia 122: | Linia 174: | ||
local formatItem = function(languageCode) | local formatItem = function(languageCode) | ||
local languageData, langCode = langData(languageCode) | local languageData, langCode, langTag = langData(languageCode) | ||
local altFormat = false | |||
if langCode and (languageCode ~= langCode) then | if langCode and (languageCode ~= langCode) then | ||
modified = | altFormat = languageCode ~= langTag | ||
modified = modified or altFormat | |||
end | end | ||
Linia 132: | Linia 186: | ||
end | end | ||
local item = formatLanguageItem(langCode, languageData) | local item = formatLanguageItem(langCode, languageData, altFormat) | ||
if parsedLanguages[langCode] then | if parsedLanguages[langCode] then | ||
duplicated = true | duplicated = true | ||
mw.log("Powtórne przywołanie języka ("..languageCode..")") | --mw.log("Powtórne przywołanie języka ("..languageCode..")") | ||
else | else | ||
parsedLanguages[langCode] = item; | parsedLanguages[langCode] = item; | ||
Linia 141: | Linia 195: | ||
-- pomiń język polski | -- pomiń język polski | ||
hiddenpl = true | hiddenpl = true | ||
mw.log("Ukrywam język polski") | --mw.log("Ukrywam język polski") | ||
else | else | ||
table.insert(items, item) | table.insert(items, item) | ||
Linia 155: | Linia 209: | ||
else | else | ||
invalid = true | invalid = true | ||
local item = string.format("<span style=\"color:red\">'''Błąd! Nieznany kod języka: %s. Sprawdź [[ | local item = string.format("<span style=\"color:red\">'''Błąd! Nieznany kod języka: %s. Sprawdź [[Moduł:Lang/data|listę kodów]].'''</span>", languageCode) | ||
if parsedLanguages[languageCode] then | if parsedLanguages[languageCode] then | ||
duplicated = true | duplicated = true | ||
mw.log("Powtórne przywołanie języka ("..languageCode..")") | --mw.log("Powtórne przywołanie języka ("..languageCode..")") | ||
else | else | ||
parsedLanguages[languageCode] = item; | parsedLanguages[languageCode] = item; | ||
Linia 200: | Linia 254: | ||
end | end | ||
table.insert(result, | table.insert(result, '<span class="lang-list') | ||
if (#items == 1) and parsedLanguages.pl then | |||
table.insert(result, " tylko-pl") | |||
end | |||
table.insert(result, '">(') | |||
table.insert(result, table.concat(items, " • ")) | table.insert(result, table.concat(items, " • ")) | ||
table.insert(result, ")</span>") | table.insert(result, ")</span>") |
Aktualna wersja na dzień 11:37, 8 kwi 2022
Moduł techniczny do obsługi kodów językowych.
istnieje
Funkcja sprawdzająca czy dla podanego kodu języka istnieje wpis w module danych z danymi opisowymi. Jeśli dane istnieją, to wynikiem jest rozpoznany kod języka, w przeciwnym razie funkcja zwraca pusty tekst.
parametry
Pole | Do czego służy? | Jak wypełnić? |
---|---|---|
1 | Kod języka | Np. en lub pl .
|
przykłady
wywołanie | efekt |
---|---|
{{#if:{{#invoke:lang|istnieje|en}}|tak|nie}}
|
tak |
{{#if:{{#invoke:lang|istnieje}}|tak|nie}}
|
tak |
{{#if:{{#invoke:lang|istnieje|xxxx}}|tak|nie}}
|
tak |
{{#invoke:lang|istnieje|pl}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|istnieje|pl-PL}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|istnieje|uuuu}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#if:{{#invoke:lang|istnieje|}}|tak|nie}}
|
tak |
{{#if:{{#invoke:lang|istnieje}}|tak|nie}}
|
tak |
{{#ifeq:{{#invoke:lang|istnieje|en}}|en|tak|nie}}
|
nie |
{{#ifeq:{{#invoke:lang|istnieje|xxx}}|xxx|tak|nie}}
|
nie |
{{#ifeq:{{#invoke:lang|istnieje|}}||tak|nie}}
|
nie |
kursywa
Funkcja zwracająca wikikod kursywy ('') jeśli język o podanym kodzie zapisywany jest łacińskim alfabetem. Wspiera ona działanie szablonu {{w języku}}.
parametry
Pole | Do czego służy? | Jak wypełnić? |
---|---|---|
1 | Kod języka | Np. en lub ru .
|
przykłady
wywołanie | efekt |
---|---|
i{{#invoke:lang|kursywa|en}}i
|
iBłąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permittedi |
i{{#invoke:lang|kursywa|ru}}i
|
iBłąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permittedi |
{{#invoke:lang|kursywa|en}}{{j|en|Hello}}{{#invoke:lang|kursywa|en}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permittedHelloBłąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|kursywa|ru}}{{j|ru|привет}}{{#invoke:lang|kursywa|ru}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permittedприветBłąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
hasło
, skrót
, mianownik
, dopełniacz
, miejscownik
Funkcje zwracające opis stowarzyszony z podanym kodem języka odpowiednio:
hasło
- Zwraca nazwę artykułu w Wikipedii, który opisuje język o zadanym kodzie.
skrót
- Skrót nazwy języka, jeśli istnieje, w przeciwnym razie mianownik nazwy języka.
mianownik
- Nazwa języka w mianowniku.
dopełniacz
- Nazwa języka w dopełniaczu.
miejscownik
- Nazwa języka w miejscowniku.
Funkcja wymaga prawidłowego kodu języka, tj. niepustego wyniku z funkcji istnieje
, w przeciwnym razie generuje błąd skryptu.
parametry
Pole | Do czego służy? | Jak wypełnić? |
---|---|---|
1 | Kod języka | Np. en lub pl .
|
przykłady
wywołanie \ X | en
|
pl
|
aa
|
pl_PL
|
---|---|---|---|---|
[[{{#invoke:lang|hasło|X}}]]
|
[[Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted]] | [[Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted]] | [[Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted]] | [[Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted]] |
{{#invoke:lang|skrót|X}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|mianownik|X}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|dopełniacz|X}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|miejscownik|X}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted | Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
lang
Funkcja konwertująca kody języka zgodnie z definicją w szablonie {{lang}}. Pomija w wyświetlaniu kod języka polskiego.
parametry
Pole | Do czego służy? | Jak wypełnić? |
---|---|---|
1..N | Kod języka | Np. en lub pl .
|
przykłady
wywołanie | efekt |
---|---|
{{#invoke:lang|lang|en}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|lang|X}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|lang|}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|lang}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|lang|en|pl|ru|it|ee|roa-rup|zh-min-nan|be-x-old|tum|de|et|hak|xal|ilo|id|ia|ie}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
język
Funkcja konwertująca kody języka zgodnie z definicją w szablonie {{lang}}. Pomija w wyświetlaniu kod języka polskiego.
parametry
Pole | Do czego służy? | Jak wypełnić? |
---|---|---|
1 | Kody języków oddzielone odstępami | Np. en lub en pl de .
|
przykłady
wywołanie | efekt |
---|---|
{{#invoke:lang|język|en}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|język|X}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|język|}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|język}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
{{#invoke:lang|język|en pl ru it ee roa-rup zh-min-nan be-x-old tum de et hak xal ilo id ia ie}}
|
Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted |
Błędy
Błędy należy zgłaszać na stronie Wikipedia:Kawiarenka/Kwestie techniczne.
Zobacz też
- Pomoc:Interwiki
- Module:lang/data
- Kategoria:Częste błędy kodu w szablonie lang
- Kategoria:Nierozpoznany kod języka w szablonie lang
- Kategoria:Szablon lang z ukrytym językiem polskim
- Kategoria:Szablon lang z kodem języka wymagającym poprawki
Błąd skryptu: Błąd Lua: Nie można utworzyć procesu: proc_open(/dev/null): Failed to open stream: Operation not permitted
local lang = {} local function langData(code) if not code or (#code == 0) then -- brak kodu języka --mw.log("Pusty kod języka: "..code); return end local data = mw.loadData( 'Module:lang/data' ) -- bezbłędny kod local lang = data[code] if lang then return lang, code end -- może kod jest podany dużymi literami lub ma spacje przed i po local lcode = mw.text.trim(string.lower(code)) -- dobre kody języka są tylko w ASCII lang = data[lcode] if lang then --mw.log('kod "'..code..'" został zamieniony na "'..lcode..'"') return lang, lcode end -- może kod jest podany z variantem local scode, vcode = string.match(code, "%s*([a-zA-Z]+)%-([^%s]+)%s*$") if not scode then scode, vcode = string.match(code, "%s*([a-zA-Z]+)_([^%s]+)%s*$") end if scode then --mw.log('kod "'..code..'" został rozdzielony na "'..scode..'" i wariant "'..vcode..'"') lang = data[scode] if not lang then --mw.log('kod "'..scode..'" został zamieniony na "'..string.lower(scode)..'"') scode = string.lower(scode) lang = data[scode] end if lang then -- test variant if lang.warianty then local lvcode = string.lower(vcode) for k, v in pairs(lang.warianty) do if (type(k) == "number") and (type(v) == "string") and (lvcode == string.lower(v)) then --mw.log('kod "'..code..'" w formie kanonicznej "'..scode..'-'..v..'"') return lang, scode, scode.."-"..v elseif (type(k) == "string") and (type(v) == "table") and (lvcode == string.lower(k)) then --mw.log('zindywizualizowany kod "'..code..'" w formie kanonicznej "'..scode..'-'..k..'"') local fields = { "hasło", "mianownik", "dopełniacz", "miejscownik", "skrót" } local vlang = {} for _, f in ipairs(fields) do vlang[f] = v[f] or lang[f] end return vlang, scode, scode.."-"..k end end end --mw.log('kod "'..code..'" z nieznanym wariantem') return lang, scode end end -- poddaje się --mw.log('Nieznany kod języka: "'..code..'"'); return false, code end function lang.istnieje(frame) local languageData, code, _ = langData(frame.args[1]) return languageData and code or nil end function lang.kursywa(frame) local langCode = frame.args[1] local languageData, code, _ = langData(langCode) if langCode and (langCode ~= code) and string.match(langCode, "^%a+%-[Ll][Aa][Tt][Nn]$") or string.match(langCode, "^%a+%-[Ll][Aa][Tt][Nn]%-") then -- Latn script return "''" end return (languageData and (languageData.kursywa ~= false)) and "''" or "" end lang["hasło"] = function(frame) local languageData, _, _ = langData(frame.args[1]) return languageData['hasło'] end lang["skrót"] = function(frame) local languageData, _, _ = langData(frame.args[1]) return languageData['skrót'] or languageData['mianownik'] end function lang.mianownik(frame) local languageData, _, _ = langData(frame.args[1]) return languageData['mianownik'] end lang["dopełniacz"] = function(frame) local languageData, _, _ = langData(frame.args[1]) return languageData['dopełniacz'] end lang["dopełniacz?"] = function(frame) local languageData, _, _ = langData(frame.args[1]) return languageData and languageData['dopełniacz'] or nil end function lang.miejscownik(frame) local languageData, _, _ = langData(frame.args[1]) return languageData['miejscownik'] end lang["miejscownik?"] = function(frame) local languageData, _, _ = langData(frame.args[1]) return languageData and languageData['miejscownik'] or nil end function list(frame, multi, showPL) -- konwersja kodów języków na kod wiki text opisujący kody local items = {} -- tabela na skonwertowane kody -- flagi informujące, że na liście znajdują się podejrzane kody local invalid = false -- nieznany kod języka local warning = false -- język z listy częstych błędów local hiddenpl = false -- ukryty język polski local modified = false -- kod języka z automatyczną korektą local duplicated = false -- wielokrotnie podany (prawie) taki sam kod języka local args = frame.args; if not args[1] then -- brak argumentów sugeruje wywołanie z szablonu local parent = frame.getParent and frame:getParent() or nil if parent then args = parent.args end end if not args[1] then return "<span style=\"color:red\">'''Błąd! Brak kodu języka.'''</span>" end -- języki wpadające do [[Kategoria:Częste błędy kodu w szablonie lang]] local warnings = { ee = true, am = true, an = true, ang = true, ng = true, kr = true, se = true, si = true } local formatLanguageItem = function(langCode, languageData, alt) local class = alt and "lang-link-warning" or "" if #class > 0 then class = 'class="'..class..'"' end local skrot = languageData['skrót'] or languageData['mianownik'] local nativeName = mw.language.fetchLanguageName(langCode) if nativeName and #nativeName > 0 and langCode ~= "pl" then return string.format("<abbr %s title=\"Treść w języku %s (%s)\">%s</abbr>", class, languageData['miejscownik'], nativeName, skrot) else return string.format("<abbr %s title=\"Treść w języku %s\">%s</abbr>", class, languageData['miejscownik'], skrot) end end local parsedLanguages = {} local countGood = 0 local formatItem = function(languageCode) local languageData, langCode, langTag = langData(languageCode) local altFormat = false if langCode and (languageCode ~= langCode) then altFormat = languageCode ~= langTag modified = modified or altFormat end if languageData then if warnings[langCode] then warning = true end local item = formatLanguageItem(langCode, languageData, altFormat) if parsedLanguages[langCode] then duplicated = true --mw.log("Powtórne przywołanie języka ("..languageCode..")") else parsedLanguages[langCode] = item; if (langCode == "pl") and not showPL then -- pomiń język polski hiddenpl = true --mw.log("Ukrywam język polski") else table.insert(items, item) countGood = countGood + 1 end end elseif not langCode or #langCode == 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, "<span style=\"color:red\">'''Błąd! Brak kodu języka.'''</span>") end else invalid = true local item = string.format("<span style=\"color:red\">'''Błąd! Nieznany kod języka: %s. Sprawdź [[Moduł:Lang/data|listę kodów]].'''</span>", languageCode) if parsedLanguages[languageCode] then duplicated = true --mw.log("Powtórne przywołanie języka ("..languageCode..")") else parsedLanguages[languageCode] = item; table.insert(items, item) end 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(v) end end else -- jeden argument pozwala także wysłać wszystkie kody oddzielone spacją for languageCode in string.gmatch(args[1], "%S+") do formatItem(languageCode) end end if #items == 0 then if hiddenpl then -- podano tylko język polski, który jest ukryty else -- pusta lista kodów invalid = true table.insert(items, "<span style=\"color:red\">'''Błąd! Brak kodu języka.'''</span>") end end -- ostateczne formatowanie wyniku local result = {} if #items > 0 then if (countGood > 0) and hiddenpl then -- przywracam język polski jeśli lista zawiera więcej niż jeden język table.insert(items, 1, parsedLanguages.pl) hiddenpl = false end table.insert(result, '<span class="lang-list') if (#items == 1) and parsedLanguages.pl then table.insert(result, " tylko-pl") end table.insert(result, '">(') table.insert(result, table.concat(items, " • ")) table.insert(result, ")</span>") end if mw.title.getCurrentTitle().namespace == 0 then if warning then table.insert(result, "[[Kategoria:Częste błędy kodu w szablonie lang]]") end if invalid then table.insert(result, "[[Kategoria:Nierozpoznany kod języka w szablonie lang]]") end if hiddenpl then table.insert(result, "[[Kategoria:Szablon lang z ukrytym językiem polskim]]") end if modified or duplicated then table.insert(result, "[[Kategoria:Szablon lang z kodem języka wymagającym poprawki]]") end end return table.concat(result, "") end function lang.lang(frame) return list(frame, true, true) end lang["język"] = function(frame) return list(frame, false, true) end return lang