Moduuli:Kielilinkki
Moduulin Kielilinkki käyttöohje [näytä tämä käyttöohje omalla sivullaan] [muokkaa tätä käyttöohjetta] [päivitä] [testit] [hiekkalaatikko]
Tässä ohjeessa kuvataan toiminnallisuutta jonka kehitys on vielä kesken. Sivu on tarkoitettu lähinnä kehityksen apuvälineeksi, ei yleiseen käyttöön. |
Moduulin avulla voi merkitä tekstiä kielelle määritellyllä tyylillä ja tehdä linkin kielen omaan osioon.
Kielten ja kirjoitusjärjestelmien tyylit määritellään sivulla Järjestelmäviesti:Gadget-Tekstityylit.
Käyttö
muokkaaModuulia käytetään sisältösivuilla seuraavien mallineiden kautta.
- l: kielen linkkityylillä merkitty linkki kielen omaan osioon,
- t: kielen tyylillä merkitty teksti (esim. esimerkkilause),
- tb: kielen lihavointityylillä merkitty teksti (esim. sanarivillä näkyvä teksti taivutusmuotoartikkeleissa),
- termi: kielen sana kuin siihen viitataan, esim. etymologiaosiossa; kursivointi latinalaisilla, kreikkalaisilla ja kyrillisillä; muilla normaali
- käännös: käännöslaatikossa näytettävä sana silloin, kun sanasta voi luoda sivun
Lua-moduuleissa kirjasto otetaan käyttöön seuraavasti:
local kielilinkki = require("Moduuli:kielilinkki")
Funktiot
muokkaalinkki
muokkaakielilinkki.linkki(kielikoodi, kohdesivu, teksti, lisäparametrit)
Tekee kielen tyylillä muotoillun linkin kielen osioon.
Esimerkkejä:
kielilinkki.linkki("es", "pato") -- Tulos: <span class="Latn" lang="es">[[pato]]</span>
kielilinkki.linkki("fi", "ankka", "ankan") -- Tulos: <span class="Latn" lang="fi">[[ankka|ankan]]</span>
kielilinkki.linkki("ar", "بَطَّة", "بطة") -- Tulos: <span class="Arab" lang="ar">[[بطة|بَطَّة]]</span>
Parametrit voi antaa myös nimettyinä:
kielilinkki.linkki{ kieli = "fi", kohde = "ankka", teksti = "ankan" } -- Tulos sama kuin yllä.
Nimettyjä parametreja on lisäksi seuraavat:
- elem: html-elementti johon linkki tulee. Koska wikissä ei voi luoda suoraan a-elementtiä tulee linkki toisen elementin sisään. (Oletus span.)
- class: html-elementille annettavat class-attribuutit (oletus linkki); jos useita, erotetaan välilyönnillä
- kuvaus: linkin kohdetta kuvaava teksti joka on samalla myös artikkelipohjan nimi. Malline:artikkelipohja. Tätä voi käyttää sivujen automaattiseen luontiin.
- kuvaus-param: taulukko, jossa on kuvaukseen littettävät parametrit
kielilinkki.linkki{ kieli = "fi", kohde = "ankka", teksti = "ankan", elem = "b" } -- Tulos: <b class="Latn" lang="fi">[[ankka|ankan]]</b>
Jos kielelle on määritelty automaattinen linkin muuntaja moduulissa Automaattilinkki, voi ensimmäisen parametrin jättää pois:
kielilinkki.linkki{ kieli = "sr", kohde = "ȍko", autolinkki = true } -- sama kuin kielilinkki.linkki("sr", "oko", "ȍko")
kielilinkki.linkki{ kieli = "ar", kohde = "بَطَّة", autolinkki = true } -- sama kuin kielilinkki.linkki("ar", "بَطَّة", "بطة").
teksti
muokkaakielilinkki.teksti(kielikoodi, teksti, lisäparametrit)
Tekee kielen tyylillä muotoillun tekstin.
Esimerkkejä:
kielilinkki.teksti("bn", "পাতিহাঁস") -- Tulos: <span class="Beng" lang="bn">পাতিহাঁস</span>
- elem: html-elementti johon linkki tulee. Koska wikissä ei voi luoda suoraan a-elementtiä tulee linkki toisen elementin sisään. (Oletus span.)
- class: html-elementille annettavat class-attribuutit (oletus linkki); jos useita, erotetaan välilyönnillä
--- Moduuli linkkien tekemiseksi tietyn kielen osioon ja linkkitekstin tyylin merkkaukseen.
local p = {}
local kielikoodit = require("Moduuli:kielikoodit")
local kjdata = require("Moduuli:Kirjoitusjärjestelmät")
local autolink = require("Moduuli:Automaattilinkki")
local apu = require("Moduuli:Mallinetyokalut")
function p.linkki_tmp(parametrit)
local lgsc = parametrit.kieli
local link = parametrit.kohde
local text = parametrit.teksti
assert ( lgsc, "Pakollinen kieliparametri puuttuu!" )
assert ( link, "Pakollinen linkkiparametri puuttuu!" )
if parametrit["autolinkki"] then
if not text then
text = link
end
link = autolink.muuta(lgsc, link)
end
local lang, _ = kjdata.avaaKielikoodi(lgsc)
if not lang then
lang = lgsc
end
-- Otsikko johon linkataan.
local otsikko = kielikoodit.kieliotsikko(lang)
if lang == "kans" then
otsikko = "Kansainvälinen"
end
parametrit["class"] = parametrit["class"] or "linkki"
if text and otsikko then
parametrit.teksti = "[[" .. link .. "#" .. otsikko .. "|" .. text .. "]]"
elseif not text and otsikko then
parametrit.teksti = "[[" .. link .. "#" .. otsikko .. "|" .. link .. "]]"
elseif text and not otsikko then
parametrit.teksti = "[[" .. link .. "|" .. text .. "]]"
else -- if not text and not otsikko then
parametrit.teksti = "[[" .. link .. "]]"
end
return p.teksti_tmp(parametrit)
end
function p.linkki(eka, link, text, lisaparametrit)
if type(eka) == "table" then
assert ( link == nil and text == nil and lisaparametrit == nil )
lisaparametrit = eka
else
lisaparametrit = lisaparametrit or {}
lisaparametrit["kieli"] = eka
lisaparametrit["kohde"] = link
lisaparametrit["teksti"] = text
end
return p.linkki_tmp(lisaparametrit)
end
--- Tekee kielen tyylillä (fonttikoolla) varustetun linkin kieliotsikkoon.
-- @param lang: kielikoodi (+ mahdollinen kirjoitusjärjestelmä), esim. "en" tai "sr-Cyrl"
-- @param link: linkin kohde (ja linkkiteksti, jos text-parametria ei anneta).
-- @param text: valinnainen linkin teksti
-- @param lisaparametrit: parametrit, joilla voi vaikuttaa tekstin tulostukseen:
-- ["elem"] = html-elementti, johon teksti tulee (oletus "span")
-- ["class"] = html:n class-attribuutti elementille (oletus "linkki")
-- @return: linkki tekstinä
function p.linkki_vanha(lgsc, link, text, lisaparametrit)
lisaparametrit = lisaparametrit or {}
lisaparametrit["kieli"] = lgsc
lisaparametrit["kohde"] = link
lisaparametrit["teksti"] = text
return p.linkki_tmp(lisaparametrit)
end
function p.linkki_tai_nil(eka, link, text, lisaparametrit)
if type(eka) == "table" then
assert ( link == nil and text == nil and lisaparametrit == nil )
lisaparametrit = eka
else
lisaparametrit = lisaparametrit or {}
lisaparametrit["kieli"] = eka
lisaparametrit["kohde"] = link
lisaparametrit["teksti"] = text
end
if lisaparametrit["kohde"] == nil or lisaparametrit["kohde"] == "" then
return nil
end
return p.linkki_tmp(lisaparametrit)
end
-- Muuten sama kuin p.linkki, mutta ei anna virhettä, jos linkkiä ei ole annettu,
-- vaan palauttaa nil. Käyttö on yksinkertaisempaa tietyissä yhteyksissä.
function p.linkki_tai_nil_vanha(lgsc, link, text, lisaparametrit)
if link == nil or link == "" then
return nil
end
return p.linkki(lgsc, link, text, lisaparametrit)
end
function p.Linkki(frame)
local pframe
local cur = frame
local args = frame.args
-- Yhdistetään parametrit eri tasojen frameista.
while cur and cur.args.frame == "parent" do
pframe = cur:getParent()
args = apu.yhdista(args, pframe.args)
cur = pframe
end
-- Oletuksena on suomi ja nykyinen sivu, kuten l-mallineessa alunperin.
local lang = args[1] or "fi"
local link = apu.ensimmainen_ei_tyhja{args[2], mw.title.getCurrentTitle().fullText}
local text = apu.ensimmainen_ei_tyhja{args[3]}
-- Numeroidut kuvaus-param-parametrit taulukoksi.
local args_t = apu.numeroidut_parametrit(args, { "kuvaus-param-" })
args["kuvaus-param"] = args_t["kuvaus-param-"]
return p.linkki(lang, link, text, args)
end
function p.teksti_tmp(parametrit)
local lgsc = parametrit["kieli"]
local text = parametrit["teksti"]
assert ( lgsc, "Pakollinen kieliparametri puuttuu!" )
assert ( text, "Pakollinen tekstiparametri puuttuu!" )
local lang, script = kjdata.avaaKielikoodi(lgsc)
if not script then
script = kjdata.yleinenKirjoitusjarjestelma(lang)
end
local span = mw.html.create(parametrit["elem"] or "span")
:addClass(script)
:wikitext(text)
if lang then
span:attr('lang', lang)
end
if parametrit["class"] then
span:addClass(parametrit["class"])
end
-- Linkin kohteen kuvailutiedot. Kuvaus on samall myös artikkelipohjan nimi.
if parametrit["kuvaus"] then
span:attr('data-kuvaus', parametrit["kuvaus"])
-- Artikkelipohjan parametrit.
if parametrit["kuvaus-param"] then
span:attr('data-kuvaus-param',
mw.text.encode(mw.text.jsonEncode(parametrit["kuvaus-param"], mw.text.JSON_PRESERVE_KEYS)))
end
end
return tostring(span)
end
function p.teksti(eka, text, lisaparametrit)
if type(eka) == "table" then
assert ( text == nil and lisaparametrit == nil )
lisaparametrit = eka
else
lisaparametrit = lisaparametrit or {}
lisaparametrit["kieli"] = eka
lisaparametrit["teksti"] = text
end
return p.teksti_tmp(lisaparametrit)
end
--- Tekee kielen tyylillä (fonttikoolla) varustetun tekstipätkän.
-- @param lang: kielikoodi
-- @param text: tekstipätkä annetulla kielellä
-- @param lisaparametrit: parametrit, joilla voi vaikuttaa tekstin tulostukseen:
-- ["elem"] = html-elementti, johon teksti tulee (oletus span)
-- ["class"] = html:n class-attribuutti elementille (oletus tyhjä)
-- @return: span-elementillä ympäröity teksti, jossa on kielen tyyli
function p.teksti_vanha(lgsc, text, lisaparametrit)
lisaparametrit = lisaparametrit or {}
lisaparametrit["kieli"] = eka
lisaparametrit["teksti"] = text
return p.teksti_tmp(lisaparametrit)
end
function p.Teksti(frame)
if frame.args.frame == 'parent' then
frame = frame:getParent()
end
local lang = frame.args[1]
local text = frame.args[2]
return p.teksti(lang, text, frame.args)
end
return p