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