Moduuli:sanarivi/cmn
Moduulin sanarivi/cmn käyttöohje [näytä tämä käyttöohje omalla sivullaan] [muokkaa tätä käyttöohjetta] [päivitä] [testit] [hiekkalaatikko]
Tätä moduulia kutsutaan yleissanarivimallineiden (adjektiivi, substantiivi yms.) kautta.
Mandariinikiinan sanarivimallineet
muokkaa{{sanaluokkamalline|cmn|lat=pinyin|yks=yksinkertaistettu|per=perinteinen|asu=kirjoitusasu}}
Kohtaan "sanaluokkamalline" kirjoitetaan kyseessä olevan sanan sanaluokka, esim. substantiivi, adjektiivi tai verbi.
Kohta "cmn" ei muutu, sillä se on mandariinikiinan kielikoodi.
Parametri lat
(tässä tekstin "pinyin" tilalle) tulee mandariinikiinan latinisointi pinyinillä.
Parametrien yks
/per
avulla voi ilmoittaa sanan vaihtoehtoisen kirjoitusasun joko yksinkertaistetuilla (koodi "yks=xx") tai perinteisillä merkeillä (koodi "per=xx"). Jos kirjoitusasu on sama molemmilla, tämä osa jätetään kokonaan pois ja annetaan parametri asu=yks+per
. Tällöin näkyviin tulee teksti "perinteinen ja yksinkertaistettu kirjoitusasu".
Jos et ole varma, eroavatko perinteinen ja yksinkertaistettu kirjoitusasu toisistaan, voit jättää koodiin jätä yks-, per-
ja asu
-parametrit pois, jolloin sana lisätään luokkaan Mandariinikiinan sanat, joiden kirjoitusasua ei ole merkitty
Parametrilla asu
voi antaa sanan kirjoitusasun vaihtoehdot ovat:
yks+per
: yksinkertaistettu ja perinteinenyks
: yksinkertaistettuper
: perinteinen
Jos parametri yks
tai per
on annettu, ei tätä tarvitse antaa. Kun parametri yks
on annettu, näytetään asuksi perinteinen ja vastaavasti kun parametri per
on annettu, näytetään asuksi yksinkertaistettu.
Kun tätä mallinetta käytetään, wiki lisää artikkeliin automaattisesti
- alkuun itse sanan (sivun nimestä)
- mallineen ilmaisemat luokat, esim. "Mandariinikiinan sanat yksinkertaistetussa kirjoitusasussa", "Mandariinikiinan kielen substantiivit" jne.
Esimerkit
muokkaa- Sivu 摩托車
- Sivu 电梯
- Sivu 巧克力
--- Mandariinikiinan sanarivimallineet.
local p = {}
local kielilinkki = require("Moduuli:Kielilinkki")
local luokat = require("Moduuli:luokittelu")
local apu = require("Moduuli:Mallinetyokalut")
local srlib = require("Moduuli:LibSanarivi")
local paramtext = require("Moduuli:ParametrisoituTeksti")
local ryhma, var, luettelo, tai = paramtext.ryhma, paramtext.muuttuja, paramtext.luettelo, paramtext.tai
---
-- @param title: PAGENAME tai muu otsikko, jos annettu
-- @param lat: taulukko pinyin-muodoista tai nil
-- @param asu: kirjoitusasu, "yks", "per", "yks+per" tai nil
-- @param yks+per: yksinkertainen tai perinteinen kirjoitusasu riippuen kumpi tulostetaan tai nil
local function muotoileSanarivi(title, lat, asu, toinen)
assert(title, "Pakollinen parametri puuttuu!")
lisap = apu.map(
function (_) return {
["kuvaus"] = "tr/pinyin-transkriptio" }
end,
lat or {}
)
local asuteksti = nil
local yks = nil
local per = nil
local kirj = "Hani"
if asu == "yks+per" then
asuteksti = "''yksinkertaistettu ja perinteinen kirjoitusasu''"
elseif asu == "yks" then
asuteksti = "''yksinkertaistettu kirjoitusasu''"
per = toinen
kirj = "Hans"
elseif asu == "per" then
asuteksti = "''perinteinen kirjoitusasu''"
yks = toinen
kirj = "Hant"
end
return paramtext.muotoile(
ryhma("",
srlib.hakusana(title, lang, kirj),
" ",
ryhma("(''pinyin'' ", srlib.linkkiluettelo("cmn-Latn", lat, nil, nil, lisap), ")"),
" ",
ryhma("(",
asuteksti,
"; ",
tai(
ryhma("''yksinkertaistetussa kirjoitusasussa'' ", srlib.kielilinkki("cmn", yks), ""),
ryhma("''perinteisessä kirjoitusasussa'' ", srlib.kielilinkki("cmn", per), "")
),
")"),
"")
), luokat
end
--- Apufunktio eri luokkayhdistelmien tekemiseksi.
-- @param sanalk: esim. "substantiivi"
-- @param yks: true, jos lisätään
-- @param per: true, jos lisätään
local function lisaaLuokka(sanalk, asu)
local luokka = luokat.kielenLuokka("cmn", luokat.luokkaMonikko(sanalk))
if not asu or sanalk ~= "sana" then
luokat.asetaAakkostajalla2{
kieli = "cmn",
luokka = luokka,
-- nimiavaruus = 0 -- estetään luokan näkyminen testi- ja ohje- yms. sivuilla
}
elseif asu == "per" then
luokat.asetaAakkostajalla2{
kieli = "cmn",
luokka = luokka .. " perinteisessä kirjoitusasussa",
-- nimiavaruus = 0
}
elseif asu == "yks" then
luokat.asetaAakkostajalla2{
kieli = "cmn",
luokka = luokka .. " yksinkertaistetussa kirjoitusasussa",
-- nimiavaruus = 0
}
elseif asu == "yks+per" then
luokat.asetaAakkostajalla2{
kieli = "cmn",
luokka = luokka .. " perinteisessä kirjoitusasussa",
-- nimiavaruus = 0
}
luokat.asetaAakkostajalla2{
kieli = "cmn",
luokka = luokka .. " yksinkertaistetussa kirjoitusasussa",
-- nimiavaruus = 0
}
end
end
--- Pääohjelma.
-- @param frame: Jos kutsu sisältää parametrin |frame=parent|, käytetään
-- kutsuvan mallineen parametreja moduulin parametrien sijasta
-- Framen täytyy sisältää joko yks- tai per- parametrin tai ei kumpaakaan;
-- lat-parametri on valinnainen; 1. nimetön on valinnainen sanarivillä
-- näytettävä teksti sivun otsikon sijaan. Arg sanaluokka kertoo minkä
-- sanaluokan mallineesta tätä kutsutaan.
function p.Sanarivi(frame)
local sanalk = frame.args.sanaluokka
if frame.args.frame == 'parent' then
frame = frame:getParent()
end
local args = apu.poista_tyhjat(frame.args)
local args_num = apu.numeroidut_parametrit(args, {"lat"})
-- Sanarivillä näkyvä sana.
local title = frame.args[2] or mw.title.getCurrentTitle().text
assert(frame.args[1] == "cmn", "Väärä kieli!")
local yks = args.yks
local per = args.per
local asu = args.asu
local lat = args_num.lat
if per and yks then
error('Virheeliset parametrit: ei voi antaa molempia per ja yks')
end
if not yks and not per and asu == "yks+per" then
lisaaLuokka("sana", "yks+per")
lisaaLuokka(sanalk, "yks+per")
return muotoileSanarivi(title, lat, "yks+per", nil), luokat
elseif not yks and not per and (not asu or asu == "?") then
lisaaLuokka("sana", nil)
lisaaLuokka(sanalk, nil)
luokat.asetaAakkostajalla("cmn", "Mandariinikiinan sanat, joiden kirjoitusasua ei ole merkitty")
return muotoileSanarivi(title, lat, nil, nil), luokat
elseif yks or asu == "per" then
lisaaLuokka("sana", "per")
lisaaLuokka(sanalk, "per")
return muotoileSanarivi(title, lat, "per", yks), luokat
elseif per or asu == "yks" then
lisaaLuokka("sana", "yks")
lisaaLuokka(sanalk, "yks")
return muotoileSanarivi(title, lat, "yks", per), luokat
else
error('Virheeliset parametrit')
end
end
return p