Moduulin Kielilinkki käyttöohje
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.
Moduulia käytetään sisältösivuilla seuraavien mallineiden kautta.
Lua-moduuleissa kirjasto otetaan käyttöön seuraavasti:
local kielilinkki = require("Moduuli:kielilinkki")
kielilinkki.linkki(kielikoodi, kohdesivu, teksti, lisäparametrit)
Tekee kielen tyylillä muotoillun linkin kielen osioon.
Esimerkkejä:
kielilinkki.linkki("es", "pato") -- Tulos: <span class="Latn" lang="es">]</span>
kielilinkki.linkki("fi", "ankka", "ankan") -- Tulos: <span class="Latn" lang="fi">]</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:
kielilinkki.linkki{ kieli = "fi", kohde = "ankka", teksti = "ankan", elem = "b" } -- Tulos: <b class="Latn" lang="fi">]</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", "بَطَّة", "بطة").
kielilinkki.teksti(kielikoodi, teksti, lisäparametrit)
Tekee kielen tyylillä muotoillun tekstin.
Esimerkkejä:
kielilinkki.teksti("bn", "পাতিহাঁস") -- Tulos: <span class="Beng" lang="bn">পাতিহাঁস</span>
--- 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 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 = parametrit or "linkki"
if text and otsikko then
parametrit.teksti = "]"
elseif not text and otsikko then
parametrit.teksti = "]"
elseif text and not otsikko then
parametrit.teksti = "]"
else -- if not text and not otsikko then
parametrit.teksti = "]"
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 = eka
lisaparametrit = link
lisaparametrit = 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:
-- = html-elementti, johon teksti tulee (oletus "span")
-- = html:n class-attribuutti elementille (oletus "linkki")
-- @return: linkki tekstinä
function p.linkki_vanha(lgsc, link, text, lisaparametrit)
lisaparametrit = lisaparametrit or {}
lisaparametrit = lgsc
lisaparametrit = link
lisaparametrit = 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 = eka
lisaparametrit = link
lisaparametrit = text
end
if lisaparametrit == nil or lisaparametrit == "" 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 or "fi"
local link = apu.ensimmainen_ei_tyhja{args, mw.title.getCurrentTitle().fullText}
local text = apu.ensimmainen_ei_tyhja{args}
-- Numeroidut kuvaus-param-parametrit taulukoksi.
local args_t = apu.numeroidut_parametrit(args, { "kuvaus-param-" })
args = args_t
return p.linkki(lang, link, text, args)
end
function p.teksti_tmp(parametrit)
local lgsc = parametrit
local text = parametrit
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 or "span")
:addClass(script)
:wikitext(text)
if lang then
span:attr('lang', lang)
end
if parametrit then
span:addClass(parametrit)
end
-- Linkin kohteen kuvailutiedot. Kuvaus on samall myös artikkelipohjan nimi.
if parametrit then
span:attr('data-kuvaus', parametrit)
-- Artikkelipohjan parametrit.
if parametrit then
span:attr('data-kuvaus-param',
mw.text.encode(mw.text.jsonEncode(parametrit, 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 = eka
lisaparametrit = 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:
-- = html-elementti, johon teksti tulee (oletus span)
-- = 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 = eka
lisaparametrit = 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
local text = frame.args
return p.teksti(lang, text, frame.args)
end
return p