Wikislovník skwiktionary https://sk.wiktionary.org/wiki/Wikislovn%C3%ADk:Hlavn%C3%A1_str%C3%A1nka MediaWiki 1.47.0-wmf.21 case-sensitive Médiá Špeciálne Diskusia Používateľ Diskusia s používateľom Wikislovník Diskusia k Wikislovníku Súbor Diskusia k súboru MediaWiki Diskusia k MediaWiki Šablóna Diskusia k šablóne Pomoc Diskusia k pomoci Kategória Diskusia ku kategórii Príloha Diskusia k prílohe TimedText TimedText talk Modul Diskusia k modulu Podujatie Diskusia k podujatiu jednička 0 2471 197616 193874 2026-09-28T16:36:24Z TomášPolonec 3256 preklepy 197616 wikitext text/x-wiki == Slovenčina == === Podstatné meno === * ''rod ženský'' ==== Skloňovanie ==== {{Podstatné meno (sk) | snom = jednička | sgen = jedničky | sdat = jedničke | saku = jedničku | slok = jedničke | sinš = jedničkou | pnom = jedničky | pgen = jedničiek | pdat = jedničkám | paku = jedničky | plok = jedničkách | pinš = jedničkami }} ==== Význam ==== # ''nesprávny variant slova'' {{Odkaz|sk|jednotka}} ==== Príbuzné slová ==== * [[jedničkár]] ==== Preklady ==== {{Preklady|význam=číslica|preklady= {{P|cs|jednička|ž}} {{P|da|één|ž}}, {{P2|da|ene|m}} {{P|eo|unu}} {{P|fi|ykkönen}} {{P|fr|un|m}} {{P|de|Eins|ž}} {{P|ia|uno}} {{P|it|uno|m}} {{P|pl|jedynka|ž}} {{P|pt|um|m}} {{P|ro|unu|m}} {{P|ru|единица|ž}} {{P|sv|etta}} }} == Čeština == === Podstatné meno === * ''rod ženský'' ==== Skloňovanie ==== {{Podstatné meno (cs) | snom = jednička | sgen = jedničky | sdat = jedničce | saku = jedničku | svok = jedničko | slok = jedničce | sinš = jedničkou | pnom = jedničky | pgen = jedniček | pdat = jedničkám | paku = jedničky | pvok = jedničky | plok = jedničkách | pinš = jedničkami }} ==== Význam ==== # [[jednotka]] (číslo, číslica) ==== Príbuzné slová ==== * [[jedničkový]] * [[jedničkář]] [[Kategória:Slovenské podstatné mená]] [[Kategória:České podstatné mená]] 82atplofh0lu76l0lwmo4gr2gar66rc toreador 0 21124 197618 117232 2026-09-28T16:50:50Z Ulla Bille 7783 /* Preklady */ +hu 197618 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{IPA|tɔrɛadɔr}} === Podstatné meno === * ''rod mužský'' ==== Skloňovanie ==== {{Podstatné meno (sk) | snom = toreador | sgen = toreadora | sdat = toreadorovi | saku = toreadora | slok = toreadorovi | sinš = toreadorom | pnom = toreadori | pgen = toreadorov | pdat = toreadorom | paku = toreadorov | plok = toreadoroch | pinš = toreadormi }} ==== Význam ==== # [[zápasník]] [[s]] [[býk]]mi ==== Príbuzné slová ==== * [[toreadorský]] ==== Preklady ==== {{Preklady|význam=|preklady= {{P|en|bullfighter}} {{P|fr|torero}} {{P|hu|torreádor}} {{P|de|Toreador}} }} [[Kategória:Slovenské podstatné mená]] m5iioaonp64vfbwfht6d1izxx0w4zjc trombóza 0 29929 197619 136444 2026-09-28T16:54:17Z Ulla Bille 7783 /* Preklady */ +hu 197619 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{IPA|trɔmbɔːza}} === Podstatné meno === * ''rod ženský'' ==== Skloňovanie ==== {{Podstatné meno (sk) | snom = trombóza | sgen = trombózy | sdat = trombóze | saku = trombózu | slok = trombóze | sinš = trombózou | pnom = trombózy | pgen = trombóz | pdat = trombózam | paku = trombózy | plok = trombózach | pinš = trombózami }} ==== Význam ==== # [[upchatie]] [[žila|žily]] [[tromb]]om ==== Preklady ==== {{Preklady|význam=|preklady= {{P|en|thrombosis}} {{P|cs|trombóza|ž}} {{P|fr|thrombose}} {{P|hu|trombózis}} {{P|ru|тромбоз}} }} [[Kategória:Slovenské podstatné mená]] jnfjlf1op9b13pc02b5vzj1xotrts7p algoritmus 0 46931 197605 190523 2026-09-28T15:27:29Z JanSuchy 1859 /* Preklady */ +pl|algorytm|m, ru|алгоритм|m, sv|algoritm|c 197605 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{IPA|algɔrɪtmʊs}} === Delenie === * al-go-rit-mus === Etymológia === Polatinčením slova al-Chorezmí, mena perzského matematika, astronóma a geografa [[w:Muhammad al-Chorezmí|Muhammada al-Chorezmího]].<ref name="Znám1" group="sk">[[w:Štefan Znám|ZNÁM, Štefan]] a kol.. Pohľad do dejín matematiky. 1. vyd. Bratislava : [[w:Alfa (vydavateľstvo)|Alfa]], 1986. S. 91.</ref> === Podstatné meno === * ''rod mužský neživotný'' ==== Skloňovanie ==== {{Podstatné meno (sk) | snom = algoritmus | sgen = algoritmu | sdat = algoritmu | saku = algoritmus | slok = algoritme | sinš = algoritmom | pnom = algoritmy | pgen = algoritmov | pdat = algoritmom | paku = algoritmy | plok = algoritmoch | pinš = algoritmami }} ==== Význam ==== # {{Príznaky|sk|odb.}} [[postupnosť]] [[presne]] [[definovaný]]ch [[inštrukcia|inštrukcií]] [[na]] [[splnenie]] [[určitý|určitej]] [[úloha|úlohy]] #* {{Príklad|sk|Iste, ideálne by bolo, keby existoval algoritmus, ktorý by umožňoval pre ľubovoľný iný algoritmus rozhodnúť, či sa jeho výpočet vždy skončí. A je dokázané, že takýto algoritmus neexistuje.}}<ref name="Znám2" group="sk">[[w:Štefan Znám|ZNÁM, Štefan]] a kol.. Pohľad do dejín matematiky. 1. vyd. Bratislava : [[w:Alfa (vydavateľstvo)|Alfa]], 1986. S. 215.</ref> ==== Príbuzné slová ==== * [[algoritmicky]] * [[algoritmický]] * [[algoritmickosť]] * [[algoritmizácia]] * [[algoritmizovať]] ==== Preklady ==== {{Preklady|význam=|preklady= {{P|en|algorithm}} {{P|cs|algoritmus|m}} {{P|de|Algorithmus|m}} {{P|pl|algorytm|m}} {{P|ru|алгоритм|m}} {{P|es|algoritmo|m}} {{P|sv|algoritm|c}} }} ==== Referencie ==== <references group="sk" /> === Externé odkazy === {{Projekt|w=Algoritmus|commons=Category:Algorithms}} * {{JÚĽŠ|algoritmus|2025-10-11}} == Čeština == === Výslovnosť === * {{IPA|algɔrɪtmʊs}} === Delenie === * al-go-rit-mus === Podstatné meno === * ''rod mužský neživotný'' ==== Skloňovanie ==== {{Podstatné meno (cs) | snom = algoritmus | sgen = algoritmu | sdat = algoritmu | saku = algoritmus | svok = algoritme | slok = algoritmu | sinš = algoritmem | pnom = algoritmy | pgen = algoritmů | pdat = algoritmům | paku = algoritmy | pvok = algoritmy | plok = algoritmech | pinš = algoritmy }} ==== Význam ==== # [[algoritmus#Slovenčina|algoritmus]] === Externé odkazy === * {{IJP|algoritmus|2025-10-11}} [[Kategória:Slovenské podstatné mená]] [[Kategória:České podstatné mená]] tpzucwab7d2llr3am2ka2fjqu3od6y5 Modul:sk-pron 828 48355 197606 196847 2026-09-28T16:31:36Z TomášPolonec 3256 mäkký lokál 197606 Scribunto text/plain local export = {} -- ============================================================================= -- [[ DATA TABLES ]] -- ============================================================================= -- [[ 1. Phonological Sets ]] -- local diphthongs_set = { ["ia"]=true, ["ie"]=true, ["iu"]=true, ["ô"]=true } local bigraphs_set = { ["ch"]=true, ["dz"]=true, ["dž"]=true } -- Combined Vowels (Short & Long + Foreign) local vowels_set = { ["a"]=true, ["e"]=true, ["i"]=true, ["o"]=true, ["u"]=true, ["y"]=true, ["ä"]=true, ["ö"]=true, ["ü"]=true, ["á"]=true, ["é"]=true, ["í"]=true, ["ó"]=true, ["ú"]=true, ["ý"]=true, ["ő"]=true, ["ű"]=true } local soft = {['d']='ď',['t']='ť',['n']='ň',['l']='ľ'} -- Voicing & Sonorants local sonorants = { ['m']=true, ['n']=true, ['ň']=true, ['l']=true, ['ľ']=true, ['ĺ']=true, ['r']=true, ['ŕ']=true, ['j']=true, ['v']=true } local voiced_paired = { ['b']=true, ['d']=true, ['ď']=true, ['g']=true, ['dz']=true, ['dž']=true, ['h']=true, ['z']=true, ['ž']=true, ['w']=true } local voiceless_paired = { ['p']=true, ['t']=true, ['ť']=true, ['k']=true, ['c']=true, ['č']=true, ['ch']=true, ['s']=true, ['š']=true, ['f']=true } local voicing_map = { -- Voiced to Voiceless ['b']='p', ['d']='t', ['ď']='ť', ['g']='k', ['dz']='c', ['dž']='č', ['h']='ch', ['w']='f', ['z']='s', ['ž']='š', -- Voiceless to Voiced ['p']='b', ['t']='d', ['ť']='ď', ['k']='g', ['c']='dz', ['č']='dž', ['ch']='h', ['f']='w', ['s']='z', ['š']='ž' } -- [[ 2. Assimilation & Encoding ]] -- local dental_mergers = { ['z']='dzdz', ['dz']='dzdz', ['s']='cc', ['c']='cc', ['ž']='dždž', ['dž']='dždž', ['š']='čč', ['č']='čč' } -- Mergers: Encodes t.s -> 15, d.z -> 26, etc. local c1_enc = {['t']=1, ['d']=2, ['ť']=3, ['ď']=4} local c2_enc = { ['c']=1, ['dz']=2, ['č']=3, ['dž']=4, ['s']=5, ['z']=6, ['š']=7, ['ž']=8 } -- Decoding: Used by IPA renderer to convert "15" -> t.ts local c1_dec = { 't', 'd', 'c', 'ɟ' } local c2_dec = { 't͡s', 'd͡z', 't͡ʃ', 'd͡ʒ', 's', 'z', 'ʃ', 'ʒ' } -- [[ 3. Morphological & Lexical Exceptions ]] -- local prefixes = { ['pod']=true, ['ob']=true, ['od']=true, ['ráz']=true, ['roz']=true, ['bez']=true, ['ab']=true, ['vz']=true, ['pred']=true, ['nad']=true } local prepositions_set = { ["bez"]=true, ["cez"]=true, ["do"]=true, ["k"]=true, ["ku"]=true, ["na"]=true, ["nad"]=true, ["o"]=true, ["od"]=true, ["po"]=true, ["pod"]=true, ["pre"]=true, ["pred"]=true, ["pri"]=true, ["s"]=true, ["so"]=true, ["u"]=true, ["v"]=true, ["vo"]=true, ["z"]=true, ["za"]=true, ["zo"]=true } local clitics = { ["byť"]=true, ["som"]=true, ["si"]=true, ["je"]=true, ["sme"]=true, ["ste"]=true, ["sú"]=true, ["bol"]=true, ["mi"]=true, ["ti"]=true, ["mu"]=true, ["jej"]=true, ["ma"]=true, ["ťa"]=true, ["sa"]=true, ["ho"]=true, ["ju"]=true, ["nám"]=true, ["vám"]=true, ["im"]=true, ["nás"]=true, ["vás"]=true, ["ich"]=true, ["ten"]=true, ["tá"]=true, ["to"]=true, ["on"]=true, ["a"]=true, ["i"]=true, ["aj"]=true, ["že"]=true, ["keď"]=true, ["až"]=true, ["len"]=true, ["či"]=true, ["kde"]=true, ["ba"]=true, ["ak"]=true, ["už"]=true, ["by"]=true } local preposition_blockers = { ['mnou']=true, ['mne']=true, ['tebou']=true, ['ňou']=true, ['ním']=true, ['nami']=true, ['vami']=true, ['nimi']=true, ['tebe']=true, ['nemu']=true, ['nej']=true, ['nám']=true, ['vám']=true, ['nim']=true } -- [[ 4. IPA Output Maps ]] -- local ipa_map = { -- Vowels ['a']='a', ['á']='aː', ['ä']='æ', ['e']='e', ['é']='eː', ['i']='i', ['í']='iː', ['o']='ɔ', ['ó']='ɔː', ['ô']='u̯ɔ', ['u']='u', ['ú']='uː', ['y']='i', ['ý']='iː', ['ö']='ø', ['ő']='øː', ['ü']='y', ['ű']='yː', -- Consonants ['b']='b', ['c']='t͡s', ['č']='t͡ʃ', ['d']='d', ['ď']='ɟ', ['g']='ɡ', ['h']='ɦ', ['j']='j', ['k']='k', ['l']='l', ['ľ']='ʎ', ['m']='m', ['n']='n', ['ň']='ɲ', ['p']='p', ['r']='r', ['ř']='r̝', ['ŕ']='r̩ː', ['ĺ']='l̩ː', ['s']='s', ['š']='ʃ', ['t']='t', ['ť']='c', ['z']='z', ['ž']='ʒ', ['x']='x', -- Special ['v']='v', ['w']='w', ['F']='F', ['f']='f', ['ů']='ů', ["'"]='ˈ', -- Digraphs/Multigraphs ['dz']='d͡z', ['dž']='d͡ʒ', ['ch']='x', ['dzdz']='d͡zː', ['dždž']='d͡ʒː', ['ia']='ɪ̯a', ['ie']='ɪ̯e', ['iu']='ɪ̯u' } local variant_map = { ["H"]={"ɣ","ɦ"}, ["W"]={"ʋ","v"}, ["U"]={"u̯","ʋ"}, ["J"]={"ɪ̯","j"}, ["N"]={"n","n̠"} } -- Module-level state variables local IS_MO_VARIANT = false local NAMESPACE = "" local PAGENAME = "" local LOAN = 0 local HARD_SUFFIX = 0 local SOFT_SUFFIX = 0 local AS_IMP = 0 -- ============================================================================= -- [[ HELPER FUNCTIONS ]] -- ============================================================================= function get_voiced_counterpart(char) return voicing_map[char] end -- Tokenizer (Preserves digraphs) function get_graphemes(word) local units = {} local len = mw.ustring.len(word) local i = 1 local is_loan = (LOAN == 1) while i <= len do local two_char = mw.ustring.sub(word, i, i + 1) if bigraphs_set[two_char] or (diphthongs_set[two_char] and not is_loan) then table.insert(units, two_char) i = i + 2 else table.insert(units, mw.ustring.sub(word, i, i)) i = i + 1 end end return units end -- Resolve Cluster (Contact Assimilation Logic) function resolve_cluster(c1, c2, is_boundary) -- GUARD: v/f complex logic if c1 == 'v' or c1 == 'f' then return nil end -- 1. SPECIAL: <h> or <ch> logic if c1 == 'ch' or c1 == 'h' then if (voiced_paired[c2] or sonorants[c2]) and is_boundary then return 'H' .. c2 end end -- 2. Standard Assimilation local c1_new = c1 if (voiceless_paired[c1] and (voiced_paired[c2] or (is_boundary and (sonorants[c2] or vowels_set[c2])))) or (voiced_paired[c1] and voiceless_paired[c2]) then c1_new = voicing_map[c1] or c1 end -- 3. Mergers & Gemination if c1_enc[c1_new] and dental_mergers[c2] then if is_boundary then local d1, d2 = c1_enc[c1_new], c2_enc[c2] if d1 and d2 then return d1 .. d2 end end return dental_mergers[c2] end if c1_new ~= c1 then return c1_new .. c2 end return nil end function apply_assimilation(tokens, i, j, is_boundary) if IS_MO_VARIANT and i == #tokens - 3 then return end local res = resolve_cluster(tokens[i], tokens[j], is_boundary) if res then local res_tokens = get_graphemes(res) if #res_tokens == 2 then tokens[i] = res_tokens[1]; tokens[j] = res_tokens[2] elseif #res_tokens == 1 then tokens[i] = res_tokens[1]; tokens[j] = "" end end end local function check_vowel(units, i, d, len) while i > 0 and i <= len do local t = units[i] if vowels_set[t] or diphthongs_set[t] then return true end if t ~= "'" and t ~= "-" and t ~= " " and t ~= "_" then return false end i = i + d end return false end function split_into_syllables(word) local units = get_graphemes(word) local nuc, syl, len = {}, {}, #units -- Helper: Check if index k is a Nucleus local function is_nuc(k) local u = units[k]; if not u then return false end if diphthongs_set[u] or vowels_set[u] then return true end if not (u == 'r' or u == 'l' or u == 'ŕ' or u == 'ĺ') then return false end return not (check_vowel(units, k-1, -1, len) or check_vowel(units, k+1, 1, len)) end for i = 1, len do if is_nuc(i) then table.insert(nuc, i) end end if #nuc == 0 then return {table.concat(units)} end local start = 1 for k = 1, #nuc - 1 do local curr, next_n = nuc[k], nuc[k+1] local split = curr -- Default: Split after vowel (V-CV) local c_cnt, first_c = 0, nil for j = curr + 1, next_n - 1 do local c = units[j] if c == "-" or c == " " then split = j; c_cnt = -1; break -- 1. Hard Boundary elseif c == "'" then split = j - 1; c_cnt = -1; break -- 2. Stress Boundary elseif c ~= "." then c_cnt = c_cnt + 1; first_c = first_c or j end end if c_cnt >= 2 then split = first_c end -- 3. Cluster Rule (VC-CV) table.insert(syl, table.concat(units, "", start, split)) start = split + 1 end table.insert(syl, table.concat(units, "", start)) return syl end -- [[ Core IPA Transformation Logic ]] -- local function ipa_transform_worker(word) -- 1. Preprocess: Strip punctuation but map boundaries local bound, idx = {}, 0 word = mw.ustring.gsub(word, ".", function(c) if c == "-" or c == "." then bound[idx] = true; return "" end idx = idx + 1 end) -- Returns cleaned word, populates 'bound' local sub = mw.ustring.sub local w_len, res, i = idx, {}, 1 local function is_C(c) return not c or c == "" or (not vowels_set[c] and not diphthongs_set[c]) end while i <= w_len do local c1 = sub(word, i, i) if c1 == "+" then i = i + 1 else local nxt = sub(word, i+1, i+1) local c2_raw = (nxt == "+") and sub(word, i+2, i+2) or nxt local c2, c4 = c1 .. c2_raw, sub(word, i, i+3) local jump = (nxt == "+") and 1 or 0 local sym, step, raw = nil, 1, c1 if c4 == "dzdz" or c4 == "dždž" then sym, step, raw = ipa_map[c4], 4, c4 elseif (c1 == c2_raw or c2 == "čš") and ipa_map[c1] and not vowels_set[c1] then sym, step, raw = ipa_map[c1] .. "ː", 2 + jump, c1 elseif (ipa_map[c2] and not diphthongs_set[c2]) or (diphthongs_set[c2] and (LOAN~=1 or jump>0) and not bound[i]) then sym, step, raw = ipa_map[c2], 2 + jump, c2 -- treat as diphthong only if native or explicitly marked with + else sym = ipa_map[c1] or c1 end if sym then if (raw=='r' or raw=='l') and is_C(i>1 and sub(word,i-1,i-1)) and is_C(sub(word,i+step,i+step)) then sym = sym .. '̩' -- mark liquid as syllabic if sandwiched between non-vowels end table.insert(res, sym) end i = i + step end end local out = table.concat(res) -- Post-processing for loanword endings (-ovan-) if LOAN == 1 then local sfx = mw.ustring.match(word, ".*ovan(.+)$") if sfx then local m = ipa_map local fix = { ["ie"]=m["ie"], ["ia"]=m["ia"], ["iu"]=m["iu"], ["í"]=m["í"], ["ím"]=m["í"]..(m["m"] or 'm'), ["iam"]=m["ia"]..(m["m"] or 'm'), ["iach"]=m["ia"]..(m["x"] or 'x'), ["iami"]=m["ia"]..(m["m"] or 'm')..(m["i"] or 'i') } if fix[sfx] then local bad = (m["n"] or 'n') .. sfx:gsub(".", function(c) return m[c] or c end) out = mw.ustring.gsub(out, bad:gsub("[%p]", "%%%0") .. "$", (m['ň'] or 'ɲ') .. fix[sfx]) -- correct [n] to [ň] before soft vowels in loan suffixes end end end return out end -- [[ 2. STAGE 2: PHONETIC RESOLVER ]] -- function resolve_phonetic_base(base_text) local res = {} local len = mw.ustring.len(base_text) local i = 1 -- Map for standard phonetic realization local map = { ['v']='ʋ', ['w']='v', ['F']='v', ['f']='f', ['ů']='u̯', ['I']='ɪ̯' } local sub = mw.ustring.sub -- Local ref while i <= len do local c = sub(base_text, i, i) local symbol = map[c] or c local next_c = (i < len) and sub(base_text, i+1, i+1) or "" local next_resolved = map[next_c] or next_c -- Apply FULL Nasal Assimilation if c == 'm' then if next_resolved == 'f' or next_resolved == 'v' or next_resolved == 'ʋ' then symbol = 'ɱ' end elseif c == 'n' then if next_resolved == 'k' or next_resolved == 'ɡ' then symbol = 'ŋ' elseif next_resolved == 's' or next_resolved == 'z' or next_resolved == 'ʃ' or next_resolved == 'ʒ' then symbol = 'N' elseif next_resolved == 'x' then symbol = 'ɰ̃' elseif next_resolved == 'p' or next_resolved == 'b' then symbol = 'm' end end table.insert(res, symbol) i = i + 1 end return table.concat(res) end -- [[ 3. FINAL GENERATION ]] -- local function expand_variants(txt) local find, sub, gsub = mw.ustring.find, mw.ustring.sub, mw.ustring.gsub -- 1. Digits: Binary Branch (All-Split vs All-Merged) if find(txt, "%d[ˈ%s_]*%d") then local res = {} for m = 1, 2 do local s = gsub(txt, "(%d)([ˈ%s_]*)(%d)", function(d1, sep, d2) d1, d2 = tonumber(d1), tonumber(d2) if m == 1 then -- Split (Unassimilated) local f = ((d1+d2)%2==1) and (d1 + (d2%2==0 and 1 or -1)) or d1 return (c1_dec[f] or "") .. sep .. (c2_dec[d2] or "") else -- Merged (Assimilated) local c = c2_dec[d2>4 and d2-4 or d2] or "" -- If stressed: Unreleased + Short (t̚ ˈt͡s). If not: Long (t͡sː) return find(sep, "ˈ") and (sub(c,1,1).."̚ ˈ"..c) or (c.."ː") end end) for _, v in ipairs(expand_variants(s)) do table.insert(res, v) end end return res end -- 2. Letters: Recursive Expansion (HWUJN) local s, e, k = find(txt, "([HWUJN])") if not s then return {txt} end -- Base case local res, h, t = {}, sub(txt, 1, s-1), sub(txt, e+1) for _, r in ipairs(variant_map[k]) do for _, sub in ipairs(expand_variants(h..r..t)) do table.insert(res, sub) end end return res end local function format_ipa_output(res) local distinct = table.concat(res.high) ~= table.concat(res.low) local out = {} -- Base prefix with the hardcoded link and phonemic output table.insert(out, "* [[:w:Medzinárodná fonetická abeceda|IPA]]: /" .. res.phonemic .. "/") local function add(list, tag) for i, ipa in ipairs(list) do local labels = {} -- Add primary register label if distinct and tag and i == 1 then table.insert(labels, tag) end -- Add rare label if applicable if mw.ustring.find(ipa, "ɦ ?ˈ?ɦ") then table.insert(labels, "ojedinele") end local label_str = "" if #labels > 0 then label_str = "(''" .. table.concat(labels, ", ") .. "'') " end table.insert(out, label_str .. "[" .. ipa .. "]") end end add(res.high, "vyšší štýl") if distinct then add(res.low, "bežne") end -- Concatenate everything with comma-spaces matching the screenshot style return table.concat(out, ", ") end -- ============================================================================= -- [[ PROCESSING STEPS ]] -- ============================================================================= function step_foreign_graphemes(word) word = mw.ustring.lower(word) word = mw.ustring.gsub(word, "ů", "ú") word = mw.ustring.gsub(word, "x", "ks") word = mw.ustring.gsub(word, "w", "v") word = mw.ustring.gsub(word, "qu", "kv") word = mw.ustring.gsub(word, "[,']", "") return word end local function is_empty_or_space(w, k) local x = mw.ustring.sub(w, k, k) return x == "" or x == " " end function step_softening(w) if LOAN == 1 then if SOFT_SUFFIX == 1 then local c = string.sub(w, -2, -2) return string.sub(w, 1, -3) .. (soft[c] or c) .. string.sub(w, -1) end return w end local sub = mw.ustring.sub local res, len = {}, mw.ustring.len(w) for i = 1, len do local c = sub(w, i, i) local s = false if soft[c] then local n1 = sub(w, i+1, i+1) local n2 = sub(w, i+1, i+2) if n2 == "ia" or n2 == "ie" or n2 == "iu" then s = true elseif n1 == "i" or n1 == "í" or n1 == "e" then s = true if HARD_SUFFIX == 1 then local n3 = sub(w, i+1, i+3) if (n1 == "i" or n1 == "í" or n1 == "e") and is_empty_or_space(w, i+2) then s = false elseif n2 == "ej" and is_empty_or_space(w, i+3) then s = false elseif (n3 == "eho" or n3 == "emu") and is_empty_or_space(w, i+4) then s = false end end end end table.insert(res, s and soft[c] or c) end return table.concat(res) end function step_prosody(word) -- 1. Merge Prepositions word = mw.ustring.gsub(word, "%f[%a](%a+) +", function(w) return prepositions_set[mw.ustring.lower(w)] and (w .. "_") or nil end) -- 2. Add Stress return mw.ustring.gsub(word, "%S+", function(w) local raw = mw.ustring.lower(mw.ustring.gsub(w, "_", "")) -- Exclusions: Clitics OR Starts with hyphen OR Single letter OR No syllabic nucleus if clitics[raw] or mw.ustring.sub(w, 1, 1) == "-" or mw.ustring.sub(w, -1) == "-" or mw.ustring.len(w) == 1 or not mw.ustring.find(raw, "[aáäeéiíoóuúyýöőüűôrŕlĺ]") then return w end return "'" .. w end) end function step_simplification(word) local patterns = { "s[tť]s[tk]", "[pd][tz]sk", "[tďdz]st", "[ztd]šť", "[zdt]sk", "ptč" } local function resolve(w) local c1 = mw.ustring.sub(w, 1, 1) if c1 == "s" then return c1 .. mw.ustring.sub(w, 4) elseif c1 == "p" then return c1 .. mw.ustring.sub(w, 3) else w = mw.ustring.gsub(w, "z", "") if mw.ustring.len(w) <= 2 then return w end local c2 = mw.ustring.sub(w, 2, 2) local head = (c2 == "s") and "c" or "č" return head .. mw.ustring.sub(w, 3) end end for _, pat in ipairs(patterns) do word = mw.ustring.gsub(word, pat, resolve) end return word end function step_assimilation(word) -- [[ 1. Pre-processing & Morphological Exceptions ]] -- word = mw.ustring.gsub(word, "('[nv]ášmu)(%f[%A])", function(match) return mw.ustring.gsub(match, "š", "ž") end) -- 2. sme -> zme (Only if surrounded by boundaries) if mw.ustring.find(word, "sme") then word = mw.ustring.gsub(mw.ustring.gsub(word, "^sme$", "zme"), "^sme(%s)", "zme%1") word = mw.ustring.gsub(mw.ustring.gsub(word, "(%s)sme$", "%1zme"), "(%s)sme(%s)", "%1zme%2") end -- A. Prefix "eks-" (eks- + vowel/voiced -> egz-) local v_set = "[aeiouyáéíóúýäôglmnňrjvzhdbžg]" word = mw.ustring.gsub(word, "^('?)eks("..v_set..")", "%1egz%2") word = mw.ustring.gsub(word, "([%s_])('?)eks("..v_set..")", "%1%2egz%3") word = mw.ustring.gsub(word, "^('?)dis("..v_set..")", "%1diz%2") word = mw.ustring.gsub(word, "([%s_])('?)dis("..v_set..")", "%1%diz%3") -- B. Preposition Vocalization (so/ku -> zo/gu) word = mw.ustring.gsub(word, "([%s'])([sk][ou])(_)([^%s%._]+)", function(before, prep, sep, next_w) if not preposition_blockers[next_w] then local voiced = (prep == "so") and "zo" or "gu" return before .. voiced .. sep .. next_w end end) -- C. Imperative Suffix "-me" (Voice preceding consonant) if AS_IMP == 1 then word = mw.ustring.gsub(word, "([ptsťkfcčš])me", function(c) return (voicing_map[c] or c) .. "me" end) end -- [[ 2. Main Assimilation Logic ]] -- local tokens = get_graphemes(word) local len = #tokens local str = table.concat(tokens) -- Check for "-mo" variant trigger if mw.ustring.find(word, "[ptsčškcfx]%.mo%f[%A]") or mw.ustring.find(word, "ch%.mo%f[%A]") then IS_MO_VARIANT = true end -- Helpers local function prev_C(k) while k >= 1 do local t = tokens[k]; if t ~= "'" and t ~= "_" and t ~= " " and t ~= "-" and t ~= "." then return k end k = k - 1 end end local function is_bound(k) return k < 1 or k > len or tokens[k] == " " or tokens[k] == "_" or tokens[k] == "-" end local function prev_bound(k) local l, idx = 0, k - 1 while idx - l >= 1 do local t = tokens[idx - l] if t == "'" or t == "_" or t == " " or t == "-" then break end l = l + 1 end return l end local function match_prefix(start_idx, end_idx) local diff = end_idx - start_idx + 1 if diff == 2 then return prefixes[tokens[start_idx] .. tokens[start_idx+1]] elseif diff == 3 then return prefixes[tokens[start_idx] .. tokens[start_idx+1] .. tokens[start_idx+2]] elseif diff == 4 then return prefixes[tokens[start_idx] .. tokens[start_idx+1] .. tokens[start_idx+2] .. tokens[start_idx+3]] end return false end local simple = not mw.ustring.find(str, "[ %-_]") local w_offset = (simple and tokens[1] == "'") and 1 or 0 -- p_len = Exact count of characters before 'i' local p_len = simple and (len - w_offset - 1) or prev_bound(len) -- Reverse Loop (Regressive Assimilation) for i = len, 2, -1 do -- Reset state if we crossed a word boundary if not simple and is_bound(i+1) then p_len = prev_bound(i) end local is_prefix = false -- A. Prefix Check if p_len >= 2 and p_len <= 4 then if match_prefix(i - p_len, i - 1) then apply_assimilation(tokens, i - 1, i, true) is_prefix = true end end -- B. General Assimilation (If not prefix) if not is_prefix then local tgt = prev_C(i-1) if tgt then local is_opt = false for k = tgt + 1, i - 1 do if tokens[k] == " " or tokens[k] == "-" or tokens[k] == "_" then is_opt = true; break end end -- Handles both Devoicing (standard) and Voicing (at boundaries) apply_assimilation(tokens, tgt, i, is_opt) end end p_len = p_len - 1 end return table.concat(tokens) end local function is_nuc(c) return vowels_set[c] or diphthongs_set[c] or c == 'r' or c == 'l' or c == 'ŕ' or c == 'ĺ' end function step_v_f_j_realization(word) word = mw.ustring.gsub(mw.ustring.gsub(word, "anje[lľ]", "aňɪ̯el"), "_", "") word = mw.ustring.gsub(mw.ustring.gsub(word, "%+u", "ů"), "%+i", "I") local syllables = split_into_syllables(word) local res_syls = {} local clean_chars = {} local char_map = {} local idx = 1 for s_i, syl in ipairs(syllables) do char_map[s_i] = {} for c_i = 1, mw.ustring.len(syl) do local c = mw.ustring.sub(syl, c_i, c_i) if c ~= "'" and c ~= "." and c ~= "-" then clean_chars[idx] = c char_map[s_i][c_i] = idx idx = idx + 1 end end end for s_i, syl in ipairs(syllables) do local s_len, res = mw.ustring.len(syl), {} local nuc_i = nil for k = 1, s_len do if is_nuc(mw.ustring.sub(syl, k, k)) then nuc_i = k; break end end for c_i = 1, s_len do local c = mw.ustring.sub(syl, c_i, c_i) local out = c if c ~= "'" and c ~= "." and c ~= "-" then local flat_idx = char_map[s_i][c_i] local prev = clean_chars[flat_idx - 1] local nxt = clean_chars[flat_idx + 1] local after_nxt = clean_chars[flat_idx + 2] -- 2. DETECT POSITIONS (Ignore ' and .) local is_onset = (mw.ustring.gsub(mw.ustring.sub(syl, 1, c_i-1), "['%.%-]", "") == "") local is_coda = nuc_i and (c_i > nuc_i) if c == 'u' then if prev == 'o' and (not nxt or nxt == ' ') then out = "ů" end elseif c == 'v' then if is_coda and prev and is_nuc(prev) then local is_u_prev = (prev == 'u' or prev == 'ú') local is_amb_next = (nxt and (nxt == 'n' or nxt == 'ň' or nxt == 'l' or nxt == 'ľ' or nxt == 'r')) out = (is_u_prev or is_amb_next) and "U" or "ů" else local prev_nuc = false if s_i > 1 then prev_nuc = prev and is_nuc(prev) or false end local next_is_vn = (nxt and (nxt == 'n' or nxt == 'ň')) if is_onset and (s_i == 1 or prev_nuc) and next_is_vn then out = "W" else local next_is_z = (nxt == 'z') local after_z = next_is_z and after_nxt local vz_unv = (next_is_z and after_z and voiceless_paired[after_z]) if vz_unv or (nxt and voiceless_paired[nxt]) then out = "f" elseif nxt and voiced_paired[nxt] and not sonorants[nxt] then out = "w" else out = "v" end end end elseif c == 'f' then if is_coda and nxt and (voiced_paired[nxt] or sonorants[nxt]) then out = "F" end elseif c == 'j' then local prev_is_iy = (prev == 'i' or prev == 'í' or prev == 'y' or prev == 'ý') if is_onset then out = "j" elseif not vowels_set[prev] or prev_is_iy then out = "J" else out = "I" end end end table.insert(res, out) end table.insert(res_syls, table.concat(res)) end return table.concat(res_syls) end function step_final_devoicing(word) local tokens = get_graphemes(word) local i = #tokens while i > 0 do local c = tokens[i] if voiced_paired[c] then tokens[i] = voicing_map[c]; i = i - 1 elseif voiceless_paired[c] then i = i - 1 else break end end return table.concat(tokens) end function generate_all_transcriptions(word, original_word) local gsub = mw.ustring.gsub -- A. Base IPA local base_ipa = ipa_transform_worker(word) -- B. Phonemic local phonemic = gsub(gsub(base_ipa, "ˈ", ""), "[vwFůWU]", "v") phonemic = gsub(gsub(phonemic, "J", "j"), "H", "ɦ") phonemic = gsub(gsub(phonemic, "ä", "æ"), "ľ", "ʎ") phonemic = gsub(phonemic, "I", "j") -- Decode Dental Clusters phonemic = gsub(phonemic, "(%d['%s_]*%d)", function(k) local d1, sep, d2 = mw.ustring.match(k, "(%d)(['%s_]*)(%d)") d1, d2 = tonumber(d1), tonumber(d2) local d1_fix = ((d1+d2)%2==1) and (d1 + (d2%2==0 and 1 or -1)) or d1 return (c1_dec[d1_fix] or "") .. sep .. (c2_dec[d2] or "") end) -- C. Phonetic Base local phonetic_base = resolve_phonetic_base(base_ipa) local roots = { phonetic_base } -- D. Handle "-mo" Variant if IS_MO_VARIANT and original_word then local c = mw.ustring.sub(original_word, -4, -4) -- grab the consonant immediately preceding the ".mo" suffix local c_voiced = voicing_map[c] if c_voiced then local ipa_voiceless = (ipa_map[c] or c) local ipa_voiced = (ipa_map[c_voiced] or c_voiced) local pattern = mw.ustring.gsub(ipa_voiceless, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") .. "mɔ$" -- escape IPA chars for regex and target the end of string local new_root, count = mw.ustring.gsub(phonetic_base, pattern, ipa_voiced .. "mɔ") if count > 0 then table.insert(roots, new_root) end end end -- E. Expand Variants local bases_expanded = {} for _, root in ipairs(roots) do local expansions = expand_variants(root) for _, e in ipairs(expansions) do table.insert(bases_expanded, e) end end -- F. Generate Registers local high_res, low_res = {}, {} for _, ipa in ipairs(bases_expanded) do table.insert(high_res, (gsub(ipa, "æ", "ɛɐ̯"))) local l = gsub(gsub(gsub(ipa, "æ", "e"), "ʎ", "l"), "l ?ˈ?l", "lː") table.insert(low_res, (gsub(l, "n([fvʋ])", "ɱ%1"))) end return { phonemic = phonemic, high = high_res, low = low_res } end -- ============================================================================= -- [[ MAIN EXPORT ]] -- ============================================================================= function export.show(frame) local args = frame:getParent().args local title = mw.title.getCurrentTitle() local t = args["t"] or "" NAMESPACE = title.nsText PAGENAME = (NAMESPACE == "") and title.text or (args["pagename"] or "Nebol identifikovaný názov stránky") LOAN = mw.ustring.find(t, "cudzie") and 1 or 0 HARD_SUFFIX = mw.ustring.find(t, "adj") and 1 or 0 SOFT_SUFFIX = mw.ustring.find(t, "lok") and 1 or 0 AS_IMP = mw.ustring.find(t, "imp") and 1 or 0 IS_MO_VARIANT = false local word = (args["1"] ~= nil) and args["1"] or PAGENAME local original_word = word local manual_hard = (args["1"] ~= nil and mw.ustring.find(args["1"], "[DTNL]")) -- Pipeline if not manual_hard then word = step_foreign_graphemes(word) end word = step_softening(word) if manual_hard then word = step_foreign_graphemes(word) end word = step_prosody(word) word = step_simplification(word) word = step_assimilation(word) word = step_v_f_j_realization(word) word = step_final_devoicing(word) local final = generate_all_transcriptions(word, original_word) return format_ipa_output(final) end return export r94xhy51d6hie0zk69x8hveub4vflz1 disketu 0 49467 197610 197276 2026-09-28T16:34:00Z TomášPolonec 3256 /* Slovenčina */ výslovnosť 197610 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{sk-IPA|t=cudzie}} === Podstatné meno === ==== Význam ==== # ''akuzatív jednotného čísla podstatného mena'' {{Odkaz|sk|disketa}} [[Kategória:Tvary slovenských podstatných mien]] rxaleir8yyv433dpdlwadxd8oikiww0 disketách 0 49468 197614 197277 2026-09-28T16:35:34Z TomášPolonec 3256 /* Slovenčina */ +etymológia 197614 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{sk-IPA|t=cudzie}} === Podstatné meno === ==== Význam ==== # ''lokál množného čísla podstatného mena'' {{Odkaz|sk|disketa}} [[Kategória:Tvary slovenských podstatných mien]] 395t6qphf4rsruvjvt9q62ofb18ew2v diskety 0 49469 197608 197278 2026-09-28T16:33:10Z TomášPolonec 3256 /* Slovenčina */ výslovnosť 197608 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{sk-IPA|t=cudzie}} === Podstatné meno === ==== Význam ==== # ''genitív jednotného čísla podstatného mena'' {{Odkaz|sk|disketa}} # ''nominatív množného čísla podstatného mena'' {{Odkaz|sk|disketa}} # ''akuzatív množného čísla podstatného mena'' {{Odkaz|sk|disketa}} [[Kategória:Tvary slovenských podstatných mien]] qkd7c293r0ric6v4b5eiddz822mgnlx disketám 0 49470 197613 197279 2026-09-28T16:35:24Z TomášPolonec 3256 /* Slovenčina */ výslovnosť 197613 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{sk-IPA|t=cudzie}} === Podstatné meno === ==== Význam ==== # ''datív množného čísla podstatného mena'' {{Odkaz|sk|disketa}} [[Kategória:Tvary slovenských podstatných mien]] kexxpqldpyy1eqim4r6258mzby2olo6 diskete 0 49471 197609 197280 2026-09-28T16:33:51Z TomášPolonec 3256 /* Slovenčina */ výslovnosť 197609 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{sk-IPA|t=cudzie,lok}} === Podstatné meno === ==== Význam ==== # ''datív jednotného čísla podstatného mena'' {{Odkaz|sk|disketa}} # ''lokál jednotného čísla podstatného mena'' {{Odkaz|sk|disketa}} [[Kategória:Tvary slovenských podstatných mien]] 564r94yy09rkgujezjhlgkcf6pr1484 diskiet 0 49472 197612 197281 2026-09-28T16:35:14Z TomášPolonec 3256 /* Slovenčina */ výslovnosť 197612 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{sk-IPA|diski+et|t=cudzie}} === Podstatné meno === ==== Význam ==== # ''genitív množného čísla podstatného mena'' {{Odkaz|sk|disketa}} [[Kategória:Tvary slovenských podstatných mien]] lruqln76sz7p8oqrs2rb0nse47iw6d2 disketami 0 49473 197615 197282 2026-09-28T16:35:45Z TomášPolonec 3256 /* Slovenčina */ výslovnosť 197615 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{sk-IPA|t=cudzie}} === Podstatné meno === ==== Význam ==== # ''inštrumentál množného čísla podstatného mena'' {{Odkaz|sk|disketa}} [[Kategória:Tvary slovenských podstatných mien]] 2bqyt2r4xevl0cwy6xjujj81iat2iar disketou 0 49474 197611 197283 2026-09-28T16:34:08Z TomášPolonec 3256 /* Slovenčina */ výslovnosť 197611 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{sk-IPA|t=cudzie}} === Podstatné meno === ==== Význam ==== # ''inštrumentál jednotného čísla podstatného mena'' {{Odkaz|sk|disketa}} [[Kategória:Tvary slovenských podstatných mien]] pppo09kyiywhg2fui2fg43hyrkib8f8 internete 0 49703 197607 197512 2026-09-28T16:32:40Z TomášPolonec 3256 /* Slovenčina */ výslovnosť 197607 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{sk-IPA|t=cudzie,lok}} === Podstatné meno === ==== Význam ==== # ''lokál jednotného čísla podstatného mena'' {{Odkaz|sk|internet}} [[Kategória:Tvary slovenských podstatných mien]] mi194wip0m2lfyd251g0dzc36t9rcpg jedničkami 0 49796 197617 2026-09-28T16:37:09Z TomášPolonec 3256 +tvar 197617 wikitext text/x-wiki == Slovenčina == === Výslovnosť === * {{sk-IPA}} === Podstatné meno === ==== Význam ==== # ''inštrumentál množného čísla podstatného mena'' {{Odkaz|sk|jednička}} [[Kategória:Tvary slovenských podstatných mien]] cwqny07t6wjvess66jrj6pc1ls0yo60