Module:csp-pron

Hello, you have come here looking for the meaning of the word Module:csp-pron. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:csp-pron, but we will also tell you about its etymology, its characteristics and you will know how to say Module:csp-pron in singular and plural. Everything you need to know about the word Module:csp-pron you have here. The definition of the word Module:csp-pron will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:csp-pron, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

Module handling Nanning Pinghua romanisation and IPA for {{zh-pron}}. See Cat:Nanning Pinghua

Testcases


-- This module is for 南寧平話 (Nanning Pinghua)
-- Not to be confused with 南寧白話, which is more like Cantonese
-- Representative variety: 亭子
-- Romanisation: Jyutping++ (referred to as jpp below)
-- References:
-- 1. 南宁平话词典 by 覃远雄 et al. (1997)
-- 2. https://leimaau.github.io/book/PHONETICIZE_bingwaa.html
-- 3. 广西通志·汉语方言志 (1998)
-- Also see ]

local export = {}

local initials = {
	b = "p",  p = "pʰ",  m = "m",  f = "f",           w = "β",
	d = "t",  t = "tʰ",  n = "n",  l = "l",
	z = "t͡s", c = "t͡sʰ", nj = "ɲ", s = "s", sl = "ɬ", j = "j",
	g = "k",  k = "kʰ",  ng = "ŋ", h = "h",
	gw = "kʷ", kw = "kʰʷ",
	 = "", -- glottal stop?
}

-- Notes:
-- iang="iɐŋ", iak="iɐk̚" in the same row as <e>
-- ing="ɪŋ", ik="ɪk̚" in the same row as <i>
-- ung="ʊŋ", uk="ʊk̚" in the same row as <u>
local finals = {
	aa="a", aai="ai", aau="au", aam="am", aan="an", aang="aŋ", aap="ap̚", aat="at̚", aak="ak̚",
	         ai="əi",  au="əu",  am="əm",  an="ən",  ang="əŋ",  ap="əp̚",  at="ət̚",  ak="ək̚",
	 e="e",            eu="eu",  em="em",  en="en", iang="iɐŋ", ep="ep̚",  et="et̚", iak="iɐk̚",
	 o="o",                                on="on",                       ot="ot̚",
	 i="i",            iu="iu",im="im",="in",  ing="ɪŋ",  ip="ip̚",  it="it̚",  ik="ɪk̚",
	 u="u",  ui="ui",                      un="un",  ung="ʊŋ",            ut="ut̚",  uk="ʊk̚",
	yu="y",                               yun="yn",                      yut="yt̚",
	oe="ø",                                         oeng="øŋ",                     oek="øk̚",
}

local syllabics = {
	ng = "ŋ̍"
}

local tones = {
	 = "⁵³", -- 陰平(詩)
	 = "³³", -- 陰上(屎) / 下陰入(得)
	 = "⁵⁵", -- 陰去(世) / 上陰入(粒)
	 = "²¹", -- 陽平(時)
	 = "²⁴", -- 陽上(市) / 上陽入(劣)
	 = "²²", -- 陽去(是) / 下陽入(絕)
}

function export.jpp_to_ipa(text)
	text = text:gsub(", "," ")
	if text:find("^ ") or text:find(" $") or text:find(" ,") or text:find(",,") or text:find("  ") then
		error("Empty syllable detected.")
	end
	return "/" .. text:gsub("+", function(syllable_tone)
		syl, tone = syllable_tone:match("^(%w+)()$")
		if not syl then
			error("Invalid syllable: " .. syllable_tone)
		end
		tone = tones
		if syllabics then
			return syllabics .. tone
		end
		initial, final = syl:match("^(*)(+?g?)$")
		if not initial then
			error("Invalid syllable: " .. syllable_tone)
		end
		return (initials or error("Invalid initial: " .. syllable_tone))
			.. (finals or error("Invalid final: " .. syllable_tone))
			.. tone
	end):gsub(",","/, /") .. "/"
end

return export