উইকিঅভিধান bnwiktionary https://bn.wiktionary.org/wiki/%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A6%A7%E0%A6%BE%E0%A6%A8_%E0%A6%AA%E0%A6%BE%E0%A6%A4%E0%A6%BE MediaWiki 1.47.0-wmf.2 case-sensitive মিডিয়া বিশেষ আলাপ ব্যবহারকারী ব্যবহারকারী আলাপ উইকিঅভিধান উইকিঅভিধান আলোচনা চিত্র চিত্র আলোচনা মিডিয়াউইকি মিডিয়াউইকি আলোচনা টেমপ্লেট টেমপ্লেট আলোচনা সাহায্য সাহায্য আলোচনা বিষয়শ্রেণী বিষয়শ্রেণী আলোচনা পরিশিষ্ট পরিশিষ্ট আলোচনা ছন্দ ছন্দ আলোচনা থিসরাস থিসরাস আলোচনা উদ্ধৃতি উদ্ধৃতি আলোচনা TimedText TimedText talk মডিউল মডিউল আলাপ ইভেন্ট ইভেন্ট আলোচনা বাংলাদেশ 0 2132 508940 358126 2026-05-17T13:36:08Z ~2026-29676-49 14698 508940 wikitext text/x-wiki [[File:Flag of Bangladesh.svg|center|thumb|বাংলাদেশের পতাকা]] ==অসমীয়া== ===নামবাচক বিশেষ্য=== {{নামবাচক বিশেষ্য|as}} # বাংলাদেশ ---- {{উইকিপিডিয়া|lang=as|sc=Beng}} =={{ভাষা|bn}}== ===ব্যুৎপত্তি=== {{term|বাংলা|lang=bn|sc=Beng}} + {{term|দেশ|lang=bn|sc=Beng}} ===উচ্চারণ=== * {{IPA|bn|/ˈbaŋlaˌd̪eʃ/}} * {{অডিও|bn|Bn-বাংলাদেশ.oga|অডিও}} * {{অডিও|bn|LL-Q9610 (ben)-Titodutta-বাংলাদেশ.wav|অডিও (ভারত)}} * {{অডিও|bn|LL-Q9610 (ben)-Tahmid-বাংলাদেশ.wav|অডিও (বাংলাদেশ)}} ===নামবাচক বিশেষ্য=== {{বিশেষ্য|bn}} # বাংলাদেশ # দক্ষিণ এশিয়ার একটি দেশ # ভাষার জন্য জীবন দেয়া পৃথীবির একমাত্র জাতির (বাঙালির) দেশ #: {{উদা|bn|[[আমার]] [[পরিবার]] '''[[বাংলাদেশ|বাংলাদেশে]]''' [[থাকা|থাকে]]।}} ====প্রতিশব্দ==== * {{সংযোগ|bn|গণপ্রজাতন্ত্রী বাংলাদেশ|sc=Beng}} ====উদ্ভূত শব্দ==== * {{সংযোগ|bn|বাংলাদেশী|sc=Beng}}, {{সংযোগ|bn|বাংলাদেশি|sc=Beng}} ====আরও দেখুন==== * {{সংযোগ|bn|বঙ্গ}} * {{সংযোগ|bn|বাঙালি|sc=Beng}} * {{সংযোগ|bn|ঢাকা|sc=Beng}} ---- {{উইকিপিডিয়া|lang=bn|sc=Beng}} ==বিষ্ণুপ্রিয়া মণিপুরী== ===নামবাচক বিশেষ্য=== {{নামবাচক বিশেষ্য|bpy}} # বাংলাদেশ # "বাংলাদেশ" শব্দটিতে তিনটি অক্ষর আছে {{উইকিপিডিয়া|lang=bpy|sc=Beng}} [[বিষয়শ্রেণী:as:দেশ]] [[বিষয়শ্রেণী:bn:দেশ]] [[বিষয়শ্রেণী:bpy:দেশ]] gvzn5ec5xzd65o9svy59ozogswo52hp 508943 508940 2026-05-17T15:44:28Z ~2026-29699-21 14703 508943 wikitext text/x-wiki [[File:Flag of Bangladesh.svg|center|thumb|বাংলাদেশের পতাকা]] ==অসমীয়া== ===নামবাচক বিশেষ্য=== {{নামবাচক বিশেষ্য|as}} # বাংলাদেশ ---- {{উইকিপিডিয়া|lang=as|sc=Beng}} =={{ভাষা|bn}}== ===ব্যুৎপত্তি=== {{term|বাংলা|lang=bn|sc=Beng}} + {{term|দেশ|lang=bn|sc=Beng}} ===উচ্চারণ=== * {{IPA|bn|/ˈbaŋlaˌd̪eʃ/}} * {{অডিও|bn|Bn-বাংলাদেশ.oga|অডিও}} * {{অডিও|bn|LL-Q9610 (ben)-Titodutta-বাংলাদেশ.wav|অডিও (ভারত)}} * {{অডিও|bn|LL-Q9610 (ben)-Tahmid-বাংলাদেশ.wav|অডিও (বাংলাদেশ)}} ===নামবাচক বিশেষ্য=== {{বিশেষ্য|bn}} # বাংলাদেশ # দক্ষিণ এশিয়ার একটি দেশ #: {{উদা|bn|[[আমার]] [[পরিবার]] '''[[বাংলাদেশ|বাংলাদেশে]]''' [[থাকা|থাকে]]।}} ====প্রতিশব্দ==== * {{সংযোগ|bn|গণপ্রজাতন্ত্রী বাংলাদেশ|sc=Beng}} ====উদ্ভূত শব্দ==== * {{সংযোগ|bn|বাংলাদেশী|sc=Beng}}, {{সংযোগ|bn|বাংলাদেশি|sc=Beng}} ====আরও দেখুন==== * {{সংযোগ|bn|বঙ্গ}} * {{সংযোগ|bn|বাঙালি|sc=Beng}} * {{সংযোগ|bn|ঢাকা|sc=Beng}} ---- {{উইকিপিডিয়া|lang=bn|sc=Beng}} ==বিষ্ণুপ্রিয়া মণিপুরী== ===নামবাচক বিশেষ্য=== {{নামবাচক বিশেষ্য|bpy}} # বাংলাদেশ # "বাংলাদেশ" শব্দটিতে তিনটি অক্ষর আছে {{উইকিপিডিয়া|lang=bpy|sc=Beng}} [[বিষয়শ্রেণী:as:দেশ]] [[বিষয়শ্রেণী:bn:দেশ]] [[বিষয়শ্রেণী:bpy:দেশ]] nd1mqt4qlor5n2sgorosc41e7nfpmfl অপেক্ষা 0 10583 508942 444113 2026-05-17T15:30:55Z ~2026-29839-45 14702 /* উচ্চারণ */ 508942 wikitext text/x-wiki == {{ভাষা|bn}} == === উচ্চারণ === {{IPA|bn|/ɔ.pek.kʰa/}} জান আই লাভ ইউ '''ছন্দ''' – অ-পেক্-খা '''বানান''' – অ-পে-ক্ষা === ব্যুৎপত্তি === {{com|bn|অপ|√ঈক্ষ্|অ|আ}} → "অপ" উপসর্গ এবং সংস্কৃত "√ঈক্ষ্" (দেখা) ধাতু থেকে উদ্ভূত। '''উদাহরণ''' : আমি তোমার জন্য অনেকক্ষণ অপেক্ষা করছি। ==== বিস্তারিত তথ্য ==== অপেক্ষা হলো কারো বা কিছুর জন্য ধৈর্য ধরে প্রতীক্ষা করা। এটি তুলনা অর্থেও ব্যবহৃত হয় (একের চেয়ে অন্য)। ==== সমার্থক শব্দ ==== প্রতীক্ষা, সবুর, দেরি ==== বিপরীতার্থক শব্দ ==== (সরাসরি বিপরীতার্থক শব্দ নেই) === অনুবাদ === ইংরেজি: {{t|en|wait}}, {{t|en|expectation}} 81cnq8m2uj17krvjyy29ds0bv9bu4ad মডিউল:আভিধানিক উপাত্ত 828 50158 508931 508905 2026-05-17T12:09:21Z Redmin 6857 508931 Scribunto text/plain local p = {} local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n') local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format local getArgs = require('Module:Arguments').getArgs local wb = mw.wikibase local ustring = mw.ustring local html = mw.html local mw_lang = mw.language local entity_cache = {} local reference_cache = {} local forms local lang_code local function countWords(string) local count = 0 for word in ustring.gmatch(string, "%S+") do count = count + 1 end return count end local function normalizeLemmas(text) text = mw.ustring.gsub(text, "ٰ", "") text = mw.ustring.gsub(text, "ِ", "") text = mw.ustring.gsub(text, "[ً-ٟ]", "") text = mw.ustring.gsub(text, "أ", "ا") --text = mw.ustring.gsub(text, "إ", "ا") text = mw.ustring.gsub(text, "آ", "ا") return text end local function serializeTable(val, name, skipnewlines, depth) -- https://stackoverflow.com/a/6081639 skipnewlines = skipnewlines or false depth = depth or 0 local tmp = string.rep(" ", depth) if name then tmp = tmp .. name .. " = " end if type(val) == "table" then tmp = tmp .. "{" .. (not skipnewlines and "\n" or "") for k, v in pairs(val) do tmp = tmp .. serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "") end tmp = tmp .. string.rep(" ", depth) .. "}" elseif type(val) == "number" then tmp = tmp .. tostring(val) elseif type(val) == "string" then tmp = tmp .. string.format("%q", val) elseif type(val) == "boolean" then tmp = tmp .. (val and "true" or "false") else tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\"" end return tmp end -- Use this to safely expand templates when you are not sure that they exist. local function safeExpand(frame, title, args) local _, result = pcall(function() return frame:expandTemplate{ title = title, args = args } end) if result:find('does not exist') then -- expandTemplate{} doesn't seem to throw any error that can be handled with pcall() so string search is the only viable option. return nil end return result end local function getReference( id, reference ) local out_id = nil local url_value if reference_cache[id] == nil then local ref_text = references(reference, wb, mw_lang, i18n['content_lang_code'], i18n['wikipedia']) if reference.snaks ~= nil then if reference.snaks['P248'] ~= nil then for _, snak in pairs(reference.snaks['P248']) do if snak.datavalue and snak.datavalue.value.id == 'Q428' then -- কুরআন ref_text = ustring.gsub(ref_text, 'নামক অনুচ্ছেদ', 'নং আয়াত') break end end end if reference.snaks['P854'] ~= nil then local snak = reference.snaks['P854'][1] if snak.datavalue then url_value = snak.datavalue.value end end end if url_value ~= nil then ref_text = ref_text .. ', [' .. url_value .. ' সংযোগ]' end reference_cache[id] = ref_text else out_id = id end return {out_id, reference_cache[id]} end local function getEntity( id ) if entity_cache[id] == nil then entity_cache[id] = wb.getEntity(id) end return entity_cache[id] ~= false and entity_cache[id] or nil end local function getLexemeLanguageCode(current_lexeme) local lang_item_id = current_lexeme:getLanguage() if lang_item_id == nil then return nil end local lang_entity = getEntity(lang_item_id) if lang_entity == nil then return nil end for i, statement_property in ipairs({'P305','P424', 'P220'}) do -- আইইটিএফ ভাষা ট্যাগ, উইকিমিডিয়া ভাষা কোড, আইএসও ৬৩৯-৩ local statements = lang_entity:getBestStatements(statement_property) if statements[1] ~= nil then return statements[1].mainsnak.datavalue.value end end return nil end -- Return the first form of the lexeme which has exactly the given grammatical feature. local function formWithSingleGrammaticalFeature( item_id ) for i = 1, #forms do local grammaticalFeatures = forms[i]:getGrammaticalFeatures() if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then return forms[i] end end return nil end local function getArticleLinkTemplate(frame, stmt_value) local template = '' local sitelink = getEntity(stmt_value):getSitelink(i18n['wikipedia']) if sitelink ~= nil then template = frame:expandTemplate{ title=i18n['template_wikipedia'], args={sitelink} } end return template end local function getArticleLinks (frame, sense ) local article_links = '' for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয় article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end return article_links end -- @TODO: Generalise local function expandTemplateForProperty(frame, object, property, template) local lemmas = {} local n = 0 for _, stmt in pairs(object:getAllStatements(property)) do local lex = wb.lexeme.splitLexemeId(stmt.mainsnak.datavalue.value.id) lex = getEntity(lex) n = n + 1 lemmas[n] = lex:getLemma(lang_code) end if not lang_code or n == 0 then return '' end -- Build args: first lang_code, then lemmas local args = {lang_code} for i = 1, n do args[#args + 1] = lemmas[i] end return frame:expandTemplate{ title = template, args = args } end local function getExternalLinks( entity ) -- T418639 local external_links = {} if entity.claims == nil then return external_links end local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls for property_id, statements in pairs(entity.claims) do local formatter_url = formatter_urls[property_id] if formatter_url ~= nil then local property_source = wb.getBestStatements(property_id, 'P9073') local source_name if next(property_source) ~= nil then source_name = wb.getLabel(property_source[1].mainsnak.datavalue.value.id) or property_source[1].mainsnak.datavalue.value.id else source_name = wb.getLabel(property_id) or property_id end for i = 1, #statements do local stmt = statements[i] if stmt.mainsnak.datavalue then local formatted_link = ustring.gsub( ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value), ' ', '+' ) table.insert(external_links, '[' .. formatted_link .. ' ' .. source_name .. ']') end end end end return external_links end p.getExternalLinks = getExternalLinks -- রেখে দিন যাতে ডিবাগিং সম্ভব হয় local function termSpan( term ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( text ) return tostring( span ) end local function termLink( term, lang_qid ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( '[[' .. text .. '#' .. wb.getLabel(lang_qid) .. '|' .. text .. ']]' ) return tostring( span ) end local function getLemmata( current_lexeme ) local 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 local function getLinkedLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termLink(rep, current_lexeme:getLanguage()) else lemma_string = lemma_string .. '/' .. termLink(rep, current_lexeme:getLanguage()) end end return lemma_string end local function getExamples( current_lexeme, sense_id, references_seen ) local examples = html.create('dl') for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ if stmt.qualifiers ~= nil and stmt.qualifiers['P6072'] ~= nil and stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_strs = {} if stmt.qualifiers['P1810'] ~= nil then table.insert(example_form_strs, stmt.qualifiers['P1810'][1].datavalue.value) elseif stmt.qualifiers['P5830'] ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ for i, rep in pairs(example_form:getRepresentations()) do table.insert(example_form_strs, rep[1]) end end example_str = nil for i, example_form_str in pairs(example_form_strs) do new_example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") if new_example_text ~= example_text then example_str = termSpan({new_example_text, example_lang}) break end new_example_text = example_text end if example_str == nil then example_str = termSpan({example_text, example_lang}) end local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end end for i, stmt in pairs(wb.getAllStatements(sense_id, 'P5831')) do -- ব্যবহারের উদাহরণ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_str = nil if stmt.qualifers ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ if stmt.qualifiers['P1810'] ~= nil then example_form_str = stmt.qualifiers['P1810'][1].datavalue.value end end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentation(i18n['content_lang_code']) end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentations()[1][1] end if example_form_str ~= nil then example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") end example_str = termSpan({example_text, example_lang}) local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end return { tostring(examples) , references_seen } end -- This calls frame:preprocess() instead of :callParserFunction() because the latter does not work for Wikifunctions function calls yet (see https://www.wikifunctions.org/wiki/Wikifunctions:Embedded_function_calls). local function callWikifunctionsFunction(args, frame) return frame:preprocess('{{#function:' .. args .. '}}') end local function checkTitleCodePointInRange(title, start_point, end_point) return ustring.find( title, '[' ..ustring.char(start_point) .. '-' .. ustring.char(end_point) .. ']' ) end local function getLanguageForCategories( lang_id, current_page_title ) -- বিশেষ ভাষার জন্য if lang_id == 'Q11051' then -- হিন্দি/উর্দু if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- উর্দু lang_id = 'Q11051ur' elseif checkTitleCodePointInRange(current_page_title, 0x0900, 0x097f) ~= nil then -- হিন্দি lang_id = 'Q11051hi' end elseif lang_id == 'Q58635' then -- পাঞ্জাবি if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- শাহমুখী lang_id = 'Q58635pnb' elseif checkTitleCodePointInRange(current_page_title, 0x0a00, 0x0a7f) ~= nil then -- গুরুমুখী lang_id = 'Q58635pa' end elseif lang_id == 'Q56356571' then -- নয়া ফার্সি ভাষা if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- ফার্সি (ইরান/আফগানিস্তান) lang_id = 'Q56356571fa' elseif checkTitleCodePointInRange(current_page_title, 0x0400, 0x04ff) ~= nil then -- তাজিক lang_id = 'Q56356571tg' end end return lang_id end local function getOneStringForProperty(object, property) local val local stmts = object:getAllStatements(property) if #stmts ~= 0 then val = stmts[1].mainsnak.datavalue.value end return val end local function getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved if #senses == 0 then return nil end local all_translations = {} for _, sense in pairs(senses) do local translation_set = {} local gloss = sense:getGloss('bn') for _, stmt in pairs(sense:getAllStatements('P5972')) do local translation = stmt.mainsnak.datavalue.value.id local lexeme_id = wb.lexeme.splitLexemeId(translation) local language = wb.getLabel(getEntity(lexeme_id):getLanguage()) table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>') end if #translation_set > 0 then local block = frame:expandTemplate{ title = i18n['template_trans-top'], args = { gloss } } block = block .. table.concat(translation_set, '\n') .. frame:expandTemplate{ title = i18n['template_trans-bottom'] } table.insert(all_translations, block) end end if #all_translations == 0 then return nil end return '====' .. i18n['heading_translation'] .. '==== \n' .. table.concat(all_translations, '\n') end local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. i18n.tocatlink(i18n['category_rfdef']), references_seen} end local meanings = html.create( 'ol' ) for i, sense in pairs(senses) do local gloss_text_parts = {} local main_gloss_text = frame:expandTemplate{ title=i18n['template_anchor'], args={sense:getId()} } local specifiers = {} for k, property_id in ipairs({'P6084', 'P6191', 'P9488'}) do -- অবস্থান যেখানে শব্দার্থ ব্যবহৃত, যে রীতিতে শব্দার্থ ব্যবহৃত হয়, যে ক্ষেত্রে ব্যবহৃত for i, stmt in pairs(sense:getAllStatements(property_id)) do local stmt_value = stmt.mainsnak.datavalue.value.id local reference_text = '' local refs = stmt.references if refs ~= nil then for j, reference in pairs(refs) do table.insert(references_seen, reference.hash) got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. frame:extensionTag('ref', got_reference[2]) end local val = wb.getLabel(stmt_value) table.insert(specifiers, val .. reference_text) if property_id == 'P9488' then table.insert(specifiers, i18n.tocatlink(lang_code .. val)) end end end end if #specifiers > 0 then main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') " end local gloss = sense:getGloss( i18n['content_lang_code'] ) if gloss ~= nil then if countWords(gloss) == 1 then main_gloss_text = main_gloss_text .. "[[" .. gloss .. "#" .. i18n['content_lang_name'] .. "|" .. gloss .. "]]" else main_gloss_text = main_gloss_text .. gloss end if gloss:match('^প্রদত্ত%s*(%S-)%s*নাম$') then -- given names main_gloss_text = main_gloss_text .. i18n.tocatlink(language_name .. ' ' .. i18n['category_given_names']) end else local other_gloss_text = nil local other_gloss_lang = nil local item_label_gloss_parts = {} for k, stmt in pairs(sense:getAllStatements('P5137')) do -- যদি 'এই অর্থের জন্য আইটেম' মানের বাংলা লেবেল থাকে local stmt_value = stmt.mainsnak.datavalue.value.id local stmt_label = wb.getLabel(stmt_value) if stmt_label ~= nil then table.insert(item_label_gloss_parts, '[[:d:' .. stmt_value .. '|' .. stmt_label .. ']]') end end if #item_label_gloss_parts > 0 then other_gloss_text = table.concat(item_label_gloss_parts, '; ') end if other_gloss_text == nil then for i, fallback_lang in ipairs(mw_lang.getFallbacksFor( i18n['content_lang_code'] )) do if sense:getGloss( fallback_lang ) ~= nil then other_gloss_text, other_gloss_lang = sense:getGloss( fallback_lang ) end end if other_gloss_lang == nil then local glosses = sense:getGlosses() for j, gloss in pairs(glosses) do other_gloss_text = gloss[1] other_gloss_lang = gloss[2] break end end main_gloss_text = main_gloss_text .. other_gloss_text .. "<sup><em>" .. mw_lang.fetchLanguageName(other_gloss_lang, i18n['content_lang_code']) .. "</em></sup>" else main_gloss_text = main_gloss_text .. "''" .. other_gloss_text .. "''" end main_gloss_text = main_gloss_text .. i18n.tocatlink(i18n['category_rfdef_equivalent']) end local synonym = expandTemplateForProperty(frame, sense, 'P5973', i18n['template_synonym']) if synonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. synonym end local antonym = expandTemplateForProperty(frame, sense, 'P5974', i18n['template_antonym']) if antonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. antonym end local hypernym = expandTemplateForProperty(frame, sense, 'P6593', i18n['template_hypernym']) if hypernym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. hypernym end if lex_cat == 'Q1084' or lex_cat == 'Q147276' then -- noun or proper noun local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-noun']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym elseif lex_cat == 'Q34698' then local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-adj']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym end table.insert(gloss_text_parts, main_gloss_text .. createicon(i18n['content_lang_code'], sense:getId())) 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 local got_reference = getReference ( stmt.references[1].hash, stmt.references[1] ) gloss_quote = '"' .. gloss_quote .. '" ' .. got_reference[2] end table.insert(references_seen, stmt.references[1].hash) table.insert(gloss_text_parts, frame:extensionTag('ref', gloss_quote)) end for i, stmt in pairs(sense:getAllStatements('P1343')) do -- বর্ণিত উৎস -- TODO: do away with making fake reference objects local fake_reference = { ['snaks'] = {} } fake_reference.snaks['P248'] = { [1] = stmt.mainsnak } qualifiers_order = stmt['qualifiers-order'] if qualifiers_order ~= nil then for i, k in ipairs(qualifiers_order) do fake_reference.snaks[k] = stmt.qualifiers[k] end end fake_reference.hash = mw.hash.hashValue('sha3-512', serializeTable(fake_reference)) table.insert(references_seen, fake_reference.hash) local got_reference = getReference(fake_reference.hash, fake_reference) if got_reference[1] == nil then table.insert(gloss_text_parts, frame:extensionTag('ref', got_reference[2], {name = fake_reference.hash})) else table.insert(gloss_text_parts, frame:extensionTag{name = 'ref', content='', args = {name = got_reference[1]}}) end end local first_sense_image = '' local 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 table.insert(gloss_text_parts, '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]') end local idlinks = getExternalLinks(sense) if #idlinks > 0 then local idlinktext = '<small>(' for _, idlink in pairs(idlinks) do idlinktext = idlinktext .. idlink .. '\n' end idlinktext = idlinktext .. ')</small>' table.insert(gloss_text_parts, idlinktext) end local externallinks = getArticleLinks(frame, sense) if externallinks ~= '' then table.insert(gloss_text_parts, externallinks) end local new_notes = {} local sense_keys = { sense:getId(), string.sub(sense:getId(), string.find(sense:getId(), '-')+1) } for _, v in ipairs(sense_keys) do if args[v] ~= nil then table.insert(new_notes, args[v]) end end if #new_notes > 0 then for _, v in ipairs(new_notes) do if i == 1 then table.insert(gloss_text_parts, '<br/>' .. v) else table.insert(gloss_text_parts, v) end end end local examples, references_seen = unpack(getExamples( current_lexeme, sense:getId(), references_seen )) local gloss_text = table.concat(gloss_text_parts, '\n') meanings:tag('li'):wikitext(gloss_text):wikitext(examples) end return {meanings, references_seen} end local function getPronunciationBaseForm( lang_name, lex_cat) local base_form = nil -- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়। if lang_name == 'বাংলা' then if lex_cat == 'Q1084' then -- বিশেষ্য base_form = formWithSingleGrammaticalFeature( 'Q131105' ) -- কর্তৃকারক elseif lex_cat == 'Q24905' then -- ক্রিয়া base_form = formWithSingleGrammaticalFeature( 'Q1350145' ) -- ক্রিয়া বিশেষ্য end end if base_form == nil then for i, form in pairs(forms) do base_form = form break end end return base_form end local function getCombines( current_lexeme ) local combines = '' local index_mappings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P5238')) do if stmt.qualifiers ~= nil and stmt.qualifiers['P1545'] ~= nil then -- ক্রম local current_index = tonumber(stmt.qualifiers['P1545'][1].datavalue.value) index_mappings[current_index] = stmt end end if #index_mappings ~= 0 then for i, stmt in ipairs(index_mappings) do if stmt.mainsnak.datavalue ~= nil then local part_lexeme_id = stmt.mainsnak.datavalue.value.id local part_lexeme = getEntity(part_lexeme_id) local current_substring = getLinkedLemmata(part_lexeme) local part_etymology = getEtymology(part_lexeme) if part_etymology ~= '' and part_etymology ~= nil then current_substring = current_substring .. ' (← ' .. part_etymology .. ')' end if combines == '' then combines = current_substring else -- @TODO: This shoukd use the 'affix' template instead. combines = combines .. ' + ' .. current_substring end end end end return combines end function getRoots( current_lexeme ) local stmts = current_lexeme:getAllStatements('P5920') if #stmts == 0 then return '' end local root_lexeme = getEntity(stmts[1].mainsnak.datavalue.value.id) return '√' .. getLinkedLemmata(root_lexeme), root_lexeme:getLemma('ar') end function getEtymology( current_lexeme, frame ) -- TODO: see if any etymology chains are not possible to render local etymology = '' local current_combines = getCombines(current_lexeme) local current_roots, root_str = getRoots(current_lexeme) local stmts = current_lexeme:getAllStatements('P5191') if #stmts == 0 then if lang_code == 'ar' then return frame:expandTemplate{title='ar-rootbox', args={root_str}} elseif current_roots ~= '' and current_combines ~= '' then return current_roots .. '<br/>(' .. current_combines .. ')' elseif current_roots ~= '' then return current_roots else return current_combines end end for i, stmt in pairs(stmts) do local origin_lexeme_dv = stmt.mainsnak.datavalue -- If this is nil, the origin lexeme is not known. if origin_lexeme_dv ~= nil then local origin_lexeme = getEntity(origin_lexeme_dv.value.id) local origin_lexeme_lang = origin_lexeme:getLanguage() local origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. wb.getLabel(origin_lexeme_lang) .. ')' if stmt.qualifiers ~= nil and stmt.qualifiers['P5886'] ~= nil then local mode_of_derivation = stmt.qualifiers['P5886'][1].datavalue.value.id if mode_of_derivation == 'Q1345001' then origin_lexeme_string = ustring.gsub(i18n['etymology_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q845079' then origin_lexeme_string = ustring.gsub(i18n['etymology_learned_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q56611986' then origin_lexeme_string = ustring.gsub(i18n['etymology_inheritance'], '$1', origin_lexeme_string) end end local origin_origin = getEtymology(origin_lexeme) local new_etymology_string = '' if origin_origin ~= '' and origin_origin ~= nil then new_etymology_string = origin_lexeme_string .. ' ← ' .. origin_origin else new_etymology_string = origin_lexeme_string end end if etymology == '' then etymology = new_etymology_string elseif origin_lexeme_string ~= nil then etymology = etymology .. ' ' .. origin_lexeme_string end end if current_roots ~= '' then etymology = etymology .. ' ' .. current_roots end if current_combines ~= '' and etymology ~= nil then etymology = etymology .. '<br/>(' .. current_combines .. ')' end return etymology end local function getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pronunciations = {} local base_form = getPronunciationBaseForm(lang_name, lex_cat ) if base_form ~= nil then for i, stmt in pairs(base_form:getAllStatements('P443')) do -- উচ্চারণের অডিও local pronunciation_file = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in pairs(stmt.qualifiers[property_id]) do local stmt_value = qual.datavalue.value.id table.insert(specifiers, wb.getLabel(stmt_value)) end end end if #specifiers > 0 then specifier_text = table.concat(specifiers, "'', ''") end local audio_text if specifier_text ~= '' then audio_text = i18n['text_audio'] .. ' (' .. specifier_text .. ')' else audio_text = i18n['text_audio'] end table.insert(pronunciations, '* ' .. frame:expandTemplate{ title= i18n['template_audio'], args = {lang_name, pronunciation_file, audio_text} }) end local ipa_transcription = base_form:getAllStatements('P898') -- - আধ্বব প্রতিলিপিকরণ local iso15919_transcription = getOneStringForProperty(base_form, 'P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ local itrans = getOneStringForProperty(base_form, 'P8881') -- ITRANS local iast = getOneStringForProperty(base_form, 'P7581') -- আইএএসটি প্রতিলিপিকরণ local xsampa = getOneStringForProperty(base_form, 'P2859') -- @TODO: অডিও ও প্রতিলিপিকরণ দুটোই থাকলে সেই ক্ষেত্রে একটার ঠিক পরেই আরেকটা দেখানো উচিত if #ipa_transcription ~= 0 then for i, stmt in pairs(ipa_transcription) do local ipa_text = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in ipairs(stmt.qualifiers[property_id]) do table.insert(specifiers, wb.getLabel( qual.datavalue.value.id )) end end end if #specifiers > 0 then specifier_text = "(''" .. table.concat(specifiers, "'', ''") .. "'') " end table.insert(pronunciations, '* ' .. specifier_text .. frame:expandTemplate{ title= i18n['template_ipa'], args = {lang_name, ipa_text} } .. '\n* ' .. i18n['text_syllable_count'] .. callWikifunctionsFunction('Z30837|' .. ipa_text, frame)) end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. elseif lang_name == 'বাংলা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='bn-IPA', }) elseif lang_name == 'আরবি' then local lemma = current_lexeme:getLemma('ar') table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ar-IPA', args={lemma} }) elseif lang_name == 'ফালা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fax-pron', }) elseif lang_code == 'fi' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fi-IPA', }) elseif lang_code == 'ko' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ko-IPA', }) end if iso15919_transcription ~= nil then table.insert(pronunciations, '* ' .. i18n['text_iso15919'] .. iso15919_transcription) end if itrans ~= nil then table.insert(pronunciations, '* ' .. i18n['text_itrans'] .. itrans) end if iast ~= nil then table.insert(pronunciations, '* ' .. i18n['text_iast'] .. iast) end if xsampa ~= nil then table.insert(pronunciations, '* ' .. i18n['text_xsampa'] .. xsampa) end end -- {{আধ্বব|en|/ˈɪntəvjuː/}} return table.concat(pronunciations, '\n') end local function getAlternativeSpellings( current_lexeme ) local alt_spellings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P11577')) do -- বিকল্প বানান if stmt.mainsnak.datavalue ~= nil then table.insert(alt_spellings, '* ' .. getLinkedLemmata(getEntity(stmt.mainsnak.datavalue.value.id))) end end return table.concat(alt_spellings, '\n') end local function heading_level(text, level) local heading_delimiter = string.rep('=', level) return heading_delimiter .. ' ' .. text .. ' ' .. heading_delimiter end function get_any_notes(sections, args, keys) local notes = {} for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(notes, args[v]) end end return notes end function add_specific_notes(sections, notes) for i, v in ipairs(notes) do table.insert(sections, v) end end local function add_any_notes(sections, args, keys) for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(sections, args[v]) end end end local function getMatchingLemmaForPageTitle(lexeme, title) local lemmas = lexeme:getLemmas() local matched_lemma for _, lemma_entry in ipairs(lemmas) do local lemma = lemma_entry[1] local clean_lemma = normalizeLemmas(lemma) if clean_lemma == title then matched_lemma = lemma break end end return matched_lemma end local function buildLanguageAgnosticInflectionTable() local has_image = false local form_images = {} for i, form in ipairs(forms) do local form_image = form:getAllStatements('P7407') if next(form_image) ~= nil then form_images[i] = form_image[1].mainsnak.datavalue.value has_image = true end end local table_class = "wikitable mw-collapsible sortable" if not has_image then table_class = table_class .. " mw-collapsed" end local text = "{| class='" .. table_class .. "' style='border:solid 1px rgb(80%,80%,100%); text-align:center;'\n" text = text .. "|+ " .. i18n['heading_inflection_table'] .. "\n" text = text .. "|- \n" text = text .. "! " .. i18n['heading_form'] .. " !! " .. i18n['heading_grammatical_features'] if has_image then text = text .. " !! " .. (i18n['heading_image']) end text = text .. " \n" for i, form in ipairs(forms) do local rep = form:getRepresentations() local feat = form:getGrammaticalFeatures() local rep_text = "" for j, r in pairs(rep) do if rep_text == "" then rep_text = r[1] else rep_text = rep_text .. " / " .. r[1] end end local feat_text = "" if feat ~= nil then for j, f in ipairs(feat) do local label = wb.getLabel(f) or f if feat_text == "" then feat_text = label else feat_text = feat_text .. ", " .. label end end end text = text .. "|-\n" text = text .. "| " .. (rep_text ~= "" and rep_text or "—") text = text .. " || " .. (feat_text ~= "" and feat_text or "—") if has_image then local image_cell = "—" if form_images[i] ~= nil then image_cell = "[[চিত্র:" .. form_images[i] .. "|50px]]" end text = text .. " || " .. image_cell end text = text .. "\n" end text = text .. "|}" return text end function p.all( frame ) local args = getArgs(frame) local lexeme_id = args[1] local current_lexeme = getEntity(lexeme_id) local current_language = current_lexeme:getLanguage() local senses = current_lexeme:getSenses() local add_heading = true forms = current_lexeme:getForms() if args[2] ~= nil then local val = mw.text.trim(tostring(args[2])) if val == "false" or val == "0" or val == "না" then add_heading = false end end local references_seen = {} local sections = {} local lang_name = wb.getLabel(current_language) if add_heading == true then local lang_heading = "== " .. lang_name .. " ==" table.insert(sections, lang_heading) end local lex_cat = current_lexeme:getLexicalCategory() lang_code = getLexemeLanguageCode(current_lexeme) local title = mw.title.getCurrentTitle().text local lang_category = getLanguageForCategories(current_language, title) local cat = i18n.lang_category(wb.getLabel(lex_cat), wb.getLabel(current_language)) local lex_cat_template if cat ~= nil then table.insert(sections, '===' .. wb.getLabel(lex_cat) .. cat .. frame:expandTemplate{ title = i18n['template_anchor'], args = { lexeme_id } } .. '===') table.insert(sections, frame:expandTemplate{ title= i18n['template_lexeme'], args = {lexeme_id} }) add_any_notes(sections, args, i18n['manual_category']) local etymology = getEtymology( current_lexeme, frame ) if etymology ~= '' and etymology ~= nil then table.insert(sections, heading_level(i18n['heading_etymology'], 4)) table.insert(sections, tostring(etymology)) end add_any_notes(sections, args, i18n['manual_etymology']) local pronunciation = getPronunciation( frame, current_lexeme, lang_name, lex_cat ) if pronunciation ~= '' then table.insert(sections, heading_level(i18n['heading_pronunciation'], 4)) table.insert(sections, tostring(pronunciation)) end add_any_notes(sections, args, i18n['manual_pronunciation']) local alternative_spellings = getAlternativeSpellings( current_lexeme ) if alternative_spellings ~= '' then table.insert(sections, heading_level(i18n['heading_alternative_spellings'], 4)) table.insert(sections, alternative_spellings) end if lang_code ~= nil and lang_code ~= 'ksy' and lang_code ~= 'rkt' then -- Skip for Kharia Thar, Rangpuri if lex_cat == 'Q34698' then -- বিশেষণ if lang_code == 'en' or lang_code == 'bn' then if #forms <= 1 then lex_cat_template = frame:expandTemplate{title= lang_code .. '-বিশেষণ'} end else lex_cat_template = safeExpand(frame, lang_code .. '-adj') if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ') end end elseif lex_cat == 'Q1084' then -- @TODO: Also check for plural forms local gender local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ if #stmts ~= 0 then if #stmts == 1 then local gender_qid = stmts[1].mainsnak.datavalue.value.id if gender_qid == 'Q499327' then gender = 'm' elseif gender_qid == 'Q1775415' then gender = 'f' elseif gender_qid == 'Q1775461' then gender = 'n' elseif gender_qid == 'Q1305037' then gender = 'c' end end else for i, stmt in pairs(stmts) do local qid = stmts[i].mainsnak.datavalue.value.id if qid == 'Q499327' then gender = gender .. 'm' elseif qid == 'Q1775415' then gender = gender .. 'f' end end end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. if current_language == 'Q13955' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = safeExpand(frame, {title='ar-noun', args={matched_lemma,gender}}) else lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}} end elseif current_language == 'Q29919' then lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}} elseif current_language == 'Q397' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = frame:expandTemplate{title='la-noun', args={matched_lemma,g=gender}} end elseif current_language == 'Q11059' then lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}} elseif current_language ~= 'Q1860' then -- These templates require the gender to be passed as the 1st argument. lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix'], {gender}) if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix_fallback'], {gender}) end end end end -- elseif lex_cat == 'Q147276' then -- lex_cat_template = safeExpand(frame, lang_code .. '-proper noun', {gender}) -- if not lex_cat_template then -- lex_cat_template = safeExpand(frame, lang_code .. '-নামবাচক বিশেষ্য', {gender}) -- end end if lex_cat_template ~= nil then table.insert(sections, lex_cat_template) else local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then table.insert(sections, heading_level(matched_lemma, 4)) else table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]') end end local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name)) table.insert(sections, tostring(meanings)) add_any_notes(sections, args, i18n['manual_meaning']) local instance_of = current_lexeme:getAllStatements('P31') -- সত্ত্বার ধরন if #instance_of ~= 0 then local instance_of_entity = instance_of[1].mainsnak.datavalue.value.id if instance_of_entity == 'Q40437546' or instance_of_entity == 'Q120831827' or instance_of_entity == 'Q120717979' or instance_of_entity == 'Q124476844' then -- @TODO: generalise this so all types of roots are shown table.insert(sections, i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)) elseif instance_of_entity == 'Q376431' then -- বর্ণের নাম table.insert(sections, i18n.tocatlink(lang_code .. ':রং')) end end local translations = getTranslations(frame, senses) if translations ~= nil then table.insert(sections, translations) end -- (!) বিশেষ ভাষার বিভক্তির সারণি যদি থাকে সেগুলো এখানে নতুন if বিবৃতি যোগ করা যায়। if next(forms) ~= nil then if current_language == 'Q9610' then -- বাংলা if lex_cat == 'Q24905' then local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getConjTable(frame, forms) table.insert(sections, conjTable) elseif lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z33243|' .. lexeme_id .. '|', frame)) elseif lex_cat == 'Q34698' then if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end --elseif current_language == 'Q13955' then -- আরবি -- if lex_cat == 'Q1084' then -- table.insert(sections, frame:expandTemplate{title='ar-decl-noun', args={lemma}}) -- end elseif current_language == 'Q188' then -- জার্মান if lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z28602|' .. lexeme_id .. '|', frame)) end else if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end end local reference_notes = get_any_notes(sections, args, i18n['manual_reference']) if #references_seen > 0 or #reference_notes > 0 then table.insert(sections, heading_level(i18n['heading_references'], 4)) table.insert(sections, frame:extensionTag('references')) add_specific_notes(sections, reference_notes) end local external_link_table = getExternalLinks ( current_lexeme ) if #external_link_table > 0 then local external_links = '* ' .. table.concat(external_link_table, '\n* ') table.insert(sections, heading_level(i18n['heading_external_links'], 4)) table.insert(sections, external_links) end add_any_notes(sections, args, i18n['manual_external_link']) if #references_seen == 0 and #reference_notes == 0 and #external_link_table == 0 and #get_any_notes(sections, args, i18n['manual_external_link']) == 0 then if i18n['category_rfref'][lang_category] ~= nil then table.insert(sections, i18n.tocatlink(i18n['category_rfref'][lang_category])) else table.insert(sections, i18n.tocatlink(i18n['category_rfref']['_'])) end end return table.concat(sections,"\n\n") end return p gvynhos8rgwcdngb1vid21bmrdsetwf 508933 508931 2026-05-17T12:11:55Z Redmin 6857 508933 Scribunto text/plain local p = {} local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n') local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format local getArgs = require('Module:Arguments').getArgs local wb = mw.wikibase local ustring = mw.ustring local html = mw.html local mw_lang = mw.language local entity_cache = {} local reference_cache = {} local forms local lang_code local function countWords(string) local count = 0 for word in ustring.gmatch(string, "%S+") do count = count + 1 end return count end local function normalizeLemmas(text) text = mw.ustring.gsub(text, "ٰ", "") text = mw.ustring.gsub(text, "ِ", "") text = mw.ustring.gsub(text, "[ً-ٟ]", "") text = mw.ustring.gsub(text, "أ", "ا") --text = mw.ustring.gsub(text, "إ", "ا") text = mw.ustring.gsub(text, "آ", "ا") return text end local function serializeTable(val, name, skipnewlines, depth) -- https://stackoverflow.com/a/6081639 skipnewlines = skipnewlines or false depth = depth or 0 local tmp = string.rep(" ", depth) if name then tmp = tmp .. name .. " = " end if type(val) == "table" then tmp = tmp .. "{" .. (not skipnewlines and "\n" or "") for k, v in pairs(val) do tmp = tmp .. serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "") end tmp = tmp .. string.rep(" ", depth) .. "}" elseif type(val) == "number" then tmp = tmp .. tostring(val) elseif type(val) == "string" then tmp = tmp .. string.format("%q", val) elseif type(val) == "boolean" then tmp = tmp .. (val and "true" or "false") else tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\"" end return tmp end -- Use this to safely expand templates when you are not sure that they exist. local function safeExpand(frame, title, args) local _, result = pcall(function() return frame:expandTemplate{ title = title, args = args } end) if result:find('does not exist') then -- expandTemplate{} doesn't seem to throw any error that can be handled with pcall() so string search is the only viable option. return nil end return result end local function getReference( id, reference ) local out_id = nil local url_value if reference_cache[id] == nil then local ref_text = references(reference, wb, mw_lang, i18n['content_lang_code'], i18n['wikipedia']) if reference.snaks ~= nil then if reference.snaks['P248'] ~= nil then for _, snak in pairs(reference.snaks['P248']) do if snak.datavalue and snak.datavalue.value.id == 'Q428' then -- কুরআন ref_text = ustring.gsub(ref_text, 'নামক অনুচ্ছেদ', 'নং আয়াত') break end end end if reference.snaks['P854'] ~= nil then local snak = reference.snaks['P854'][1] if snak.datavalue then url_value = snak.datavalue.value end end end if url_value ~= nil then ref_text = ref_text .. ', [' .. url_value .. ' সংযোগ]' end reference_cache[id] = ref_text else out_id = id end return {out_id, reference_cache[id]} end local function getEntity( id ) if entity_cache[id] == nil then entity_cache[id] = wb.getEntity(id) end return entity_cache[id] ~= false and entity_cache[id] or nil end local function getLexemeLanguageCode(current_lexeme) local lang_item_id = current_lexeme:getLanguage() if lang_item_id == nil then return nil end local lang_entity = getEntity(lang_item_id) if lang_entity == nil then return nil end for i, statement_property in ipairs({'P305','P424', 'P220'}) do -- আইইটিএফ ভাষা ট্যাগ, উইকিমিডিয়া ভাষা কোড, আইএসও ৬৩৯-৩ local statements = lang_entity:getBestStatements(statement_property) if statements[1] ~= nil then return statements[1].mainsnak.datavalue.value end end return nil end -- Return the first form of the lexeme which has exactly the given grammatical feature. local function formWithSingleGrammaticalFeature( item_id ) for i = 1, #forms do local grammaticalFeatures = forms[i]:getGrammaticalFeatures() if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then return forms[i] end end return nil end local function getArticleLinkTemplate(frame, stmt_value) local template = '' local sitelink = getEntity(stmt_value):getSitelink(i18n['wikipedia']) if sitelink ~= nil then template = frame:expandTemplate{ title=i18n['template_wikipedia'], args={sitelink} } end return template end local function getArticleLinks (frame, sense ) local article_links = '' for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয় article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end return article_links end -- @TODO: Generalise local function expandTemplateForProperty(frame, object, property, template) local lemmas = {} local n = 0 for _, stmt in pairs(object:getAllStatements(property)) do local lex = wb.lexeme.splitLexemeId(stmt.mainsnak.datavalue.value.id) lex = getEntity(lex) n = n + 1 lemmas[n] = lex:getLemma(lang_code) end if not lang_code or n == 0 then return '' end -- Build args: first lang_code, then lemmas local args = {lang_code} for i = 1, n do args[#args + 1] = lemmas[i] end return frame:expandTemplate{ title = template, args = args } end local function getExternalLinks( entity ) -- T418639 local external_links = {} if entity.claims == nil then return external_links end local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls for property_id, statements in pairs(entity.claims) do local formatter_url = formatter_urls[property_id] if formatter_url ~= nil then local property_source = wb.getBestStatements(property_id, 'P9073') local source_name if next(property_source) ~= nil then source_name = wb.getLabel(property_source[1].mainsnak.datavalue.value.id) or property_source[1].mainsnak.datavalue.value.id else source_name = wb.getLabel(property_id) or property_id end for i = 1, #statements do local stmt = statements[i] if stmt.mainsnak.datavalue then local formatted_link = ustring.gsub( ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value), ' ', '+' ) table.insert(external_links, '[' .. formatted_link .. ' ' .. source_name .. ']') end end end end return external_links end p.getExternalLinks = getExternalLinks -- রেখে দিন যাতে ডিবাগিং সম্ভব হয় local function termSpan( term ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( text ) return tostring( span ) end local function termLink( term, lang_qid ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( '[[' .. text .. '#' .. wb.getLabel(lang_qid) .. '|' .. text .. ']]' ) return tostring( span ) end local function getLemmata( current_lexeme ) local 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 local function getLinkedLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termLink(rep, current_lexeme:getLanguage()) else lemma_string = lemma_string .. '/' .. termLink(rep, current_lexeme:getLanguage()) end end return lemma_string end local function getExamples( current_lexeme, sense_id, references_seen ) local examples = html.create('dl') for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ if stmt.qualifiers ~= nil and stmt.qualifiers['P6072'] ~= nil and stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_strs = {} if stmt.qualifiers['P1810'] ~= nil then table.insert(example_form_strs, stmt.qualifiers['P1810'][1].datavalue.value) elseif stmt.qualifiers['P5830'] ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ for i, rep in pairs(example_form:getRepresentations()) do table.insert(example_form_strs, rep[1]) end end example_str = nil for i, example_form_str in pairs(example_form_strs) do new_example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") if new_example_text ~= example_text then example_str = termSpan({new_example_text, example_lang}) break end new_example_text = example_text end if example_str == nil then example_str = termSpan({example_text, example_lang}) end local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end end for i, stmt in pairs(wb.getAllStatements(sense_id, 'P5831')) do -- ব্যবহারের উদাহরণ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_str = nil if stmt.qualifers ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ if stmt.qualifiers['P1810'] ~= nil then example_form_str = stmt.qualifiers['P1810'][1].datavalue.value end end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentation(i18n['content_lang_code']) end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentations()[1][1] end if example_form_str ~= nil then example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") end example_str = termSpan({example_text, example_lang}) local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end return { tostring(examples) , references_seen } end -- This calls frame:preprocess() instead of :callParserFunction() because the latter does not work for Wikifunctions function calls yet (see https://www.wikifunctions.org/wiki/Wikifunctions:Embedded_function_calls). local function callWikifunctionsFunction(args, frame) return frame:preprocess('{{#function:' .. args .. '}}') end local function checkTitleCodePointInRange(title, start_point, end_point) return ustring.find( title, '[' ..ustring.char(start_point) .. '-' .. ustring.char(end_point) .. ']' ) end local function getLanguageForCategories( lang_id, current_page_title ) -- বিশেষ ভাষার জন্য if lang_id == 'Q11051' then -- হিন্দি/উর্দু if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- উর্দু lang_id = 'Q11051ur' elseif checkTitleCodePointInRange(current_page_title, 0x0900, 0x097f) ~= nil then -- হিন্দি lang_id = 'Q11051hi' end elseif lang_id == 'Q58635' then -- পাঞ্জাবি if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- শাহমুখী lang_id = 'Q58635pnb' elseif checkTitleCodePointInRange(current_page_title, 0x0a00, 0x0a7f) ~= nil then -- গুরুমুখী lang_id = 'Q58635pa' end elseif lang_id == 'Q56356571' then -- নয়া ফার্সি ভাষা if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- ফার্সি (ইরান/আফগানিস্তান) lang_id = 'Q56356571fa' elseif checkTitleCodePointInRange(current_page_title, 0x0400, 0x04ff) ~= nil then -- তাজিক lang_id = 'Q56356571tg' end end return lang_id end local function getOneStringForProperty(object, property) local val local stmts = object:getAllStatements(property) if #stmts ~= 0 then val = stmts[1].mainsnak.datavalue.value end return val end local function getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved if #senses == 0 then return nil end local all_translations = {} for _, sense in pairs(senses) do local translation_set = {} local gloss = sense:getGloss('bn') for _, stmt in pairs(sense:getAllStatements('P5972')) do local translation = stmt.mainsnak.datavalue.value.id local lexeme_id = wb.lexeme.splitLexemeId(translation) local language = wb.getLabel(getEntity(lexeme_id):getLanguage()) table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>') end if #translation_set > 0 then local block = frame:expandTemplate{ title = i18n['template_trans-top'], args = { gloss } } block = block .. table.concat(translation_set, '\n') .. frame:expandTemplate{ title = i18n['template_trans-bottom'] } table.insert(all_translations, block) end end if #all_translations == 0 then return nil end return '====' .. i18n['heading_translation'] .. '==== \n' .. table.concat(all_translations, '\n') end local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. i18n.tocatlink(i18n['category_rfdef']), references_seen} end local meanings = html.create( 'ol' ) for i, sense in pairs(senses) do local gloss_text_parts = {} local main_gloss_text = frame:expandTemplate{ title=i18n['template_anchor'], args={sense:getId()} } local specifiers = {} for k, property_id in ipairs({'P6084', 'P6191', 'P9488'}) do -- অবস্থান যেখানে শব্দার্থ ব্যবহৃত, যে রীতিতে শব্দার্থ ব্যবহৃত হয়, যে ক্ষেত্রে ব্যবহৃত for i, stmt in pairs(sense:getAllStatements(property_id)) do local stmt_value = stmt.mainsnak.datavalue.value.id local reference_text = '' local refs = stmt.references if refs ~= nil then for j, reference in pairs(refs) do table.insert(references_seen, reference.hash) got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. frame:extensionTag('ref', got_reference[2]) end local val = wb.getLabel(stmt_value) table.insert(specifiers, val .. reference_text) if property_id == 'P9488' then table.insert(specifiers, i18n.tocatlink(lang_code .. val)) end end end end if #specifiers > 0 then main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') " end local gloss = sense:getGloss( i18n['content_lang_code'] ) if gloss ~= nil then if countWords(gloss) == 1 then main_gloss_text = main_gloss_text .. "[[" .. gloss .. "#" .. i18n['content_lang_name'] .. "|" .. gloss .. "]]" else main_gloss_text = main_gloss_text .. gloss end if gloss:match('^প্রদত্ত%s*(%S-)%s*নাম$') then -- given names main_gloss_text = main_gloss_text .. i18n.tocatlink(language_name .. ' ' .. i18n['category_given_names']) end else local other_gloss_text = nil local other_gloss_lang = nil local item_label_gloss_parts = {} for k, stmt in pairs(sense:getAllStatements('P5137')) do -- যদি 'এই অর্থের জন্য আইটেম' মানের বাংলা লেবেল থাকে local stmt_value = stmt.mainsnak.datavalue.value.id local stmt_label = wb.getLabel(stmt_value) if stmt_label ~= nil then table.insert(item_label_gloss_parts, '[[:d:' .. stmt_value .. '|' .. stmt_label .. ']]') end end if #item_label_gloss_parts > 0 then other_gloss_text = table.concat(item_label_gloss_parts, '; ') end if other_gloss_text == nil then for i, fallback_lang in ipairs(mw_lang.getFallbacksFor( i18n['content_lang_code'] )) do if sense:getGloss( fallback_lang ) ~= nil then other_gloss_text, other_gloss_lang = sense:getGloss( fallback_lang ) end end if other_gloss_lang == nil then local glosses = sense:getGlosses() for j, gloss in pairs(glosses) do other_gloss_text = gloss[1] other_gloss_lang = gloss[2] break end end main_gloss_text = main_gloss_text .. other_gloss_text .. "<sup><em>" .. mw_lang.fetchLanguageName(other_gloss_lang, i18n['content_lang_code']) .. "</em></sup>" else main_gloss_text = main_gloss_text .. "''" .. other_gloss_text .. "''" end main_gloss_text = main_gloss_text .. i18n.tocatlink(i18n['category_rfdef_equivalent']) end local synonym = expandTemplateForProperty(frame, sense, 'P5973', i18n['template_synonym']) if synonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. synonym end local antonym = expandTemplateForProperty(frame, sense, 'P5974', i18n['template_antonym']) if antonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. antonym end local hypernym = expandTemplateForProperty(frame, sense, 'P6593', i18n['template_hypernym']) if hypernym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. hypernym end if lex_cat == 'Q1084' or lex_cat == 'Q147276' then -- noun or proper noun local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-noun']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym elseif lex_cat == 'Q34698' then local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-adj']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym end table.insert(gloss_text_parts, main_gloss_text .. createicon(i18n['content_lang_code'], sense:getId())) 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 local got_reference = getReference ( stmt.references[1].hash, stmt.references[1] ) gloss_quote = '"' .. gloss_quote .. '" ' .. got_reference[2] end table.insert(references_seen, stmt.references[1].hash) table.insert(gloss_text_parts, frame:extensionTag('ref', gloss_quote)) end for i, stmt in pairs(sense:getAllStatements('P1343')) do -- বর্ণিত উৎস -- TODO: do away with making fake reference objects local fake_reference = { ['snaks'] = {} } fake_reference.snaks['P248'] = { [1] = stmt.mainsnak } qualifiers_order = stmt['qualifiers-order'] if qualifiers_order ~= nil then for i, k in ipairs(qualifiers_order) do fake_reference.snaks[k] = stmt.qualifiers[k] end end fake_reference.hash = mw.hash.hashValue('sha3-512', serializeTable(fake_reference)) table.insert(references_seen, fake_reference.hash) local got_reference = getReference(fake_reference.hash, fake_reference) if got_reference[1] == nil then table.insert(gloss_text_parts, frame:extensionTag('ref', got_reference[2], {name = fake_reference.hash})) else table.insert(gloss_text_parts, frame:extensionTag{name = 'ref', content='', args = {name = got_reference[1]}}) end end local first_sense_image = '' local 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 table.insert(gloss_text_parts, '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]') end local idlinks = getExternalLinks(sense) if #idlinks > 0 then local idlinktext = '<small>(' for _, idlink in pairs(idlinks) do idlinktext = idlinktext .. idlink .. '\n' end idlinktext = idlinktext .. ')</small>' table.insert(gloss_text_parts, idlinktext) end local externallinks = getArticleLinks(frame, sense) if externallinks ~= '' then table.insert(gloss_text_parts, externallinks) end local new_notes = {} local sense_keys = { sense:getId(), string.sub(sense:getId(), string.find(sense:getId(), '-')+1) } for _, v in ipairs(sense_keys) do if args[v] ~= nil then table.insert(new_notes, args[v]) end end if #new_notes > 0 then for _, v in ipairs(new_notes) do if i == 1 then table.insert(gloss_text_parts, '<br/>' .. v) else table.insert(gloss_text_parts, v) end end end local examples, references_seen = unpack(getExamples( current_lexeme, sense:getId(), references_seen )) local gloss_text = table.concat(gloss_text_parts, '\n') meanings:tag('li'):wikitext(gloss_text):wikitext(examples) end return {meanings, references_seen} end local function getPronunciationBaseForm( lang_name, lex_cat) local base_form = nil -- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়। if lang_name == 'বাংলা' then if lex_cat == 'Q1084' then -- বিশেষ্য base_form = formWithSingleGrammaticalFeature( 'Q131105' ) -- কর্তৃকারক elseif lex_cat == 'Q24905' then -- ক্রিয়া base_form = formWithSingleGrammaticalFeature( 'Q1350145' ) -- ক্রিয়া বিশেষ্য end end if base_form == nil then for i, form in pairs(forms) do base_form = form break end end return base_form end local function getCombines( current_lexeme ) local combines = '' local index_mappings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P5238')) do if stmt.qualifiers ~= nil and stmt.qualifiers['P1545'] ~= nil then -- ক্রম local current_index = tonumber(stmt.qualifiers['P1545'][1].datavalue.value) index_mappings[current_index] = stmt end end if #index_mappings ~= 0 then for i, stmt in ipairs(index_mappings) do if stmt.mainsnak.datavalue ~= nil then local part_lexeme_id = stmt.mainsnak.datavalue.value.id local part_lexeme = getEntity(part_lexeme_id) local current_substring = getLinkedLemmata(part_lexeme) local part_etymology = getEtymology(part_lexeme) if part_etymology ~= '' and part_etymology ~= nil then current_substring = current_substring .. ' (← ' .. part_etymology .. ')' end if combines == '' then combines = current_substring else -- @TODO: This shoukd use the 'affix' template instead. combines = combines .. ' + ' .. current_substring end end end end return combines end function getRoots( current_lexeme ) local stmts = current_lexeme:getAllStatements('P5920') if #stmts == 0 then return '' end local root_lexeme = getEntity(stmts[1].mainsnak.datavalue.value.id) return '√' .. getLinkedLemmata(root_lexeme), root_lexeme:getLemma('ar') end function getEtymology( current_lexeme, frame ) -- TODO: see if any etymology chains are not possible to render local etymology = '' local current_combines = getCombines(current_lexeme) local current_roots, root_str = getRoots(current_lexeme) local stmts = current_lexeme:getAllStatements('P5191') if #stmts == 0 then if lang_code == 'ar' and frame ~= nil then return frame:expandTemplate{title='ar-rootbox', args={root_str}} elseif current_roots ~= '' and current_combines ~= '' then return current_roots .. '<br/>(' .. current_combines .. ')' elseif current_roots ~= '' then return current_roots else return current_combines end end for i, stmt in pairs(stmts) do local origin_lexeme_dv = stmt.mainsnak.datavalue -- If this is nil, the origin lexeme is not known. if origin_lexeme_dv ~= nil then local origin_lexeme = getEntity(origin_lexeme_dv.value.id) local origin_lexeme_lang = origin_lexeme:getLanguage() local origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. wb.getLabel(origin_lexeme_lang) .. ')' if stmt.qualifiers ~= nil and stmt.qualifiers['P5886'] ~= nil then local mode_of_derivation = stmt.qualifiers['P5886'][1].datavalue.value.id if mode_of_derivation == 'Q1345001' then origin_lexeme_string = ustring.gsub(i18n['etymology_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q845079' then origin_lexeme_string = ustring.gsub(i18n['etymology_learned_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q56611986' then origin_lexeme_string = ustring.gsub(i18n['etymology_inheritance'], '$1', origin_lexeme_string) end end local origin_origin = getEtymology(origin_lexeme) local new_etymology_string = '' if origin_origin ~= '' and origin_origin ~= nil then new_etymology_string = origin_lexeme_string .. ' ← ' .. origin_origin else new_etymology_string = origin_lexeme_string end end if etymology == '' then etymology = new_etymology_string elseif origin_lexeme_string ~= nil then etymology = etymology .. ' ' .. origin_lexeme_string end end if current_roots ~= '' then etymology = etymology .. ' ' .. current_roots end if current_combines ~= '' and etymology ~= nil then etymology = etymology .. '<br/>(' .. current_combines .. ')' end return etymology end local function getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pronunciations = {} local base_form = getPronunciationBaseForm(lang_name, lex_cat ) if base_form ~= nil then for i, stmt in pairs(base_form:getAllStatements('P443')) do -- উচ্চারণের অডিও local pronunciation_file = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in pairs(stmt.qualifiers[property_id]) do local stmt_value = qual.datavalue.value.id table.insert(specifiers, wb.getLabel(stmt_value)) end end end if #specifiers > 0 then specifier_text = table.concat(specifiers, "'', ''") end local audio_text if specifier_text ~= '' then audio_text = i18n['text_audio'] .. ' (' .. specifier_text .. ')' else audio_text = i18n['text_audio'] end table.insert(pronunciations, '* ' .. frame:expandTemplate{ title= i18n['template_audio'], args = {lang_name, pronunciation_file, audio_text} }) end local ipa_transcription = base_form:getAllStatements('P898') -- - আধ্বব প্রতিলিপিকরণ local iso15919_transcription = getOneStringForProperty(base_form, 'P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ local itrans = getOneStringForProperty(base_form, 'P8881') -- ITRANS local iast = getOneStringForProperty(base_form, 'P7581') -- আইএএসটি প্রতিলিপিকরণ local xsampa = getOneStringForProperty(base_form, 'P2859') -- @TODO: অডিও ও প্রতিলিপিকরণ দুটোই থাকলে সেই ক্ষেত্রে একটার ঠিক পরেই আরেকটা দেখানো উচিত if #ipa_transcription ~= 0 then for i, stmt in pairs(ipa_transcription) do local ipa_text = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in ipairs(stmt.qualifiers[property_id]) do table.insert(specifiers, wb.getLabel( qual.datavalue.value.id )) end end end if #specifiers > 0 then specifier_text = "(''" .. table.concat(specifiers, "'', ''") .. "'') " end table.insert(pronunciations, '* ' .. specifier_text .. frame:expandTemplate{ title= i18n['template_ipa'], args = {lang_name, ipa_text} } .. '\n* ' .. i18n['text_syllable_count'] .. callWikifunctionsFunction('Z30837|' .. ipa_text, frame)) end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. elseif lang_name == 'বাংলা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='bn-IPA', }) elseif lang_name == 'আরবি' then local lemma = current_lexeme:getLemma('ar') table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ar-IPA', args={lemma} }) elseif lang_name == 'ফালা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fax-pron', }) elseif lang_code == 'fi' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fi-IPA', }) elseif lang_code == 'ko' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ko-IPA', }) end if iso15919_transcription ~= nil then table.insert(pronunciations, '* ' .. i18n['text_iso15919'] .. iso15919_transcription) end if itrans ~= nil then table.insert(pronunciations, '* ' .. i18n['text_itrans'] .. itrans) end if iast ~= nil then table.insert(pronunciations, '* ' .. i18n['text_iast'] .. iast) end if xsampa ~= nil then table.insert(pronunciations, '* ' .. i18n['text_xsampa'] .. xsampa) end end -- {{আধ্বব|en|/ˈɪntəvjuː/}} return table.concat(pronunciations, '\n') end local function getAlternativeSpellings( current_lexeme ) local alt_spellings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P11577')) do -- বিকল্প বানান if stmt.mainsnak.datavalue ~= nil then table.insert(alt_spellings, '* ' .. getLinkedLemmata(getEntity(stmt.mainsnak.datavalue.value.id))) end end return table.concat(alt_spellings, '\n') end local function heading_level(text, level) local heading_delimiter = string.rep('=', level) return heading_delimiter .. ' ' .. text .. ' ' .. heading_delimiter end function get_any_notes(sections, args, keys) local notes = {} for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(notes, args[v]) end end return notes end function add_specific_notes(sections, notes) for i, v in ipairs(notes) do table.insert(sections, v) end end local function add_any_notes(sections, args, keys) for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(sections, args[v]) end end end local function getMatchingLemmaForPageTitle(lexeme, title) local lemmas = lexeme:getLemmas() local matched_lemma for _, lemma_entry in ipairs(lemmas) do local lemma = lemma_entry[1] local clean_lemma = normalizeLemmas(lemma) if clean_lemma == title then matched_lemma = lemma break end end return matched_lemma end local function buildLanguageAgnosticInflectionTable() local has_image = false local form_images = {} for i, form in ipairs(forms) do local form_image = form:getAllStatements('P7407') if next(form_image) ~= nil then form_images[i] = form_image[1].mainsnak.datavalue.value has_image = true end end local table_class = "wikitable mw-collapsible sortable" if not has_image then table_class = table_class .. " mw-collapsed" end local text = "{| class='" .. table_class .. "' style='border:solid 1px rgb(80%,80%,100%); text-align:center;'\n" text = text .. "|+ " .. i18n['heading_inflection_table'] .. "\n" text = text .. "|- \n" text = text .. "! " .. i18n['heading_form'] .. " !! " .. i18n['heading_grammatical_features'] if has_image then text = text .. " !! " .. (i18n['heading_image']) end text = text .. " \n" for i, form in ipairs(forms) do local rep = form:getRepresentations() local feat = form:getGrammaticalFeatures() local rep_text = "" for j, r in pairs(rep) do if rep_text == "" then rep_text = r[1] else rep_text = rep_text .. " / " .. r[1] end end local feat_text = "" if feat ~= nil then for j, f in ipairs(feat) do local label = wb.getLabel(f) or f if feat_text == "" then feat_text = label else feat_text = feat_text .. ", " .. label end end end text = text .. "|-\n" text = text .. "| " .. (rep_text ~= "" and rep_text or "—") text = text .. " || " .. (feat_text ~= "" and feat_text or "—") if has_image then local image_cell = "—" if form_images[i] ~= nil then image_cell = "[[চিত্র:" .. form_images[i] .. "|50px]]" end text = text .. " || " .. image_cell end text = text .. "\n" end text = text .. "|}" return text end function p.all( frame ) local args = getArgs(frame) local lexeme_id = args[1] local current_lexeme = getEntity(lexeme_id) local current_language = current_lexeme:getLanguage() local senses = current_lexeme:getSenses() local add_heading = true forms = current_lexeme:getForms() if args[2] ~= nil then local val = mw.text.trim(tostring(args[2])) if val == "false" or val == "0" or val == "না" then add_heading = false end end local references_seen = {} local sections = {} local lang_name = wb.getLabel(current_language) if add_heading == true then local lang_heading = "== " .. lang_name .. " ==" table.insert(sections, lang_heading) end local lex_cat = current_lexeme:getLexicalCategory() lang_code = getLexemeLanguageCode(current_lexeme) local title = mw.title.getCurrentTitle().text local lang_category = getLanguageForCategories(current_language, title) local cat = i18n.lang_category(wb.getLabel(lex_cat), wb.getLabel(current_language)) local lex_cat_template if cat ~= nil then table.insert(sections, '===' .. wb.getLabel(lex_cat) .. cat .. frame:expandTemplate{ title = i18n['template_anchor'], args = { lexeme_id } } .. '===') table.insert(sections, frame:expandTemplate{ title= i18n['template_lexeme'], args = {lexeme_id} }) add_any_notes(sections, args, i18n['manual_category']) local etymology = getEtymology( current_lexeme, frame ) if etymology ~= '' and etymology ~= nil then table.insert(sections, heading_level(i18n['heading_etymology'], 4)) table.insert(sections, tostring(etymology)) end add_any_notes(sections, args, i18n['manual_etymology']) local pronunciation = getPronunciation( frame, current_lexeme, lang_name, lex_cat ) if pronunciation ~= '' then table.insert(sections, heading_level(i18n['heading_pronunciation'], 4)) table.insert(sections, tostring(pronunciation)) end add_any_notes(sections, args, i18n['manual_pronunciation']) local alternative_spellings = getAlternativeSpellings( current_lexeme ) if alternative_spellings ~= '' then table.insert(sections, heading_level(i18n['heading_alternative_spellings'], 4)) table.insert(sections, alternative_spellings) end if lang_code ~= nil and lang_code ~= 'ksy' and lang_code ~= 'rkt' then -- Skip for Kharia Thar, Rangpuri if lex_cat == 'Q34698' then -- বিশেষণ if lang_code == 'en' or lang_code == 'bn' then if #forms <= 1 then lex_cat_template = frame:expandTemplate{title= lang_code .. '-বিশেষণ'} end else lex_cat_template = safeExpand(frame, lang_code .. '-adj') if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ') end end elseif lex_cat == 'Q1084' then -- @TODO: Also check for plural forms local gender local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ if #stmts ~= 0 then if #stmts == 1 then local gender_qid = stmts[1].mainsnak.datavalue.value.id if gender_qid == 'Q499327' then gender = 'm' elseif gender_qid == 'Q1775415' then gender = 'f' elseif gender_qid == 'Q1775461' then gender = 'n' elseif gender_qid == 'Q1305037' then gender = 'c' end end else for i, stmt in pairs(stmts) do local qid = stmts[i].mainsnak.datavalue.value.id if qid == 'Q499327' then gender = gender .. 'm' elseif qid == 'Q1775415' then gender = gender .. 'f' end end end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. if current_language == 'Q13955' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = safeExpand(frame, {title='ar-noun', args={matched_lemma,gender}}) else lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}} end elseif current_language == 'Q29919' then lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}} elseif current_language == 'Q397' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = frame:expandTemplate{title='la-noun', args={matched_lemma,g=gender}} end elseif current_language == 'Q11059' then lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}} elseif current_language ~= 'Q1860' then -- These templates require the gender to be passed as the 1st argument. lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix'], {gender}) if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix_fallback'], {gender}) end end end end -- elseif lex_cat == 'Q147276' then -- lex_cat_template = safeExpand(frame, lang_code .. '-proper noun', {gender}) -- if not lex_cat_template then -- lex_cat_template = safeExpand(frame, lang_code .. '-নামবাচক বিশেষ্য', {gender}) -- end end if lex_cat_template ~= nil then table.insert(sections, lex_cat_template) else local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then table.insert(sections, heading_level(matched_lemma, 4)) else table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]') end end local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name)) table.insert(sections, tostring(meanings)) add_any_notes(sections, args, i18n['manual_meaning']) local instance_of = current_lexeme:getAllStatements('P31') -- সত্ত্বার ধরন if #instance_of ~= 0 then local instance_of_entity = instance_of[1].mainsnak.datavalue.value.id if instance_of_entity == 'Q40437546' or instance_of_entity == 'Q120831827' or instance_of_entity == 'Q120717979' or instance_of_entity == 'Q124476844' then -- @TODO: generalise this so all types of roots are shown table.insert(sections, i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)) elseif instance_of_entity == 'Q376431' then -- বর্ণের নাম table.insert(sections, i18n.tocatlink(lang_code .. ':রং')) end end local translations = getTranslations(frame, senses) if translations ~= nil then table.insert(sections, translations) end -- (!) বিশেষ ভাষার বিভক্তির সারণি যদি থাকে সেগুলো এখানে নতুন if বিবৃতি যোগ করা যায়। if next(forms) ~= nil then if current_language == 'Q9610' then -- বাংলা if lex_cat == 'Q24905' then local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getConjTable(frame, forms) table.insert(sections, conjTable) elseif lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z33243|' .. lexeme_id .. '|', frame)) elseif lex_cat == 'Q34698' then if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end --elseif current_language == 'Q13955' then -- আরবি -- if lex_cat == 'Q1084' then -- table.insert(sections, frame:expandTemplate{title='ar-decl-noun', args={lemma}}) -- end elseif current_language == 'Q188' then -- জার্মান if lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z28602|' .. lexeme_id .. '|', frame)) end else if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end end local reference_notes = get_any_notes(sections, args, i18n['manual_reference']) if #references_seen > 0 or #reference_notes > 0 then table.insert(sections, heading_level(i18n['heading_references'], 4)) table.insert(sections, frame:extensionTag('references')) add_specific_notes(sections, reference_notes) end local external_link_table = getExternalLinks ( current_lexeme ) if #external_link_table > 0 then local external_links = '* ' .. table.concat(external_link_table, '\n* ') table.insert(sections, heading_level(i18n['heading_external_links'], 4)) table.insert(sections, external_links) end add_any_notes(sections, args, i18n['manual_external_link']) if #references_seen == 0 and #reference_notes == 0 and #external_link_table == 0 and #get_any_notes(sections, args, i18n['manual_external_link']) == 0 then if i18n['category_rfref'][lang_category] ~= nil then table.insert(sections, i18n.tocatlink(i18n['category_rfref'][lang_category])) else table.insert(sections, i18n.tocatlink(i18n['category_rfref']['_'])) end end return table.concat(sections,"\n\n") end return p i2eg094haq36rje6b7lo61qhwy7fqfz 508934 508933 2026-05-17T12:16:57Z Redmin 6857 508934 Scribunto text/plain local p = {} local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n') local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format local getArgs = require('Module:Arguments').getArgs local wb = mw.wikibase local ustring = mw.ustring local html = mw.html local mw_lang = mw.language local entity_cache = {} local reference_cache = {} local forms local lang_code local function countWords(string) local count = 0 for word in ustring.gmatch(string, "%S+") do count = count + 1 end return count end local function normalizeLemmas(text) text = mw.ustring.gsub(text, "ٰ", "") text = mw.ustring.gsub(text, "ِ", "") text = mw.ustring.gsub(text, "[ً-ٟ]", "") text = mw.ustring.gsub(text, "أ", "ا") --text = mw.ustring.gsub(text, "إ", "ا") text = mw.ustring.gsub(text, "آ", "ا") return text end local function serializeTable(val, name, skipnewlines, depth) -- https://stackoverflow.com/a/6081639 skipnewlines = skipnewlines or false depth = depth or 0 local tmp = string.rep(" ", depth) if name then tmp = tmp .. name .. " = " end if type(val) == "table" then tmp = tmp .. "{" .. (not skipnewlines and "\n" or "") for k, v in pairs(val) do tmp = tmp .. serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "") end tmp = tmp .. string.rep(" ", depth) .. "}" elseif type(val) == "number" then tmp = tmp .. tostring(val) elseif type(val) == "string" then tmp = tmp .. string.format("%q", val) elseif type(val) == "boolean" then tmp = tmp .. (val and "true" or "false") else tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\"" end return tmp end -- Use this to safely expand templates when you are not sure that they exist. local function safeExpand(frame, title, args) local _, result = pcall(function() return frame:expandTemplate{ title = title, args = args } end) if result:find('does not exist') then -- expandTemplate{} doesn't seem to throw any error that can be handled with pcall() so string search is the only viable option. return nil end return result end local function getReference( id, reference ) local out_id = nil local url_value if reference_cache[id] == nil then local ref_text = references(reference, wb, mw_lang, i18n['content_lang_code'], i18n['wikipedia']) if reference.snaks ~= nil then if reference.snaks['P248'] ~= nil then for _, snak in pairs(reference.snaks['P248']) do if snak.datavalue and snak.datavalue.value.id == 'Q428' then -- কুরআন ref_text = ustring.gsub(ref_text, 'নামক অনুচ্ছেদ', 'নং আয়াত') break end end end if reference.snaks['P854'] ~= nil then local snak = reference.snaks['P854'][1] if snak.datavalue then url_value = snak.datavalue.value end end end if url_value ~= nil then ref_text = ref_text .. ', [' .. url_value .. ' সংযোগ]' end reference_cache[id] = ref_text else out_id = id end return {out_id, reference_cache[id]} end local function getEntity( id ) if entity_cache[id] == nil then entity_cache[id] = wb.getEntity(id) end return entity_cache[id] ~= false and entity_cache[id] or nil end local function getLexemeLanguageCode(current_lexeme) local lang_item_id = current_lexeme:getLanguage() if lang_item_id == nil then return nil end local lang_entity = getEntity(lang_item_id) if lang_entity == nil then return nil end for i, statement_property in ipairs({'P305','P424', 'P220'}) do -- আইইটিএফ ভাষা ট্যাগ, উইকিমিডিয়া ভাষা কোড, আইএসও ৬৩৯-৩ local statements = lang_entity:getBestStatements(statement_property) if statements[1] ~= nil then return statements[1].mainsnak.datavalue.value end end return nil end -- Return the first form of the lexeme which has exactly the given grammatical feature. local function formWithSingleGrammaticalFeature( item_id ) for i = 1, #forms do local grammaticalFeatures = forms[i]:getGrammaticalFeatures() if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then return forms[i] end end return nil end local function getArticleLinkTemplate(frame, stmt_value) local template = '' local sitelink = getEntity(stmt_value):getSitelink(i18n['wikipedia']) if sitelink ~= nil then template = frame:expandTemplate{ title=i18n['template_wikipedia'], args={sitelink} } end return template end local function getArticleLinks (frame, sense ) local article_links = '' for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয় article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end return article_links end -- @TODO: Generalise local function expandTemplateForProperty(frame, object, property, template) local lemmas = {} local n = 0 for _, stmt in pairs(object:getAllStatements(property)) do local lex = wb.lexeme.splitLexemeId(stmt.mainsnak.datavalue.value.id) lex = getEntity(lex) n = n + 1 lemmas[n] = lex:getLemma(lang_code) end if not lang_code or n == 0 then return '' end -- Build args: first lang_code, then lemmas local args = {lang_code} for i = 1, n do args[#args + 1] = lemmas[i] end return frame:expandTemplate{ title = template, args = args } end local function getExternalLinks( entity ) -- T418639 local external_links = {} if entity.claims == nil then return external_links end local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls for property_id, statements in pairs(entity.claims) do local formatter_url = formatter_urls[property_id] if formatter_url ~= nil then local property_source = wb.getBestStatements(property_id, 'P9073') local source_name if next(property_source) ~= nil then source_name = wb.getLabel(property_source[1].mainsnak.datavalue.value.id) or property_source[1].mainsnak.datavalue.value.id else source_name = wb.getLabel(property_id) or property_id end for i = 1, #statements do local stmt = statements[i] if stmt.mainsnak.datavalue then local formatted_link = ustring.gsub( ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value), ' ', '+' ) table.insert(external_links, '[' .. formatted_link .. ' ' .. source_name .. ']') end end end end return external_links end p.getExternalLinks = getExternalLinks -- রেখে দিন যাতে ডিবাগিং সম্ভব হয় local function termSpan( term ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( text ) return tostring( span ) end local function termLink( term, lang_qid ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( '[[' .. text .. '#' .. wb.getLabel(lang_qid) .. '|' .. text .. ']]' ) return tostring( span ) end local function getLemmata( current_lexeme ) local 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 local function getLinkedLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termLink(rep, current_lexeme:getLanguage()) else lemma_string = lemma_string .. '/' .. termLink(rep, current_lexeme:getLanguage()) end end return lemma_string end local function getExamples( current_lexeme, sense_id, references_seen ) local examples = html.create('dl') for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ if stmt.qualifiers ~= nil and stmt.qualifiers['P6072'] ~= nil and stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_strs = {} if stmt.qualifiers['P1810'] ~= nil then table.insert(example_form_strs, stmt.qualifiers['P1810'][1].datavalue.value) elseif stmt.qualifiers['P5830'] ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ for i, rep in pairs(example_form:getRepresentations()) do table.insert(example_form_strs, rep[1]) end end example_str = nil for i, example_form_str in pairs(example_form_strs) do new_example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") if new_example_text ~= example_text then example_str = termSpan({new_example_text, example_lang}) break end new_example_text = example_text end if example_str == nil then example_str = termSpan({example_text, example_lang}) end local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end end for i, stmt in pairs(wb.getAllStatements(sense_id, 'P5831')) do -- ব্যবহারের উদাহরণ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_str = nil if stmt.qualifers ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ if stmt.qualifiers['P1810'] ~= nil then example_form_str = stmt.qualifiers['P1810'][1].datavalue.value end end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentation(i18n['content_lang_code']) end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentations()[1][1] end if example_form_str ~= nil then example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") end example_str = termSpan({example_text, example_lang}) local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end return { tostring(examples) , references_seen } end -- This calls frame:preprocess() instead of :callParserFunction() because the latter does not work for Wikifunctions function calls yet (see https://www.wikifunctions.org/wiki/Wikifunctions:Embedded_function_calls). local function callWikifunctionsFunction(args, frame) return frame:preprocess('{{#function:' .. args .. '}}') end local function checkTitleCodePointInRange(title, start_point, end_point) return ustring.find( title, '[' ..ustring.char(start_point) .. '-' .. ustring.char(end_point) .. ']' ) end local function getLanguageForCategories( lang_id, current_page_title ) -- বিশেষ ভাষার জন্য if lang_id == 'Q11051' then -- হিন্দি/উর্দু if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- উর্দু lang_id = 'Q11051ur' elseif checkTitleCodePointInRange(current_page_title, 0x0900, 0x097f) ~= nil then -- হিন্দি lang_id = 'Q11051hi' end elseif lang_id == 'Q58635' then -- পাঞ্জাবি if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- শাহমুখী lang_id = 'Q58635pnb' elseif checkTitleCodePointInRange(current_page_title, 0x0a00, 0x0a7f) ~= nil then -- গুরুমুখী lang_id = 'Q58635pa' end elseif lang_id == 'Q56356571' then -- নয়া ফার্সি ভাষা if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- ফার্সি (ইরান/আফগানিস্তান) lang_id = 'Q56356571fa' elseif checkTitleCodePointInRange(current_page_title, 0x0400, 0x04ff) ~= nil then -- তাজিক lang_id = 'Q56356571tg' end end return lang_id end local function getOneStringForProperty(object, property) local val local stmts = object:getAllStatements(property) if #stmts ~= 0 then val = stmts[1].mainsnak.datavalue.value end return val end local function getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved if #senses == 0 then return nil end local all_translations = {} for _, sense in pairs(senses) do local translation_set = {} local gloss = sense:getGloss('bn') for _, stmt in pairs(sense:getAllStatements('P5972')) do local translation = stmt.mainsnak.datavalue.value.id local lexeme_id = wb.lexeme.splitLexemeId(translation) local language = wb.getLabel(getEntity(lexeme_id):getLanguage()) table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>') end if #translation_set > 0 then local block = frame:expandTemplate{ title = i18n['template_trans-top'], args = { gloss } } block = block .. table.concat(translation_set, '\n') .. frame:expandTemplate{ title = i18n['template_trans-bottom'] } table.insert(all_translations, block) end end if #all_translations == 0 then return nil end return '====' .. i18n['heading_translation'] .. '==== \n' .. table.concat(all_translations, '\n') end local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. i18n.tocatlink(i18n['category_rfdef']), references_seen} end local meanings = html.create( 'ol' ) for i, sense in pairs(senses) do local gloss_text_parts = {} local main_gloss_text = frame:expandTemplate{ title=i18n['template_anchor'], args={sense:getId()} } local specifiers = {} for k, property_id in ipairs({'P6084', 'P6191', 'P9488'}) do -- অবস্থান যেখানে শব্দার্থ ব্যবহৃত, যে রীতিতে শব্দার্থ ব্যবহৃত হয়, যে ক্ষেত্রে ব্যবহৃত for i, stmt in pairs(sense:getAllStatements(property_id)) do local stmt_value = stmt.mainsnak.datavalue.value.id local reference_text = '' local refs = stmt.references if refs ~= nil then for j, reference in pairs(refs) do table.insert(references_seen, reference.hash) got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. frame:extensionTag('ref', got_reference[2]) end local val = wb.getLabel(stmt_value) table.insert(specifiers, val .. reference_text) if property_id == 'P9488' then table.insert(specifiers, i18n.tocatlink(lang_code .. val)) end end end end if #specifiers > 0 then main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') " end local gloss = sense:getGloss( i18n['content_lang_code'] ) if gloss ~= nil then if countWords(gloss) == 1 then main_gloss_text = main_gloss_text .. "[[" .. gloss .. "#" .. i18n['content_lang_name'] .. "|" .. gloss .. "]]" else main_gloss_text = main_gloss_text .. gloss end if gloss:match('^প্রদত্ত%s*(%S-)%s*নাম$') then -- given names main_gloss_text = main_gloss_text .. i18n.tocatlink(language_name .. ' ' .. i18n['category_given_names']) end else local other_gloss_text = nil local other_gloss_lang = nil local item_label_gloss_parts = {} for k, stmt in pairs(sense:getAllStatements('P5137')) do -- যদি 'এই অর্থের জন্য আইটেম' মানের বাংলা লেবেল থাকে local stmt_value = stmt.mainsnak.datavalue.value.id local stmt_label = wb.getLabel(stmt_value) if stmt_label ~= nil then table.insert(item_label_gloss_parts, '[[:d:' .. stmt_value .. '|' .. stmt_label .. ']]') end end if #item_label_gloss_parts > 0 then other_gloss_text = table.concat(item_label_gloss_parts, '; ') end if other_gloss_text == nil then for i, fallback_lang in ipairs(mw_lang.getFallbacksFor( i18n['content_lang_code'] )) do if sense:getGloss( fallback_lang ) ~= nil then other_gloss_text, other_gloss_lang = sense:getGloss( fallback_lang ) end end if other_gloss_lang == nil then local glosses = sense:getGlosses() for j, gloss in pairs(glosses) do other_gloss_text = gloss[1] other_gloss_lang = gloss[2] break end end main_gloss_text = main_gloss_text .. other_gloss_text .. "<sup><em>" .. mw_lang.fetchLanguageName(other_gloss_lang, i18n['content_lang_code']) .. "</em></sup>" else main_gloss_text = main_gloss_text .. "''" .. other_gloss_text .. "''" end main_gloss_text = main_gloss_text .. i18n.tocatlink(i18n['category_rfdef_equivalent']) end local synonym = expandTemplateForProperty(frame, sense, 'P5973', i18n['template_synonym']) if synonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. synonym end local antonym = expandTemplateForProperty(frame, sense, 'P5974', i18n['template_antonym']) if antonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. antonym end local hypernym = expandTemplateForProperty(frame, sense, 'P6593', i18n['template_hypernym']) if hypernym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. hypernym end if lex_cat == 'Q1084' or lex_cat == 'Q147276' then -- noun or proper noun local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-noun']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym elseif lex_cat == 'Q34698' then local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-adj']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym end table.insert(gloss_text_parts, main_gloss_text .. createicon(i18n['content_lang_code'], sense:getId())) 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 local got_reference = getReference ( stmt.references[1].hash, stmt.references[1] ) gloss_quote = '"' .. gloss_quote .. '" ' .. got_reference[2] end table.insert(references_seen, stmt.references[1].hash) table.insert(gloss_text_parts, frame:extensionTag('ref', gloss_quote)) end for i, stmt in pairs(sense:getAllStatements('P1343')) do -- বর্ণিত উৎস -- TODO: do away with making fake reference objects local fake_reference = { ['snaks'] = {} } fake_reference.snaks['P248'] = { [1] = stmt.mainsnak } qualifiers_order = stmt['qualifiers-order'] if qualifiers_order ~= nil then for i, k in ipairs(qualifiers_order) do fake_reference.snaks[k] = stmt.qualifiers[k] end end fake_reference.hash = mw.hash.hashValue('sha3-512', serializeTable(fake_reference)) table.insert(references_seen, fake_reference.hash) local got_reference = getReference(fake_reference.hash, fake_reference) if got_reference[1] == nil then table.insert(gloss_text_parts, frame:extensionTag('ref', got_reference[2], {name = fake_reference.hash})) else table.insert(gloss_text_parts, frame:extensionTag{name = 'ref', content='', args = {name = got_reference[1]}}) end end local first_sense_image = '' local 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 table.insert(gloss_text_parts, '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]') end local idlinks = getExternalLinks(sense) if #idlinks > 0 then local idlinktext = '<small>(' for _, idlink in pairs(idlinks) do idlinktext = idlinktext .. idlink .. '\n' end idlinktext = idlinktext .. ')</small>' table.insert(gloss_text_parts, idlinktext) end local externallinks = getArticleLinks(frame, sense) if externallinks ~= '' then table.insert(gloss_text_parts, externallinks) end local new_notes = {} local sense_keys = { sense:getId(), string.sub(sense:getId(), string.find(sense:getId(), '-')+1) } for _, v in ipairs(sense_keys) do if args[v] ~= nil then table.insert(new_notes, args[v]) end end if #new_notes > 0 then for _, v in ipairs(new_notes) do if i == 1 then table.insert(gloss_text_parts, '<br/>' .. v) else table.insert(gloss_text_parts, v) end end end local examples, references_seen = unpack(getExamples( current_lexeme, sense:getId(), references_seen )) local gloss_text = table.concat(gloss_text_parts, '\n') meanings:tag('li'):wikitext(gloss_text):wikitext(examples) end return {meanings, references_seen} end local function getPronunciationBaseForm( lang_name, lex_cat) local base_form = nil -- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়। if lang_name == 'বাংলা' then if lex_cat == 'Q1084' then -- বিশেষ্য base_form = formWithSingleGrammaticalFeature( 'Q131105' ) -- কর্তৃকারক elseif lex_cat == 'Q24905' then -- ক্রিয়া base_form = formWithSingleGrammaticalFeature( 'Q1350145' ) -- ক্রিয়া বিশেষ্য end end if base_form == nil then for i, form in pairs(forms) do base_form = form break end end return base_form end local function getCombines( current_lexeme ) local combines = '' local index_mappings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P5238')) do if stmt.qualifiers ~= nil and stmt.qualifiers['P1545'] ~= nil then -- ক্রম local current_index = tonumber(stmt.qualifiers['P1545'][1].datavalue.value) index_mappings[current_index] = stmt end end if #index_mappings ~= 0 then for i, stmt in ipairs(index_mappings) do if stmt.mainsnak.datavalue ~= nil then local part_lexeme_id = stmt.mainsnak.datavalue.value.id local part_lexeme = getEntity(part_lexeme_id) local current_substring = getLinkedLemmata(part_lexeme) local part_etymology = getEtymology(part_lexeme) if part_etymology ~= '' and part_etymology ~= nil then current_substring = current_substring .. ' (← ' .. part_etymology .. ')' end if combines == '' then combines = current_substring else -- @TODO: This shoukd use the 'affix' template instead. combines = combines .. ' + ' .. current_substring end end end end return combines end function getRoots( current_lexeme ) local stmts = current_lexeme:getAllStatements('P5920') if #stmts == 0 then return '' end local root_lexeme = getEntity(stmts[1].mainsnak.datavalue.value.id) return '√' .. getLinkedLemmata(root_lexeme), root_lexeme:getLemma('ar') end function getEtymology( current_lexeme, frame ) -- TODO: see if any etymology chains are not possible to render local etymology = '' local current_combines = getCombines(current_lexeme) local current_roots, root_str = getRoots(current_lexeme) local stmts = current_lexeme:getAllStatements('P5191') if #stmts == 0 then if lang_code == 'ar' and frame ~= nil then return frame:expandTemplate{title='ar-rootbox', args={root_str}} elseif current_roots ~= '' and current_combines ~= '' then return current_roots .. '<br/>(' .. current_combines .. ')' elseif current_roots ~= '' then return current_roots else return current_combines end end for i, stmt in pairs(stmts) do local origin_lexeme_dv = stmt.mainsnak.datavalue -- If this is nil, the origin lexeme is not known. if origin_lexeme_dv ~= nil then local origin_lexeme = getEntity(origin_lexeme_dv.value.id) local origin_lexeme_lang = origin_lexeme:getLanguage() local origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. wb.getLabel(origin_lexeme_lang) .. ')' if stmt.qualifiers ~= nil and stmt.qualifiers['P5886'] ~= nil then local mode_of_derivation = stmt.qualifiers['P5886'][1].datavalue.value.id if mode_of_derivation == 'Q1345001' then origin_lexeme_string = ustring.gsub(i18n['etymology_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q845079' then origin_lexeme_string = ustring.gsub(i18n['etymology_learned_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q56611986' then origin_lexeme_string = ustring.gsub(i18n['etymology_inheritance'], '$1', origin_lexeme_string) end end local origin_origin = getEtymology(origin_lexeme) local new_etymology_string = '' if origin_origin ~= '' and origin_origin ~= nil then new_etymology_string = origin_lexeme_string .. ' ← ' .. origin_origin else new_etymology_string = origin_lexeme_string end end if etymology == '' then etymology = new_etymology_string elseif origin_lexeme_string ~= nil and etymology ~= nil then etymology = etymology .. ' ' .. origin_lexeme_string elseif origin_lexeme_string ~= nil and etymology == nil then etymology = ' ' .. origin_lexeme_string end end if current_roots ~= '' then etymology = etymology .. ' ' .. current_roots end if current_combines ~= '' and etymology ~= nil then etymology = etymology .. '<br/>(' .. current_combines .. ')' end return etymology end local function getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pronunciations = {} local base_form = getPronunciationBaseForm(lang_name, lex_cat ) if base_form ~= nil then for i, stmt in pairs(base_form:getAllStatements('P443')) do -- উচ্চারণের অডিও local pronunciation_file = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in pairs(stmt.qualifiers[property_id]) do local stmt_value = qual.datavalue.value.id table.insert(specifiers, wb.getLabel(stmt_value)) end end end if #specifiers > 0 then specifier_text = table.concat(specifiers, "'', ''") end local audio_text if specifier_text ~= '' then audio_text = i18n['text_audio'] .. ' (' .. specifier_text .. ')' else audio_text = i18n['text_audio'] end table.insert(pronunciations, '* ' .. frame:expandTemplate{ title= i18n['template_audio'], args = {lang_name, pronunciation_file, audio_text} }) end local ipa_transcription = base_form:getAllStatements('P898') -- - আধ্বব প্রতিলিপিকরণ local iso15919_transcription = getOneStringForProperty(base_form, 'P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ local itrans = getOneStringForProperty(base_form, 'P8881') -- ITRANS local iast = getOneStringForProperty(base_form, 'P7581') -- আইএএসটি প্রতিলিপিকরণ local xsampa = getOneStringForProperty(base_form, 'P2859') -- @TODO: অডিও ও প্রতিলিপিকরণ দুটোই থাকলে সেই ক্ষেত্রে একটার ঠিক পরেই আরেকটা দেখানো উচিত if #ipa_transcription ~= 0 then for i, stmt in pairs(ipa_transcription) do local ipa_text = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in ipairs(stmt.qualifiers[property_id]) do table.insert(specifiers, wb.getLabel( qual.datavalue.value.id )) end end end if #specifiers > 0 then specifier_text = "(''" .. table.concat(specifiers, "'', ''") .. "'') " end table.insert(pronunciations, '* ' .. specifier_text .. frame:expandTemplate{ title= i18n['template_ipa'], args = {lang_name, ipa_text} } .. '\n* ' .. i18n['text_syllable_count'] .. callWikifunctionsFunction('Z30837|' .. ipa_text, frame)) end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. elseif lang_name == 'বাংলা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='bn-IPA', }) elseif lang_name == 'আরবি' then local lemma = current_lexeme:getLemma('ar') table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ar-IPA', args={lemma} }) elseif lang_name == 'ফালা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fax-pron', }) elseif lang_code == 'fi' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fi-IPA', }) elseif lang_code == 'ko' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ko-IPA', }) end if iso15919_transcription ~= nil then table.insert(pronunciations, '* ' .. i18n['text_iso15919'] .. iso15919_transcription) end if itrans ~= nil then table.insert(pronunciations, '* ' .. i18n['text_itrans'] .. itrans) end if iast ~= nil then table.insert(pronunciations, '* ' .. i18n['text_iast'] .. iast) end if xsampa ~= nil then table.insert(pronunciations, '* ' .. i18n['text_xsampa'] .. xsampa) end end -- {{আধ্বব|en|/ˈɪntəvjuː/}} return table.concat(pronunciations, '\n') end local function getAlternativeSpellings( current_lexeme ) local alt_spellings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P11577')) do -- বিকল্প বানান if stmt.mainsnak.datavalue ~= nil then table.insert(alt_spellings, '* ' .. getLinkedLemmata(getEntity(stmt.mainsnak.datavalue.value.id))) end end return table.concat(alt_spellings, '\n') end local function heading_level(text, level) local heading_delimiter = string.rep('=', level) return heading_delimiter .. ' ' .. text .. ' ' .. heading_delimiter end function get_any_notes(sections, args, keys) local notes = {} for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(notes, args[v]) end end return notes end function add_specific_notes(sections, notes) for i, v in ipairs(notes) do table.insert(sections, v) end end local function add_any_notes(sections, args, keys) for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(sections, args[v]) end end end local function getMatchingLemmaForPageTitle(lexeme, title) local lemmas = lexeme:getLemmas() local matched_lemma for _, lemma_entry in ipairs(lemmas) do local lemma = lemma_entry[1] local clean_lemma = normalizeLemmas(lemma) if clean_lemma == title then matched_lemma = lemma break end end return matched_lemma end local function buildLanguageAgnosticInflectionTable() local has_image = false local form_images = {} for i, form in ipairs(forms) do local form_image = form:getAllStatements('P7407') if next(form_image) ~= nil then form_images[i] = form_image[1].mainsnak.datavalue.value has_image = true end end local table_class = "wikitable mw-collapsible sortable" if not has_image then table_class = table_class .. " mw-collapsed" end local text = "{| class='" .. table_class .. "' style='border:solid 1px rgb(80%,80%,100%); text-align:center;'\n" text = text .. "|+ " .. i18n['heading_inflection_table'] .. "\n" text = text .. "|- \n" text = text .. "! " .. i18n['heading_form'] .. " !! " .. i18n['heading_grammatical_features'] if has_image then text = text .. " !! " .. (i18n['heading_image']) end text = text .. " \n" for i, form in ipairs(forms) do local rep = form:getRepresentations() local feat = form:getGrammaticalFeatures() local rep_text = "" for j, r in pairs(rep) do if rep_text == "" then rep_text = r[1] else rep_text = rep_text .. " / " .. r[1] end end local feat_text = "" if feat ~= nil then for j, f in ipairs(feat) do local label = wb.getLabel(f) or f if feat_text == "" then feat_text = label else feat_text = feat_text .. ", " .. label end end end text = text .. "|-\n" text = text .. "| " .. (rep_text ~= "" and rep_text or "—") text = text .. " || " .. (feat_text ~= "" and feat_text or "—") if has_image then local image_cell = "—" if form_images[i] ~= nil then image_cell = "[[চিত্র:" .. form_images[i] .. "|50px]]" end text = text .. " || " .. image_cell end text = text .. "\n" end text = text .. "|}" return text end function p.all( frame ) local args = getArgs(frame) local lexeme_id = args[1] local current_lexeme = getEntity(lexeme_id) local current_language = current_lexeme:getLanguage() local senses = current_lexeme:getSenses() local add_heading = true forms = current_lexeme:getForms() if args[2] ~= nil then local val = mw.text.trim(tostring(args[2])) if val == "false" or val == "0" or val == "না" then add_heading = false end end local references_seen = {} local sections = {} local lang_name = wb.getLabel(current_language) if add_heading == true then local lang_heading = "== " .. lang_name .. " ==" table.insert(sections, lang_heading) end local lex_cat = current_lexeme:getLexicalCategory() lang_code = getLexemeLanguageCode(current_lexeme) local title = mw.title.getCurrentTitle().text local lang_category = getLanguageForCategories(current_language, title) local cat = i18n.lang_category(wb.getLabel(lex_cat), wb.getLabel(current_language)) local lex_cat_template if cat ~= nil then table.insert(sections, '===' .. wb.getLabel(lex_cat) .. cat .. frame:expandTemplate{ title = i18n['template_anchor'], args = { lexeme_id } } .. '===') table.insert(sections, frame:expandTemplate{ title= i18n['template_lexeme'], args = {lexeme_id} }) add_any_notes(sections, args, i18n['manual_category']) local etymology = getEtymology( current_lexeme, frame ) if etymology ~= '' and etymology ~= nil then table.insert(sections, heading_level(i18n['heading_etymology'], 4)) table.insert(sections, tostring(etymology)) end add_any_notes(sections, args, i18n['manual_etymology']) local pronunciation = getPronunciation( frame, current_lexeme, lang_name, lex_cat ) if pronunciation ~= '' then table.insert(sections, heading_level(i18n['heading_pronunciation'], 4)) table.insert(sections, tostring(pronunciation)) end add_any_notes(sections, args, i18n['manual_pronunciation']) local alternative_spellings = getAlternativeSpellings( current_lexeme ) if alternative_spellings ~= '' then table.insert(sections, heading_level(i18n['heading_alternative_spellings'], 4)) table.insert(sections, alternative_spellings) end if lang_code ~= nil and lang_code ~= 'ksy' and lang_code ~= 'rkt' then -- Skip for Kharia Thar, Rangpuri if lex_cat == 'Q34698' then -- বিশেষণ if lang_code == 'en' or lang_code == 'bn' then if #forms <= 1 then lex_cat_template = frame:expandTemplate{title= lang_code .. '-বিশেষণ'} end else lex_cat_template = safeExpand(frame, lang_code .. '-adj') if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ') end end elseif lex_cat == 'Q1084' then -- @TODO: Also check for plural forms local gender local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ if #stmts ~= 0 then if #stmts == 1 then local gender_qid = stmts[1].mainsnak.datavalue.value.id if gender_qid == 'Q499327' then gender = 'm' elseif gender_qid == 'Q1775415' then gender = 'f' elseif gender_qid == 'Q1775461' then gender = 'n' elseif gender_qid == 'Q1305037' then gender = 'c' end end else for i, stmt in pairs(stmts) do local qid = stmts[i].mainsnak.datavalue.value.id if qid == 'Q499327' then gender = gender .. 'm' elseif qid == 'Q1775415' then gender = gender .. 'f' end end end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. if current_language == 'Q13955' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = safeExpand(frame, {title='ar-noun', args={matched_lemma,gender}}) else lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}} end elseif current_language == 'Q29919' then lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}} elseif current_language == 'Q397' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = frame:expandTemplate{title='la-noun', args={matched_lemma,g=gender}} end elseif current_language == 'Q11059' then lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}} elseif current_language ~= 'Q1860' then -- These templates require the gender to be passed as the 1st argument. lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix'], {gender}) if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix_fallback'], {gender}) end end end end -- elseif lex_cat == 'Q147276' then -- lex_cat_template = safeExpand(frame, lang_code .. '-proper noun', {gender}) -- if not lex_cat_template then -- lex_cat_template = safeExpand(frame, lang_code .. '-নামবাচক বিশেষ্য', {gender}) -- end end if lex_cat_template ~= nil then table.insert(sections, lex_cat_template) else local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then table.insert(sections, heading_level(matched_lemma, 4)) else table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]') end end local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name)) table.insert(sections, tostring(meanings)) add_any_notes(sections, args, i18n['manual_meaning']) local instance_of = current_lexeme:getAllStatements('P31') -- সত্ত্বার ধরন if #instance_of ~= 0 then local instance_of_entity = instance_of[1].mainsnak.datavalue.value.id if instance_of_entity == 'Q40437546' or instance_of_entity == 'Q120831827' or instance_of_entity == 'Q120717979' or instance_of_entity == 'Q124476844' then -- @TODO: generalise this so all types of roots are shown table.insert(sections, i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)) elseif instance_of_entity == 'Q376431' then -- বর্ণের নাম table.insert(sections, i18n.tocatlink(lang_code .. ':রং')) end end local translations = getTranslations(frame, senses) if translations ~= nil then table.insert(sections, translations) end -- (!) বিশেষ ভাষার বিভক্তির সারণি যদি থাকে সেগুলো এখানে নতুন if বিবৃতি যোগ করা যায়। if next(forms) ~= nil then if current_language == 'Q9610' then -- বাংলা if lex_cat == 'Q24905' then local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getConjTable(frame, forms) table.insert(sections, conjTable) elseif lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z33243|' .. lexeme_id .. '|', frame)) elseif lex_cat == 'Q34698' then if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end --elseif current_language == 'Q13955' then -- আরবি -- if lex_cat == 'Q1084' then -- table.insert(sections, frame:expandTemplate{title='ar-decl-noun', args={lemma}}) -- end elseif current_language == 'Q188' then -- জার্মান if lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z28602|' .. lexeme_id .. '|', frame)) end else if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end end local reference_notes = get_any_notes(sections, args, i18n['manual_reference']) if #references_seen > 0 or #reference_notes > 0 then table.insert(sections, heading_level(i18n['heading_references'], 4)) table.insert(sections, frame:extensionTag('references')) add_specific_notes(sections, reference_notes) end local external_link_table = getExternalLinks ( current_lexeme ) if #external_link_table > 0 then local external_links = '* ' .. table.concat(external_link_table, '\n* ') table.insert(sections, heading_level(i18n['heading_external_links'], 4)) table.insert(sections, external_links) end add_any_notes(sections, args, i18n['manual_external_link']) if #references_seen == 0 and #reference_notes == 0 and #external_link_table == 0 and #get_any_notes(sections, args, i18n['manual_external_link']) == 0 then if i18n['category_rfref'][lang_category] ~= nil then table.insert(sections, i18n.tocatlink(i18n['category_rfref'][lang_category])) else table.insert(sections, i18n.tocatlink(i18n['category_rfref']['_'])) end end return table.concat(sections,"\n\n") end return p tsfepn0do3x5ensqkoh049m3itj4c3i 508935 508934 2026-05-17T12:18:59Z Redmin 6857 508935 Scribunto text/plain local p = {} local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n') local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format local getArgs = require('Module:Arguments').getArgs local wb = mw.wikibase local ustring = mw.ustring local html = mw.html local mw_lang = mw.language local entity_cache = {} local reference_cache = {} local forms local lang_code local function countWords(string) local count = 0 for word in ustring.gmatch(string, "%S+") do count = count + 1 end return count end local function normalizeLemmas(text) text = mw.ustring.gsub(text, "ٰ", "") text = mw.ustring.gsub(text, "ِ", "") text = mw.ustring.gsub(text, "[ً-ٟ]", "") text = mw.ustring.gsub(text, "أ", "ا") --text = mw.ustring.gsub(text, "إ", "ا") text = mw.ustring.gsub(text, "آ", "ا") return text end local function serializeTable(val, name, skipnewlines, depth) -- https://stackoverflow.com/a/6081639 skipnewlines = skipnewlines or false depth = depth or 0 local tmp = string.rep(" ", depth) if name then tmp = tmp .. name .. " = " end if type(val) == "table" then tmp = tmp .. "{" .. (not skipnewlines and "\n" or "") for k, v in pairs(val) do tmp = tmp .. serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "") end tmp = tmp .. string.rep(" ", depth) .. "}" elseif type(val) == "number" then tmp = tmp .. tostring(val) elseif type(val) == "string" then tmp = tmp .. string.format("%q", val) elseif type(val) == "boolean" then tmp = tmp .. (val and "true" or "false") else tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\"" end return tmp end -- Use this to safely expand templates when you are not sure that they exist. local function safeExpand(frame, title, args) local _, result = pcall(function() return frame:expandTemplate{ title = title, args = args } end) if result:find('does not exist') then -- expandTemplate{} doesn't seem to throw any error that can be handled with pcall() so string search is the only viable option. return nil end return result end local function getReference( id, reference ) local out_id = nil local url_value if reference_cache[id] == nil then local ref_text = references(reference, wb, mw_lang, i18n['content_lang_code'], i18n['wikipedia']) if reference.snaks ~= nil then if reference.snaks['P248'] ~= nil then for _, snak in pairs(reference.snaks['P248']) do if snak.datavalue and snak.datavalue.value.id == 'Q428' then -- কুরআন ref_text = ustring.gsub(ref_text, 'নামক অনুচ্ছেদ', 'নং আয়াত') break end end end if reference.snaks['P854'] ~= nil then local snak = reference.snaks['P854'][1] if snak.datavalue then url_value = snak.datavalue.value end end end if url_value ~= nil then ref_text = ref_text .. ', [' .. url_value .. ' সংযোগ]' end reference_cache[id] = ref_text else out_id = id end return {out_id, reference_cache[id]} end local function getEntity( id ) if entity_cache[id] == nil then entity_cache[id] = wb.getEntity(id) end return entity_cache[id] ~= false and entity_cache[id] or nil end local function getLexemeLanguageCode(current_lexeme) local lang_item_id = current_lexeme:getLanguage() if lang_item_id == nil then return nil end local lang_entity = getEntity(lang_item_id) if lang_entity == nil then return nil end for i, statement_property in ipairs({'P305','P424', 'P220'}) do -- আইইটিএফ ভাষা ট্যাগ, উইকিমিডিয়া ভাষা কোড, আইএসও ৬৩৯-৩ local statements = lang_entity:getBestStatements(statement_property) if statements[1] ~= nil then return statements[1].mainsnak.datavalue.value end end return nil end -- Return the first form of the lexeme which has exactly the given grammatical feature. local function formWithSingleGrammaticalFeature( item_id ) for i = 1, #forms do local grammaticalFeatures = forms[i]:getGrammaticalFeatures() if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then return forms[i] end end return nil end local function getArticleLinkTemplate(frame, stmt_value) local template = '' local sitelink = getEntity(stmt_value):getSitelink(i18n['wikipedia']) if sitelink ~= nil then template = frame:expandTemplate{ title=i18n['template_wikipedia'], args={sitelink} } end return template end local function getArticleLinks (frame, sense ) local article_links = '' for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয় article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end return article_links end -- @TODO: Generalise local function expandTemplateForProperty(frame, object, property, template) local lemmas = {} local n = 0 for _, stmt in pairs(object:getAllStatements(property)) do local lex = wb.lexeme.splitLexemeId(stmt.mainsnak.datavalue.value.id) lex = getEntity(lex) n = n + 1 lemmas[n] = lex:getLemma(lang_code) end if not lang_code or n == 0 then return '' end -- Build args: first lang_code, then lemmas local args = {lang_code} for i = 1, n do args[#args + 1] = lemmas[i] end return frame:expandTemplate{ title = template, args = args } end local function getExternalLinks( entity ) -- T418639 local external_links = {} if entity.claims == nil then return external_links end local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls for property_id, statements in pairs(entity.claims) do local formatter_url = formatter_urls[property_id] if formatter_url ~= nil then local property_source = wb.getBestStatements(property_id, 'P9073') local source_name if next(property_source) ~= nil then source_name = wb.getLabel(property_source[1].mainsnak.datavalue.value.id) or property_source[1].mainsnak.datavalue.value.id else source_name = wb.getLabel(property_id) or property_id end for i = 1, #statements do local stmt = statements[i] if stmt.mainsnak.datavalue then local formatted_link = ustring.gsub( ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value), ' ', '+' ) table.insert(external_links, '[' .. formatted_link .. ' ' .. source_name .. ']') end end end end return external_links end p.getExternalLinks = getExternalLinks -- রেখে দিন যাতে ডিবাগিং সম্ভব হয় local function termSpan( term ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( text ) return tostring( span ) end local function termLink( term, lang_qid ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( '[[' .. text .. '#' .. wb.getLabel(lang_qid) .. '|' .. text .. ']]' ) return tostring( span ) end local function getLemmata( current_lexeme ) local 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 local function getLinkedLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termLink(rep, current_lexeme:getLanguage()) else lemma_string = lemma_string .. '/' .. termLink(rep, current_lexeme:getLanguage()) end end return lemma_string end local function getExamples( current_lexeme, sense_id, references_seen ) local examples = html.create('dl') for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ if stmt.qualifiers ~= nil and stmt.qualifiers['P6072'] ~= nil and stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_strs = {} if stmt.qualifiers['P1810'] ~= nil then table.insert(example_form_strs, stmt.qualifiers['P1810'][1].datavalue.value) elseif stmt.qualifiers['P5830'] ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ for i, rep in pairs(example_form:getRepresentations()) do table.insert(example_form_strs, rep[1]) end end example_str = nil for i, example_form_str in pairs(example_form_strs) do new_example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") if new_example_text ~= example_text then example_str = termSpan({new_example_text, example_lang}) break end new_example_text = example_text end if example_str == nil then example_str = termSpan({example_text, example_lang}) end local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end end for i, stmt in pairs(wb.getAllStatements(sense_id, 'P5831')) do -- ব্যবহারের উদাহরণ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_str = nil if stmt.qualifers ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ if stmt.qualifiers['P1810'] ~= nil then example_form_str = stmt.qualifiers['P1810'][1].datavalue.value end end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentation(i18n['content_lang_code']) end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentations()[1][1] end if example_form_str ~= nil then example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") end example_str = termSpan({example_text, example_lang}) local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end return { tostring(examples) , references_seen } end -- This calls frame:preprocess() instead of :callParserFunction() because the latter does not work for Wikifunctions function calls yet (see https://www.wikifunctions.org/wiki/Wikifunctions:Embedded_function_calls). local function callWikifunctionsFunction(args, frame) return frame:preprocess('{{#function:' .. args .. '}}') end local function checkTitleCodePointInRange(title, start_point, end_point) return ustring.find( title, '[' ..ustring.char(start_point) .. '-' .. ustring.char(end_point) .. ']' ) end local function getLanguageForCategories( lang_id, current_page_title ) -- বিশেষ ভাষার জন্য if lang_id == 'Q11051' then -- হিন্দি/উর্দু if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- উর্দু lang_id = 'Q11051ur' elseif checkTitleCodePointInRange(current_page_title, 0x0900, 0x097f) ~= nil then -- হিন্দি lang_id = 'Q11051hi' end elseif lang_id == 'Q58635' then -- পাঞ্জাবি if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- শাহমুখী lang_id = 'Q58635pnb' elseif checkTitleCodePointInRange(current_page_title, 0x0a00, 0x0a7f) ~= nil then -- গুরুমুখী lang_id = 'Q58635pa' end elseif lang_id == 'Q56356571' then -- নয়া ফার্সি ভাষা if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- ফার্সি (ইরান/আফগানিস্তান) lang_id = 'Q56356571fa' elseif checkTitleCodePointInRange(current_page_title, 0x0400, 0x04ff) ~= nil then -- তাজিক lang_id = 'Q56356571tg' end end return lang_id end local function getOneStringForProperty(object, property) local val local stmts = object:getAllStatements(property) if #stmts ~= 0 then val = stmts[1].mainsnak.datavalue.value end return val end local function getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved if #senses == 0 then return nil end local all_translations = {} for _, sense in pairs(senses) do local translation_set = {} local gloss = sense:getGloss('bn') for _, stmt in pairs(sense:getAllStatements('P5972')) do local translation = stmt.mainsnak.datavalue.value.id local lexeme_id = wb.lexeme.splitLexemeId(translation) local language = wb.getLabel(getEntity(lexeme_id):getLanguage()) table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>') end if #translation_set > 0 then local block = frame:expandTemplate{ title = i18n['template_trans-top'], args = { gloss } } block = block .. table.concat(translation_set, '\n') .. frame:expandTemplate{ title = i18n['template_trans-bottom'] } table.insert(all_translations, block) end end if #all_translations == 0 then return nil end return '====' .. i18n['heading_translation'] .. '==== \n' .. table.concat(all_translations, '\n') end local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. i18n.tocatlink(i18n['category_rfdef']), references_seen} end local meanings = html.create( 'ol' ) for i, sense in pairs(senses) do local gloss_text_parts = {} local main_gloss_text = frame:expandTemplate{ title=i18n['template_anchor'], args={sense:getId()} } local specifiers = {} for k, property_id in ipairs({'P6084', 'P6191', 'P9488'}) do -- অবস্থান যেখানে শব্দার্থ ব্যবহৃত, যে রীতিতে শব্দার্থ ব্যবহৃত হয়, যে ক্ষেত্রে ব্যবহৃত for i, stmt in pairs(sense:getAllStatements(property_id)) do local stmt_value = stmt.mainsnak.datavalue.value.id local reference_text = '' local refs = stmt.references if refs ~= nil then for j, reference in pairs(refs) do table.insert(references_seen, reference.hash) got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. frame:extensionTag('ref', got_reference[2]) end local val = wb.getLabel(stmt_value) table.insert(specifiers, val .. reference_text) if property_id == 'P9488' then table.insert(specifiers, i18n.tocatlink(lang_code .. val)) end end end end if #specifiers > 0 then main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') " end local gloss = sense:getGloss( i18n['content_lang_code'] ) if gloss ~= nil then if countWords(gloss) == 1 then main_gloss_text = main_gloss_text .. "[[" .. gloss .. "#" .. i18n['content_lang_name'] .. "|" .. gloss .. "]]" else main_gloss_text = main_gloss_text .. gloss end if gloss:match('^প্রদত্ত%s*(%S-)%s*নাম$') then -- given names main_gloss_text = main_gloss_text .. i18n.tocatlink(language_name .. ' ' .. i18n['category_given_names']) end else local other_gloss_text = nil local other_gloss_lang = nil local item_label_gloss_parts = {} for k, stmt in pairs(sense:getAllStatements('P5137')) do -- যদি 'এই অর্থের জন্য আইটেম' মানের বাংলা লেবেল থাকে local stmt_value = stmt.mainsnak.datavalue.value.id local stmt_label = wb.getLabel(stmt_value) if stmt_label ~= nil then table.insert(item_label_gloss_parts, '[[:d:' .. stmt_value .. '|' .. stmt_label .. ']]') end end if #item_label_gloss_parts > 0 then other_gloss_text = table.concat(item_label_gloss_parts, '; ') end if other_gloss_text == nil then for i, fallback_lang in ipairs(mw_lang.getFallbacksFor( i18n['content_lang_code'] )) do if sense:getGloss( fallback_lang ) ~= nil then other_gloss_text, other_gloss_lang = sense:getGloss( fallback_lang ) end end if other_gloss_lang == nil then local glosses = sense:getGlosses() for j, gloss in pairs(glosses) do other_gloss_text = gloss[1] other_gloss_lang = gloss[2] break end end main_gloss_text = main_gloss_text .. other_gloss_text .. "<sup><em>" .. mw_lang.fetchLanguageName(other_gloss_lang, i18n['content_lang_code']) .. "</em></sup>" else main_gloss_text = main_gloss_text .. "''" .. other_gloss_text .. "''" end main_gloss_text = main_gloss_text .. i18n.tocatlink(i18n['category_rfdef_equivalent']) end local synonym = expandTemplateForProperty(frame, sense, 'P5973', i18n['template_synonym']) if synonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. synonym end local antonym = expandTemplateForProperty(frame, sense, 'P5974', i18n['template_antonym']) if antonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. antonym end local hypernym = expandTemplateForProperty(frame, sense, 'P6593', i18n['template_hypernym']) if hypernym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. hypernym end if lex_cat == 'Q1084' or lex_cat == 'Q147276' then -- noun or proper noun local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-noun']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym elseif lex_cat == 'Q34698' then local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-adj']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym end table.insert(gloss_text_parts, main_gloss_text .. createicon(i18n['content_lang_code'], sense:getId())) 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 local got_reference = getReference ( stmt.references[1].hash, stmt.references[1] ) gloss_quote = '"' .. gloss_quote .. '" ' .. got_reference[2] end table.insert(references_seen, stmt.references[1].hash) table.insert(gloss_text_parts, frame:extensionTag('ref', gloss_quote)) end for i, stmt in pairs(sense:getAllStatements('P1343')) do -- বর্ণিত উৎস -- TODO: do away with making fake reference objects local fake_reference = { ['snaks'] = {} } fake_reference.snaks['P248'] = { [1] = stmt.mainsnak } qualifiers_order = stmt['qualifiers-order'] if qualifiers_order ~= nil then for i, k in ipairs(qualifiers_order) do fake_reference.snaks[k] = stmt.qualifiers[k] end end fake_reference.hash = mw.hash.hashValue('sha3-512', serializeTable(fake_reference)) table.insert(references_seen, fake_reference.hash) local got_reference = getReference(fake_reference.hash, fake_reference) if got_reference[1] == nil then table.insert(gloss_text_parts, frame:extensionTag('ref', got_reference[2], {name = fake_reference.hash})) else table.insert(gloss_text_parts, frame:extensionTag{name = 'ref', content='', args = {name = got_reference[1]}}) end end local first_sense_image = '' local 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 table.insert(gloss_text_parts, '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]') end local idlinks = getExternalLinks(sense) if #idlinks > 0 then local idlinktext = '<small>(' for _, idlink in pairs(idlinks) do idlinktext = idlinktext .. idlink .. '\n' end idlinktext = idlinktext .. ')</small>' table.insert(gloss_text_parts, idlinktext) end local externallinks = getArticleLinks(frame, sense) if externallinks ~= '' then table.insert(gloss_text_parts, externallinks) end local new_notes = {} local sense_keys = { sense:getId(), string.sub(sense:getId(), string.find(sense:getId(), '-')+1) } for _, v in ipairs(sense_keys) do if args[v] ~= nil then table.insert(new_notes, args[v]) end end if #new_notes > 0 then for _, v in ipairs(new_notes) do if i == 1 then table.insert(gloss_text_parts, '<br/>' .. v) else table.insert(gloss_text_parts, v) end end end local examples, references_seen = unpack(getExamples( current_lexeme, sense:getId(), references_seen )) local gloss_text = table.concat(gloss_text_parts, '\n') meanings:tag('li'):wikitext(gloss_text):wikitext(examples) end return {meanings, references_seen} end local function getPronunciationBaseForm( lang_name, lex_cat) local base_form = nil -- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়। if lang_name == 'বাংলা' then if lex_cat == 'Q1084' then -- বিশেষ্য base_form = formWithSingleGrammaticalFeature( 'Q131105' ) -- কর্তৃকারক elseif lex_cat == 'Q24905' then -- ক্রিয়া base_form = formWithSingleGrammaticalFeature( 'Q1350145' ) -- ক্রিয়া বিশেষ্য end end if base_form == nil then for i, form in pairs(forms) do base_form = form break end end return base_form end local function getCombines( current_lexeme ) local combines = '' local index_mappings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P5238')) do if stmt.qualifiers ~= nil and stmt.qualifiers['P1545'] ~= nil then -- ক্রম local current_index = tonumber(stmt.qualifiers['P1545'][1].datavalue.value) index_mappings[current_index] = stmt end end if #index_mappings ~= 0 then for i, stmt in ipairs(index_mappings) do if stmt.mainsnak.datavalue ~= nil then local part_lexeme_id = stmt.mainsnak.datavalue.value.id local part_lexeme = getEntity(part_lexeme_id) local current_substring = getLinkedLemmata(part_lexeme) local part_etymology = getEtymology(part_lexeme) if part_etymology ~= '' and part_etymology ~= nil then current_substring = current_substring .. ' (← ' .. part_etymology .. ')' end if combines == '' then combines = current_substring else -- @TODO: This shoukd use the 'affix' template instead. combines = combines .. ' + ' .. current_substring end end end end return combines end function getRoots( current_lexeme ) local stmts = current_lexeme:getAllStatements('P5920') if #stmts == 0 then return '' end local root_lexeme = getEntity(stmts[1].mainsnak.datavalue.value.id) return '√' .. getLinkedLemmata(root_lexeme), root_lexeme:getLemma('ar') end function getEtymology( current_lexeme, frame ) -- TODO: see if any etymology chains are not possible to render local etymology = '' local current_combines = getCombines(current_lexeme) local current_roots, root_str = getRoots(current_lexeme) local stmts = current_lexeme:getAllStatements('P5191') if #stmts == 0 then if lang_code == 'ar' and frame ~= nil then return frame:expandTemplate{title='ar-rootbox', args={root_str}} elseif current_roots ~= '' and current_combines ~= '' then return current_roots .. '<br/>(' .. current_combines .. ')' elseif current_roots ~= '' then return current_roots else return current_combines end end for i, stmt in pairs(stmts) do local origin_lexeme_dv = stmt.mainsnak.datavalue -- If this is nil, the origin lexeme is not known. if origin_lexeme_dv ~= nil then local origin_lexeme = getEntity(origin_lexeme_dv.value.id) local origin_lexeme_lang = origin_lexeme:getLanguage() local origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. wb.getLabel(origin_lexeme_lang) .. ')' if stmt.qualifiers ~= nil and stmt.qualifiers['P5886'] ~= nil then local mode_of_derivation = stmt.qualifiers['P5886'][1].datavalue.value.id if mode_of_derivation == 'Q1345001' then origin_lexeme_string = ustring.gsub(i18n['etymology_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q845079' then origin_lexeme_string = ustring.gsub(i18n['etymology_learned_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q56611986' then origin_lexeme_string = ustring.gsub(i18n['etymology_inheritance'], '$1', origin_lexeme_string) end end local origin_origin = getEtymology(origin_lexeme) local new_etymology_string = '' if origin_origin ~= '' and origin_origin ~= nil then new_etymology_string = origin_lexeme_string .. ' ← ' .. origin_origin else new_etymology_string = origin_lexeme_string end end if etymology == '' then etymology = new_etymology_string elseif origin_lexeme_string ~= nil and etymology ~= nil then etymology = etymology .. ' ' .. origin_lexeme_string elseif origin_lexeme_string ~= nil and etymology == nil then etymology = ' ' .. origin_lexeme_string end end if current_roots ~= '' and etymology ~= nil then etymology = etymology .. ' ' .. current_roots elseif current_roots ~= '' and etymology == nil then etymology = ' ' .. current_roots end if current_combines ~= '' and etymology ~= nil then etymology = etymology .. '<br/>(' .. current_combines .. ')' end return etymology end local function getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pronunciations = {} local base_form = getPronunciationBaseForm(lang_name, lex_cat ) if base_form ~= nil then for i, stmt in pairs(base_form:getAllStatements('P443')) do -- উচ্চারণের অডিও local pronunciation_file = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in pairs(stmt.qualifiers[property_id]) do local stmt_value = qual.datavalue.value.id table.insert(specifiers, wb.getLabel(stmt_value)) end end end if #specifiers > 0 then specifier_text = table.concat(specifiers, "'', ''") end local audio_text if specifier_text ~= '' then audio_text = i18n['text_audio'] .. ' (' .. specifier_text .. ')' else audio_text = i18n['text_audio'] end table.insert(pronunciations, '* ' .. frame:expandTemplate{ title= i18n['template_audio'], args = {lang_name, pronunciation_file, audio_text} }) end local ipa_transcription = base_form:getAllStatements('P898') -- - আধ্বব প্রতিলিপিকরণ local iso15919_transcription = getOneStringForProperty(base_form, 'P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ local itrans = getOneStringForProperty(base_form, 'P8881') -- ITRANS local iast = getOneStringForProperty(base_form, 'P7581') -- আইএএসটি প্রতিলিপিকরণ local xsampa = getOneStringForProperty(base_form, 'P2859') -- @TODO: অডিও ও প্রতিলিপিকরণ দুটোই থাকলে সেই ক্ষেত্রে একটার ঠিক পরেই আরেকটা দেখানো উচিত if #ipa_transcription ~= 0 then for i, stmt in pairs(ipa_transcription) do local ipa_text = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in ipairs(stmt.qualifiers[property_id]) do table.insert(specifiers, wb.getLabel( qual.datavalue.value.id )) end end end if #specifiers > 0 then specifier_text = "(''" .. table.concat(specifiers, "'', ''") .. "'') " end table.insert(pronunciations, '* ' .. specifier_text .. frame:expandTemplate{ title= i18n['template_ipa'], args = {lang_name, ipa_text} } .. '\n* ' .. i18n['text_syllable_count'] .. callWikifunctionsFunction('Z30837|' .. ipa_text, frame)) end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. elseif lang_name == 'বাংলা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='bn-IPA', }) elseif lang_name == 'আরবি' then local lemma = current_lexeme:getLemma('ar') table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ar-IPA', args={lemma} }) elseif lang_name == 'ফালা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fax-pron', }) elseif lang_code == 'fi' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fi-IPA', }) elseif lang_code == 'ko' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ko-IPA', }) end if iso15919_transcription ~= nil then table.insert(pronunciations, '* ' .. i18n['text_iso15919'] .. iso15919_transcription) end if itrans ~= nil then table.insert(pronunciations, '* ' .. i18n['text_itrans'] .. itrans) end if iast ~= nil then table.insert(pronunciations, '* ' .. i18n['text_iast'] .. iast) end if xsampa ~= nil then table.insert(pronunciations, '* ' .. i18n['text_xsampa'] .. xsampa) end end -- {{আধ্বব|en|/ˈɪntəvjuː/}} return table.concat(pronunciations, '\n') end local function getAlternativeSpellings( current_lexeme ) local alt_spellings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P11577')) do -- বিকল্প বানান if stmt.mainsnak.datavalue ~= nil then table.insert(alt_spellings, '* ' .. getLinkedLemmata(getEntity(stmt.mainsnak.datavalue.value.id))) end end return table.concat(alt_spellings, '\n') end local function heading_level(text, level) local heading_delimiter = string.rep('=', level) return heading_delimiter .. ' ' .. text .. ' ' .. heading_delimiter end function get_any_notes(sections, args, keys) local notes = {} for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(notes, args[v]) end end return notes end function add_specific_notes(sections, notes) for i, v in ipairs(notes) do table.insert(sections, v) end end local function add_any_notes(sections, args, keys) for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(sections, args[v]) end end end local function getMatchingLemmaForPageTitle(lexeme, title) local lemmas = lexeme:getLemmas() local matched_lemma for _, lemma_entry in ipairs(lemmas) do local lemma = lemma_entry[1] local clean_lemma = normalizeLemmas(lemma) if clean_lemma == title then matched_lemma = lemma break end end return matched_lemma end local function buildLanguageAgnosticInflectionTable() local has_image = false local form_images = {} for i, form in ipairs(forms) do local form_image = form:getAllStatements('P7407') if next(form_image) ~= nil then form_images[i] = form_image[1].mainsnak.datavalue.value has_image = true end end local table_class = "wikitable mw-collapsible sortable" if not has_image then table_class = table_class .. " mw-collapsed" end local text = "{| class='" .. table_class .. "' style='border:solid 1px rgb(80%,80%,100%); text-align:center;'\n" text = text .. "|+ " .. i18n['heading_inflection_table'] .. "\n" text = text .. "|- \n" text = text .. "! " .. i18n['heading_form'] .. " !! " .. i18n['heading_grammatical_features'] if has_image then text = text .. " !! " .. (i18n['heading_image']) end text = text .. " \n" for i, form in ipairs(forms) do local rep = form:getRepresentations() local feat = form:getGrammaticalFeatures() local rep_text = "" for j, r in pairs(rep) do if rep_text == "" then rep_text = r[1] else rep_text = rep_text .. " / " .. r[1] end end local feat_text = "" if feat ~= nil then for j, f in ipairs(feat) do local label = wb.getLabel(f) or f if feat_text == "" then feat_text = label else feat_text = feat_text .. ", " .. label end end end text = text .. "|-\n" text = text .. "| " .. (rep_text ~= "" and rep_text or "—") text = text .. " || " .. (feat_text ~= "" and feat_text or "—") if has_image then local image_cell = "—" if form_images[i] ~= nil then image_cell = "[[চিত্র:" .. form_images[i] .. "|50px]]" end text = text .. " || " .. image_cell end text = text .. "\n" end text = text .. "|}" return text end function p.all( frame ) local args = getArgs(frame) local lexeme_id = args[1] local current_lexeme = getEntity(lexeme_id) local current_language = current_lexeme:getLanguage() local senses = current_lexeme:getSenses() local add_heading = true forms = current_lexeme:getForms() if args[2] ~= nil then local val = mw.text.trim(tostring(args[2])) if val == "false" or val == "0" or val == "না" then add_heading = false end end local references_seen = {} local sections = {} local lang_name = wb.getLabel(current_language) if add_heading == true then local lang_heading = "== " .. lang_name .. " ==" table.insert(sections, lang_heading) end local lex_cat = current_lexeme:getLexicalCategory() lang_code = getLexemeLanguageCode(current_lexeme) local title = mw.title.getCurrentTitle().text local lang_category = getLanguageForCategories(current_language, title) local cat = i18n.lang_category(wb.getLabel(lex_cat), wb.getLabel(current_language)) local lex_cat_template if cat ~= nil then table.insert(sections, '===' .. wb.getLabel(lex_cat) .. cat .. frame:expandTemplate{ title = i18n['template_anchor'], args = { lexeme_id } } .. '===') table.insert(sections, frame:expandTemplate{ title= i18n['template_lexeme'], args = {lexeme_id} }) add_any_notes(sections, args, i18n['manual_category']) local etymology = getEtymology( current_lexeme, frame ) if etymology ~= '' and etymology ~= nil then table.insert(sections, heading_level(i18n['heading_etymology'], 4)) table.insert(sections, tostring(etymology)) end add_any_notes(sections, args, i18n['manual_etymology']) local pronunciation = getPronunciation( frame, current_lexeme, lang_name, lex_cat ) if pronunciation ~= '' then table.insert(sections, heading_level(i18n['heading_pronunciation'], 4)) table.insert(sections, tostring(pronunciation)) end add_any_notes(sections, args, i18n['manual_pronunciation']) local alternative_spellings = getAlternativeSpellings( current_lexeme ) if alternative_spellings ~= '' then table.insert(sections, heading_level(i18n['heading_alternative_spellings'], 4)) table.insert(sections, alternative_spellings) end if lang_code ~= nil and lang_code ~= 'ksy' and lang_code ~= 'rkt' then -- Skip for Kharia Thar, Rangpuri if lex_cat == 'Q34698' then -- বিশেষণ if lang_code == 'en' or lang_code == 'bn' then if #forms <= 1 then lex_cat_template = frame:expandTemplate{title= lang_code .. '-বিশেষণ'} end else lex_cat_template = safeExpand(frame, lang_code .. '-adj') if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ') end end elseif lex_cat == 'Q1084' then -- @TODO: Also check for plural forms local gender local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ if #stmts ~= 0 then if #stmts == 1 then local gender_qid = stmts[1].mainsnak.datavalue.value.id if gender_qid == 'Q499327' then gender = 'm' elseif gender_qid == 'Q1775415' then gender = 'f' elseif gender_qid == 'Q1775461' then gender = 'n' elseif gender_qid == 'Q1305037' then gender = 'c' end end else for i, stmt in pairs(stmts) do local qid = stmts[i].mainsnak.datavalue.value.id if qid == 'Q499327' then gender = gender .. 'm' elseif qid == 'Q1775415' then gender = gender .. 'f' end end end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. if current_language == 'Q13955' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = safeExpand(frame, {title='ar-noun', args={matched_lemma,gender}}) else lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}} end elseif current_language == 'Q29919' then lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}} elseif current_language == 'Q397' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = frame:expandTemplate{title='la-noun', args={matched_lemma,g=gender}} end elseif current_language == 'Q11059' then lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}} elseif current_language ~= 'Q1860' then -- These templates require the gender to be passed as the 1st argument. lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix'], {gender}) if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix_fallback'], {gender}) end end end end -- elseif lex_cat == 'Q147276' then -- lex_cat_template = safeExpand(frame, lang_code .. '-proper noun', {gender}) -- if not lex_cat_template then -- lex_cat_template = safeExpand(frame, lang_code .. '-নামবাচক বিশেষ্য', {gender}) -- end end if lex_cat_template ~= nil then table.insert(sections, lex_cat_template) else local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then table.insert(sections, heading_level(matched_lemma, 4)) else table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]') end end local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name)) table.insert(sections, tostring(meanings)) add_any_notes(sections, args, i18n['manual_meaning']) local instance_of = current_lexeme:getAllStatements('P31') -- সত্ত্বার ধরন if #instance_of ~= 0 then local instance_of_entity = instance_of[1].mainsnak.datavalue.value.id if instance_of_entity == 'Q40437546' or instance_of_entity == 'Q120831827' or instance_of_entity == 'Q120717979' or instance_of_entity == 'Q124476844' then -- @TODO: generalise this so all types of roots are shown table.insert(sections, i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)) elseif instance_of_entity == 'Q376431' then -- বর্ণের নাম table.insert(sections, i18n.tocatlink(lang_code .. ':রং')) end end local translations = getTranslations(frame, senses) if translations ~= nil then table.insert(sections, translations) end -- (!) বিশেষ ভাষার বিভক্তির সারণি যদি থাকে সেগুলো এখানে নতুন if বিবৃতি যোগ করা যায়। if next(forms) ~= nil then if current_language == 'Q9610' then -- বাংলা if lex_cat == 'Q24905' then local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getConjTable(frame, forms) table.insert(sections, conjTable) elseif lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z33243|' .. lexeme_id .. '|', frame)) elseif lex_cat == 'Q34698' then if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end --elseif current_language == 'Q13955' then -- আরবি -- if lex_cat == 'Q1084' then -- table.insert(sections, frame:expandTemplate{title='ar-decl-noun', args={lemma}}) -- end elseif current_language == 'Q188' then -- জার্মান if lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z28602|' .. lexeme_id .. '|', frame)) end else if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end end local reference_notes = get_any_notes(sections, args, i18n['manual_reference']) if #references_seen > 0 or #reference_notes > 0 then table.insert(sections, heading_level(i18n['heading_references'], 4)) table.insert(sections, frame:extensionTag('references')) add_specific_notes(sections, reference_notes) end local external_link_table = getExternalLinks ( current_lexeme ) if #external_link_table > 0 then local external_links = '* ' .. table.concat(external_link_table, '\n* ') table.insert(sections, heading_level(i18n['heading_external_links'], 4)) table.insert(sections, external_links) end add_any_notes(sections, args, i18n['manual_external_link']) if #references_seen == 0 and #reference_notes == 0 and #external_link_table == 0 and #get_any_notes(sections, args, i18n['manual_external_link']) == 0 then if i18n['category_rfref'][lang_category] ~= nil then table.insert(sections, i18n.tocatlink(i18n['category_rfref'][lang_category])) else table.insert(sections, i18n.tocatlink(i18n['category_rfref']['_'])) end end return table.concat(sections,"\n\n") end return p 74jxapwt3rbxiajdwuompm24f3l8j56 508936 508935 2026-05-17T12:19:37Z Redmin 6857 508936 Scribunto text/plain local p = {} local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n') local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format local getArgs = require('Module:Arguments').getArgs local wb = mw.wikibase local ustring = mw.ustring local html = mw.html local mw_lang = mw.language local entity_cache = {} local reference_cache = {} local forms local lang_code local function countWords(string) local count = 0 for word in ustring.gmatch(string, "%S+") do count = count + 1 end return count end local function normalizeLemmas(text) text = mw.ustring.gsub(text, "ٰ", "") text = mw.ustring.gsub(text, "ِ", "") text = mw.ustring.gsub(text, "[ً-ٟ]", "") text = mw.ustring.gsub(text, "أ", "ا") --text = mw.ustring.gsub(text, "إ", "ا") text = mw.ustring.gsub(text, "آ", "ا") return text end local function serializeTable(val, name, skipnewlines, depth) -- https://stackoverflow.com/a/6081639 skipnewlines = skipnewlines or false depth = depth or 0 local tmp = string.rep(" ", depth) if name then tmp = tmp .. name .. " = " end if type(val) == "table" then tmp = tmp .. "{" .. (not skipnewlines and "\n" or "") for k, v in pairs(val) do tmp = tmp .. serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "") end tmp = tmp .. string.rep(" ", depth) .. "}" elseif type(val) == "number" then tmp = tmp .. tostring(val) elseif type(val) == "string" then tmp = tmp .. string.format("%q", val) elseif type(val) == "boolean" then tmp = tmp .. (val and "true" or "false") else tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\"" end return tmp end -- Use this to safely expand templates when you are not sure that they exist. local function safeExpand(frame, title, args) local _, result = pcall(function() return frame:expandTemplate{ title = title, args = args } end) if result:find('does not exist') then -- expandTemplate{} doesn't seem to throw any error that can be handled with pcall() so string search is the only viable option. return nil end return result end local function getReference( id, reference ) local out_id = nil local url_value if reference_cache[id] == nil then local ref_text = references(reference, wb, mw_lang, i18n['content_lang_code'], i18n['wikipedia']) if reference.snaks ~= nil then if reference.snaks['P248'] ~= nil then for _, snak in pairs(reference.snaks['P248']) do if snak.datavalue and snak.datavalue.value.id == 'Q428' then -- কুরআন ref_text = ustring.gsub(ref_text, 'নামক অনুচ্ছেদ', 'নং আয়াত') break end end end if reference.snaks['P854'] ~= nil then local snak = reference.snaks['P854'][1] if snak.datavalue then url_value = snak.datavalue.value end end end if url_value ~= nil then ref_text = ref_text .. ', [' .. url_value .. ' সংযোগ]' end reference_cache[id] = ref_text else out_id = id end return {out_id, reference_cache[id]} end local function getEntity( id ) if entity_cache[id] == nil then entity_cache[id] = wb.getEntity(id) end return entity_cache[id] ~= false and entity_cache[id] or nil end local function getLexemeLanguageCode(current_lexeme) local lang_item_id = current_lexeme:getLanguage() if lang_item_id == nil then return nil end local lang_entity = getEntity(lang_item_id) if lang_entity == nil then return nil end for i, statement_property in ipairs({'P305','P424', 'P220'}) do -- আইইটিএফ ভাষা ট্যাগ, উইকিমিডিয়া ভাষা কোড, আইএসও ৬৩৯-৩ local statements = lang_entity:getBestStatements(statement_property) if statements[1] ~= nil then return statements[1].mainsnak.datavalue.value end end return nil end -- Return the first form of the lexeme which has exactly the given grammatical feature. local function formWithSingleGrammaticalFeature( item_id ) for i = 1, #forms do local grammaticalFeatures = forms[i]:getGrammaticalFeatures() if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then return forms[i] end end return nil end local function getArticleLinkTemplate(frame, stmt_value) local template = '' local sitelink = getEntity(stmt_value):getSitelink(i18n['wikipedia']) if sitelink ~= nil then template = frame:expandTemplate{ title=i18n['template_wikipedia'], args={sitelink} } end return template end local function getArticleLinks (frame, sense ) local article_links = '' for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয় article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end return article_links end -- @TODO: Generalise local function expandTemplateForProperty(frame, object, property, template) local lemmas = {} local n = 0 for _, stmt in pairs(object:getAllStatements(property)) do local lex = wb.lexeme.splitLexemeId(stmt.mainsnak.datavalue.value.id) lex = getEntity(lex) n = n + 1 lemmas[n] = lex:getLemma(lang_code) end if not lang_code or n == 0 then return '' end -- Build args: first lang_code, then lemmas local args = {lang_code} for i = 1, n do args[#args + 1] = lemmas[i] end return frame:expandTemplate{ title = template, args = args } end local function getExternalLinks( entity ) -- T418639 local external_links = {} if entity.claims == nil then return external_links end local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls for property_id, statements in pairs(entity.claims) do local formatter_url = formatter_urls[property_id] if formatter_url ~= nil then local property_source = wb.getBestStatements(property_id, 'P9073') local source_name if next(property_source) ~= nil then source_name = wb.getLabel(property_source[1].mainsnak.datavalue.value.id) or property_source[1].mainsnak.datavalue.value.id else source_name = wb.getLabel(property_id) or property_id end for i = 1, #statements do local stmt = statements[i] if stmt.mainsnak.datavalue then local formatted_link = ustring.gsub( ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value), ' ', '+' ) table.insert(external_links, '[' .. formatted_link .. ' ' .. source_name .. ']') end end end end return external_links end p.getExternalLinks = getExternalLinks -- রেখে দিন যাতে ডিবাগিং সম্ভব হয় local function termSpan( term ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( text ) return tostring( span ) end local function termLink( term, lang_qid ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( '[[' .. text .. '#' .. wb.getLabel(lang_qid) .. '|' .. text .. ']]' ) return tostring( span ) end local function getLemmata( current_lexeme ) local 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 local function getLinkedLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termLink(rep, current_lexeme:getLanguage()) else lemma_string = lemma_string .. '/' .. termLink(rep, current_lexeme:getLanguage()) end end return lemma_string end local function getExamples( current_lexeme, sense_id, references_seen ) local examples = html.create('dl') for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ if stmt.qualifiers ~= nil and stmt.qualifiers['P6072'] ~= nil and stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_strs = {} if stmt.qualifiers['P1810'] ~= nil then table.insert(example_form_strs, stmt.qualifiers['P1810'][1].datavalue.value) elseif stmt.qualifiers['P5830'] ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ for i, rep in pairs(example_form:getRepresentations()) do table.insert(example_form_strs, rep[1]) end end example_str = nil for i, example_form_str in pairs(example_form_strs) do new_example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") if new_example_text ~= example_text then example_str = termSpan({new_example_text, example_lang}) break end new_example_text = example_text end if example_str == nil then example_str = termSpan({example_text, example_lang}) end local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end end for i, stmt in pairs(wb.getAllStatements(sense_id, 'P5831')) do -- ব্যবহারের উদাহরণ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_str = nil if stmt.qualifers ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ if stmt.qualifiers['P1810'] ~= nil then example_form_str = stmt.qualifiers['P1810'][1].datavalue.value end end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentation(i18n['content_lang_code']) end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentations()[1][1] end if example_form_str ~= nil then example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") end example_str = termSpan({example_text, example_lang}) local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end return { tostring(examples) , references_seen } end -- This calls frame:preprocess() instead of :callParserFunction() because the latter does not work for Wikifunctions function calls yet (see https://www.wikifunctions.org/wiki/Wikifunctions:Embedded_function_calls). local function callWikifunctionsFunction(args, frame) return frame:preprocess('{{#function:' .. args .. '}}') end local function checkTitleCodePointInRange(title, start_point, end_point) return ustring.find( title, '[' ..ustring.char(start_point) .. '-' .. ustring.char(end_point) .. ']' ) end local function getLanguageForCategories( lang_id, current_page_title ) -- বিশেষ ভাষার জন্য if lang_id == 'Q11051' then -- হিন্দি/উর্দু if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- উর্দু lang_id = 'Q11051ur' elseif checkTitleCodePointInRange(current_page_title, 0x0900, 0x097f) ~= nil then -- হিন্দি lang_id = 'Q11051hi' end elseif lang_id == 'Q58635' then -- পাঞ্জাবি if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- শাহমুখী lang_id = 'Q58635pnb' elseif checkTitleCodePointInRange(current_page_title, 0x0a00, 0x0a7f) ~= nil then -- গুরুমুখী lang_id = 'Q58635pa' end elseif lang_id == 'Q56356571' then -- নয়া ফার্সি ভাষা if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- ফার্সি (ইরান/আফগানিস্তান) lang_id = 'Q56356571fa' elseif checkTitleCodePointInRange(current_page_title, 0x0400, 0x04ff) ~= nil then -- তাজিক lang_id = 'Q56356571tg' end end return lang_id end local function getOneStringForProperty(object, property) local val local stmts = object:getAllStatements(property) if #stmts ~= 0 then val = stmts[1].mainsnak.datavalue.value end return val end local function getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved if #senses == 0 then return nil end local all_translations = {} for _, sense in pairs(senses) do local translation_set = {} local gloss = sense:getGloss('bn') for _, stmt in pairs(sense:getAllStatements('P5972')) do local translation = stmt.mainsnak.datavalue.value.id local lexeme_id = wb.lexeme.splitLexemeId(translation) local language = wb.getLabel(getEntity(lexeme_id):getLanguage()) table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>') end if #translation_set > 0 then local block = frame:expandTemplate{ title = i18n['template_trans-top'], args = { gloss } } block = block .. table.concat(translation_set, '\n') .. frame:expandTemplate{ title = i18n['template_trans-bottom'] } table.insert(all_translations, block) end end if #all_translations == 0 then return nil end return '====' .. i18n['heading_translation'] .. '==== \n' .. table.concat(all_translations, '\n') end local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. i18n.tocatlink(i18n['category_rfdef']), references_seen} end local meanings = html.create( 'ol' ) for i, sense in pairs(senses) do local gloss_text_parts = {} local main_gloss_text = frame:expandTemplate{ title=i18n['template_anchor'], args={sense:getId()} } local specifiers = {} for k, property_id in ipairs({'P6084', 'P6191', 'P9488'}) do -- অবস্থান যেখানে শব্দার্থ ব্যবহৃত, যে রীতিতে শব্দার্থ ব্যবহৃত হয়, যে ক্ষেত্রে ব্যবহৃত for i, stmt in pairs(sense:getAllStatements(property_id)) do local stmt_value = stmt.mainsnak.datavalue.value.id local reference_text = '' local refs = stmt.references if refs ~= nil then for j, reference in pairs(refs) do table.insert(references_seen, reference.hash) got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. frame:extensionTag('ref', got_reference[2]) end local val = wb.getLabel(stmt_value) table.insert(specifiers, val .. reference_text) if property_id == 'P9488' then table.insert(specifiers, i18n.tocatlink(lang_code .. val)) end end end end if #specifiers > 0 then main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') " end local gloss = sense:getGloss( i18n['content_lang_code'] ) if gloss ~= nil then if countWords(gloss) == 1 then main_gloss_text = main_gloss_text .. "[[" .. gloss .. "#" .. i18n['content_lang_name'] .. "|" .. gloss .. "]]" else main_gloss_text = main_gloss_text .. gloss end if gloss:match('^প্রদত্ত%s*(%S-)%s*নাম$') then -- given names main_gloss_text = main_gloss_text .. i18n.tocatlink(language_name .. ' ' .. i18n['category_given_names']) end else local other_gloss_text = nil local other_gloss_lang = nil local item_label_gloss_parts = {} for k, stmt in pairs(sense:getAllStatements('P5137')) do -- যদি 'এই অর্থের জন্য আইটেম' মানের বাংলা লেবেল থাকে local stmt_value = stmt.mainsnak.datavalue.value.id local stmt_label = wb.getLabel(stmt_value) if stmt_label ~= nil then table.insert(item_label_gloss_parts, '[[:d:' .. stmt_value .. '|' .. stmt_label .. ']]') end end if #item_label_gloss_parts > 0 then other_gloss_text = table.concat(item_label_gloss_parts, '; ') end if other_gloss_text == nil then for i, fallback_lang in ipairs(mw_lang.getFallbacksFor( i18n['content_lang_code'] )) do if sense:getGloss( fallback_lang ) ~= nil then other_gloss_text, other_gloss_lang = sense:getGloss( fallback_lang ) end end if other_gloss_lang == nil then local glosses = sense:getGlosses() for j, gloss in pairs(glosses) do other_gloss_text = gloss[1] other_gloss_lang = gloss[2] break end end main_gloss_text = main_gloss_text .. other_gloss_text .. "<sup><em>" .. mw_lang.fetchLanguageName(other_gloss_lang, i18n['content_lang_code']) .. "</em></sup>" else main_gloss_text = main_gloss_text .. "''" .. other_gloss_text .. "''" end main_gloss_text = main_gloss_text .. i18n.tocatlink(i18n['category_rfdef_equivalent']) end local synonym = expandTemplateForProperty(frame, sense, 'P5973', i18n['template_synonym']) if synonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. synonym end local antonym = expandTemplateForProperty(frame, sense, 'P5974', i18n['template_antonym']) if antonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. antonym end local hypernym = expandTemplateForProperty(frame, sense, 'P6593', i18n['template_hypernym']) if hypernym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. hypernym end if lex_cat == 'Q1084' or lex_cat == 'Q147276' then -- noun or proper noun local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-noun']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym elseif lex_cat == 'Q34698' then local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-adj']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym end table.insert(gloss_text_parts, main_gloss_text .. createicon(i18n['content_lang_code'], sense:getId())) 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 local got_reference = getReference ( stmt.references[1].hash, stmt.references[1] ) gloss_quote = '"' .. gloss_quote .. '" ' .. got_reference[2] end table.insert(references_seen, stmt.references[1].hash) table.insert(gloss_text_parts, frame:extensionTag('ref', gloss_quote)) end for i, stmt in pairs(sense:getAllStatements('P1343')) do -- বর্ণিত উৎস -- TODO: do away with making fake reference objects local fake_reference = { ['snaks'] = {} } fake_reference.snaks['P248'] = { [1] = stmt.mainsnak } qualifiers_order = stmt['qualifiers-order'] if qualifiers_order ~= nil then for i, k in ipairs(qualifiers_order) do fake_reference.snaks[k] = stmt.qualifiers[k] end end fake_reference.hash = mw.hash.hashValue('sha3-512', serializeTable(fake_reference)) table.insert(references_seen, fake_reference.hash) local got_reference = getReference(fake_reference.hash, fake_reference) if got_reference[1] == nil then table.insert(gloss_text_parts, frame:extensionTag('ref', got_reference[2], {name = fake_reference.hash})) else table.insert(gloss_text_parts, frame:extensionTag{name = 'ref', content='', args = {name = got_reference[1]}}) end end local first_sense_image = '' local 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 table.insert(gloss_text_parts, '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]') end local idlinks = getExternalLinks(sense) if #idlinks > 0 then local idlinktext = '<small>(' for _, idlink in pairs(idlinks) do idlinktext = idlinktext .. idlink .. '\n' end idlinktext = idlinktext .. ')</small>' table.insert(gloss_text_parts, idlinktext) end local externallinks = getArticleLinks(frame, sense) if externallinks ~= '' then table.insert(gloss_text_parts, externallinks) end local new_notes = {} local sense_keys = { sense:getId(), string.sub(sense:getId(), string.find(sense:getId(), '-')+1) } for _, v in ipairs(sense_keys) do if args[v] ~= nil then table.insert(new_notes, args[v]) end end if #new_notes > 0 then for _, v in ipairs(new_notes) do if i == 1 then table.insert(gloss_text_parts, '<br/>' .. v) else table.insert(gloss_text_parts, v) end end end local examples, references_seen = unpack(getExamples( current_lexeme, sense:getId(), references_seen )) local gloss_text = table.concat(gloss_text_parts, '\n') meanings:tag('li'):wikitext(gloss_text):wikitext(examples) end return {meanings, references_seen} end local function getPronunciationBaseForm( lang_name, lex_cat) local base_form = nil -- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়। if lang_name == 'বাংলা' then if lex_cat == 'Q1084' then -- বিশেষ্য base_form = formWithSingleGrammaticalFeature( 'Q131105' ) -- কর্তৃকারক elseif lex_cat == 'Q24905' then -- ক্রিয়া base_form = formWithSingleGrammaticalFeature( 'Q1350145' ) -- ক্রিয়া বিশেষ্য end end if base_form == nil then for i, form in pairs(forms) do base_form = form break end end return base_form end local function getCombines( current_lexeme ) local combines = '' local index_mappings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P5238')) do if stmt.qualifiers ~= nil and stmt.qualifiers['P1545'] ~= nil then -- ক্রম local current_index = tonumber(stmt.qualifiers['P1545'][1].datavalue.value) index_mappings[current_index] = stmt end end if #index_mappings ~= 0 then for i, stmt in ipairs(index_mappings) do if stmt.mainsnak.datavalue ~= nil then local part_lexeme_id = stmt.mainsnak.datavalue.value.id local part_lexeme = getEntity(part_lexeme_id) local current_substring = getLinkedLemmata(part_lexeme) local part_etymology = getEtymology(part_lexeme) if part_etymology ~= '' and part_etymology ~= nil then current_substring = current_substring .. ' (← ' .. part_etymology .. ')' end if combines == '' then combines = current_substring else -- @TODO: This shoukd use the 'affix' template instead. combines = combines .. ' + ' .. current_substring end end end end return combines end function getRoots( current_lexeme ) local stmts = current_lexeme:getAllStatements('P5920') if #stmts == 0 then return '' end local root_lexeme = getEntity(stmts[1].mainsnak.datavalue.value.id) return '√' .. getLinkedLemmata(root_lexeme), root_lexeme:getLemma('ar') end function getEtymology( current_lexeme, frame ) -- TODO: see if any etymology chains are not possible to render local etymology = '' local current_combines = getCombines(current_lexeme) local current_roots, root_str = getRoots(current_lexeme) local stmts = current_lexeme:getAllStatements('P5191') if #stmts == 0 then if lang_code == 'ar' and frame ~= nil then return frame:expandTemplate{title='ar-rootbox', args={root_str}} elseif current_roots ~= '' and current_combines ~= '' then return current_roots .. '<br/>(' .. current_combines .. ')' elseif current_roots ~= '' then return current_roots else return current_combines end end for i, stmt in pairs(stmts) do local origin_lexeme_dv = stmt.mainsnak.datavalue -- If this is nil, the origin lexeme is not known. if origin_lexeme_dv ~= nil then local origin_lexeme = getEntity(origin_lexeme_dv.value.id) local origin_lexeme_lang = origin_lexeme:getLanguage() local origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. wb.getLabel(origin_lexeme_lang) .. ')' if stmt.qualifiers ~= nil and stmt.qualifiers['P5886'] ~= nil then local mode_of_derivation = stmt.qualifiers['P5886'][1].datavalue.value.id if mode_of_derivation == 'Q1345001' then origin_lexeme_string = ustring.gsub(i18n['etymology_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q845079' then origin_lexeme_string = ustring.gsub(i18n['etymology_learned_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q56611986' then origin_lexeme_string = ustring.gsub(i18n['etymology_inheritance'], '$1', origin_lexeme_string) end end local origin_origin = getEtymology(origin_lexeme) local new_etymology_string = '' if origin_origin ~= '' and origin_origin ~= nil then new_etymology_string = origin_lexeme_string .. ' ← ' .. origin_origin else new_etymology_string = origin_lexeme_string end end if etymology == '' then etymology = new_etymology_string elseif origin_lexeme_string ~= nil and etymology ~= nil then etymology = etymology .. ' ' .. origin_lexeme_string elseif origin_lexeme_string ~= nil and etymology == nil then etymology = origin_lexeme_string end end if current_roots ~= '' and etymology ~= nil then etymology = etymology .. ' ' .. current_roots elseif current_roots ~= '' and etymology == nil then etymology = current_roots end if current_combines ~= '' and etymology ~= nil then etymology = etymology .. '<br/>(' .. current_combines .. ')' end return etymology end local function getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pronunciations = {} local base_form = getPronunciationBaseForm(lang_name, lex_cat ) if base_form ~= nil then for i, stmt in pairs(base_form:getAllStatements('P443')) do -- উচ্চারণের অডিও local pronunciation_file = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in pairs(stmt.qualifiers[property_id]) do local stmt_value = qual.datavalue.value.id table.insert(specifiers, wb.getLabel(stmt_value)) end end end if #specifiers > 0 then specifier_text = table.concat(specifiers, "'', ''") end local audio_text if specifier_text ~= '' then audio_text = i18n['text_audio'] .. ' (' .. specifier_text .. ')' else audio_text = i18n['text_audio'] end table.insert(pronunciations, '* ' .. frame:expandTemplate{ title= i18n['template_audio'], args = {lang_name, pronunciation_file, audio_text} }) end local ipa_transcription = base_form:getAllStatements('P898') -- - আধ্বব প্রতিলিপিকরণ local iso15919_transcription = getOneStringForProperty(base_form, 'P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ local itrans = getOneStringForProperty(base_form, 'P8881') -- ITRANS local iast = getOneStringForProperty(base_form, 'P7581') -- আইএএসটি প্রতিলিপিকরণ local xsampa = getOneStringForProperty(base_form, 'P2859') -- @TODO: অডিও ও প্রতিলিপিকরণ দুটোই থাকলে সেই ক্ষেত্রে একটার ঠিক পরেই আরেকটা দেখানো উচিত if #ipa_transcription ~= 0 then for i, stmt in pairs(ipa_transcription) do local ipa_text = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in ipairs(stmt.qualifiers[property_id]) do table.insert(specifiers, wb.getLabel( qual.datavalue.value.id )) end end end if #specifiers > 0 then specifier_text = "(''" .. table.concat(specifiers, "'', ''") .. "'') " end table.insert(pronunciations, '* ' .. specifier_text .. frame:expandTemplate{ title= i18n['template_ipa'], args = {lang_name, ipa_text} } .. '\n* ' .. i18n['text_syllable_count'] .. callWikifunctionsFunction('Z30837|' .. ipa_text, frame)) end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. elseif lang_name == 'বাংলা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='bn-IPA', }) elseif lang_name == 'আরবি' then local lemma = current_lexeme:getLemma('ar') table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ar-IPA', args={lemma} }) elseif lang_name == 'ফালা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fax-pron', }) elseif lang_code == 'fi' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fi-IPA', }) elseif lang_code == 'ko' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ko-IPA', }) end if iso15919_transcription ~= nil then table.insert(pronunciations, '* ' .. i18n['text_iso15919'] .. iso15919_transcription) end if itrans ~= nil then table.insert(pronunciations, '* ' .. i18n['text_itrans'] .. itrans) end if iast ~= nil then table.insert(pronunciations, '* ' .. i18n['text_iast'] .. iast) end if xsampa ~= nil then table.insert(pronunciations, '* ' .. i18n['text_xsampa'] .. xsampa) end end -- {{আধ্বব|en|/ˈɪntəvjuː/}} return table.concat(pronunciations, '\n') end local function getAlternativeSpellings( current_lexeme ) local alt_spellings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P11577')) do -- বিকল্প বানান if stmt.mainsnak.datavalue ~= nil then table.insert(alt_spellings, '* ' .. getLinkedLemmata(getEntity(stmt.mainsnak.datavalue.value.id))) end end return table.concat(alt_spellings, '\n') end local function heading_level(text, level) local heading_delimiter = string.rep('=', level) return heading_delimiter .. ' ' .. text .. ' ' .. heading_delimiter end function get_any_notes(sections, args, keys) local notes = {} for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(notes, args[v]) end end return notes end function add_specific_notes(sections, notes) for i, v in ipairs(notes) do table.insert(sections, v) end end local function add_any_notes(sections, args, keys) for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(sections, args[v]) end end end local function getMatchingLemmaForPageTitle(lexeme, title) local lemmas = lexeme:getLemmas() local matched_lemma for _, lemma_entry in ipairs(lemmas) do local lemma = lemma_entry[1] local clean_lemma = normalizeLemmas(lemma) if clean_lemma == title then matched_lemma = lemma break end end return matched_lemma end local function buildLanguageAgnosticInflectionTable() local has_image = false local form_images = {} for i, form in ipairs(forms) do local form_image = form:getAllStatements('P7407') if next(form_image) ~= nil then form_images[i] = form_image[1].mainsnak.datavalue.value has_image = true end end local table_class = "wikitable mw-collapsible sortable" if not has_image then table_class = table_class .. " mw-collapsed" end local text = "{| class='" .. table_class .. "' style='border:solid 1px rgb(80%,80%,100%); text-align:center;'\n" text = text .. "|+ " .. i18n['heading_inflection_table'] .. "\n" text = text .. "|- \n" text = text .. "! " .. i18n['heading_form'] .. " !! " .. i18n['heading_grammatical_features'] if has_image then text = text .. " !! " .. (i18n['heading_image']) end text = text .. " \n" for i, form in ipairs(forms) do local rep = form:getRepresentations() local feat = form:getGrammaticalFeatures() local rep_text = "" for j, r in pairs(rep) do if rep_text == "" then rep_text = r[1] else rep_text = rep_text .. " / " .. r[1] end end local feat_text = "" if feat ~= nil then for j, f in ipairs(feat) do local label = wb.getLabel(f) or f if feat_text == "" then feat_text = label else feat_text = feat_text .. ", " .. label end end end text = text .. "|-\n" text = text .. "| " .. (rep_text ~= "" and rep_text or "—") text = text .. " || " .. (feat_text ~= "" and feat_text or "—") if has_image then local image_cell = "—" if form_images[i] ~= nil then image_cell = "[[চিত্র:" .. form_images[i] .. "|50px]]" end text = text .. " || " .. image_cell end text = text .. "\n" end text = text .. "|}" return text end function p.all( frame ) local args = getArgs(frame) local lexeme_id = args[1] local current_lexeme = getEntity(lexeme_id) local current_language = current_lexeme:getLanguage() local senses = current_lexeme:getSenses() local add_heading = true forms = current_lexeme:getForms() if args[2] ~= nil then local val = mw.text.trim(tostring(args[2])) if val == "false" or val == "0" or val == "না" then add_heading = false end end local references_seen = {} local sections = {} local lang_name = wb.getLabel(current_language) if add_heading == true then local lang_heading = "== " .. lang_name .. " ==" table.insert(sections, lang_heading) end local lex_cat = current_lexeme:getLexicalCategory() lang_code = getLexemeLanguageCode(current_lexeme) local title = mw.title.getCurrentTitle().text local lang_category = getLanguageForCategories(current_language, title) local cat = i18n.lang_category(wb.getLabel(lex_cat), wb.getLabel(current_language)) local lex_cat_template if cat ~= nil then table.insert(sections, '===' .. wb.getLabel(lex_cat) .. cat .. frame:expandTemplate{ title = i18n['template_anchor'], args = { lexeme_id } } .. '===') table.insert(sections, frame:expandTemplate{ title= i18n['template_lexeme'], args = {lexeme_id} }) add_any_notes(sections, args, i18n['manual_category']) local etymology = getEtymology( current_lexeme, frame ) if etymology ~= '' and etymology ~= nil then table.insert(sections, heading_level(i18n['heading_etymology'], 4)) table.insert(sections, tostring(etymology)) end add_any_notes(sections, args, i18n['manual_etymology']) local pronunciation = getPronunciation( frame, current_lexeme, lang_name, lex_cat ) if pronunciation ~= '' then table.insert(sections, heading_level(i18n['heading_pronunciation'], 4)) table.insert(sections, tostring(pronunciation)) end add_any_notes(sections, args, i18n['manual_pronunciation']) local alternative_spellings = getAlternativeSpellings( current_lexeme ) if alternative_spellings ~= '' then table.insert(sections, heading_level(i18n['heading_alternative_spellings'], 4)) table.insert(sections, alternative_spellings) end if lang_code ~= nil and lang_code ~= 'ksy' and lang_code ~= 'rkt' then -- Skip for Kharia Thar, Rangpuri if lex_cat == 'Q34698' then -- বিশেষণ if lang_code == 'en' or lang_code == 'bn' then if #forms <= 1 then lex_cat_template = frame:expandTemplate{title= lang_code .. '-বিশেষণ'} end else lex_cat_template = safeExpand(frame, lang_code .. '-adj') if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ') end end elseif lex_cat == 'Q1084' then -- @TODO: Also check for plural forms local gender local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ if #stmts ~= 0 then if #stmts == 1 then local gender_qid = stmts[1].mainsnak.datavalue.value.id if gender_qid == 'Q499327' then gender = 'm' elseif gender_qid == 'Q1775415' then gender = 'f' elseif gender_qid == 'Q1775461' then gender = 'n' elseif gender_qid == 'Q1305037' then gender = 'c' end end else for i, stmt in pairs(stmts) do local qid = stmts[i].mainsnak.datavalue.value.id if qid == 'Q499327' then gender = gender .. 'm' elseif qid == 'Q1775415' then gender = gender .. 'f' end end end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. if current_language == 'Q13955' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = safeExpand(frame, {title='ar-noun', args={matched_lemma,gender}}) else lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}} end elseif current_language == 'Q29919' then lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}} elseif current_language == 'Q397' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = frame:expandTemplate{title='la-noun', args={matched_lemma,g=gender}} end elseif current_language == 'Q11059' then lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}} elseif current_language ~= 'Q1860' then -- These templates require the gender to be passed as the 1st argument. lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix'], {gender}) if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix_fallback'], {gender}) end end end end -- elseif lex_cat == 'Q147276' then -- lex_cat_template = safeExpand(frame, lang_code .. '-proper noun', {gender}) -- if not lex_cat_template then -- lex_cat_template = safeExpand(frame, lang_code .. '-নামবাচক বিশেষ্য', {gender}) -- end end if lex_cat_template ~= nil then table.insert(sections, lex_cat_template) else local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then table.insert(sections, heading_level(matched_lemma, 4)) else table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]') end end local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name)) table.insert(sections, tostring(meanings)) add_any_notes(sections, args, i18n['manual_meaning']) local instance_of = current_lexeme:getAllStatements('P31') -- সত্ত্বার ধরন if #instance_of ~= 0 then local instance_of_entity = instance_of[1].mainsnak.datavalue.value.id if instance_of_entity == 'Q40437546' or instance_of_entity == 'Q120831827' or instance_of_entity == 'Q120717979' or instance_of_entity == 'Q124476844' then -- @TODO: generalise this so all types of roots are shown table.insert(sections, i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)) elseif instance_of_entity == 'Q376431' then -- বর্ণের নাম table.insert(sections, i18n.tocatlink(lang_code .. ':রং')) end end local translations = getTranslations(frame, senses) if translations ~= nil then table.insert(sections, translations) end -- (!) বিশেষ ভাষার বিভক্তির সারণি যদি থাকে সেগুলো এখানে নতুন if বিবৃতি যোগ করা যায়। if next(forms) ~= nil then if current_language == 'Q9610' then -- বাংলা if lex_cat == 'Q24905' then local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getConjTable(frame, forms) table.insert(sections, conjTable) elseif lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z33243|' .. lexeme_id .. '|', frame)) elseif lex_cat == 'Q34698' then if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end --elseif current_language == 'Q13955' then -- আরবি -- if lex_cat == 'Q1084' then -- table.insert(sections, frame:expandTemplate{title='ar-decl-noun', args={lemma}}) -- end elseif current_language == 'Q188' then -- জার্মান if lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z28602|' .. lexeme_id .. '|', frame)) end else if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end end local reference_notes = get_any_notes(sections, args, i18n['manual_reference']) if #references_seen > 0 or #reference_notes > 0 then table.insert(sections, heading_level(i18n['heading_references'], 4)) table.insert(sections, frame:extensionTag('references')) add_specific_notes(sections, reference_notes) end local external_link_table = getExternalLinks ( current_lexeme ) if #external_link_table > 0 then local external_links = '* ' .. table.concat(external_link_table, '\n* ') table.insert(sections, heading_level(i18n['heading_external_links'], 4)) table.insert(sections, external_links) end add_any_notes(sections, args, i18n['manual_external_link']) if #references_seen == 0 and #reference_notes == 0 and #external_link_table == 0 and #get_any_notes(sections, args, i18n['manual_external_link']) == 0 then if i18n['category_rfref'][lang_category] ~= nil then table.insert(sections, i18n.tocatlink(i18n['category_rfref'][lang_category])) else table.insert(sections, i18n.tocatlink(i18n['category_rfref']['_'])) end end return table.concat(sections,"\n\n") end return p al88ot9nbb9t7v4jhmx61dehfzz3hp9 508939 508936 2026-05-17T13:34:47Z Redmin 6857 508939 Scribunto text/plain local p = {} local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n') local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format local getArgs = require('Module:Arguments').getArgs local wb = mw.wikibase local ustring = mw.ustring local html = mw.html local mw_lang = mw.language local entity_cache = {} local reference_cache = {} local forms local lang_code local function countWords(string) local count = 0 for word in ustring.gmatch(string, "%S+") do count = count + 1 end return count end local function normalizeLemmas(text) text = mw.ustring.gsub(text, "ٰ", "") text = mw.ustring.gsub(text, "ِ", "") text = mw.ustring.gsub(text, "[ً-ٟ]", "") text = mw.ustring.gsub(text, "أ", "ا") --text = mw.ustring.gsub(text, "إ", "ا") text = mw.ustring.gsub(text, "آ", "ا") return text end local function serializeTable(val, name, skipnewlines, depth) -- https://stackoverflow.com/a/6081639 skipnewlines = skipnewlines or false depth = depth or 0 local tmp = string.rep(" ", depth) if name then tmp = tmp .. name .. " = " end if type(val) == "table" then tmp = tmp .. "{" .. (not skipnewlines and "\n" or "") for k, v in pairs(val) do tmp = tmp .. serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "") end tmp = tmp .. string.rep(" ", depth) .. "}" elseif type(val) == "number" then tmp = tmp .. tostring(val) elseif type(val) == "string" then tmp = tmp .. string.format("%q", val) elseif type(val) == "boolean" then tmp = tmp .. (val and "true" or "false") else tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\"" end return tmp end -- Use this to safely expand templates when you are not sure that they exist. local function safeExpand(frame, title, args) local _, result = pcall(function() return frame:expandTemplate{ title = title, args = args } end) if result:find('does not exist') then -- expandTemplate{} doesn't seem to throw any error that can be handled with pcall() so string search is the only viable option. return nil end return result end local function getReference( id, reference ) local out_id = nil local url_value if reference_cache[id] == nil then local ref_text = references(reference, wb, mw_lang, i18n['content_lang_code'], i18n['wikipedia']) if reference.snaks ~= nil then if reference.snaks['P248'] ~= nil then for _, snak in pairs(reference.snaks['P248']) do if snak.datavalue and snak.datavalue.value.id == 'Q428' then -- কুরআন ref_text = ustring.gsub(ref_text, 'নামক অনুচ্ছেদ', 'নং আয়াত') break end end end if reference.snaks['P854'] ~= nil then local snak = reference.snaks['P854'][1] if snak.datavalue then url_value = snak.datavalue.value end end end if url_value ~= nil then ref_text = ref_text .. ', [' .. url_value .. ' সংযোগ]' end reference_cache[id] = ref_text else out_id = id end return {out_id, reference_cache[id]} end local function getEntity( id ) if entity_cache[id] == nil then entity_cache[id] = wb.getEntity(id) end return entity_cache[id] ~= false and entity_cache[id] or nil end local function getLexemeLanguageCode(current_lexeme) local lang_item_id = current_lexeme:getLanguage() if lang_item_id == nil then return nil end local lang_entity = getEntity(lang_item_id) if lang_entity == nil then return nil end for i, statement_property in ipairs({'P305','P424', 'P220'}) do -- আইইটিএফ ভাষা ট্যাগ, উইকিমিডিয়া ভাষা কোড, আইএসও ৬৩৯-৩ local statements = lang_entity:getBestStatements(statement_property) if statements[1] ~= nil then return statements[1].mainsnak.datavalue.value end end return nil end -- Return the first form of the lexeme which has exactly the given grammatical feature. local function formWithSingleGrammaticalFeature( item_id ) for i = 1, #forms do local grammaticalFeatures = forms[i]:getGrammaticalFeatures() if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then return forms[i] end end return nil end local function getArticleLinkTemplate(frame, stmt_value) local template = '' local sitelink = getEntity(stmt_value):getSitelink(i18n['wikipedia']) if sitelink ~= nil then template = frame:expandTemplate{ title=i18n['template_wikipedia'], args={sitelink} } end return template end local function getArticleLinks (frame, sense ) local article_links = '' for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয় article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end return article_links end -- @TODO: Generalise local function expandTemplateForProperty(frame, object, property, template) local lemmas = {} local n = 0 for _, stmt in pairs(object:getAllStatements(property)) do local lex = wb.lexeme.splitLexemeId(stmt.mainsnak.datavalue.value.id) lex = getEntity(lex) n = n + 1 lemmas[n] = lex:getLemma(lang_code) end if not lang_code or n == 0 then return '' end -- Build args: first lang_code, then lemmas local args = {lang_code} for i = 1, n do args[#args + 1] = lemmas[i] end return frame:expandTemplate{ title = template, args = args } end local function getExternalLinks( entity ) -- T418639 local external_links = {} if entity.claims == nil then return external_links end local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls for property_id, statements in pairs(entity.claims) do local formatter_url = formatter_urls[property_id] if formatter_url ~= nil then local property_source = wb.getBestStatements(property_id, 'P9073') local source_name if next(property_source) ~= nil then source_name = wb.getLabel(property_source[1].mainsnak.datavalue.value.id) or property_source[1].mainsnak.datavalue.value.id else source_name = wb.getLabel(property_id) or property_id end for i = 1, #statements do local stmt = statements[i] if stmt.mainsnak.datavalue then local formatted_link = ustring.gsub( ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value), ' ', '+' ) table.insert(external_links, '[' .. formatted_link .. ' ' .. source_name .. ']') end end end end return external_links end p.getExternalLinks = getExternalLinks -- রেখে দিন যাতে ডিবাগিং সম্ভব হয় local function termSpan( term ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( text ) return tostring( span ) end local function termLink( term, lang_qid ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( '[[' .. text .. '#' .. wb.getLabel(lang_qid) .. '|' .. text .. ']]' ) return tostring( span ) end local function getLemmata( current_lexeme ) local 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 local function getLinkedLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termLink(rep, current_lexeme:getLanguage()) else lemma_string = lemma_string .. '/' .. termLink(rep, current_lexeme:getLanguage()) end end return lemma_string end local function getExamples( current_lexeme, sense_id, references_seen ) local examples = html.create('dl') for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ if stmt.qualifiers ~= nil and stmt.qualifiers['P6072'] ~= nil and stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_strs = {} if stmt.qualifiers['P1810'] ~= nil then table.insert(example_form_strs, stmt.qualifiers['P1810'][1].datavalue.value) elseif stmt.qualifiers['P5830'] ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ for i, rep in pairs(example_form:getRepresentations()) do table.insert(example_form_strs, rep[1]) end end example_str = nil for i, example_form_str in pairs(example_form_strs) do new_example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") if new_example_text ~= example_text then example_str = termSpan({new_example_text, example_lang}) break end new_example_text = example_text end if example_str == nil then example_str = termSpan({example_text, example_lang}) end local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end end for i, stmt in pairs(wb.getAllStatements(sense_id, 'P5831')) do -- ব্যবহারের উদাহরণ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_str = nil if stmt.qualifers ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ if stmt.qualifiers['P1810'] ~= nil then example_form_str = stmt.qualifiers['P1810'][1].datavalue.value end end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentation(i18n['content_lang_code']) end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentations()[1][1] end if example_form_str ~= nil then example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") end example_str = termSpan({example_text, example_lang}) local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end return { tostring(examples) , references_seen } end -- This calls frame:preprocess() instead of :callParserFunction() because the latter does not work for Wikifunctions function calls yet (see https://www.wikifunctions.org/wiki/Wikifunctions:Embedded_function_calls). local function callWikifunctionsFunction(args, frame) return frame:preprocess('{{#function:' .. args .. '}}') end local function checkTitleCodePointInRange(title, start_point, end_point) return ustring.find( title, '[' ..ustring.char(start_point) .. '-' .. ustring.char(end_point) .. ']' ) end local function getLanguageForCategories( lang_id, current_page_title ) -- বিশেষ ভাষার জন্য if lang_id == 'Q11051' then -- হিন্দি/উর্দু if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- উর্দু lang_id = 'Q11051ur' elseif checkTitleCodePointInRange(current_page_title, 0x0900, 0x097f) ~= nil then -- হিন্দি lang_id = 'Q11051hi' end elseif lang_id == 'Q58635' then -- পাঞ্জাবি if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- শাহমুখী lang_id = 'Q58635pnb' elseif checkTitleCodePointInRange(current_page_title, 0x0a00, 0x0a7f) ~= nil then -- গুরুমুখী lang_id = 'Q58635pa' end elseif lang_id == 'Q56356571' then -- নয়া ফার্সি ভাষা if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- ফার্সি (ইরান/আফগানিস্তান) lang_id = 'Q56356571fa' elseif checkTitleCodePointInRange(current_page_title, 0x0400, 0x04ff) ~= nil then -- তাজিক lang_id = 'Q56356571tg' end end return lang_id end local function getOneStringForProperty(object, property) local val local stmts = object:getAllStatements(property) if #stmts ~= 0 then val = stmts[1].mainsnak.datavalue.value end return val end local function getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved if #senses == 0 then return nil end local all_translations = {} for _, sense in pairs(senses) do local translation_set = {} local gloss = sense:getGloss('bn') for _, stmt in pairs(sense:getAllStatements('P5972')) do local translation = stmt.mainsnak.datavalue.value.id local lexeme_id = wb.lexeme.splitLexemeId(translation) local language = wb.getLabel(getEntity(lexeme_id):getLanguage()) table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>') end if #translation_set > 0 then local block = frame:expandTemplate{ title = i18n['template_trans-top'], args = { gloss } } block = block .. table.concat(translation_set, '\n') .. frame:expandTemplate{ title = i18n['template_trans-bottom'] } table.insert(all_translations, block) end end if #all_translations == 0 then return nil end return '====' .. i18n['heading_translation'] .. '==== \n' .. table.concat(all_translations, '\n') end local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. i18n.tocatlink(i18n['category_rfdef']), references_seen} end local meanings = html.create( 'ol' ) for i, sense in pairs(senses) do local gloss_text_parts = {} local main_gloss_text = frame:expandTemplate{ title=i18n['template_anchor'], args={sense:getId()} } local specifiers = {} for k, property_id in ipairs({'P6084', 'P6191', 'P9488'}) do -- অবস্থান যেখানে শব্দার্থ ব্যবহৃত, যে রীতিতে শব্দার্থ ব্যবহৃত হয়, যে ক্ষেত্রে ব্যবহৃত for i, stmt in pairs(sense:getAllStatements(property_id)) do local stmt_value = stmt.mainsnak.datavalue.value.id local reference_text = '' local refs = stmt.references if refs ~= nil then for j, reference in pairs(refs) do table.insert(references_seen, reference.hash) got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. frame:extensionTag('ref', got_reference[2]) end local val = wb.getLabel(stmt_value) table.insert(specifiers, val .. reference_text) if property_id == 'P9488' then table.insert(specifiers, i18n.tocatlink(lang_code .. val)) end end end end if #specifiers > 0 then main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') " end local gloss = sense:getGloss( i18n['content_lang_code'] ) if gloss ~= nil then if countWords(gloss) == 1 then main_gloss_text = main_gloss_text .. "[[" .. gloss .. "#" .. i18n['content_lang_name'] .. "|" .. gloss .. "]]" else main_gloss_text = main_gloss_text .. gloss end if gloss:match('^প্রদত্ত%s*(%S-)%s*নাম$') then -- given names main_gloss_text = main_gloss_text .. i18n.tocatlink(language_name .. ' ' .. i18n['category_given_names']) end else local other_gloss_text = nil local other_gloss_lang = nil local item_label_gloss_parts = {} for k, stmt in pairs(sense:getAllStatements('P5137')) do -- যদি 'এই অর্থের জন্য আইটেম' মানের বাংলা লেবেল থাকে local stmt_value = stmt.mainsnak.datavalue.value.id local stmt_label = wb.getLabel(stmt_value) if stmt_label ~= nil then table.insert(item_label_gloss_parts, '[[:d:' .. stmt_value .. '|' .. stmt_label .. ']]') end end if #item_label_gloss_parts > 0 then other_gloss_text = table.concat(item_label_gloss_parts, '; ') end if other_gloss_text == nil then for i, fallback_lang in ipairs(mw_lang.getFallbacksFor( i18n['content_lang_code'] )) do if sense:getGloss( fallback_lang ) ~= nil then other_gloss_text, other_gloss_lang = sense:getGloss( fallback_lang ) end end if other_gloss_lang == nil then local glosses = sense:getGlosses() for j, gloss in pairs(glosses) do other_gloss_text = gloss[1] other_gloss_lang = gloss[2] break end end main_gloss_text = main_gloss_text .. other_gloss_text .. "<sup><em>" .. mw_lang.fetchLanguageName(other_gloss_lang, i18n['content_lang_code']) .. "</em></sup>" else main_gloss_text = main_gloss_text .. "''" .. other_gloss_text .. "''" end main_gloss_text = main_gloss_text .. i18n.tocatlink(i18n['category_rfdef_equivalent']) end local synonym = expandTemplateForProperty(frame, sense, 'P5973', i18n['template_synonym']) if synonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. synonym end local antonym = expandTemplateForProperty(frame, sense, 'P5974', i18n['template_antonym']) if antonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. antonym end local hypernym = expandTemplateForProperty(frame, sense, 'P6593', i18n['template_hypernym']) if hypernym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. hypernym end if lex_cat == 'Q1084' or lex_cat == 'Q147276' then -- noun or proper noun local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-noun']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym elseif lex_cat == 'Q34698' then local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-adj']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym end table.insert(gloss_text_parts, main_gloss_text .. createicon(i18n['content_lang_code'], sense:getId())) 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 local got_reference = getReference ( stmt.references[1].hash, stmt.references[1] ) gloss_quote = '"' .. gloss_quote .. '" ' .. got_reference[2] end table.insert(references_seen, stmt.references[1].hash) table.insert(gloss_text_parts, frame:extensionTag('ref', gloss_quote)) end for i, stmt in pairs(sense:getAllStatements('P1343')) do -- বর্ণিত উৎস -- TODO: do away with making fake reference objects local fake_reference = { ['snaks'] = {} } fake_reference.snaks['P248'] = { [1] = stmt.mainsnak } qualifiers_order = stmt['qualifiers-order'] if qualifiers_order ~= nil then for i, k in ipairs(qualifiers_order) do fake_reference.snaks[k] = stmt.qualifiers[k] end end fake_reference.hash = mw.hash.hashValue('sha3-512', serializeTable(fake_reference)) table.insert(references_seen, fake_reference.hash) local got_reference = getReference(fake_reference.hash, fake_reference) if got_reference[1] == nil then table.insert(gloss_text_parts, frame:extensionTag('ref', got_reference[2], {name = fake_reference.hash})) else table.insert(gloss_text_parts, frame:extensionTag{name = 'ref', content='', args = {name = got_reference[1]}}) end end local first_sense_image = '' local 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 table.insert(gloss_text_parts, '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]') end local idlinks = getExternalLinks(sense) if #idlinks > 0 then local idlinktext = '<small>(' for _, idlink in pairs(idlinks) do idlinktext = idlinktext .. idlink .. '\n' end idlinktext = idlinktext .. ')</small>' table.insert(gloss_text_parts, idlinktext) end local externallinks = getArticleLinks(frame, sense) if externallinks ~= '' then table.insert(gloss_text_parts, externallinks) end local new_notes = {} local sense_keys = { sense:getId(), string.sub(sense:getId(), string.find(sense:getId(), '-')+1) } for _, v in ipairs(sense_keys) do if args[v] ~= nil then table.insert(new_notes, args[v]) end end if #new_notes > 0 then for _, v in ipairs(new_notes) do if i == 1 then table.insert(gloss_text_parts, '<br/>' .. v) else table.insert(gloss_text_parts, v) end end end local examples, references_seen = unpack(getExamples( current_lexeme, sense:getId(), references_seen )) local gloss_text = table.concat(gloss_text_parts, '\n') meanings:tag('li'):wikitext(gloss_text):wikitext(examples) end return {meanings, references_seen} end local function getPronunciationBaseForm( lang_name, lex_cat) local base_form = nil -- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়। if lang_name == 'বাংলা' then if lex_cat == 'Q1084' then -- বিশেষ্য base_form = formWithSingleGrammaticalFeature( 'Q131105' ) -- কর্তৃকারক elseif lex_cat == 'Q24905' then -- ক্রিয়া base_form = formWithSingleGrammaticalFeature( 'Q1350145' ) -- ক্রিয়া বিশেষ্য end end if base_form == nil then for i, form in pairs(forms) do base_form = form break end end return base_form end local function getCombines( current_lexeme ) local combines = '' local index_mappings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P5238')) do if stmt.qualifiers ~= nil and stmt.qualifiers['P1545'] ~= nil then -- ক্রম local current_index = tonumber(stmt.qualifiers['P1545'][1].datavalue.value) index_mappings[current_index] = stmt end end if #index_mappings ~= 0 then for i, stmt in ipairs(index_mappings) do if stmt.mainsnak.datavalue ~= nil then local part_lexeme_id = stmt.mainsnak.datavalue.value.id local part_lexeme = getEntity(part_lexeme_id) local current_substring = getLinkedLemmata(part_lexeme) local part_etymology = getEtymology(part_lexeme) if part_etymology ~= '' and part_etymology ~= nil then current_substring = current_substring .. ' (← ' .. part_etymology .. ')' end if combines == '' then combines = current_substring else -- @TODO: This shoukd use the 'affix' template instead. combines = combines .. ' + ' .. current_substring end end end end return combines end function getRoots( current_lexeme ) local stmts = current_lexeme:getAllStatements('P5920') if #stmts == 0 then return '' end local root_lexeme = getEntity(stmts[1].mainsnak.datavalue.value.id) return '√' .. getLinkedLemmata(root_lexeme), root_lexeme:getLemma('ar') end function getEtymology( current_lexeme, frame ) -- TODO: see if any etymology chains are not possible to render local etymology = '' local current_combines = getCombines(current_lexeme) local current_roots, root_str = getRoots(current_lexeme) local stmts = current_lexeme:getAllStatements('P5191') if #stmts == 0 then if lang_code == 'ar' and frame ~= nil then return frame:expandTemplate{title='ar-rootbox', args={root_str}} elseif current_roots ~= '' and current_combines ~= '' then return current_roots .. '<br/>(' .. current_combines .. ')' elseif current_roots ~= '' then return current_roots else return current_combines end end for i, stmt in pairs(stmts) do local origin_lexeme_dv = stmt.mainsnak.datavalue -- If this is nil, the origin lexeme is not known. if origin_lexeme_dv ~= nil then local origin_lexeme = getEntity(origin_lexeme_dv.value.id) local origin_lexeme_lang = origin_lexeme:getLanguage() local origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. wb.getLabel(origin_lexeme_lang) .. ')' if stmt.qualifiers ~= nil and stmt.qualifiers['P5886'] ~= nil then local mode_of_derivation = stmt.qualifiers['P5886'][1].datavalue.value.id if mode_of_derivation == 'Q1345001' then origin_lexeme_string = ustring.gsub(i18n['etymology_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q845079' then origin_lexeme_string = ustring.gsub(i18n['etymology_learned_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q56611986' then origin_lexeme_string = ustring.gsub(i18n['etymology_inheritance'], '$1', origin_lexeme_string) end end local origin_origin = getEtymology(origin_lexeme) local new_etymology_string = '' if origin_origin ~= '' and origin_origin ~= nil then new_etymology_string = origin_lexeme_string .. ' ← ' .. origin_origin else new_etymology_string = origin_lexeme_string end end if etymology == '' then etymology = new_etymology_string elseif origin_lexeme_string ~= nil and etymology ~= nil then etymology = etymology .. ' ' .. origin_lexeme_string elseif origin_lexeme_string ~= nil and etymology == nil then etymology = origin_lexeme_string end end if current_roots ~= '' and etymology ~= nil then etymology = etymology .. ' ' .. current_roots elseif current_roots ~= '' and etymology == nil then etymology = current_roots end if current_combines ~= '' and etymology ~= nil then etymology = etymology .. '<br/>(' .. current_combines .. ')' end return etymology end local function pronunciationBlock(block, value) return '* ' .. i18n['text_' .. block] .. ' ' .. value end local function getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pronunciations = {} local base_form = getPronunciationBaseForm(lang_name, lex_cat ) if base_form ~= nil then for i, stmt in pairs(base_form:getAllStatements('P443')) do -- উচ্চারণের অডিও local pronunciation_file = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in pairs(stmt.qualifiers[property_id]) do local stmt_value = qual.datavalue.value.id table.insert(specifiers, wb.getLabel(stmt_value)) end end end if #specifiers > 0 then specifier_text = table.concat(specifiers, "'', ''") end local audio_text if specifier_text ~= '' then audio_text = i18n['text_audio'] .. ' (' .. specifier_text .. ')' else audio_text = i18n['text_audio'] end table.insert(pronunciations, '* ' .. frame:expandTemplate{ title= i18n['template_audio'], args = {lang_name, pronunciation_file, audio_text} }) end local ipa_transcription = base_form:getAllStatements('P898') -- - আধ্বব প্রতিলিপিকরণ local iso15919_transcription = getOneStringForProperty(base_form, 'P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ local itrans = getOneStringForProperty(base_form, 'P8881') -- ITRANS local iast = getOneStringForProperty(base_form, 'P7581') -- আইএএসটি প্রতিলিপিকরণ local xsampa = getOneStringForProperty(base_form, 'P2859') -- @TODO: অডিও ও প্রতিলিপিকরণ দুটোই থাকলে সেই ক্ষেত্রে একটার ঠিক পরেই আরেকটা দেখানো উচিত if #ipa_transcription ~= 0 then for i, stmt in pairs(ipa_transcription) do local ipa_text = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in ipairs(stmt.qualifiers[property_id]) do table.insert(specifiers, wb.getLabel( qual.datavalue.value.id )) end end end if #specifiers > 0 then specifier_text = "(''" .. table.concat(specifiers, "'', ''") .. "'') " end table.insert(pronunciations, '* ' .. specifier_text .. frame:expandTemplate{ title= i18n['template_ipa'], args = {lang_name, ipa_text} } .. '\n* ' .. i18n['text_syllable_count'] .. callWikifunctionsFunction('Z30837|' .. ipa_text, frame)) end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. elseif lang_name == 'বাংলা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='bn-IPA', }) elseif lang_name == 'আরবি' then local lemma = current_lexeme:getLemma('ar') table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ar-IPA', args={lemma} }) elseif lang_name == 'ফালা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fax-pron', }) elseif lang_code == 'fi' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fi-IPA', }) elseif lang_code == 'ko' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ko-IPA', }) end if iso15919_transcription ~= nil then table.insert(pronunciations, pronunciationBlock('iso15919', iso15919_transcription)) end if itrans ~= nil then table.insert(pronunciations, pronunciationBlock('itrans', itrans)) end if iast ~= nil then table.insert(pronunciations, pronunciationBlock('iast', iast)) end if xsampa ~= nil then table.insert(pronunciations, pronunciationBlock('xsampa', xsampa)) end end -- {{আধ্বব|en|/ˈɪntəvjuː/}} return table.concat(pronunciations, '\n') end local function getAlternativeSpellings( current_lexeme ) local alt_spellings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P11577')) do -- বিকল্প বানান if stmt.mainsnak.datavalue ~= nil then table.insert(alt_spellings, '* ' .. getLinkedLemmata(getEntity(stmt.mainsnak.datavalue.value.id))) end end return table.concat(alt_spellings, '\n') end local function heading_level(text, level) local heading_delimiter = string.rep('=', level) return heading_delimiter .. ' ' .. text .. ' ' .. heading_delimiter end function get_any_notes(sections, args, keys) local notes = {} for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(notes, args[v]) end end return notes end function add_specific_notes(sections, notes) for i, v in ipairs(notes) do table.insert(sections, v) end end local function add_any_notes(sections, args, keys) for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(sections, args[v]) end end end local function getMatchingLemmaForPageTitle(lexeme, title) local lemmas = lexeme:getLemmas() local matched_lemma for _, lemma_entry in ipairs(lemmas) do local lemma = lemma_entry[1] local clean_lemma = normalizeLemmas(lemma) if clean_lemma == title then matched_lemma = lemma break end end return matched_lemma end local function buildLanguageAgnosticInflectionTable() local has_image = false local form_images = {} for i, form in ipairs(forms) do local form_image = form:getAllStatements('P7407') if next(form_image) ~= nil then form_images[i] = form_image[1].mainsnak.datavalue.value has_image = true end end local table_class = "wikitable mw-collapsible sortable" if not has_image then table_class = table_class .. " mw-collapsed" end local text = "{| class='" .. table_class .. "' style='border:solid 1px rgb(80%,80%,100%); text-align:center;'\n" text = text .. "|+ " .. i18n['heading_inflection_table'] .. "\n" text = text .. "|- \n" text = text .. "! " .. i18n['heading_form'] .. " !! " .. i18n['heading_grammatical_features'] if has_image then text = text .. " !! " .. (i18n['heading_image']) end text = text .. " \n" for i, form in ipairs(forms) do local rep = form:getRepresentations() local feat = form:getGrammaticalFeatures() local rep_text = "" for j, r in pairs(rep) do if rep_text == "" then rep_text = r[1] else rep_text = rep_text .. " / " .. r[1] end end local feat_text = "" if feat ~= nil then for j, f in ipairs(feat) do local label = wb.getLabel(f) or f if feat_text == "" then feat_text = label else feat_text = feat_text .. ", " .. label end end end text = text .. "|-\n" text = text .. "| " .. (rep_text ~= "" and rep_text or "—") text = text .. " || " .. (feat_text ~= "" and feat_text or "—") if has_image then local image_cell = "—" if form_images[i] ~= nil then image_cell = "[[চিত্র:" .. form_images[i] .. "|50px]]" end text = text .. " || " .. image_cell end text = text .. "\n" end text = text .. "|}" return text end function p.all( frame ) local args = getArgs(frame) local lexeme_id = args[1] local current_lexeme = getEntity(lexeme_id) local current_language = current_lexeme:getLanguage() local senses = current_lexeme:getSenses() local add_heading = true forms = current_lexeme:getForms() if args[2] ~= nil then local val = mw.text.trim(tostring(args[2])) if val == "false" or val == "0" or val == "না" then add_heading = false end end local references_seen = {} local sections = {} local lang_name = wb.getLabel(current_language) if add_heading == true then local lang_heading = "== " .. lang_name .. " ==" table.insert(sections, lang_heading) end local lex_cat = current_lexeme:getLexicalCategory() lang_code = getLexemeLanguageCode(current_lexeme) local title = mw.title.getCurrentTitle().text local lang_category = getLanguageForCategories(current_language, title) local cat = i18n.lang_category(wb.getLabel(lex_cat), wb.getLabel(current_language)) local lex_cat_template if cat ~= nil then table.insert(sections, '===' .. wb.getLabel(lex_cat) .. cat .. frame:expandTemplate{ title = i18n['template_anchor'], args = { lexeme_id } } .. '===') table.insert(sections, frame:expandTemplate{ title= i18n['template_lexeme'], args = {lexeme_id} }) add_any_notes(sections, args, i18n['manual_category']) local etymology = getEtymology( current_lexeme, frame ) if etymology ~= '' and etymology ~= nil then table.insert(sections, heading_level(i18n['heading_etymology'], 4)) table.insert(sections, tostring(etymology)) end add_any_notes(sections, args, i18n['manual_etymology']) local pronunciation = getPronunciation( frame, current_lexeme, lang_name, lex_cat ) if pronunciation ~= '' then table.insert(sections, heading_level(i18n['heading_pronunciation'], 4)) table.insert(sections, tostring(pronunciation)) end add_any_notes(sections, args, i18n['manual_pronunciation']) local alternative_spellings = getAlternativeSpellings( current_lexeme ) if alternative_spellings ~= '' then table.insert(sections, heading_level(i18n['heading_alternative_spellings'], 4)) table.insert(sections, alternative_spellings) end if lang_code ~= nil and lang_code ~= 'ksy' and lang_code ~= 'rkt' then -- Skip for Kharia Thar, Rangpuri if lex_cat == 'Q34698' then -- বিশেষণ if lang_code == 'en' or lang_code == 'bn' then if #forms <= 1 then lex_cat_template = frame:expandTemplate{title= lang_code .. '-বিশেষণ'} end else lex_cat_template = safeExpand(frame, lang_code .. '-adj') if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ') end end elseif lex_cat == 'Q1084' then -- @TODO: Also check for plural forms local gender local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ if #stmts ~= 0 then if #stmts == 1 then local gender_qid = stmts[1].mainsnak.datavalue.value.id if gender_qid == 'Q499327' then gender = 'm' elseif gender_qid == 'Q1775415' then gender = 'f' elseif gender_qid == 'Q1775461' then gender = 'n' elseif gender_qid == 'Q1305037' then gender = 'c' end end else for i, stmt in pairs(stmts) do local qid = stmts[i].mainsnak.datavalue.value.id if qid == 'Q499327' then gender = gender .. 'm' elseif qid == 'Q1775415' then gender = gender .. 'f' end end end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. if current_language == 'Q13955' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = safeExpand(frame, {title='ar-noun', args={matched_lemma,gender}}) else lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}} end elseif current_language == 'Q29919' then lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}} elseif current_language == 'Q397' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = frame:expandTemplate{title='la-noun', args={matched_lemma,g=gender}} end elseif current_language == 'Q11059' then lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}} elseif current_language ~= 'Q1860' then -- These templates require the gender to be passed as the 1st argument. lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix'], {gender}) if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix_fallback'], {gender}) end end end end -- elseif lex_cat == 'Q147276' then -- lex_cat_template = safeExpand(frame, lang_code .. '-proper noun', {gender}) -- if not lex_cat_template then -- lex_cat_template = safeExpand(frame, lang_code .. '-নামবাচক বিশেষ্য', {gender}) -- end end if lex_cat_template ~= nil then table.insert(sections, lex_cat_template) else local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then table.insert(sections, heading_level(matched_lemma, 4)) else table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]') end end local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name)) table.insert(sections, tostring(meanings)) add_any_notes(sections, args, i18n['manual_meaning']) local instance_of = current_lexeme:getAllStatements('P31') -- সত্ত্বার ধরন if #instance_of ~= 0 then local instance_of_entity = instance_of[1].mainsnak.datavalue.value.id if instance_of_entity == 'Q40437546' or instance_of_entity == 'Q120831827' or instance_of_entity == 'Q120717979' or instance_of_entity == 'Q124476844' then -- @TODO: generalise this so all types of roots are shown table.insert(sections, i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)) elseif instance_of_entity == 'Q376431' then -- বর্ণের নাম table.insert(sections, i18n.tocatlink(lang_code .. ':রং')) end end local translations = getTranslations(frame, senses) if translations ~= nil then table.insert(sections, translations) end -- (!) বিশেষ ভাষার বিভক্তির সারণি যদি থাকে সেগুলো এখানে নতুন if বিবৃতি যোগ করা যায়। if next(forms) ~= nil then if current_language == 'Q9610' then -- বাংলা if lex_cat == 'Q24905' then local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getConjTable(frame, forms) table.insert(sections, conjTable) elseif lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z33243|' .. lexeme_id .. '|', frame)) elseif lex_cat == 'Q34698' then if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end --elseif current_language == 'Q13955' then -- আরবি -- if lex_cat == 'Q1084' then -- table.insert(sections, frame:expandTemplate{title='ar-decl-noun', args={lemma}}) -- end elseif current_language == 'Q188' then -- জার্মান if lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z28602|' .. lexeme_id .. '|', frame)) end else if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end end local reference_notes = get_any_notes(sections, args, i18n['manual_reference']) if #references_seen > 0 or #reference_notes > 0 then table.insert(sections, heading_level(i18n['heading_references'], 4)) table.insert(sections, frame:extensionTag('references')) add_specific_notes(sections, reference_notes) end local external_link_table = getExternalLinks ( current_lexeme ) if #external_link_table > 0 then local external_links = '* ' .. table.concat(external_link_table, '\n* ') table.insert(sections, heading_level(i18n['heading_external_links'], 4)) table.insert(sections, external_links) end add_any_notes(sections, args, i18n['manual_external_link']) if #references_seen == 0 and #reference_notes == 0 and #external_link_table == 0 and #get_any_notes(sections, args, i18n['manual_external_link']) == 0 then if i18n['category_rfref'][lang_category] ~= nil then table.insert(sections, i18n.tocatlink(i18n['category_rfref'][lang_category])) else table.insert(sections, i18n.tocatlink(i18n['category_rfref']['_'])) end end return table.concat(sections,"\n\n") end return p 030zm39ismvdv49hi5pz69q3diw8ibd 508941 508939 2026-05-17T14:41:04Z Redmin 6857 508941 Scribunto text/plain local p = {} local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n') local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format local getArgs = require('Module:Arguments').getArgs local wb = mw.wikibase local ustring = mw.ustring local html = mw.html local mw_lang = mw.language local entity_cache = {} local reference_cache = {} local forms local lang_code local function countWords(string) local count = 0 for word in ustring.gmatch(string, "%S+") do count = count + 1 end return count end local function normalizeLemmas(text) text = mw.ustring.gsub(text, "ٰ", "") text = mw.ustring.gsub(text, "ِ", "") text = mw.ustring.gsub(text, "[ً-ٟ]", "") text = mw.ustring.gsub(text, "أ", "ا") --text = mw.ustring.gsub(text, "إ", "ا") text = mw.ustring.gsub(text, "آ", "ا") return text end local function serializeTable(val, name, skipnewlines, depth) -- https://stackoverflow.com/a/6081639 skipnewlines = skipnewlines or false depth = depth or 0 local tmp = string.rep(" ", depth) if name then tmp = tmp .. name .. " = " end if type(val) == "table" then tmp = tmp .. "{" .. (not skipnewlines and "\n" or "") for k, v in pairs(val) do tmp = tmp .. serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "") end tmp = tmp .. string.rep(" ", depth) .. "}" elseif type(val) == "number" then tmp = tmp .. tostring(val) elseif type(val) == "string" then tmp = tmp .. string.format("%q", val) elseif type(val) == "boolean" then tmp = tmp .. (val and "true" or "false") else tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\"" end return tmp end -- Use this to safely expand templates when you are not sure that they exist. local function safeExpand(frame, title, args) local _, result = pcall(function() return frame:expandTemplate{ title = title, args = args } end) if result:find('does not exist') then -- expandTemplate{} doesn't seem to throw any error that can be handled with pcall() so string search is the only viable option. return nil end return result end local function getReference( id, reference ) local out_id = nil local url_value if reference_cache[id] == nil then local ref_text = references(reference, wb, mw_lang, i18n['content_lang_code'], i18n['wikipedia']) if reference.snaks ~= nil then if reference.snaks['P248'] ~= nil then for _, snak in pairs(reference.snaks['P248']) do if snak.datavalue and snak.datavalue.value.id == 'Q428' then -- কুরআন ref_text = ustring.gsub(ref_text, 'নামক অনুচ্ছেদ', 'নং আয়াত') break end end end if reference.snaks['P854'] ~= nil then local snak = reference.snaks['P854'][1] if snak.datavalue then url_value = snak.datavalue.value end end end if url_value ~= nil then ref_text = ref_text .. ', [' .. url_value .. ' সংযোগ]' end reference_cache[id] = ref_text else out_id = id end return {out_id, reference_cache[id]} end local function getEntity( id ) if entity_cache[id] == nil then entity_cache[id] = wb.getEntity(id) end return entity_cache[id] ~= false and entity_cache[id] or nil end local function getLexemeLanguageCode(current_lexeme) local lang_item_id = current_lexeme:getLanguage() if lang_item_id == nil then return nil end local lang_entity = getEntity(lang_item_id) if lang_entity == nil then return nil end for i, statement_property in ipairs({'P305','P424', 'P220'}) do -- আইইটিএফ ভাষা ট্যাগ, উইকিমিডিয়া ভাষা কোড, আইএসও ৬৩৯-৩ local statements = lang_entity:getBestStatements(statement_property) if statements[1] ~= nil then return statements[1].mainsnak.datavalue.value end end return nil end -- Return the first form of the lexeme which has exactly the given grammatical feature. local function formWithSingleGrammaticalFeature( item_id ) for i = 1, #forms do local grammaticalFeatures = forms[i]:getGrammaticalFeatures() if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then return forms[i] end end return nil end local function getArticleLinkTemplate(frame, stmt_value) local template = '' local sitelink = getEntity(stmt_value):getSitelink(i18n['wikipedia']) if sitelink ~= nil then template = frame:expandTemplate{ title=i18n['template_wikipedia'], args={sitelink} } end return template end local function getArticleLinks (frame, sense ) local article_links = '' for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয় article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end return article_links end -- @TODO: Generalise local function expandTemplateForProperty(frame, object, property, template) local lemmas = {} local n = 0 for _, stmt in pairs(object:getAllStatements(property)) do local lex = wb.lexeme.splitLexemeId(stmt.mainsnak.datavalue.value.id) lex = getEntity(lex) n = n + 1 lemmas[n] = lex:getLemma(lang_code) end if not lang_code or n == 0 then return '' end -- Build args: first lang_code, then lemmas local args = {lang_code} for i = 1, n do args[#args + 1] = lemmas[i] end return frame:expandTemplate{ title = template, args = args } end local function getExternalLinks( entity ) -- T418639 local external_links = {} if entity.claims == nil then return external_links end local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls for property_id, statements in pairs(entity.claims) do local formatter_url = formatter_urls[property_id] if formatter_url ~= nil then local property_source = wb.getBestStatements(property_id, 'P9073') local source_name if next(property_source) ~= nil then source_name = wb.getLabel(property_source[1].mainsnak.datavalue.value.id) or property_source[1].mainsnak.datavalue.value.id else source_name = wb.getLabel(property_id) or property_id end for i = 1, #statements do local stmt = statements[i] if stmt.mainsnak.datavalue then local formatted_link = ustring.gsub( ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value), ' ', '+' ) table.insert(external_links, '[' .. formatted_link .. ' ' .. source_name .. ']') end end end end return external_links end p.getExternalLinks = getExternalLinks -- রেখে দিন যাতে ডিবাগিং সম্ভব হয় local function termSpan( term ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( text ) return tostring( span ) end local function termLink( term, lang_qid ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( '[[' .. text .. '#' .. wb.getLabel(lang_qid) .. '|' .. text .. ']]' ) return tostring( span ) end local function getLemmata( current_lexeme ) local 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 local function getLinkedLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termLink(rep, current_lexeme:getLanguage()) else lemma_string = lemma_string .. '/' .. termLink(rep, current_lexeme:getLanguage()) end end return lemma_string end local function getExamples( current_lexeme, sense_id, references_seen ) local examples = html.create('dl') for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ if stmt.qualifiers ~= nil and stmt.qualifiers['P6072'] ~= nil and stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_strs = {} if stmt.qualifiers['P1810'] ~= nil then table.insert(example_form_strs, stmt.qualifiers['P1810'][1].datavalue.value) elseif stmt.qualifiers['P5830'] ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ for i, rep in pairs(example_form:getRepresentations()) do table.insert(example_form_strs, rep[1]) end end example_str = nil for i, example_form_str in pairs(example_form_strs) do new_example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") if new_example_text ~= example_text then example_str = termSpan({new_example_text, example_lang}) break end new_example_text = example_text end if example_str == nil then example_str = termSpan({example_text, example_lang}) end local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end end for i, stmt in pairs(wb.getAllStatements(sense_id, 'P5831')) do -- ব্যবহারের উদাহরণ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_str = nil if stmt.qualifers ~= nil then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ if stmt.qualifiers['P1810'] ~= nil then example_form_str = stmt.qualifiers['P1810'][1].datavalue.value end end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentation(i18n['content_lang_code']) end if example_form ~= nil and example_form_str == nil then example_form_str = example_form:getRepresentations()[1][1] end if example_form_str ~= nil then example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") end example_str = termSpan({example_text, example_lang}) local reference_text = '' if stmt.references ~= nil then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str ~= nil then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end return { tostring(examples) , references_seen } end -- This calls frame:preprocess() instead of :callParserFunction() because the latter does not work for Wikifunctions function calls yet (see https://www.wikifunctions.org/wiki/Wikifunctions:Embedded_function_calls). local function callWikifunctionsFunction(args, frame) return frame:preprocess('{{#function:' .. args .. '}}') end local function checkTitleCodePointInRange(title, start_point, end_point) return ustring.find( title, '[' ..ustring.char(start_point) .. '-' .. ustring.char(end_point) .. ']' ) end local function getLanguageForCategories( lang_id, current_page_title ) -- বিশেষ ভাষার জন্য if lang_id == 'Q11051' then -- হিন্দি/উর্দু if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- উর্দু lang_id = 'Q11051ur' elseif checkTitleCodePointInRange(current_page_title, 0x0900, 0x097f) ~= nil then -- হিন্দি lang_id = 'Q11051hi' end elseif lang_id == 'Q58635' then -- পাঞ্জাবি if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- শাহমুখী lang_id = 'Q58635pnb' elseif checkTitleCodePointInRange(current_page_title, 0x0a00, 0x0a7f) ~= nil then -- গুরুমুখী lang_id = 'Q58635pa' end elseif lang_id == 'Q56356571' then -- নয়া ফার্সি ভাষা if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) ~= nil then -- ফার্সি (ইরান/আফগানিস্তান) lang_id = 'Q56356571fa' elseif checkTitleCodePointInRange(current_page_title, 0x0400, 0x04ff) ~= nil then -- তাজিক lang_id = 'Q56356571tg' end end return lang_id end local function getOneStringForProperty(object, property) local val local stmts = object:getAllStatements(property) if #stmts ~= 0 then val = stmts[1].mainsnak.datavalue.value end return val end local function getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved if #senses == 0 then return nil end local all_translations = {} for _, sense in pairs(senses) do local translation_set = {} local gloss = sense:getGloss('bn') for _, stmt in pairs(sense:getAllStatements('P5972')) do local translation = stmt.mainsnak.datavalue.value.id local lexeme_id = wb.lexeme.splitLexemeId(translation) local language = wb.getLabel(getEntity(lexeme_id):getLanguage()) table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>') end if #translation_set > 0 then local block = frame:expandTemplate{ title = i18n['template_trans-top'], args = { gloss } } block = block .. table.concat(translation_set, '\n') .. frame:expandTemplate{ title = i18n['template_trans-bottom'] } table.insert(all_translations, block) end end if #all_translations == 0 then return nil end return '====' .. i18n['heading_translation'] .. '==== \n' .. table.concat(all_translations, '\n') end local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. i18n.tocatlink(i18n['category_rfdef']), references_seen} end local meanings = html.create( 'ol' ) for i, sense in pairs(senses) do local gloss_text_parts = {} local main_gloss_text = frame:expandTemplate{ title=i18n['template_anchor'], args={sense:getId()} } local specifiers = {} for k, property_id in ipairs({'P6084', 'P6191', 'P9488'}) do -- অবস্থান যেখানে শব্দার্থ ব্যবহৃত, যে রীতিতে শব্দার্থ ব্যবহৃত হয়, যে ক্ষেত্রে ব্যবহৃত for i, stmt in pairs(sense:getAllStatements(property_id)) do local stmt_value = stmt.mainsnak.datavalue.value.id local reference_text = '' local refs = stmt.references if refs ~= nil then for j, reference in pairs(refs) do table.insert(references_seen, reference.hash) got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. frame:extensionTag('ref', got_reference[2]) end local val = wb.getLabel(stmt_value) table.insert(specifiers, val .. reference_text) if property_id == 'P9488' then table.insert(specifiers, i18n.tocatlink(lang_code .. val)) end end end end if #specifiers > 0 then main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') " end local gloss = sense:getGloss( i18n['content_lang_code'] ) if gloss ~= nil then if countWords(gloss) == 1 then main_gloss_text = main_gloss_text .. "[[" .. gloss .. "#" .. i18n['content_lang_name'] .. "|" .. gloss .. "]]" else main_gloss_text = main_gloss_text .. gloss end if gloss:match('^প্রদত্ত%s*(%S-)%s*নাম$') then -- given names main_gloss_text = main_gloss_text .. i18n.tocatlink(language_name .. ' ' .. i18n['category_given_names']) end else local other_gloss_text = nil local other_gloss_lang = nil local item_label_gloss_parts = {} for k, stmt in pairs(sense:getAllStatements('P5137')) do -- যদি 'এই অর্থের জন্য আইটেম' মানের বাংলা লেবেল থাকে local stmt_value = stmt.mainsnak.datavalue.value.id local stmt_label = wb.getLabel(stmt_value) if stmt_label ~= nil then table.insert(item_label_gloss_parts, '[[:d:' .. stmt_value .. '|' .. stmt_label .. ']]') end end if #item_label_gloss_parts > 0 then other_gloss_text = table.concat(item_label_gloss_parts, '; ') end if other_gloss_text == nil then for i, fallback_lang in ipairs(mw_lang.getFallbacksFor( i18n['content_lang_code'] )) do if sense:getGloss( fallback_lang ) ~= nil then other_gloss_text, other_gloss_lang = sense:getGloss( fallback_lang ) end end if other_gloss_lang == nil then local glosses = sense:getGlosses() for j, gloss in pairs(glosses) do other_gloss_text = gloss[1] other_gloss_lang = gloss[2] break end end main_gloss_text = main_gloss_text .. other_gloss_text .. "<sup><em>" .. mw_lang.fetchLanguageName(other_gloss_lang, i18n['content_lang_code']) .. "</em></sup>" else main_gloss_text = main_gloss_text .. "''" .. other_gloss_text .. "''" end main_gloss_text = main_gloss_text .. i18n.tocatlink(i18n['category_rfdef_equivalent']) end local synonym = expandTemplateForProperty(frame, sense, 'P5973', i18n['template_synonym']) if synonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. synonym end local antonym = expandTemplateForProperty(frame, sense, 'P5974', i18n['template_antonym']) if antonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. antonym end local hypernym = expandTemplateForProperty(frame, sense, 'P6593', i18n['template_hypernym']) if hypernym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. hypernym end if lex_cat == 'Q1084' or lex_cat == 'Q147276' then -- noun or proper noun local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-noun']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym elseif lex_cat == 'Q34698' then local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-adj']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym end table.insert(gloss_text_parts, main_gloss_text .. createicon(i18n['content_lang_code'], sense:getId())) 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 local got_reference = getReference ( stmt.references[1].hash, stmt.references[1] ) gloss_quote = '"' .. gloss_quote .. '" ' .. got_reference[2] end table.insert(references_seen, stmt.references[1].hash) table.insert(gloss_text_parts, frame:extensionTag('ref', gloss_quote)) end for i, stmt in pairs(sense:getAllStatements('P1343')) do -- বর্ণিত উৎস -- TODO: do away with making fake reference objects local fake_reference = { ['snaks'] = {} } fake_reference.snaks['P248'] = { [1] = stmt.mainsnak } qualifiers_order = stmt['qualifiers-order'] if qualifiers_order ~= nil then for i, k in ipairs(qualifiers_order) do fake_reference.snaks[k] = stmt.qualifiers[k] end end fake_reference.hash = mw.hash.hashValue('sha3-512', serializeTable(fake_reference)) table.insert(references_seen, fake_reference.hash) local got_reference = getReference(fake_reference.hash, fake_reference) if got_reference[1] == nil then table.insert(gloss_text_parts, frame:extensionTag('ref', got_reference[2], {name = fake_reference.hash})) else table.insert(gloss_text_parts, frame:extensionTag{name = 'ref', content='', args = {name = got_reference[1]}}) end end local first_sense_image = '' local 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 table.insert(gloss_text_parts, '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]') end local idlinks = getExternalLinks(sense) if #idlinks > 0 then local idlinktext = '<small>(' for _, idlink in pairs(idlinks) do idlinktext = idlinktext .. idlink .. '\n' end idlinktext = idlinktext .. ')</small>' table.insert(gloss_text_parts, idlinktext) end local externallinks = getArticleLinks(frame, sense) if externallinks ~= '' then table.insert(gloss_text_parts, externallinks) end local new_notes = {} local sense_keys = { sense:getId(), string.sub(sense:getId(), string.find(sense:getId(), '-')+1) } for _, v in ipairs(sense_keys) do if args[v] ~= nil then table.insert(new_notes, args[v]) end end if #new_notes > 0 then for _, v in ipairs(new_notes) do if i == 1 then table.insert(gloss_text_parts, '<br/>' .. v) else table.insert(gloss_text_parts, v) end end end local examples, references_seen = unpack(getExamples( current_lexeme, sense:getId(), references_seen )) local gloss_text = table.concat(gloss_text_parts, '\n') meanings:tag('li'):wikitext(gloss_text):wikitext(examples) end return {meanings, references_seen} end local function getPronunciationBaseForm( lang_name, lex_cat) local base_form = nil -- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়। if lang_name == 'বাংলা' then if lex_cat == 'Q1084' then -- বিশেষ্য base_form = formWithSingleGrammaticalFeature( 'Q131105' ) -- কর্তৃকারক elseif lex_cat == 'Q24905' then -- ক্রিয়া base_form = formWithSingleGrammaticalFeature( 'Q1350145' ) -- ক্রিয়া বিশেষ্য end end if base_form == nil then for i, form in pairs(forms) do base_form = form break end end return base_form end local function getCombines( current_lexeme ) local combines = '' local index_mappings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P5238')) do if stmt.qualifiers ~= nil and stmt.qualifiers['P1545'] ~= nil then -- ক্রম local current_index = tonumber(stmt.qualifiers['P1545'][1].datavalue.value) index_mappings[current_index] = stmt end end if #index_mappings ~= 0 then for i, stmt in ipairs(index_mappings) do if stmt.mainsnak.datavalue ~= nil then local part_lexeme_id = stmt.mainsnak.datavalue.value.id local part_lexeme = getEntity(part_lexeme_id) local current_substring = getLinkedLemmata(part_lexeme) local part_etymology = getEtymology(part_lexeme) if part_etymology ~= '' and part_etymology ~= nil then current_substring = current_substring .. ' (← ' .. part_etymology .. ')' end if combines == '' then combines = current_substring else -- @TODO: This shoukd use the 'affix' template instead. combines = combines .. ' + ' .. current_substring end end end end return combines end function getRoots( current_lexeme ) local stmts = current_lexeme:getAllStatements('P5920') if #stmts == 0 then return '' end local root_lexeme = getEntity(stmts[1].mainsnak.datavalue.value.id) return '√' .. getLinkedLemmata(root_lexeme), root_lexeme:getLemma('ar') end function getEtymology( current_lexeme, frame ) -- TODO: see if any etymology chains are not possible to render local etymology = '' local current_combines = getCombines(current_lexeme) local current_roots, root_str = getRoots(current_lexeme) local stmts = current_lexeme:getAllStatements('P5191') if #stmts == 0 then if current_roots ~= '' and current_combines ~= '' then return current_roots .. '<br/>(' .. current_combines .. ')' elseif current_roots ~= '' then if lang_code == 'ar' and frame ~= nil then return frame:expandTemplate{title='ar-rootbox', args={root_str}} else return current_roots end else return current_combines end end for i, stmt in pairs(stmts) do local origin_lexeme_dv = stmt.mainsnak.datavalue -- If this is nil, the origin lexeme is not known. if origin_lexeme_dv ~= nil then local origin_lexeme = getEntity(origin_lexeme_dv.value.id) local origin_lexeme_lang = origin_lexeme:getLanguage() local origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. wb.getLabel(origin_lexeme_lang) .. ')' if stmt.qualifiers ~= nil and stmt.qualifiers['P5886'] ~= nil then local mode_of_derivation = stmt.qualifiers['P5886'][1].datavalue.value.id if mode_of_derivation == 'Q1345001' then origin_lexeme_string = ustring.gsub(i18n['etymology_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q845079' then origin_lexeme_string = ustring.gsub(i18n['etymology_learned_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q56611986' then origin_lexeme_string = ustring.gsub(i18n['etymology_inheritance'], '$1', origin_lexeme_string) end end local origin_origin = getEtymology(origin_lexeme) local new_etymology_string = '' if origin_origin ~= '' and origin_origin ~= nil then new_etymology_string = origin_lexeme_string .. ' ← ' .. origin_origin else new_etymology_string = origin_lexeme_string end end if etymology == '' then etymology = new_etymology_string elseif origin_lexeme_string ~= nil and etymology ~= nil then etymology = etymology .. ' ' .. origin_lexeme_string elseif origin_lexeme_string ~= nil and etymology == nil then etymology = origin_lexeme_string end end if current_roots ~= '' and etymology ~= nil then etymology = etymology .. ' ' .. current_roots elseif current_roots ~= '' and etymology == nil then etymology = current_roots end if current_combines ~= '' and etymology ~= nil then etymology = etymology .. '<br/>(' .. current_combines .. ')' end return etymology end local function pronunciationBlock(block, value) return '* ' .. i18n['text_' .. block] .. ' ' .. value end local function getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pronunciations = {} local base_form = getPronunciationBaseForm(lang_name, lex_cat ) if base_form ~= nil then for i, stmt in pairs(base_form:getAllStatements('P443')) do -- উচ্চারণের অডিও local pronunciation_file = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in pairs(stmt.qualifiers[property_id]) do local stmt_value = qual.datavalue.value.id table.insert(specifiers, wb.getLabel(stmt_value)) end end end if #specifiers > 0 then specifier_text = table.concat(specifiers, "'', ''") end local audio_text if specifier_text ~= '' then audio_text = i18n['text_audio'] .. ' (' .. specifier_text .. ')' else audio_text = i18n['text_audio'] end table.insert(pronunciations, '* ' .. frame:expandTemplate{ title= i18n['template_audio'], args = {lang_name, pronunciation_file, audio_text} }) end local ipa_transcription = base_form:getAllStatements('P898') -- - আধ্বব প্রতিলিপিকরণ local iso15919_transcription = getOneStringForProperty(base_form, 'P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ local itrans = getOneStringForProperty(base_form, 'P8881') -- ITRANS local iast = getOneStringForProperty(base_form, 'P7581') -- আইএএসটি প্রতিলিপিকরণ local xsampa = getOneStringForProperty(base_form, 'P2859') -- @TODO: অডিও ও প্রতিলিপিকরণ দুটোই থাকলে সেই ক্ষেত্রে একটার ঠিক পরেই আরেকটা দেখানো উচিত if #ipa_transcription ~= 0 then for i, stmt in pairs(ipa_transcription) do local ipa_text = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers ~= nil then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in ipairs(stmt.qualifiers[property_id]) do table.insert(specifiers, wb.getLabel( qual.datavalue.value.id )) end end end if #specifiers > 0 then specifier_text = "(''" .. table.concat(specifiers, "'', ''") .. "'') " end table.insert(pronunciations, '* ' .. specifier_text .. frame:expandTemplate{ title= i18n['template_ipa'], args = {lang_name, ipa_text} } .. '\n* ' .. i18n['text_syllable_count'] .. callWikifunctionsFunction('Z30837|' .. ipa_text, frame)) end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. elseif lang_name == 'বাংলা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='bn-IPA', }) elseif lang_name == 'আরবি' then local lemma = current_lexeme:getLemma('ar') table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ar-IPA', args={lemma} }) elseif lang_name == 'ফালা' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fax-pron', }) elseif lang_code == 'fi' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fi-IPA', }) elseif lang_code == 'ko' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ko-IPA', }) end if iso15919_transcription ~= nil then table.insert(pronunciations, pronunciationBlock('iso15919', iso15919_transcription)) end if itrans ~= nil then table.insert(pronunciations, pronunciationBlock('itrans', itrans)) end if iast ~= nil then table.insert(pronunciations, pronunciationBlock('iast', iast)) end if xsampa ~= nil then table.insert(pronunciations, pronunciationBlock('xsampa', xsampa)) end end -- {{আধ্বব|en|/ˈɪntəvjuː/}} return table.concat(pronunciations, '\n') end local function getAlternativeSpellings( current_lexeme ) local alt_spellings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P11577')) do -- বিকল্প বানান if stmt.mainsnak.datavalue ~= nil then table.insert(alt_spellings, '* ' .. getLinkedLemmata(getEntity(stmt.mainsnak.datavalue.value.id))) end end return table.concat(alt_spellings, '\n') end local function heading_level(text, level) local heading_delimiter = string.rep('=', level) return heading_delimiter .. ' ' .. text .. ' ' .. heading_delimiter end function get_any_notes(sections, args, keys) local notes = {} for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(notes, args[v]) end end return notes end function add_specific_notes(sections, notes) for i, v in ipairs(notes) do table.insert(sections, v) end end local function add_any_notes(sections, args, keys) for i, v in ipairs(keys) do if args[v] ~= nil then table.insert(sections, args[v]) end end end local function getMatchingLemmaForPageTitle(lexeme, title) local lemmas = lexeme:getLemmas() local matched_lemma for _, lemma_entry in ipairs(lemmas) do local lemma = lemma_entry[1] local clean_lemma = normalizeLemmas(lemma) if clean_lemma == title then matched_lemma = lemma break end end return matched_lemma end local function buildLanguageAgnosticInflectionTable() local has_image = false local form_images = {} for i, form in ipairs(forms) do local form_image = form:getAllStatements('P7407') if next(form_image) ~= nil then form_images[i] = form_image[1].mainsnak.datavalue.value has_image = true end end local table_class = "wikitable mw-collapsible sortable" if not has_image then table_class = table_class .. " mw-collapsed" end local text = "{| class='" .. table_class .. "' style='border:solid 1px rgb(80%,80%,100%); text-align:center;'\n" text = text .. "|+ " .. i18n['heading_inflection_table'] .. "\n" text = text .. "|- \n" text = text .. "! " .. i18n['heading_form'] .. " !! " .. i18n['heading_grammatical_features'] if has_image then text = text .. " !! " .. (i18n['heading_image']) end text = text .. " \n" for i, form in ipairs(forms) do local rep = form:getRepresentations() local feat = form:getGrammaticalFeatures() local rep_text = "" for j, r in pairs(rep) do if rep_text == "" then rep_text = r[1] else rep_text = rep_text .. " / " .. r[1] end end local feat_text = "" if feat ~= nil then for j, f in ipairs(feat) do local label = wb.getLabel(f) or f if feat_text == "" then feat_text = label else feat_text = feat_text .. ", " .. label end end end text = text .. "|-\n" text = text .. "| " .. (rep_text ~= "" and rep_text or "—") text = text .. " || " .. (feat_text ~= "" and feat_text or "—") if has_image then local image_cell = "—" if form_images[i] ~= nil then image_cell = "[[চিত্র:" .. form_images[i] .. "|50px]]" end text = text .. " || " .. image_cell end text = text .. "\n" end text = text .. "|}" return text end function p.all( frame ) local args = getArgs(frame) local lexeme_id = args[1] local current_lexeme = getEntity(lexeme_id) local current_language = current_lexeme:getLanguage() local senses = current_lexeme:getSenses() local add_heading = true forms = current_lexeme:getForms() if args[2] ~= nil then local val = mw.text.trim(tostring(args[2])) if val == "false" or val == "0" or val == "না" then add_heading = false end end local references_seen = {} local sections = {} local lang_name = wb.getLabel(current_language) if add_heading == true then local lang_heading = "== " .. lang_name .. " ==" table.insert(sections, lang_heading) end local lex_cat = current_lexeme:getLexicalCategory() lang_code = getLexemeLanguageCode(current_lexeme) local title = mw.title.getCurrentTitle().text local lang_category = getLanguageForCategories(current_language, title) local cat = i18n.lang_category(wb.getLabel(lex_cat), wb.getLabel(current_language)) local lex_cat_template if cat ~= nil then table.insert(sections, '===' .. wb.getLabel(lex_cat) .. cat .. frame:expandTemplate{ title = i18n['template_anchor'], args = { lexeme_id } } .. '===') table.insert(sections, frame:expandTemplate{ title= i18n['template_lexeme'], args = {lexeme_id} }) add_any_notes(sections, args, i18n['manual_category']) local etymology = getEtymology( current_lexeme, frame ) if etymology ~= '' and etymology ~= nil then table.insert(sections, heading_level(i18n['heading_etymology'], 4)) table.insert(sections, tostring(etymology)) end add_any_notes(sections, args, i18n['manual_etymology']) local pronunciation = getPronunciation( frame, current_lexeme, lang_name, lex_cat ) if pronunciation ~= '' then table.insert(sections, heading_level(i18n['heading_pronunciation'], 4)) table.insert(sections, tostring(pronunciation)) end add_any_notes(sections, args, i18n['manual_pronunciation']) local alternative_spellings = getAlternativeSpellings( current_lexeme ) if alternative_spellings ~= '' then table.insert(sections, heading_level(i18n['heading_alternative_spellings'], 4)) table.insert(sections, alternative_spellings) end if lang_code ~= nil and lang_code ~= 'ksy' and lang_code ~= 'rkt' then -- Skip for Kharia Thar, Rangpuri if lex_cat == 'Q34698' then -- বিশেষণ if lang_code == 'en' or lang_code == 'bn' then if #forms <= 1 then lex_cat_template = frame:expandTemplate{title= lang_code .. '-বিশেষণ'} end else lex_cat_template = safeExpand(frame, lang_code .. '-adj') if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ') end end elseif lex_cat == 'Q1084' then -- @TODO: Also check for plural forms local gender local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ if #stmts ~= 0 then if #stmts == 1 then local gender_qid = stmts[1].mainsnak.datavalue.value.id if gender_qid == 'Q499327' then gender = 'm' elseif gender_qid == 'Q1775415' then gender = 'f' elseif gender_qid == 'Q1775461' then gender = 'n' elseif gender_qid == 'Q1305037' then gender = 'c' end end else for i, stmt in pairs(stmts) do local qid = stmts[i].mainsnak.datavalue.value.id if qid == 'Q499327' then gender = gender .. 'm' elseif qid == 'Q1775415' then gender = gender .. 'f' end end end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. if current_language == 'Q13955' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = safeExpand(frame, {title='ar-noun', args={matched_lemma,gender}}) else lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}} end elseif current_language == 'Q29919' then lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}} elseif current_language == 'Q397' then local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then lex_cat_template = frame:expandTemplate{title='la-noun', args={matched_lemma,g=gender}} end elseif current_language == 'Q11059' then lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}} elseif current_language ~= 'Q1860' then -- These templates require the gender to be passed as the 1st argument. lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix'], {gender}) if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix_fallback'], {gender}) end end end end -- elseif lex_cat == 'Q147276' then -- lex_cat_template = safeExpand(frame, lang_code .. '-proper noun', {gender}) -- if not lex_cat_template then -- lex_cat_template = safeExpand(frame, lang_code .. '-নামবাচক বিশেষ্য', {gender}) -- end end if lex_cat_template ~= nil then table.insert(sections, lex_cat_template) else local matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) if matched_lemma ~= nil then table.insert(sections, heading_level(matched_lemma, 4)) else table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]') end end local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name)) table.insert(sections, tostring(meanings)) add_any_notes(sections, args, i18n['manual_meaning']) local instance_of = current_lexeme:getAllStatements('P31') -- সত্ত্বার ধরন if #instance_of ~= 0 then local instance_of_entity = instance_of[1].mainsnak.datavalue.value.id if instance_of_entity == 'Q40437546' or instance_of_entity == 'Q120831827' or instance_of_entity == 'Q120717979' or instance_of_entity == 'Q124476844' then -- @TODO: generalise this so all types of roots are shown table.insert(sections, i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)) elseif instance_of_entity == 'Q376431' then -- বর্ণের নাম table.insert(sections, i18n.tocatlink(lang_code .. ':রং')) end end local translations = getTranslations(frame, senses) if translations ~= nil then table.insert(sections, translations) end -- (!) বিশেষ ভাষার বিভক্তির সারণি যদি থাকে সেগুলো এখানে নতুন if বিবৃতি যোগ করা যায়। if next(forms) ~= nil then if current_language == 'Q9610' then -- বাংলা if lex_cat == 'Q24905' then local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getConjTable(frame, forms) table.insert(sections, conjTable) elseif lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z33243|' .. lexeme_id .. '|', frame)) elseif lex_cat == 'Q34698' then if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end --elseif current_language == 'Q13955' then -- আরবি -- if lex_cat == 'Q1084' then -- table.insert(sections, frame:expandTemplate{title='ar-decl-noun', args={lemma}}) -- end elseif current_language == 'Q188' then -- জার্মান if lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z28602|' .. lexeme_id .. '|', frame)) end else if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end end local reference_notes = get_any_notes(sections, args, i18n['manual_reference']) if #references_seen > 0 or #reference_notes > 0 then table.insert(sections, heading_level(i18n['heading_references'], 4)) table.insert(sections, frame:extensionTag('references')) add_specific_notes(sections, reference_notes) end local external_link_table = getExternalLinks ( current_lexeme ) if #external_link_table > 0 then local external_links = '* ' .. table.concat(external_link_table, '\n* ') table.insert(sections, heading_level(i18n['heading_external_links'], 4)) table.insert(sections, external_links) end add_any_notes(sections, args, i18n['manual_external_link']) if #references_seen == 0 and #reference_notes == 0 and #external_link_table == 0 and #get_any_notes(sections, args, i18n['manual_external_link']) == 0 then if i18n['category_rfref'][lang_category] ~= nil then table.insert(sections, i18n.tocatlink(i18n['category_rfref'][lang_category])) else table.insert(sections, i18n.tocatlink(i18n['category_rfref']['_'])) end end return table.concat(sections,"\n\n") end return p 0f2m20h4y8oria5569gxb5u3z9afyxg আদর্শ 0 60987 508937 335896 2026-05-17T12:45:12Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1566118-এর সাথে সংযোগ তৈরি করছি 508937 wikitext text/x-wiki {{লে|L1566118|etymology={{der|bn|sa|आदर्श}} থেকে প্রাপ্ত।}} owknll2yw53lmgj3iid4s8auqmjkogz ব্যবহারকারী:Redmin/খেলাঘর 2 66884 508938 508787 2026-05-17T12:50:57Z Redmin 6857 508938 wikitext text/x-wiki [[:বিষয়শ্রেণী:IPA pronunciations with invalid IPA characters]] [[চলা]] P9295, P5186, P5187, P11053, P11054, P9488, P5972, P9971, P6072 with P5831, P9970, P2288, P8881, P1552, P5975 (needs T185313), P8471, P5976, P10822, P282, P5978, P6719, P7219, P7220, P7221, P10339, P10927, P12027, P12028, P12410, P13045, P7481, P13504, P5548, P5401, P5426, P2440, P9021, P10822 <br /> Z29940, Z17866, Z32787, Z32793, Z10029, Z11795, Z31772, Z33644, Z30837 (templates), Z33814, Combine Z22853 and Z23489 to make a translation table function Etymology failing to render: [[আদর্শ]] [[d:Lexeme:L3441]], [[throw]], [[গোলাকার]], [[:বিষয়শ্রেণী:উইকিউপাত্ত আভিধানিক উপাত্ত থেকে আমদানিকৃত]] Pronunciation of forms [[Category:<lang> terms spelled with <letter>]] [[d:User:Rua/Wikidata for Wiktionarians]] [[f:Wikifunctions:Embedded function calls/Wiktionary tables demonstration]] Caveats: [[f:Wikifunctions:Embedded function calls]] [[-গুলি]] =p.all( mw.getCurrentFrame():newChild{ title="Module: আভিধানিক উপাত্ত", args={"L143"} } ) {{লে|L1422918}} {{#invoke:আভিধানিক উপাত্ত/sandbox|all|L34813}} {{#function:Z28602|L300026|}} {{#function:Z27861|<div style="text-align: center;">Test</div>}} {{#function:Z28602|L1425972|Z1011}} {{#function:Z28602|L14259|Z1011}} {{#function:Z30837|/ɡolakaɾ/}} {{#function:Z33837|L511-S1}} oweslzg7pevuj2qq1x0ywugb0ys4yuh مالك 0 72444 508944 349782 2026-05-17T19:33:02Z Sabah Azman Nahean 12022 508944 wikitext text/x-wiki {{আরও দেখুন|مالک}} =={{ভাষা|ar}}== ===ব্যুৎপত্তি=== {{ar-active participle}} of {{m|ar|مَلَكَ||to [[own]]}}, from the root {{ar-root|م|ل|ك}}. ===উচ্চারণ=== * {{ar-IPA|مَالِك}} * {{অডিও|ar|Ar-مالك.ogg|অডিও}} ===বিশেষণ=== {{ar-adj|مَالِك|f=مَالِكَة|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك|fpl=مَالِكَات|el=أَمْلَك}} # [[owning]], [[possessing]], [[holding]] ====Declension==== {{ar-decl-adj|مَالِك|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك}} ===বিশেষ্য=== {{ar-noun|مَالِك|m|f=مَالِكَة|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك}} # [[owner]] ====Declension==== {{ar-decl-gendered-noun|مَالِك|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك}} ====Hypernyms==== * {{l|ar|صَاحِب}} ====উদ্ভূত শব্দ==== * {{l|ar|مَالِكِيَّة}} ====উত্তরসূরি==== * {{উত্তরসূরী|az|malik|bor=1}} * {{উত্তরসূরী|ota|مالك|tr=malik|bor=1}} ** {{উত্তরসূরী|tr|malik}} * {{desctree|fa|مالک|bor=1}} ===নামবাচক বিশেষ্য=== {{ar-proper noun|مَالِك|m}} # আরবি পুরুষ প্রদত্ত নাম, [[মালিক]] ====শব্দরূপ==== {{ar-decl-noun|مَالِكٌ|state=ind-def}} ====উত্তরসূরি==== * {{উত্তরসূরী|az|Malik|bor=1}} * {{উত্তরসূরী|tr|Malik|bor=1}} ===তথ্যসূত্র=== * {{R:ar:Wehr-4|ملك}} 4lpuw04j5cooqj9auzhd5yict0fsa83 508945 508944 2026-05-17T19:33:50Z Sabah Azman Nahean 12022 508945 wikitext text/x-wiki {{আরও দেখুন|مالک}} =={{ভাষা|ar}}== ===ব্যুৎপত্তি=== {{ar-active participle}} of {{m|ar|مَلَكَ||to [[own]]}}, from the root {{ar-root|م|ل|ك}}. ===উচ্চারণ=== * {{ar-IPA|مَالِك}} * {{অডিও|ar|Ar-مالك.ogg|অডিও}} ===বিশেষণ=== {{ar-adj|مَالِك|f=مَالِكَة|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك|fpl=مَالِكَات|el=أَمْلَك}} # [[owning]], [[possessing]], [[holding]] ====Declension==== {{ar-decl-adj|مَالِك|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك}} ===বিশেষ্য=== {{ar-noun|مَالِك|m|f=مَالِكَة|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك}} # [[owner]] ====Declension==== {{ar-decl-gendered-noun|مَالِك|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك}} ====Hypernyms==== * {{l|ar|صَاحِب}} ====উদ্ভূত শব্দ==== * {{l|ar|مَالِكِيَّة}} ====উত্তরসূরি==== * {{উত্তরসূরী|az|malik|bor=1}} * {{উত্তরসূরী|ota|مالك|tr=malik|bor=1}} ** {{উত্তরসূরী|tr|malik}} * {{desctree|fa|مالک|bor=1}} ===নামবাচক বিশেষ্য=== {{ar-proper noun|مَالِك|m}} # আরবি পুরুষ প্রদত্ত নাম, [[মালিক]] ====শব্দরূপ==== {| class="wikitable" |+Declension of noun مَالِك (mālik) ! rowspan="2" |singular ! colspan="3" |basic singular triptote |- !indefinite !definite !construct |- !informal |— |مَالِك mālik |— |- !nominative |— |مَالِكٌ mālikun |— |- !accusative |— |مَالِكًا mālikan |— |- !genitive |— |مَالِكٍ mālikin |— |} ====উত্তরসূরি==== * {{উত্তরসূরী|az|Malik|bor=1}} * {{উত্তরসূরী|tr|Malik|bor=1}} ===তথ্যসূত্র=== * {{R:ar:Wehr-4|ملك}} 521qs079m45xrdrio7jfspoqmq5q9q6 508946 508945 2026-05-17T19:34:04Z Sabah Azman Nahean 12022 508946 wikitext text/x-wiki {{আরও দেখুন|مالک}} =={{ভাষা|ar}}== ===ব্যুৎপত্তি=== {{ar-active participle}} of {{m|ar|مَلَكَ||to [[own]]}}, from the root {{ar-root|م|ل|ك}}. ===উচ্চারণ=== * {{ar-IPA|مَالِك}} * {{অডিও|ar|Ar-مالك.ogg|অডিও}} ===বিশেষণ=== {{ar-adj|مَالِك|f=مَالِكَة|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك|fpl=مَالِكَات|el=أَمْلَك}} # [[owning]], [[possessing]], [[holding]] ====Declension==== {{ar-decl-adj|مَالِك|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك}} ===বিশেষ্য=== {{ar-noun|مَالِك|m|f=مَالِكَة|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك}} # [[owner]] ====Declension==== {{ar-decl-gendered-noun|مَالِك|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك}} ====Hypernyms==== * {{l|ar|صَاحِب}} ====উদ্ভূত শব্দ==== * {{l|ar|مَالِكِيَّة}} ====উত্তরসূরি==== * {{উত্তরসূরী|az|malik|bor=1}} * {{উত্তরসূরী|ota|مالك|tr=malik|bor=1}} ** {{উত্তরসূরী|tr|malik}} * {{desctree|fa|مالک|bor=1}} ===নামবাচক বিশেষ্য=== مَالِك • (mālik) ''<abbr>m</abbr>'' # আরবি পুরুষ প্রদত্ত নাম, [[মালিক]] ====শব্দরূপ==== {| class="wikitable" |+Declension of noun مَالِك (mālik) ! rowspan="2" |singular ! colspan="3" |basic singular triptote |- !indefinite !definite !construct |- !informal |— |مَالِك mālik |— |- !nominative |— |مَالِكٌ mālikun |— |- !accusative |— |مَالِكًا mālikan |— |- !genitive |— |مَالِكٍ mālikin |— |} ====উত্তরসূরি==== * {{উত্তরসূরী|az|Malik|bor=1}} * {{উত্তরসূরী|tr|Malik|bor=1}} ===তথ্যসূত্র=== * {{R:ar:Wehr-4|ملك}} swxke5fto7sa5hlnvz10wrlzykatjeq 508947 508946 2026-05-17T19:45:51Z Sabah Azman Nahean 12022 508947 wikitext text/x-wiki {{আরও দেখুন|مالک}} =={{ভাষা|ar}}== ===ব্যুৎপত্তি=== {{ar-active participle}} of {{m|ar|مَلَكَ||to [[own]]}}, from the root {{ar-root|م|ل|ك}}. ===উচ্চারণ=== * {{ar-IPA|مَالِك}} * {{অডিও|ar|Ar-مالك.ogg|অডিও}} ===বিশেষণ=== مَالِك • (mālik) (''স্ত্রীলিঙ্গ'' {{l|ar|مَالِكَة}}, ''পুংলিঙ্গ বহুবচন'' {{l|ar|مَالِكُون}} ''বা'' {{l|ar|مُلَّاك }} ''বা'' {{l|ar|مُلَّك}}, ''স্ত্রীলিঙ্গ বহুবচন'' {{l|ar|مَالِكَات}}, ''অতিশায়ক'' {{l|ar|أَمْلَك}}) # [[অধিকারী]], [[মালিকানাধীন]], or [[দখলকারী]] ====শব্দরূপ==== {| class="wikitable" |+Declension of adjective مَالِك (mālik) ! rowspan="3" |একবচন ! colspan="2" |পুংলিঙ্গ ! colspan="2" |স্ত্রীলিঙ্গ |- ! colspan="2" |ভিত্রিমূলক একবচন ট্রিপটোট ! colspan="2" |ـَة (''-a'')-এ একবচন ট্রিপটোট |- !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক |- !অনানুষ্ঠানিক |مَالِك mālik |الْمَالِك al-mālik |مَالِكَة mālika |الْمَالِكَة al-mālika |- !কর্তৃকারক |مَالِكٌ mālikun |الْمَالِكُ al-māliku |مَالِكَةٌ mālikatun |الْمَالِكَةُ al-mālikatu |- !কর্মকারক |مَالِكًا mālikan |الْمَالِكَ al-mālika |مَالِكَةً mālikatan |الْمَالِكَةَ al-mālikata |- !সম্বন্ধ কারক |مَالِكٍ mālikin |الْمَالِكِ al-māliki |مَالِكَةٍ mālikatin |الْمَالِكَةِ al-mālikati |- ! rowspan="2" |দ্বিবচন ! colspan="2" |পুংলিঙ্গ ! colspan="2" |স্ত্রীলিঙ্গ |- !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক |- !অনানুষ্ঠানিক |مَالِكَيْن mālikayn |الْمَالِكَيْن al-mālikayn |مَالِكَتَيْن mālikatayn |الْمَالِكَتَيْن al-mālikatayn |- !কর্তৃকারক |مَالِكَانِ mālikāni |الْمَالِكَانِ al-mālikāni |مَالِكَتَانِ mālikatāni |الْمَالِكَتَانِ al-mālikatāni |- !কর্মকারক |مَالِكَيْنِ mālikayni |الْمَالِكَيْنِ al-mālikayni |مَالِكَتَيْنِ mālikatayni |الْمَالِكَتَيْنِ al-mālikatayni |- !সম্বন্ধকারক |مَالِكَيْنِ mālikayni |الْمَالِكَيْنِ al-mālikayni |مَالِكَتَيْنِ mālikatayni |الْمَالِكَتَيْنِ al-mālikatayni |- ! rowspan="3" |বহুবচন ! colspan="2" |পুংলিঙ্গ ! colspan="2" |স্ত্রীলিঙ্গ |- ! colspan="2" |sound masculine plural‎; basic broken plural triptote ! colspan="2" |sound feminine plural |- !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক |- !অনানুষ্ঠানিক |مَالِكِين‎; مُلَّاك‎; مُلَّك mālikīn‎; mullāk‎; mullak |الْمَالِكِين‎; الْمُلَّاك‎; الْمُلَّك al-mālikīn‎; al-mullāk‎; al-mullak |مَالِكَات mālikāt |الْمَالِكَات al-mālikāt |- !nominative |مَالِكُونَ‎; مُلَّاكٌ‎; مُلَّكٌ mālikūna‎; mullākun‎; mullakun |الْمَالِكُونَ‎; الْمُلَّاكُ‎; الْمُلَّكُ al-mālikūna‎; al-mullāku‎; al-mullaku |مَالِكَاتٌ mālikātun |الْمَالِكَاتُ al-mālikātu |- !accusative |مَالِكِينَ‎; مُلَّاكًا‎; مُلَّكًا mālikīna‎; mullākan‎; mullakan |الْمَالِكِينَ‎; الْمُلَّاكَ‎; الْمُلَّكَ al-mālikīna‎; al-mullāka‎; al-mullaka |مَالِكَاتٍ mālikātin |الْمَالِكَاتِ al-mālikāti |- !genitive |مَالِكِينَ‎; مُلَّاكٍ‎; مُلَّكٍ mālikīna‎; mullākin‎; mullakin |الْمَالِكِينَ‎; الْمُلَّاكِ‎; الْمُلَّكِ al-mālikīna‎; al-mullāki‎; al-mullaki |مَالِكَاتٍ mālikātin |الْمَالِكَاتِ al-mālikāti |} ===বিশেষ্য=== {{ar-noun|مَالِك|m|f=مَالِكَة|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك}} # [[owner]] ====Declension==== {{ar-decl-gendered-noun|مَالِك|pl=مَالِكُون|pl2=مُلَّاك|pl3=مُلَّك}} ====Hypernyms==== * {{l|ar|صَاحِب}} ====উদ্ভূত শব্দ==== * {{l|ar|مَالِكِيَّة}} ====উত্তরসূরি==== * {{উত্তরসূরী|az|malik|bor=1}} * {{উত্তরসূরী|ota|مالك|tr=malik|bor=1}} ** {{উত্তরসূরী|tr|malik}} * {{desctree|fa|مالک|bor=1}} ===নামবাচক বিশেষ্য=== مَالِك • (mālik) ''<abbr>m</abbr>'' # আরবি পুরুষ প্রদত্ত নাম, [[মালিক]] ====শব্দরূপ==== {| class="wikitable" |+Declension of noun مَالِك (mālik) ! rowspan="2" |singular ! colspan="3" |basic singular triptote |- !indefinite !definite !construct |- !informal |— |مَالِك mālik |— |- !nominative |— |مَالِكٌ mālikun |— |- !accusative |— |مَالِكًا mālikan |— |- !genitive |— |مَالِكٍ mālikin |— |} ====উত্তরসূরি==== * {{উত্তরসূরী|az|Malik|bor=1}} * {{উত্তরসূরী|tr|Malik|bor=1}} ===তথ্যসূত্র=== * {{R:ar:Wehr-4|ملك}} tc7zdch7t5n9zc2uhrh3xfys4x2zsfx 508948 508947 2026-05-17T19:48:21Z Sabah Azman Nahean 12022 508948 wikitext text/x-wiki {{আরও দেখুন|مالک}} =={{ভাষা|ar}}== ===ব্যুৎপত্তি=== {{ar-active participle}} of {{m|ar|مَلَكَ||to [[own]]}}, from the root {{ar-root|م|ل|ك}}. ===উচ্চারণ=== * {{ar-IPA|مَالِك}} * {{অডিও|ar|Ar-مالك.ogg|অডিও}} ===বিশেষণ=== مَالِك • (mālik) (''স্ত্রীলিঙ্গ'' {{l|ar|مَالِكَة}}, ''পুংলিঙ্গ বহুবচন'' {{l|ar|مَالِكُون}} ''বা'' {{l|ar|مُلَّاك }} ''বা'' {{l|ar|مُلَّك}}, ''স্ত্রীলিঙ্গ বহুবচন'' {{l|ar|مَالِكَات}}, ''অতিশায়ক'' {{l|ar|أَمْلَك}}) # [[অধিকারী]], [[মালিকানাধীন]], or [[দখলকারী]] ====শব্দরূপ==== {| class="wikitable" |+Declension of adjective مَالِك (mālik) ! rowspan="3" |একবচন ! colspan="2" |পুংলিঙ্গ ! colspan="2" |স্ত্রীলিঙ্গ |- ! colspan="2" |ভিত্রিমূলক একবচন ট্রিপটোট ! colspan="2" |ـَة (''-a'')-এ একবচন ট্রিপটোট |- !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক |- !অনানুষ্ঠানিক |مَالِك mālik |الْمَالِك al-mālik |مَالِكَة mālika |الْمَالِكَة al-mālika |- !কর্তৃকারক |مَالِكٌ mālikun |الْمَالِكُ al-māliku |مَالِكَةٌ mālikatun |الْمَالِكَةُ al-mālikatu |- !কর্মকারক |مَالِكًا mālikan |الْمَالِكَ al-mālika |مَالِكَةً mālikatan |الْمَالِكَةَ al-mālikata |- !সম্বন্ধ কারক |مَالِكٍ mālikin |الْمَالِكِ al-māliki |مَالِكَةٍ mālikatin |الْمَالِكَةِ al-mālikati |- ! rowspan="2" |দ্বিবচন ! colspan="2" |পুংলিঙ্গ ! colspan="2" |স্ত্রীলিঙ্গ |- !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক |- !অনানুষ্ঠানিক |مَالِكَيْن mālikayn |الْمَالِكَيْن al-mālikayn |مَالِكَتَيْن mālikatayn |الْمَالِكَتَيْن al-mālikatayn |- !কর্তৃকারক |مَالِكَانِ mālikāni |الْمَالِكَانِ al-mālikāni |مَالِكَتَانِ mālikatāni |الْمَالِكَتَانِ al-mālikatāni |- !কর্মকারক |مَالِكَيْنِ mālikayni |الْمَالِكَيْنِ al-mālikayni |مَالِكَتَيْنِ mālikatayni |الْمَالِكَتَيْنِ al-mālikatayni |- !সম্বন্ধকারক |مَالِكَيْنِ mālikayni |الْمَالِكَيْنِ al-mālikayni |مَالِكَتَيْنِ mālikatayni |الْمَالِكَتَيْنِ al-mālikatayni |- ! rowspan="3" |বহুবচন ! colspan="2" |পুংলিঙ্গ ! colspan="2" |স্ত্রীলিঙ্গ |- ! colspan="2" |sound masculine plural‎; basic broken plural triptote ! colspan="2" |sound feminine plural |- !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক !অনির্দিষ্টতাবাচক !নির্দিষ্টতাবাচক |- !অনানুষ্ঠানিক |مَالِكِين‎; مُلَّاك‎; مُلَّك mālikīn‎; mullāk‎; mullak |الْمَالِكِين‎; الْمُلَّاك‎; الْمُلَّك al-mālikīn‎; al-mullāk‎; al-mullak |مَالِكَات mālikāt |الْمَالِكَات al-mālikāt |- !nominative |مَالِكُونَ‎; مُلَّاكٌ‎; مُلَّكٌ mālikūna‎; mullākun‎; mullakun |الْمَالِكُونَ‎; الْمُلَّاكُ‎; الْمُلَّكُ al-mālikūna‎; al-mullāku‎; al-mullaku |مَالِكَاتٌ mālikātun |الْمَالِكَاتُ al-mālikātu |- !accusative |مَالِكِينَ‎; مُلَّاكًا‎; مُلَّكًا mālikīna‎; mullākan‎; mullakan |الْمَالِكِينَ‎; الْمُلَّاكَ‎; الْمُلَّكَ al-mālikīna‎; al-mullāka‎; al-mullaka |مَالِكَاتٍ mālikātin |الْمَالِكَاتِ al-mālikāti |- !genitive |مَالِكِينَ‎; مُلَّاكٍ‎; مُلَّكٍ mālikīna‎; mullākin‎; mullakin |الْمَالِكِينَ‎; الْمُلَّاكِ‎; الْمُلَّكِ al-mālikīna‎; al-mullāki‎; al-mullaki |مَالِكَاتٍ mālikātin |الْمَالِكَاتِ al-mālikāti |} ===বিশেষ্য=== مَالِك • (mālik) ''<abbr>m</abbr>'' (''plural'' مَالِكُون (mālikūn) ''or'' مُلَّاك (mullāk) ''or'' مُلَّك (mullak), ''feminine'' مَالِكَة (mālika)) # [[owner]] ====Declension==== {| class="wikitable" |+Declension of noun مَالِك (mālik) ! rowspan="3" |singular ! colspan="3" |masculine ! colspan="3" |feminine |- ! colspan="3" |basic singular triptote ! colspan="3" |singular triptote in ـَة (''-a'') |- !indefinite !definite !construct !indefinite !definite !construct |- !informal |مَالِك mālik |الْمَالِك al-mālik |مَالِك mālik |مَالِكَة mālika |الْمَالِكَة al-mālika |مَالِكَة mālikat |- !nominative |مَالِكٌ mālikun |الْمَالِكُ al-māliku |مَالِكُ māliku |مَالِكَةٌ mālikatun |الْمَالِكَةُ al-mālikatu |مَالِكَةُ mālikatu |- !accusative |مَالِكًا mālikan |الْمَالِكَ al-mālika |مَالِكَ mālika |مَالِكَةً mālikatan |الْمَالِكَةَ al-mālikata |مَالِكَةَ mālikata |- !genitive |مَالِكٍ mālikin |الْمَالِكِ al-māliki |مَالِكِ māliki |مَالِكَةٍ mālikatin |الْمَالِكَةِ al-mālikati |مَالِكَةِ mālikati |- ! rowspan="2" |dual ! colspan="3" |masculine ! colspan="3" |feminine |- !indefinite !definite !construct !indefinite !definite !construct |- !informal |مَالِكَيْن mālikayn |الْمَالِكَيْن al-mālikayn |مَالِكَيْ mālikay |مَالِكَتَيْن mālikatayn |الْمَالِكَتَيْن al-mālikatayn |مَالِكَتَيْ mālikatay |- !nominative |مَالِكَانِ mālikāni |الْمَالِكَانِ al-mālikāni |مَالِكَا mālikā |مَالِكَتَانِ mālikatāni |الْمَالِكَتَانِ al-mālikatāni |مَالِكَتَا mālikatā |- !accusative |مَالِكَيْنِ mālikayni |الْمَالِكَيْنِ al-mālikayni |مَالِكَيْ mālikay |مَالِكَتَيْنِ mālikatayni |الْمَالِكَتَيْنِ al-mālikatayni |مَالِكَتَيْ mālikatay |- !genitive |مَالِكَيْنِ mālikayni |الْمَالِكَيْنِ al-mālikayni |مَالِكَيْ mālikay |مَالِكَتَيْنِ mālikatayni |الْمَالِكَتَيْنِ al-mālikatayni |مَالِكَتَيْ mālikatay |- ! rowspan="3" |plural ! colspan="3" |masculine ! colspan="3" |feminine |- ! colspan="3" |sound masculine plural‎; basic broken plural triptote ! colspan="3" |sound feminine plural |- !indefinite !definite !construct !indefinite !definite !construct |- !informal |مَالِكِين‎; مُلَّاك‎; مُلَّك mālikīn‎; mullāk‎; mullak |الْمَالِكِين‎; الْمُلَّاك‎; الْمُلَّك al-mālikīn‎; al-mullāk‎; al-mullak |مَالِكِي‎; مُلَّاك‎; مُلَّك mālikī‎; mullāk‎; mullak |مَالِكَات mālikāt |الْمَالِكَات al-mālikāt |مَالِكَات mālikāt |- !nominative |مَالِكُونَ‎; مُلَّاكٌ‎; مُلَّكٌ mālikūna‎; mullākun‎; mullakun |الْمَالِكُونَ‎; الْمُلَّاكُ‎; الْمُلَّكُ al-mālikūna‎; al-mullāku‎; al-mullaku |مَالِكُو‎; مُلَّاكُ‎; مُلَّكُ mālikū‎; mullāku‎; mullaku |مَالِكَاتٌ mālikātun |الْمَالِكَاتُ al-mālikātu |مَالِكَاتُ mālikātu |- !accusative |مَالِكِينَ‎; مُلَّاكًا‎; مُلَّكًا mālikīna‎; mullākan‎; mullakan |الْمَالِكِينَ‎; الْمُلَّاكَ‎; الْمُلَّكَ al-mālikīna‎; al-mullāka‎; al-mullaka |مَالِكِي‎; مُلَّاكَ‎; مُلَّكَ mālikī‎; mullāka‎; mullaka |مَالِكَاتٍ mālikātin |الْمَالِكَاتِ al-mālikāti |مَالِكَاتِ mālikāti |- !genitive |مَالِكِينَ‎; مُلَّاكٍ‎; مُلَّكٍ mālikīna‎; mullākin‎; mullakin |الْمَالِكِينَ‎; الْمُلَّاكِ‎; الْمُلَّكِ al-mālikīna‎; al-mullāki‎; al-mullaki |مَالِكِي‎; مُلَّاكِ‎; مُلَّكِ mālikī‎; mullāki‎; mullaki |مَالِكَاتٍ mālikātin |الْمَالِكَاتِ al-mālikāti |مَالِكَاتِ mālikāti |} ====Hypernyms==== * {{l|ar|صَاحِب}} ====উদ্ভূত শব্দ==== * {{l|ar|مَالِكِيَّة}} ====উত্তরসূরি==== * {{উত্তরসূরী|az|malik|bor=1}} * {{উত্তরসূরী|ota|مالك|tr=malik|bor=1}} ** {{উত্তরসূরী|tr|malik}} * {{desctree|fa|مالک|bor=1}} ===নামবাচক বিশেষ্য=== مَالِك • (mālik) ''<abbr>m</abbr>'' # আরবি পুরুষ প্রদত্ত নাম, [[মালিক]] ====শব্দরূপ==== {| class="wikitable" |+Declension of noun مَالِك (mālik) ! rowspan="2" |singular ! colspan="3" |basic singular triptote |- !indefinite !definite !construct |- !informal |— |مَالِك mālik |— |- !nominative |— |مَالِكٌ mālikun |— |- !accusative |— |مَالِكًا mālikan |— |- !genitive |— |مَالِكٍ mālikin |— |} ====উত্তরসূরি==== * {{উত্তরসূরী|az|Malik|bor=1}} * {{উত্তরসূরী|tr|Malik|bor=1}} ===তথ্যসূত্র=== * {{R:ar:Wehr-4|ملك}} awe00t98vetkbx6ms7rvdyc38hoflt4 প্রণিধানযোগ্য 0 102068 508952 485416 2026-05-18T10:13:53Z Sabah Azman Nahean 12022 /* বিশেষণ */ 508952 wikitext text/x-wiki == {{ভাষা|bn}} == === উচ্চারণ === * {{bn-IPA}} === বিশেষণ === {{bn-বিশেষণ|[[প্রণিধান]][[যোগ্য]]}} # [[মনোনিবেশ]] করলে বোঝা যায় এমন, মনোনিবেশের [[যোগ্য]]। 344qsimbsdezgus1p5g1lj8ivln8trh ব্যবহারকারী:Sabah Azman Nahean 2 147266 508949 508927 2026-05-17T23:48:06Z Sabah Azman Nahean 12022 508949 wikitext text/x-wiki <span align="centre"><big>'''আজ [[{{CURRENTDAYNAME}}]], {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} [[সাধারণ অব্দ]] ({{BENGALIDATE}}; {{#time:xmj xmF xmY}} [[হিজরি]])'''</big></span> {| class="wikitable" ! colspan="2" |<big>'''সাবাহ আজমান নাহিয়ান'''</big> |- | colspan="2" |— Wikipedian ♂ — |- !Name |<big>'''Sabah Azman Nahian'''</big> |- !জন্ম |[[জুন]] ০৬, ২০০৫ [[ঢাকা]], [[বাংলাদেশ]] |- ![[লিঙ্গ]] |[[পুরুষ]] |- ![[জাতীয়তা]] |[[বাংলাদেশী]] |- ![[দেশ]] |[[বাংলাদেশ]] |- ![[ভাষা]] | * L1: [[বাংলা]] * L2: [[ইংরেজি]] |- ![[জাতি]] |[[বাঙালি]] |- ![[নৃগোষ্ঠী]] |[[বাঙালি]] |- !Height |5'5" |- !হাত |[[ডানহাতি]] |- !রক্ত গ্রুপ |A<sup>+ve</sup> |- ! [[যৌন]] [[অভিমুখিতা]] |[[নিষ্কামী]] |- ![[ব্যক্তিত্ব]] [[ধরন]] |[[অন্তর্মুখী]] |- ! colspan="2" |[[পরিবার]] |- ![[বৈবাহিক]] [[অবস্থা]] |[[অবিবাহিত]] |- ! colspan="2" |[[শিক্ষা]] ও [[চাকরি]] |- !পেশা |ছাত্র |- !বিশ্ববিদ্যালয় |নর্থ সাউথ বিশ্ববিদ্যালয় |- ! colspan="2" |Hobbies, interests, and beliefs |- !শখ |বই পড়া, খবর পড়া |- !ধর্ম |[[ইসলাম]] |- !মাযহাব |[[অসাম্প্রদায়িক মুসলিম]] |- !আকিদা |[[মাতুরিদি]]-[[আশআরী]] (মিশ্র) |- !রাজনীতি |'''মতবাদ:''' বাংলাদেশী জাতীয়তাবাদ বাঙালি জাতীয়তাবাদ ডানপন্থী জনতুষ্টিবাদ '''অবস্থান:''' কেন্দ্র-ডান থেকে ডান |- ! colspan="2" |Interests |- | colspan="2" |Political spectrums, geopolitics, Cold War history, history of the Soviet Union, Eastern bloc, Indus Valley Civilization, Vedic India, Bangladeshi history, early Islamic history, comparative religions, Indian religions, history of religion, linguistics, orthography, phonetics and International Phonetic Alphabet |- ! colspan="2" |Contact info |- !Email |nsabahazman@yahoo.com |- !Twitter |<nowiki>https://x.com/sabah_azman?t=SrDAqQZ_8DHWxnakRISYiw&s=09</nowiki> |} ==ভুক্তি== #[[티라노사우루스]] #[[ティラノサウルス]] #[[霸王龙]] #[[暴龙]] #[[暴龍]] #[[tyrannosaur]] #[[tyrannosaurus]] #[[مكور]] #[[自暴自棄]] #[[粗暴]] #[[討議]] #[[討厭]] #[[James]] #[[Santiago]] #[[Santiago de Compostela]] #[[Alajuela]] #[[functional psychology]] #[[ক্রিয়ামূলক মনোবিজ্ঞান]] #[[செயல் சார் உளவியல்]] #[[நடவடிக்கை]] #[[פעולה]] #[[קטלה]] #[[Kugelman]] #[[censer]] #[[incense burner]] #[[താള്]] #[[താൾ]] #[[Colocasia esculenta]] #[[Araceae]] #[[new cocoyam]] #[[macabo]] #[[malanga]] #[[otoy]] #[[quequisque]] #[[tania]] #[[yautia]] #[[taro]] #[[pulaka]] #[[swamp taro]] #[[দক্ষিণ প্রশান্ত মহাসাগর]] #[[ஜமால்]] #[[அப்துல் நாசிர்]] #[[আব্দুন নাসির]] #[[ஜமாத்து]] #[[مثل]] #[[Abdunnasir]] #[[সম্প্রদান কারক]] #[[depreciation]] #[[poisto]] #[[折舊]] #[[Hokkien]] #[[國語羅馬字]] #[[গুওয়ু লোমাজি]] #[[Gwoyeu Romatzyh]] #[[বোধোদিত]] #[[Suryanarayana]] #[[सूर्यनारायण]] #[[সূর্যনারায়ণ]] #[[財富]] #[[ଶୂନ୍ୟ]] #[[excruciating]] #[[excruciation]] #[[excruciate]] #[[subjugation]] #[[subjugate]] #[[-yev]] #[[adaptability]] #[[coursework]] #[[darvoza]] #[[darvaza]] #[[Garagum]] #[[গারাগুম]] #[[কারাকুম]] #[[mutluluk]] #[[झञ्झा]] #[[abnormal psychology]] #[[অস্বাভাবিক মনোবিজ্ঞান]] #[[act psychology]] #[[antipsychology]] #[[armchair psychology]] #[[behavioral psychology]] #[[behaviorism]] #[[behavioural psychology]] #[[biological psychology]] #[[জৈবিক মনোবিজ্ঞান]] #[[biopsychology]] #[[chronopsychology]] #[[clinical psychology]] #[[cod psychology]] #[[cognitive psychology]] #[[content psychology]] #[[criminal psychology]] #[[crowd psychology]] #[[cyberpsychology]] #[[depth-psychology]] #[[depth psychology]] #[[developmental psychology]] #[[differential psychology]] #[[ecopsychology]] #[[ethnopsychology]] #[[evolutionary psychology]] #[[geropsychology]] #[[gestalt psychology]] #[[Gestalt psychology]] #[[格里尔斯]] #[[Grylls]] #[[গ্রিলস]] #[[मनोविज्ञान]] #[[認識論]] #[[সংজ্ঞানাত্মক মনোবিজ্ঞান]] #[[অপরাধ মনোবিজ্ঞান]] #[[চিকিৎসা মনোবিজ্ঞান]] #[[পার্থক্যমূলক মনোবিজ্ঞান]] #[[বিবর্তনমূলক মনোবিজ্ঞান]] #[[জাতিগত মনোবিজ্ঞান]] #[[Leverkusen]] #[[লেভারকুজেন]] #[[রাইনল্যান্ড]] #[[Rhineland]] #[[মনোরঞ্জিকা]] #[[औषधालय]] #[[ஆளுமைச் சிதைவு]] #[[dispensary]] #[[դիսպանսեր]] #[[ஆளுமை]] #[[சிதைவு]] #[[personality disorder]] #[[ভারতীয় প্রজাতন্ত্র]] #[[ব্যক্তিত্ব ব্যাধি]] #[[abracadabra]] #[[Abraxas]] #[[Abrasax]] #[[עַבְדָא כְּדַבְרָא]] #[[עבדא כדברא]] #[[עברא כדברא]] #[[মাম্বো জাম্বো]] #[[mumbo jumbo]] #[[mumbo jumbos]] #[[jargon]] #[[narcissistic personality disorder]] #[[আত্মরতিমূলক ব্যক্তিত্ব ব্যাধি]] #[[Rzeszutek]] #[[الزرادشتية]] #[[জরাথুস্ট্রবাদ]] #[[ζωροαστρισμός]] #[[पारसी धर्म]] #[[زرتشتی‌گری]] #[[مزدیسنا]] #[[Mazdean]] #[[Zoroastrian]] #[[aphrodisiac]] #[[licorice]] #[[विश्व]] #[[विश्वयुद्ध]] #[[حرب عالمية]] #[[world war]] #[[World War I]] #[[WWI]] #[[WW1]] #[[World War 1]] #[[World War One]] #[[metonym]] #[[چغندر]] #[[پاییز]] #[[فرش]] #[[فرمان]] #[[নিঃসঙ্কোচ]] #[[অসঙ্কুচিতমুখ]] #[[স্বপ্রণীত]] #[[সংকলন করা]] #[[শব্দৈশ্বর্য্য]] #[[अज्ञातपूर्वगृहागतव्यक्तिः]] #[[गृहागत]] #[[अज्ञात]] #[[अध्यात्म]] #[[आध्यात्मिकता]] #[[वैकुंठ]] #[[वैकुण्ठ]] #[[শব্দৈশ্বর্য]] #[[يكونوا]] #[[كون]] #[[بډایه]] #[[समग्र]] #[[holístico]] #[[شامل]] #[[holistic]] #[[holism]] #[[holísticos]] #[[ataxia]] #[[ataxy]] #[[feudalism]] #[[feudal]] #[[porch]] #[[pinnacle]] #[[إقطاعي]] #[[اعتلال]] #[[اعتل]] #[[psychopathy]] #[[encephalopathy]] #[[এনসেফালোপ্যাথি]] #[[cardiomyopathy]] #[[কার্ডিওমায়োপ্যাথি]] #[[radiculopathy]] #[[রেডিকুলোপ্যাথি]] #[[अवधारण]] #[[समीचीननिर्णय]] #[[қарор]] #[[قرار]] #[[laýyk]] #[[لائق]] #[[لایق]] #[[karar]] #[[шешім]] #[[penderfyniad]] #[[تصمیم]] #[[تصميم]] #[[firmness]] #[[perseverance]] #[[resoluteness]] #[[décision]] #[[raisonnable]] #[[decisión]] #[[razonable]] #[[decisão]] #[[razoável]] #[[توكل]] #[[ثلاثون]] #[[أوروبا]] #[[أوربا]] #[[أوربة]] #[[أوروبة]] #[[Europe]] #[[European Union]] #[[很好很強大]] #[[درجة الحرارة]] #[[درجة]] #[[فترة]] #[[interregnum]] #[[الدولة الإسلامية في العراق والشام]] #[[الشام]] #[[بلاد الشام]] #[[مشرق]] #[[الشرق الأوسط]] #[[فرنسي]] #[[البحر الأبيض المتوسط]] #[[Batista]] #[[retard]] #[[我們]] #[[بداية]] #[[আগর উদ্ভিদ]] #[[আগর কাঠ]] #[[আগর কাষ্ঠ]] #[[অ্যালোসকাঠ]] #[[ঈগলকাঠ]] #[[ঘরুকাঠ]] #[[ঈশ্বরের কাঠ]] #[[يلنجوج]] #[[aloeswood]] #[[agalloch]] #[[heartwood]] #[[সার কাষ্ঠ]] #[[sap wood]] #[[يلنجج]] #[[يلنجيج]] #[[ألنجوج]] #[[অসার কাঠ]] #[[邊材]] #[[地中海]] #[[コルカタ]] #[[カルカッタ]] #[[داكا]] #[[دكا]] #[[ضلع تانغايل]] #[[தங்காயில் மாவட்டம்]] #[[ददाति]] #[[quasar]] #[[আপাত-নক্ষত্র]] #[[ক্যালিফোর্নিয়া]] #[[California]] #[[ক্যালিফোর্নিয়াবাসী]] #[[عشوائي]] #[[عشوائية]] #[[industrial-organizational psychology]] #[[শিল্প-সাংগঠনিক মনোবিজ্ঞান]] #[[Aristotle]] #[[অ্যারিস্টটল]] #[[এরিস্টটল]] #[[Socrates]] #[[সক্রেটিস]] #[[Pythagoras]] #[[পিথাগোরাস]] #[[Plato]] #[[প্লেটো]] #[[Archimedes]] #[[আর্কিমিডিস]] #[[أرسطوطاليس]] #[[أرسطو]] #[[سوكراتس]] #[[سقراط]] #[[فيثاغورس]] #[[أفلاطون]] #[[أرخميدس]] #[[أرشميدس]] #[[Arkimedo]] #[[निद्रा]] #[[বাতিস্তা]] #[[Zaldívar]] #[[تفكر]] #[[contemplate]] #[[Zaldibar]] #[[coal mine]] #[[coalmine]] #[[kulmine]] #[[反対側では]] #[[microcosm]] #[[obscure]] #[[manifold]] #[[prognostication]] #[[elucidation]] #[[wrought]] #[[soilleireachadh]] #[[מוגבל]] #[[Donald]] #[[Donald Trumpian]] #[[Trumpian]] #[[Donaldism]] #[[Trumpish]] #[[Donald Trumpish]] #[[Trumpesque]] #[[Donald Trumpesque]] #[[ট্রাম্পবাদী]] #[[Trumper]] #[[Trumpista]] #[[Trumpite]] #[[MAGAt]] #[[MAGAT]] #[[magat]] #[[Reaganaut]] #[[Reaganite]] #[[Trumpanzee]] #[[Trumpster]] #[[Trumpism]] #[[ტრამპიზმი]] #[[トランピズム]] #[[anti-Trumpism]] #[[fervent]] #[[chauvinistic]] #[[متوجه]] #[[Trumpster diving]] #[[Trumpster fire]] #[[Trumper]] #[[Trumpet]] #[[Trumptard]] #[[عدوان]] #[[क्रमात्मचरित्रोन्नयन]] #[[ক্রমাত্মচরিত্রোন্নয়ন]] #[[dexlansoprazole]] #[[ডেক্সলেনসোপ্রাজোল]] #[[go to hell]] #[[Анголец]] #[[Анголка]] #[[avarice]] #[[avaricious]] #[[codicia]] #[[psychophysics]] #[[মনোসংবেদনা]] #[[Psychophysik]] #[[right-wing populism]] #[[شعبوية يمينية]] #[[ডানপন্থী জনতুষ্টিবাদ]] #[[Rechtspopulismus]] #[[العراق]] #[[دولة]] #[[دولت]] #[[بنجلاديش]] #[[بنغلاديش]] #[[God-fearing]] #[[pious]] # [[bayram]] # [[atheism]] #[[but]] #[[adverb]] #[[Mayers]] #[[bombardment]] #[[bombardier]] #[[আর্টিলারি]] # [[aphelion]] # [[یولجی]] #[[याति]] #[[আবেগসূচক পদ]] #[[আবেগসূচক]] #[[mathematician]] #[[गणितज्ञ]] #[[గణితశాస్త్రజ్ఞుడు]] #[[கணிதயியலாளர்]] #[[கணிதர்]] #[[கணிஞர்]] #[[கணியாளர்]] #[[ഗണിതശാസ്‌ത്രജ്ഞൻ]] #[[數學家]] #[[हृदयद्वार]] #[[गणितविद्]] #[[गणितविद्याज्ञः]] #[[संख्यापरिमाणविद्याज्ञः]] #[[गणितशास्त्रज्ञः]] #[[गणित]] #[[क्षेत्रपरिमापकविद्यावान्]] #[[गणितज्ञः]] #[[रेखावीजादि-गणितविद्]] #[[number cruncher]] #[[গণিতবিদ]] #[[number-cruncher]] #[[whetstone]] #[[honestone]] #[[classwork]] #[[instinct]] #[[علم النفس الصناعي]] #[[forfeit]] #[[envisager]] #[[envisage]] #[[forfait]] #[[fólder]] #[[ফোল্ডার]] #[[frequency distribution]] #[[গণসংখ্যা নিবেশন]] #[[chauvinism]] #[[वातावरण]] #[[द्विमातृपितृकुटुम्ब]] #[[कुटुम्ब]] #[[কুটুম্ব]] #[[darstellen]] #[[وضح]] #[[valetudinis]] #[[valētūdō]] #[[sickle cell anemia]] #[[difficultas]] #[[diuturnus]] #[[maniraptoran]] #[[ম্যানিরাপ্টোরান]] #[[theropod]] #[[therapod]] #[[থেরোপোড]] #[[respectivo]] #[[intricate]] #[[law of diminishing marginal utility]] #[[প্রান্তিক উপযোগ]] #[[marginal utility]] #[[marginal]] #[[redundant]] #[[paramount]] #[[lord paramount]] #[[overlord]] #[[präferieren]] #[[liege lord]] #[[当]] (অসম্পূর্ণ) #[[অনুষ্টুভ]] #[[हृदय]] #[[حتحور]] #[[হাথোর]] #[[Hathor]] #[[ماركوس]] #[[ပြည်ထောင်စုမြန်မာနိုင်ငံတော်]] #[[République de l’Union du Myanmar]] #[[Republic of the Union of Myanmar]] #[[ပြည်ထောင်စု သမ္မတ မြန်မာနိုင်ငံတော်]] #[[بحر إيجة]] #[[بحر]] #[[زاد]] #[[ڤلاديمير]] #[[embezzlement]] #[[اختلاس]] #[[formální]] #[[Gaza Strip]] #[[Gaza City]] #[[Wadi Gaza]] #[[قطاع غزة]] #[[গাজা ভূখণ্ড]] #[[franja de Gaza]] #[[Gaza]] #[[Levant]] #[[লেভান্ত]] #[[শাম]] #[[এক গোয়ালের গরু]] #[[এক গাঙের চিল]] #[[একদল]] #[[ذیلی ضلع]] #[[subdistrict]] #[[жемқорлық]] #[[gluttony]] #[[বহিষ্কারাদেশ]] #[[Kasba Upazila]] #[[قصبہ ذیلی ضلع]] #[[রৈখিক বীজগণিত]] #[[কুটিলতাবর্জিত]] #[[pretentious]] #[[ambitious]] # [[grandiose]] # [[pompous]] # [[πομπή]] # [[orotund]] # [[brassy]] # [[rococo]] # [[artsy-fartsy]] #[[претенциозный]] #[[arty-farty]] #[[قرديات الشكل]] #[[simian]] #[[apely]] #[[apish]] #[[monkeyish]] #[[Simiiformes]] #[[anthropoid]] #[[կապկային]] #[[বানরসদৃশ]] #[[Homo heidelbergensis]] #[[إنسان هايدلبيرغ]] #[[Heidelberg man]] #[[মধ্য প্লাইস্টোসিন]] #[[комплект]] #[[overgeneralization]] #[[gravitational]] #[[Schwarzschild]] #[[hippocampus]] #[[impromptu]] #[[അലി അറ്-റിദാ]] #[[আলী আর-রিদা]] #[[আলীরেজা]] #[[Ali al-Rida]] #[[Alireza]] #[[علي الرضا]] #[[ফিনিক্স]] #[[ফিনিক্স পাখি]] #[[লিংকনশায়ার]] #[[লিঙ্কনশায়ার]] #[[Phoenix]] #[[phoenix]] #[[Lincolneschire]] #[[Lincolnshire]] #[[South Yorkshire]] #[[সাউথ ইয়র্কশায়ার]] #[[দক্ষিণ ইয়র্কশায়ার]] #[[East Riding of Yorkshire]] #[[ইস্ট রাইডিং অফ ইয়র্কশায়ার]] #[[North Yorkshire]] #[[নর্থ ইয়র্কশায়ার]] #[[Northamptonshire]] #[[নর্থহ্যাম্পটনশায়ার]] #[[Cambridgeshire]] #[[Norfolk]] #[[নরফোক]] #[[Nottinghamshire]] #[[নটিংহ্যামশায়ার]] #[[Leicestershire]] #[[লেইসেস্টারশায়ার]] #[[Rutland]] #[[রাটল্যান্ড]] #[[North Sea]] #[[Warwickshire]] #[[ওয়ারউইকশায়ার]] #[[উত্তৰ সাগৰ]] #[[উত্তর সাগর]] #[[clout]] #[[Északi-tenger]] #[[तस्मा]] #[[তস্মা]] #[[নৃসিংহপ্রসাদ]] #[[dative case]] #[[तुच्छयेनातृपिहितम्]] #[[ווריקשייר]] #[[वरिकशायर]] #[[ওয়ারিকশায়ার]] #[[اسفراین]] #[[এসফারায়েন]] #[[কালিঘাটের মানুষ কালীদর্শন করে না]] #[[you don’t know what you’ve got till it’s gone]] #[[ৰাজাজ্ঞা]] #[[অন্তর্জ্বালা]] #[[দূরাকাঙ্ক্ষা]] #[[প্রত্যূষ]] #[[ব্যূহ]] #[[এতদ্ব্যতীত]] #[[টীকাটিপ্পনী]] #[[নির্দ্বিধা]] #[[एतदतिरिक्तः]] #[[خراسان شمالی]] #[[জায়নবাদ]] #[[জায়ন]] #[[জায়নবাদী]] #[[Zionist]] #[[Zionism]] #[[Zion]] #[[Sion]] #[[trimetazidine]] #[[dicycloverine]] #[[dicyclomine]] #[[metformin]] #[[linagliptin]] #[[Zionismus]] #[[metformina]] #[[antiischemic]] #[[ischemia]] #[[ராமச்சந்திர]] #[[சந்திரசேகர்]] #[[تشاندراسيخار]] #[[Mohan]] #[[ಮೋಹನ್]] #[[మోహన్]] #[[மோகன்]] #[[മോഹൻ]] #[[मोहन]] #[[contradiction]] #[[inconsistency]] #[[oxymoron]] #[[বিরূদ্ধযুক্তিপ্রদর্শক]] #[[Castilla]] #[[Yumaklı]] #[[yumaklaşmak]] #[[خضع]] #[[flathead catfish]] #[[گربه‌ماهی سرپخ]] #[[سمك السلور فلاتهيد]] #[[hayvan]] #[[hayvanat bahçesi]] #[[hayvanat]] #[[hayvanlar]] #[[Flachkopfwels]] #[[Gerardo]] #[[Fernández]] #[[費爾南德斯]] #[[چوارقورنه]] #[[Ranya District]] #[[Chwarqurna]] #[[قەزای ڕانیە]] #[[Iraqification]] #[[rana de zarzal]] #[[rana de cristal]] #[[সিয়োনবাদী]] #[[glass frog]] #[[Montevideo tree frog]] #[[Montevideo]] #[[মোন্তেভিদেও]] #[[Arequipa]] #[[Centrolenidae]] #[[holländisch]] #[[niederländisch]] #[[holandés]] #[[hollandais]] #[[néerlandais]] #[[holländische]] #[[இரண்டாம் வேற்றுமை]] #[[اتفاق]] #[[تسوية]] #[[مفيش]] #[[نبق]] #[[نبيذ]] #[[نبغ]] #[[خذل]] #[[Menschenrechtsverletzung]] #[[मानवाधिकार]] #[[मानव अधिकार]] #[[मानव]] #[[absolute right]] #[[civil right]] #[[fundamental right]] #[[natural right]] #[[neuroright]] #[[civil rights]] #[[human right]] #[[human rights]] #[[natural rights]] #[[cyberrights]] #[[neurotechnology]] #[[neurology]] #[[neuroscience]] #[[স্নায়ুতত্ত্ব]] #[[স্নায়ুবিদ্যা]] #[[স্নায়ুচিকিৎসাবিজ্ঞান]] #[[স্নায়ুবিজ্ঞান]] #[[পরিগণনামূলক স্নায়ুবিজ্ঞান]] #[[computational neuroscience]] #[[علوم اعصاب محاسباتی]] #[[arvutuslik neuroteadus]] #[[গাণিতিক স্নায়ুবিজ্ঞান]] #[[তাত্ত্বিক স্নায়ুবিজ্ঞান]] #[[computational neuroaesthetics]] #[[Menschenrechte]] #[[politisch]] #[[Iberian Peninsula]] #[[honor killing]] #[[honour killing]] #[[ദുരഭിമാനക്കൊല]] #[[সন্মান ৰক্ষাৰ্থে হত্যা]] #[[সম্মান রক্ষার্থে হত্যা]] #[[women's rights]] #[[নারী অধিকার]] #[[Sheffield]] #[[Phrygia]] #[[Nieuwpoort]] #[[উদ্যমশীলতা]] #[[مثابرة]] #[[persistence]] #[[ಪೈಲ್ವಾನ್]] #[[cephalosporin]] #[[senselessness]] #[[tax collector]] #[[𒃶𒍝𒁀𒊒]] #[[வரித் தண்டலர்]] #[[إشفى]] #[[Trichiurus lepturus]] #[[largehead hairtail]] #[[Bakh]] #[[بخ]] #[[বাখ]] #[[Taft County]] #[[شهرستان تفت]] #[[তাফত কাউন্টি]] #[[ইয়াজ্দ]] #[[ইয়াযদ প্রদেশ]] #[[ইয়াযদ]] #[[ইয়াজদ প্রদেশ]] #[[استان یزد]] #[[Kisangani]] #[[كيسانغاني]] #[[كيسانجانى]] #[[কিসাঙ্গানি]] #[[عشواء]] #[[शृङ्खल]] #[[शृङ्खला]] #[[Edinburgh]] #[[أيقن]] #[[هزأ]] #[[unquestionably]] #[[ألا]] #[[ذهب]] #[[صاعقه]] #[[صاعقة]] #[[برق]] #[[بےشک]] #[[بیشک]] #[[रत्नोल्लसत्कुण्डला]] #[[রত্নোল্লসৎকুণ্ডলা]] #[[طويل]] #[[كهف]] #[[többes szám]] #[[barlang]] #[[اتمسفر]] #[[اندروا]] #[[skirt suit]] #[[toplessness]] # [[beastelich]] # [[fondeábamos]] # [[imperfect tense]] # [[অপুরাঘটিত কাল]] # [[سياسة]] # [[নিশীথবনভ্রমণবিলাসিনী]] # [[ধন্বন্তরিভাণ্ডনিঃসৃত]] # [[বিষমোজ্জলাবিভাসিতলোচনপ্রান্তে]] # [[প্রফুল্লনীলোৎপলদলতুল্য]] # [[নীল পদ্ম]] # [[هواسپهر]] # [[گاز]] # [[گاز گرفتن]] # [[گاز گلخانه‌ای]] # [[گاز طبیعی]] #[[Babylon]] #[[বাবিল]] #[[ব্যাবিলন]] #[[inferiority complex]] #[[عقدة النقص]] #[[عقدة الدونية]] #[[عقده حقارت]] #[[शुतुरमुर्ग़]] #[[उष्ट्रपक्षी]] #[[شترمرغ]] #[[شتر]] #[[उष्ट्र]] #[[पक्षी]] #[[اشتر]] #[[آستر]] #[[Shahbagi]] #[[Hindutva]] #[[sarkari Muslim]] #[[libbu]] #[[librandu]] #[[raita]] #[[bhakt]] #[[Jaichand]] #[[BJP]] #[[rashtravadi]] #[[bhagwa]] #[[فصاحة]] #[[مهتر]] #[[مساحة]] #[[مناقشة]] #[[مناظرة]] #[[mesaha]] #[[münakaşa]] #[[munaqaşa]] #[[münazara]] #[[مساحه]] #[[tartışma]] #[[bahs]] #[[محاكمة]] #[[muhokama]] #[[munozara]] #[[مذاكرة]] #[[muzokara]] #[[tortishuv]] #[[müzakirə]] #[[مذاکره]] #[[tortishmoq]] #[[قومسيون]] #[[شلتة]] #[[باشمهندس]] #[[أجزة]] #[[أجزجي]] #[[أجزاخانة]] #[[بنش]] #[[প্রাথমিক চিকিৎসা বাক্স]] #[[بطاطس]] #[[فرجية]] #[[فراجه]] #[[كوزينة]] #[[فريڭو]] #[[سبنيول]] #[[إسباني]] #[[إسبانية]] #[[Hispanic]] #[[синтезатор]] #[[ಚಂಡಮಾರುತ]] #[[supermassive]] #[[புயல்]] #[[சூறாவளி]] #[[மாரி]] #[[வருஷம்]] #[[வெள்ளி]] #[[मारि]] #[[ಮಾರಿ]] #[[চামুণ্ডী]] #[[வருடம்]] #[[Ćamunda]] #[[Ćamundi]] #[[चामुण्डा]] #[[வெள்ளி]] #[[வெள்ளிக்கிழமை]] #[[வருத்து]] #[[কারণসূচক ক্রিয়া]] #[[alleluia]] #[[hallelujah]] #[[গীতসংহিতা]] #[[ഊഷ്മാവ്]] #[[ആക്രമണം]] #[[കൊടുങ്കാറ്റ്]] #[[typhoon]] #[[km/s]] #[[kph]] #[[Kilometerstein]] #[[kps]] #[[covetous]] #[[covet]] #[[অত্যুচ্চাকাঙ্ক্ষী]] #[[√কাঙ্ক্ষ্]] #[[आकाङ्क्षा]] #[[जिज्ञासा]] #[[তাপগতিবিজ্ঞান]] #[[বিশৃঙ্খলা-মাত্রা]] #[[এনট্রপি]] #[[ದಂಡುಪಾಳ್ಯ]] #[[ಕರ್ನಾಟಕ]] #[[ಜನತಾ]] #[[ಪಕ್ಷ]] #[[कर्णाटक]] #[[כד]] #[[נרד]] #[[עמבה]] #[[כרפס]] #[[אתרוג]] #[[הודו]] #[[סנסקריט]] #[[כוסברה]] #[[הקדוש ברוך הוא]] #[[عمبة]] #[[dupe]] #[[做法]] #[[မန္တလေး]] #[[ဧရာဝတီ]] #[[ဒါကာမြို့]] #[[ဒါကာ]] #[[დაკა]] #[[Дакка]] #[[কর্মকারক]] #[[করণকারক]] #[[অপাদান কারক]] #[[অধিকরণ কারক]] #[[সম্বন্ধ কারক]] #[[সম্বোধন কারক]] #[[राष्ट्रवादी]] #[[राष्ट्रवाद]] #[[রক্ষণশীলতাবাদ]] #[[গান্ধীবাদ]] #[[কর্তৃত্ববাদ]] #[[-তন্ত্র]] #[[চৌর্যতন্ত্র]] #[[yenilenme]] #[[renovación]] #[[পুনর্নবীকরণ]] #[[действительно]] #[[預期]] #[[quantum physics]] #[[ultracold]] #[[ultraconservative]] #[[ultracognitive]] #[[ultracontractivity]] #[[ultramodern]] #[[ultraconservatrice]] #[[কোয়ান্টাম পদার্থবিজ্ঞান]] #[[কোয়ান্টাম বলবিজ্ঞান]] #[[양자역학]] #[[量子力学]] #[[量子力學]] #[[meccanica quantistica]] #[[physique quantique]] #[[হাঁবিয়া]] #[[ট্যাহা]] #[[হাছুন]] #[[ঝাডা]] #[[صديق]] #[[садык]] #[[أولياء]] #[[ولي]] #[[اولیا]] #[[evliya]] #[[әулие]] #[[öwlüýä]] #[[avliyo]] #[[ಆಯುಧ]] #[[ಕಡೆಗೆ]] #[[आयुध]] #[[Sébastien]] #[[assiduity]] #[[assiduité]] #[[assiduitas]] #[[ಶತಪುಷ್ಪೆ]] #[[ಶವ]] #[[coffin]] #[[خندق]] #[[مازون]] #[[فيه-اردشير]] #[[جیرفت]] #[[Jiroft]] #[[جيروفت]] #[[Ciruft]] #[[Ctesiphon]] #[[تیسفون]] #[[榜葛剌]] #[[Mymensingh]] #[[আগরতলা]] #[[阿加爾塔拉]] #[[अगरतला]] #[[Aqartala]] #[[Agartala]] #[[hədis]] #[[حديث]] #[[वाच्]] #[[वचस्]] #[[उक्ति]] #[[وتن]] #[[वक्त्र]] #[[उक्त]] #[[वक्त्रभेदी]] #[[وطن]] #[[وزن]] #[[mḫꜣt]] #[[پاية]] #[[ultrafast]] #[[ultrafastidious]] #[[ultrapasteurization]] #[[ultrapasteurized]] #[[ultrapasteurizado]] #[[ultramontane]] #[[ultracrepidarian]] #[[ultraviolet]] #[[ultramarine]] #[[অতিরুচিবাগীশ]] #[[ريحة]] #[[بقرة]] #[[ಹೋಗು]] #[[ನಡೆ]] #[[ಅಗ್ನಿ]] #[[ಅಗ್ನಿಪರ್ವತ]] #[[ಅನಾನಸ್]] #[[ಅನ್ನೊಂಡು]] #[[ಅನ್ನ]] #[[అన్నము]] #[[ಪರ್ವತ]] #[[ಉರಿಬೆಟ್ಟ]] #[[ಜ್ವಾಲಾಮುಖಿ]] #[[بركان]] #[[ಬೆಟ್ಟ]] #[[ಗಿರಿ]] #[[ಮಲೆ]] #[[لغو]] #[[prime minister]] #[[رئيس وزراء]] #[[身份]] #[[الناصرة]] #[[العاصي]] #[[اخلاص]] #[[الراية]] #[[الخاصة]] #[[berouw]] #[[pokání]] #[[penediment]] #[[توبة]] #[[repentance]] #[[تطهير النفس]] #[[خلاص]] #[[صاحب]] #[[تقبة]] #[[تونة]] #[[توبہ]] #[[توبال]] #[[Anderson-Higgs mechanism]] #[[رقيق]] #[[رقيقة]] #[[Higgs mechanism]] #[[കാലഹരണപ്പെട്ട]] #[[أخيرا]] #[[جوهريا]] #[[جورجيا]] #[[أساسيا]] #[[أساس]] #[[أساسيون]] #[[أساسي]] #[[أسابيع]] #[[أسبوع]] #[[أسياد]] #[[أسانسير]] #[[ગાંધી]] #[[ભારતીય]] #[[મુંબઈ]] #[[गांधी]] #[[भारतीय]] #[[अभिनेता]] #[[الواق واق]] #[[ختو]] #[[سنبوق]] #[[قاقلة]] #[[خولنجان]] #[[سيراء]] #[[سك]] #[[خن]] #[[شانغهاي]] #[[شانقهاي]] #[[شانگهای]] #[[خلنجان]] #[[سنبوسق]] #[[سنبوسة]] #[[سمبوسة]] #[[سنبوسه]] #[[خرص]] #[[ظن]] #[[قرط]] #[[مؤشرات]] #[[میوه‌جات]] #[[مجوهرات]] #[[قرطاس]] #[[Gulf Arabic]] #[[arabe du Golfe]] #[[مؤشر]] #[[தண்டம்]] #[[தண்டனம்]] #[[தாண்டி]] #[[தண்டவாளம்]] #[[தீண்டாமை]] #[[தாண்டு]] #[[தாண்டவம்]] #[[enchanteur]] #[[enchanteresse]] #[[عشرين]] #[[عرقل]] #[[عرقوب]] #[[morphosyntax]] #[[morphosyntactic]] #[[profess]] #[[شاء]] #[[segmentation fault]] #[[نقص در قطعه‌بندی]] #[[ستبرگندویسان]] #[[مشوه]] #[[culpa]] #[[culpabiliser]] #[[culpabilizar]] #[[culpability]] #[[أدوات]] #[[افتاده]] #[[استفاده]] #[[bombardement]] #[[mobilisation]] #[[subordination]] #[[Frankreich]] #[[Bachmann]] #[[assassinar]] #[[assassinat]] #[[assassin]] #[[homicide volontaire]] #[[homicide involontaire]] #[[agenouiller]] #[[Plautdietsch]] #[[Schutzstaffel]] #[[bajram]] #[[বোমাবর্ষণ]] #[[shelling]] #[[subordinationsbrott]] #[[قاتل]] #[[مقاتلة]] #[[معامله]] #[[مقاومة]] #[[катиљ]] #[[जी]] #[[William]] #[[Williamsburg]] #[[Williamson]] #[[Williams]] #[[Aurangzeb]] #[[اورنگ‌زیب]] #[[شهاب]] #[[شهاب‌ها]] #[[شهاب‌سنگ]] #[[شهاب‌سنگ‌ها]] #[[حياء]] #[[الرياض]] #[[الكيان الصهيوني]] #[[الولاء والبراء]] #[[الصحراء الكبرى]] #[[الصحراء الغربية]] #[[উপনিবেশমুক্তিকরণ]] #[[Iqbal]] #[[إقبال]] #[[iqbol]] #[[pajeet]] #[[mujeet]] #[[點點滴滴]] #[[點點點]] #[[點點]] #[[إيونية]] #[[Ionia]] #[[اليونان]] #[[الإغريقيا]] #[[Σικελία]] #[[Σικελός]] #[[Sicily]] #[[صقل]] #[[পোষণকারী]] #[[euch]] #[[Euch]] #[[Vereinigtes Königreich Großbritannien und Nordirland]] #[[Vereinigte Arabische Emirate]] #[[Vereinigtes Königreich]] #[[Vereinigte Staaten von Amerika]] #[[vereinigt]] #[[Kirk]] #[[sub-inspector]] #[[subinspector]] #[[উপ-পরিদর্শক]] #[[chief inspector]] #[[hoofdinspecteur]] #[[পুলিশ মহাপরিদর্শক]] #[[মহাপরিদর্শক]] #[[inspector general]] #[[secularism]] #[[வணக்கம்]] #[[ধর্মনিরপেক্ষতাবাদ]] #[[علمانية]] #[[कोयता]] #[[कोला]] #[[बाज़ीगर]] #[[परदेश]] #[[कोलाहल]] #[[बाजीगर]] #[[कोयला]] #[[वैष्णव]] #[[वैष्णवत्व]] #[[শ্রীচৈতন্য]] #[[खांडव]] #[[इन्द्रप्रस्थ]] #[[खण्डन]] #[[അദ്ധ്യാത്മ]] #[[ഉച്ചാരണം]] #[[ചന്ദ്രോദയം]] #[[നിർവ്വചനം]] #[[പേരില്ലാത്ത]] #[[അജ്ഞാതനാമ]] #[[അല്ല]] #[[വേണ്ട]] #[[खण्डयति]] #[[Chicago]] #[[Chicagoan]] #[[Chicago typewriter]] #[[Chicago-style pizza]] #[[Chicagoland]] #[[galaxy gas]] #[[galaxy-brained]] #[[galaxy-brain]] #[[galaxy cluster]] #[[galaxy group]] #[[galaxy filament]] #[[កាល]] #[[योद्धा]] #[[مدرسة]] #[[madraça]] #[[medresea]] #[[مدرسه]] #[[mədrəsə]] #[[صحن مدارسی]] #[[мәдрәсә]] #[[quieren]] #[[actuá]] #[[actuábamos]] #[[actuáremos]] #[[actuássemos]] #[[actuávamos]] #[[indicative mood]] #[[مرفوع]] #[[直陳語氣]] #[[模塊]] #[[publicado]] #[[antarktiszi]] #[[antarktislainen]] #[[Antarktis]] #[[صورة]] #[[بصورة خاصة]] #[[بصورة عامة]] #[[sura]] #[[صورت]] #[[صورتی]] #[[صورت حال]] #[[صورت‌غذا]] #[[صورت پذیرفتن]] #[[صورت گرفتن]] #[[صورتن]] #[[dope]] #[[ice cream]] #[[آیس کریم]] #[[glacé]] #[[Glacéhandschuh]] #[[چریشلمك]] #[[مزعجون]] #[[مزعجة]] #[[ذكر]] #[[بإذن الله]] #[[مذکر]] #[[معكرونة]] #[[مذكر]] #[[مسترجع]] #[[مستعجلة]] #[[مترجمة]] #[[مستعجلون]] #[[مستقلة]] #[[مستحيلة]] #[[مترجم‌ها]] #[[مستعجل]] #[[لاش]] #[[লাচ]] #[[लाश]] #[[地下]] #[[chastity]] #[[modesty]] #[[تواضع]] #[[নম্রতা]] #[[دیکتاتور]] #[[tamburína]] #[[دیكمك]] #[[دیكیش]] #[[دیكن]] #[[دیکھنا]] #[[ديكة]] #[[ديكور]] #[[ديك رومي]] #[[ديك الحبش]] #[[ديك]] #[[गांधीलमाशी]] #[[دلك]] #[[دف صغير]] #[[رق]] #[[കാക്ക]] #[[കക്കിരി]] #[[കക്കിരിക്ക]] #[[കക്കുക]] #[[കക്കൂസ്]] #[[കാക്കത്തിരണ്ടി]] #[[துவாரம்]] #[[ডোনাল্ড]] #[[নাহিয়ান]] #[[সুলায়মান]] #[[জনসন]] #[[خفاش]] #[[وطواط]] #[[طير الليل]] #[[سحت الليل]] #[[chauve-souris]] #[[گنج]] #[[گنجشک]] #[[گنجور]] #[[گنجھلدار]] #[[گنجا]] #[[گنجیدن]] #[[گنجاندن]] #[[گنجینه]] #[[zjevně]] #[[gribouillage]] #[[گجیک]] #[[پیچین]] #[[رأفة]] #[[رجفة]] #[[پایان‌نامه]] #[[پایان]] #[[خسف]] #[[قوماندان]] #[[قومق]] #[[شعبان]] #[[شعبة]] #[[شعبه]] #[[شعب]] #[[قوم]] #[[believen]] #[[شعيب]] #[[যিথ্রো]] #[[Jethro]] #[[رعوئيل]] #[[شخصية]] #[[bersalah]] #[[berlangsung]] #[[permintaan]] #[[Allah]] #[[trait]] #[[यजमान]] #[[ईश्]] #[[ईश्वर]] #[[هداية]] #[[Dhaka Division]] #[[family of orientation]] #[[संयुक्त राज्य अमरीका]] #[[अल साल्वाडोर]] #[[संयुक्त राष्ट्र अमरीका]] #[[संयुक्त प्रांत]] #[[उत्तर प्रदेश]] #[[যুক্তপ্রদেশ]] #[[অস্ট্রালয়েড]] #[[অস্ট্রালো-মেলানেশীয়]] #[[Australo-Melanesian]] #[[Australoid]] #[[المزرعة]] #[[رکین]] #[[برگزار]] #[[سال]] #[[Gebze]] #[[وطنية]] #[[ألوهية]] #[[مبرر]] #[[مبارك]] #[[راهوار]] #[[راعنا]] #[[رعناء]] #[[انظرن]] #[[انظرنا]] #[[Κιλλύριοι]] #[[ἀνδράποδον]] #[[δούλη]] #[[δοῦλος]] #[[𐀈𐀁𐀫]] #[[slaaf]] #[[otrokyně]] #[[otrok]] #[[ကျွန်မ]] #[[ကျွန်]] #[[노예]] #[[غلام]] #[[knave]] #[[لوند]] #[[أعرج]] #[[σκλάβος]] #[[لسان]] #[[قتال]] #[[Pacific Standard Time]] #[[Pacific Time Zone]] #[[Standard]] #[[মান্য ভাষা]] #[[প্রমিত ভাষা]] #[[standard language]] #[[standaardtaal]] #[[standaard]] #[[reduplication]] #[[災難]] #[[災禍]] #[[災害]] #[[災殃]] #[[catastrophe]] #[[عفريت]] #[[مارد]] #[[ماردين]] #[[مار در آستین پروراندن]] #[[ماردین]] #[[مارده]] #[[ماردی]] #[[ماردا]] #[[ماردے]] #[[sanjak]] #[[recalcitrant]] #[[motspänstig]] #[[insurrectionary]] #[[contumacious]] #[[البارح]] #[[الكتاب المقدس]] #[[ألباب]] #[[تذكر]] #[[من باب أولى]] #[[भक्त]] #[[অসাম্প্রদায়িক মুসলিম]] #[[𑄥𑄪𑄣𑄭𑄟𑄚𑄴]] #[[أصول المنهج]] #[[منهج]] #[[әдістеме]] #[[методология]] #[[усул]] #[[menawarkan]] #[[jurisconsult]] # [[кардамоном]] # [[кардар]] # [[خریدار]] # [[кардамон]] # [[кардан]] # [[гузоња]] # [[гузоштан]] # [[менам]] # [[мекам]] # [[менами]] # [[меринами]] # [[меринам]] # [[меѓународна фонетска азбука]] # [[Дунав]] # [[instrumental case]] # [[мерин]] # [[Ἄρης]] # [[Зевс]] # [[қазақ]] # [[қазақ тілі]] # [[زيوس]] # [[خش]] # [[اصطناع]] # [[اصطنع|اِصْطَنَعَ]] # [[σύνθεση]] # [[szintézis]] # [[síntesi]] # [[تركيب]] # [[συντίθημι]] # [[milliyetçilik]] # [[SSD]] # [[HDD]] # [[HD DVD drive]] # [[যৌগিক শব্দ]] # [[HD DVD]] # [[hard disk drive]] # [[андохтан]] # [[анбоштан]] # [[سفارش]] # [[سفارش دادن]] # [[سفارت‌خانه]] # [[sifariş]] # [[vermək]] # [[وئرمک]] # [[hədiyyə]] # [[hädissään]] # [[hypocrisy]] # [[نفاق]] # [[نفق]] # [[compartmentalization]] # [[compartimentalización]] # [[compartmentalisation]] # [[compartimentalização]] # [[پررونق]] # [[compartimentalizado]] # [[अवाङ्मनसगोचर]] #[[Southeast Asia]] #[[দক্ষিণ পূর্ব এশিয়া]] #[[Southwest Asia]] #[[South-East Asia]] #[[South East Asia]] #[[Southeast Asian]] #[[Southeast Asians]] #[[अष्टाध्यायी]] (Aṣṭādhyāyī) #[[showman]] #[[viihdyttäjä]] #[[viihdyttää]] #[[showmanship]] #[[힘]] #[[আধিপত্যবাদ]] #[[আবেগাপ্লুত]] #[[супакоіць]] #[[təsəlli]] #[[اطمأن]] #[[শান্তভাবে]] #[[মারিফত]] #[[গৌড়ভুজঙ্গ]] #[[الأردن]] #[[روحانيون]] #[[روحانية]] #[[روح]] #[[الروح القدس]] #[[ثالوث]] #[[روح القدس]] #[[پاک روح]] #[[Holy Spirit]] #[[جزيرة]] #[[باسم الآب والابن والروح القدس]] #[[القامشلي]] #[[Qamishli]] #[[Democratic Autonomous Administration of North and East Syria]] #[[ethnomethodology]] #[[antimethodology]] #[[methodological]] #[[methodologically]] #[[methodologist]] #[[multimethodology]] #[[scientific methodology]] #[[intermethodological]] #[[faydalanmak]] #[[fayda]] #[[faydalar]] #[[faydalanma]] #[[ذوق]] #[[تجربة]] #[[ਤਜਰਬਾ]] #[[ডানহাতি]] #[[sheila]] #[[المغرب]] #[[الخميس]] #[[صمد]] #[[Ἰωάννης]] #[[Ioannes]] #[[یوحنا اصطباغی]] #[[Ἰωάννα]] #[[ܚܡܫܒܫܒܐ]] #[[أمر]] #[[أرز]] #[[تشرين الثاني]] #[[عربون]] #[[صليب]] #[[شتلة]] #[[سلسبيل]] #[[أرضي شوكي]] #[[خرشوف]] #[[бөрікгүл]] #[[артишок]] #[[артишока]] #[[알아보다]] #[[اغراق کردن]] #[[گزاف گفتن]] #[[과장하다]] #[[exaggerate]] #[[tunnistaa]] #[[allorecognize]] #[[derecognize]] #[[allorecognition]] #[[autorecognition]] #[[auto-]] #[[allo-]] #[[dingin]] #[[durgun]] #[[sakin]] #[[ором]] #[[calmo]] #[[surto]] #[[calmado]] #[[دولك]] #[[drive-in]] #[[autocinema]] #[[autoalarm]] #[[ساكن]] #[[آرام]] #[[nkegohenʼą́ą́go]] #[[խախանդ]] #[[հանդարտ]] #[[հանգիստ]] #[[հնագիտություն]] #[[平静]] #[[平靜]] #[[고요하다]] #[[静か]] #[[穏やか]] #[[يساكن]] #[[سواكن]] #[[قديمة]] #[[قديم|قَدِيم]] #[[고하다]] #[[طوبغرافيا]] #[[информационный]] #[[информационно-аналитический]] #[[информационные технологии]] #[[الخلافة الراشدة]] #[[Alawism]] #[[الموصل]] #[[راش درش]] #[[رشد]] #[[رشاد]] #[[راشدات]] #[[راشدة]] #[[أتوكل]] #[[التولي والتبري]] #[[Eastern Orthodox Church]] #[[পূর্বদেশীয় সনাতনপন্থী মণ্ডলী]] #[[東方正教会]] #[[Greek Orthodox Church]] #[[ഗ്രീക്ക് ഓർത്തഡോക്‌സ് സഭ]] #[[গ্রিক সনাতনপন্থী মণ্ডলী]] #[[كنيسة الروم الأرثوذكس]] #[[正當]] #[[正当]] #[[الصين]] #[[صيني]] #[[صينية]] #[[الصربية]] #[[ألمانية]] #[[ألماني]] #[[أرمينية]] #[[ألبانية]] #[[آلمانی‌ها]] #[[صينيون]] #[[صنية]] #[[صيصية]] #[[秦]] #[[Çin]] #[[Çinli]] #[[चीन]] #[[朝秦暮楚]] #[[Чин]] #[[ചീന]] #[[distraer]] #[[have fun]] #[[have a nice day]] #[[أسلوب تعجب]] #[[വ്യാക്ഷേപകം]] #[[أدان]] #[[أمانة]] #[[أمان]] #[[أهان]] #[[اوان]] #[[أوانئذ]] #[[أوانس]] #[[أوانذاك]] #[[أوان]] #[[آفرینش]] #[[آترینه]] #[[أخرى]] #[[آخری]] #[[آفرین]] #[[آخرون]] #[[ذي]] #[[ذهن]] #[[ذقن]] #[[ذنب]] #[[أمنية]] #[[ذهني]] #[[أغنية]] #[[أمنيوتي]] #[[kurwaturą]] #[[kurwach]] #[[kurwa mać]] #[[kurwatura]] #[[kurwa]] #[[烏斯懷亞]] #{{l|ar|الْأَرْضِي شَوْكِي}} #[[متاع]] #[[فنزويلا]] #{{l|ar|جُمْهُورِيَّةُ فِنْزُوِيلَّا البُولِيفَارِيَّةُ}} #[[ভেনেজুয়েলা বলিভারীয় প্রজাতন্ত্র]] #[[भेनेजुएला]] #[[वेनेजुएला]] #[[वेनेज़ुएला]] #[[ڤينيزويلا]] #[[វេណេហ្ស៊ុយអេឡា]] #[[ונצואלה]] #[[ទុន]] #[[شلوغ]] #[[مزدحم]] #[[צפוף]] #[[толған]] #[[붐비다]] #[[คั่ง]] #[[แน่น]] #[[zatłoczony]] #[[ګڼ]] #[[переполненный]] #[[набитый]] #[[людный]] #[[многолюдный]] #[[überfüllt]] #[[व्यस्त]] #[[भीड़]] #[[overcrowded]] #[[غينيا الاستوائية]] #[[غينيا]] #[[غينيا بيساو]] #[[غیر جانبدار]] #[[स्वर्गनरकवर्णनप्रकरण]] #[[mezhep]] #[[మతము]] #[[дин]] #[[мазҳаб]] #[[ਧਰਮ]] #[[religião]] #[[religia]] #[[Reljoon]] #[[Gloowe]] #[[مذهب]] #[[دین]] (ফারসি) #[[шашин]] #[[മതം]] #[[종교]] #[[សាសនា]] #[[मज़हब]] #[[دين]] (আরবি) #[[تديين]] #[[مدين]] #[[سلف]] #[[قرض]] #[[θρησκεία]] #[[ཆོས་ལུགས]] #[[དབྱི་སི་ལམ་ཆོས་ལུགས]] #[[Hindustan]] #{{l|ar|هِنْدُسْتَان}} #[[Հինդուստան]] #[[Индостан]] #[[印度斯坦]] #[[ހިންދުސްތާނު]] #[[હિંદુસ્તાન]] #[[印度斯坦語]] #[[خوارزمي]] #[[ոսկոր]] #[[𒄩𒀀𒀸𒊭]] #[[استخوان]] #[[ئێسکان]] #[[Immanuel]] #[[अस्थि]] #[[fərqlənmək]] #[[fərqləndirmək]] #[[davlat]] #[[devlet]] #[[dövlətlənmək]] #[[dövlətlərarası]] #[[dövlət başçısı]] #[[dövlət]] #[[dövlətçilik]] #[[الأمر بالمعروف والنهي عن المنكر]] #[[self-sabotage]] #[[مكر]] #[[مكرت]] #[[саботажник]] #[[саботаж]] #[[破壞]] #[[যুদ্ধাভিলাষী]] #[[নাবী]] #[[منصوب]] #[[مجزوم]] #[[युयुत्सु]] #[[desiderative]] #[[چوداں]] #[[ਚੌਦਾਂ]] #[[ahli madya]] #[[ahli listrik]] #[[Vedic]] #[[ahli]] #[[jampi]] #[[jamp]] #[[cikgu]] #[[kalaylamak]] #[[kalalanka]] #[[kalaunan]] #[[kalkulator]] #[[kala ulang]] #[[katakan]] #[[մաստուրբացիա]] #[[マスターベーション]] #[[تيمور]] #[[تيمور الشرقية]] #[[تيمور لاٴوت]] #[[timur laut]] #[[تیمور قازوق]] #[[تیمور شرقی]] #[[تمور]] #[[تأمور]] #[[تيمار]] #[[heavy water]] #[[ভারী পানি]] #[[तर्कबुद्धिवाद]] #[[बुद्धिवाद]] #[[तर्कवाद]] #[[مراقبة]] #[[یادداشت]] #[[للغاية]] #[[اعتقاد]] #[[اعتقاد داشتن]] #[[ಹುಲಿ]] #[[ಸ್ನೇಹ]] #[[विचित्र]] #[[إشراق]] #[[انشرح]] #[[بديع]] #[[নিষ্কামিতা]] #[[অযৌনকামিতা]] #[[নিষ্কামী]] #[[inimitable]] #[[убеждённость]] #[[уредност]] #[[убеденият]] #[[убедената]] #[[убедено]] #[[умереност]] #[[Mitsotakis]] #[[mitostasis]] #[[Kyriakos]] #[[woo]] #[[indoctrination]] #[[propaganda]] #[[propagandapuhe]] #[[propagandasota]] #[[propagandakirjallisuus]] #[[gaslighting]] #[[gas lighting]] #[[gas-lighting]] #[[backfilled]] #[[back-filled]] #[[backfill]] #[[ইজ্জাহ]] #[[dictator]] #[[dictatory]] #[[dictatorius|dictātōrius]] #[[dictatorii]] #[[dictatorship]] #[[dictatorship of the bourgeoisie]] #[[dictatorship of the proletariat]] #[[دكتاتورية]] #[[dictatorial]] #[[autochthon]] #[[autocracy]] #[[autocrat]] #[[autocratic]] #[[ავტოკრატიული]] #[[專制]] #[[false consciousness]] #[[deadpan]] #[[deadlock]] #[[uváznutí]] #[[స్నేహము]] #[[చెలిమి]] #[[కూరిమి]] #[[స్నేహితుడు]] #[[స్నేహితురాలు]] #[[స్నేహితుఁడు]] #[[শনাক্তযোগ্য]] #[[اختلاف]] #[[الاختلاف]] #[[اختلاف کرنے والا]] #[[اختلاف کرنا]] #[[اختصار]] #[[اختار]] #[[ethereal]] #[[aetherius]] #[[etherealness]] #[[etherealisation]] #[[ethereality]] #[[etherealism]] #[[etherealization]] #[[presupposition]] #[[presuppositionalism]] #[[presuppositionalist]] #[[خلر]] #[[أوغاريت]] #[[فوة]] #[[نظر]] #[[𐎜𐎂𐎗𐎚]] #[[اوگاریت]] #[[ὄλῡρᾰ]] #[[Ugarit]] #[[烏加里特]] #[[راعى]] #[[Zeitschrift]] #[[Arabische Republik Ägypten]] #[[Arabische Zee]] #[[نظریہ]] #[[نظري]] #[[نەزەرىيىۋى]] #[[نظريون]] #[[نظرية]] #[[نظرة]] #[[نظر ثانی]] #[[οὐρανός]] #[[نظريات]] #[[মিশর আরব প্রজাতন্ত্র]] #[[Arab Republic of Egypt]] #{{l|ar|جُمْهُورِيَّة مِصْر الْعَرَبِيَّة}} #[[阿拉伯埃及共和國]] #[[شاكوش]] #[[مطرقة]] #[[نبطشي]] #[[شيش]] #[[بوية]] #[[أراجوز]] #[[ياميش]] #[[baiséadach]] #[[baictéarafagach]] #[[basset]] #[[bactériophage]] #[[阿拉伯]] #[[阿拉伯文]] #[[阿拉伯語]] #[[देवयानी]] #[[देवयानी तारामंडल]] #[[देवयानी मंदाकिनी]] #[[দেবযানী মন্দাকিনী ছায়াপথ]] #[[অ্যানড্রোমিডা ছায়াপথ]] #[[Andromeda Galaxy]] #[[constellation]] #[[वङ्ग]] #[[بنگال]] #[[approprio]] #[[proprius]] #[[מתאים]] #[[Josephine]] #[[Jozefinë]] #[[přizpůsobit]] #[[přizpůsobovat]] #[[tilpasse]] #[[aanpassen]] #[[alkalmaz]] #[[alkalom]] #[[igazít]] #[[illeszt]] #[[приспособить]] #[[приспособлять]] #[[приспосабливать]] #[[獨佔]] #[[獨佔鰲頭]] #[[monopolize]] #[[𐌲𐌰𐌰𐌹𐌲𐌹𐌽𐍉𐌽]] #[[נכס]] #[[充当]] #[[充當]] #[[مناسب]] #[[համապատասխան]] #[[պատշաճ]] #[[müvafiq]] #[[uyğun]] #[[yerli]] #[[適當]] #[[恰當]] #[[satire]] #[[sarcasm]] #[[sarcastic]] #[[irony]] #[[佔]] #[[yerlik hal]] #[[mühafiz]] #[[mühafizə]] #[[列恩]] #[[列宁]] #[[馬列斯]] #[[馬]] #[[列]] #[[斯]] #[[戇人]] #[[antiorganization]] #[[организа́ция]] #[[organizzazione]] #[[micronational organisation]] #[[member organisation]] #[[intermicronational organisation]] #[[overshadow]] #[[überschatten]] #[[غطى]] #[[غطيط]] #[[غطيتم]] #[[黯然失色]] #[[reorganization]] #[[quasi-reorganization]] #[[uudelleenjärjestely]] #[[গর্ভসম্ভূতা]] #[[reusability]] #[[पुनरुपयोगिता]] #[[অলঙ্কারদীপ্ত]] #[[পুষ্পাভরণশোভিত]] #[[সিদ্ধিলাভ]] #[[reusable]] #[[-ity]] #[[reuse]] #[[-ability]] #[[recyclable]] #[[multi-use]] #[[multiuse]] #[[disposable]] #[[single-use]] #[[recycle]] #[[dispose]] #[[-able]] #[[wiederverwerten]] #[[hergebruiken]] #[[recyclen]] #[[recycleren]] #[[genanvende]] #[[genbruge]] #[[recyklovat]] #[[পুনঃচক্রায়ন]] #[[diamond problem]] #[[method overloading]] #[[function overloading]] #[[polymorphism]] #[[polymathy]] #[[polymyalgia]] #[[polymorph]] #[[polymerisoitua]] #[[polymathic]] #[[polymorphous]] #[[polymorphic]] #[[polymath]] #[[polymorphus]] #[[πολυ-]] #[[μορφή]] #[[mārga]] #[[mērga]] #[[multilevel]] #[[多層]] #[[دعاية]] #[[propagandus]] #[[بروبقاندا]] #[[propagandalehtinen]] #[[بروباجاندا]] #[[بروباغندا]] #[[दुष्प्रचार]] #[[अधिप्रचार]] #[[áróður]] #[[ការឃោសនា]] #[[пропаганда]] #[[үгүттөө]] #[[ໂຄສະນາຊວນເຊື່ອ]] #[[പ്രചാരണം]] #[[تبليغ]] #[[Istanbul]] #[[استانبول]] #[[إسطنبول]] #[[القسطنطينية]] #[[Qüstəntiniyyə]] #[[العبرانية]] #[[pseudorationalist]] #[[القرآنية]] #[[യുക്തിവാദി]] #[[യുക്തി]] #[[ultrarational]] #[[ultranationalist]] #[[ultra-nationalist]] #[[ultranationalism]] #[[Ultranationalismus]] #[[ultranacionalismo]] #[[ultranacionalista]] #[[ultranationaliste]] #[[nacionalismo]] #[[nacionalista]] #[[nationaliste]] #[[ultra-]] #[[nacionalistický]] #[[nacionalisme]] #[[nacionalizmus]] #[[nacionalist]] #[[nacionalismos]] #[[nacionalismu]] #[[Nationalist China]] #[[National Socialism]] #[[National Socialist]] #[[Nationalsozialist]] #[[nâtionaliste]] #[[cosmopolitanism]] #[[世界主義]] #[[世界主义]] #[[cosmopolitan]] #[[民族主義]] #[[Nazism]] #[[Hitlerism]] #[[Strasserism]] #[[國家社會主義]] #[[民族社會主義]] #[[민족사회주의]] #[[國民社會主義]] #[[国民社会主义]] #[[國社主義]] #[[國社]] #[[國民政府]] #[[Nationalsozialistische Deutsche Arbeiterpartei]] #[[National Socialist German Workers' Party]] #[[hitlerismo]] #[[strasserismo]] #[[主義]] #[[guóshè]] #[[paracetamol]] #[[claviform]] #[[ndjek]] #[[तक्ति]] #[[ndjerë]] #[[ndjeshëm]] #[[ndjesi]] #[[ndjesë]] #[[Ndrekë]] #[[ndjekur]] #[[ဆေးကုလားမ]] #[[ဆားကြက်ဥ]] #[[ဆိုက်ပရပ်စ်]] #[[ဆီးပူညောင်းကျ]] #[[ဆေးပေါ့လိပ်]] #[[ဆားကျင်း]] #[[ဆေးပြင်းလိပ်]] #[[ဆူးပုပ်]] #[[ဆွမ်းကပ်]] #[[ဆပ်ကပ်]] #[[adherent]] #[[institutionalise]] #[[institutionalised]] #[[tragacanth]] #[[sherbet]] #[[sherbets]] #[[shërbëtor]] #[[interconnectedness]] #[[interconnectednesses]] #[[interdependență]] #[[inter-]] #[[interdependence]] #[[interdépendance]] #[[interdisciplinaritate]] #[[interdisciplinarité]] #[[interdisciplinarity]] #[[interdisciplinar]] #[[-itate]] #[[ურთიერთდაკავშირებულობა]] #[[praiseworthiness]] #[[பாராட்டத்தக்கது]] #[[commendable]] #[[خاطر]] #[[دہائی]] #[[दुहाई]] #[[تسليم]] #[[توزيع]] #[[توصيل]] #{{l|ar|التَّوْصِيل}} #[[taslim]] #[[təslim olmaq]] #[[təslim]] #[[سلام]] #[[يسالم]] #[[مسالمة]] #[[投降]] #[[đầu hàng]] #[[כניעה]] #[[נכנע|נִכְנַע]] #[[капитуляция]] #[[капитулация]] #[[투항]] #[[항복]] #[[capitulation]] #[[दैन्य]] #[[ஆதாம்]] #[[ஆதாரம்]] #[[தாபரம்]] #[[avril]] #[[Avril]] #[[Avrill]] #[[Aprill]] #[[Gregorian calendar]] #[[Avrille]] #[[avrìl]] #[[April]] #[[Avrîl]] #[[Aprilis]] #[[fluttered]] #[[Stuttgart]] #[[చెలిమికత్తె]] #[[رجس]] #[[جانباز]] #[[جانبازان]] #[[geambaș]] #[[وثن]] #[[وثني]] #[[مستعمرة]] #[[رجاسة]] #[[অপবিত্রতা]] #[[अपवित्रता]] #[[কলুষতা]] #[[নাপাকি]] #[[impurity]] #[[impuritas]] #[[unholiness]] #[[unholy]] #[[profanity]] #[[profanitas]] #[[profanus]] #[[profane]] #[[profanity delay]] #[[broadcast delay]] #[[مكيف]] #[[مخيف]] # [[వృక్షరుహము]] # [[వృక్షాసనము]] # [[వృక్షంబు]] # [[వక్షము]] # [[వీక్షణము]] # [[చూడు]] # [[உள்ளே]] # [[वृक्षरुह]] # [[वृक्ष]] # [[स्त्रीलिंग]] # [[लता]] # [[उपयोग]] # [[अक्सर]] #[[पराया]] #[[अम्बेडकर नगर]] #[[Ambedkar Nagar]] #[[superclass]] #[[subclass]] #[[اب]] #[[أبابة]] #[[أباب]] #[[أبو]] #[[آب]] #[[أب]] #[[عم]] #[[में]] #[[परछाई]] #[[परछाईं]] #[[परवाना]] #[[पराकाष्ठा]] #[[إصبع]] #[[افترى]] #[[एतानि]] #[[एतद्]] #[[ἐμμένω]] #[[antiprejudice]] #[[terminate with extreme prejudice]] #[[self-prejudice]] #[[prejudicious]] #[[prejudicer]] #[[prejudiceless]] #[[postjudice]] #[[in prejudice of]] #[[homoprejudice]] #[[heteroprejudice]] #[[extreme prejudice]] #[[disprejudice]] #[[counterprejudice]] #[[biprejudice]] #[[تحامل]] #[[تحيز]] #[[carboxypenicillin]] #[[carboxymethylcellulose]] #[[carboxypeptidase]] #[[थापा]] #[[थामना]] #[[थाटमाट]] #[[थाम]] #[[थमाना]] #[[थोमा]] #[[थाहा]] #[[थमाओगी]] #[[थमायी]] #[[थाना]] #[[थमाती]] #[[थमाते]] #[[थमातीं]] #[[थमाया]] #[[थमाता]] #[[थमना]] #[[थमाके]] #[[थमाकर]] #[[خرج]] #[[خطر]] #[[خبر]] #[[তৌহিদী জনতা]] #[[একত্ববাদ]] #[[জনসমষ্টি]] #[[basophilic granulocyte]] #[[lymphocyte]] #[[lymphocytes]] #[[eosinophil]] #[[eosinophils]] #[[neutrophil]] #[[neutrophils]] #[[basophil]] #[[basophils]] #[[monocyte]] #[[agranulocyte]] #[[leukocyte]] #[[单核细胞]] #[[白血球]] #[[白細胞]] #[[白细胞]] #[[platelet]] #[[platelet function test]] #[[plateletpheresis]] #[[antiplatelet]] #[[platelets]] #[[white blood cell]] #[[WBC]] #[[blood cell]] #[[hemocyte]] #[[granulocyte]] #[[myelocyte]] #[[erythrocyte]] #[[thrombocyte]] #[[interleukocyte]] #[[intraleukocyte]] #[[bạch huyết cầu]] #[[leukocytapheresis]] #[[myelocytomatosis]] #[[myélocyte]] #[[myelocytosis]] #[[myelocytoarchitecture]] #[[myélocytes]] #[[myelocytes]] #[[autoerythrocyte]] #[[antierythrocyte]] #[[রক্তকণিকা]] #[[থ্রম্বোসাইট]] #[[অণুচক্রিকা]] #[[শ্বেত রক্তকণিকা]] #[[লোহিত রক্তকণিকা]] #[[red blood cell]] #[[RBC]] #[[紅細胞]] #[[rotes Blutkörperchen]] #[[ερυθρό αιμοσφαίριο]] #[[नैतिकता]] #[[नैतिक]] #[[wyświetlać]] #[[30,000-foot view]] #[[bird's-eye view]] #[[Alexandru]] #[[counterview]] #[[angle of view]] #[[by-view]] #[[ビュー]] #[[뷰]] #[[ویو]] #[[praespectus]] #[[widok]] #[[pogląd]] #[[visão]] #[[כוונה]] #[[szándék]] #[[视图]] #[[視圖]] #[[perspektywa]] #[[מראה]] #[[погляд]] #[[sikt]] #[[منظرة]] #[[مشهد]] #[[منظر]] #[[경치]] #[[бай]] #[[ноян]] #[[қонтайшы]] #[[лағман]] #[[ұлу]] #[[ەرگۋنا وزەن]] #[[額爾古納河]] #[[輿圖]] #[[古人類學家]] #[[paléoanthropologie]] #[[paleoantropoloji]] #[[paleoantropología]] #[[палеоантропология]] #[[古人類學]] #[[paleoanthropology]] #[[paleoanthropologist]] #[[palaeoanthropologist]] #[[palæanthropologist]] #[[palæoanthropologist]] #[[ڈھانا]] #[[ڈھاواں]] #[[పురుషోత్తముడు]] #[[పురుషోత్తముఁడు]] #[[暴力]] #[[暴力破解]] #[[肏]] #[[暴]] #[[破]] #[[解]] #[[破綻]] #[[破解]] #[[تدمير]] #[[تدمر]] #[[domperidone]] #[[esomeprazole]] #[[omeprazole]] #[[প্রোটন পাম্প ইনহিবিটর]] #[[lansoprazole]] #[[ওমিপ্রাজল]] #[[اوميپرازول]] #[[תדמור|תַּדְמוֹר]] #[[ল্যানসোপ্রাজল]] #[[saya]] #[[tuhan]] #[[fumble]] #[[حنش]] #[[زندقة]] #[[إلحاد]] #[[زنديق]] #[[атеизм]] #[[ateizm]] #[[աթեիզմ]] #[[աստվածամերժություն]] #[[Atheismus]] #[[Gottesleugnung]] #[[നിരീശ്വരവാദം]] #[[நாத்திகம்]] #[[دینسزلك]] #[[নাস্তিক্যবাদ]] #[[fundamentalism]] #[[Fundamentalismus]] #[[аԥшәма]] #[[ایاصوفیه]] #[[Hagia Sophia]] #[[أغنى]] #[[شأن]] #[[غنى]] #[[يعني]] #[[खाद्]] #[[खाद्य]] #[[خاییدن]] #[[yahuanti]] #[[غنوا]] #[[yaşantı]] #[[yāshāng]] #[[यशोदा]] #[[佐野]] #[[大唐]] #[[Tang]] #[[綻]] #[[perdus]] #[[perdi]] #[[淀]] #[[皮開肉綻]] #[[potencial]] #[[potencia]] #[[cumpleaños]] #[[كور]] #[[أكوار]] #[[كوري]] #[[دحا]] #[[تدحين]] #[[دادا]] #[[دهانات]] #[[داماد]] #[[타조]] #[[알다]] #[[알리다]] #[[駝鳥]] #{{l|ar|يُكَوِّرُ}} #{{l|ar|تَكْوِير}} ==টেমপ্লেট== # [[টেমপ্লেট:arz-proper noun]] # [[টেমপ্লেট:arz-proper noun/নথি]] # [[টেমপ্লেট:ml-IPA]] # [[টেমপ্লেট:ml-IPA/নথি]] # [[টেমপ্লেট:R:fa:Hayyim]] # [[টেমপ্লেট:R:tg:Vozhaju]] # [[টেমপ্লেট:R:Mo'in]] # [[টেমপ্লেট:reference template cat]] # [[টেমপ্লেট:reference template cat/নথি]] # [[টেমপ্লেট:refcat]] # [[টেমপ্লেট:reference template cat/খেলাঘর]] # [[টেমপ্লেট:fa-verb]] # [[টেমপ্লেট:fa-verb/নথি]] # [[টেমপ্লেট:fa-xlit]] # [[টেমপ্লেট:fa-xlit/নথি]] # [[টেমপ্লেট:ar-etym-iyya]] # [[টেমপ্লেট:ar-etym-iyya/নথি]] # [[টেমপ্লেট:ar-root-head]] # [[টেমপ্লেট:ar-root-head/নথি]] ==পরিশিষ্ট== # [[পরিশিষ্ট:Arabic nominals]] # [[পরিশিষ্ট:আরবি roots/ء ل ه]] ==উল্লেখযোগ্য সম্পাদনা== #[[শিক্ষা]] #[[নিরর্থক]] #[[تيموثاوس]] #[[עמנואל]] #[[homework]] #[[cod]] #[[মনোবিজ্ঞান]] #[[rare]] #[[মনোরঞ্জক]] #[[ঔষধালয়]] #[[ডিসপেনসারি]] #[[ফার্মেসি]] #[[pharmacy]] #[[liquorice]] #[[বিশ্ব]] #[[বিশ্বযুদ্ধ]] #[[world]] #[[earth]] #[[লক্ষণা]] #[[قطر]] #[[অসংকুচিত]] #[[অলঙ্কারশাস্ত্র]] #[[অলঙ্কার]] #[[গৃহাগত]] #[[অধ্যাত্ম]] #[[ذلك]] #[[কার্য]] #[[appropriate]] #[[schema]] #[[ইউরোপীয় ইউনিয়ন]] #[[আগ্রার মানুষ তাজমহল দেখে না]] #[[Tangail District]] #[[Ἀρχιμήδης]] #[[নিদ্রা]] #[[realm]] #[[correspondence]] #[[regression]] #[[গয়রহ]] #[[folder]] #[[বাতাবরণ]] #[[অনুষ্টুপ]] #[[রা]] #[[Ra]] #[[شام]] #[[ঝাঁকের কই]] #[[জঙ্ঘা]] #[[suit]] #[[suite]] #[[ইউৰোপ]] #[[কুইৰ্মা]] #[[তূষ্ণীম্ভাব]] #[[পরাঙ্মুখ]] #[[বৈদগ্ধ্য]] #[[দুর্নিরীক্ষ্য]] #[[ব্যবচ্ছেদ]] #[[প্রাতর্ভ্রমণ]] #[[প্রোজ্জ্বল]] #[[অলঙ্ঘ্য]] #[[এতদতিরিক্ত]] #[[ꠁꠞꠣꠇ]] #[[কৃতকর্ম]] #[[Ovttastuvvan arábaemiráhtat]] #[[opposite]] #[[ꠟꠣꠄꠇ]] #[[হাতির কাঁধে আসে যায়, হাম্বা রবে মুর্ছা যায়]] #[[agricultural liens]] #[[সঙ্গনিরোধ]] #[[শ্লথ]] #[[ঢলঢল]] #[[কর্তৃকারক]] #[[ইরাকীকরণ]] #[[ital]] #[[একলব্য]] #[[অশ্বত্থামা]] #[[অধ্যবসায়]] #[[ঐকান্তিকতা]] #[[persistent]] #[[treasurer]] #[[একঝাঁড়ের বাঁশ]] #[[بنجلاديش]] #[[শৃঙ্খলা]] #[[বিজেপি]] #[[কমিশন]] #[[trick]] #[[গণতন্ত্র]] #[[স্তন]] #[[অতিশয়ার্থবাচক]] #[[দাইয়ুস]] #[[জী]] #[[চা]] #[[লিফট]] #[[accusative case]] #[[বিউপনিবেশায়ন]] #[[bit]] #[[mirror]] #[[frozen]] #[[فرج]] #[[شعیب]] #[[believe]] #[[যজমান]] #[[United States of America]] #[[টেমপ্লেট:ar-root]] #[[মডিউল:sem-arb-utilities]] #[[মার্কিন যুক্তরাষ্ট্র]] #[[slave]] #[[jack]] #[[সারমেয়]] #[[standard]] #[[diminutive]] #[[দ্বিরুক্তি]] #[[বাত]] #[[দক্ষিণ-পূর্ব এশিয়া]] #[[একাধিপত্য]] #[[إلهام]] #[[methodology]] #[[Ιωάννης]] #[[يوحنا]] #[[recognize]] #[[হ্রস্বীকরণ]] #[[راشد]] #[[Venezuela]] #[[ملك]] #[[نادر]] #[[assent]] #[[conviction]] #[[埃及]] #[[Andromeda]] #[[孟加拉國]] #[[孟加拉]] #[[অঘটনঘটনপটিয়সী]] #[[pound]] #[[سالم]] #[[flutter]] #[[ভিতর]] #[[view]] #[[كفر]] #[[يومئذ]] #[[دهان]] #[[مالك]] ===পরবর্তী দর্শন=== #[[deadfall]] #[[deadhead]] ==অভিধান== {| class="wikitable" ! ইংরেজি !! বাংলা !! উর্দু !! টীকাসমূহ |- | [[treasurer|Treasurer]] (কোষাধ্যক্ষ) || [[কোষাধ্যক্ষ]], [[খাজাঞ্চি]] || [[خزانچی]] || "খাজাঞ্চি" শব্দটি পুরনো রাজকীয় বা ঐতিহ্যবাহী প্রেক্ষাপটে ব্যবহৃত হয়। আক্কাদীয় ভাষায় [[𒃶𒍝𒁀𒊒]] (গাঞ্জাবারু)। |- | [[tax collector|Tax Collector]] || [[জগাতি]] || || "জগাতি" একটি দেশজ বাংলা শব্দ। |- | [[exciseman|Exciseman]]|| [[আবগারি শুল্ক]] ([[আবগারি কর]]) [[সংগ্রহ]]কারী || || |} '''প্রতিবিম্ব ও প্রতিফলন''' {| class="wikitable" ! colspan="undefined" |বৈশিষ্ট্য ! colspan="undefined" |প্রতিফলন (Reflection) ! colspan="undefined" |প্রতিবিম্ব (Image) |- | colspan="undefined" |'''সংজ্ঞা''' | colspan="undefined" |আলোকরশ্মি কোনো তলে বাধা পেয়ে পূর্বের মাধ্যমে ফিরে আসার ঘটনা। | colspan="undefined" |প্রতিফলিত বা প্রতিসৃত রশ্মি কোনো বিন্দুতে মিলিত হলে বা মিলিত হচ্ছে বলে মনে হলে যে আকৃতি তৈরি হয়। |- | colspan="undefined" |'''প্রকৃতি''' | colspan="undefined" |এটি একটি ভৌত '''প্রক্রিয়া''' বা ঘটনা। | colspan="undefined" |এটি আলোর প্রতিফলনের '''ফলাফল'''। |- | colspan="undefined" |'''দৃশ্যমানতা''' | colspan="undefined" |প্রতিফলন নিজে দেখা যায় না, প্রতিফলিত আলো দেখা যায়। | colspan="undefined" |প্রতিবিম্ব স্পষ্টভাবে দেখা যায় (যেমন- আয়নায় নিজের মুখ)। |- | colspan="undefined" |'''অবস্থান''' | colspan="undefined" |প্রতিফলক পৃষ্ঠের (যেমন- আয়না) ওপর ঘটে। | colspan="undefined" |আয়নার পেছনে বা সামনে গঠিত হয়। |- | colspan="undefined" |'''প্রকারভেদ''' | colspan="undefined" |নিয়মিত ও ব্যাপ্ত (diffused) প্রতিফলন। | colspan="undefined" |বাস্তব (real) ও অবাস্তব (virtual) প্রতিবিম্ব। |} ewyawfvegi5t0ho0wy7f8ta67oiomu4 বিষয়শ্রেণী:মূল্যায়ন ব্যর্থ হওয়ায় যেসব পাতায় উইকিফাংশন্স কল ত্রুটিপূর্ণ হয়েছে 14 167927 508932 2026-05-17T12:10:37Z Redmin 6857 + 508932 wikitext text/x-wiki __HIDDENCAT__ 2twjmejn56ditxo46hqinfh52nh6flb সাদিক কায়েম 0 167928 508950 2026-05-18T06:04:29Z Oindrojalik Watch 14609 508950 wikitext text/x-wiki =={{ভাষা|bn}}== === উচ্চারণ === * {{bn-IPA}} ===ব্যুৎপত্তি=== আরবি {{der|bn|ar|صَادِق||সত্যবাদী}} এবং {{der|bn|ar|قَائِم||প্রতিষ্ঠিত/দৃঢ়}} থেকে। দুই অংশ মিলে এর অর্থ দাঁড়ায় "সত্যবাদী ও সুপ্রতিষ্ঠিত"। ===নামবাচক বিশেষ্য=== {{bn-proper noun}} # পুরুষ প্রদত্ত নাম ===সম্পর্কিত শব্দ=== * [[সাদিক]] * [[কায়েম]] girp9qfmu6dtqz7r3t6pml3za4n6ma7 508951 508950 2026-05-18T06:06:08Z Oindrojalik Watch 14609 508951 wikitext text/x-wiki =={{ভাষা|bn}}== === উচ্চারণ === * {{bn-IPA}} ===ব্যুৎপত্তি=== আরবি {{der|bn|ar|صَادِق||সত্যবাদী}} এবং {{der|bn|ar|قَائِم||প্রতিষ্ঠিত/দৃঢ়}} থেকে। দুই অংশ মিলে এর অর্থ দাঁড়ায় "সত্যবাদী ও সুপ্রতিষ্ঠিত"। ===নামবাচক বিশেষ্য=== {{bn-proper noun}} # পুরুষ প্রদত্ত নাম ===সম্পর্কিত শব্দ=== * [[সাদিক]] * [[কায়েম]] t5jxesiri1qx0oznha4k4dso7jct8do