মডিউল:বাংলা আভিধানিক উপাত্ত

এই মডিউলটি বর্তমানে পরীক্ষামূলক পর্যায়ে রয়েছে।

ব্যবহার

সম্পাদনা

{{#invoke:বাংলা আভিধানিক উপাত্ত|all| লেক্সিম নং }}

উদা:

{{#invoke:বাংলা আভিধানিক উপাত্ত|all|L301993}}

এই মডিউলের একটি সরাসরি ব্যবহার দেখতে, হৃদয় পাতাটি দেখুন।


local p = {}
local converter = require('মডিউল:ConvertDigit')

local bn_verb_item_mappings = {
    ["Q1350145"] = "vn_nom",
    ["Q21714344_Q3910936"] = "pres_simp_1",
    ["Q3910936_Q56650487"] = "pres_simp_2s",
    ["Q3910936_Q56650485"] = "pres_simp_2t",
    ["Q3910936_Q51929074"] = "pres_simp_3",
    ["Q3910936_Q56650512"] = "pres_simp_hon",
    ["Q21714344_Q7240943_Q75242466"] = "pres_prog_1_chalit",
    ["Q20613396_Q21714344_Q7240943"] = "pres_prog_1_sadhu",
    ["Q56650487_Q7240943_Q75242466"] = "pres_prog_2s_chalit",
    ["Q20613396_Q56650487_Q7240943"] = "pres_prog_2s_sadhu",
    ["Q56650485_Q7240943_Q75242466"] = "pres_prog_2t_chalit",
    ["Q20613396_Q56650485_Q7240943"] = "pres_prog_2t_sadhu",
    ["Q51929074_Q7240943_Q75242466"] = "pres_prog_3_chalit",
    ["Q20613396_Q51929074_Q7240943"] = "pres_prog_3_sadhu",
    ["Q56650512_Q7240943_Q75242466"] = "pres_prog_hon_chalit",
    ["Q20613396_Q56650512_Q7240943"] = "pres_prog_hon_sadhu",
    ["Q1240211_Q21714344_Q75242466"] = "pres_perf_1_chalit",
    ["Q1240211_Q20613396_Q21714344"] = "pres_perf_1_sadhu",
    ["Q1240211_Q56650487_Q75242466"] = "pres_perf_2s_chalit",
    ["Q1240211_Q20613396_Q56650487"] = "pres_perf_2s_sadhu",
    ["Q1240211_Q56650485_Q75242466"] = "pres_perf_2t_chalit",
    ["Q1240211_Q20613396_Q56650485"] = "pres_perf_2t_sadhu",
    ["Q1240211_Q51929074_Q75242466"] = "pres_perf_3_chalit",
    ["Q1240211_Q20613396_Q51929074"] = "pres_perf_3_sadhu",
    ["Q1240211_Q56650512_Q75242466"] = "pres_perf_hon_chalit",
    ["Q1240211_Q20613396_Q56650512"] = "pres_perf_hon_sadhu",
    ["Q52434162_Q56650487"] = "pres_imp_2s",
    ["Q52434162_Q56650485"] = "pres_imp_2t",
    ["Q51929074_Q52434162_Q75242466"] = "pres_imp_3_chalit",
    ["Q20613396_Q51929074_Q52434162"] = "pres_imp_3_sadhu",
    ["Q52434162_Q56650512_Q75242466"] = "pres_imp_hon_chalit",
    ["Q20613396_Q52434162_Q56650512"] = "pres_imp_hon_sadhu",
    ["Q1392475_Q21714344_Q75242466"] = "past_simp_1_chalit",
    ["Q1392475_Q20613396_Q21714344"] = "past_simp_1_sadhu",
    ["Q1392475_Q56650487_Q75242466"] = "past_simp_2s_chalit",
    ["Q1392475_Q20613396_Q56650487"] = "past_simp_2s_sadhu",
    ["Q1392475_Q56650485_Q75242466"] = "past_simp_2t_chalit",
    ["Q1392475_Q20613396_Q56650485"] = "past_simp_2t_sadhu",
    ["Q1392475_Q51929074_Q75242466"] = "past_simp_3_chalit",
    ["Q1392475_Q20613396_Q51929074"] = "past_simp_3_sadhu",
    ["Q1392475_Q56650512_Q75242466"] = "past_simp_hon_chalit",
    ["Q1392475_Q20613396_Q56650512"] = "past_simp_hon_sadhu",
    ["Q21714344_Q56650537_Q75242466"] = "past_prog_1_chalit",
    ["Q20613396_Q21714344_Q56650537"] = "past_prog_1_sadhu",
    ["Q56650487_Q56650537_Q75242466"] = "past_prog_2s_chalit",
    ["Q20613396_Q56650487_Q56650537"] = "past_prog_2s_sadhu",
    ["Q56650485_Q56650537_Q75242466"] = "past_prog_2t_chalit",
    ["Q20613396_Q56650485_Q56650537"] = "past_prog_2t_sadhu",
    ["Q51929074_Q56650537_Q75242466"] = "past_prog_3_chalit",
    ["Q20613396_Q51929074_Q56650537"] = "past_prog_3_sadhu",
    ["Q56650512_Q56650537_Q75242466"] = "past_prog_hon_chalit",
    ["Q20613396_Q56650512_Q56650537"] = "past_prog_hon_sadhu",
    ["Q21714344_Q623742_Q75242466"] = "past_perf_1_chalit",
    ["Q20613396_Q21714344_Q623742"] = "past_perf_1_sadhu",
    ["Q56650487_Q623742_Q75242466"] = "past_perf_2s_chalit",
    ["Q20613396_Q56650487_Q623742"] = "past_perf_2s_sadhu",
    ["Q56650485_Q623742_Q75242466"] = "past_perf_2t_chalit",
    ["Q20613396_Q56650485_Q623742"] = "past_perf_2t_sadhu",
    ["Q51929074_Q623742_Q75242466"] = "past_perf_3_chalit",
    ["Q20613396_Q51929074_Q623742"] = "past_perf_3_sadhu",
    ["Q56650512_Q623742_Q75242466"] = "past_perf_hon_chalit",
    ["Q20613396_Q56650512_Q623742"] = "past_perf_hon_sadhu",
    ["Q21714344_Q75242466_Q75243920"] = "hab_1_chalit",
    ["Q20613396_Q21714344_Q75243920"] = "hab_1_sadhu",
    ["Q56650487_Q75242466_Q75243920"] = "hab_2s_chalit",
    ["Q20613396_Q56650487_Q75243920"] = "hab_2s_sadhu",
    ["Q56650485_Q75242466_Q75243920"] = "hab_2t_chalit",
    ["Q20613396_Q56650485_Q75243920"] = "hab_2t_sadhu",
    ["Q51929074_Q75242466_Q75243920"] = "hab_3_chalit",
    ["Q20613396_Q51929074_Q75243920"] = "hab_3_sadhu",
    ["Q56650512_Q75242466_Q75243920"] = "hab_hon_chalit",
    ["Q20613396_Q56650512_Q75243920"] = "hab_hon_sadhu",
    ["Q21714344_Q75242466_Q96323395"] = "fut_simp_1_chalit",
    ["Q20613396_Q21714344_Q96323395"] = "fut_simp_1_sadhu",
    ["Q56650487_Q75242466_Q96323395"] = "fut_simp_2s_chalit",
    ["Q20613396_Q56650487_Q96323395"] = "fut_simp_2s_sadhu",
    ["Q56650485_Q75242466_Q96323395"] = "fut_simp_2t_chalit",
    ["Q20613396_Q56650485_Q96323395"] = "fut_simp_2t_sadhu",
    ["Q51929074_Q75242466_Q96323395"] = "fut_simp_3_chalit",
    ["Q20613396_Q51929074_Q96323395"] = "fut_simp_3_sadhu",
    ["Q56650512_Q75242466_Q96323395"] = "fut_simp_hon_chalit",
    ["Q20613396_Q56650512_Q96323395"] = "fut_simp_hon_sadhu",
    ["Q56650487_Q75242466_Q75244800"] = "fut_imp_2s_chalit",
    ["Q20613396_Q56650487_Q75244800"] = "fut_imp_2s_sadhu",
    ["Q56650485_Q75242466_Q75244800"] = "fut_imp_2t_chalit",
    ["Q20613396_Q56650485_Q75244800"] = "fut_imp_2t_sadhu",
    ["Q51929074_Q75242466_Q75244800"] = "fut_imp_3_chalit",
    ["Q20613396_Q51929074_Q75244800"] = "fut_imp_3_sadhu",
    ["Q56650512_Q75242466_Q75244800"] = "fut_imp_hon_chalit",
    ["Q20613396_Q56650512_Q75244800"] = "fut_imp_hon_sadhu",
    ["Q1050494_Q1423674_Q75242466"] = "prog_chalit",
    ["Q1050494_Q1423674_Q20613396"] = "prog_sadhu",
    ["Q1050494_Q1424306_Q75242466"] = "perf_chalit",
    ["Q1050494_Q1424306_Q20613396"] = "perf_sadhu",
    ["Q1050494_Q625581_Q75242466"] = "cond_chalit",
    ["Q1050494_Q20613396_Q625581"] = "cond_sadhu",
    ["Q1350145_Q146233_Q75242466"] = "vn_gen_chalit",
    ["Q1350145_Q146233_Q20613396"] = "vn_gen_sadhu"
}

bn_noun_item_mappings = {
    ["Q131105"] = 'nom',
    ["Q146233"] = 'gen',
    ["Q146078"] = 'acc',
    ["Q202142"] = 'loc',
    ["Q145599"] = 'dat'
}

formatter_urls = {
    -- বহুভাষিক
    ['P11512'] = 'https://ids.clld.org/units/$1',
    ['P11055'] = 'https://diacl.uni-frankfurt.de/Lexeme/Details/$1',
    -- ফরাসি
    ['P11118'] = 'https://www.larousse.fr/dictionnaires/francais/_/$1',
    ['P7732'] = 'https://www.dictionnaire-academie.fr/article/A9$1'
}

-- Return the first form of the lexeme which has exactly the given grammatical feature.
local function formWithSingleGrammaticalFeature( lexeme, item_id )
    for i, form in pairs( lexeme:getForms() ) do
        local grammaticalFeatures = form:getGrammaticalFeatures()
        if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then
            return form
        end
    end
    return nil
end

-- Return the representation of the form in the given language code,
-- or the first representation otherwise.
local function representationInLanguage( form, language_code )
    for i, representation in pairs( form:getRepresentations() ) do
        if representation[2] == language_code then
            return representation
        end
    end
    return form:getRepresentations()[1]
end

local function getArticleLinkTemplate(frame, stmt_value)
    template = ''
    stmt_item = mw.wikibase.getEntity(stmt_value)
    if stmt_item:getSitelink('bnwiki') ~= nil then
        template = frame:expandTemplate{
            title='উইকিপিডিয়া',
            args={stmt_item:getSitelink('bnwiki')}
        }
    elseif stmt_item:getSitelink('enwiki') ~= nil then
        template = frame:expandTemplate{
            title='উইকিপিডিয়া',
            args={[1]=stmt_item:getSitelink('enwiki'), lang='en'}
        }
    end
    return template
end

local function getArticleLinks ( frame, sense )
    article_links = ''
    for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম
        stmt_value = stmt.mainsnak.datavalue.value.id
        article_links = article_links .. getArticleLinkTemplate(frame, stmt_value)
    end
    for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয়
        stmt_value = stmt.mainsnak.datavalue.value.id
        article_links = article_links .. getArticleLinkTemplate(frame, stmt_value)
    end
    return article_links
end

local function getExternalLinks ( lexeme )
    external_links = {}
    for property_id, formatter_url in pairs(formatter_urls) do
        for i, stmt in ipairs(lexeme:getAllStatements(property_id)) do
            property_source = mw.wikibase.getBestStatements(property_id, 'P9073') -- প্রযোজ্য 'এই উৎসে বিবৃত' মান
            if next(property_source) ~= nil then
                source_name = mw.wikibase.getLabel(property_source[1].mainsnak.datavalue.value.id)
            else
                source_name = mw.wikibase.getLabel(property_id)
            end
            formatted_link = mw.ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value)
            new_link = '* [' .. formatted_link .. ' ' .. source_name .. ']'
            table.insert(external_links, new_link)
        end
    end
    return table.concat(external_links, '\n')
end

local function termSpan( term )
    local text = term[1]
    local lang = term[2]
    local dir = mw.language.new( lang ):getDir()
    local span = mw.html.create( 'span' )
    span:attr( 'lang', lang )
        :attr( 'dir', dir )
        :wikitext( text )
    return tostring( span )
end

local function termLink( term )
    local text = term[1]
    local lang = term[2]
    local dir = mw.language.new( lang ):getDir()
    local span = mw.html.create( 'span' )
    span:attr( 'lang', lang )
        :attr( 'dir', dir )
        :wikitext( '[[' .. text .. ']]' )
    return tostring( span )
end

function getLemmata( current_lexeme )
    lemma_string = ''
    for i, rep in pairs(current_lexeme:getLemmas()) do
        if lemma_string == '' then
            lemma_string = termSpan(rep)
        else
            lemma_string = lemma_string .. '/' .. termSpan(rep)
        end
    end
    return lemma_string
end

function getLinkedLemmata( current_lexeme )
    lemma_string = ''
    for i, rep in pairs(current_lexeme:getLemmas()) do
        if lemma_string == '' then
            lemma_string = termLink(rep)
        else
            lemma_string = lemma_string .. '/' .. termLink(rep)
        end
    end
    return lemma_string
end

indicator_suffixes = {
    ['P50'] = '',  -- লেখক
    ['P98'] = ' সম্পাদিত',
    ['P655'] = ' অনূদিত'
}

function formatReference ( reference )
    example_from_id = reference.snaks['P248'][1].datavalue.value.id -- এই উৎসে বিবৃত
    example_from_text = mw.wikibase.getLabel( example_from_id )

    inside_text = ''
    for property, suffix in pairs(indicator_suffixes) do
        for i, statement in pairs(mw.wikibase.getEntity(example_from_id):getBestStatements(property)) do
            example_from_author = statement.mainsnak.datavalue.value.id
            example_from_author_text = mw.wikibase.getLabel( example_from_author )
            example_from_author_link = mw.wikibase.getSitelink( example_from_author, 'bnwikisource' )
            inside_text = "—[[:s:" .. example_from_author_link .. '|' .. example_from_author_text .. "]]" .. suffix
        end
    end

    example_from_publishedin_out = ''
    if #mw.wikibase.getEntity(example_from_id):getBestStatements('P1433') ~= 0 then -- এতে প্রকাশিত
        example_from_publishedin = mw.wikibase.getEntity(example_from_id):getBestStatements('P1433')[1].mainsnak.datavalue.value.id
        example_from_publishedin_text = mw.wikibase.getLabelByLang( example_from_publishedin, 'bn' )
        example_from_publishedin_link = mw.wikibase.getSitelink( example_from_publishedin, 'bnwikisource' )
        example_from_publishedin_out = " ([[:s:" .. example_from_publishedin_link .. '|' .. example_from_publishedin_text .. ']] নামক রচনায় প্রকাশিত)'
    end

    example_from_link = mw.wikibase.getSitelink( example_from_id, 'bnwikisource' )
    if reference.snaks['P7421'] ~= nil then
        example_from_lines = reference.snaks['P7421'][1].datavalue.value -- পংক্তি(গুলো)
        example_from_lines = converter._main(example_from_lines) .. " নং পংক্তি"
    elseif reference.snaks['P958'] ~= nil then
        example_from_lines = reference.snaks['P958'][1].datavalue.value -- অনুচ্ছেদ, চরণ, বা অধ্যায়
        example_from_lines = '"' .. example_from_lines .. '" নামক অনুচ্ছেদ'
    elseif reference.snaks['P792'] ~= nil then
        example_from_lines = reference.snaks['P792'][1].datavalue.value -- পরিচ্ছেদ
        example_from_lines = converter._main(example_from_lines) .. " নং পরিচ্ছেদ"
    elseif reference.snaks['P304'] ~= nil then
        example_from_lines = reference.snaks['P304'][1].datavalue.value -- পাতা
        example_from_lines = converter._main(example_from_lines) .. " নং পাতায়"
    end
    if example_from_link ~= nil then
        inside_text = inside_text .. ', [[File:Wikisource-logo.svg|16px|link=s:]] [[:s:' .. example_from_link .. '|' .. example_from_text .. ']]'
    else
        inside_text = inside_text .. ', ' .. example_from_text
    end
    inside_text = inside_text .. example_from_publishedin_out
    inside_text = inside_text .. ", " .. example_from_lines
    return inside_text
end

function getExamples( current_lexeme, sense_id )
    examples = mw.html.create('dl')
    for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ
        if stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ
            example_text = stmt.mainsnak.datavalue.value.text
            example_lang = stmt.mainsnak.datavalue.value.language
            example_form = mw.wikibase.getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
            example_form_str = example_form:getRepresentation('bn')
            example_text = mw.ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
            example_str = termSpan({example_text, example_lang})
            local reference_text = ''
            for j, reference in pairs(stmt.references) do
                reference_text = reference_text .. '\n\n' .. formatReference(reference)
            end
            examples:tag('dd'):wikitext("''" .. example_str .. "''"):done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text)
        end
    end
    return tostring(examples)
end

function getCategory ( current_lexeme )
    cat_id = current_lexeme:getLexicalCategory()
    cat_text = mw.wikibase.getLabelByLang( cat_id, 'bn' )
    if cat_id == 'Q1084' then -- বিশেষ্য
        cat_text = cat_text .. '[[বিষয়শ্রেণী:বাংলা বিশেষ্য]]'
    elseif cat_id == 'Q34698' then -- বিশেষণ
        cat_text = cat_text .. '[[বিষয়শ্রেণী:বাংলা বিশেষণ]]'
    elseif cat_id == 'Q24905' then -- ক্রিয়াপদ
        cat_text = cat_text .. '[[বিষয়শ্রেণী:বাংলা ক্রিয়া]]'
    end
    return cat_text
end

function getMeanings ( frame, current_lexeme )
    meanings = mw.html.create( 'ol' )
    for i, sense in pairs(current_lexeme:getSenses()) do
        bn_gloss_text = ''
        en_gloss_text = ''
        other_gloss_text = ''
        other_gloss_lang = ''

        glosses = sense:getGlosses()
        for j, gloss in pairs(glosses) do
            if gloss[2] == 'bn' then
                bn_gloss_text = gloss[1]
            elseif gloss[2] == 'en' then
                en_gloss_text = gloss[1]
            else
                other_gloss_text = gloss[1]
                other_gloss_lang = gloss[2]
            end
        end

        if bn_gloss_text ~= '' then
            main_gloss_text = bn_gloss_text
        elseif en_gloss_text ~= '' then
            main_gloss_text = en_gloss_text .. "<sup><em>ইংরেজি</em></sup>"
        else
            main_gloss_text = other_gloss_text .. "<sup><em>" .. mw.language.fetchLanguageName(other_gloss_lang, 'bn') .. "</em></sup>"
        end
        gloss_text = main_gloss_text

        for i, stmt in pairs(sense:getAllStatements('P8394')) do -- টিপ্পনীর উদ্ধৃতি
            gloss_quote = termSpan({stmt.mainsnak.datavalue.value.text, stmt.mainsnak.datavalue.value.language})
            if stmt.references[1] ~= nil then
                gloss_quote = '"' .. gloss_quote .. '" ' .. formatReference ( stmt.references[1] )
            end
            gloss_text = gloss_text .. frame:extensionTag('ref', gloss_quote)
        end

        first_sense_image = ''
        sense_images = sense:getAllStatements('P18')
        if next(sense_images) ~= nil then
            first_sense_image = sense_images[1].mainsnak.datavalue.value
        end
        if first_sense_image ~= '' then
            gloss_text = gloss_text .. '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]'
        end

        externallinks = getArticleLinks(frame, sense)
        if externallinks ~= '' then
            gloss_text = gloss_text .. externallinks
        end

        examples = getExamples ( current_lexeme, sense:getId() )
        meanings:tag('li'):wikitext(gloss_text):wikitext(examples)
    end
    return meanings 
end

function get_pronunciation_base_form( current_lexeme )
    base_form = nil
    if current_lexeme:getLanguage() == 'Q9610' then -- বাংলা
        if current_lexeme:getLexicalCategory() == 'Q1084' then -- বিশেষ্য
            base_form = formWithSingleGrammaticalFeature( current_lexeme, 'Q131105' ) -- কর্তৃকারক
        elseif current_lexeme:getLexicalCategory() == 'Q24905' then -- ক্রিয়া
            base_form = formWithSingleGrammaticalFeature( current_lexeme, 'Q1350145' ) -- ক্রিয়া বিশেষ্য
        end
    end
    if base_form == nil then
        for i, form in pairs(current_lexeme:getForms()) do
            base_form = form
            break
        end
    end
    return base_form
end

function getEtymology ( current_lexeme )
    etymology = ''
    for i, stmt in pairs(current_lexeme:getAllStatements('P5191')) do
        origin_lexeme = mw.wikibase.getEntity(stmt.mainsnak.datavalue.value.id)
        origin_lexeme_lang = origin_lexeme:getLanguage()
        if etymology == '' then
            etymology = getLinkedLemmata(origin_lexeme) .. ' (' .. mw.wikibase.getLabel(origin_lexeme_lang) .. ')'
        else
            etymology = etymology .. ' ' .. getLinkedLemmata(origin_lexeme) .. ' (' .. mw.wikibase.getLabel(origin_lexeme_lang) .. ')'
        end
    end
    return etymology
end

function getPronunciation ( frame, current_lexeme )
    pronunciation = ''
    base_form = get_pronunciation_base_form(current_lexeme)
    if base_form ~= nil then
        for i, stmt in pairs(base_form:getAllStatements('P443')) do
            pronunciation_file = stmt.mainsnak.datavalue.value
            pronunciation = pronunciation .. '\n* ' .. frame:expandTemplate{
                title= 'অডিও',
                args = {'bn', pronunciation_file }
            }
        end
    end
    return pronunciation
end

function conj_table_arguments ( current_lexeme )
    local forms = {}
    for i, form in pairs(current_lexeme:getForms()) do
        local reps = form:getRepresentations()
        local feats = form:getGrammaticalFeatures()
        table.sort(form:getGrammaticalFeatures())
        local feats_cat = table.concat(feats,'_')
        local table_arg = bn_verb_item_mappings[feats_cat]
        if forms[table_arg] ~= nil then
            forms[table_arg] = forms[table_arg] .. '/' .. reps[1][1]
        else
            forms[table_arg] = reps[1][1]
        end
    end
    return forms
end

function getConjTable ( frame , current_lexeme )
    return frame:expandTemplate{
        title= 'bn-ধাতুরূপ/ছক',
        args = conj_table_arguments ( current_lexeme )
    }
end

function decl_table_arguments ( current_lexeme )
    local forms = {}
    for i, form in pairs(current_lexeme:getForms()) do
        local reps = form:getRepresentations()
        local feats = form:getGrammaticalFeatures()[1]
        local table_arg = bn_noun_item_mappings[feats]
        if forms[table_arg] ~= nil then
            forms[table_arg] = forms[table_arg] .. '/' .. reps[1][1]
        else
            forms[table_arg] = reps[1][1]
        end
    end
    return forms
end

function getDeclTable ( frame , current_lexeme )
    return frame:expandTemplate{
        title= 'bn-শব্দরূপ/ছক',
        args = decl_table_arguments ( current_lexeme )
    }
end

function p.all( frame )
    lexeme_id = frame.args[1]
    current_lexeme = mw.wikibase.getEntity(lexeme_id)
    current_language = current_lexeme:getLanguage()
    sections = {}

    cat_text = '===' .. getCategory ( current_lexeme ) .. frame:expandTemplate{
        title='anchor',
        args={lexeme_id}
    } .. '==='
    table.insert(sections, cat_text)
    table.insert(sections, frame:expandTemplate{
        title= 'সংক্ষিপ্ত',
        args = {':d:Lexeme:' .. lexeme_id}
    })

    etymology = getEtymology ( current_lexeme )
    if etymology ~= '' then
        table.insert(sections, '==== ব্যুৎপত্তি ====')
        table.insert(sections, tostring(etymology))
    end

    pronunciation = getPronunciation ( frame, current_lexeme )
    if pronunciation ~= '' then
        table.insert(sections, '==== উচ্চারণ ====')
        table.insert(sections, tostring(pronunciation))
    end

    meanings, sense_sources = getMeanings ( frame, current_lexeme )
    table.insert(sections, '==== অর্থসমূহ ====')
    table.insert(sections, tostring(meanings))

    cat_id = current_lexeme:getLexicalCategory()
    conjTable = ''
    if current_language == 'Q9610' then -- বাংলা
        if cat_id == 'Q24905' then -- ক্রিয়া
            conjTable = getConjTable ( frame, current_lexeme )
            table.insert(sections, conjTable)
        elseif cat_id == 'Q1084' then -- বিশেষ্য
            conjTable = getDeclTable ( frame, current_lexeme )
            table.insert(sections, conjTable)
        end
    end

    table.insert(sections, '==== তথ্যসূত্র ====')
    table.insert(sections, frame:extensionTag('references'))
    
    external_links = getExternalLinks ( current_lexeme )
    if external_links ~= '' then
        table.insert(sections, '==== বহিঃসংযোগ ====')
        table.insert(sections, external_links)
    end

    return table.concat(sections,"\n\n")
end

return p