Moduuli:kielikoodit
Moduulin kielikoodit käyttöohje [näytä tämä käyttöohje omalla sivullaan] [muokkaa tätä käyttöohjetta] [päivitä] [testit] [hiekkalaatikko]
Kielten nimien ja tunnusten hakemiseen.
Kielikoodimääritykset tehdään tiedostoon Module:kielikoodit/taulukot.
Funktiot
[muokkaa]nimi
[muokkaa]nimi(tunnus)
Palauttaa tunnusta vastaavan kielen nimen. Huom. saman asian saa tehtyä mw.language.fetchLanguageName
-funktiolla.
tunnus
[muokkaa]tunnus(nimi)
Palauttaa nimeä vastaavan kielitunnuksen. Huom. saman asian saa tehtyä kieliolion mw.language:getCode
-metodilla.
tunnus_genetiiville
[muokkaa]tunnus_genetiiville(nimi)
Palauttaa nimeä vastaavan kielitunnuksen.
genetiivissa
[muokkaa]genetiivissa(tunnus)
Palauttaa tunnusta vastaavan kielen genetiivimuodon.
partitiivissa
[muokkaa]partitiivissa(tunnus)
Palauttaa tunnusta vastaavan kielen partitiivimuodon.
translatiivissa
[muokkaa]translatiivissa(tunnus)
Palauttaa tunnusta vastaavan kielen translatiivimuodon.
lajitteluarvo
[muokkaa]lajitteluarvo(tunnus)
Palauttaa tunnusta vastaavan kielen lajitteluarvon, joita vertaamalla tietää kahden kielen välisen järjestyksen.
lajitteluarvo_nimelle
[muokkaa]lajitteluarvo_nimelle(nimi)
Palauttaa nimeä vastaavan kielen lajitteluarvon, joita vertaamalla tietää kahden kielen välisen järjestyksen.
#invokella kutsuttavat funktiot
[muokkaa]Nimi
[muokkaa]{{#invoke:kielikoodit|Nimi|tunnus}}
{{#invoke:kielikoodit|Nimi|tunnus|isolla=1}}
Palauttaa tunnusta vastaavan kielen nimen. Jos parametri isolla on annettu, palauttaa nimen isolla alkukirjaimella.
Tunnus
[muokkaa]{{#invoke:kielikoodit|Tunnus|nimi}}
Palauttaa nimeä vastaavan kielen tunnuksen.
{{#invoke:kielikoodit|Tunnus|nimi[|kielikoodistandardi]}}
Palauttaa nimeä vastaavan kielen tunnuksen. Jos kielikoodistandardi on annettu, palauttaa sen mukaisen kielikoodin, muuten oletuksksi asetetun.
Genetiivissa
[muokkaa]{{#invoke:kielikoodit|Genetiivissa|tunnus}}
{{#invoke:kielikoodit|Genetiivissa|tunnus|isolla=1}}
Palauttaa tunnusta vastaavan kielen genetiivimuodon. Jos parametri isolla on annettu, palauttaa nimen isolla alkukirjaimella.
Tunnus_genetiiville
[muokkaa]{{#invoke:kielikoodit|Tunnus_genetiiville|nimen genetiivi}}
Palauttaa nimen genetiiviä vastaavan kielen tunnuksen.
Partitiivissa
[muokkaa]{{#invoke:kielikoodit|Partitiivissa|tunnus}}
{{#invoke:kielikoodit|Partitiivissa|tunnus|isolla=1}}
Palauttaa tunnusta vastaavan kielen partitiivimuodon. Jos parametri isolla on annettu, palauttaa nimen isolla alkukirjaimella.
Translatiivissa
[muokkaa]{{#invoke:kielikoodit|Translatiivissa|tunnus}}
{{#invoke:kielikoodit|Translatiivissa|tunnus|isolla=1}}
Palauttaa tunnusta vastaavan kielen translatiivimuodon. Jos parametri isolla on annettu, palauttaa nimen isolla alkukirjaimella.
Testit
[muokkaa]- Nimi
- KOODI: {{#invoke:kielikoodit|Nimi|hu}}
TULOS: unkari - KOODI: {{#invoke:kielikoodit|Nimi|hu|isolla=1}}
TULOS: Unkari - KOODI: {{#invoke:kielikoodit|Nimi|kud}}
TULOS: 'auhelawaOK - KOODI: {{#invoke:kielikoodit|Nimi|kud|isolla=1}}
TULOS: 'AuhelawaOK - KOODI: {{#invoke:kielikoodit|Nimi|ovd}}
TULOS: älvdalskaOK - KOODI: {{#invoke:kielikoodit|Nimi|ovd|isolla=1}}
TULOS: ÄlvdalskaOK
- Genetiivissa
- KOODI: {{#invoke:kielikoodit|Genetiivissa|hu}}
TULOS: unkarin - KOODI: {{#invoke:kielikoodit|Genetiivissa|hu|isolla=1}}
TULOS: Unkarin - KOODI: {{#invoke:kielikoodit|Genetiivissa|dlm}}
TULOS: dalmatian - KOODI: {{#invoke:kielikoodit|Genetiivissa|dlm|isolla=1}}
TULOS: Dalmatian - KOODI: {{#invoke:kielikoodit|Genetiivissa|kud}}
TULOS: 'auhelawanOK - KOODI: {{#invoke:kielikoodit|Genetiivissa|kud|isolla=1}}
TULOS: 'AuhelawanOK - KOODI: {{#invoke:kielikoodit|Genetiivissa|ovd}}
TULOS: älvdalskanOK - KOODI: {{#invoke:kielikoodit|Genetiivissa|ovd|isolla=1}}
TULOS: ÄlvdalskanOK
- Partitiivissa
- KOODI: {{#invoke:kielikoodit|Partitiivissa|hu}}
TULOS: unkaria - KOODI: {{#invoke:kielikoodit|Partitiivissa|hu|isolla=1}}
TULOS: Unkaria
- Translatiivissa
- KOODI: {{#invoke:kielikoodit|Translatiivissa|hu}}
TULOS: unkariksi - KOODI: {{#invoke:kielikoodit|Translatiivissa|hu|isolla=1}}
TULOS: Unkariksi
- Tunnus
- KOODI: {{#invoke:kielikoodit|Tunnus|pandžabi}}
TULOS: pa - KOODI: {{#invoke:kielikoodit|Tunnus|pörde}}
TULOS: - KOODI: {{#invoke:kielikoodit|Tunnus|saksa|ISO 639-1}}
TULOS: deOK - KOODI: {{#invoke:kielikoodit|Tunnus|saksa|ISO 639-2}}
TULOS: gerOK - KOODI: {{#invoke:kielikoodit|Tunnus|saksa|ISO 639-3}}
TULOS: deuOK - KOODI: {{#invoke:kielikoodit|Tunnus|saksa}}
TULOS: deOK
- Tunnus_tunnukselle
- KOODI: {{#invoke:kielikoodit|Tunnus_tunnukselle|de|ISO 639-1}}
TULOS: deOK - KOODI: {{#invoke:kielikoodit|Tunnus_tunnukselle|de|ISO 639-2}}
TULOS: gerOK - KOODI: {{#invoke:kielikoodit|Tunnus_tunnukselle|de|ISO 639-3}}
TULOS: deuOK - KOODI: {{#invoke:kielikoodit|Tunnus_tunnukselle|ger|ISO 639-1}}
TULOS: deOK - KOODI: {{#invoke:kielikoodit|Tunnus_tunnukselle|ger|ISO 639-2}}
TULOS: gerOK - KOODI: {{#invoke:kielikoodit|Tunnus_tunnukselle|ger|ISO 639-3}}
TULOS: deuOK - KOODI: {{#invoke:kielikoodit|Tunnus_tunnukselle|deu|ISO 639-1}}
TULOS: deOK - KOODI: {{#invoke:kielikoodit|Tunnus_tunnukselle|deu|ISO 639-2}}
TULOS: gerOK - KOODI: {{#invoke:kielikoodit|Tunnus_tunnukselle|deu|ISO 639-3}}
TULOS: deuOK
- Tunnus_genetiiville
- KOODI: {{#invoke:kielikoodit|Tunnus_genetiiville|liivin}}
TULOS: liv - KOODI: {{#invoke:kielikoodit|Tunnus_genetiiville|Liivin}}
TULOS: liv
- Tunnus_genetiiville
- KOODI: {{#invoke:kielikoodit|Tunnus_genetiiville|klassisen pörden}}
TULOS: - KOODI: {{#invoke:kielikoodit|Tunnus_genetiiville|dalmatian}}
TULOS: dlm - KOODI: {{#invoke:kielikoodit|Tunnus_genetiiville|dalmaatin}}
TULOS: dlm
- Nimi2
- KOODI: {{#invoke:kielikoodit|Nimi2|dak|isolla=1}}
TULOS: DakotaOK - KOODI: {{#invoke:kielikoodit|Nimi2|dakota|isolla=1}}
TULOS: DakotaOK - KOODI: {{#invoke:kielikoodit|Nimi2|Dakota|isolla=1}}
TULOS: DakotaOK - KOODI: {{#invoke:kielikoodit|Nimi2|dakotan|isolla=1}}
TULOS: DakotaOK - KOODI: {{#invoke:kielikoodit|Nimi2|Dakotan|isolla=1}}
TULOS: DakotaOK - KOODI: {{#invoke:kielikoodit|Nimi2|Mouk-Aria|isolla=1}}
TULOS (0 tavua): NG
ODOTETTU (9 tavua):mouk-aria
- KOODI: {{#invoke:kielikoodit|Nimi2|mouk-Aria|isolla=1}}
TULOS (0 tavua): NG
ODOTETTU (9 tavua):mouk-aria
- Nimi2 - kielellä vaihtoehtoinen nimi
- KOODI: {{#invoke:kielikoodit|Nimi2|dlm|isolla=1}}
TULOS: DalmatiaOK - KOODI: {{#invoke:kielikoodit|Nimi2|dalmatia|isolla=1}}
TULOS: DalmatiaOK - KOODI: {{#invoke:kielikoodit|Nimi2|Dalmatia|isolla=1}}
TULOS: DalmatiaOK - KOODI: {{#invoke:kielikoodit|Nimi2|dalmatian|isolla=1}}
TULOS: DalmatiaOK - KOODI: {{#invoke:kielikoodit|Nimi2|Dalmatian|isolla=1}}
TULOS: DalmatiaOK - KOODI: {{#invoke:kielikoodit|Nimi2|dalmaatti|isolla=1}}
TULOS: DalmatiaOK - KOODI: {{#invoke:kielikoodit|Nimi2|Dalmaatti|isolla=1}}
TULOS: DalmatiaOK - KOODI: {{#invoke:kielikoodit|Nimi2|dalmaatin|isolla=1}}
TULOS: DalmatiaOK - KOODI: {{#invoke:kielikoodit|Nimi2|Dalmaatin|isolla=1}}
TULOS: DalmatiaOK
- Nimi2 - tulostus pienellä
- KOODI: {{#invoke:kielikoodit|Nimi2|dak}}
TULOS: dakotaOK - KOODI: {{#invoke:kielikoodit|Nimi2|Dakotan}}
TULOS: dakotaOK - KOODI: {{#invoke:kielikoodit|Nimi2|Dalmatia}}
TULOS: dalmatiaOK - KOODI: {{#invoke:kielikoodit|Nimi2|Dalmaatin}}
TULOS: dalmatiaOK
- Genetiivissa2
- KOODI: {{#invoke:kielikoodit|Genetiivissa2|dak}}
TULOS: DakotanOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|nmn}}
TULOS (7 tavua): !XóõnNG
ODOTETTU (8 tavua):ǃXóõn
- KOODI: {{#invoke:kielikoodit|Genetiivissa2|kud}}
TULOS: 'AuhelawanOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|ǃxóõ}}
TULOS (7 tavua): !XóõnNG
ODOTETTU (8 tavua):ǃXóõn
- KOODI: {{#invoke:kielikoodit|Genetiivissa2|dakota}}
TULOS: DakotanOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|Dakota}}
TULOS: DakotanOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|dakotan}}
TULOS: DakotanOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|Dakotan}}
TULOS: DakotanOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|Mouk-Aria}}
TULOS (0 tavua): NG
ODOTETTU (10 tavua):mouk-arian
- KOODI: {{#invoke:kielikoodit|Genetiivissa2|mouk-Aria}}
TULOS (0 tavua): NG
ODOTETTU (10 tavua):mouk-arian
- Genetiivissa2 - kielellä vaihtoehtoinen nimi
- KOODI: {{#invoke:kielikoodit|Genetiivissa2|dlm}}
TULOS: DalmatianOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|dalmatia}}
TULOS: DalmatianOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|Dalmatia}}
TULOS: DalmatianOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|dalmatian}}
TULOS: DalmatianOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|Dalmatian}}
TULOS: DalmatianOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|dalmaatti}}
TULOS: DalmatianOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|Dalmaatti}}
TULOS: DalmatianOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|dalmaatin}}
TULOS: DalmatianOK - KOODI: {{#invoke:kielikoodit|Genetiivissa2|Dalmaatin}}
TULOS: DalmatianOK
ɧ
-- http://fi.wiktionary.org/wiki/Wikisanakirja:Kielimallineet
local m = {}
local taulukot = mw.loadData('Module:kielikoodit/taulukot')
-- Muuttaa sanan s ensimmäisen kirjaimen isoksi vaikka sana ei alkaisi
-- kirjaimella. Esim. versaaliksi("'auhelawa") --> "'Auhelawa"
function m.versaalilla (s)
local lang_fi = mw.language.new("fi");
-- Erotetaan erikoismerkit alusta, koska mw.lang:ucfirst ei muuta nillä
-- alkavia nimiä oikein
s = string.gsub(s, "^(['ǃ!]*)(.+)", function (a, b)
return a .. lang_fi:ucfirst(b)
end)
return s
end
function m.gemenalla (s)
local lang_fi = mw.language.new("fi");
s = string.gsub(s, "^(['ǃ!]*)(.+)", function (a, b)
return a .. lang_fi:lcfirst(b)
end)
return s
end
-- Palauttaa annetun tunnuksen kielen nimen nominatiivissa.
-- Jos valinnainen parametri 'isolla' on true, alkaa palautettu sana isolla kirjaimella.
function m.nimi(tunnus, isolla)
local kt = taulukot.tunnukset[tunnus]
if kt then
if isolla then
return m.versaalilla(kt[2])
end
return kt[2]
end
return nil
end
--- Kielen osioiden otsikkona käytetty teksti.
--
-- Yleensä sama kuin m.nimi isolla, muttei aina.
function m.kieliotsikko(tunnus)
if tunnus == "rmf" then
return "Suomen romani"
end
return m.nimi(tunnus, true)
end
-- Palauttaa annetun tunnuksen kielen nimen genetiivissä.
-- Jos valinnainen parametri 'isolla' on true, alkaa palautettu sana isolla kirjaimella.
function m.genetiivi_tunnukselle(tunnus, isolla)
local kt = taulukot.tunnukset[tunnus]
if kt and kt[3] then
if isolla then
return m.versaalilla(kt[3])
end
return kt[3]
end
return nil
end
function m.genetiivi_nimelle(kieli, isolla)
if taulukot.nimet[kieli] then
return taulukot.nimet[kieli][3]
end
return nil
end
function m.genetiivissa(k, isolla)
local t
if taulukot.tunnukset[k] then
t = k
else
t = m.tunnus_genetiiville(k) or m.tunnus(k, nil)
end
return m.genetiivi_tunnukselle(t, isolla) or k
end
function m.tunnus_genetiiville(gen)
-- muutetaan pienellä alkavaksi
local s = m.gemenalla(gen)
if taulukot.genetiivit[s] then
return taulukot.genetiivit[s][5][1]
end
return nil
end
-- Palauttaa annetun tunnuksen kielen nimen partitiivissa.
-- Jos valinnainen parametri 'isolla' on true, alkaa palautettu sana isolla kirjaimella.
-- TODO
function m.partitiivissa(tunnus, isolla)
kt = taulukot.tunnukset[tunnus]
if kt then
if isolla and kt[4] then
return m.versaalilla(kt[4])
end
return kt[4]
end
return nil
end
function m.partitiivi_nimelle(kieli, isolla)
if taulukot.nimet[kieli] then
return taulukot.nimet[kieli][4]
end
return nil
end
function m.translatiivissa(tunnus, isolla)
g = m.genetiivissa(tunnus, isolla)
if g then
return string.match(g, "^(.*)n$") .. "ksi"
end
return nil
end
-- Palauttaa arvon, joka kertoo kielen paikan akkosjärjesyksessä.
-- TODO
function m.lajitteluarvo(tunnus)
kt = taulukot.tunnukset[tunnus]
if kt then
return kt[1]
end
return -1
end
function m.lajitteluarvo_nimelle(nimi)
kt = taulukot.nimet[nimi]
if kt then
return kt[1]
end
return -1
end
function m._tunnus(tunnukset, tark)
local iso1 = nil
local iso2 = nil
local iso3 = nil
if tark == nil then
return tunnukset[1]
end
for i,v in ipairs(tunnukset) do
if v:len() == 2 then
iso1 = v
if tark == "ISO 639-1" then
return v
end
elseif v:len() == 3 and iso3 == nil then
iso3 = v
if tark == "ISO 639-3" then
return v
end
elseif v:len() == 3 and iso3 ~= nil then
iso2 = v
if tark == "ISO 639-2" then
return v
end
end
end
return nil
end
-- Palauttaa annetun kielen kielitunnuksen.
function m.tunnus(kieli, tark)
local s = m.gemenalla(kieli)
if taulukot.nimet[s] then
return m._tunnus(taulukot.nimet[s][5], tark)
end
return nil
end
-- #invokella kutsuttavat funktiot
function m.Nimi(frame)
return m.nimi(frame.args[1], frame.args.isolla and frame.args.isolla ~= "")
end
function m.Tunnus(frame)
local ret = m.tunnus(frame.args[1], frame.args[2])
if ret then
return ret
end
return frame.args.oletus or ""
end
function m.Tunnus_tunnukselle(frame)
kt = taulukot.tunnukset[frame.args[1]]
if kt then
local ret = m._tunnus(kt[5], frame.args[2])
if ret then
return ret
end
end
return frame.args.oletus or ""
end
function m.Genetiivissa(frame)
local ret = m.genetiivissa(frame.args[1], frame.args.isolla and frame.args.isolla ~= "")
if ret then
return ret
end
return frame.args.oletus or ""
end
function m.Tunnus_genetiiville(frame)
local ret = m.tunnus_genetiiville(frame.args[1])
if ret then
return ret
end
return frame.args.oletus or ""
end
function m.Partitiivissa(frame)
local ret = m.partitiivissa(frame.args[1], frame.args.isolla and frame.args.isolla ~= "")
if ret then
return ret
end
return frame.args.oletus or ""
end
function m.Translatiivissa(frame)
local ret = m.translatiivissa(frame.args[1], frame.args.isolla and frame.args.isolla ~= "")
if ret then
return ret
end
return frame.args.oletus or ""
end
function m.Tulosta_kielet(frame)
local teksti = "{| class='wikitable sortable' border=1\n|-\n! Kielikoodi !! Nimi!!Wikisanakirjassa käytetty nimi\n"
for i,v in ipairs(taulukot.tiedot) do
local jnro = v[1]
local nimi = v[2]
local kielikoodit = v[5]
local viittaus = v[6]
local kaytetty_nimi = ""
if (kielikoodit == nil or next(kielikoodit) == nil) and viittaus then
rivi = taulukot.tunnukset[viittaus]
if rivi then
kielikoodit = rivi[5]
kaytetty_nimi = "[[" .. rivi[2] .. "]]"
end
end
if kielikoodit then
for j,koodi in ipairs(kielikoodit) do
teksti = teksti .. "|-\n| " .. koodi .. " ||data-sort-value=\"" .. jnro .. "\"| [[" .. nimi .. "]] || " .. kaytetty_nimi .. "\n"
end
end
end
teksti = teksti .. "|}"
return teksti
end
-- Yhteensopivuusfunkto vanhoille {{Kieliaakkostus}}- ja {{Kieliaakkostus-2}} -mallineille.
-- Palauttaa kielen nominatiivin, kun kieli on annettu genetiivimuodossa tai kielikoodina.
function m.Nimi2(frame)
local tunnus = frame.args[1]
-- Etsitään ensisijaisesti kielikoodilla, koska toisen kielen kielikoodi
-- ja toisen nimi voivat olla samat (iiri, ga).
if m.nimi(tunnus) == nil then
tunnus = m.tunnus(tunnus, nil) or m.tunnus_genetiiville(tunnus)
end
if tunnus then
local ret = m.nimi(tunnus, frame.args.isolla and frame.args.isolla ~= "")
if ret then
if frame.args.isolla == 1 then
return m.versaalilla(ret)
else
return ret
end
end
end
return frame.args.oletus or ""
end
-- Yhteensopivuusfunkto vanhoille {{Kieliaakkostus}}- ja {{Kieliaakkostus-2}} -mallineille.
-- Palauttaa kielen nominatiivin, kun kieli on annettu nominatiivimuodossa tai kielikoodina.
function m.Genetiivissa2(frame)
local tunnus = frame.args[1]
-- Etsitään ensisijaisesti kielikoodilla, koska toisen kielen kielikoodi
-- ja toisen nimi voivat olla samat (iiri, ga).
if m.nimi(tunnus) == nil then
tunnus = m.tunnus(tunnus, nil) or m.tunnus_genetiiville(tunnus)
end
if tunnus then
local ret = m.genetiivi_tunnukselle(tunnus, 1)
if ret then
return ret
end
end
return frame.args.oletus or ""
end
function m.Testi(frame)
return m.nimi(frame.args[1]) .. "<br/>" .. m.lajitteluarvo_nimelle(frame.args[2]) .. "<br/>" .. m.lajitteluarvo_nimelle(m.nimi(frame.args[1]))
end
return m