Module:ha-IPA

local export = {}

local m_IPA = require("Module:IPA") local m_a = require("Module:accent qualifier") local lang = require("Module:languages").getByCode("ha") local s = mw.ustring.gsub local C = "[ɡɟkTcʃSfDJjɽrʔmɓbfnɗdtzslwhpŋɲ]" local V = "[áéíóúɛ́ɔ́àèìòùɛ̀ɔ̀âêîôûɛ̂ɔ̂]" local i = { --mid-open realizations of  in borrowings {"E", "ɛ́"}, {"Ḕ", "ɛ̀ː"}, {"È", "ɛ̀"}, {"Ê", "E"},--don't change this... {"O", "ɔ́"}, {"Ṑ", "ɔ̀ː"}, {"Ò", "ɔ̀"}, {"Ô", "O"},--...see rules 62&63 of c	{"R", "r̃"} } local c = { --phoneMic Correspondences (from spelling) {"ʼ", "'"}, {"([gkƙ])%1([wy])", "%1%2%1%2"}, {"tts(h?)", "ts%1ts%1"}, {"ssh", "shsh"}, {"ffy", "fyfy"}, {"cch'", "ch'ch'"}, {"''y", "'y'y"}, {"gw", "ɡʷ"}, {"gy", "ɟ"}, {"kw", "kʷ"}, {"ch'", "Tʼ"}, {"c", "T"}, {"ky", "c"}, {"ƙw", "kʷʼ"}, {"ƙy", "cʼ"}, {"tsh", "Tʼ"}, {"sh", "ʃ"}, {"ts", "Sʼ"}, {"fy", "fʲ"}, {"j", "D"}, {"'y", "J"}, {"y", "j"}, {"ƴ", "J"}, {"g", "ɡ"}, {"ƙ", "kʼ"}, {"r̃", "R"}, {"r", "ɽ"}, {"R", "r"}, {"'", "ʔ"}, {"a", "á"}, {"ā̀", "àː"}, {"ā", "áː"}, {"e", "é"}, {"ḕ", "èː"}, {"ē", "éː"}, {"i", "í"}, {"ī̀", "ìː"}, {"ī", "íː"}, {"o", "ó"}, {"ṑ", "òː"}, {"ō", "óː"}, {"u", "ú"}, {"ū̀", "ùː"}, {"ū", "úː"}, {"([âêîôûEO])", "%1ː"}, {"^(" .. V .. ")", "ʔ%1"}, {"(.[ -/])(" .. V .. ")", "%1ʔ%2"}, {"(.)[-/](.)", "%1%2"},	{"(" .. V .. "ː?" .. C .. "?[ʷʲ]?ʼ?)(" .. C .. "[ʷʲ]?ʼ?)%f" .. V, "%1.%2"}, {"([áàâ]ː?)[íìî]", "%1i"}, {"([áàâ]ː?)[úùû]", "%1u"}, {"âː([iu])", "â%1"}, {"([âêîôûɛ̂ɔ̂])ː(" .. C .. "[ʷʲ]?ʼ?%.)", "%1%2"}, {"([âêîôûɛ̂ɔ̂])ː(" .. C .. "[ʷʲ]?ʼ?)$", "%1%2"}, {"T(ʼ?)w", "Tʷ%1"}, {"^(" .. C .. ")(ʼ?)w", "%1ʷ%2"}, {"( " .. C .. ")(ʼ?)w", "%1ʷ%2"}, {"T", "t͡ʃ"}, {"S", "(t)s"}, {"D", "(d)ʒ"}, {"J", "j̰"}, {"E", "ɛ̂"}, {"O", "ɔ̂"}, } local idk = { --turns a copy of "word" string, got after c, into an actual phoneMic tr (no phoneMic mid-open), whereas the value of "word" preserves the mid-open distinction for the phoneTic tr	{"ɛ́", "é"}, {"ɛ̀", "è"}, {"ɛ̂", "ê"}, {"ɔ́", "ó"}, {"ɔ̀", "ò"}, {"ɔ̂", "ô"} } local SKH = { --Standard Kano Hausa phoneTic correspondences (from phoneMic tr) {"%(d%)ʒ", "d͡ʒ"}, {"f", "ɸ"}, {"k(ʼ?[ɛ́ɛ̀ɛ̂éèêíìî])", "c%1"}, {"ɡ([ɛ́ɛ̀ɛ̂éèêíìî])", "ɟ%1"}, {"([kɡ])(ʼ?[ɔ́ɔ̀ɔ̂óòôúùû])", "%1ʷ%2"}, {"d͡ʒ%.d͡ʒ", "d.d͡ʒ"}, {"t͡ʃ%.t͡ʃ", "t.t͡ʃ"}, {"[kɡ]%.([cɟkɡ]ʷ?ʼ?)", "%1.%1"}, {"%(t%)sʼ", "sʼ"}, {"n([ -%.]?[bɓmpɸw])", "m%1"}, {"n([ -%.]?[jcɟ])", "ɲ%1"}, {"n([ -%.]?)([lrɽ])", "%2%1%2"}, {"n([ -%.]?[ kɡhʔ])", "ŋ%1"}, {"[mn]$", "ŋ"}, {"ŋ([ -%.]?[nɗdtzs])", "n%1"}, {"á(%.?[jɲ])", "ɛ́%1"}, {"à(%.?[jɲ])", "ɛ̀%1"}, {"â(%.?[jɲ])", "ɛ̂%1"}, {"([jj̰ɟc]ʼ?)á([^ː])", "%1ɛ́%2"}, {"([jj̰ɟc]ʼ?)à([^ː])", "%1ɛ̀%2"}, {"([jj̰ɟc]ʼ?)â([^ː])", "%1ɛ̂%2"}, {"([jj̰ɟc]ʼ?)á$", "%1ɛ́"}, {"([jj̰ɟc]ʼ?)à$", "%1ɛ̀"}, {"([jj̰ɟc]ʼ?)â$", "%1ɛ̂"}, {"([^hʔ])á([ -%.])", "%1ə́%2"}, {"([^hʔ])à([ -%.])", "%1ə̀%2"}, {"([^hʔ])â([ -%.])", "%1ə̂%2"}, {"([^hʔ])á$", "%1ə́"}, {"([^hʔ])à$", "%1ə̀"}, {"([^hʔ])â$", "%1ə̂"}, {"hó(" .. C .. "[ʷʲ]?ʼ?[ -%.])", "hɔ́%1"}, {"hò(" .. C .. "[ʷʲ]?ʼ?[ -%.])", "hɔ̀%1"}, {"hô(" .. C .. "[ʷʲ]?ʼ?[ -%.])", "hɔ̂%1"}, {"hó(" .. C .. "[ʷʲ]?ʼ?)$", "hɔ́%1"}, {"hò(" .. C .. "[ʷʲ]?ʼ?)$", "hɔ̀%1"}, {"hô(" .. C .. "[ʷʲ]?ʼ?)$", "hɔ̂%1"}, {"[éó](" .. C .. "[ʷʲ]?ʼ?[ -%.])", "á%1"}, {"[èò](" .. C .. "[ʷʲ]?ʼ?[ -%.])", "à%1"}, {"[êô](" .. C .. "[ʷʲ]?ʼ?[ -%.])", "â%1"}, {"[éó](" .. C .. "[ʷʲ]?ʼ?)$", "á%1"}, {"[èò](" .. C .. "[ʷʲ]?ʼ?)$", "à%1"}, {"[êô](" .. C .. "[ʷʲ]?ʼ?)$", "â%1"}, {"í([^ː])", "ɪ́%1"}, {"ì([^ː])", "ɪ̀%1"}, {"î([^ː])", "ɪ̂%1"}, {"í$", "ɪ́"}, {"ì$", "ɪ̀"}, {"î$", "ɪ̂"}, {"ú(%.?j)", "í%1"}, {"ù(%.?j)", "ì%1"}, {"û(%.?j)", "î%1"}, {"([ʃʒɽrnɗdtzsl]ʼ?)ú([^ː])", "%1ɪ́%2"}, {"([ʃʒɽrnɗdtzsl]ʼ?)ù([^ː])", "%1ɪ̀%2"}, {"([ʃʒɽrnɗdtzsl]ʼ?)û([^ː])", "%1ɪ̂%2"}, {"ɪ́(%.?w)", "ú%1"}, {"ɪ̀(%.?w)", "ù%1"}, {"ɪ̂(%.?w)", "û%1"}, {"([ʃʒɽrnɗdtzsl]ʼ?)ú$", "%1ɪ́"}, {"([ʃʒɽrnɗdtzsl]ʼ?)ù$", "%1ɪ̀"}, {"([ʃʒɽrnɗdtzsl]ʼ?)û$", "%1ɪ̂"}, {"ú([^ː])", "ʊ́%1"}, {"ù([^ː])", "ʊ̀%1"}, {"û([^ː])", "ʊ̂%1"}, {"ú$", "ʊ́"}, {"ù$", "ʊ̀"}, {"û$", "ʊ̂"}, {"([^hʔ])ái", "%1éi"}, {"([^hʔ])ài", "%1èi"}, {"(%.[^hʔ])âi", "%1êi"}, {"([^hʔ])âi%.", "%1êi."}, {"M", "m"} }

function export.pronunciation_phonemic(word, ideo) if ideo == "1" then word = s(word, "f$", "p") end for a = 1, #i do		word = s(word, i[a][1], i[a][2]) end word = mw.ustring.lower(word) for a = 1, #c do		word = s(word, c[a][1], c[a][2]) end return word end

function export.idk(word) --see var for a = 1, #idk do		word = s(word, idk[a][1], idk[a][2]) end return word end

function export.pronunciation_phonetic(word, dialect, ideo) if dialect == "SKH" then --see var if ideo == "1" then word = s(word, "m$", "M") end for a = 1, #SKH do			word = s(word, SKH[a][1], SKH[a][2]) end end return word end

function export.show(frame) local args = frame:getParent.args local p, results, results_ha = {}, {}, {} if not args[1] or (args[1] == "") then error("Please put the word as the first positional parameter!") else for index, item in ipairs(args) do			table.insert(p, (item ~= "") and item or nil) end end for _, word in ipairs(p) do		word = export.pronunciation_phonemic(word, args["ideo"]) table.insert(results, {pron = "/" .. export.idk(word) .. "/"}) --see var table.insert(results_ha, {pron = "[" .. export.pronunciation_phonetic(word, "SKH", args["ideo"]) .. "]"}) end if args["niger"] == "1" then return m_IPA.format_IPA_full { lang = lang, items = results } else return m_IPA.format_IPA_full { lang = lang, items = results } .. "\n** " .. m_a.format_qualifiers(lang, {"Standard Kano Hausa"}) .. " " .. m_IPA.format_IPA_full { lang = lang, items = results_ha } end end

return export