Moduł:Lang
Moduł techniczny do obsługi kodów językowych.
istnieje
[edytuj]Funkcja sprawdzająca czy dla podanego kodu języka istnieje wpis w module danych z danymi opisowymi. Jeśli dane istnieją, to wynikiem jest podany kod języka, w przeciwnym razie funkcja zwraca pusty tekst.
parametry
[edytuj]Pole | Do czego służy? | Jak wypełnić? |
---|---|---|
1 | Kod języka | Np. en lub pl .
|
przykłady
[edytuj]wywołanie | efekt |
---|---|
{{#if:{{#invoke:lang|istnieje|en}}|tak|nie}}
|
tak |
{{#if:{{#invoke:lang|istnieje}}|tak|nie}}
|
nie |
{{#if:{{#invoke:lang|istnieje|xxxx}}|tak|nie}}
|
nie |
{{#invoke:lang|istnieje|pl}}
|
pl |
{{#invoke:lang|istnieje|uuuu}}
|
|
{{#if:{{#invoke:lang|istnieje|}}|tak|nie}}
|
nie |
{{#if:{{#invoke:lang|istnieje}}|tak|nie}}
|
nie |
{{#ifeq:{{#invoke:lang|istnieje|en}}|en|tak|nie}}
|
tak |
{{#ifeq:{{#invoke:lang|istnieje|xxx}}|xxx|tak|nie}}
|
nie |
{{#ifeq:{{#invoke:lang|istnieje|}}||tak|nie}}
|
tak |
kursywa
[edytuj]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
[edytuj]Pole | Do czego służy? | Jak wypełnić? |
---|---|---|
1 | Kod języka | Np. en lub ru .
|
przykłady
[edytuj]wywołanie | efekt |
---|---|
i{{#invoke:lang|kursywa|en}}i
|
ii |
i{{#invoke:lang|kursywa|ru}}i
|
ii |
hasło
, skrót
, mianownik
, dopełniacz
, miejscownik
[edytuj]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
[edytuj]Pole | Do czego służy? | Jak wypełnić? |
---|---|---|
1 | Kod języka | Np. en lub pl .
|
przykłady
[edytuj]wywołanie \ X | en
|
pl
|
aa
|
---|---|---|---|
[[{{#invoke:lang|hasło|X}}]]
|
język angielski | język polski | język afar |
{{#invoke:lang|skrót|X}}
|
ang. | pol. | afar |
{{#invoke:lang|mianownik|X}}
|
angielski | polski | afar |
{{#invoke:lang|dopełniacz|X}}
|
angielskiego | polskiego | afar |
{{#invoke:lang|miejscownik|X}}
|
angielskim | polskim | afar |
lang
[edytuj]Funkcja konwertująca kody języka zgodnie z definicją w szablonie {{lang}}.
parametry
[edytuj]Pole | Do czego służy? | Jak wypełnić? |
---|---|---|
1..N | Kod języka | Np. en lub pl .
|
przykłady
[edytuj]wywołanie | efekt |
---|---|
{{#invoke:lang|lang|en}}
|
(ang.) |
{{#invoke:lang|lang|X}}
|
(Błąd! Nieznany kod języka: x. Sprawdź listę kodów.) |
{{#invoke:lang|lang|}}
|
(Błąd! Brak kodu języka.) |
{{#invoke:lang|lang}}
|
Błąd! Brak kodu języka. |
{{#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}}
|
(ang. • pol. • ros. • wł. • ewe • arum. • minnański • biał. (tar.) • tumbuka • niem. • est. • hakka • kałm. • ilokański • indonez. • interlingua • occidental) |
język
[edytuj]Funkcja konwertująca kody języka zgodnie z definicją w szablonie {{lang}}.
parametry
[edytuj]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
[edytuj]wywołanie | efekt |
---|---|
{{#invoke:lang|język|en}}
|
(ang.) |
{{#invoke:lang|język|X}}
|
(Błąd! Nieznany kod języka: x. Sprawdź listę kodów.) |
{{#invoke:lang|język|}}
|
(Błąd! Brak kodu języka.) |
{{#invoke:lang|język}}
|
Błąd! Brak kodu języka. |
{{#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}}
|
(ang. • pol. • ros. • wł. • ewe • arum. • minnański • biał. (tar.) • tumbuka • niem. • est. • hakka • kałm. • ilokański • indonez. • interlingua • occidental) |
Błędy
[edytuj]Błędy należy zgłaszać na stronie Wikipodróże:Pub podróżnika/Kwestie techniczne.
Na stronie Moduł:Lang wykorzystano treści ze strony Moduł:Lang w polskiej Wikipedii (link do wersji).
Jej autorzy wymienieni są w historii edycji.
Prawa autorskie: na licencji Creative Commons CC-BY-SA.
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 "<span style=\"color:red\">'''Błąd! Brak kodu języka.'''</span>"
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|<span style=\"color:#005\" title=\"Treść w języku %s (%s)\">%s</span>]]", languageData['hasło'], languageData['miejscownik'], nativeName, skrot))
else
table.insert(items, string.format("[[%s|<span style=\"color:#005\" title=\"Treść w języku %s\">%s</span>]]", 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, "<span style=\"color:red\">'''Błąd! Brak kodu języka.'''</span>")
end
else
invalid = true
table.insert(items, string.format("<span style=\"color:red\">'''Błąd! Nieznany kod języka: %s. Sprawdź [[Pomoc:Interwiki|listę kodów]].'''</span>", 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, "<span style=\"color:red\">'''Błąd! Brak kodu języka.'''</span>")
end
-- ostateczne formatowanie wyniku
local result = {}
table.insert(result, "<span style=\"color:#009\">(")
table.insert(result, table.concat(items, " • "))
table.insert(result, ")</span>")
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
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