မဝ်ဂျူ:language section

နူ ဝိက်ရှေန်နရဳ

Documentation for this module may be created at မဝ်ဂျူ:language section/doc

b = require('Module:bases')
lang = require('Module:langues')
 
local p = {}

---------------------------------------------------------------------------------------------------------------------
-- SECTION DE LANGUE
 
-- Returns a link to a page representing the language if it exists : portail ou article.
-- Otherwise, simply returns the name of the language given as input.
function _page_langue(langue, code)
 
    local nom_langue = b.ucfirst(langue)    -- Nom en majuscule
    local texte_nom = nom_langue            -- Texte final
 
    -- Cette langue a-t-elle un portail?
    -- Oui? Lien!
    if (lang.has_portail(code)) then
    	local nom_portail = 'Portail:' .. nom_langue
        texte_nom = '[[' .. nom_portail .. '|' .. nom_langue .. ']]'
 
    -- Non: on regarde autre chose
    -- Nota: we avoid putting a link to [[conventions internationales]]
    -- since it is inappropriate (le sens de "conventions internationales" que
    -- we use is a priori not fixed and is not defined in said page
    -- au 22/06/2015)
    elseif (langue ~= 'conventions internationales') then
        -- Does the name of this language have a page?
        local page_langue = mw.title.new(langue)
 
        if (page_langue.exists) then
            texte_nom = '[[' .. langue .. '|' .. nom_langue .. ']]'
        end
    end
 
    return texte_nom
end
 
-- Preparation of the language title :
-- retrieving the name of the language and creating the displayed text (with anchor, category and link)
function _fait_titre_langue(code, is_not_cat)
 
    -- No code given? To correct  !
    if (code == nil or mw.text.trim(code) == '') then
        local textet = {"[[Wiktionnaire:Liste des langues|Langue inconnue]]"}
        table.insert(textet, b.fait_categorie_contenu("Wiktionary:Language sections without specified language"))
        return table.concat(textet)
    end
 
    code = mw.text.trim(code)
 
    -- Retrieving the name of the language
    local langue = lang.get_nom(code)
 
    -- Creation of the title from the name of the language
    local textet_titre = {}
    if langue ~= nil then
        texte_langue = _page_langue(langue, code)
        table.insert(textet_titre, texte_langue)
 
        -- Category
        if not is_not_cat then
            table.insert(textet_titre, b.fait_categorie_contenu(langue))
        end
 
    -- If the language code does not correspond to any defined language
    else
        table.insert(textet_titre, b.ucfirst(code))
        table.insert(textet_titre, "[[Wiktionnaire:Liste des langues|<span title=\"code langue inconnu\">*</span>]]")
        table.insert(textet_titre, b.fait_categorie_contenu('Wiktionnaire:Sections de langue avec code inconnu'))
    end
 
    return '<span class="sectionlangue" id="' .. code .. '">' .. table.concat(textet_titre) .. '</span>'
end

-- LANGUE : FONCTION POUR MODÈLE
-- Creating a language section title
function p.section_langue(frame)
    -- Retrieving the variables needed to create the title
    local args = frame:getParent().args
    return p.section_langue_args(args)
end
    
function p.section_langue_args(args)
    local code_langue = args[1]
    local is_not_cat = args['nocat']
    local rare

    if (b.page_de_contenu() == true) then
     rare = p.get_lettres_rares(code_langue)
    end
    if (rare == nil) then rare = '' end
    return _fait_titre_langue(code_langue, is_not_cat) .. rare
end

function p.get_lettres_rares(code)
    if (code == nil) then return nil end
 
    -- Spaces before and after removed
     code = mw.text.trim(tostring(code))
 
    -- Get the Wikimedia language table (cached)
    local langues = mw.loadData('Module:langues/lettres_rares')
    if (langues == nil) then return nil end
    if (langues[code] == nil) then return nil end
    if (langues[code]['rare'] == nil) then return nil end
 
    -- Categorys si lettres rares
    local cat = ""
    local l = 0
    titre = mw.title.getCurrentTitle().text
    for i = 1, string.len(titre) do
	l = mw.ustring.find(mw.ustring.sub(titre, i, i), tostring(langues[code]['rare']))
	if l ~= nil then
	    cat = cat .. "[[Category:" .. b.lc(mw.ustring.sub(titre, i, i)) .. ' en ' .. lang.get_nom(code) .. "]]"
	end
    end
    return cat
 
end

return p