Module:tzm-IPA

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

This module generates the IPA phonological and phonetic transcription of Central Atlas Tamazight entries. It runs Template:tzm-IPA. If no parameter is provided, it will use the page title, else it is looked upon as a respelling. The testcases are here.

This module generates the phonology, which is the same for all Central Atlas Tamazight dialects (broad), and the phonetics, which is particular for each dialect (narrow). Currently it displays only the phonetic pronunciation for the Ayt Ndhir dialect according to Penchoen (1973).[1]

For Central Atlas Tamazight, the pronunciation is more relevant than the Tifinagh orthography because it is mainly an oral language, rarely written, whence the necessity of this module.

Below you shall find the functioning of this module.

Tifinagh and transcription

Here are the correspondences. An alternative pronunciation (a rarely used one) is next to the regular one, and in yellow if borrowed from Arabic phonology.

Phonotactics

The module gets the transcription of the entry name, then it generates the phonological transcription using columns 2 and 3 above. In order to generate the phonetic transcription from the phonological one, these sound laws are used.

Ayt Ndhir dialect

Here are the rules for the Ayt Ndhir dialect, spoken in Central Morocco.[1]

Consonants

  1. > \ #(Cː)(C)V_V(C)# (medial in bisyllabic words, 2 p7)
  2. /{d, t, z, r, s}/ > /{d, t, z, r, s}ˤ/ \ Cˤ(V)_ or _Cˤ (emphatic spread, a p7)
  3. > \ _{voicing²} (voicing regressive assimilation, b p7)
  4. /{lax, articulation pt¹, (ˤ)}( ){lax, articulation point¹, voicing², (ˤ)}/ > /{(‿)CC, articulation pt¹, voicing², (ˤ)}/ (assimilation. C¹&C², lax, same articulation pt > tense (geminated for 1st lecture), same articulation point. Voicing of C². ˤ if C¹ or C² is ˤ. c p8)
  5. /{t, d}/ > \  _( ){s, z, sˤ, zˤ, ʃ, ʒ} (t, d as stops before these fricatives, voicing is done by rule 3. d p8)
  6. /n/ > /{r, l}/ \  {r, l}( )_ (assimilation /ln/>, /rn/>, e p8)
  7. /n/ > /{l, r}/ \  _( ){{l, ll}, {r, rr}} (regressive assimilation /nl/>, /nr/>, /nll/, , /nrr/>, f p8)
  8. /{{j( )j}, {j( )w}, {w( )w}}/ > (glide assimilation /jj/>, /jw/>, /ww/>, g p8)
  9. /{j, w}/ > \ #_C excepted for /{jj, ww}/ > tense (word initial glide conditioning, h p9)
  10. > \  #_ (grammatical tense consonants detensing, will see when in morphology section, otherwise this law is useless, i p9)
  11. > \  _# (word final tense consonants detensing in rapid speech but not in deliberate speech, j p9)

Vowels

  1. /{æ, i, u}/ > \ {ħ, ʕ, Cˤ, x, q, ɣ}_ or _{same consonants} (vocalic lowering and retracting (ie. pharyngeal) by contact of pharyngeal, pharyngealized (ie. emphatic) and uvular consonants, a p9)
  2. > \  _{tense(Cː), CC, C#} (vocalic medialization before tense consonants, true (ə-less) consonant clusters and final consonant, b p10)
  3. /a/ > \  _# (word final /a/ coloration, c p10)
  4. /∅/ > /ə/ \ {C, #}_{C¹C¹(C), CC, C#} (schwa phonological insertion: if there's no vowel before a tense consonant, or a cluster of a tense consonant and another consonant, or a two-consonant cluster or a final consonant, place a schwa there, d p10)
  5. > (schwa phonetic articulation: sonorants syllabification (and "consonant release"), d p10)
  6. /{əj, əɡ, əw}/ > /{i(j), i(ɡ), u(w)}/ (glides syllabification to diphthong then in rapid speech reduction to pure vowel, e p10)
  7. /{{a, i, u}i, {i, u}a, iV, aa}/ > \  _C(C)(C)(V)# (elision and hiatus rupture when the second vowel is part of a suffix : 2nd /i/ elided, /j/ before /a/ or after /i/, with possible elision if /aa/ or iV/, f p10)
  8. /a / > /‿/ \ #(C)CC_a (elision between an a-final verb and an a-initial noun, f p10)
  9. /{a, u, i} {a, u, i}/ > /{a, u, i}‿j{a, u, ∅}/ (hiatus rupture : /j/ before vowels, and /i/ elided, f p10)

References

  1. 1.0 1.1 1.2 Penchoen, Thomas G. (1973) Tamazight of the Ayt Ndhir (Afroasiatic dialects; 1)‎, Los Angeles: Undena Publications, →ISBN

local export = {}

local m_IPA = require("Module:IPA")
local m_scripts = require("Module:scripts")
local m_scripts_util = require("Module:script utilities")
local m_a = require("Module:accent qualifier")
local lang = require("Module:languages").getByCode("tzm")
local s = mw.ustring.gsub

local c = {
     = "ɡ",
     = "dˤ",
     = "ð",
     = "ʃ",
     = "ʒ",
     = "j",
     = "zˤ",
     = "rˤ",
     = "sˤ",
     = "tˤ",
     = "ħ",
     = "ʕ",
     = "ə"
}
local p = {
     = "ʁ",
     = "ɣʷ",
     = "Tˤ",
     = "χ",
     = "xʷ",
     = "æ",
     = "ʝ",
     = "ð",
     = "ðˤ",
     = "ç",
     = "N",
     = "θ",
     = "β"
}
local t = {
     = "ɟː",
     = "Dː",
     = "Tˤː",
     = "fː",
     = "qː",
     = "cː",
     = "lː",
     = "mː",
     = "Nː",
     = "rː",
     = "sː",
     = "Cː",
     = "Tː",
     = "wː",
     = "ɟː",
     = "zː",
     = "zˤː",
     = "bː",
     = "χː",
     = "Jː",
     = "ɡʷː",
     = "rˤː",
     = "sˤː",
     = "Tˤː",
     = "qː",
     = "ħː",
     = "ʕː",
     = "kʷː"
}

local C = ""
local V = ""

local r = {
     = {
        ?ː?" .. C .. "??" .. V .. ")ʝ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)$"] = "%1jː%2",
        ?ː?" .. C .. "??" .. V .. ")ɣʷ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)$"] = "%1wː%2",
        ?ː?" .. C .. "??" .. V .. ")ʁ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)$"] = "%1ʁː%2",
        ?ː?" .. C .. "??" .. V .. ")ʝ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)"] = "%1jː%2",
        ?ː?" .. C .. "??" .. V .. ")ɣʷ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)"] = "%1wː%2",
        ?ː?" .. C .. "??" .. V .. ")ʁ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)"] = "%1ʁː%2",
        ?ː?" .. C .. "??" .. V .. ")ʝ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)$"] = "%1jː%2",
        ?ː?" .. C .. "??" .. V .. ")ɣʷ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)$"] = "%1wː%2",
        ?ː?" .. C .. "??" .. V .. ")ʁ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)$"] = "%1ʁː%2",
        ?ː?" .. C .. "??" .. V .. ")ʝ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)"] = "%1jː%2",
        ?ː?" .. C .. "??" .. V .. ")ɣʷ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)"] = "%1wː%2",
        ?ː?" .. C .. "??" .. V .. ")ʁ(" .. V .. "%(?" .. C .. "?%)??ː?" .. C .. "??)"] = "%1ʁː%2"
    },
     = {
        )(-ˤ)"] = "%1ˤ%2",
        -)()"] = "%1ˤ%2",
        -)$"] = "%1ˤ"
    },
     = {
        ?)"] = "β%1",
        ?)"] = "ð%1",
        ?)"] = "D%1",
        ?)"] = "z%1",
        ?)"] = "ʒ%1",
        ?)"] = "ʝ%1",
        ?)"] = "ɟ%1",
        ?)"] = "ɣ%1",
        ?)"] = "ɡ%1",
        ?)"] = "ʁ%1",
        ?)"] = "f%1",
        ?)"] = "θ%1",
        ?)"] = "T%1",
        ?)"] = "s%1",
        ?)"] = "ʃ%1",
        ?)"] = "ç%1",
        ?)"] = "c%1",
        ?)"] = "x%1",
        ?)"] = "k%1",
        ?)"] = "χ%1"
    },
     = {
        )( ?)()()"] = "%1%3%2%3%4",
        ( ?)()()"] = "%2%1%2%3",
        )( ?)()$"] = "%1%3%2%3",
        ˤ?)(ˤ?)( ?)()(ˤ?)()"] = "%1%4%2%3%4%5%6",
        (ˤ?)( ?)()(ˤ?)()"] = "%3%1%2%3%4%5",
        ˤ?)(ˤ?)( ?)()(ˤ?)$"] = "%1%4%2%3%4%5",
        ˤ?)(ˤ?)( ?)()(ˤ?)()"] = "%1%4%2%3%4%5%6",
        (ˤ?)( ?)()(ˤ?)()"] = "%3%1%2%3%4%5",
        ˤ?)(ˤ?)( ?)()(ˤ?)$"] = "%1%4%2%3%4%5",
        )( ?)()()"] = "%1%3%2%3%4",
        ( ?)()()"] = "%2%1%2%3",
        )( ?)()$"] = "%1%3%2%3",
        )( ?)()(ʷ)"] = "%1%3%2%3%4",
        ( ?)()(ʷ)"] = "%2%1%2%3",
        )( ?)()$"] = "%1%3%2%3",
        )( ?)()()"] = "%1%3%2%3%4",
        ( ?)()()"] = "%2%1%2%3",
        )( ?)()$"] = "%1%3%2%3",
        )ʷ( ?)(ʷ)()"] = "%1%3%2%3%4",
        )ʷ( ?)(ʷ)()$"] = "%1%3%2%3%4",
        )ʷ( ?)(ʷ)()"] = "%1%3%2%3%4",
        ʷ( ?)(ʷ)()"] = "%2%1%2%3",
        ʷ( ?)(ʷ)()$"] = "%2%1%2%3",
        ʷ( ?)(ʷ)()"] = "%2%1%2%3",
        )ʷ( ?)(ʷ)$"] = "%1%3%2%3",
        )w( ?)(ʷ)()"] = "%1%3%2%3%4",
        )w( ?)(ʷ)()$"] = "%1%3%2%3%4",
        )w( ?)(ʷ)()"] = "%1%3%2%3%4",
        ʷ)()"] = "%2%1%2%3",
        ʷ)()$"] = "%2%1%2%3",
        ʷ)()"] = "%2%1%2%3",
        )w( ?)(ʷ)$"] = "%1%3%2%3",
        )ʷ( ?)w()"] = "%1ɡʷ%2ɡʷ%3",
        )ʷ( ?)w()$"] = "%1ɡʷ%2ɡʷ%3",
        )ʷ( ?)w()"] = "%1ɡʷ%2ɡʷ%3",
        ʷ( ?)w()"] = "ɡʷ%1ɡʷ%2",
        ʷ( ?)w()$"] = "ɡʷ%1ɡʷ%2",
        ʷ( ?)w()"] = "ɡʷ%1ɡʷ%2",
        )ʷ( ?)w$"] = "%1ɡʷ%2ɡʷ",
        )( ?)()()"] = "%1%3%2%3%4",
        ( ?)()()"] = "%2%1%2%3",
        )( ?)()$"] = "%1%3%2%3",
        )( ?)()()"] = "%1%3%2%3%4",
        ( ?)()()"] = "%2%1%2%3",
        )( ?)()$"] = "%1%3%2%3"
    },
     = {?)"] = "T%1", ?)"] = "D%1"},
     = {
        )()( ?)n(?)"] = "%1%2%3%2%4",
        )()( ?)n(?)$"] = "%1%2%3%2%4"
    },
     = { = "ll",  = "l l",  = "rr",  = "r r"},
     = { = "ɡʷ%1ɡʷ"},
     = {
         = "i%1",
        )j(" .. C .. ")"] = "%1i%2",
         = "u%1",
        )w(" .. C .. ")"] = "%1u%2"
    },
     = {ˤ?)ː"] = "%1", ə?)(ˤ?)ː"] = "%1%2"},
     = {?)ː "] = "%1(ː) ", ?)ː$"] = "%1(ː)"},
     = {
        ː?)æ"] = "%1ɑ",
        ː?)i"] = "%1ɪ̙",
        ː?)u"] = "%1ʊ̙",
        )"] = "ɑ%1",
        )"] = "ɪ̙%1",
        )"] = "ʊ̙%1",
        -ˤ)"] = "ɑ%1",
        -ˤ)"] = "ɪ̙%1",
        -ˤ)"] = "ʊ̙%1",
        -)æ"] = "%1ɑ",
        -)i"] = "%1ɪ̙",
        -)u"] = "%1ʊ̙"
    },
     = {
        ?ː)"] = "æ̝%1",
        ?ː)"] = "i̞%1",
        ?ː)"] = "u̞%1",
        ?ː)"] = "ɑ̝%1",
        ?ː)"] = "ɪ̙̞%1",
        ?ː)"] = "ʊ̙̞%1",
        ?" .. C .. "?)"] = "æ̝%1",
        ?" .. C .. "?)"] = "i̞%1",
        ?" .. C .. "?)"] = "u̞%1",
        ?" .. C .. "?)"] = "ɑ̝%1",
        ?" .. C .. "?)"] = "ɪ̙̞%1",
        ?" .. C .. "?)"] = "ʊ̙̞%1",
        ?)$"] = "æ̝%1",
        ?)$"] = "i̞%1",
        ?)$"] = "u̞%1",
        ?)$"] = "ɑ̝%1",
        ?)$"] = "ɪ̙̞%1",
        ?)$"] = "ʊ̙̞%1",
        ?)"] = "æ̝%1",
        ?)"] = "i̞%1",
        ?)"] = "u̞%1",
        ?)"] = "ɑ̝%1",
        ?)"] = "ɪ̙̞%1",
        ?)"] = "ʊ̙̞%1"
    },
     = { = "ɑ", )"] = "ɑ%1"},
     = {
        ?ː?" .. C .. "??)(ˤ?)$"] = "%1ə%2",
        ?ː?" .. C .. "??)(ˤ?)"] = "%1ə%2",
        " .. V .. "?" .. C .. "?ː?" .. C .. "??)(ˤ?)$"] = "%1ə%2",
        " .. V .. "?" .. C .. "?ː?" .. C .. "??)(ˤ?)"] = "%1ə%2",
        ?ː?)(" .. C .. "?ː?ˤ?)"] = "%1ə%2",
        ?ː?)(" .. C .. "?ː?ˤ?)$"] = "%1ə%2",
        ?ː?)(?ː?)"] = "%1ə%2",
        ?ː?)(?ː?)$"] = "%1ə%2",
        ?ː?" .. C .. "??)(" .. C .. "?ː?)$"] = "%1ə%2",
        ?ː?" .. C .. "??)(" .. C .. "?ː?)"] = "%1ə%2",
        " .. C .. "??ː?" .. C .. "??)(" .. C .. "?ː?)$"] = "%1ə%2",
        " .. C .. "??ː?" .. C .. "??)(" .. C .. "?ː?)"] = "%1ə%2"
    },
     = {
        ?ː?)ə(" .. C .. "?)"] = "%1%2",
        ?ː?)"] = "%1",
        " .. C .. "?ː?)ə(" .. C .. "?)"] = "%1%2",
        )ə(" .. C .. "?ː?)"] = "%1%2",
        ?ː?)ə(" .. C .. "?)"] = "%1%2",
        )ə(" .. C .. "?ː?)$"] = "%1%2",
        " .. C .. "?ː?)ə(" .. C .. "?)$"] = "%1%2",
        ?ː?)ə(" .. C .. "?)$"] = "%1%2"
    },
     = {
        ?ː?)(" .. C .. "?" .. C .. "?)"] = "%1ə%2",
        ?ː?)(" .. C .. "?ː)"] = "%1ə%2",
        ?ː?)(" .. C .. "?" .. C .. "?)"] = "%1ə%2",
        ?ː?)(" .. C .. "?ː)"] = "%1ə%2",
        " .. C .. "?ː?)(" .. C .. "?" .. C .. "?)"] = "%1ə%2",
        " .. C .. "?ː?)(" .. C .. "?ː)"] = "%1ə%2",
        ?" .. C .. "?ː?)(" .. C .. "?" .. C .. "?)"] = "%1ə%2",
        ?" .. C .. "?ː?)(" .. C .. "?ː)"] = "%1ə%2",
        ?" .. C .. "?" .. C .. "?)(" .. C .. "?)"] = "%1ə%2",
    },
     = { = "m̩",  = "n̪̩",  = "l̩",  = "r̩"},
     = {
         = "ij",
         = "iʝ",
         = "uw"
    },
     = {
        )"] = "i(j)%1",
        )"] = "i(ʝ)%1",
        )"] = "u(w)%1",
         = "i(j)",
         = "i(ʝ)",
         = "u(w)"
    },
     = {
        ?" .. C .. "??" .. C .. "??" .. V .. "?)$"] = "ɑ%1",
        ?" .. C .. "??" .. C .. "??" .. V .. "?)"] = "ɑ%1",
        ?" .. C .. "??" .. C .. "??" .. V .. "?)$"] = "(ij)%1",
        ?" .. C .. "??" .. C .. "??" .. V .. "?)"] = "(ij)%1",
        ?" .. C .. "??" .. C .. "??" .. V .. "?)$"] = "u%1",
        ?" .. C .. "??" .. C .. "??" .. V .. "?)"] = "u%1",
        ?" .. C .. "??" .. C .. "??" .. V .. "?)$"] = "uj%1",
        ?" .. C .. "??" .. C .. "??" .. V .. "?)"] = "uj%1",
        ?" .. C .. "??" .. C .. "??" .. V .. "?)$"] = "(ɑj)%1",
        ?" .. C .. "??" .. C .. "??" .. V .. "?)"] = "(ɑj)%1"
    },
     = {j" .. C .. "??" .. C .. "?" .. C .. "?)a a"] = "%1‿a", ?" .. C .. "?" .. C .. "?)a a"] = "%1‿a"},--include every verbal prefix to recognize only the a-final conjugated forms
     = {) ()"] = "%1‿j%2"},
     = {‿j)i"] = "%1"},
     = { = "kʷkʷ",  = "ɡʷɡʷ"}
}


local dialects = {}
dialects = {
    {{"u", "h", "r", "s", "i", "d", "f", "g"}, {true, "b"}},
    {{"o", "ø"}, {true, "O"}, {"q", "Q", "t", "T", "n", "e", "c", "j", "a"}, {true, "l"}, {"m", "k", "p"}}
}

function export.pronunciation_phonemic(word)
    m_scripts_util.checkScript(word, "Tfng")

    translit = (lang:transliterate(word))

    return mw.ustring.gsub(translit, '.', c)
end

function export.pronunciation_phonetic(word, dialect)
    local word = export.pronunciation_phonemic(word)
    local o = dialects

    for j = 1, #o do -- set of rules
        if o == true then
            local N = ""
            while N ~= word do
                N = word
                for k = 2, #o do -- rule
                    for x, y in pairs(r]) do
                        word = s(word, x, y)
                    end
                end
            end
        else
            for k = 1, #o do -- rule
                for x, y in pairs(r]) do
                    word = s(word, x, y)
                end
            end
        end
    end

    word = s(word, '.?', p)
    for d, g in pairs(t) do
        word = s(word, d .. d, g)
        word = s(word, d .. " " .. d .. "()", g .. "‿" .. "%1")
        word = s(word, d .. " " .. d .. "$", "‿" .. g)
    end

    for j = 1, #o do -- set of o
        if o == true then
            local N = ""
            while N ~= word do
                N = word
                for k = 2, #o do -- rule
                    for x, y in pairs(r]) do
                        word = s(word, x, y)
                    end
                end
            end
        else
            for k = 1, #o do -- rule
                for x, y in pairs(r]) do
                    word = s(word, x, y)
                end
            end
        end
    end

    word = s(word, "T", "t̪")
    word = s(word, "D", "d̪")
    word = s(word, "N", "n̪")
    word = s(word, "C", "t͡ʃ")
    word = s(word, "J", "d͡ʒ")

    return word
end

function export.show(frame)
    local args = frame:getParent().args
    local page_title = mw.title.getCurrentTitle().text

    local p, results, results_ayt_ndhir = {}, {}, {}

    if args then
        for index, item in ipairs(args) do
            table.insert(p, (item ~= "") and item or nil)
        end
    else
        p = {page_title}
    end
 
    if args then
        for _, word in ipairs(p) do
            table.insert(results, {pron = "/" .. export.pronunciation_phonemic(word) .. "/"})
            table.insert(results_ayt_ndhir, {pron = " .. "]"})
        end
    else
        for _, word in ipairs(p) do
            table.insert(results, {pron = "/" .. export.pronunciation_phonemic(word) .. "/"})
            table.insert(results_ayt_ndhir, {pron = ""})
        end
    end

    return "* " .. m_IPA.format_IPA_full { lang = lang, items = results } .. "\n** " .. m_a.format_qualifiers(lang, {"Ayt Ndhir"}) .. " " .. m_IPA.format_IPA_full { lang = lang, items = results_ayt_ndhir }
end

return export