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
muokkaanimi
muokkaanimi(tunnus)
Palauttaa tunnusta vastaavan kielen nimen. Huom. saman asian saa tehtyä mw.language.fetchLanguageName
-funktiolla.
tunnus
muokkaatunnus(nimi)
Palauttaa nimeä vastaavan kielitunnuksen. Huom. saman asian saa tehtyä kieliolion mw.language:getCode
-metodilla.
tunnus_genetiiville
muokkaatunnus_genetiiville(nimi)
Palauttaa nimeä vastaavan kielitunnuksen.
genetiivissa
muokkaagenetiivissa(tunnus)
Palauttaa tunnusta vastaavan kielen genetiivimuodon.
partitiivissa
muokkaapartitiivissa(tunnus)
Palauttaa tunnusta vastaavan kielen partitiivimuodon.
translatiivissa
muokkaatranslatiivissa(tunnus)
Palauttaa tunnusta vastaavan kielen translatiivimuodon.
lajitteluarvo
muokkaalajitteluarvo(tunnus)
Palauttaa tunnusta vastaavan kielen lajitteluarvon, joita vertaamalla tietää kahden kielen välisen järjestyksen.
lajitteluarvo_nimelle
muokkaalajitteluarvo_nimelle(nimi)
Palauttaa nimeä vastaavan kielen lajitteluarvon, joita vertaamalla tietää kahden kielen välisen järjestyksen.
#invokella kutsuttavat funktiot
muokkaaNimi
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