text:
manipuleerbaar

Adjective

 * 1) manipulatable, manipulable

title: manipuleerbaar


text:
tahnitlemek

Etymology
Equivalent to

Verb

 * 1)  to embalm

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: tahnitlemek


text:
ਪੈਦਲ

Adjective

 * 1) on foot, marching

title: ਪੈਦਲ


text:
پیدل

Adjective

 * 1) on foot, marching

title: پیدل


text:
Reconstruction:Proto-Italic/-elos

Etymology
, thematized from.

title: Reconstruction:Proto-Italic/-elos


text: apetalos

title: apetalos


text: citaties

title: citaties


text:
citatie

Etymology
Borrowed from. Equivalent to.

Noun

 * 1) quotation (fragment of a human expression quoted by someone)
 * 2)   subpoena, summons

title: citatie


text:
fraudezaak

Etymology
Compound of.

Noun

 * 1)  fraud case

title: fraudezaak


text: fraudezaken

title: fraudezaken


text:
شطرنج دے مہرے

Noun

 * 1) ; chess pieces

title: شطرنج دے مہرے


text:
great bulrush

Noun

 * , a species of bulrush.

Synonyms

 * softstem bulrush
 * grey club-rush

Translations

 * Translingual: Schoenoplectus tabernaemontani

title: great bulrush


text:
شطرنج دا مہرہ

Noun

 * 1) chess piece

title: شطرنج دا مہرہ


text: Category:Rhymes:Masurian

title: Category:Rhymes:Masurian


text:
ਸ਼ਤਰੰਜ ਦੇ ਮੋਹਰੇ

Noun

 * 1) ; chess pieces

title: ਸ਼ਤਰੰਜ ਦੇ ਮੋਹਰੇ


text:
ਸ਼ਤਰੰਜ ਦਾ ਮੋਹਰਾ

Noun

 * 1) chess piece

title: ਸ਼ਤਰੰਜ ਦਾ ਮੋਹਰਾ


text:
သဘျုၣ်

Etymology
From.

Noun

 * 1) betel

title: သဘျုၣ်


text:
သဘျုၣ်လၣ်

Etymology
From.

Noun

 * 1) betel leaf

title: သဘျုၣ်လၣ်


text: Category:Yonaguni palindromes

title: Category:Yonaguni palindromes


text:
လီတာ်

Etymology
Compare with 🇨🇬 and 🇨🇬.

Noun

 * 1) vulture

title: လီတာ်


text: Category:Yonaguni transitive verbs

title: Category:Yonaguni transitive verbs


text: Category:Yonaguni terms by their sequences of characters


text: Category:Okinawan terms spelled with 学 read as がく


text: Category:Okinawan terms spelled with 学

title: Category:Okinawan terms spelled with 学


text: Category:Okinawan terms spelled with 島 read as しま


text: Category:Okinawan terms spelled with 新 read as みー


text: Category:Okinawan terms spelled with 校 read as こー


text: Category:Okinawan terms spelled with 校

title: Category:Okinawan terms spelled with 校


text: Category:Okinawan terms spelled with 油 read as ゆー


text: Category:Okinawan terms spelled with 生 read as しー


text: Category:Okinawan terms spelled with 韓 read as くゎん


text: Category:Okinawan terms spelled with 韓

title: Category:Okinawan terms spelled with 韓


text: Category:Okinawan terms spelled with 鹿 read as か


text: Category:Okinawan terms spelled with 鹿

title: Category:Okinawan terms spelled with 鹿


text:
rilisan

Etymology
From.

title: rilisan


text: Category:Hachijō terms spelled with 地 read as じ


text: Category:Hachijō terms spelled with 大 read as でー


text: Category:Hachijō terms spelled with 根 read as こん


text: Category:Hachijō terms spelled with 震 read as しん


text: Category:Hachijō terms spelled with 地

title: Category:Hachijō terms spelled with 地


text: Category:Hachijō terms spelled with 大

title: Category:Hachijō terms spelled with 大


text: Category:Hachijō terms spelled with 根

title: Category:Hachijō terms spelled with 根


text: Category:Hachijō terms spelled with 震

title: Category:Hachijō terms spelled with 震


text: Category:Hachijō terms spelled with kanji read as じ


text: Category:Hachijō terms spelled with kanji read as でー


text: Category:Hachijō terms spelled with kanji read as こん


text: Category:Hachijō terms spelled with kanji read as しん


text: Category:Hachijō kanji readings with one mora


text: merilis

title: merilis


text: Category:Hachijō kanji read as じ

title: Category:Hachijō kanji read as じ


text: Category:Hachijō kanji read as でー

title: Category:Hachijō kanji read as でー


text: Category:Hachijō kanji read as こん

title: Category:Hachijō kanji read as こん


text: Category:Hachijō kanji read as しん

title: Category:Hachijō kanji read as しん


text: dirilis

title: dirilis


text: Category:Okinawan terms spelled with kanji read as しま


text:
perilis

Etymology
From id.

Noun

 * 1) releaser

title: perilis


text:
perilisan

Etymology
From.

Noun

 * 1) release; releasing

title: perilisan


text: Rhymes:Indonesian/lɪs

title: Rhymes:Indonesian/lɪs


text: Category:Indonesian rhymes/lɪ-

title: Category:Indonesian rhymes/lɪ-


text: apetalas

title: apetalas


text: Citations:J. N. J.

title: Citations:J. N. J.


text: licreste

title: licreste


text:
pagsasanay-militar

Etymology
From. .

Noun

 * 1) military exercise

title: pagsasanay-militar


text:
Module:User:Benwing2/pron utilities

local export = {}

local dump = mw.dumpObject local IPA_module = "Module:IPA" local parameter_utilities_module = "Module:parameter utilities" local pron_qualifier_module = "Module:pron qualifier"

--[==[ intro: This module provides utilities to simplify and standardize the creation of pronunciation modules, particularly when it comes to argument parsing. Using this module, it should only be necessary to provide the function that actually converts respelling to IPA. ]==]

local function combine_qualifiers(q1, q2) if type(q1) == "string" then q1 = {q1} end if type(q2) == "string" then q2 = {q2} end if not q1 then return q2	end if not q2 then return q1	end local qs = mw.clone(q1) for _, q in ipairs(q2) do		table.insert(qs, q)	end return qs end

--[==[ Function to parse arguments and format one or more pronunciations. Meant to be called from a module. `data` is a table containing the following fields: function is passed a single object `data` with the following fields: ** `respelling`: The respelling. ** `orig_respelling`: The original respelling; may be {nil} or `+` (which is substituted with the pagename). ** `item`: The item parsed from the argument containing the respelling, along with inline modifiers and separate parameters. ** `args`: The parsed `args` table generated from `raw_args`. ** `pagename`: The pagename, either taken from `args.pagename` or from the actual pagename. The function should return either a string (the respelling); a table with the respelling in the `pron` field and optional left and right regular and/or accent qualifiers in (respectively) `q`, `qq`, `a` and `aa`; a list of respelling strings; or a list of respelling+qualifier tables. If regular or accent qualifiers are returned, they will be combined with any user-specified qualifiers (which go first). extra parameters bullets (to override the number of added bullets) and pre (to specify text to insert between the bullets and the generated pronunciation) will be available. '''Use of this field is not recommended; it is provided for compatibility only.''' raw arguments using `process` in Module:parameters. See Module:fr-pron for an example of specifying this field. Module:parameter utilities to add to the default specs (which specify the following inline modifiers and separate parameters: q and ; qq and ; a and ;  aa and ; and ref and . See Module:fr-pron for an example of  specifying this field. ]==] function export.format_prons(data)	local params = {		[1] = {list = true, allow_holes = true, default = "+"},		["pagename"] = {},		["notext"] = {},	}	if data.include_bullet then		params["pre"] = {}		params["bullets"] = {type = "number", default = 1}	end	if data.augment_params then		for k, v in pairs(data.augment_params) do			params[k] = v		end	end
 * `lang` (required): Language object for the respellings.
 * `raw_args` (required): Unparsed arguments, generally taken from {frame:getParent.args}.
 * `respelling_to_IPA` (required): Function to generate one or more pronunciations given respelling. On input, the
 * `track_module` (recommended): Name of the invoking module, for debug-tracking purposes.
 * `include_bullet`: If specified, a bullet (`*`) will be added before the generated pronunciation. When this is given,
 * `augment_params`: If specified, a key-value table of arguments to add to the `params` table, prior to parsing the
 * `augment_param_mod_spec`: If specified, a list of specs of the form accepted by `construct_param_mods` in

local m_param_utils = require(parameter_utilities_module)

local construct_param_mod_spec = { {group = {"q", "a", "ref"}}, {group = "link", include = {"t", "gloss", "pos"}}, }	if data.augment_param_mod_spec then for _, spec in ipairs(data.augment_param_mod_spec) do			table.insert(construct_param_mod_spec, spec) end end

local param_mods = m_param_utils.construct_param_mods(construct_param_mod_spec)

local items, args = m_param_utils.process_list_arguments { params = params, param_mods = param_mods, raw_args = data.raw_args, termarg = 1, term_dest = "pron", track_module = data.track_module, }

local pagename = args.pagename or mw.loadData("Module:headword/data").pagename

local saw_multiple_prons = false for i, item in ipairs(items) do		local respelling = item.pron or "+" if respelling == "+" then respelling = pagename end local pron = data.respelling_to_IPA { orig_respelling = item.pron, respelling = respelling, item = item, args = args, pagename = pagename, }		if type(pron) == "table" and not pron.pron then -- assume a list if pron[1] and not pron[2] then -- a single-element list pron = pron[1] else saw_multiple_prons = true end end item.pron = pron end

if saw_multiple_prons then -- we need to flatten out the pronuns local pron_items = {} for _, item in ipairs(items) do			local prons = item.pron if type(prons) ~= "table" then prons = {prons} end if prons.pron then -- a single item with qualifiers, not a list prons = {prons} end for i, pron in ipairs(prons) do				if type(pron) ~= "table" then -- a string; convert to item table with qualifiers pron = {pron = pron} end if not pron.pron then error(("Internal error: Pronunciation table doesn't have a pronunciation in '.pron': %s"):format( dump(pron))) end pron.separator = i == 1 and item.separator or " ~ " if i == 1 then pron.q = combine_qualifiers(item.q, pron.q)					pron.a = combine_qualifiers(item.a, pron.a)					pron.pos = item.pos pron.gloss = item.gloss end if i == #prons then pron.refs = item.refs pron.qq = combine_qualifiers(item.qq, pron.qq) pron.aa = combine_qualifiers(item.aa, pron.aa) end if not pron_items then pron_items = {pron} else table.insert(pron_items, pron) end end end items = pron_items else for _, item in ipairs(items) do			if type(item.pron) == "table" then if not item.pron.pron then error(("Internal error: Pronunciation table doesn't have a pronunciation in '.pron': %s"):format( dump(item.pron))) end item.q = combine_qualifiers(item.q, item.pron.q)				item.a = combine_qualifiers(item.a, item.pron.a)				item.qq = combine_qualifiers(item.qq, item.pron.qq) item.aa = combine_qualifiers(item.aa, item.pron.aa) item.pron = item.pron.pron end end end

local prontext local q = args.q.default local qq = args.qq.default local a = args.a.default local aa = args.aa.default if args.notext then prontext = require(IPA_module).format_IPA_multiple(data.lang, items) if q and q[1] or qq and qq[1] or a and a[1] or aa and aa[1] then prontext = require(pron_qualifier_module).format_qualifiers { lang = data.lang, text = prontext, q = q,				qq = qq, a = a,				aa = aa, }		end else prontext = require(IPA_module).format_IPA_full { lang = data.lang, items = items, q = q,			qq = qq, a = a,			aa = aa, }	end if args.pre then prontext = args.pre .. " " .. prontext end if args.bullets and args.bullets ~= 0 then prontext = ("*"):rep(args.bullets) .. " " .. prontext end return prontext end

return export

title: Module:User:Benwing2/pron utilities


text:
Module:User:Benwing2/ceb-pron

-- Based on Module:es-pronunc by Benwing2. -- Adaptation by TagaSanPedroAko based on Module:tl-pron.

local export = {}

local pron_utilities_module = "Module:User:Benwing2/pron utilities"

local lang = require("Module:languages").getByCode("ceb")

local u = require("Module:string/char") local rfind = mw.ustring.find local rsubn = mw.ustring.gsub local rsplit = mw.text.split local ulower = mw.ustring.lower

local AC = u(0x0301) -- acute = ́ local GR = u(0x0300) -- grave = ̀ local CFLEX = u(0x0302) -- circumflex = ̂ local TILDE = u(0x0303) -- tilde = ̃ local DIA = u(0x0308) -- diaeresis = ̈ local MACRON = u(0x0304) -- macron

local vowel = "aeiou" -- vowel local V = "[" .. vowel .. "]" local accent = AC .. GR .. CFLEX .. MACRON local accent_c = "[" .. accent .. "]" local stress_c = "[" .. AC .. GR .. "]" local ipa_stress = "ˈˌ" local ipa_stress_c = "[" .. ipa_stress .. "]" local separator = accent .. ipa_stress .. "# ." local separator_c = "[" .. separator .. "]" local C = "[^" .. vowel .. separator .. "]" -- consonant

local unstressed_words = require("Module:table").listToSet({	"ang", "sa", "og", "si", "ni", "kang", -- case markers. "Nang" here is for written "ng", but can also work with nang as in the contraction na'ng and the conjunction "nang"	"ko", "mo", "ka", --single-syllable personal pronouns	"nga",-- linker, also temporal particle   "gyud", "jud", "pa", -- particles	"di7", -- negation words	"kon", -- subordinating conjunctions	"ug", "o", -- coordinating conjunctions	"hay", -- interjections	"de", "del", -- in some Spanish-derived terms and names	"-an", "-han", "-hon", "i-",  "-i", "in-", "-in-", "mag-", "mang-", "mo-", "-on", "pag-", "pang-" -- monosyllabic affixes })

-- version of rsubn that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end

-- version of rsubn that returns a 2nd argument boolean indicating whether -- a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end

-- apply rsub repeatedly until no change local function rsub_repeatedly(term, foo, bar) while true do		local new_term = rsub(term, foo, bar) if new_term == term then return term end term = new_term end end

-- ĵ and ɟ are used internally to represent [d͡ʒ] and [j] --

function export.IPA(text) local debug = {}

text = ulower(text) -- decompose everything but ñ and ü text = mw.ustring.toNFD(text) text = rsub(text, "." .. "[" .. TILDE .. DIA .."]", {		["n" .. TILDE] = "ñ",		["u" .. TILDE] = "ü",	}) -- convert commas and en/en dashes to IPA foot boundaries text = rsub(text, "%s*[,–—]%s*", " | ") -- question mark or exclamation point in the middle of a sentence -> IPA foot boundary text = rsub(text, "([^%s])%s*[!?]%s*([^%s])", "%1 | %2")

-- canonicalize multiple spaces and remove leading and trailing spaces local function canon_spaces(text) text = rsub(text, "%s+", " ") text = rsub(text, "^ ", "") text = rsub(text, " $", "") return text end

text = canon_spaces(text)

-- Make prefixes unstressed unless they have an explicit stress marker; also make certain -- monosyllabic words (e.g. ang, sa, si, nga, etc.) without stress marks be -- unstressed. local words = rsplit(text, " ") for i, word in ipairs(words) do		if rfind(word, "%-$") and not rfind(word, accent_c) or unstressed_words[word] then -- add macron to the last vowel not the first one -- adding the macron after the 'u' words[i] = rsub(word, "^(.*" .. V .. ")", "%1" .. MACRON) end end text = table.concat(words, " ") -- Convert hyphens to spaces text = rsub(text, "%-", " ") -- canonicalize multiple spaces again, which may have been introduced by hyphens text = canon_spaces(text) -- now eliminate punctuation text = rsub(text, "[!?']", "") -- put # at word beginning and end and double ## at text/foot boundary beginning/end text = rsub(text, " | ", "# | #") text = "##" .. rsub(text, " ", "# #") .. "##"

table.insert(debug, text)

-- Add glottal stop for words starting with vowel text = rsub(text, "([#])([aeiou])", "%1ʔ%2")

-- handle certain combinations; ch ng and sh handling needs to go first text = rsub(text, "([t]?)ch", "ts") text = rsub(text, "([n]?)g̃", "ŋ") -- Spanish spelling support text = rsub(text, "ng", "ŋ") text = rsub(text, "sh", "sɟ")

--x text = rsub(text, "([#])x(" .. V .. ")", "%1s%2") text = rsub(text, "x", "ks") --ll text = rsub(text, "ll([i]?)(".. V.. ")", "ly%2")

--c, gü/gu+e or i, q	text = rsub(text, "c([iey])", "s%1") text = rsub(text, "(" .. V .. ")gü([ie])", "%1ɡw%2") text = rsub(text, "gü([ie])", "ɡuw%1") text = rsub(text, "gui([aeëo])", "ɡy%1") text = rsub(text, "gu([ie])", "ɡ%1") text = rsub(text, "qu([ie])", "k%1") text = rsub(text, "ü", "u")

table.insert(debug, text)

--alphabet-to-phoneme text = rsub(text, "[cfgjñqrvz7]",	--["g"]="ɡ": U+0067 LATIN SMALL LETTER G → U+0261 LATIN SMALL LETTER SCRIPT G		{ ["c"] = "k", ["f"] = "p", ["g"] = "ɡ", ["j"] = "ĵ", ["ñ"] = "ɲ", ["q"] = "k", ["r"] = "ɾ", ["v"] = "b", ["z"] = "s", ["7"] = "ʔ"})

-- trill in rr	text = rsub(text, "ɾɾ", "r")

table.insert(debug, text)

text = rsub_repeatedly(text, "([^" .. vowel .. "])([u])([" .. AC .. MACRON .. "]?)([aeio])(" .. accent_c .. "?)","%1%2%3.w%4%5") text = rsub_repeatedly(text, "(" .. V .. ")([u])([" .. AC .. MACRON .. "]?)([aeio])(" .. accent_c .. "?)","%1.w%3%4") text = rsub(text, "([i])([" .. AC .. MACRON .. "])([aeou])(" .. accent_c .. "?)","%1%2.y%3%4") text = rsub(text, "([i])([aeou])(" .. accent_c .. "?)","y%2%3") text = rsub(text, "a([".. AC .."]*)o([#.])","a%1w%2")

--determining whether "y" is a consonant or a vowel text = rsub(text, "y(" .. V .. ")", "ɟ%1") -- not the real sound text = rsub(text,"y([ˈˌ.]*)([bćĉdfɡhjĵklmnɲŋpɾrsʃtvwɟzʔ#" .. vowel .. "])","i%1%2") text = rsub(text, "w(" .. V .. ")","w%1") text = rsub(text,"w([ˈˌ]?)([bćĉdfɡjĵklmnɲŋpɾrsʃtvwɟzʔ#])","u%1%2")

table.insert(debug, text) --vowels with grave/circumflex to vowel+glottal stop text = rsub(text, CFLEX, AC .. GR) text = rsub(text, "(" .. V .. ")([" .. AC .. "]?)" .. GR .. "([#" .. vowel .. "])", "%1%2ʔ%3") text = rsub(text, "(" .. V .. ")([" .. AC .. "]?)" .. GR, "%1%2") -- Add glottal stop for words starting with vowel text = rsub(text, "([#])(" .. V .. ")", "%1ʔ%2") text = rsub(text, "◌", "")

text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)(" .. C .. V .. ")", "%1.%2")	text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. ")(" .. C .. V .. ")", "%1.%2")	text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. "+)(" .. C .. C .. V .. ")", "%1.%2")	text = rsub_repeatedly(text, "(" .. C .. ")%.s(" .. C .. ")", "%1s.%2") -- Any aeo, or stressed iu, should be syllabically divided from a following aeo or stressed iu. text = rsub_repeatedly(text, "([aeo]" .. accent_c .. "*)([aeo])", "%1.%2") text = rsub_repeatedly(text, "([aeo]" .. accent_c .. "*)(" .. V .. AC .. ")", "%1.%2")	text = rsub(text, "([iuə]" .. AC .. ")([aeo])", "%1.%2") text = rsub_repeatedly(text, "([iuə]" .. AC .. ")(" .. V .. AC .. ")", "%1.%2")	text = rsub_repeatedly(text, "i(" .. accent_c .. "*)i", "i%1.i") text = rsub_repeatedly(text, "u(" .. accent_c .. "*)u", "u%1.u")

table.insert(debug, text)

local accent_to_stress_mark = { [AC] = "ˈ", [MACRON] = "" }

local function accent_word(word, syllables) -- Now stress the word. If any accent exists in the word (including macron indicating an unaccented word), -- put the stress mark(s) at the beginning of the indicated syllable(s). Otherwise, apply the default -- stress rule. if rfind(word, accent_c) then for i = 1, #syllables do syllables[i] = rsub(syllables[i], "^(.*)(" .. accent_c .. ")(.*)$",					function(pre, accent, post)						return accent_to_stress_mark[accent] .. pre .. post					end				) end else -- Default stress rule. Words without vowels (e.g. IPA foot boundaries) don't get stress. if #syllables > 1 and rfind(word, "[^aeiouəʔbcĉdfɡghjɟĵklmnñŋpqrɾstvwxz#]#") or #syllables == 1 and rfind(word, V) 		then syllables[#syllables] = "ˈ" .. syllables[#syllables] elseif #syllables >= 2 then syllables[#syllables - 1] = "ˈ" .. syllables[#syllables - 1] end end end

local words = rsplit(text, " ") for j, word in ipairs(words) do		-- accentuation local syllables = rsplit(word, "%.") accent_word(word, syllables) -- Reconstruct the word. words[j] = table.concat(syllables, ".") end

text = table.concat(words, " ")

-- suppress syllable mark before IPA stress indicator text = rsub(text, "%.(" .. ipa_stress_c .. ")", "%1")	--make all primary stresses but the last one be secondary text = rsub_repeatedly(text, "ˈ(.+)ˈ", "ˌ%1ˈ")

table.insert(debug,text)

--correct final glottal stop placement text = rsub(text,"([ˈˌ])ʔ([#]*)([ʔbĉćdfɡhĵɟklmnŋɲpɾrsʃtvwz])(" .. V .. ")","%1%2%3%4ʔ")

table.insert(debug,text)

--add temporary macron for /a/, /i/ and /u/ in stressed syllables so they don't get replaced by unstressed form

text = rsub(text,"([ˈˌ])([#]*)([ʔbćĉdfɡhĵɟklmnŋpɾrstvwz]?)([ɟlnɾst]?)([a])([ʔbdfɡiklmnŋpɾstu]?)([bdɡklmnpɾst]?)","%1%2%3%4ā%6%7") text = rsub(text,"([ˈˌ])([#]*)([ʔbćĉdfɡhĵɟklmnŋpɾrstvwz]?)([ɟlnɾst]?)([e])([ʔbdfɡklmnŋpɾstu]?)([bdɡklmnpɾst]?)","%1%2%3%4ē%6%7") text = rsub(text,"([ˈˌ])([#]*)([ʔbćĉdfɡhĵɟklmnŋpɾrstvwz]?)([ɟlnɾst]?)([i])([ʔbdfɡklmnŋpɾstu]?)([bdɡklmnpɾst]?)","%1%2%3%4ī%6%7") text = rsub(text,"([ˈˌ])([#]*)([ʔbćĉdfɡhĵɟklmnŋpɾrstvwz]?)([ɟlnɾst]?)([o])([ʔbdfɡiklmnŋpɾst]?)([bdɡklmnpɾst]?)","%1%2%3%4ō%6%7") text = rsub(text,"([ˈˌ])([#]*)([ʔbćĉdfɡhĵɟklmnŋpɾrstvwz]?)([ɟlnɾst]?)([u])([ʔbdfɡiklmnŋpɾst]?)([bdɡklmnpɾst]?)","%1%2%3%4ū%6%7")

table.insert(debug, text)

--Corrections for diphthongs text = rsub(text,"([aāeəoō])i","%1j") --ay text = rsub(text,"([aāeəiīo])u","%1w") --aw

table.insert(debug, text) --remove "ɟ" and "w" inserted on vowel pair starting with "i" and "u" text = rsub(text,"([i])([ˈˌ]?)ɟ([aāeəouū])","%1%2%3") text = rsub(text,"([u])([ˈˌ]?)w([aāeəiī])","%1%2%3")

table.insert(debug, text)

local ceb_IPA_table = { ["phonetic"] = text, ["phonemic"] = text }

for key, value in pairs(ceb_IPA_table) do		text = ceb_IPA_table[key]

--phonetic transcription if key == "phonetic" then table.insert(debug, text) --Turn phonemic diphthongs to phonetic diphthongs text = rsub(text, "([aāeəouū])j", "%1ɪ̯") text = rsub(text, "([aāeəiīo])w", "%1ʊ̯")

table.insert(debug, text)

--change a, e, i, o, u to unstressed equivalents (certain forms to restore) text = rsub(text,"a","ɐ") text = rsub(text,"e","e") text = rsub(text,"i","ɪ") text = rsub(text,"o","o") text = rsub(text,"u","ʊ")

table.insert(debug,text) --Combine consonants (except H) followed by I/U and certain stressed vowels text = rsub(text,"([bdɡĵklmnŋpɾrst])([ɟlnɾst]?)ɪ([ˈˌ.])ɟ?([āʌēɪōoūʊ])","%3%1%2ɟ%4") text = rsub(text,"([bdɡĵklmnŋpɾrst])([ɟlnɾst]?)ʊ([ˈˌ.])w?([āʌēīɪōʊ])","%3%1%2w%4")

table.insert(debug, text)

text = rsub(text, "([nŋ])([# .]*[bpm])", "m%2") text = rsub(text,"n([ˈˌ.])k","ŋ%1k") -- /n/ before /k/ (some proper nouns) text = rsub(text,"n([ˈˌ.])ɡ","ŋ%1ɡ") -- /n/ before /ɡ/ (some proper nouns and loanwords) text = rsub(text,"n([ˈˌ.])h","ŋ%1h") -- /n/ before /h/ (some proper nouns) text = rsub(text,"n([ˈˌ.])m","m%1m") -- /n/ before /m/ text = rsub(text,"t([ˈˌ.])s","%1ć") -- /t/ before /s/

-- final fix for "iy" and "uw" combination text = rsub(text,"([ɪī])([.])ɟ([ʌeoʊ])","%1%2%3") text = rsub(text,"([ʊū])([.])w([ʌeɪ])","%1%2%3")

--final fix for phonetic diphthongs

text = rsub(text,"([aɐ])i̯", "ai̯") --ay text = rsub(text,"([aɐ])u̯", "au̯") --aw text = rsub(text,"([eiɪ])i̯", "i") -- ey	   text = rsub(text,"([eiɪ])u̯", "iu̯") --iw text = rsub(text,"([oɔ])i̯", "oi̯") --oy or uy

table.insert(debug,text) --Change /ʌ/, /ɪ/ and /ʊ/ back to /a/, /i/ and /u/ in penultimate text = rsub(text,"([ˈˌ])([ʔbdɡhklmnŋpɾstwj])([lɾstj]?)ʌ","%1%2%3a") text = rsub(text,"([ˈˌ])([ʔbdɡhklmnŋpɾstwj])([lɾstj]?)ɪ","%1%2%3i") text = rsub(text,"([ˈˌ])([ʔbdɡhklmnŋpɾstwj])([lɾstj]?)ʊ","%1%2%3u")

table.insert(debug,text) --Coalesce [wʊ] or [wɔ] to [w] text = rsub(text,"([.])([w])([ɔʊ])","%2")

table.insert(debug,text)

--turn phonemic consonants to Cebuano dental consonants

text = rsub(text,"d","d̪") text = rsub(text,"l","l̪") text = rsub(text,"n","n̪") text = rsub(text,"ɾ","ɾ̪") text = rsub(text,"s","s̪") text = rsub(text,"t","t̪")

table.insert(debug, text)

--delete temporary macron in /a/, /e/, /i/, /o/ and /u/

text = rsub(text,"ā","a") text = rsub(text,"ē","i") text = rsub(text,"ī","i") text = rsub(text,"ō","o") text = rsub(text,"ū","u")

table.insert(debug, text)

else text = rsub(text,"%.","") end

table.insert(debug, text)

--delete temporary macron in vowels

text = rsub(text,"ā","a") text = rsub(text,"ē","e") text = rsub(text,"ī","i") text = rsub(text,"ō","o") text = rsub(text,"ū","u")

-- convert fake symbols to real ones local final_conversions = { ["ć"] = "t͡s", -- fake "t.s" to real "t.s"		["ɟ"] = "j", -- fake "y" to real "y" ["ĵ"] = "d͡ʒ" -- fake "j" to real "j" }

text = rsub(text, "[ćɟĵ]", final_conversions)

-- remove # symbols at word and text boundaries text = rsub(text, "#([.]?)", "") -- resuppress syllable mark before IPA stress indicator text = rsub(text, "%.(" .. ipa_stress_c .. ")", "%1")

-- Do not have multiple syllable break consecutively text = rsub_repeatedly(text, "([.]+)", ".") text = rsub_repeatedly(text, "([.]?)(" .. ipa_stress_c .. ")([.]?)", "%2")   	ceb_IPA_table[key] = mw.ustring.toNFC(text) end

return ceb_IPA_table end

local function respelling_to_IPA(data) local IPA_result = export.IPA(data.respelling) return ("/%s/ [%s]"):format(IPA_result["phonemic"], IPA_result["phonetic"]) end

function export.show(frame) local parent_args = frame:getParent.args return require(pron_utilities_module).format_prons { lang = lang, respelling_to_IPA = respelling_to_IPA, raw_args = parent_args, track_module = "ceb-pron", include_bullet = true, -- FIXME: temporary } end

return export

title: Module:User:Benwing2/ceb-pron


title: User:Benwing2/ceb-IPA


title: User:Benwing2/test-ceb-IPA


text:
Rigensis

Adjective

 * 1) Of Riga.

title: Rigensis


text:
حمل کردن

Verb

 * 1) to transport, to carry
 * 2) to consign
 * 3)  to take (to be), to regard (as), to interpret, to conceive of

title: حمل کردن


text: Category:la:Riga

title: Category:la:Riga


text: Category:la:Latvia

title: Category:la:Latvia


text: Category:Latin terms derived from Latvian


text: Category:Latin terms derived from East Baltic languages


text: Category:la:Cities in Latvia

title: Category:la:Cities in Latvia


text: Category:la:Places in Latvia

title: Category:la:Places in Latvia


text:
Module:User:Benwing2/ilo-pron

-- Based on Module:es-pronunc by Benwing2. -- Adaptation by TagaSanPedroAko. Some code based on Module:ast-IPA.

local export = {}

local pron_utilities_module = "Module:User:Benwing2/pron utilities"

local lang = require("Module:languages").getByCode("ilo")

local u = require("Module:string/char") local rfind = mw.ustring.find local rsubn = mw.ustring.gsub local rsplit = mw.text.split local ulower = mw.ustring.lower

local AC = u(0x0301) -- acute = ́ local GR = u(0x0300) -- grave = ̀ local CFLEX = u(0x0302) -- circumflex = ̂ local TILDE = u(0x0303) -- tilde = ̃ local DIA = u(0x0308) -- diaeresis = ̈

local vowel = "aeëiouɯ" -- vowel local V = "[" .. vowel .. "]" local W = "[jw]" -- glide local accent = AC .. GR .. CFLEX local accent_c = "[" .. accent .. "]" local stress_c = "[" .. AC .. GR .. "]" local ipa_stress = "ˈˌ" local ipa_stress_c = "[" .. ipa_stress .. "]" local separator = accent .. ipa_stress .. "# ." local separator_c = "[" .. separator .. "]" local C = "[^" .. vowel .. separator .. "]" -- consonant

local unstressed_words = require("Module:table").listToSet({ --feel free to add more unstressed words	"ti", "si", "ni", -- case markers	"ket", -- conjunctions	"Dios", -- monosyllabic nouns	"de", "del" --particles in Spanish-derived surnames })

-- version of rsubn that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end

-- version of rsubn that returns a 2nd argument boolean indicating whether -- a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end

-- apply rsub repeatedly until no change local function rsub_repeatedly(term, foo, bar) while true do		local new_term = rsub(term, foo, bar) if new_term == term then return term end term = new_term end end

-- ĵ, ɟ and ć are used internally to represent [d͡ʒ], [j] and [t͡ʃ]

function export.IPA(text, phonetic) local debug = {}

text = ulower(text) -- decompose everything but ë, ñ and ü text = mw.ustring.toNFD(text) text = rsub(text, "." .. "[" .. TILDE .. DIA .. "]", {		["e" .. DIA] = "ë",		["n" .. TILDE] = "ñ",		["u" .. TILDE] = "ü",	}) -- convert commas and en/en dashes to IPA foot boundaries text = rsub(text, "%s*[,–—]%s*", " | ") -- question mark or exclamation point in the middle of a sentence -> IPA foot boundary text = rsub(text, "([^%s])%s*[!?]%s*([^%s])", "%1 | %2")

-- canonicalize multiple spaces and remove leading and trailing spaces local function canon_spaces(text) text = rsub(text, "%s+", " ") text = rsub(text, "^ ", "") text = rsub(text, " $", "") return text end

text = canon_spaces(text)

-- Make prefixes unstressed unless they have an explicit stress marker; also make certain -- monosyllabic words (e.g. ti, ket, si, nga, etc.) without stress marks be -- unstressed. local words = rsplit(text, " ") for i, word in ipairs(words) do		if rfind(word, "%-$") and not rfind(word, accent_c) or unstressed_words[word] then -- add CFLEX to the last vowel not the first one -- adding the CFLEX after the 'u' words[i] = rsub(word, "^(.*" .. V .. ")", "%1" .. CFLEX) end end text = table.concat(words, " ") -- Convert hyphens to spaces text = rsub(text, "%-", " ") -- canonicalize multiple spaces again, which may have been introduced by hyphens text = canon_spaces(text) -- now eliminate punctuation text = rsub(text, "[!?']", "") -- put # at word beginning and end and double ## at text/foot boundary beginning/end text = rsub(text, " | ", "# | #") text = "##" .. rsub(text, " ", "# #") .. "##"

table.insert(debug, text)

-- Add glottal stop for words starting with vowel text = rsub(text, "([#])([aëeiou])", "%1ʔ%2")

--determining whether "y" or "w" is a consonant or a vowel text = rsub(text, "y(" .. V .. ")", "ɟ%1") -- not the real sound text = rsub(text, "y#", "i") text = rsub(text, "w(" .. V .. ")","w%1") text = rsub(text, "w#","u")

-- handle certain combinations; ch ng and sh handling needs to go first text = rsub(text, "ch", "ts") --not the real sound text = rsub(text, "ng", "ŋ") text = rsub(text, "sh", "ʃ")

--x text = rsub(text, "x", "ks")

--c, g, q	text = rsub(text, "c([ie])", "s%1") text = rsub(text, "gu(" .. V .. ")", "ɡw%1") text = rsub(text, "qu([ieë])", "k%1") text = rsub(text, "ü", "u")

table.insert(debug, text)

--alphabet-to-phoneme text = rsub(text, "[cgjñrvyz7]",	--["g"]="ɡ": U+0067 LATIN SMALL LETTER G → U+0261 LATIN SMALL LETTER SCRIPT G		{ ["c"] = "k", ["f"] = "p", ["g"] = "ɡ", ["j"] = "ĵ", ["ñ"] = "ɲ", ["q"] = "k", ["r"] = "ɾ", ["v"] = "b", ["y"] = "ɟ", ["z"] = "s", ["7"] = "ʔ" })

-- trill in rr (as in serrek) text = rsub(text, "ɾɾ", "r")

-- ë text = rsub(text, "ë", "ɯ")

-- ts	text = rsub(text, "ts", "ĉ") --not the real sound

text = rsub(text, "n([# .]*[bpm])", "m%1")

table.insert(debug, text)

--syllable division local vowel_to_glide = { ["i"] = "j", ["o"] = "w", ["u"] = "w" } -- i, o and u between vowels -> j and w. Usually in proper nouns (e.g. Agcaoili) text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)([iou])(" .. V .. ")",			function(v1, iou, v2)				return v1 .. vowel_to_glide[iou] .. v2			end	) text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)(" .. C .. W .. "?" .. V .. ")", "%1.%2")	text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. ")(" .. C .. V .. ")", "%1.%2")	text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. "+)(" .. C .. C .. V .. ")", "%1.%2")	text = rsub_repeatedly(text, "(" .. C .. ")%.s(" .. C .. ")", "%1s.%2") -- Any aeo, or stressed iu, should be syllabically divided from a following aeo or stressed iu. text = rsub_repeatedly(text, "([aeo]" .. accent_c .. "*)([aeo])", "%1.%2") text = rsub_repeatedly(text, "([aeo]" .. accent_c .. "*)(" .. V .. stress_c .. ")", "%1.%2")	text = rsub(text, "([iu]" .. stress_c .. ")([aeo])", "%1.%2") text = rsub_repeatedly(text, "([iu]" .. stress_c .. ")(" .. V .. stress_c .. ")", "%1.%2")	text = rsub_repeatedly(text, "i(" .. accent_c .. "*)i", "i%1.i") text = rsub_repeatedly(text, "u(" .. accent_c .. "*)u", "u%1.u")

table.insert(debug, text)

--diphthongs text = rsub(text, "i([aeouɯ])", "j%1") text = rsub(text, "u([aeioɯ])", "w%1")

table.insert(debug, text)

local accent_to_stress_mark = { [AC] = "ˈ", [GR] = "ˌ", [CFLEX] = "" }

local function accent_word(word, syllables) -- Now stress the word. If any accent exists in the word (including ^ indicating an unaccented word), -- put the stress mark(s) at the beginning of the indicated syllable(s). Otherwise, apply the default -- stress rule. if rfind(word, accent_c) then for i = 1, #syllables do syllables[i] = rsub(syllables[i], "^(.*)(" .. accent_c .. ")(.*)$",						function(pre, accent, post)							return accent_to_stress_mark[accent] .. pre .. post						end				) end else -- Default stress rule. Words without vowels (e.g. IPA foot boundaries) don't get stress. if #syllables > 1 and rfind(word, "[^aeëioubcdfghjklmnŋñpqɾrstvwxzɡɯĉɟĵ#]#") or #syllables == 1 and rfind(word, "[aeëiouɯ]") 		then syllables[#syllables] = "ˈ" .. syllables[#syllables] elseif #syllables > 1 then syllables[#syllables - 1] = "ˈ" .. syllables[#syllables - 1] end end end

local words = rsplit(text, " ") for j, word in ipairs(words) do		-- accentuation local syllables = rsplit(word, "%.")

accent_word(word, syllables)

-- Reconstruct the word. words[j] = table.concat(syllables, phonetic and "." or "") end

text = table.concat(words, " ")

-- suppress syllable mark before IPA stress indicator text = rsub(text, "%.(" .. ipa_stress_c .. ")", "%1")	--make all primary stresses but the last one be secondary text = rsub_repeatedly(text, "ˈ(.+)ˈ", "ˌ%1ˈ")

table.insert(debug, text)

--phonemic diphthongs text = rsub(text,"([aeouɯ])i","%1j") text = rsub(text,"([aeio])u","%1w")

table.insert(debug,text)

--add temporary macron for /a/, /i/ and /u/ in stressed syllables so they don't get replaced by unstressed form

text = rsub(text,"([ˈˌ])([#]?)([ʔbĉćdfɡhjĵɟklmnŋɲpɾrsʃtw]?)([jlnɾt]?)a([bdfɡiklmnŋpɾstu]?)([bdɡklmnpɾst]?)","%1%2%3%4ā%5%6")

table.insert(debug, text)

--phonetic transcription if phonetic then

table.insert(debug, text)

--phonemic diphthongs text = rsub(text, "([āaeouɯ])([ɟj])", "%1ɪ̯") text = rsub(text, "([āaeio])w", "%1ʊ̯")

--/a/ to [ɐ] text = rsub(text,"a","ɐ")

table.insert(debug, text)

text = rsub(text,"d([ˈˌ]?)j","%1d͡ʒ") --/d/ before /j/ text = rsub(text,"l([ˈˌ]?)j","%1ʎ") -- /l/ before /j/ text = rsub(text,"n([ˈˌ]?)k","ŋ%1k") -- /n/ before /k/ (some proper nouns) text = rsub(text,"n([ˈˌ]?)ɡ","ŋ%1ɡ") -- /n/ before /ɡ/ (some proper nouns and loanwords) text = rsub(text,"n([ˈˌ.])h","ŋ%1h") -- /n/ before /h/ (some proper nouns) text = rsub(text,"n([ˈˌ.])m","m%1m") -- /n/ before /m/ text = rsub(text,"n([ˈˌ.])j","%1ɲ") -- /n/ before /j/ text = rsub(text,"s([ˈˌ.])j","%1ʃ") -- /s/ before /j/ text = rsub(text,"t([ˈˌ.])j","%1ć") -- /t/ before /j/ text = rsub(text,"([ˈˌ.#])d([j])([aɐeiouɯ])","%1ĵ%3") -- /dj/ at syllable onset text = rsub(text,"([ˈˌ.#])l([j])([aɐeiouɯ])","%1ʎ%3") -- /lj/ at syllable onset text = rsub(text,"([ˈˌ.#])n([j])([aɐeiouɯ])","%1ɲ%3") -- /nj/ at syllable onset text = rsub(text,"([ˈˌ.#])s([j])([aɐeiouɯ])","%1ʃ%3") -- /sj/ at syllable onset text = rsub(text,"([ˈˌ.#])t([j])([aɐeiouɯ])","%1ć%3") -- /tj/ at syllable onset

--final fix for phonetic diphthongs

text = rsub(text,"([ɐ])ɪ̯","aɪ̯") --ay text = rsub(text,"([ɐ])ʊ̯","aʊ̯") --aw

table.insert(debug, text) --Change [ɐ] back to /a/ at end of word

text = rsub(text,"([#.])([bdɡhklmnŋprɾsʃtwɟ])([lɾt]?)ɐ([bdɡhklmnŋpɾst]?)([#])","%1%2%3a%4%5")

--delete temporary macron in /a/, /i/ and /u/

text = rsub(text,"ā","a")

end

table.insert(debug, text)

--delete temporary macron in /a/

text = rsub(text,"ā","a")

-- convert fake symbols to real ones local final_conversions = { ["ĉ"] = "t͡ʃ", -- fake "ch" to real "ch" ["ɟ"] = "j", -- fake "y" to real "y" ["ĵ"] = "d͡ʒ" -- fake "j" to real "j" }

local final_conversions_phonetic = { ["ĉ"] = "t͡ʃ", -- fake "ch" to real "ch" ["ɟ"] = "j", -- fake "y" to real "y" ["ĵ"] = "d͡ʒ" -- fake "j" to real "j" }

if phonetic then text = rsub(text, "[ĉɟĵ]", final_conversions_phonetic) end text = rsub(text, "[ĉɟĵ]", final_conversions)

-- remove # symbols at word and text boundaries text = rsub(text, "#", "")

return mw.ustring.toNFC(text)

end

local function respelling_to_IPA(data) return ("/%s/ [%s]"):format(export.IPA(data.respelling, false), export.IPA(data.respelling, true)) end

function export.show(frame) local parent_args = frame:getParent.args return require(pron_utilities_module).format_prons { lang = lang, respelling_to_IPA = respelling_to_IPA, raw_args = parent_args, track_module = "ilo-pron", include_bullet = true, -- FIXME: temporary } end

return export

title: Module:User:Benwing2/ilo-pron


text: mixene

title: mixene


text: mixena

title: mixena


text: mixenum

title: mixenum


text:
ܒܣܝܪܐ

Etymology
Compare 🇨🇬, 🇨🇬,, 🇨🇬, and 🇨🇬

Noun

 * 1) sour, unripe grape

Usage notes
This word is rarely used in the singular.

title: ܒܣܝܪܐ


text:
özengü

Etymology
Cognate with 🇨🇬, 🇨🇬, 🇨🇬, 🇨🇬, etc.

Noun

 * 1) ladder

title: özengü


text:
Ozilia

Etymology
, from.

title: Ozilia


text: Category:la:Places in Estonia

title: Category:la:Places in Estonia


text:
သန့

Etymology
From.

Noun

 * 1) station, jetty

title: သန့