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