Moduuli:kieliaakkostus

Hei, olet tullut tänne etsimään sanan Moduuli:kieliaakkostus merkitystä. DICTIOUS-sanakirjasta löydät paitsi kaikki sanan Moduuli:kieliaakkostus sanakirjamerkitykset, myös sen etymologian, ominaisuudet ja sen, miten Moduuli:kieliaakkostus sanotaan yksikössä ja monikossa. Kaikki mitä sinun tarvitsee tietää sanasta Moduuli:kieliaakkostus on tässä. Sanan Moduuli:kieliaakkostus määritelmä auttaa sinua olemaan täsmällisempi ja oikeampi puhuessasi tai kirjoittaessasi tekstejäsi. Kun tunnet sananModuuli:kieliaakkostus määritelmän sekä muiden sanojen määritelmät, rikastutat sanavarastoasi ja saat lisää ja parempia kielellisiä resursseja.

Moduulin kieliaakkostus käyttöohje

Vanhentunut, ks. Moduuli:artikkeliaakkostaja.

Aakkostukseen käytettävien merkkijonojen luomiseen.

Käyttö

Kirjastona

local kieliaakkostus = require("Module:kieliaakkostus")

Metodit

lajittelumuotoon(kielikoodi, sana)

Muuttaa sanan kirjaimet niiden lajittelussa käytettäviksi muodoiksi, esim. suomessa wv.

lajittelukirjaimiksi(kielikoodi, sana)

Palauttaa kaksi arvoa. Ensimmäinen on ensimmäiset merkkimäärä merkkiä, toinen on loput. Jos merkkimäärää ei anneta on oletus 2, paitsi arabialle 1 TODO. Lopullinen merkkimäärä riippuu kuitenkin kielestä sivun mukaan. Esim. jos saksankielisen sanan kahdesta ensimmäisestä kirjamesta toinen on ß palautetaan yhteensä kolme merkkiä TODO parempi esim. . Tai esim. unkarinkielinen sanan csomó kohdalla palautetaan cso, mo. Huom. sisältää lajittelumuotoon muuttamisen.
Paluuarvot luetaan ohjelmassa seuraavasti:
local alku, loppu = kieliaakkostus.lajittelukirjaimiksi("džonkki", "fi", 2)

Mallineessa (tai sivulla)

{{#invoke:kieliaakkostus|Lajittelumuotoon|kielikoodi|sana}}

Muuttaa sanan kirjaimet niiden lajittelussa käytettäviksi muodoiksi, esim. suomessa wv.

{{#invoke:kieliaakkostus|Lajittelukirjaimiksi|kielikoodi|sana|n=2}}

Kuin vastaava kirjastofunktio. Parametri n on vapaaehtoinen.

Kielikohtaiset aakkostajat

Seuraaville kielille on määritetty erityinen aakkostaja. Muissa käytetään oletusta.

Testit

oletus

  • KOODI: {{#invoke:kieliaakkostus|Lajittelumuotoon|-|šiæöçké}}
    TULOS: siaeocke
  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi|-|äöåõåáéí|n=4}}
    TULOS: aoao|aaei
  • KOODI: {{#invoke:kieliaakkostus|Lajittelumuotoon|-|абвгдежзийклмнопрстуфхцчшщъыьэюя}}
    TULOS: абвгдежзииклмнопрстуфхцчшщъыьэюя
  • KOODI: {{#invoke:kieliaakkostus|Lajittelumuotoon|-|йѐёѓіїќѝў}}
    TULOS: иеегіікиу
  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi||świat}}
    TULOS: sw|iat

suomi

  • KOODI: {{#invoke:kieliaakkostus|Lajittelumuotoon|fi|watti}}
    TULOS: vatti
  • KOODI: {{#invoke:kieliaakkostus|Lajittelumuotoon|fi|širokko}}
    TULOS: sirokko
  • KOODI: {{#invoke:kieliaakkostus|Lajittelumuotoon|fi|džonkki}}
    TULOS: dzonkki
  • KOODI: {{#invoke:kieliaakkostus|Lajittelumuotoon|fi|rosé}}
    TULOS: rose
  • KOODI: {{#invoke:kieliaakkostus|Lajittelumuotoon|fi|24/7}}
    TULOS: 000
  • KOODI: {{#invoke:kieliaakkostus|Lajittelumuotoon|fi|fdfdfd3}}
    TULOS: fdfdfd0

  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi|fi|watti}}
    TULOS: va|tti
  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi|fi|džonkki}}
    TULOS: dz|onkki
  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi|fi|džonkki|n=4}}
    TULOS: dzon|kki

espanja

  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi|es|ñame}}
    TULOS: ña|me
  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi|es|qué}}
    TULOS: qu|e

viro

  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi|et|üliõpilane}}
    TULOS: ul|iopilane
  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi|et|šokolaad}}
    TULOS: so|kolaad

puola

  • sól, sól

  • sól, só|l
  • dźedźe, dźe|dźe
  • dźdźee, dźdź|ee
  • dźódźó, dźó|dźó
  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi|pl|Władysław}}
    TULOS: wł|adysław
  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi|pl|Przemysław}}
    TULOS: prz|emysław
  • KOODI: {{#invoke:kieliaakkostus|Lajittelukirjaimiksi|pl|świat}}
    TULOS: św|iat

ranska

  • bébé, bebe

  • bébé, be|be
  • cédérom, ce|derom
  • fâcher, fa|cher
  • brûlure, br|ulure
  • fantôme, fa|ntome

saksa

  • ßeße, ssesse

  • ßeße, sse|sse
  • eßeße, ess|esse
  • ßßee, ssss|ee
  • ßßßee, ssss|ssee
  • großartig, gr|ossartig
  • Überraschung, ub|erraschung
  • Ära, ar|a
  • östlich, os|tlich

tšekki

  • cheche, cheche

  • cheche, che|che
  • echee, ech|ee
  • chchee, chch|ee
  • eechch, ee|chch

unkari

  • dzsedzse, dzsedzse

  • dzsedzse, dzse|dzse
  • ágy, agy|
  • csomó, cso|mo

-- yleinen, muuttaa aksentilliset merkit niitä vastaaviksi ascii-merkeiksi
local oletus = {}
function oletus.lajittelumuotoon(isanta, sana)
    return isanta.yksinkertaista_sana(sana, "abcdefghijklmnopqrstuvwxyzабвгдежзиклмнопрстуфхцчшщъыьэюя")
end

function oletus.lajittelukirjaimiksi(isanta, sana, n)
    n = n or 2
    sana = oletus.lajittelumuotoon(isanta, sana)
    return mw.ustring.sub(sana, 1, n), mw.ustring.sub(sana, n+1)
end

--- Palauttaa annetun kielelle käytetyn aakkostajan
-- Jos kielelle on määritetty oma aakkostaja palauttaa sen muuten
-- oletusaakkostajan. Aakkostajat sijaitsevat moduulin alasivuilla.
-- Alasivun nimen tulee olla kielen kielikoodi.
-- @param lang alasivun nimi, jolla aakkostaja on
-- @return     kielelle käytettävä aakkostaja
local function lataa_aakkostaja(lang)
   local aakkostaja
   local stat

   stat, aakkostaja = pcall(require, "Moduuli:kieliaakkostus/" .. lang)

   if stat == false then
      -- Käytetään oletusaakkostajaa
      aakkostaja = oletus
   end

   return aakkostaja
end



-- Oletusmuutokset, ohitetaan kielen omalla yksinkertaista_sana-funktiolle annettavalla funktiolla.
-- Aksentilliset merkit muutetaan automaattisesti aksentittomiksi.
local merkkimuutokset = { 
   = '#', 
   = '#', 
   = '#', 
   = '#', 
   = '#', 
   = '#', 
   = '#', 
   = '#', 
   = '#', 
   = '#', 
   = 'ae', 
   = 'd', 
   = 'o',
   = 'oe',
   = 'n', 
   = 'ss',  
   = 'th',  
}

local m = {}

-- Oletusmuutosfunktio, joka muuttaa annetun merkin kirjainten a-z akstentittomaan muotoon ja merkkimuutokset-taulukon 
-- antamiin muotoihin. Poistaa kaikki muut merkit.
function m.muuta_merkki(mk)
    mk = merkkimuutokset or mk
    -- poistetaan merkistä mahdollisen aksentit ja jäljellä olevasta kaikki muut merkit paitsi kirjaimet
    mk = mw.ustring.toNFD(mk)
    mk = mw.ustring.gsub(mk, "", "")
   return mk
end

-- Parametrit:
--   sana, joka muutetaan, täytyy olla muutettu pieniksi kirjaimiksi
--   aakkosto, ne kirjaimet jotka ovat mukana aakkostuksessa, järjestyksellä ei ole väliä
--   f (valinnainen), kielen oma funktio, joka on muotoa f(merkki) -> merkki/merkkejä, jos 
--     ei annettu, käytetään `isanta.muuta_merkki`ä
function m.yksinkertaista_sana(sana, aakkosto, f)
    local a = 1
    local usana = ''
    
    -- Poistetaan mahdolliset #-merkit, koska numerot muutetaan niiksi.
    -- Muut erikoismerkit poistetaan lopussa.
    sana = mw.ustring.gsub(sana, "#", "")
    
    -- oletusfunktio palauttaa oletustaulukosta arvon
    f = f or m.muuta_merkki
    
    -- etsitään merkit, jotka eivät kuulu aakkostoon ja korvataan ne aakkostoon kuuluvilla
    repeat 
        s, e = mw.ustring.find(sana, "", a)
        if s ~= nil then
            if s == 1 then -- (koska mw.ustring.sub(sana, 1, 0) palauttaa jostain syystä ensimmäisen merkin)
                usana = f(mw.ustring.sub(sana, s, e))
            else
	            usana = usana .. mw.ustring.sub(sana, a, s-1) .. f(mw.ustring.sub(sana, s, e))
            end
	        a = e + 1
	    end	      
    until s == nil
    usana = usana .. mw.ustring.sub(sana, a, #sana)
    return usana
end    

-- Muuttaa annetun tektin lajittelumuotoon eli muuttaa kirjasintyypin pieneksi, poistaa väliviivat 
-- ja muuttaa kirjaimet, jotka lajitellaan toisten kirjanten alle, esim. suomenkielisissä 
-- sanoissa w, š ja ž -> v, s, z.
function m.lajittelumuotoon(kieli, sana)
    local k = mw.language.new(kieli)
    local aakkostaja = lataa_aakkostaja(kieli)
    
    if k then
        sana = k:lc(sana)		-- isot kirjaimet pieniksi
	return aakkostaja.lajittelumuotoon(m, sana)
    end
end


-- Muuttaa annetun tekstin lajittelumuotoon ja palauttaa sanan jaettuna alun n:nen (oletus 2) kirjaimen
-- kohdalta kieliakkostuksen mukaisesti annetulle kielelle. Palauttaa siis kaksi arvoa a, b, jossa a
-- on kirjaimet 1–n ja b n+1–loppuun. N:n lopullinen arvo riippuu kielikohtaisesta aakkostuksesta, esim.
-- parametreilla "csomó", "hu" (unkari), "2" palautetaan "cso|mo".
-- http://fi.wiktionary.orghttps://dictious.com/fi/Wikisanakirja:Sanojen_aakkosellinen_luokittelu
function m.lajittelukirjaimiksi(kieli, sana, n)
    local k = mw.language.new(kieli)
    local aakkostaja = lataa_aakkostaja(kieli)
    
    if k then
	    sana = k:lc(sana)		-- isot kirjaimet pieniksi
	    return aakkostaja.lajittelukirjaimiksi(m, sana, n)
    end
end

-- Muuttaa `sanan` sellaiseen muotoon, että kahden muutetun sanan aakkosjärjestyksen 
-- voi todeta <, > -operaattoreilla.
function m.vertailumuotoon(kieli, sana)
    local aakkostaja = lataa_aakkostaja(kieli)
    if aakkostaja.vertailumuotoon then
	    return aakkostaja.vertailumuotoon(m, sana)
    end
    return nil
end

-- Parametrit:
--  1. teksti
--  2. kielikoodi
function m.Lajittelumuotoon(frame)
    return m.lajittelukirjaimiksi(frame.args, frame.args)
end

-- Parametrit:
--  1. teksti
--  2. kielikoodi
--- n  alkukirjainten määrä
function m.Lajittelukirjaimiksi(frame)
	if mw.ustring.sub(frame.args, 1, 1) == 'q' and frame.args.n == 2 then
		frame.args.n = 1
	end
    a, b = m.lajittelukirjaimiksi(frame.args, frame.args, tonumber(frame.args.n))
    return a .. "|" .. b
end

return m