উইকিঅভিধান
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.46.0-wmf.23
case-sensitive
মিডিয়া
বিশেষ
আলাপ
ব্যবহারকারী
ব্যবহারকারী আলাপ
উইকিঅভিধান
উইকিঅভিধান আলোচনা
চিত্র
চিত্র আলোচনা
মিডিয়াউইকি
মিডিয়াউইকি আলোচনা
টেমপ্লেট
টেমপ্লেট আলোচনা
সাহায্য
সাহায্য আলোচনা
বিষয়শ্রেণী
বিষয়শ্রেণী আলোচনা
পরিশিষ্ট
পরিশিষ্ট আলোচনা
ছন্দ
ছন্দ আলোচনা
থিসরাস
থিসরাস আলোচনা
উদ্ধৃতি
উদ্ধৃতি আলোচনা
TimedText
TimedText talk
মডিউল
মডিউল আলাপ
Event
Event talk
ঝ
0
2043
507663
302307
2026-04-10T17:25:41Z
~2026-22115-25
14597
/* ভূমিকা */শধন্
507663
wikitext
text/x-wiki
{{Bengali character info}}
==ভূমিকা==
বাংলা বর্ণমালার নবম ব্যঞ্জনবর্ণ।
=== উচ্চারণ ===
* {{অডিও|bn|LL-Q9610 (ben)-Titodutta-ঝ.wav|অডিও}}
=== বর্ণনা ===
চ-বর্গের চতুর্থ বর্ণ।
==== ব্যবহার ====
====বৈশিষ্ট্য====
এটি প্রশস্ত দন্তমূলীয়; মহাপ্রাণ; ঘোষ স্পর্শধ্বনিঝফ।
===উদাহরণ===
[[ঝগড়া]], [[ঝামেলা]], [[ঝড়]], [[ঝাড়ু]], [[ঝাপটা]]
[[বিষয়শ্রেণী:বাংলা ব্যঞ্জনবর্ণ]]
p9ad8huxmj43p4kutaq1ffm1pwcpff6
507664
507663
2026-04-10T17:26:20Z
Redmin
6857
[[Special:Contributions/~2026-22115-25|~2026-22115-25]] ([[User talk:~2026-22115-25|আলাপ]])-এর সম্পাদিত [[Special:Diff/507663|507663]] নম্বর সংশোধনটি বাতিল করা হয়েছে
507664
wikitext
text/x-wiki
{{Bengali character info}}
==ভূমিকা==
বাংলা বর্ণমালার নবম ব্যঞ্জনবর্ণ।
=== উচ্চারণ ===
* {{অডিও|bn|LL-Q9610 (ben)-Titodutta-ঝ.wav|অডিও}}
=== বর্ণনা ===
চ-বর্গের চতুর্থ বর্ণ।
==== ব্যবহার ====
====বৈশিষ্ট্য====
এটি প্রশস্ত দন্তমূলীয়; মহাপ্রাণ; ঘোষ স্পর্শধ্বনি।
===উদাহরণ===
[[ঝগড়া]], [[ঝামেলা]], [[ঝড়]], [[ঝাড়ু]], [[ঝাপটা]]
[[বিষয়শ্রেণী:বাংলা ব্যঞ্জনবর্ণ]]
5209iq9gorsxbfgswdbfz6wealdi5gr
টেমপ্লেট:documentation/core
10
2986
507710
64841
2026-04-11T05:12:51Z
Redmin
6857
507710
wikitext
text/x-wiki
<includeonly><!--
Start of green doc box
--><div id="template-documentation" class="template-documentation iezoomfix"><!--
Add the heading at the top of the doc box:
-->{{#ifeq: {{{heading|¬}}} | <!--Defined but empty-->
| <!--"heading=", do nothing-->
| <div style="padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex;">{{
#if: {{{content|}}}
|
| <!--Add the [edit][purge] or [create] links-->
<span class="editsection plainlinks" id="doc_editlinks">{{
#if: {{{doc exist|yes}}}
| [[{{fullurl:{{{docpage|{{FULLPAGENAME}}/নথি}}}|action=edit}} সম্পাদনা]] [{{purge|শোধন}}]
| <!--/doc doesn't exist-->
[[{{fullurl:{{{docpage|{{FULLPAGENAME}}/নথি}}}| action=edit&preload={{
#ifeq: {{SUBJECTSPACE}} | {{ns:File}}
| Template:নথি/প্রাকলোড-ফাইল
| Template:নথি/প্রাকলোড
}} }} তৈরি করুন]]
}}</span>
}} <span style="{{#if: {{{heading-style|}}}
| {{{heading-style|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:Template}}
| font-weight: bold; font-size: 125%
| font-size: 150%
}}
}}">{{#switch: {{{heading|¬}}}
| ¬ =
<!--"heading" not defined in this or previous level-->
{{#switch: {{SUBJECTSPACE}}
| {{ns:Template}} = [[Image:Template-info.svg|50px|alt=|link=]] টেমপ্লেট নথি
| {{ns:File}} = সারাংশ
| #default = নথি
}}
| #default =
<!--"heading" has data or is empty but defined-->
{{{heading|}}}
}}</span></div>
}}<!--
Load the /doc content:
Note: The line breaks between this comment and the if-case
and between the if-case and the following div are necessary so
"=== Headings ===" at the start and end of docs are interpreted.
-->
{{#if: {{{content|}}}
| {{{content|}}}
| {{#if: {{{doc exist|yes}}}
| {{ {{{docpage|{{FULLPAGENAME}}/নথি}}} }}
}}
}}
<div style="clear: both;"></div><!--So right or left floating items don't stick out of the doc box.-->
</div><!--End of green doc box--><!--
Link box below for the doc meta-data:
-->{{#if:
<!--Check if we should show the link box-->
{{#ifeq: {{{link box|}}} | off
|
| {{{doc exist|yes}}}{{
#switch: {{SUBJECTSPACE}}
| {{ns:User}}
| {{ns:Template}} = yes
}}
}}
| {{fmbox
| id = documentation-meta-data
| image = none
| style = background-color: #ecfcf4;
| textstyle = font-style: italic;
| text =
{{#if: {{{link box|}}}
| {{{link box}}} <!--Use custom link box content-->
| {{#if: {{{doc exist|yes}}}
| <!--/doc exists, link to it-->
উপরের টেমপ্লেট নথিটি {{lang||[[{{{docpage|{{FULLPAGENAME}}/নথি}}}]]}} পাতা থেকে প্রতিলিপ্ত। ([{{fullurl:{{{docpage|{{FULLPAGENAME}}/নথি}}}|action=edit}} সম্পাদনা] | [{{fullurl:{{{docpage|{{FULLPAGENAME}}/নথি}}}|action=history}} ইতিহাস]) <br>
}}<!--
Add links to /sandbox and /testcases when appropriate:
-->{{#switch: {{SUBJECTSPACE}}
| {{ns:User}}
| {{ns:Template}} =
ব্যবহারকারীগণ {{
#ifexist: {{{sandbox| {{FULLPAGENAME}}/sandbox }}}
| [[{{{sandbox| {{FULLPAGENAME}}/sandbox }}}|খেলাঘরে]] ([{{fullurl: {{{sandbox| {{FULLPAGENAME}}/sandbox }}} | action=edit }} ''সম্পাদনা''] {{!}} [{{fullurl:Wikipedia:pagediff | withJS={{urlencode:MediaWiki:Common.js/pagediff.js}}&oldpage={{urlencode:{{{template page|{{FULLPAGENAME}}}}}}}&newpage={{urlencode:{{{sandbox|{{FULLPAGENAME}}/sandbox}}}}}}} ''পার্থক্য''] )
| খেলাঘর ([{{fullurl: {{{sandbox| {{FULLPAGENAME}}/sandbox }}} | action=edit&preload=Template:Documentation/preload-sandbox }} ''তৈরি করুন''])
}} ও {{
#ifexist: {{{testcases| {{FULLPAGENAME}}/testcases }}}
| [[{{{testcases| {{FULLPAGENAME}}/testcases }}}|পরীক্ষা পাতায়]] ([{{fullurl: {{{testcases| {{FULLPAGENAME}}/testcases }}} | action=edit }} ''সম্পাদনা''])
| পরীক্ষা পাতায় ([{{fullurl: {{{testcases| {{FULLPAGENAME}}/testcases }}} | action=edit&preload=Template:Documentation/preload-testcases }} ''তৈরি করুন''])
}} এই টেমপ্লেট সংক্রান্ত পরীক্ষা-নিরীক্ষা করতে পারেন। <br>
}}<!--
Show the cats and interwiki text, but not
if "content" fed or "docname fed" since then it is
unclear where to add the cats and interwikis.
-->{{#if: {{{content|}}} {{{docname fed|}}}
|
| অনুগ্রহপূর্বক বিষয়শ্রেণী ও আন্তউইকি সংযোগসমূহ [[{{{docpage|{{FULLPAGENAME}}/নথি}}}|নথির]] উপপাতায় যোগ করুন।
}}<!--
Show the "Subpages" link:
-->{{#switch: {{SUBJECTSPACE}}
| {{ns:File}} = <!--Don't show it-->
| {{ns:Template}} =  [[Special:PrefixIndex/{{{template page|{{FULLPAGENAME}}}}}/|এই টেমপ্লেটের উপপাতাসমূহ]]।
| #default =  [[Special:PrefixIndex/{{{template page|{{FULLPAGENAME}}}}}/|এই পাতার উপপাতাসমূহ]]।
}}
}}{{#ifexist:{{FULLPAGENAME}}/মুদ্রণ
|<br />এই টেমপ্লেটের একটি [[সাহায্য:বই/অভিজ্ঞদের জন্য#বইয়ের বিন্যাসের উৎকর্ষসাধন করা|মুদ্রণ সংস্করণ]] [[/মুদ্রণ]]-এ বিদ্যমান। আপনি যদি এই টেমপ্লেটে পরিবর্তন করেন, তাহলে সেইসাথে মুদ্রণ সংস্করণ হালনাগাদ করুন করুন। [[Category:মুদ্রণ সংস্করণসহ টেমপ্লেট]]
}}
}}
}}<!--End link box-->
</includeonly><!--
Detect and report strange usage:
-->{{#if:
<!--Check if {{documentation}} is transcluded
on a /doc or /testcases page-->
{{#switch: {{SUBPAGENAME}}
| doc
| testcases = strange
}}
<!--More checks can be added here, just return anything
to make the surrounding if-case trigger-->
| <includeonly>[[Category:অদ্ভুত ব্যবহারের সাথে ((নথি)) উইকিঅভিধানের পাতা|{{main other|Main:}}{{FULLPAGENAME}}]]<!-- Sort on namespace --></includeonly>
}}<noinclude>
{{pp-template}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
1fszpm97zfi36mkeyq3u7dlss4ndwjh
অনুরোধ
0
10160
507637
265822
2026-04-10T16:56:58Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1130702-এর সাথে সংযোগ তৈরি করছি
507637
wikitext
text/x-wiki
{{লে|L1130702}}
dwfku2y60aact5e98bpxib2tqiqzrc8
টেমপ্লেট:trans-top
10
12116
507635
507041
2026-04-10T15:31:34Z
Redmin
6857
507635
wikitext
text/x-wiki
{{#invoke:translations|top}}<noinclude>
</table></div></div>{{documentation}}</noinclude>
hp1na2dyhhbyhk1yhtdzd1hfhnnlkig
day
0
14097
507628
80606
2026-04-10T14:44:41Z
Redmin
6857
507628
wikitext
text/x-wiki
== {{ভাষা|en}} ==
===বিশেষ্য===
{{en-বিশেষ্য}}
# [[দিন]]
# [[দিবস]]
g9jqta9rmdu5hfgjhs2bm61efci4nh8
507630
507628
2026-04-10T15:00:17Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1311-এর সাথে সংযোগ তৈরি করছি
507630
wikitext
text/x-wiki
{{লে|L1311}}
qvsvjkr789ryfny6fhqecmoe6rdi65w
মডিউল:আভিধানিক উপাত্ত
828
50158
507629
507543
2026-04-10T14:59:27Z
Redmin
6857
507629
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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
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 getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved
if #senses == 0 then
return nil
end
local translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)))
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getExternalLinks( entity ) -- T418639
local external_links = {}
if entity.claims == nil then return external_links end
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 )
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 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
function getLinkedLemmata( current_lexeme )
local lemma_string = ''
for i, rep in pairs(current_lexeme:getLemmas()) do
if lemma_string == '' then
lemma_string = termLink(rep)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
end
end
return lemma_string
end
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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
function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 = base_form:getAllStatements('P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ
-- @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}
})
end
--elseif #iso15919_transcription ~= 0 then
-- table.insert(pronunciations, '* ')
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title=i18n['template_anchor'],
args={lexeme_id}
} .. '===' )
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = frame:expandTemplate{title=lang_code .. '-adj'}
if lex_cat_template == nil then
lex_cat_template = frame:expandTemplate{title=lang_code .. '-বিশেষণ'}
end
elseif lex_cat == 'Q1084' then
lex_cat_template = frame:expandTemplate{title=lang_code .. '-noun'}
if lex_cat_template == nil then
lex_cat_template = frame:expandTemplate{title=lang_code .. '-বিশেষ্য'}
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
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 )
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
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
if lang_name == 'জার্মান' then -- @TODO: Remove this later
table.insert(sections, '[[Category:যে ভুক্তিগুলোয় জার্মান শব্দের জন্য উইকিউপাত্ত লেক্সিমের তথ্য ব্যবহার করা হচ্ছে]]')
end
return table.concat(sections,"\n\n")
end
return p
q18twllw6b7o1lm05pqrm22zeh3lisf
507633
507629
2026-04-10T15:25:36Z
Redmin
6857
507633
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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
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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved
if #senses == 0 then
return nil
end
local translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)))
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 = base_form:getAllStatements('P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ
-- @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}
})
end
--elseif #iso15919_transcription ~= 0 then
-- table.insert(pronunciations, '* ')
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title=i18n['template_anchor'],
args={lexeme_id}
} .. '===' )
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = frame:expandTemplate{title=lang_code .. '-adj'}
if lex_cat_template == nil then
lex_cat_template = frame:expandTemplate{title=lang_code .. '-বিশেষণ'}
end
elseif lex_cat == 'Q1084' then
lex_cat_template = frame:expandTemplate{title=lang_code .. '-noun'}
if lex_cat_template == nil then
lex_cat_template = frame:expandTemplate{title=lang_code .. '-বিশেষ্য'}
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
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 )
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
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
if lang_name == 'জার্মান' then -- @TODO: Remove this later
table.insert(sections, '[[Category:যে ভুক্তিগুলোয় জার্মান শব্দের জন্য উইকিউপাত্ত লেক্সিমের তথ্য ব্যবহার করা হচ্ছে]]')
end
return table.concat(sections,"\n\n")
end
return p
t741s1vjpt8wbcrzf60b9fojp1a5w8t
507634
507633
2026-04-10T15:29:30Z
Redmin
6857
507634
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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
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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved
if #senses == 0 then
return nil
end
local translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 = base_form:getAllStatements('P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ
-- @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}
})
end
--elseif #iso15919_transcription ~= 0 then
-- table.insert(pronunciations, '* ')
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title=i18n['template_anchor'],
args={lexeme_id}
} .. '===' )
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = frame:expandTemplate{title=lang_code .. '-adj'}
if lex_cat_template == nil then
lex_cat_template = frame:expandTemplate{title=lang_code .. '-বিশেষণ'}
end
elseif lex_cat == 'Q1084' then
lex_cat_template = frame:expandTemplate{title=lang_code .. '-noun'}
if lex_cat_template == nil then
lex_cat_template = frame:expandTemplate{title=lang_code .. '-বিশেষ্য'}
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
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 )
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
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
if lang_name == 'জার্মান' then -- @TODO: Remove this later
table.insert(sections, '[[Category:যে ভুক্তিগুলোয় জার্মান শব্দের জন্য উইকিউপাত্ত লেক্সিমের তথ্য ব্যবহার করা হচ্ছে]]')
end
return table.concat(sections,"\n\n")
end
return p
dg3gjns8hthsez6ffmz11zylsxbhtcd
507636
507634
2026-04-10T15:49:52Z
Redmin
6857
507636
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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)
local success, result = pcall(function()
return frame:expandTemplate{ title = title }
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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved
if #senses == 0 then
return nil
end
local translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 = base_form:getAllStatements('P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ
-- @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}
})
end
--elseif #iso15919_transcription ~= 0 then
-- table.insert(pronunciations, '* ')
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title = i18n['template_anchor'],
args = { lexeme_id }
} .. '===')
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
lex_cat_template = safeExpand(frame, lang_code .. '-noun')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য')
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
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 )
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
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
if lang_name == 'জার্মান' then -- @TODO: Remove this later
table.insert(sections, '[[Category:যে ভুক্তিগুলোয় জার্মান শব্দের জন্য উইকিউপাত্ত লেক্সিমের তথ্য ব্যবহার করা হচ্ছে]]')
end
return table.concat(sections,"\n\n")
end
return p
hz7etozekajhpfnt0kzqvq0elgbgagz
507642
507636
2026-04-10T17:01:10Z
Redmin
6857
507642
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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)
local success, result = pcall(function()
return frame:expandTemplate{ title = title }
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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved
if #senses == 0 then
return nil
end
local translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 = base_form:getAllStatements('P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ
-- @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}
})
end
--elseif #iso15919_transcription ~= 0 then
-- table.insert(pronunciations, '* ')
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title = i18n['template_anchor'],
args = { lexeme_id }
} .. '===')
if lang_code ~= nil then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
lex_cat_template = safeExpand(frame, lang_code .. '-noun')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য')
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
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 )
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
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
if lang_name == 'জার্মান' then -- @TODO: Remove this later
table.insert(sections, '[[Category:যে ভুক্তিগুলোয় জার্মান শব্দের জন্য উইকিউপাত্ত লেক্সিমের তথ্য ব্যবহার করা হচ্ছে]]')
end
return table.concat(sections,"\n\n")
end
return p
r66vohgwlsnpsqrb3lvu93msz6dcaiq
507668
507642
2026-04-10T17:28:50Z
Redmin
6857
507668
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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)
local success, result = pcall(function()
return frame:expandTemplate{ title = title }
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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved
if #senses == 0 then
return nil
end
local translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 = base_form:getAllStatements('P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ
-- @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}
})
end
--elseif #iso15919_transcription ~= 0 then
-- table.insert(pronunciations, '* ')
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title = i18n['template_anchor'],
args = { lexeme_id }
} .. '===')
if lang_code ~= nil then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
lex_cat_template = safeExpand(frame, lang_code .. '-noun')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য')
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
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 )
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
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
ipr5dctvgw0p1boh3qdjvqo2y1zby9f
507675
507668
2026-04-11T00:21:59Z
Redmin
6857
507675
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved
if #senses == 0 then
return nil
end
local translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 = base_form:getAllStatements('P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ
-- @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}
})
end
--elseif #iso15919_transcription ~= 0 then
-- table.insert(pronunciations, '* ')
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title = i18n['template_anchor'],
args = { lexeme_id }
} .. '===')
if lang_code ~= nil then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts > 0 then
local gender_qid = getEntity(stmts[1].mainsnak.datavalue.value.id)
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
end
end
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
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 )
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
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
ls0cy1p3r3tio8103yiv1kgmkg9bf7d
507676
507675
2026-04-11T00:26:39Z
Redmin
6857
507676
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved
if #senses == 0 then
return nil
end
local translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 = base_form:getAllStatements('P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ
-- @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}
})
end
--elseif #iso15919_transcription ~= 0 then
-- table.insert(pronunciations, '* ')
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title = i18n['template_anchor'],
args = { lexeme_id }
} .. '===')
if lang_code ~= nil then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = getEntity(stmts[1].mainsnak.datavalue.value.id)
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
end
end
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
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 )
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
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
137wdj6ol2bhxlm37xtss1cxi26ijjd
507706
507676
2026-04-11T05:08:30Z
Redmin
6857
+ব্যাকরণগত লিঙ্গ
507706
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved
if #senses == 0 then
return nil
end
local translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 = base_form:getAllStatements('P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ
-- @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}
})
end
--elseif #iso15919_transcription ~= 0 then
-- table.insert(pronunciations, '* ')
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title = i18n['template_anchor'],
args = { lexeme_id }
} .. '===')
if lang_code ~= nil then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = stmts[1].mainsnak.datavalue.value.id
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
end
end
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
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 )
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
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
r70v0l1rz8z0z2vi2xjh57j63rveqm6
507719
507706
2026-04-11T05:21:31Z
Redmin
6857
507719
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 getTranslations(frame, senses) -- TODO: woefully incomplete until T185313 and T199887 are resolved
if #senses == 0 then
return nil
end
local translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 = base_form:getAllStatements('P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ
-- P8881 (ITRANS)
-- @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}
})
end
--elseif #iso15919_transcription ~= 0 then
-- table.insert(pronunciations, '* ')
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title = i18n['template_anchor'],
args = { lexeme_id }
} .. '===')
if lang_code ~= nil then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = stmts[1].mainsnak.datavalue.value.id
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
end
end
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
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 )
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
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
ob5js1tp6zd92s7pdaw4ndqsvn7p5ok
507720
507719
2026-04-11T05:56:36Z
Redmin
6857
+ আইএসও ১৫৯১৯ প্রতিলিপিকরণ
507720
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 P8881 (ITRANS)
-- @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}
})
end
elseif #iso15919_transcription ~= nil then
table.insert(pronunciations, '* আইএসও ১৫৯১৯: ' .. iso15919_transcription)
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title = i18n['template_anchor'],
args = { lexeme_id }
} .. '===')
if lang_code ~= nil then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = stmts[1].mainsnak.datavalue.value.id
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
end
end
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
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 )
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
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
eohghsbmuyipxn2s558hjfwrfsudcjt
507721
507720
2026-04-11T06:04:14Z
Redmin
6857
507721
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 P8881 (ITRANS)
-- @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}
})
end
elseif #iso15919_transcription ~= nil then
table.insert(pronunciations, '* আইএসও ১৫৯১৯: ' .. iso15919_transcription)
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. 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 )
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 then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = stmts[1].mainsnak.datavalue.value.id
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
end
end
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
8bti9ddd2b7kwniew64jrrvmjovfld7
507722
507721
2026-04-11T06:21:53Z
Redmin
6857
507722
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 P8881 (ITRANS)
-- @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}
})
end
elseif iso15919_transcription ~= nil then
table.insert(pronunciations, '* আইএসও ১৫৯১৯: ' .. iso15919_transcription)
-- 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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. 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 )
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 then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = stmts[1].mainsnak.datavalue.value.id
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
end
end
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
gtl7llkw7yvqbzz4hldi2y0ifopv4ze
507724
507722
2026-04-11T06:32:38Z
Redmin
6857
507724
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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 P8881 (ITRANS)
-- @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}
})
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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-IPA',
})
end
if iso15919_transcription ~= nil then
table.insert(pronunciations, '* ' .. i18n['text_iso15919'] .. ': ' .. iso15919_transcription)
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. 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 )
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 then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = stmts[1].mainsnak.datavalue.value.id
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
end
end
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
ou17b58yqjegi2sgylpyi1i1vjwjal9
507729
507724
2026-04-11T06:45:51Z
Redmin
6857
+ITRANS ও আইএএসটি
507729
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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') -- আইএএসটি প্রতিলিপিকরণ
-- @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}
})
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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-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_transcription ~= nil then
table.insert(pronunciations, '* ' .. i18n['text_iast'] .. ': ' .. iast_transcription)
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. 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 )
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 then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = stmts[1].mainsnak.datavalue.value.id
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
end
end
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
fpcygjnojb87em5tijuadzmfc1mihxf
507733
507729
2026-04-11T07:09:24Z
Redmin
6857
507733
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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') -- আইএএসটি প্রতিলিপিকরণ
-- @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}
})
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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-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_transcription ~= nil then
table.insert(pronunciations, '* ' .. i18n['text_iast'] .. ': ' .. iast_transcription)
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. 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 )
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 then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = stmts[1].mainsnak.datavalue.value.id
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
end
end
if current_language ~= 'Q11059' then
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
else -- These templates require the gender to be passed via a (differently) named argument.
lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}}
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
6ogbn40ueinz6cpemjjekqybljmnrc4
507737
507733
2026-04-11T07:22:28Z
Redmin
6857
507737
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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') -- আইএএসটি প্রতিলিপিকরণ
-- @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}
})
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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-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_transcription ~= nil then
table.insert(pronunciations, '* ' .. i18n['text_iast'] .. ': ' .. iast_transcription)
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. 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 )
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 then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = stmts[1].mainsnak.datavalue.value.id
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
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 == 'Q11059' then
lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}}
elseif current_language == 'Q13955' then
lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}}
else -- These templates require the gender to be passed as the 1st argument.
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
8rmlgv41rlwqo7tr2jioskag1obwynm
507739
507737
2026-04-11T07:25:42Z
Redmin
6857
507739
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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') -- আইএএসটি প্রতিলিপিকরণ
-- @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}
})
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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-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_transcription ~= nil then
table.insert(pronunciations, '* ' .. i18n['text_iast'] .. ': ' .. iast_transcription)
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. 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 )
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 then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = stmts[1].mainsnak.datavalue.value.id
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
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
lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}}
elseif current_language == 'Q11059' then
lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}}
else -- These templates require the gender to be passed as the 1st argument.
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
rb42a68xkxijkft5t7xrkret6vodhts
507741
507739
2026-04-11T07:31:46Z
Redmin
6857
507741
Scribunto
text/plain
local p = {}
local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n')
local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format
local getArgs = require('Module:Arguments').getArgs
local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls
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 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, "آ", "ا")
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 success, 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
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 )
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 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)
else
lemma_string = lemma_string .. '/' .. termLink(rep)
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
example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ
local example_form_str = nil
if stmt.qualifiers['P1810'] ~= nil then
example_form_str = stmt.qualifiers['P1810'][1].datavalue.value
end
if example_form_str == nil then
example_form_str = example_form:getRepresentation(i18n['content_lang_code'])
end
if example_form_str == nil then
example_form_str = example_form:getRepresentations()[1][1]
end
example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''")
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
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 translation_set = {}
for i, sense in pairs(senses) do
for i, stmt in pairs(sense:getAllStatements('P5972')) do
translation = stmt.mainsnak.datavalue.value.id
local lexeme_id, sense_id = wb.lexeme.splitLexemeId(translation)
language = wb.getLabel(getEntity(lexeme_id):getLanguage())
gloss = sense:getGloss('bn')
table.insert(translation_set, language .. ': ' .. getLinkedLemmata(getEntity(lexeme_id)) .. '<br/>')
end
end
if #translation_set == 0 then
return nil
end
local translations = frame:expandTemplate{title = i18n['template_trans-top'], args={gloss}}
translations = '====' .. i18n['heading_translation'] .. '==== \n' .. translations .. table.concat(translation_set, '\n') .. frame:expandTemplate{title = i18n['template_trans-bottom']}
return translations
end
local function getCategory( lang_category, cat_id )
local cat_text = wb.getLabel( cat_id )
local lang_categories = i18n['lang_categories']
if lang_categories[lang_category] ~= nil then
local lang_cat = lang_categories[lang_category]
if lang_cat[cat_id] ~= nil then
cat_text = cat_text .. '[[Category:' .. lang_cat[cat_id] .. ']]'
else
cat_text = cat_text .. '[[Category:' .. lang_cat['_'] .. ']]'
end
else
cat_text = cat_text .. '[[Category:' .. i18n['maintenance_no_lang_category_found'] .. ']]'
end
return cat_text
end
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <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'] .. "''" .. '[[Category:' .. 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
stmt_value = stmt.mainsnak.datavalue.value.id
table.insert(specifiers, wb.getLabel(stmt_value, i18n['content_lang_code']))
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 .. '[[' .. 'Category:' .. 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 .. '[[Category:' .. 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 i, 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 i, 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 i, 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
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
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
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)
end
function getEtymology ( current_lexeme )
-- TODO: see if any etymology chains are not possible to render
local etymology = ''
local current_combines = getCombines(current_lexeme)
local current_roots = 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
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 ~= '' then
etymology = etymology .. '<br/>(' .. current_combines .. ')'
end
return etymology
end
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
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') -- আইএএসটি প্রতিলিপিকরণ
-- @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}
})
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_name == 'ফিনীয়' then
table.insert(pronunciations, '* ' .. frame:expandTemplate{
title='fi-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_transcription ~= nil then
table.insert(pronunciations, '* ' .. i18n['text_iast'] .. ': ' .. iast_transcription)
end
end -- {{আধ্বব|en|/ˈɪntəvjuː/}}
return table.concat(pronunciations, '\n')
end
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
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
-- 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 buildLanguageAgnosticInflectionTable(forms)
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)
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) -- This should remain available to all functions.
local title = mw.title.getCurrentTitle().text
local lang_category = getLanguageForCategories(current_language, title)
local cat = getCategory( lang_category, lex_cat )
local lex_cat_template
if cat ~= nil then
table.insert(sections, '===' .. 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 )
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 then
if lex_cat == 'Q34698' then -- বিশেষণ
lex_cat_template = safeExpand(frame, lang_code .. '-adj')
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ')
end
elseif lex_cat == 'Q1084' then
local gender
local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ
if #stmts ~= 0 then
local gender_qid = stmts[1].mainsnak.datavalue.value.id
if gender_qid == 'Q499327' then -- @TODO: Add checks for every possible circumstance
gender = 'm'
elseif gender_qid == 'Q1775415' then
gender = 'f'
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
lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}}
elseif current_language == 'Q29919' then
lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}}
elseif current_language == 'Q11059' then
lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}}
else -- These templates require the gender to be passed as the 1st argument.
lex_cat_template = safeExpand(frame, lang_code .. '-noun', {gender})
if not lex_cat_template then
lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষ্য', {gender})
end
end
end
end
end
if lex_cat_template ~= nil then
table.insert(sections, lex_cat_template)
end
local meanings, references_seen = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name))
if lex_cat_template == nil then
local lemmas = current_lexeme:getLemmas()
local matched_lemma = nil
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
if matched_lemma ~= nil then
table.insert(sections, heading_level(matched_lemma, 4))
else
table.insert(sections, '[[Category:যেসব ভুক্তিতে লেমার হেডিং দেখানো অসম্ভব]]')
end
end
table.insert(sections, tostring(meanings))
add_any_notes(sections, args, i18n['manual_meaning'])
local instance_of = current_lexeme:getBestStatements('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' then -- @TODO: generalise this so all types of roots are shown
local instance_of_value = '#' .. i18n['text_instance_of'] .. ' ' .. wb.getLabel(instance_of_entity)
table.insert(sections, instance_of_value)
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 -- বাংলা
local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getInflectionTable(frame, current_lexeme)
table.insert(sections, conjTable)
--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)) -- German noun declension table, enable once T422299 is resolved
-- end
else
if current_language ~= 'Q1860' then -- ইংরেজি
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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, '[[Category:' .. i18n['category_rfref'][lang_category] .. ']]')
else
table.insert(sections, '[[Category:' .. i18n['category_rfref']['_'] .. ']]')
end
end
return table.concat(sections,"\n\n")
end
return p
eklk5d4axrnfdttijhmvhag5gp1gamc
মডিউল:আভিধানিক উপাত্ত/নথি
828
50210
507744
506746
2026-04-11T09:35:34Z
Redmin
6857
/* ব্যবহার */
507744
wikitext
text/x-wiki
এই মডিউলটি বর্তমানে পরীক্ষামূলক পর্যায়ে রয়েছে।
==ব্যবহার==
<code><nowiki>{{#invoke:আভিধানিক উপাত্ত|all| লেক্সিম নং }}</nowiki></code>
উদা:
<code><nowiki>{{#invoke:আভিধানিক উপাত্ত|all|L301993}}</nowiki></code>
ভাষার সেকশন হেডিং বাদ দিতে চাইলে টেম্পলেটটি এভাবে ব্যবহার করবেন:
<code><nowiki>{{#invoke:আভিধানিক উপাত্ত|all|L301993|না}}</nowiki></code>
এই মডিউলের কিছু ব্যবহার দেখতে এই পাতাগুলো দেখুন: '''[[হৃদয়]]''', '''[[knife]]''', '''[[س ك ن]]''', '''[[double]]'''।
tm2xcc8r8l9olvtl1f1qg4i5trg55b2
টেমপ্লেট:feminine plural of
10
66867
507626
278896
2026-04-10T14:43:11Z
Redmin
6857
507626
wikitext
text/x-wiki
<includeonly>{{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!--
-->{{#invoke:form of/templates|tagged_form_of_t|f|p}}<!--
-->}}</includeonly><!--
--><noinclude>{{documentation}}</noinclude>
j8im1k1ksu365sk7wtww44zouva7mq0
ব্যবহারকারী:Redmin/খেলাঘর
2
66884
507715
507445
2026-04-11T05:16:48Z
Redmin
6857
507715
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,
Z29940, Z17866, Z30837, Z32787, Z32793, Z10029, Z11795, Z31772
[[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"}
}
)
{{#invoke:আভিধানিক উপাত্ত|all|L1468442}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1495773}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1340}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L348189|false}}
{{লে|L348189}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L34813}}
{{লে|L12321}}
{{লে|L5725}}
{{#function:Z28602|L300026|}}
{{#function:Z27861|<div style="text-align: center;">Test</div>}}
{{#function:Z31729|{{#function:Z27861<div>Text</div>}}}}
hxfj6phhnwxqp94s9igon0keysmi1wg
507727
507715
2026-04-11T06:39:02Z
Redmin
6857
507727
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 <br />
Z29940, Z17866, Z30837, Z32787, Z32793, Z10029, Z11795, Z31772
[[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"}
}
)
{{#invoke:আভিধানিক উপাত্ত|all|L1468442}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1495773}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1340}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L348189|false}}
{{লে|L348189}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L34813}}
{{লে|L12321}}
{{লে|L5725}}
{{#function:Z28602|L300026|}}
{{#function:Z27861|<div style="text-align: center;">Test</div>}}
{{#function:Z31729|{{#function:Z27861<div>Text</div>}}}}
guiiefjydg8m1nflg5raxf3geob4zsu
টেমপ্লেট:masculine plural of
10
67134
507632
184789
2026-04-10T15:07:01Z
Redmin
6857
507632
wikitext
text/x-wiki
<includeonly>{{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!--
-->{{#invoke:form of/templates|tagged_form_of_t|m|p}}<!--
-->}}</includeonly><noinclude>{{documentation}}</noinclude>
qr7vubajq71ekioljo3nry936gud6d5
টেমপ্লেট:sa-noun
10
72911
507732
325698
2026-04-11T07:04:17Z
Redmin
6857
507732
wikitext
text/x-wiki
{{#invoke:sa-headword|show|nouns}} {{#if:{{{1|}}}|{{#switch:{{{1|}}}|c={{tlb|sa|Classical}}|v={{tlb|sa|Vedic}}|n={{tlb|sa|New Sanskrit}}}}}}
rernljxwkrvnjiluonrq576dvfg7tnj
টেমপ্লেট:dated form of
10
123893
507711
251598
2026-04-11T05:13:38Z
Redmin
6857
507711
wikitext
text/x-wiki
<includeonly>{{ {{#if:{{{ভাষা|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{ভাষা|}}}|<!--
-->{{#invoke:form of/templates|form_of_t|[[Appendix:Glossary#dated|dated]] form of|cat=dated forms|withcap=1|withdot=1}}<!--
-->}}</includeonly><noinclude>{{নথি}}[[Category:Form-of templates]]</noinclude>
sk637j0owp4f7t1uhn737zi384k5nzw
টেমপ্লেট:diminutive of
10
123897
507714
251602
2026-04-11T05:14:54Z
Redmin
6857
507714
wikitext
text/x-wiki
<includeonly>{{ {{#if:{{{ভাষা|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{ভাষা|}}}|<!--
-->{{#invoke:form of/templates|tagged_form_of_t|dim|cat=diminutive {{{POS|বিশেষ্য}}}s|ignore=POS}}<!--
-->}}</includeonly><noinclude>{{নথি}}</noinclude>
4q1qp3pefokx4kty0o59gbr4236bxio
টেমপ্লেট:ellipsis of
10
123903
507743
251608
2026-04-11T09:32:55Z
Redmin
6857
507743
wikitext
text/x-wiki
<includeonly>{{ {{#if:{{{ভাষা|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{ভাষা|}}}|<!--
-->{{#invoke:form of/templates|form_of_t|{{glossary|ellipsis}} of|withcap=1|withdot=1|cat=ellipses}}<!--
-->}}</includeonly><noinclude>{{নথি}}</noinclude>
nsgvqk55onzvlh5q4llwnso0256ymxg
টেমপ্লেট:genitive of
10
123917
507627
251622
2026-04-10T14:43:41Z
Redmin
6857
507627
wikitext
text/x-wiki
<includeonly>{{deprecated code|tooltip=[[Template:genitive of]] is deprecated. Use [[Template:infl of]].|{{#invoke:form of/templates|tagged_form_of_t|gen}}}}<!--
--></includeonly><noinclude>{{নথি}}</noinclude>
kbdh3ox026k2e6xuktif5luzynn2b5c
টেমপ্লেট:masculine of
10
124013
507708
325632
2026-04-11T05:10:57Z
Redmin
6857
507708
wikitext
text/x-wiki
<includeonly>{{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!--
-->{{#invoke:form of/templates|tagged_form_of_t|m}}<!--
-->}}<</includeonly>!--
--><noinclude>{{documentation}}</noinclude>
m7ufzhfcl1coxayrzyb8rpp0m1gwmg2
507709
507708
2026-04-11T05:11:11Z
Redmin
6857
507709
wikitext
text/x-wiki
<includeonly>{{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!--
-->{{#invoke:form of/templates|tagged_form_of_t|m}}<!--
-->}}</includeonly><noinclude>{{documentation}}</noinclude>
bfmh2g0jufc9rux7ivqldxhvn49k8ff
ব্যবহারকারী:Sabah Azman Nahean
2
147266
507674
507621
2026-04-10T23:54:42Z
Sabah Azman Nahean
12022
/* ভুক্তি */
507674
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>
|}
==ভুক্তি==
#[[ἐμμένω]]
#[[antiprejudice]]
#[[terminate with extreme prejudice]]
#[[self-prejudice]]
#[[prejudicious]]
#[[prejudicer]]
#[[prejudiceless]]
#[[postjudice]]
#[[in prejudice of]]
#[[homoprejudice]]
#[[heteroprejudice]]
#[[extreme prejudice]]
#[[disprejudice]]
#[[counterprejudice]]
#[[biprejudice]]
#[[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]]
#[[اب]]
#[[أبابة]]
#[[أباب]]
#[[أبو]]
#[[آب]]
#[[أب]]
#[[عم]]
#[[में]]
#[[परछाई]]
#[[परछाईं]]
#[[परवाना]]
#[[पराकाष्ठा]]
#[[إصبع]]
#[[افترى]]
#[[एतानि]]
#[[एतद्]]
==টেমপ্লেট==
# [[টেমপ্লেট: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]]
#[[ভিতর]]
===পরবর্তী দর্শন===
#[[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) প্রতিবিম্ব।
|}
iy0trrpxpjnnbkexvdpk3z8skmkdwmo
507681
507674
2026-04-11T03:34:55Z
Sabah Azman Nahean
12022
507681
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>
|}
==ভুক্তি==
#[[ἐμμένω]]
#[[antiprejudice]]
#[[terminate with extreme prejudice]]
#[[self-prejudice]]
#[[prejudicious]]
#[[prejudicer]]
#[[prejudiceless]]
#[[postjudice]]
#[[in prejudice of]]
#[[homoprejudice]]
#[[heteroprejudice]]
#[[extreme prejudice]]
#[[disprejudice]]
#[[counterprejudice]]
#[[biprejudice]]
#[[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]]
#[[اب]]
#[[أبابة]]
#[[أباب]]
#[[أبو]]
#[[آب]]
#[[أب]]
#[[عم]]
#[[में]]
#[[परछाई]]
#[[परछाईं]]
#[[परवाना]]
#[[पराकाष्ठा]]
#[[إصبع]]
#[[افترى]]
#[[एतानि]]
#[[एतद्]]
==টেমপ্লেট==
# [[টেমপ্লেট: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]]
#[[ভিতর]]
===পরবর্তী দর্শন===
#[[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) প্রতিবিম্ব।
|}
osvmievjovts6qpu344n7f8nfagn7qu
507697
507681
2026-04-11T04:13:26Z
Sabah Azman Nahean
12022
507697
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>
|}
==ভুক্তি==
#[[تحامل]]
#[[تحيز]]
#[[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]]
==টেমপ্লেট==
# [[টেমপ্লেট: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]]
#[[ভিতর]]
===পরবর্তী দর্শন===
#[[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) প্রতিবিম্ব।
|}
ikfp4xv6g2d6atniu6u8i14qwmdlkg1
507700
507697
2026-04-11T04:22:25Z
Sabah Azman Nahean
12022
507700
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>
|}
==ভুক্তি==
#[[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]]
#[[تحامل]]
#[[تحيز]]
==টেমপ্লেট==
# [[টেমপ্লেট: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]]
#[[ভিতর]]
===পরবর্তী দর্শন===
#[[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) প্রতিবিম্ব।
|}
nvi5fp91srnr9k836vxm3tcc40rrvfu
মডিউল:আভিধানিক উপাত্ত/i18n
828
148710
507723
507509
2026-04-11T06:30:45Z
Redmin
6857
507723
Scribunto
text/plain
local p = {}
p['wikipedia'] = 'bnwiki'
p['content_lang_name'] = 'বাংলা'
p['content_lang_code'] = 'bn'
p['heading_etymology'] = 'ব্যুৎপত্তি'
p['heading_pronunciation'] = 'উচ্চারণ'
p['heading_translation'] = 'অনুবাদ'
p['heading_references'] = 'তথ্যসূত্র'
p['heading_external_links'] = 'বহিঃসংযোগ'
p['heading_alternative_spellings'] = 'বিকল্প বানান'
p['heading_inflection_table'] = 'বিভক্তির সারণী'
p['heading_form'] = 'রূপ'
p['heading_grammatical_features'] = 'ব্যাকরণিক বৈশিষ্ট্য'
p['heading_image'] = 'চিত্র'
p['text_instance_of'] = 'একটি'
p['text_audio'] = 'অডিও'
p['text_iso15919'] = 'আইএসও ১৫৯১৯'
p['template_lexeme'] = 'উইকিউপাত্ত লেক্সিম' -- Q81739987
p['template_wikipedia'] = 'উইকিপিডিয়া' -- Q6275256
p['template_audio'] = 'অডিও ভাষার নাম' -- Q138620346
p['template_anchor'] = 'anchor' -- Q5412976
p['template_rfdef'] = 'rfdef' -- Q30733154
p['template_ipa'] = 'আধ্বব ভাষার নাম' -- Q138608718
p['template_trans-top'] = 'অনুবাদ-শীর্ষ' -- Q30528422
p['template_trans-bottom'] = 'অনুবাদ-নিচ' -- Q30528419
p['template_antonym'] = 'বিপরীতার্থক' -- Q35305357
p['template_synonym'] = 'synonyms' -- Q32751230
p['template_hypernym'] = 'hypernyms' -- Q35305454
p['template_demonym-noun'] = 'demonym-noun' -- Q130360250
p['template_demonym-adj'] = 'demonym-adj' -- Q135184225
p['template_homophones'] = 'সমোচ্চারিত' -- Q30557565
p['manual_category'] = {'বিষয়শ্রেণী', 'category'}
p['manual_etymology'] = {'ব্যুৎপত্তি', 'etymology'}
p['manual_pronunciation'] = {'উচ্চারণ', 'pronunciation'}
p['manual_meaning'] = {'অর্থ', 'meaning'}
p['manual_reference'] = {'তথ্যসূত্র', 'reference'}
p['manual_external_link'] = {'বহিঃসংযোগ', 'external_link'}
p['etymology_borrowing'] = '$1 থেকে ঋণকৃত'
p['etymology_learned_borrowing'] = '$1 থেকে শিক্ষিতভাবে ঋণকৃত'
p['etymology_inheritance'] = '$1 থেকে আগত'
p['edit_wikidata'] = 'উইকিউপাত্তে সম্পাদনা করুন'
-- বিষয়শ্রেণী যেগুলো অন্য উইকিঅভিধানে আছে
p['category_rfdef'] = 'ভাষা অনুযায়ী সংজ্ঞার জন্য অনুরোধ' -- Q33129136
p['category_rfdef_equivalent'] = 'শব্দার্থের বাংলা মানের অনুরোধ' -- [[:wikt:en:Category:Requests for English equivalent term by language]]-এর কাছাকাছি
p['category_rfref'] = {
['_'] = 'ভাষা অনুযায়ী তথ্যসূত্রের জন্য অনুরোধ', -- Q121206294
['Q9610'] = 'তথ্যসূত্রহীন বাংলা শব্দ', -- [[:wikt:en:Category:Requests for references for Bengali terms]]
['Q6400661'] = 'তথ্যসূত্রহীন খরিয়া থার শব্দ',
}
p['category_given_names'] = 'প্রদত্ত নাম' -- Q8492384
-- বিষয়শ্রেণী যেগুলো অন্য উইকিঅভিধানে নেই
p['maintenance_no_lang_category_found'] = 'যে শব্দের ভাষা-পদ বিষয়শ্রেণী নেই'
p['text_category_rfdef'] = 'এই শব্দের লেক্সিমে অর্থ প্রয়োজন। দয়া করে লেক্সিম পাতায় গিয়ে একটি অর্থ যোগ করুন, যাতে অন্য পাঠকরা জানতে পারবে এটা মানে কি।'
p['lang_categories'] = { -- lexeme:getLanguage() , lexeme:getLexicalCategory()
['Q9610'] = {
['_'] = 'বাংলা লেমা', -- Q31156836
['Q1084'] = 'বাংলা বিশেষ্য', -- Q30566205
['Q24905'] = 'বাংলা ক্রিয়া', -- Q32858877
['Q34698'] = 'বাংলা বিশেষণ', -- Q32019867
['Q380057'] = 'বাংলা ক্রিয়াবিশেষণ', -- Q32773652
['Q147276'] = 'বাংলা নামবাচক বিশেষ্য', -- Q31161898
['Q134830'] = 'বাংলা উপসর্গ', -- Q54488622
['Q102047'] = 'বাংলা প্রত্যয়', -- Q107174314
},
['Q1860'] = {
['_'] = 'ইংরেজি লেমা', -- Q30524923
['Q1084'] = 'ইংরেজি বিশেষ্য', -- Q30428207
['Q24905'] = 'ইংরেজি ক্রিয়া', -- Q30430933
['Q34698'] = 'ইংরেজি বিশেষণ', -- Q30430962
['Q380057'] = 'ইংরেজি ক্রিয়াবিশেষণ', -- Q30445981
},
['Q150'] = {
['_'] = 'ফরাসি লেমা', -- Q30524925
['Q1084'] = 'ফরাসি বিশেষ্য', -- Q30429760
['Q34698'] = 'ফরাসি বিশেষণ', -- Q30525026
},
['Q9072'] = {
['_'] = 'এস্তোনীয় লেমা', -- Q31158076
['Q1084'] = 'এস্তোনীয় বিশেষ্য', -- Q30429759
['Q147276'] = 'এস্তোনীয় নামবাচক বিশেষ্য', -- Q31081072
},
['Q397'] = {
['_'] = 'লাতিন লেমা', -- Q31158138
['Q1084'] = 'লাতিন বিশেষ্য', -- Q30525219
},
['Q652'] = {
['_'] = 'ইতালীয় লেমা', -- Q32661094
['Q1084'] = 'ইতালীয় বিশেষ্য', -- Q30449614
['Q34698'] = 'ইতালীয় বিশেষণ', -- Q30525206
},
['Q11051hi'] = { -- যেহেতু হিন্দি ও উর্দু লেক্সিম 'হিন্দুস্তানি' হিসেবে যোগ করা হয়েছে
['_'] = 'হিন্দি লেমা', -- Q31165202
['Q1084'] = 'হিন্দি বিশেষ্য', -- Q30565856
['Q34698'] = 'হিন্দি বিশেষণ', -- Q30569864
['Q147276'] = 'হিন্দি নামবাচক বিশেষ্য', -- Q31159486
},
['Q11051ur'] = { -- যেহেতু হিন্দি ও উর্দু লেক্সিম 'হিন্দুস্তানি' হিসেবে যোগ করা হয়েছে
['_'] = 'উর্দু লেমা', -- Q32159501
['Q1084'] = 'উর্দু বিশেষ্য', -- Q30566217
['Q147276'] = 'উর্দু নামবাচক বিশেষ্য', -- Q31073525
},
['Q29401'] = {
['_'] = 'অসমীয়া লেমা', -- Q32151243
['Q1084'] = 'অসমীয়া বিশেষ্য', -- Q31144600
['Q24905'] = 'অসমীয়া ক্রিয়া', -- Q109571153
['Q34698'] = 'অসমীয়া বিশেষণ', -- Q32856444
['Q147276'] = 'অসমীয়া নামবাচক বিশেষ্য', -- Q32139276
},
['Q9142'] = {
['_'] = 'আইরিশ লেমা', -- Q31159081
['Q147276'] = 'আইরিশ নামবাচক বিশেষ্য', -- Q31076254
},
['Q13955'] = {
['_'] = 'আরবি লেমা', -- Q31158513
['Q1084'] = 'আরবি বিশেষ্য', -- Q30449691
['Q34698'] = 'আরবি বিশেষণ', -- Q30525210
['Q147276'] = 'আরবি নামবাচক বিশেষ্য', -- Q30567180
},
['Q8748'] = {
['_'] = 'আলবেনীয় লেমা', -- Q33141043
['Q1084'] = 'আলবেনীয় বিশেষ্য', -- Q30527873
['Q147276'] = 'আলবেনীয় নামবাচক বিশেষ্য', -- Q31048315
},
['Q9035'] = {
['_'] = 'দিনেমার লেমা', -- Q31158058
['Q147276'] = 'দিনেমার নামবাচক বিশেষ্য', -- Q31075760
},
['Q9027'] = {
['_'] = 'সুইডিশ লেমা', -- Q31158250
['Q147276'] = 'সুইডিশ নামবাচক বিশেষ্য', -- Q30567573
},
['Q11059'] = {
['_'] = 'সংস্কৃত লেমা',
['Q1084'] = 'সংস্কৃত বিশেষ্য', -- Q30567377
['Q34698'] = 'সংস্কৃত বিশেষণ', -- Q31095528
},
['Q6400661'] = {
['_'] = 'খরিয়া থার লেমা',
['Q1084'] = 'খরিয়া থার বিশেষ্য'
},
['Q2044560'] = {
['_'] = 'সিলেটি লেমা', -- Q33669037
['Q1084'] = 'সিলেটি বিশেষ্য', -- Q114733585
['Q34698'] = 'সিলেটি বিশেষণ', -- Q114734349
['Q24905'] = 'সিলেটি ক্রিয়া', -- Q114734310
['Q380057'] = 'সিলেটি ক্রিয়াবিশেষণ', -- Q114733811
['Q36224'] = 'সিলেটি সর্বনাম', -- Q114734403
['Q147276'] = 'সিলেটি নামবাচক বিশেষ্য', -- Q115663802
},
['Q9176'] = {
['_'] = 'কোরীয় লেমা', -- Q31159187
['Q147276'] = 'কোরীয় নামবাচক বিশেষ্য' -- Q31101131
}
}
return p
q8viqergtq6ev8kyd5uti3513bbc0iw
507728
507723
2026-04-11T06:43:18Z
Redmin
6857
+ITRANS and আইএএসটি
507728
Scribunto
text/plain
local p = {}
p['wikipedia'] = 'bnwiki'
p['content_lang_name'] = 'বাংলা'
p['content_lang_code'] = 'bn'
p['heading_etymology'] = 'ব্যুৎপত্তি'
p['heading_pronunciation'] = 'উচ্চারণ'
p['heading_translation'] = 'অনুবাদ'
p['heading_references'] = 'তথ্যসূত্র'
p['heading_external_links'] = 'বহিঃসংযোগ'
p['heading_alternative_spellings'] = 'বিকল্প বানান'
p['heading_inflection_table'] = 'বিভক্তির সারণী'
p['heading_form'] = 'রূপ'
p['heading_grammatical_features'] = 'ব্যাকরণিক বৈশিষ্ট্য'
p['heading_image'] = 'চিত্র'
p['text_instance_of'] = 'একটি'
p['text_audio'] = 'অডিও'
p['text_iso15919'] = 'আইএসও ১৫৯১৯'
p['text_itrans'] = 'ITRANS'
p['text_iast'] = 'আইএএসটি'
p['template_lexeme'] = 'উইকিউপাত্ত লেক্সিম' -- Q81739987
p['template_wikipedia'] = 'উইকিপিডিয়া' -- Q6275256
p['template_audio'] = 'অডিও ভাষার নাম' -- Q138620346
p['template_anchor'] = 'anchor' -- Q5412976
p['template_rfdef'] = 'rfdef' -- Q30733154
p['template_ipa'] = 'আধ্বব ভাষার নাম' -- Q138608718
p['template_trans-top'] = 'অনুবাদ-শীর্ষ' -- Q30528422
p['template_trans-bottom'] = 'অনুবাদ-নিচ' -- Q30528419
p['template_antonym'] = 'বিপরীতার্থক' -- Q35305357
p['template_synonym'] = 'synonyms' -- Q32751230
p['template_hypernym'] = 'hypernyms' -- Q35305454
p['template_demonym-noun'] = 'demonym-noun' -- Q130360250
p['template_demonym-adj'] = 'demonym-adj' -- Q135184225
p['template_homophones'] = 'সমোচ্চারিত' -- Q30557565
p['manual_category'] = {'বিষয়শ্রেণী', 'category'}
p['manual_etymology'] = {'ব্যুৎপত্তি', 'etymology'}
p['manual_pronunciation'] = {'উচ্চারণ', 'pronunciation'}
p['manual_meaning'] = {'অর্থ', 'meaning'}
p['manual_reference'] = {'তথ্যসূত্র', 'reference'}
p['manual_external_link'] = {'বহিঃসংযোগ', 'external_link'}
p['etymology_borrowing'] = '$1 থেকে ঋণকৃত'
p['etymology_learned_borrowing'] = '$1 থেকে শিক্ষিতভাবে ঋণকৃত'
p['etymology_inheritance'] = '$1 থেকে আগত'
p['edit_wikidata'] = 'উইকিউপাত্তে সম্পাদনা করুন'
-- বিষয়শ্রেণী যেগুলো অন্য উইকিঅভিধানে আছে
p['category_rfdef'] = 'ভাষা অনুযায়ী সংজ্ঞার জন্য অনুরোধ' -- Q33129136
p['category_rfdef_equivalent'] = 'শব্দার্থের বাংলা মানের অনুরোধ' -- [[:wikt:en:Category:Requests for English equivalent term by language]]-এর কাছাকাছি
p['category_rfref'] = {
['_'] = 'ভাষা অনুযায়ী তথ্যসূত্রের জন্য অনুরোধ', -- Q121206294
['Q9610'] = 'তথ্যসূত্রহীন বাংলা শব্দ', -- [[:wikt:en:Category:Requests for references for Bengali terms]]
['Q6400661'] = 'তথ্যসূত্রহীন খরিয়া থার শব্দ',
}
p['category_given_names'] = 'প্রদত্ত নাম' -- Q8492384
-- বিষয়শ্রেণী যেগুলো অন্য উইকিঅভিধানে নেই
p['maintenance_no_lang_category_found'] = 'যে শব্দের ভাষা-পদ বিষয়শ্রেণী নেই'
p['text_category_rfdef'] = 'এই শব্দের লেক্সিমে অর্থ প্রয়োজন। দয়া করে লেক্সিম পাতায় গিয়ে একটি অর্থ যোগ করুন, যাতে অন্য পাঠকরা জানতে পারবে এটা মানে কি।'
p['lang_categories'] = { -- lexeme:getLanguage() , lexeme:getLexicalCategory()
['Q9610'] = {
['_'] = 'বাংলা লেমা', -- Q31156836
['Q1084'] = 'বাংলা বিশেষ্য', -- Q30566205
['Q24905'] = 'বাংলা ক্রিয়া', -- Q32858877
['Q34698'] = 'বাংলা বিশেষণ', -- Q32019867
['Q380057'] = 'বাংলা ক্রিয়াবিশেষণ', -- Q32773652
['Q147276'] = 'বাংলা নামবাচক বিশেষ্য', -- Q31161898
['Q134830'] = 'বাংলা উপসর্গ', -- Q54488622
['Q102047'] = 'বাংলা প্রত্যয়', -- Q107174314
},
['Q1860'] = {
['_'] = 'ইংরেজি লেমা', -- Q30524923
['Q1084'] = 'ইংরেজি বিশেষ্য', -- Q30428207
['Q24905'] = 'ইংরেজি ক্রিয়া', -- Q30430933
['Q34698'] = 'ইংরেজি বিশেষণ', -- Q30430962
['Q380057'] = 'ইংরেজি ক্রিয়াবিশেষণ', -- Q30445981
},
['Q150'] = {
['_'] = 'ফরাসি লেমা', -- Q30524925
['Q1084'] = 'ফরাসি বিশেষ্য', -- Q30429760
['Q34698'] = 'ফরাসি বিশেষণ', -- Q30525026
},
['Q9072'] = {
['_'] = 'এস্তোনীয় লেমা', -- Q31158076
['Q1084'] = 'এস্তোনীয় বিশেষ্য', -- Q30429759
['Q147276'] = 'এস্তোনীয় নামবাচক বিশেষ্য', -- Q31081072
},
['Q397'] = {
['_'] = 'লাতিন লেমা', -- Q31158138
['Q1084'] = 'লাতিন বিশেষ্য', -- Q30525219
},
['Q652'] = {
['_'] = 'ইতালীয় লেমা', -- Q32661094
['Q1084'] = 'ইতালীয় বিশেষ্য', -- Q30449614
['Q34698'] = 'ইতালীয় বিশেষণ', -- Q30525206
},
['Q11051hi'] = { -- যেহেতু হিন্দি ও উর্দু লেক্সিম 'হিন্দুস্তানি' হিসেবে যোগ করা হয়েছে
['_'] = 'হিন্দি লেমা', -- Q31165202
['Q1084'] = 'হিন্দি বিশেষ্য', -- Q30565856
['Q34698'] = 'হিন্দি বিশেষণ', -- Q30569864
['Q147276'] = 'হিন্দি নামবাচক বিশেষ্য', -- Q31159486
},
['Q11051ur'] = { -- যেহেতু হিন্দি ও উর্দু লেক্সিম 'হিন্দুস্তানি' হিসেবে যোগ করা হয়েছে
['_'] = 'উর্দু লেমা', -- Q32159501
['Q1084'] = 'উর্দু বিশেষ্য', -- Q30566217
['Q147276'] = 'উর্দু নামবাচক বিশেষ্য', -- Q31073525
},
['Q29401'] = {
['_'] = 'অসমীয়া লেমা', -- Q32151243
['Q1084'] = 'অসমীয়া বিশেষ্য', -- Q31144600
['Q24905'] = 'অসমীয়া ক্রিয়া', -- Q109571153
['Q34698'] = 'অসমীয়া বিশেষণ', -- Q32856444
['Q147276'] = 'অসমীয়া নামবাচক বিশেষ্য', -- Q32139276
},
['Q9142'] = {
['_'] = 'আইরিশ লেমা', -- Q31159081
['Q147276'] = 'আইরিশ নামবাচক বিশেষ্য', -- Q31076254
},
['Q13955'] = {
['_'] = 'আরবি লেমা', -- Q31158513
['Q1084'] = 'আরবি বিশেষ্য', -- Q30449691
['Q34698'] = 'আরবি বিশেষণ', -- Q30525210
['Q147276'] = 'আরবি নামবাচক বিশেষ্য', -- Q30567180
},
['Q8748'] = {
['_'] = 'আলবেনীয় লেমা', -- Q33141043
['Q1084'] = 'আলবেনীয় বিশেষ্য', -- Q30527873
['Q147276'] = 'আলবেনীয় নামবাচক বিশেষ্য', -- Q31048315
},
['Q9035'] = {
['_'] = 'দিনেমার লেমা', -- Q31158058
['Q147276'] = 'দিনেমার নামবাচক বিশেষ্য', -- Q31075760
},
['Q9027'] = {
['_'] = 'সুইডিশ লেমা', -- Q31158250
['Q147276'] = 'সুইডিশ নামবাচক বিশেষ্য', -- Q30567573
},
['Q11059'] = {
['_'] = 'সংস্কৃত লেমা',
['Q1084'] = 'সংস্কৃত বিশেষ্য', -- Q30567377
['Q34698'] = 'সংস্কৃত বিশেষণ', -- Q31095528
},
['Q6400661'] = {
['_'] = 'খরিয়া থার লেমা',
['Q1084'] = 'খরিয়া থার বিশেষ্য'
},
['Q2044560'] = {
['_'] = 'সিলেটি লেমা', -- Q33669037
['Q1084'] = 'সিলেটি বিশেষ্য', -- Q114733585
['Q34698'] = 'সিলেটি বিশেষণ', -- Q114734349
['Q24905'] = 'সিলেটি ক্রিয়া', -- Q114734310
['Q380057'] = 'সিলেটি ক্রিয়াবিশেষণ', -- Q114733811
['Q36224'] = 'সিলেটি সর্বনাম', -- Q114734403
['Q147276'] = 'সিলেটি নামবাচক বিশেষ্য', -- Q115663802
},
['Q9176'] = {
['_'] = 'কোরীয় লেমা', -- Q31159187
['Q147276'] = 'কোরীয় নামবাচক বিশেষ্য' -- Q31101131
}
}
return p
jb9amw1ffjnvzjlcgsuhbeoqqjy0ily
মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ
828
148712
507742
502552
2026-04-11T08:16:17Z
Redmin
6857
ইংরেজি উইকিউৎসকে ফলব্যাক হিসেবে ব্যবহার করা হয় যেন
507742
Scribunto
text/plain
local p = {}
local converter = require('মডিউল:ConvertDigit')
local target_wikisource = 'bnwikisource'
local fallback_wikisource = 'enwikisource'
local label_of_Q31464082 = 'উৎস'
local archive_dated = '$1-এর আর্কাইভ'
local archive_undated = 'আর্কাইভ'
local indicator_format_strings = {
['P50'] = '$1', -- লেখক
['P98'] = '$1 সম্পাদিত',
['P655'] = '$1 অনূদিত',
}
local specifier_format_strings = {
['P7421'] = "$1 নং পংক্তি",
['P958'] = "$1 নামক অনুচ্ছেদ",
['P792'] = "$1 নং পরিচ্ছেদ",
['P304'] = "$1 নং পাতায়",
}
local published_in_format_string = "$1 নামক রচনায় প্রকাশিত"
function p.format ( reference, wb, mw_lang, base_lang_code_labels, base_lang_wiki )
local stated_ins = reference.snaks['P248'] -- এই উৎসে বিবৃত
local urls = reference.snaks['P854'] -- তথ্যসূত্রের ইউআরএল
if urls == nil then
urls = reference.snaks['P4656'] -- উইকিমিডিয়া আমদানির ইউআরএল
end
local commons_scanned_files = reference.snaks['P996'] -- উইকিমিডিয়া কমন্সে স্ক্যানকৃত ফাইল
local internet_archive_ids = reference.snaks['P724'] -- ইন্টারনেট আর্কাইভ আইডি
local inside_text_parts = {}
local example_from_id = nil
local example_from_text = ''
if stated_ins ~= nil then
example_from_id = stated_ins[1].datavalue.value.id
example_from_text = wb.getLabel( example_from_id )
if example_from_text == nil then
for i, label in pairs(wb.getEntity(example_from_id)['labels']) do
example_from_text = label['value']
break
end
end
elseif commons_scanned_files ~= nil then
table.insert(inside_text_parts, '[[:File:' .. commons_scanned_files[1].datavalue.value .. '|' .. commons_scanned_files[1].datavalue.value .. ']]')
elseif urls ~= nil or internet_archive_ids ~= nil then
local link_title = label_of_Q31464082
local titles = reference.snaks['P1476'] -- [পাতার] শিরোনাম
if titles ~= nil then
link_title = '"' .. titles[1].datavalue.value.text .. '"'
end
local main_url = ''
if urls ~= nil then
main_url = urls[1].datavalue.value
else
main_url = 'https://archive.org/details/' .. internet_archive_ids[1].datavalue.value
end
table.insert(inside_text_parts, '[' .. main_url .. ' ' .. link_title .. ']')
local broader_title = ''
local broader_titles = reference.snaks['P6333'] -- বৃহদতর পরিধিতে কাজের শিরোনাম
if broader_titles ~= nil then
broader_title = " ''" .. broader_titles[1].datavalue.value.text .. "''"
table.insert(inside_text_parts, broader_title)
end
local archive_url = nil
local archive_urls = reference.snaks['P1065'] -- আর্কাইভের ইউআরএল
if archive_urls ~= nil then
archive_url = archive_urls[1].datavalue.value
end
local publication_date = ''
local publication_dates = reference.snaks['P577'] -- প্রকাশনার তারিখ
if publication_dates ~= nil then
publication_date = converter._main(wb.formatValue(publication_dates[1]))
table.insert(inside_text_parts, publication_date)
end
local retrieval_date = nil
local retrieval_dates = reference.snaks['P813'] -- সংগ্রহের তারিখ
if retrieval_dates ~= nil then
local retrieval_date = converter._main(wb.formatValue(retrieval_dates[1]))
end
local archival_date = nil
local archival_dates = reference.snaks['P2960'] -- সংগ্রহের তারিখ
if archival_dates ~= nil then
archival_date = converter._main(wb.formatValue(archival_dates[1]))
end
local archive_url_string = ''
if archive_url ~= nil then
if archival_date ~= nil then
archive_url_string = ' ([' .. archive_url .. ' ' .. mw.ustring.gsub(archive_dated, '$1', archival_date) .. '])'
else
archive_url_string = ' ([' .. archive_url .. ' ' .. archive_undated .. '])'
end
table.insert(inside_text_parts, archive_url_string)
end
end
local example_from_publishedin_out = ''
local example_from_link = nil
if example_from_id ~= nil then
for property, format_string in pairs(indicator_format_strings) do
for i, statement in pairs(wb.getEntity(example_from_id):getBestStatements(property)) do
local example_from_author = statement.mainsnak.datavalue
if example_from_author ~= nil then
example_from_author = example_from_author.value.id
elseif statement.mainsnak.snaktype == 'somevalue' then
example_from_author = 'Q4233718'
elseif statement.mainsnak.snaktype == 'novalue' then
example_from_author = 'Q4233718' -- TODO: find a useful item for 'novalue'
end
local example_from_author_text = wb.getLabel( example_from_author )
local wikisource_link = wb.getSitelink( example_from_author, target_wikisource )
local wikipedia_link = wb.getSitelink( example_from_author, base_lang_wiki )
local example_from_author_link = nil
if wikisource_link ~= nil then
example_from_author_link = ':s:' .. wikisource_link
elseif wikipedia_link ~= nil then
example_from_author_link = ':w:' .. wikipedia_link
elseif wb.getSitelink( example_from_author, fallback_wikisource ) ~= nil then -- wikisource_link is nil
example_from_author_link = ':s:en:' .. wb.getSitelink( example_from_author, fallback_wikisource )
end
if example_from_author_link ~= nil then
from_author_line = "—[[" .. example_from_author_link .. '|' .. example_from_author_text .. "]]"
else
from_author_line = "—[[:d:" .. example_from_author .. '|' .. example_from_author_text .. ']]'
end
from_author_line = mw.ustring.gsub(format_string, '$1', from_author_line)
table.insert(inside_text_parts, from_author_line)
end
end
example_from_link = wb.getSitelink( example_from_id, target_wikisource )
if example_from_link == nil then
example_from_link = 'en:' .. wb.getSitelink( example_from_id, fallback_wikisource )
end
end
if example_from_link ~= nil then
table.insert(inside_text_parts, '[[File:Wikisource-logo.svg|16px|link=s:]] [[:s:' .. example_from_link .. '|' .. example_from_text .. ']]')
elseif example_from_text ~= '' then
if example_from_id ~= nil then
table.insert(inside_text_parts, '[[:d:' .. example_from_id .. '|' .. example_from_text .. ']]')
else
table.insert(inside_text_parts, example_from_text)
end
end
if example_from_id ~= nil then
local published_in = wb.getEntity(example_from_id):getBestStatements('P1433')
if #published_in ~= 0 then -- এতে প্রকাশিত
local example_from_publishedin = published_in[1].mainsnak.datavalue.value.id
local example_from_publishedin_text = wb.getLabelByLang( example_from_publishedin, base_lang_code_labels )
if example_from_publishedin_text == nil then
for i, fallback_lang in ipairs(mw_lang.getFallbacksFor( base_lang_code_labels )) do
if wb.getLabelByLang( example_from_publishedin, fallback_lang ) ~= nil then
example_from_publishedin_text = wb.getLabelByLang( example_from_publishedin, fallback_lang )
end
end
end
if example_from_publishedin_text == nil then
for i, label in pairs(wb.getEntity(example_from_publishedin)['labels']) do
example_from_publishedin_text = label['value']
break
end
end
local example_from_publishedin_link = wb.getSitelink( example_from_publishedin, target_wikisource )
if example_from_publishedin_link == nil then
example_from_publishedin_link = wb.getSitelink( example_from_publishedin, fallback_wikisource ) or ''
end
if example_from_publishedin_link == '' then
example_from_publishedin_out = " (" .. mw.ustring.gsub(published_in_format_string, "$1", "''" .. example_from_publishedin_text .. "''") .. ")"
else
example_from_publishedin_out = " (" .. mw.ustring.gsub(published_in_format_string, "$1", "[[:s:" .. example_from_publishedin_link .. '|' .. example_from_publishedin_text .. ']]') .. ')'
end
elseif reference.snaks['P1433'] ~= nil then
local example_from_publishedin = reference.snaks['P1433'][1].datavalue.value.id
local example_from_publishedin_text = wb.getLabelByLang( example_from_publishedin, base_lang_code_labels )
if example_from_publishedin_text == nil then
for i, fallback_lang in ipairs(mw_lang.getFallbacksFor( base_lang_code_labels )) do
if wb.getLabelByLang( example_from_publishedin, fallback_lang ) ~= nil then
example_from_publishedin_text = wb.getLabelByLang( example_from_publishedin, fallback_lang )
end
end
end
local example_from_publishedin_link = wb.getSitelink( example_from_publishedin, target_wikisource ) or ''
if example_from_publishedin_link == '' then
example_from_publishedin_out = " (" .. mw.ustring.gsub(published_in_format_string, "$1", "''" .. example_from_publishedin_text .. "''") .. ")"
else
example_from_publishedin_out = " (" .. mw.ustring.gsub(published_in_format_string, "$1", "[[:s:" .. example_from_publishedin_link .. '|' .. example_from_publishedin_text .. ']]') .. ')'
end
end
end
if example_from_publishedin_out ~= '' then
table.insert(inside_text_parts, example_from_publishedin_out)
end
local example_from_lines = ''
for property, format_string in pairs(specifier_format_strings) do
if reference.snaks[property] ~= nil then
example_from_lines = reference.snaks[property][1].datavalue.value -- পংক্তি(গুলো)
example_from_lines = mw.ustring.gsub(format_string, '$1', converter._main(example_from_lines))
table.insert(inside_text_parts, example_from_lines)
end
end
return table.concat(inside_text_parts, ', ')
end
return p
bv0tpy0djx44yfw99qjcxmclu7z9rbl
মডিউল:translations/styles.css
828
156246
507673
504489
2026-04-10T19:17:33Z
Redmin
6857
507673
sanitized-css
text/css
.translations {
width: 100%;
}
.translations-cell {
background-color: #FFF;
color: black;
vertical-align: top;
text-align: left;
}
nghto5d1ebfp8j1zagdgm28st5a5szr
অশা
0
158481
507752
501795
2026-04-11T09:50:11Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719190-এর সাথে সংযোগ তৈরি করছি
507752
wikitext
text/x-wiki
=={{langname|bn}}==
===উচ্চারণ===
* অশা
===ব্যুৎপত্তি===
* [ < রশা = রশি, আ [[প্রত্যয়]] বৃহদার্থে ]; রাজশাহী জেলা; [[আঞ্চলিক]]
===বিশেষ্য===
{{বিশেষ্য|bn}}
# কাছি, মোটা দড়ি
#: শক্ত অশা নিয়া নাও বান্ধ।
{{লে|L719190}}
iyimbnfmkz1ip7t5qz73oy87ttu4d0u
অংশভাক
0
163962
507672
465017
2026-04-10T18:53:30Z
WikitanvirBot
479
বট: [[অংশভাক্]] পাতায় করা দ্বিপুনর্নির্দেশনা ঠিক করেছে
507672
wikitext
text/x-wiki
#পুনর্নির্দেশ [[অংশভাক্]]
s07ul7qeanjc9hn96ejj5rjfn3sf78u
اخ
0
164522
507740
502254
2026-04-11T07:27:54Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1562165-এর সাথে সংযোগ তৈরি করছি
507740
wikitext
text/x-wiki
{{লে|L1562165}}
fs8r01glsyigd8ior0is0twas5fvrds
slop
0
165355
507631
504743
2026-04-10T15:02:49Z
Redmin
6857
507631
wikitext
text/x-wiki
{{লে|L1482691}}
{{লে|L18468|0}}
3zk0ocl433lenvs77t4x231amcvz3t4
كاد
0
167220
507623
2026-04-10T14:33:16Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1480605-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507623
wikitext
text/x-wiki
{{লে|L1480605}}
093lohy9xeqgnywc7xi9iowz4q94xo6
erstwhile
0
167221
507624
2026-04-10T14:33:29Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L189993-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507624
wikitext
text/x-wiki
{{লে|L189993}}
lbkhg9ujgyx4qmll5orkb4ovq7sny13
507625
507624
2026-04-10T14:33:50Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L336525-এর সাথে সংযোগ তৈরি করছি
507625
wikitext
text/x-wiki
{{লে|L189993}}
{{লে|L336525|না}}
3czt02565iqxyan03up1ed2fvulhjvf
অহোর্
0
167222
507638
2026-04-10T16:58:04Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719244-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507638
wikitext
text/x-wiki
{{লে|L719244}}
n04y5463xetukk3q4uanirhuo7xpkat
অহোং
0
167223
507639
2026-04-10T16:58:11Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719243-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507639
wikitext
text/x-wiki
{{লে|L719243}}
lwlom55pjsdk6r7cqbahc0f6w2p2fyg
অহুঁকে
0
167224
507640
2026-04-10T16:59:15Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719242-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507640
wikitext
text/x-wiki
{{লে|L719242}}
t2im9s9kqx5tzw33dyw2mqmhfmyx7br
অহাস্স
0
167225
507641
2026-04-10T16:59:22Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719241-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507641
wikitext
text/x-wiki
{{লে|L719241}}
g04e0742dbj2jrt7wanu3oopb6m5krs
অহমানিত
0
167226
507643
2026-04-10T17:02:20Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719240-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507643
wikitext
text/x-wiki
{{লে|L719240}}
qkf3fstdmybk5je4dwkya0m0bvnu12p
অহমান্
0
167227
507644
2026-04-10T17:02:29Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719239-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507644
wikitext
text/x-wiki
{{লে|L719239}}
5u31jdfr3bsnnl28xtlasizwt95c2z7
অহদিগে
0
167228
507645
2026-04-10T17:02:35Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719238-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507645
wikitext
text/x-wiki
{{লে|L719238}}
e3yarveqpg8a5hx84k8xp6tzj3hx2pz
অস্তোরো
0
167229
507646
2026-04-10T17:03:23Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719237-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507646
wikitext
text/x-wiki
{{লে|L719237}}
a2wqvksd22ii87oj8rpmv54ihgox9rg
অস্তান্
0
167230
507647
2026-04-10T17:03:31Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719236-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507647
wikitext
text/x-wiki
{{লে|L719236}}
ac14ydke6ychu4hpthgwj4j71qb0niu
অস্তাজ্
0
167231
507648
2026-04-10T17:07:52Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719235-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507648
wikitext
text/x-wiki
{{লে|L719235}}
s7nybri0bq8nkqvbebva5s6mo5bdy1j
অস্তাই
0
167232
507649
2026-04-10T17:08:05Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719234-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507649
wikitext
text/x-wiki
{{লে|L719234}}
1n0skns48dswlk3dxtnw0uk07fpdgnr
অস্কা-খেস্কা
0
167233
507650
2026-04-10T17:09:47Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719233-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507650
wikitext
text/x-wiki
{{লে|L719233}}
9vbwk3fsudl1ne2iow8k3mio04rj6ww
অসৌজ্
0
167234
507651
2026-04-10T17:09:54Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719232-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507651
wikitext
text/x-wiki
{{লে|L719232}}
9uhi71xeihlb0etkgn3h76ae030i2kl
অসোটা
0
167235
507652
2026-04-10T17:10:02Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719231-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507652
wikitext
text/x-wiki
{{লে|L719231}}
g69l319bvhvlpbtqdmvb4e0t8hqm4b4
অসোইজ্
0
167236
507653
2026-04-10T17:10:15Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719230-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507653
wikitext
text/x-wiki
{{লে|L719230}}
0illzsux5yn3sfsxsayinasaeleayzw
অসুবিস্তা
0
167237
507654
2026-04-10T17:10:25Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719229-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507654
wikitext
text/x-wiki
{{লে|L719229}}
fr9l2xo3i82b60v1oi7o2z0vzm35gbp
অসুন্
0
167238
507655
2026-04-10T17:16:02Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719228-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507655
wikitext
text/x-wiki
{{লে|L719228}}
1m2v636l3h7gftxs8zjpopacd3k0zl2
অসুদ্
0
167239
507656
2026-04-10T17:20:17Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719227-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507656
wikitext
text/x-wiki
{{লে|L719227}}
dr036qdy4x95y9hj1x2xz330swe0gkq
অসুজ্
0
167240
507657
2026-04-10T17:23:02Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719226-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507657
wikitext
text/x-wiki
{{লে|L719226}}
qujahplcijeqfxc16nhp3gdckeqd976
অসাহিত্
0
167241
507658
2026-04-10T17:23:13Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719225-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507658
wikitext
text/x-wiki
{{লে|L719225}}
dtfcgnit2f16jvv6a7jcm44c7e7vetr
অসামরৎ
0
167242
507659
2026-04-10T17:24:55Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719224-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507659
wikitext
text/x-wiki
{{লে|L719224}}
15erbedyeb7d5ebqssrx1oc447g2v7n
অসান্
0
167243
507660
2026-04-10T17:25:04Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719223-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507660
wikitext
text/x-wiki
{{লে|L719223}}
qx7iatyyg2pp05mh2ktwskl8pm7e0kq
অসাড়ে-পসাড়ে
0
167244
507661
2026-04-10T17:25:11Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719222-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507661
wikitext
text/x-wiki
{{লে|L719222}}
soy9jn05p7mxwubix6d42hoexjz79ck
অসাইল্যা
0
167245
507662
2026-04-10T17:25:17Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719221-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507662
wikitext
text/x-wiki
{{লে|L719221}}
9q0yyvpi6paimvf54m1vc4j4rwbi6ha
অসা
0
167246
507665
2026-04-10T17:26:28Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719220-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507665
wikitext
text/x-wiki
{{লে|L719220}}
nc2mjlt41aicnbxe69wbachr5krqiy8
অসহুজ্
0
167247
507666
2026-04-10T17:26:33Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719219-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507666
wikitext
text/x-wiki
{{লে|L719219}}
qyk8t4kcacxhlh2283xqltkr3k9cl9e
অসম্বাল্
0
167248
507667
2026-04-10T17:26:41Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719217-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507667
wikitext
text/x-wiki
{{লে|L719217}}
oc7hc8k44vhsh1lfkkxwsylugylrbrf
অসমাই
0
167249
507669
2026-04-10T17:29:04Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719216-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507669
wikitext
text/x-wiki
{{লে|L719216}}
it7n5bp548vosntd5tldhm2sag0x3sw
অসম্কা
0
167250
507670
2026-04-10T17:29:12Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719215-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507670
wikitext
text/x-wiki
{{লে|L719215}}
kcz14cmvdhuugzaz478b6wb02obive9
অস্সার্
0
167251
507671
2026-04-10T17:29:38Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719214-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507671
wikitext
text/x-wiki
{{লে|L719214}}
hng5bnrjs7x7zdqjllfsnm8l9qa7ehq
ἐμμένω
0
167252
507677
2026-04-11T03:08:26Z
Sabah Azman Nahean
12022
"==প্রাচীন গ্রিক== ===বিকল্প রূপসমূহ=== * {{alter|grc|ἐμμίμνω||কাব্যিক রূপ}} ===ব্যুৎপত্তি=== {{m|grc|ἐν||মধ্যে}} + {{m|grc|μένω||থাকা বা অবস্থান করা}} এর সমন্বয়ে গঠিত। ===উচ্চারণ=== * আধ্বব: /em.mé.nɔː/ (খ্রিস্টপূর্ব..." দিয়ে পাতা তৈরি
507677
wikitext
text/x-wiki
==প্রাচীন গ্রিক==
===বিকল্প রূপসমূহ===
* {{alter|grc|ἐμμίμνω||কাব্যিক রূপ}}
===ব্যুৎপত্তি===
{{m|grc|ἐν||মধ্যে}} + {{m|grc|μένω||থাকা বা অবস্থান করা}} এর সমন্বয়ে গঠিত।
===উচ্চারণ===
* আধ্বব: /em.mé.nɔː/ (খ্রিস্টপূর্ব ৫ম শতাব্দী)
* আধ্বব: /em.mé.no/ (১ম শতাব্দী)
===ক্রিয়া===
{{grc-verb}}
# কোনো স্থানে [[অবস্থান করা]] বা [[টিকে থাকা]]।
#* {{Q|grc|Th.||2|23}}
## কোনো সিদ্ধান্তে [[অটল থাকা]], [[মেনে চলা]], বা [[বিশ্বস্ত থাকা]] (যেমন: কোনো চুক্তি বা আইন মেনে চলা)।
##* {{Q|grc|Pl.|Ap.|39|B}}
##* {{Q|grc|Hdt.||9|106}}
## {{lb|grc|বস্তুর ক্ষেত্রে}} স্থির থাকা, অটুট থাকা বা বৈধ থাকা।
##* {{Q|grc|A.|Pr.|534}}
====ক্রিয়ারূপ====
Present: '''ἐμμένω'''
{| class="wikitable"
! colspan="2" |number
! colspan="3" |singular
! colspan="2" |dual
! colspan="3" |plural
|-
! colspan="2" |
!first
!second
!third
!second
!third
!first
!second
!third
|-
! rowspan="4" |active
!indicative
|'''ἐμμένω'''
|ἐμμένεις
|ἐμμένει
|ἐμμένετον
|ἐμμένετον
|ἐμμένομεν
|ἐμμένετε
|ἐμμένουσῐ(ν)
|-
!subjunctive
|'''ἐμμένω'''
|ἐμμένῃς
|ἐμμένῃ
|ἐμμένητον
|ἐμμένητον
|ἐμμένωμεν
|ἐμμένητε
|ἐμμένωσῐ(ν)
|-
!optative
|ἐμμένοιμῐ
|ἐμμένοις
|ἐμμένοι
|ἐμμένοιτον
|ἐμμενοίτην
|ἐμμένοιμεν
|ἐμμένοιτε
|ἐμμένοιεν
|-
!imperative
|
|ἔμμενε
|ἐμμενέτω
|ἐμμένετον
|ἐμμενέτων
|
|ἐμμένετε
|ἐμμενόντων
|-
! colspan="2" |
! colspan="4" |active
! colspan="4" |
|-
! colspan="2" |infinitive
| colspan="4" |ἐμμένειν
| colspan="4" |
|-
! rowspan="3" |participle
!m
| colspan="4" |ἐμμένων
| colspan="4" |
|-
!f
| colspan="4" |ἐμμένουσᾰ
| colspan="4" |
|-
!n
| colspan="4" |ἐμμένον
| colspan="4" |
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
Imperfect: ἐνέμενον
{| class="wikitable"
! colspan="2" |number
! colspan="3" |singular
! colspan="2" |dual
! colspan="3" |plural
|-
! colspan="2" |
!first
!second
!third
!second
!third
!first
!second
!third
|-
! rowspan="1" |active
!indicative
|ἐνέμενον
|ἐνέμενες
|ἐνέμενε(ν)
|ἐνεμένετον
|ἐνεμενέτην
|ἐνεμένομεν
|ἐνεμένετε
|ἐνέμενον
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
Future: ἐμμενέω (Uncontracted)
{| class="wikitable"
! colspan="2" |number
! colspan="3" |singular
! colspan="2" |dual
! colspan="3" |plural
|-
! colspan="2" |
!first
!second
!third
!second
!third
!first
!second
!third
|-
! rowspan="2" |active
!indicative
|ἐμμενέω
|ἐμμενέεις
|ἐμμενέει
|ἐμμενέετον
|ἐμμενέετον
|ἐμμενέομεν
|ἐμμενέετε
|ἐμμενέουσῐ(ν)
|-
!optative
|ἐμμενέοιμῐ
|ἐμμενέοις
|ἐμμενέοι
|ἐμμενέοιτον
|ἐμμενεοίτην
|ἐμμενέοιμεν
|ἐμμενέοιτε
|ἐμμενέοιεν
|-
! colspan="2" |
! colspan="3" |active
! colspan="2" |
! colspan="3" |
|-
! colspan="2" |infinitive
| colspan="3" |ἐμμενέειν
| colspan="2" |
| colspan="3" |
|-
! rowspan="3" |participle
!m
| colspan="3" |ἐμμενέων
| colspan="2" |
| colspan="3" |
|-
!f
| colspan="3" |ἐμμενέουσᾰ
| colspan="2" |
| colspan="3" |
|-
!n
| colspan="3" |ἐμμενέον
| colspan="2" |
| colspan="3" |
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
Future: ἐμμενῶ (Contracted)
{| class="wikitable"
! colspan="2" |number
! colspan="3" |singular
! colspan="2" |dual
! colspan="3" |plural
|-
! colspan="2" |
!first
!second
!third
!second
!third
!first
!second
!third
|-
! rowspan="2" |active
!indicative
|ἐμμενῶ
|ἐμμενεῖς
|ἐμμενεῖ
|ἐμμενεῖτον
|ἐμμενεῖτον
|ἐμμενοῦμεν
|ἐμμενεῖτε
|ἐμμενοῦσῐ(ν)
|-
!optative
|ἐμμενοίην,
ἐμμενοῖμῐ
|ἐμμενοίης,
ἐμμενοῖς
|ἐμμενοίη,
ἐμμενοῖ
|ἐμμενοῖτον,
ἐμμενοίητον
|ἐμμενοίτην,
ἐμμενοιήτην
|ἐμμενοῖμεν,
ἐμμενοίημεν
|ἐμμενοῖτε,
ἐμμενοίητε
|ἐμμενοῖεν,
ἐμμενοίησᾰν
|-
! colspan="2" |
! colspan="3" |active
! colspan="2" |
! colspan="3" |
|-
! colspan="2" |infinitive
| colspan="3" |ἐμμενεῖν
| colspan="2" |
| colspan="3" |
|-
! rowspan="3" |participle
!m
| colspan="3" |ἐμμενῶν
| colspan="2" |
| colspan="3" |
|-
!f
| colspan="3" |ἐμμενοῦσᾰ
| colspan="2" |
| colspan="3" |
|-
!n
| colspan="3" |ἐμμενοῦν
| colspan="2" |
| colspan="3" |
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
Aorist: ἐνέμεινᾰ
{| class="wikitable"
! colspan="2" |number
! colspan="3" |singular
! colspan="2" |dual
! colspan="3" |plural
|-
! colspan="2" |
!first
!second
!third
!second
!third
!first
!second
!third
|-
! rowspan="4" |active
!indicative
|ἐνέμεινᾰ
|ἐνέμεινᾰς
|ἐνέμεινε(ν)
|ἐνεμείνᾰτον
|ἐνεμεινᾰ́την
|ἐνεμείνᾰμεν
|ἐνεμείνᾰτε
|ἐνέμεινᾰν
|-
!subjunctive
|ἐμμείνω
|ἐμμείνῃς
|ἐμμείνῃ
|ἐμμείνητον
|ἐμμείνητον
|ἐμμείνωμεν
|ἐμμείνητε
|ἐμμείνωσῐ(ν)
|-
!optative
|ἐμμείναιμῐ
|ἐμμείνειᾰς,
ἐμμείναις
|ἐμμείνειε(ν),
ἐμμείναι
|ἐμμείναιτον
|ἐμμειναίτην
|ἐμμείναιμεν
|ἐμμείναιτε
|ἐμμείνειᾰν,
ἐμμείναιεν
|-
!imperative
|
|ἔμμεινον
|ἐμμεινᾰ́τω
|ἐμμείνᾰτον
|ἐμμεινᾰ́των
|
|ἐμμείνᾰτε
|ἐμμεινᾰ́ντων
|-
! colspan="2" |
! colspan="3" |active
! colspan="2" |
! colspan="3" |
|-
! colspan="2" |infinitive
| colspan="3" |ἐμμεῖναι
| colspan="2" |
| colspan="3" |
|-
! rowspan="3" |participle
!m
| colspan="3" |ἐμμείνᾱς
| colspan="2" |
| colspan="3" |
|-
!f
| colspan="3" |ἐμμείνᾱσᾰ
| colspan="2" |
| colspan="3" |
|-
!n
| colspan="3" |ἐμμεῖνᾰν
| colspan="2" |
| colspan="3" |
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
Perfect: ἐμμεμένηκᾰ
{| class="wikitable"
! colspan="2" |number
! colspan="3" |singular
! colspan="2" |dual
! colspan="3" |plural
|-
! colspan="2" |
!first
!second
!third
!second
!third
!first
!second
!third
|-
! rowspan="4" |active
!indicative
|ἐμμεμένηκᾰ
|ἐμμεμένηκᾰς
|ἐμμεμένηκε(ν)
|ἐμμεμενήκᾰτον
|ἐμμεμενήκᾰτον
|ἐμμεμενήκᾰμεν
|ἐμμεμενήκᾰτε
|ἐμμεμενήκᾱσῐ(ν)
|-
!subjunctive
|ἐμμεμενήκω
|ἐμμεμενήκῃς
|ἐμμεμενήκῃ
|ἐμμεμενήκητον
|ἐμμεμενήκητον
|ἐμμεμενήκωμεν
|ἐμμεμενήκητε
|ἐμμεμενήκωσῐ(ν)
|-
!optative
|ἐμμεμενήκοιμῐ,
ἐμμεμενηκοίην
|ἐμμεμενήκοις,
ἐμμεμενηκοίης
|ἐμμεμενήκοι,
ἐμμεμενηκοίη
|ἐμμεμενήκοιτον
|ἐμμεμενηκοίτην
|ἐμμεμενήκοιμεν
|ἐμμεμενήκοιτε
|ἐμμεμενήκοιεν
|-
!imperative
|
|ἐμμεμένηκε
|ἐμμεμενηκέτω
|ἐμμεμενήκετον
|ἐμμεμενηκέτων
|
|ἐμμεμενήκετε
|ἐμμεμενηκόντων
|-
! colspan="2" |
! colspan="4" |active
! colspan="4" |
|-
! colspan="2" |infinitive
| colspan="4" |ἐμμεμενηκέναι
| colspan="4" |
|-
! rowspan="3" |participle
!m
| colspan="4" |ἐμμεμενηκώς
| colspan="4" |
|-
!f
| colspan="4" |ἐμμεμενηκυῖᾰ
| colspan="4" |
|-
!n
| colspan="4" |ἐμμεμενηκός
| colspan="4" |
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
====আগত পদসমূহ====
{{col2|grc
|δῐεμμένω
|ἐμμονή
|ἔμμονος
}}
===আরও পড়ুন===
* {{R:grc:LSJ}}
* {{R:grc:Middle Liddell}}
* {{R:Strong's}}
djdaaup0k7mylszq4dm7ts9bcjdzu8i
507678
507677
2026-04-11T03:11:37Z
Sabah Azman Nahean
12022
507678
wikitext
text/x-wiki
==প্রাচীন গ্রিক==
===বিকল্প রূপসমূহ===
* {{alter|grc|ἐμμίμνω||কাব্যিক রূপ}}
===ব্যুৎপত্তি===
{{m|grc|ἐν||মধ্যে}} + {{m|grc|μένω||থাকা বা অবস্থান করা}} এর সমন্বয়ে গঠিত।
===উচ্চারণ===
* আধ্বব: /em.mé.nɔː/ (খ্রিস্টপূর্ব ৫ম শতাব্দী)
* আধ্বব: /em.mé.no/ (১ম শতাব্দী)
===ক্রিয়া===
{{grc-verb}}
# কোনো [[স্থান|স্থানে]] [[অবস্থান]] [[করা]] বা [[টিকে থাকা]]।
#* {{Q|grc|Th.||2|23}}
## কোনো সিদ্ধান্তে [[অটল থাকা]], [[মান্য|মেনে]] [[চলা]], বা [[বিশ্বস্ত]] [[থাকা]] (যেমন: কোনো [[চুক্তি]] বা [[আইন]] মেনে চলা)।
##* {{Q|grc|Pl.|Ap.|39|B}}
##* {{Q|grc|Hdt.||9|106}}
## {{lb|grc|বস্তুর ক্ষেত্রে}} স্থির থাকা, অটুট থাকা বা বৈধ থাকা।
##* {{Q|grc|A.|Pr.|534}}
====ক্রিয়ারূপ====
Present: '''ἐμμένω'''
{| class="wikitable"
! colspan="2" |বচন
! colspan="3" |একবচন
! colspan="2" |দ্বিবচন
! colspan="3" |বহুবচন
|-
! colspan="2" |
!উত্তম পুরুষ
!মধ্যম পুরুষ
!প্রথম পুরুষ
!মধ্যম পুরুষ
!প্রথম পুরুষ
!উত্তম পুরুষ
!মধ্যম পুরুষ
!প্রথম পুরুষ
|-
! rowspan="4" |কর্তৃবাচ্য
!নির্দেশাত্মক
|'''ἐμμένω'''
|ἐμμένεις
|ἐμμένει
|ἐμμένετον
|ἐμμένετον
|ἐμμένομεν
|ἐμμένετε
|ἐμμένουσῐ(ν)
|-
!আদেশবাচক
|'''ἐμμένω'''
|ἐμμένῃς
|ἐμμένῃ
|ἐμμένητον
|ἐμμένητον
|ἐμμένωμεν
|ἐμμένητε
|ἐμμένωσῐ(ν)
|-
!optative
|ἐμμένοιμῐ
|ἐμμένοις
|ἐμμένοι
|ἐμμένοιτον
|ἐμμενοίτην
|ἐμμένοιμεν
|ἐμμένοιτε
|ἐμμένοιεν
|-
!imperative
|
|ἔμμενε
|ἐμμενέτω
|ἐμμένετον
|ἐμμενέτων
|
|ἐμμένετε
|ἐμμενόντων
|-
! colspan="2" |
! colspan="4" |active
! colspan="4" |
|-
! colspan="2" |infinitive
| colspan="4" |ἐμμένειν
| colspan="4" |
|-
! rowspan="3" |participle
!m
| colspan="4" |ἐμμένων
| colspan="4" |
|-
!f
| colspan="4" |ἐμμένουσᾰ
| colspan="4" |
|-
!n
| colspan="4" |ἐμμένον
| colspan="4" |
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
Imperfect: ἐνέμενον
{| class="wikitable"
! colspan="2" |number
! colspan="3" |singular
! colspan="2" |dual
! colspan="3" |plural
|-
! colspan="2" |
!first
!second
!third
!second
!third
!first
!second
!third
|-
! rowspan="1" |active
!indicative
|ἐνέμενον
|ἐνέμενες
|ἐνέμενε(ν)
|ἐνεμένετον
|ἐνεμενέτην
|ἐνεμένομεν
|ἐνεμένετε
|ἐνέμενον
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
Future: ἐμμενέω (Uncontracted)
{| class="wikitable"
! colspan="2" |number
! colspan="3" |singular
! colspan="2" |dual
! colspan="3" |plural
|-
! colspan="2" |
!first
!second
!third
!second
!third
!first
!second
!third
|-
! rowspan="2" |active
!indicative
|ἐμμενέω
|ἐμμενέεις
|ἐμμενέει
|ἐμμενέετον
|ἐμμενέετον
|ἐμμενέομεν
|ἐμμενέετε
|ἐμμενέουσῐ(ν)
|-
!optative
|ἐμμενέοιμῐ
|ἐμμενέοις
|ἐμμενέοι
|ἐμμενέοιτον
|ἐμμενεοίτην
|ἐμμενέοιμεν
|ἐμμενέοιτε
|ἐμμενέοιεν
|-
! colspan="2" |
! colspan="3" |active
! colspan="2" |
! colspan="3" |
|-
! colspan="2" |infinitive
| colspan="3" |ἐμμενέειν
| colspan="2" |
| colspan="3" |
|-
! rowspan="3" |participle
!m
| colspan="3" |ἐμμενέων
| colspan="2" |
| colspan="3" |
|-
!f
| colspan="3" |ἐμμενέουσᾰ
| colspan="2" |
| colspan="3" |
|-
!n
| colspan="3" |ἐμμενέον
| colspan="2" |
| colspan="3" |
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
Future: ἐμμενῶ (Contracted)
{| class="wikitable"
! colspan="2" |number
! colspan="3" |singular
! colspan="2" |dual
! colspan="3" |plural
|-
! colspan="2" |
!first
!second
!third
!second
!third
!first
!second
!third
|-
! rowspan="2" |active
!indicative
|ἐμμενῶ
|ἐμμενεῖς
|ἐμμενεῖ
|ἐμμενεῖτον
|ἐμμενεῖτον
|ἐμμενοῦμεν
|ἐμμενεῖτε
|ἐμμενοῦσῐ(ν)
|-
!optative
|ἐμμενοίην,
ἐμμενοῖμῐ
|ἐμμενοίης,
ἐμμενοῖς
|ἐμμενοίη,
ἐμμενοῖ
|ἐμμενοῖτον,
ἐμμενοίητον
|ἐμμενοίτην,
ἐμμενοιήτην
|ἐμμενοῖμεν,
ἐμμενοίημεν
|ἐμμενοῖτε,
ἐμμενοίητε
|ἐμμενοῖεν,
ἐμμενοίησᾰν
|-
! colspan="2" |
! colspan="3" |active
! colspan="2" |
! colspan="3" |
|-
! colspan="2" |infinitive
| colspan="3" |ἐμμενεῖν
| colspan="2" |
| colspan="3" |
|-
! rowspan="3" |participle
!m
| colspan="3" |ἐμμενῶν
| colspan="2" |
| colspan="3" |
|-
!f
| colspan="3" |ἐμμενοῦσᾰ
| colspan="2" |
| colspan="3" |
|-
!n
| colspan="3" |ἐμμενοῦν
| colspan="2" |
| colspan="3" |
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
Aorist: ἐνέμεινᾰ
{| class="wikitable"
! colspan="2" |number
! colspan="3" |singular
! colspan="2" |dual
! colspan="3" |plural
|-
! colspan="2" |
!first
!second
!third
!second
!third
!first
!second
!third
|-
! rowspan="4" |active
!indicative
|ἐνέμεινᾰ
|ἐνέμεινᾰς
|ἐνέμεινε(ν)
|ἐνεμείνᾰτον
|ἐνεμεινᾰ́την
|ἐνεμείνᾰμεν
|ἐνεμείνᾰτε
|ἐνέμεινᾰν
|-
!subjunctive
|ἐμμείνω
|ἐμμείνῃς
|ἐμμείνῃ
|ἐμμείνητον
|ἐμμείνητον
|ἐμμείνωμεν
|ἐμμείνητε
|ἐμμείνωσῐ(ν)
|-
!optative
|ἐμμείναιμῐ
|ἐμμείνειᾰς,
ἐμμείναις
|ἐμμείνειε(ν),
ἐμμείναι
|ἐμμείναιτον
|ἐμμειναίτην
|ἐμμείναιμεν
|ἐμμείναιτε
|ἐμμείνειᾰν,
ἐμμείναιεν
|-
!imperative
|
|ἔμμεινον
|ἐμμεινᾰ́τω
|ἐμμείνᾰτον
|ἐμμεινᾰ́των
|
|ἐμμείνᾰτε
|ἐμμεινᾰ́ντων
|-
! colspan="2" |
! colspan="3" |active
! colspan="2" |
! colspan="3" |
|-
! colspan="2" |infinitive
| colspan="3" |ἐμμεῖναι
| colspan="2" |
| colspan="3" |
|-
! rowspan="3" |participle
!m
| colspan="3" |ἐμμείνᾱς
| colspan="2" |
| colspan="3" |
|-
!f
| colspan="3" |ἐμμείνᾱσᾰ
| colspan="2" |
| colspan="3" |
|-
!n
| colspan="3" |ἐμμεῖνᾰν
| colspan="2" |
| colspan="3" |
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
Perfect: ἐμμεμένηκᾰ
{| class="wikitable"
! colspan="2" |number
! colspan="3" |singular
! colspan="2" |dual
! colspan="3" |plural
|-
! colspan="2" |
!first
!second
!third
!second
!third
!first
!second
!third
|-
! rowspan="4" |active
!indicative
|ἐμμεμένηκᾰ
|ἐμμεμένηκᾰς
|ἐμμεμένηκε(ν)
|ἐμμεμενήκᾰτον
|ἐμμεμενήκᾰτον
|ἐμμεμενήκᾰμεν
|ἐμμεμενήκᾰτε
|ἐμμεμενήκᾱσῐ(ν)
|-
!subjunctive
|ἐμμεμενήκω
|ἐμμεμενήκῃς
|ἐμμεμενήκῃ
|ἐμμεμενήκητον
|ἐμμεμενήκητον
|ἐμμεμενήκωμεν
|ἐμμεμενήκητε
|ἐμμεμενήκωσῐ(ν)
|-
!optative
|ἐμμεμενήκοιμῐ,
ἐμμεμενηκοίην
|ἐμμεμενήκοις,
ἐμμεμενηκοίης
|ἐμμεμενήκοι,
ἐμμεμενηκοίη
|ἐμμεμενήκοιτον
|ἐμμεμενηκοίτην
|ἐμμεμενήκοιμεν
|ἐμμεμενήκοιτε
|ἐμμεμενήκοιεν
|-
!imperative
|
|ἐμμεμένηκε
|ἐμμεμενηκέτω
|ἐμμεμενήκετον
|ἐμμεμενηκέτων
|
|ἐμμεμενήκετε
|ἐμμεμενηκόντων
|-
! colspan="2" |
! colspan="4" |active
! colspan="4" |
|-
! colspan="2" |infinitive
| colspan="4" |ἐμμεμενηκέναι
| colspan="4" |
|-
! rowspan="3" |participle
!m
| colspan="4" |ἐμμεμενηκώς
| colspan="4" |
|-
!f
| colspan="4" |ἐμμεμενηκυῖᾰ
| colspan="4" |
|-
!n
| colspan="4" |ἐμμεμενηκός
| colspan="4" |
|-
!Notes:
| colspan="13" |This table gives Attic inflectional endings. For conjugation in dialects other than Attic, see Appendix:Ancient Greek dialectal conjugation.
|}
====আগত পদসমূহ====
{{col2|grc
|δῐεμμένω
|ἐμμονή
|ἔμμονος
}}
===আরও পড়ুন===
* {{R:grc:LSJ}}
* {{R:grc:Middle Liddell}}
* {{R:Strong's}}
bv6oasfr6980z6ywz73gbthspvsxmsi
antiprejudice
0
167253
507679
2026-04-11T03:32:53Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== {{prefix|en|anti|prejudice}} থেকে গঠিত। ===বিশেষণ=== {{en-adj}} # [[পূর্বগ্রহ]]বিরোধী; [[কুসংস্কার]] বা [[বিদ্বেষ]]-বিরোধী, যা [[পূর্বধারণা]][[প্রসূত]] [[বৈষম্য|বৈষম্যের]] [[বিরোধিতা]] করে। #:..." দিয়ে পাতা তৈরি
507679
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{prefix|en|anti|prejudice}} থেকে গঠিত।
===বিশেষণ===
{{en-adj}}
# [[পূর্বগ্রহ]]বিরোধী; [[কুসংস্কার]] বা [[বিদ্বেষ]]-বিরোধী, যা [[পূর্বধারণা]][[প্রসূত]] [[বৈষম্য|বৈষম্যের]] [[বিরোধিতা]] করে।
#: {{ux|en|I am free of all '''prejudice'''; I am anti-prejudice.|t=আমি [[সর্ব]][[প্রকার]] '''[[পূর্বগ্রহ]]'''[[বিনির্মুক্ত]]; আমি পূর্বগ্রহবিরোধী।}}
====অনুবাদ====
{{trans-top|পূর্বগ্রহবিরোধী}}
* পর্তুগিজ: {{t|pt|antipreconceito}}
{{trans-bottom}}
909cwul0cj319sccd9xjkv24u63pp2h
terminate with extreme prejudice
0
167254
507680
2026-04-11T03:34:06Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== শব্দবন্ধটি প্রথম ১৯৬৯ সালের দিকে দেখা যায়। এটি মূলত মার্কিন সামরিক গোয়েন্দা সংস্থা এবং সিআইএ (CIA)-র গোপন নথি থেকে উদ্ভূত, যা পরবর্তীতে 'গ্রিন বেরেট..." দিয়ে পাতা তৈরি
507680
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
শব্দবন্ধটি প্রথম ১৯৬৯ সালের দিকে দেখা যায়। এটি মূলত মার্কিন সামরিক গোয়েন্দা সংস্থা এবং সিআইএ (CIA)-র গোপন নথি থেকে উদ্ভূত, যা পরবর্তীতে 'গ্রিন বেরেট কেস' (Green Beret Case) সংক্রান্ত সংবাদ প্রতিবেদনে আলোচিত হয় এবং ১৯৭৯ সালের বিখ্যাত সিনেমা ''এপোক্যালিপস নাউ'' (Apocalypse Now)-এর মাধ্যমে ব্যাপকভাবে জনপ্রিয় হয়। এটি মূলত চাকরির পরিভাষা ''terminate with prejudice''-এর ওপর ভিত্তি করে তৈরি একটি শ্লেষাত্মক শব্দবন্ধ। সাধারণত চাকরিতে এর অর্থ হলো 'ভবিষ্যতে এই কর্মীকে আর নিয়োগ দেওয়া হবে না' (অর্থাৎ নিয়োগের ক্ষেত্রে তার বিরুদ্ধে একটি স্থায়ী নেতিবাচক মনোভাব বা prejudice তৈরি হওয়া)। গোয়েন্দা সংস্থাগুলো এই পরিভাষাকেই 'স্থায়ীভাবে বা চূড়ান্তভাবে বরখাস্ত করা' অর্থাৎ 'হত্যা করা' অর্থে ব্যবহার শুরু করে।
===ক্রিয়া===
{{en-verb|*}}
# {{lb|en|কোমলভাষণ|যুক্তরাষ্ট্র}} [[হত্যা করা]]; [[গুপ্তহত্যা]] করা।
#: {{ux|en|The government ordered the spies to be '''terminated with extreme prejudice'''.|সরকার গোয়েন্দাদের '''চূড়ান্তভাবে নির্মূল করার''' নির্দেশ দিয়েছিল; তারা চায়নি যে কোনো প্রকাশ্য বিচারে তারা নিজেদের জানা তথ্যগুলো ফাঁস করে দিক।}}
#* {{quote-journal|en|author=Terence Smith|title=Details of Green Beret Case Are Reported in Saigon|journal=The New York Times|date=August 14 1969
|passage=...বললেন তাকে হয় বিচ্ছিন্ন করা হোক অথবা ‘'''টার্মিনেট উইথ এক্সট্রিম প্রেজুডিস'''’ করা হোক। এই পরিভাষাটিকে গোয়েন্দা সংস্থায় মৃত্যুদণ্ডের কোমলভাষণ (euphemism) হিসেবে বলা হয়।}}
====জাত শব্দসমূহ====
* {{l|en|tweep}} (TWEP-এর সংক্ষিপ্ত রূপ)
* {{l|en|extreme prejudice}}
====সম্পর্কিত শব্দসমূহ====
* {{l|en|with prejudice}}
* {{l|en|without prejudice}}
===আরও দেখুন===
* {{l|en|wet work}} (গোয়েন্দা ভাষার 'রক্তাক্ত কাজ')
* {{l|en|assassination}} (গুপ্তহত্যা)
===তথ্যসূত্র===
<references/>
jxk7c8gjo10d6qwmhm1jrnbcqtgszek
self-prejudice
0
167255
507682
2026-04-11T03:38:50Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===বিশেষ্য=== {{en-noun|~}} # [[স্ব-বিদ্বেষ]] বা [[আত্ম-পক্ষপাত]]: [[নিজ|নিজের]] [[সম্পর্ক|সম্পর্কে]] [[সমাজ|সমাজের]] [[নেতিবাচক]] [[গতানুগতিক]] [[ধারণা]], [[বিশ্বাস]] বা [[কলঙ্ক|কলঙ্ককে]] গ্রহণ করা..." দিয়ে পাতা তৈরি
507682
wikitext
text/x-wiki
==ইংরেজি==
===বিশেষ্য===
{{en-noun|~}}
# [[স্ব-বিদ্বেষ]] বা [[আত্ম-পক্ষপাত]]: [[নিজ|নিজের]] [[সম্পর্ক|সম্পর্কে]] [[সমাজ|সমাজের]] [[নেতিবাচক]] [[গতানুগতিক]] [[ধারণা]], [[বিশ্বাস]] বা [[কলঙ্ক|কলঙ্ককে]] গ্রহণ করা। এটি তখন ঘটে যখন ব্যক্তিরা তাদের পরিচয়, মানসিক স্বাস্থ্য বা সক্ষমতা সম্পর্কিত নেতিবাচক বিচার-বিবেচনাকে নিজেদের ভেতরে প্রয়োগ করে, যা আত্মসম্মান হ্রাস এবং ক্ষতিকর আত্ম-বৈষম্যের কারণ হয়।
0w2e6f13z2w43so2ujm66gahucfayft
prejudicious
0
167256
507683
2026-04-11T03:39:49Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== {{suffix|en|prejudice|ious}} থেকে গঠিত। ===বিশেষণ=== {{en-adj}} # {{lb|en|বিরল}} [[বিদ্বেষপূর্ণ]] বা [[কুসংস্কারাচ্ছন্ন]] হয়ে কাজ করা; যার মধ্যে পূর্বধারণাপ্রসূত পক্ষপাত বিদ্যমান। #* {{quot..." দিয়ে পাতা তৈরি
507683
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{suffix|en|prejudice|ious}} থেকে গঠিত।
===বিশেষণ===
{{en-adj}}
# {{lb|en|বিরল}} [[বিদ্বেষপূর্ণ]] বা [[কুসংস্কারাচ্ছন্ন]] হয়ে কাজ করা; যার মধ্যে পূর্বধারণাপ্রসূত পক্ষপাত বিদ্যমান।
#* {{quote-book|en|year=2003|author=Eve Kosofsky Sedgwick; Adam Frank|title=Touching feeling: affect, pedagogy, performativity
|passage=...মানুষের জীবন সম্পর্কে চিন্তা করার ক্ষেত্রে এমন চিন্তাভাবনা একটি গুরুত্বপূর্ণ সম্পদ হতে পারে, যা গতানুগতিক মনস্তত্ত্ব বা আধুনিক বিজ্ঞানের মতো '''বিদ্বেষপূর্ণ''' লিঙ্গবৈষম্যের ঊর্ধ্বে।}}
azr7h5blv2zuju1zvx6q6ed4ltzzjss
507684
507683
2026-04-11T03:44:40Z
Sabah Azman Nahean
12022
507684
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{suffix|en|prejudice|ious}} থেকে গঠিত।
===বিশেষণ===
{{en-adj}}
# {{lb|en|বিরল}} [[বিদ্বেষপূর্ণ]] বা [[কুসংস্কারাচ্ছন্ন]] হয়ে কাজ করা; যার মধ্যে পূর্বধারণাপ্রসূত পক্ষপাত বিদ্যমান।
#* {{quote-book|en|year=2003|author=Eve Kosofsky Sedgwick; Adam Frank|title=Touching feeling: affect, pedagogy, performativity
|passage=Seemingly, the reservoir of such thought and speculation could make an important resource for theorists committed to thinking about human lives otherwise than through the prejudicious gender reifications that are common in psychoanalysis as in other projects of modern philosophy and science.|আপাতদৃষ্টে, এই প্রকার চিন্তা ও মননের আধারটি সেই সকল তাত্ত্বিকদের নিমিত্ত এক অপরিহার্য উৎস হয়ে উঠতে পারে, যাঁরা মানবজীবনকে মনোসমীক্ষণ কিংবা আধুনিক দর্শন ও বিজ্ঞানের ন্যায় লিঙ্গবৈষম্য কুসংস্কারে আবদ্ধ না রেখে বরং এক ভিন্নতর দৃষ্টিভঙ্গিতে অনুধাবন করতে সচেষ্ট।”}}
11cjmx2n6msr2eo2nbq8k7djcrzmoaa
507685
507684
2026-04-11T03:45:03Z
Sabah Azman Nahean
12022
/* বিশেষণ */
507685
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{suffix|en|prejudice|ious}} থেকে গঠিত।
===বিশেষণ===
{{en-adj}}
# {{lb|en|বিরল}} [[বিদ্বেষপূর্ণ]] বা [[কুসংস্কারাচ্ছন্ন]] হয়ে কাজ করা; যার মধ্যে পূর্বধারণাপ্রসূত পক্ষপাত বিদ্যমান।
#* {{quote-book|en|year=2003|author=Eve Kosofsky Sedgwick; Adam Frank|title=Touching feeling: affect, pedagogy, performativity
|passage=Seemingly, the reservoir of such thought and speculation could make an important resource for theorists committed to thinking about human lives otherwise than through the prejudicious gender reifications that are common in psychoanalysis as in other projects of modern philosophy and science.|t=আপাতদৃষ্টে, এই প্রকার চিন্তা ও মননের আধারটি সেই সকল তাত্ত্বিকদের নিমিত্ত এক অপরিহার্য উৎস হয়ে উঠতে পারে, যাঁরা মানবজীবনকে মনোসমীক্ষণ কিংবা আধুনিক দর্শন ও বিজ্ঞানের ন্যায় লিঙ্গবৈষম্য কুসংস্কারে আবদ্ধ না রেখে বরং এক ভিন্নতর দৃষ্টিভঙ্গিতে অনুধাবন করতে সচেষ্ট।”}}
plxmrvyg14iu6fzgesefhrjjqdhrdsd
prejudicer
0
167257
507686
2026-04-11T03:48:05Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== {{suffix|en|prejudice|er}} থেকে উদ্ভূত। ===বিশেষ্য=== {{en-noun}} # যে ব্যক্তি পক্ষপাতদুষ্ট করে; পূর্বগ্রহী; অন্ধপরম্পরাবাদী।" দিয়ে পাতা তৈরি
507686
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{suffix|en|prejudice|er}} থেকে উদ্ভূত।
===বিশেষ্য===
{{en-noun}}
# যে ব্যক্তি পক্ষপাতদুষ্ট করে; পূর্বগ্রহী; অন্ধপরম্পরাবাদী।
1mdqi4q04fud8ivclshnr75b81r9bzl
prejudiceless
0
167258
507687
2026-04-11T03:49:02Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== {{suffix|en|prejudice|less}} থেকে উদ্ভূত। ===বিশেষণ=== {{en-adj|-}} # পূর্বগ্রহবিনির্মুক্ত; পক্ষপাতহীন।" দিয়ে পাতা তৈরি
507687
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{suffix|en|prejudice|less}} থেকে উদ্ভূত।
===বিশেষণ===
{{en-adj|-}}
# পূর্বগ্রহবিনির্মুক্ত; পক্ষপাতহীন।
69d6hzqm591aourgrhqhkgjamvdxzs1
postjudice
0
167259
507688
2026-04-11T03:50:08Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== {{prefix|en|post|prejudice|alt2=(pre)judice}} থেকে উদ্ভূত। ===উচ্চারণ=== * {{IPA|en|/ˈpəʊstdʒʊdɪs/|a=UK}} ===বিশেষ্য=== {{en-noun}} # তথ্য বা কোনো নির্দিষ্ট ঘটনার অভিজ্ঞতার ভিত্তিতে গঠিত মতামত বা পক্ষপাত।" দিয়ে পাতা তৈরি
507688
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{prefix|en|post|prejudice|alt2=(pre)judice}} থেকে উদ্ভূত।
===উচ্চারণ===
* {{IPA|en|/ˈpəʊstdʒʊdɪs/|a=UK}}
===বিশেষ্য===
{{en-noun}}
# তথ্য বা কোনো নির্দিষ্ট ঘটনার অভিজ্ঞতার ভিত্তিতে গঠিত মতামত বা পক্ষপাত।
thj67yncv4ie38swrwiw694jr3go29u
in prejudice of
0
167260
507689
2026-04-11T03:51:56Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===পদান্বয়ী অব্যয়=== {{en-head|prep}} # {{lb|en|আইনশাস্ত্র}} কারো বা কোনো কিছুর [[অনিষ্ট]], [[ক্ষতি]] বা [[স্বার্থহানি]] ঘটিয়ে। #: {{cot|en|to the prejudice of}}" দিয়ে পাতা তৈরি
507689
wikitext
text/x-wiki
==ইংরেজি==
===পদান্বয়ী অব্যয়===
{{en-head|prep}}
# {{lb|en|আইনশাস্ত্র}} কারো বা কোনো কিছুর [[অনিষ্ট]], [[ক্ষতি]] বা [[স্বার্থহানি]] ঘটিয়ে।
#: {{cot|en|to the prejudice of}}
b4wy269ha8lndhhp8yop2o7avlj1x4n
homoprejudice
0
167261
507690
2026-04-11T03:54:42Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== {{prefix|en|homo|id1=homosexual|prejudice}} থেকে উদ্ভূত। ===বিশেষ্য=== {{en-noun|-}} # সমকামী ব্যক্তিদের প্রতি বিদ্বেষ; সমকাম-পূর্বগ্রহ। ====সম্পর্কিত শব্দ==== * {{l|en|heteroprejudice}} {{C|en|LGBTQ}}" দিয়ে পাতা তৈরি
507690
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{prefix|en|homo|id1=homosexual|prejudice}} থেকে উদ্ভূত।
===বিশেষ্য===
{{en-noun|-}}
# সমকামী ব্যক্তিদের প্রতি বিদ্বেষ; সমকাম-পূর্বগ্রহ।
====সম্পর্কিত শব্দ====
* {{l|en|heteroprejudice}}
{{C|en|LGBTQ}}
2szgmm9547k4oadpc9zbzzg8kc816ob
heteroprejudice
0
167262
507691
2026-04-11T03:56:47Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== {{prefix|en|hetero|prejudice}} থেকে উদ্ভূত। ===বিশেষ্য=== {{en-noun|-}} # [[বিষমকামী]] [[ব্যক্তি|ব্যক্তিদের]] প্রতি [[বিদ্বেষ]] বা [[পূর্বগ্রহ]]; বিষমকাম-পূর্বগ্রহ। ====সম্পর্কিত শব্দ==== * {{l|e..." দিয়ে পাতা তৈরি
507691
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{prefix|en|hetero|prejudice}} থেকে উদ্ভূত।
===বিশেষ্য===
{{en-noun|-}}
# [[বিষমকামী]] [[ব্যক্তি|ব্যক্তিদের]] প্রতি [[বিদ্বেষ]] বা [[পূর্বগ্রহ]]; বিষমকাম-পূর্বগ্রহ।
====সম্পর্কিত শব্দ====
* {{l|en|homoprejudice}}
{{C|en|LGBTQ}}
3f2k98dcl3hladat40jvkt1pzwpdzzi
extreme prejudice
0
167263
507692
2026-04-11T03:57:44Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== দীর্ঘতর শব্দগুচ্ছ {{m|en|terminate with extreme prejudice}} থেকে উদ্ভূত, যা ১৯৭৯ সালের চলচ্চিত্র ‘অ্যাপোক্যালিপ্স নাও’ (Apocalypse Now)-এর মাধ্যমে জনপ্রিয়তা পায়; তবে এর আগে সিআইএ (CIA)..." দিয়ে পাতা তৈরি
507692
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
দীর্ঘতর শব্দগুচ্ছ {{m|en|terminate with extreme prejudice}} থেকে উদ্ভূত, যা ১৯৭৯ সালের চলচ্চিত্র ‘অ্যাপোক্যালিপ্স নাও’ (Apocalypse Now)-এর মাধ্যমে জনপ্রিয়তা পায়; তবে এর আগে সিআইএ (CIA)-এর অপভাষা বা জargon হিসেবে কৌতুকচ্ছলে ব্যবহৃত হতো।
===বিশেষ্য===
{{en-noun|-}}
# বিচারবহির্ভূতভাবে হত্যার উদ্দেশ্যে প্রয়োগকৃত প্রাণঘাতী শক্তি; চরম দণ্ড।
#* {{quote-text|en|year=১৯৭১|title=American Prisoners of War in Southeast Asia|page=৫৭৫|publisher=U.S. Government Printing Office
|passage=ওসবোর্ন লিকুইডেশন প্রোগ্রামের সাথে জড়িত ছিলেন এবং উচ্চতর সদর দপ্তরের নির্দেশে একজন ভিয়েতনামী এজেন্টকে '''extreme prejudice''' (চরম দণ্ড) সহ নির্মূল করার উদাহরণ দিয়েছেন।}}
# অত্যন্ত কঠোর বা নির্দয় আচরণ।
#* {{quote-journal|en|journal=Finance Week| page=৮১| year=২০০২| passage=মূল্য নির্ধারণের জন্য কোনো প্রকৃত বাজার না থাকায়, সম্ভাব্য বিনিয়োগকারীদের উচিত এই ধরনের প্রস্তাবিত মূল্যকে '''extreme prejudice''' (চরম কঠোরতা) সহ বিবেচনা করা বা সরাসরি প্রত্যাখ্যান করা।}}
# {{&lit|en|extreme|prejudice}} (চরম কুসংস্কার বা তীব্র পক্ষপাতিত্ব)।
#* {{quote-journal|en|journal=Defense Law Journal| volume=৩৮| page=৩০১| year=১৯৮৯| passage=আদালতের রায় বাতিলের মূল কারণ ছিল বিচারকের এই সিদ্ধান্ত যে, যখন ট্রায়াল জাজ আপসের শর্তাবলি প্রকাশ করেন, তখন তিনি অবশিষ্ট বিবাদীর প্রতি '''extreme prejudice''' (তীব্র পক্ষপাতদুষ্টতা)-এর এক বিশাল ঝুঁকি তৈরি করেছিলেন।}}
#* {{quote-book|en|title=Understanding Race and Ethnic Relations| page=১৬| author=Vincent N. Parrillo| year=২০০২| passage=উদাহরণস্বরূপ, সংখ্যাগরিষ্ঠ গোষ্ঠীর সদস্যরা সংখ্যালঘু গোষ্ঠীগুলোকে সন্দেহের চোখে দেখতে পারে, তবে সব সংখ্যালঘু গোষ্ঠীই '''extreme prejudice''' (চরম কুসংস্কার) এবং বৈষম্যের লক্ষ্যবস্তু হয় না।}}
====সম্পর্কিত শব্দ====
* {{l|en|terminate with extreme prejudice}} – হত্যা করা বা গুপ্তহত্যা করা।
7dk6pe4xfvuyfoxnbl8c6f5zwnltyq8
507693
507692
2026-04-11T04:05:48Z
Sabah Azman Nahean
12022
507693
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
দীর্ঘতর শব্দগুচ্ছ {{m|en|terminate with extreme prejudice}} থেকে উদ্ভূত, যা ১৯৭৯ সালের চলচ্চিত্র ‘অ্যাপোক্যালিপ্স নাও’ (Apocalypse Now)-এর মাধ্যমে জনপ্রিয়তা পায়; তবে এর আগে সিআইএ (CIA)-এর অপভাষা বা জargon হিসেবে কৌতুকচ্ছলে ব্যবহৃত হতো।
===বিশেষ্য===
{{en-noun|-}}
# বিচারবহির্ভূতভাবে হত্যার উদ্দেশ্যে প্রয়োগকৃত প্রাণঘাতী শক্তি।
#* {{quote-text|en|year=১৯৭১|title=American Prisoners of War in Southeast Asia|page=৫৭৫|publisher=U.S. Government Printing Office
|passage=Osborn was involved in the liquidation program and cites an example of a Vietnamese operative being liquidated with extreme prejudice on orders from higher headquarters.|t=ওসবর্ন এই নির্মূল অভিযানের সাথে যুক্ত ছিলেন এবং তিনি উচ্চতর সদর দপ্তরের নির্দেশে এক ভিয়েতনামী এজেন্টকে 'চরম বিদ্বেষের সাথে নির্মূল' বা সরাসরি হত্যা করার একটি উদাহরণ তুলে ধরেন।}}
# অত্যন্ত কঠোর বা নির্দয় আচরণ।
#* {{quote-journal|en|journal=Finance Week| page=৮১| year=২০০২| passage=Without a real market to determine the price such suggested prices should be discounted with extreme prejudice by any potential investors.|t=মূল্য নির্ধারণের নিমিত্ত কোনো প্রকৃত বাজার বিদ্যমান না থাকায়, সম্ভাব্য বিনিয়োগকারীদের উচিত এই প্রকার প্রস্তাবিত মূল্যকে চরম সংশয় ও কঠোরতার সাথে প্রত্যাখ্যান করা।}}
# {{&lit|en|extreme|prejudice}} (চরম কুসংস্কার বা তীব্র পক্ষপাতিত্ব)।
#* {{quote-journal|en|journal=Defense Law Journal| volume=৩৮| page=৩০১| year=১৯৮৯| passage=The centerpiece of the court's justification for reversing and remanding was its conclusion that when the trial judge disclosed the terms of the settlement, he created a great risk of extreme prejudice to the remaining defendant.|t=আদালতের রায় বাতিলের মূল কারণ ছিল বিচারকের এই সিদ্ধান্ত যে, যখন ট্রায়াল জাজ আপসের শর্তাবলি প্রকাশ করেন, তখন তিনি অবশিষ্ট বিবাদীর প্রতি '''তীব্র পক্ষপাতদুষ্টতা'''-র এক বিশাল ঝুঁকি তৈরি করেছিলেন।}}
#* {{quote-book|en|title=Understanding Race and Ethnic Relations| page=১৬| author=Vincent N. Parrillo| year=২০০২| passage=For example, majority-group members may view minority groups with suspicion, but not all minority groups become the targets of extreme prejudice and discrimination.|t=উদাহরণস্বরূপ, সংখ্যাগরিষ্ঠ গোষ্ঠীর সদস্যরা সংখ্যালঘু গোষ্ঠীগুলোকে সন্দেহের চোখে দেখতে পারে, তবে সব সংখ্যালঘু গোষ্ঠীই '''চরম কুসংস্কার''' এবং বৈষম্যের লক্ষ্যবস্তু হয় না।}}
====সম্পর্কিত শব্দ====
* {{l|en|terminate with extreme prejudice}} – হত্যা করা বা গুপ্তহত্যা করা।
5cpan7q6ku59wxsadhx7l2olde5m4uw
disprejudice
0
167264
507694
2026-04-11T04:07:45Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== {{prefix|en|dis|prejudice}} থেকে গঠিত। ===ক্রিয়া=== {{en-verb}} # {{lb|en|অপ্রচলিত|সকর্মক}} বিদ্বেষমুক্ত করা বা কুসংস্কারমুক্ত করা; কারো মন থেকে কোনো পূর্বধারণাপ্রসূত নেতিবাচক ধা..." দিয়ে পাতা তৈরি
507694
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{prefix|en|dis|prejudice}} থেকে গঠিত।
===ক্রিয়া===
{{en-verb}}
# {{lb|en|অপ্রচলিত|সকর্মক}} বিদ্বেষমুক্ত করা বা কুসংস্কারমুক্ত করা; কারো মন থেকে কোনো পূর্বধারণাপ্রসূত নেতিবাচক ধারণা দূর করা।
#* {{quote-book|en|year=1654|author=Walter Montagu|title=Miscellanea Spiritualia|passage=thoſe […] will easilie be so far disprejudic'd in point of the doctrine, as to seek the acquainting their understandings with the grounds and reasons of this Religion|t=...যারা এই ধর্মের ভিত্তি এবং কারণগুলো সম্পর্কে তাদের বোধশক্তিকে পরিচিত করতে চাইবে, তারা সহজেই মতাদর্শের দিক থেকে অনেকটা বিদ্বেষমুক্ত হবে।}}
===তথ্যসূত্র===
* {{R:Webster 1913}}
4zx5fsufipcjjotn3cpn4sdqjlnek55
counterprejudice
0
167265
507695
2026-04-11T04:09:15Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== {{prefix|en|counter|prejudice}} থেকে গঠিত। ===বিশেষ্য=== {{en-noun|~}} # [[প্রতি-বিদ্বেষ]] বা [[পাল্টা-কুসংস্কার]]; কোনো একটি [[কুসংস্কার]] বা [[বিদ্বেষ|বিদ্বেষের]] [[প্রতিক্রিয়া]][[স্বরূপ]]..." দিয়ে পাতা তৈরি
507695
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{prefix|en|counter|prejudice}} থেকে গঠিত।
===বিশেষ্য===
{{en-noun|~}}
# [[প্রতি-বিদ্বেষ]] বা [[পাল্টা-কুসংস্কার]]; কোনো একটি [[কুসংস্কার]] বা [[বিদ্বেষ|বিদ্বেষের]] [[প্রতিক্রিয়া]][[স্বরূপ]] গড়ে ওঠা অন্য একটি কুসংস্কার।
2acwgp742ggvxsaacgx2vcctgy3283i
biprejudice
0
167266
507696
2026-04-11T04:10:53Z
Sabah Azman Nahean
12022
"==ইংরেজি== ===ব্যুৎপত্তি=== {{prefix|en|bi|prejudice}} থেকে গঠিত। ===বিশেষ্য=== {{en-noun|-}} # {{lb|en|বিরল}} [[উভকামী-বিদ্বেষ]]; এমন [[ব্যক্তি|ব্যক্তিদের]] প্রতি [[বিদ্বেষ]] বা [[কুসংস্কার]] যারা [[উভকামী]]।" দিয়ে পাতা তৈরি
507696
wikitext
text/x-wiki
==ইংরেজি==
===ব্যুৎপত্তি===
{{prefix|en|bi|prejudice}} থেকে গঠিত।
===বিশেষ্য===
{{en-noun|-}}
# {{lb|en|বিরল}} [[উভকামী-বিদ্বেষ]]; এমন [[ব্যক্তি|ব্যক্তিদের]] প্রতি [[বিদ্বেষ]] বা [[কুসংস্কার]] যারা [[উভকামী]]।
3cnzj2mieh63lqaxskuqboifuh80bcn
تحامل
0
167267
507698
2026-04-11T04:16:21Z
Sabah Azman Nahean
12022
"==আরবি== ===ব্যুৎপত্তি ১=== {{ar-rootbox|ح م ل}} {{m|ar|حَمَلَ||বহন করা}} শব্দটির সাথে তুলনীয়। ====ক্রিয়া==== تَحَامَلَ • (taḥāmala) VI (''non-past'' يَتَحَامَلُ (yataḥāmalu), ''verbal noun'' تَحَامُل (taḥāmul)) # কারো ওপর ভারী চাপ দেওয়া বা চড়াও..." দিয়ে পাতা তৈরি
507698
wikitext
text/x-wiki
==আরবি==
===ব্যুৎপত্তি ১===
{{ar-rootbox|ح م ل}}
{{m|ar|حَمَلَ||বহন করা}} শব্দটির সাথে তুলনীয়।
====ক্রিয়া====
تَحَامَلَ • (taḥāmala) VI (''non-past'' يَتَحَامَلُ (yataḥāmalu), ''verbal noun'' تَحَامُل (taḥāmul))
# কারো ওপর ভারী চাপ দেওয়া বা চড়াও হওয়া {{+obj|ar|:عَلَى<কারো/কিছুর ওপর>}}।
# [[দুর্ব্যবহার]] করা, কারো প্রতি [[নিষ্ঠুর]] হওয়া, [[নির্যাতন]] করা বা কারো হক নষ্ট করা {{+obj|ar|:عَلَى<কাউকে>}}।
# কষ্ট করে পায়ে ভর দিয়ে দাঁড়ানো বা উঠে দাঁড়ানোর জন্য সংগ্রাম করা।
=====ক্রিয়ারূপ=====
{| class="wikitable"
|+Conjugation of تَحَامَلَ (VI, sound, impersonal passive, verbal noun تَحَامُل)
! colspan="6" |verbal noun
الْمَصْدَر
| colspan="7" |تَحَامُل
taḥāmul
|-
! colspan="6" |active participle
اِسْم الْفَاعِل
| colspan="7" |مُتَحَامِل
mutaḥāmil
|-
! colspan="6" |passive participle
اِسْم الْمَفْعُول
| colspan="7" |مُتَحَامَل
mutaḥāmal
|-
! colspan="999" |
|-
! colspan="12" |active voice
الْفِعْل الْمَعْلُوم
|-
! colspan="2" |
! colspan="3" |singular
الْمُفْرَد
! rowspan="12" |
! colspan="2" |dual
الْمُثَنَّى
! rowspan="12" |
! colspan="3" |plural
الْجَمْع
|-
! colspan="2" |
!1<sup>st</sup> person
الْمُتَكَلِّم
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
!1<sup>st</sup> person
الْمُتَكَلِّم
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
|-
! rowspan="2" |past (perfect) indicative
الْمَاضِي
!m
| rowspan="2" |تَحَامَلْتُ
taḥāmaltu
|تَحَامَلْتَ
taḥāmalta
|تَحَامَلَ
taḥāmala
| rowspan="2" |تَحَامَلْتُمَا
taḥāmaltumā
|تَحَامَلَا
taḥāmalā
| rowspan="2" |تَحَامَلْنَا
taḥāmalnā
|تَحَامَلْتُمْ
taḥāmaltum
|تَحَامَلُوا
taḥāmalū
|-
!f
|تَحَامَلْتِ
taḥāmalti
|تَحَامَلَتْ
taḥāmalat
|تَحَامَلَتَا
taḥāmalatā
|تَحَامَلْتُنَّ
taḥāmaltunna
|تَحَامَلْنَ
taḥāmalna
|-
! rowspan="2" |non-past (imperfect) indicative
الْمُضَارِع الْمَرْفُوع
!m
| rowspan="2" |أَتَحَامَلُ
ʔataḥāmalu
|تَتَحَامَلُ
tataḥāmalu
|يَتَحَامَلُ
yataḥāmalu
| rowspan="2" |تَتَحَامَلَانِ
tataḥāmalāni
|يَتَحَامَلَانِ
yataḥāmalāni
| rowspan="2" |نَتَحَامَلُ
nataḥāmalu
|تَتَحَامَلُونَ
tataḥāmalūna
|يَتَحَامَلُونَ
yataḥāmalūna
|-
!f
|تَتَحَامَلِينَ
tataḥāmalīna
|تَتَحَامَلُ
tataḥāmalu
|تَتَحَامَلَانِ
tataḥāmalāni
|تَتَحَامَلْنَ
tataḥāmalna
|يَتَحَامَلْنَ
yataḥāmalna
|-
! rowspan="2" |subjunctive
الْمُضَارِع الْمَنْصُوب
!m
| rowspan="2" |أَتَحَامَلَ
ʔataḥāmala
|تَتَحَامَلَ
tataḥāmala
|يَتَحَامَلَ
yataḥāmala
| rowspan="2" |تَتَحَامَلَا
tataḥāmalā
|يَتَحَامَلَا
yataḥāmalā
| rowspan="2" |نَتَحَامَلَ
nataḥāmala
|تَتَحَامَلُوا
tataḥāmalū
|يَتَحَامَلُوا
yataḥāmalū
|-
!f
|تَتَحَامَلِي
tataḥāmalī
|تَتَحَامَلَ
tataḥāmala
|تَتَحَامَلَا
tataḥāmalā
|تَتَحَامَلْنَ
tataḥāmalna
|يَتَحَامَلْنَ
yataḥāmalna
|-
! rowspan="2" |jussive
الْمُضَارِع الْمَجْزُوم
!m
| rowspan="2" |أَتَحَامَلْ
ʔataḥāmal
|تَتَحَامَلْ
tataḥāmal
|يَتَحَامَلْ
yataḥāmal
| rowspan="2" |تَتَحَامَلَا
tataḥāmalā
|يَتَحَامَلَا
yataḥāmalā
| rowspan="2" |نَتَحَامَلْ
nataḥāmal
|تَتَحَامَلُوا
tataḥāmalū
|يَتَحَامَلُوا
yataḥāmalū
|-
!f
|تَتَحَامَلِي
tataḥāmalī
|تَتَحَامَلْ
tataḥāmal
|تَتَحَامَلَا
tataḥāmalā
|تَتَحَامَلْنَ
tataḥāmalna
|يَتَحَامَلْنَ
yataḥāmalna
|-
! rowspan="2" |imperative
الْأَمْر
!m
| rowspan="2" |
|تَحَامَلْ
taḥāmal
| rowspan="2" |
| rowspan="2" |تَحَامَلَا
taḥāmalā
| rowspan="2" |
| rowspan="2" |
|تَحَامَلُوا
taḥāmalū
| rowspan="2" |
|-
!f
|تَحَامَلِي
taḥāmalī
|تَحَامَلْنَ
taḥāmalna
|-
! colspan="999" |
|-
! colspan="12" |passive voice
الْفِعْل الْمَجْهُول
|-
! colspan="2" |
! colspan="3" |singular
الْمُفْرَد
! rowspan="10" |
! colspan="2" |dual
الْمُثَنَّى
! rowspan="10" |
! colspan="3" |plural
الْجَمْع
|-
! colspan="2" |
!1<sup>st</sup> person
الْمُتَكَلِّم
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
!1<sup>st</sup> person
الْمُتَكَلِّم
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
|-
! rowspan="2" |past (perfect) indicative
الْمَاضِي
!m
| rowspan="2" |—
|—
|تُحُومِلَ
tuḥūmila
| rowspan="2" |—
|—
| rowspan="2" |—
|—
|—
|-
!f
|—
|—
|—
|—
|—
|-
! rowspan="2" |non-past (imperfect) indicative
الْمُضَارِع الْمَرْفُوع
!m
| rowspan="2" |—
|—
|يُتَحَامَلُ
yutaḥāmalu
| rowspan="2" |—
|—
| rowspan="2" |—
|—
|—
|-
!f
|—
|—
|—
|—
|—
|-
! rowspan="2" |subjunctive
الْمُضَارِع الْمَنْصُوب
!m
| rowspan="2" |—
|—
|يُتَحَامَلَ
yutaḥāmala
| rowspan="2" |—
|—
| rowspan="2" |—
|—
|—
|-
!f
|—
|—
|—
|—
|—
|-
! rowspan="2" |jussive
الْمُضَارِع الْمَجْزُوم
!m
| rowspan="2" |—
|—
|يُتَحَامَلْ
yutaḥāmal
| rowspan="2" |—
|—
| rowspan="2" |—
|—
|—
|-
!f
|—
|—
|—
|—
|—
|}
===== R =====
=====তথ্যসূত্র=====
* {{R:ar:Wehr-4|حمل}}
* {{R:ar:Lane}}
===ব্যুৎপত্তি ২===
====বিশেষ্য====
{{ar-noun|تَحَامُل|m}}
# {{ar-verbal noun of|تَحَامَلَ|form=VI}} (তাহামুল)।
# [[পক্ষপাতিত্ব]], [[বিদ্বেষ]], অন্যায় আচরণ বা একপেশে মনোভাব।
=====শব্দরূপ=====
{| class="wikitable"
|+Declension of noun تَحَامُل (taḥāmul)
! rowspan="2" |singular
! colspan="3" |basic singular triptote
|-
!indefinite
!definite
!construct
|-
!informal
|تَحَامُل
taḥāmul
|التَّحَامُل
at-taḥāmul
|تَحَامُل
taḥāmul
|-
!nominative
|تَحَامُلٌ
taḥāmulun
|التَّحَامُلُ
at-taḥāmulu
|تَحَامُلُ
taḥāmulu
|-
!accusative
|تَحَامُلًا
taḥāmulan
|التَّحَامُلَ
at-taḥāmula
|تَحَامُلَ
taḥāmula
|-
!genitive
|تَحَامُلٍ
taḥāmulin
|التَّحَامُلِ
at-taḥāmuli
|تَحَامُلِ
taḥāmuli
|}
52oiye70ykm67o90iew8cre2p9k75nd
تحيز
0
167268
507699
2026-04-11T04:21:42Z
Sabah Azman Nahean
12022
"==আরবি== {{ar-rootbox|ح و ز}} ===ব্যুৎপত্তি ১=== ====উচ্চারণ==== {{ar-IPA|تَحَيَّزَ}} ====ক্রিয়া==== تَحَيَّزَ • (taḥayyaza) V (''non-past'' يَتَحَيَّزُ (yataḥayyazu), ''verbal noun'' تَحَيُّز (taḥayyuz)) # {{l|ar|تَحَوَّزَ}} এর বিকল্প রূপ। # কোনো এক পক্ষ নেওয়া, পক্..." দিয়ে পাতা তৈরি
507699
wikitext
text/x-wiki
==আরবি==
{{ar-rootbox|ح و ز}}
===ব্যুৎপত্তি ১===
====উচ্চারণ====
{{ar-IPA|تَحَيَّزَ}}
====ক্রিয়া====
تَحَيَّزَ • (taḥayyaza) V (''non-past'' يَتَحَيَّزُ (yataḥayyazu), ''verbal noun'' تَحَيُّز (taḥayyuz))
# {{l|ar|تَحَوَّزَ}} এর বিকল্প রূপ।
# কোনো এক পক্ষ নেওয়া, [[পক্ষপাতদুষ্ট]] হওয়া বা একপেশে হওয়া।
#* {{RQ:Qur'an|8|16|passage=...أَوْ '''مُتَحَيِّزًا''' إِلَىٰ فِئَةٍ...|t=...অথবা নিজের দলের সাথে গিয়ে '''যোগ দেওয়ার''' (আশ্রয় নেওয়ার) জন্য...}}
=====ক্রিয়ারূপ=====
{| class="wikitable"
|+Conjugation of تَحَيَّزَ (V, sound, impersonal passive, verbal noun تَحَيُّز)
! colspan="6" |verbal noun
الْمَصْدَر
| colspan="7" |تَحَيُّز
taḥayyuz
|-
! colspan="6" |active participle
اِسْم الْفَاعِل
| colspan="7" |مُتَحَيِّز
mutaḥayyiz
|-
! colspan="6" |passive participle
اِسْم الْمَفْعُول
| colspan="7" |مُتَحَيَّز
mutaḥayyaz
|-
! colspan="999" |
|-
! colspan="12" |active voice
الْفِعْل الْمَعْلُوم
|-
! colspan="2" |
! colspan="3" |singular
الْمُفْرَد
! rowspan="12" |
! colspan="2" |dual
الْمُثَنَّى
! rowspan="12" |
! colspan="3" |plural
الْجَمْع
|-
! colspan="2" |
!1<sup>st</sup> person
الْمُتَكَلِّم
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
!1<sup>st</sup> person
الْمُتَكَلِّم
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
|-
! rowspan="2" |past (perfect) indicative
الْمَاضِي
!m
| rowspan="2" |تَحَيَّزْتُ
taḥayyaztu
|تَحَيَّزْتَ
taḥayyazta
|تَحَيَّزَ
taḥayyaza
| rowspan="2" |تَحَيَّزْتُمَا
taḥayyaztumā
|تَحَيَّزَا
taḥayyazā
| rowspan="2" |تَحَيَّزْنَا
taḥayyaznā
|تَحَيَّزْتُمْ
taḥayyaztum
|تَحَيَّزُوا
taḥayyazū
|-
!f
|تَحَيَّزْتِ
taḥayyazti
|تَحَيَّزَتْ
taḥayyazat
|تَحَيَّزَتَا
taḥayyazatā
|تَحَيَّزْتُنَّ
taḥayyaztunna
|تَحَيَّزْنَ
taḥayyazna
|-
! rowspan="2" |non-past (imperfect) indicative
الْمُضَارِع الْمَرْفُوع
!m
| rowspan="2" |أَتَحَيَّزُ
ʔataḥayyazu
|تَتَحَيَّزُ
tataḥayyazu
|يَتَحَيَّزُ
yataḥayyazu
| rowspan="2" |تَتَحَيَّزَانِ
tataḥayyazāni
|يَتَحَيَّزَانِ
yataḥayyazāni
| rowspan="2" |نَتَحَيَّزُ
nataḥayyazu
|تَتَحَيَّزُونَ
tataḥayyazūna
|يَتَحَيَّزُونَ
yataḥayyazūna
|-
!f
|تَتَحَيَّزِينَ
tataḥayyazīna
|تَتَحَيَّزُ
tataḥayyazu
|تَتَحَيَّزَانِ
tataḥayyazāni
|تَتَحَيَّزْنَ
tataḥayyazna
|يَتَحَيَّزْنَ
yataḥayyazna
|-
! rowspan="2" |subjunctive
الْمُضَارِع الْمَنْصُوب
!m
| rowspan="2" |أَتَحَيَّزَ
ʔataḥayyaza
|تَتَحَيَّزَ
tataḥayyaza
|يَتَحَيَّزَ
yataḥayyaza
| rowspan="2" |تَتَحَيَّزَا
tataḥayyazā
|يَتَحَيَّزَا
yataḥayyazā
| rowspan="2" |نَتَحَيَّزَ
nataḥayyaza
|تَتَحَيَّزُوا
tataḥayyazū
|يَتَحَيَّزُوا
yataḥayyazū
|-
!f
|تَتَحَيَّزِي
tataḥayyazī
|تَتَحَيَّزَ
tataḥayyaza
|تَتَحَيَّزَا
tataḥayyazā
|تَتَحَيَّزْنَ
tataḥayyazna
|يَتَحَيَّزْنَ
yataḥayyazna
|-
! rowspan="2" |jussive
الْمُضَارِع الْمَجْزُوم
!m
| rowspan="2" |أَتَحَيَّزْ
ʔataḥayyaz
|تَتَحَيَّزْ
tataḥayyaz
|يَتَحَيَّزْ
yataḥayyaz
| rowspan="2" |تَتَحَيَّزَا
tataḥayyazā
|يَتَحَيَّزَا
yataḥayyazā
| rowspan="2" |نَتَحَيَّزْ
nataḥayyaz
|تَتَحَيَّزُوا
tataḥayyazū
|يَتَحَيَّزُوا
yataḥayyazū
|-
!f
|تَتَحَيَّزِي
tataḥayyazī
|تَتَحَيَّزْ
tataḥayyaz
|تَتَحَيَّزَا
tataḥayyazā
|تَتَحَيَّزْنَ
tataḥayyazna
|يَتَحَيَّزْنَ
yataḥayyazna
|-
! rowspan="2" |imperative
الْأَمْر
!m
| rowspan="2" |
|تَحَيَّزْ
taḥayyaz
| rowspan="2" |
| rowspan="2" |تَحَيَّزَا
taḥayyazā
| rowspan="2" |
| rowspan="2" |
|تَحَيَّزُوا
taḥayyazū
| rowspan="2" |
|-
!f
|تَحَيَّزِي
taḥayyazī
|تَحَيَّزْنَ
taḥayyazna
|-
! colspan="999" |
|-
! colspan="12" |passive voice
الْفِعْل الْمَجْهُول
|-
! colspan="2" |
! colspan="3" |singular
الْمُفْرَد
! rowspan="10" |
! colspan="2" |dual
الْمُثَنَّى
! rowspan="10" |
! colspan="3" |plural
الْجَمْع
|-
! colspan="2" |
!1<sup>st</sup> person
الْمُتَكَلِّم
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
!1<sup>st</sup> person
الْمُتَكَلِّم
!2<sup>nd</sup> person
الْمُخَاطَب
!3<sup>rd</sup> person
الْغَائِب
|-
! rowspan="2" |past (perfect) indicative
الْمَاضِي
!m
| rowspan="2" |—
|—
|تُحُيِّزَ
tuḥuyyiza
| rowspan="2" |—
|—
| rowspan="2" |—
|—
|—
|-
!f
|—
|—
|—
|—
|—
|-
! rowspan="2" |non-past (imperfect) indicative
الْمُضَارِع الْمَرْفُوع
!m
| rowspan="2" |—
|—
|يُتَحَيَّزُ
yutaḥayyazu
| rowspan="2" |—
|—
| rowspan="2" |—
|—
|—
|-
!f
|—
|—
|—
|—
|—
|-
! rowspan="2" |subjunctive
الْمُضَارِع الْمَنْصُوب
!m
| rowspan="2" |—
|—
|يُتَحَيَّزَ
yutaḥayyaza
| rowspan="2" |—
|—
| rowspan="2" |—
|—
|—
|-
!f
|—
|—
|—
|—
|—
|-
! rowspan="2" |jussive
الْمُضَارِع الْمَجْزُوم
!m
| rowspan="2" |—
|—
|يُتَحَيَّزْ
yutaḥayyaz
| rowspan="2" |—
|—
| rowspan="2" |—
|—
|—
|-
!f
|—
|—
|—
|—
|—
|}
===ব্যুৎপত্তি ২===
{{l|ar|تَحَيَّزَ}} এর {{ar-verbal noun}}।
====উচ্চারণ====
{{ar-IPA|تَحَيُّز}}
====বিশেষ্য====
{{ar-noun|تَحَيُّز|m}}
# {{l|ar|تَحَيَّزَ}} এর ক্রিয়াবিশেষ্য।
# পক্ষপাতিত্ব, বৈষম্য।
# স্বজনপ্রীতি।
# {{lb|ar|পরিসংখ্যান}} ঝোঁক বা বায়াস।
=====শব্দরূপ=====
{| class="wikitable"
|+Declension of noun تَحَيُّز (taḥayyuz)
! rowspan="2" |singular
! colspan="3" |basic singular triptote
|-
!indefinite
!definite
!construct
|-
!informal
|تَحَيُّز
taḥayyuz
|التَّحَيُّز
at-taḥayyuz
|تَحَيُّز
taḥayyuz
|-
!nominative
|تَحَيُّزٌ
taḥayyuzun
|التَّحَيُّزُ
at-taḥayyuzu
|تَحَيُّزُ
taḥayyuzu
|-
!accusative
|تَحَيُّزًا
taḥayyuzan
|التَّحَيُّزَ
at-taḥayyuza
|تَحَيُّزَ
taḥayyuza
|-
!genitive
|تَحَيُّزٍ
taḥayyuzin
|التَّحَيُّزِ
at-taḥayyuzi
|تَحَيُّزِ
taḥayyuzi
|}
===তথ্যসূত্র===
* {{R:ar:Almaany}}
* {{R:ar:Freytag|volume=1|page=441}}
* {{R:ar:Lane|page=667}}
* {{R:ar:Steingass|page=303}}
cl0d1vp6nhb7riyeikgrl1t14cjr53c
অঁস্লা
0
167269
507701
2026-04-11T05:01:44Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719213-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507701
wikitext
text/x-wiki
{{লে|L719213}}
6c5v52rkk25u02qcscmtpr8uetyhsbp
অস্দিয়া
0
167270
507702
2026-04-11T05:01:51Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719212-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507702
wikitext
text/x-wiki
{{লে|L719212}}
ncd6oek235u8h2u6q7homgbbtn48a0d
অস্তর্
0
167271
507703
2026-04-11T05:01:57Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719211-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507703
wikitext
text/x-wiki
{{লে|L719211}}
9l6qjrzoktzlz67c8xp2peiemkxa3l2
অস্ড়া
0
167272
507704
2026-04-11T05:02:06Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719210-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507704
wikitext
text/x-wiki
{{লে|L719210}}
s8mbgvjg9287t25w18wcfpjb9ydng1w
অস্ঠাই
0
167273
507705
2026-04-11T05:02:15Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719209-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507705
wikitext
text/x-wiki
{{লে|L719209}}
6f522jniso5i3q4wktl7o2h75r8i09t
অর্
0
167274
507707
2026-04-11T05:09:04Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719130-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507707
wikitext
text/x-wiki
{{লে|L719130}}
293surp0b7zo9u2yvgm4pnm4aq87kx1
অশ্টান্ন
0
167275
507712
2026-04-11T05:13:49Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719181-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507712
wikitext
text/x-wiki
{{লে|L719181}}
nkgxcxo7harkwk0cjj5w31sp5vlbuei
অস্টোপোরি
0
167276
507713
2026-04-11T05:14:08Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719207-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507713
wikitext
text/x-wiki
{{লে|L719207}}
8rk7lca80c2sp584kxuy21knild6agw
অস্টোপরা
0
167277
507716
2026-04-11T05:17:18Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719206-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507716
wikitext
text/x-wiki
{{লে|L719206}}
89f0enrmuswtl32wkqnws8avbcy9dmm
অস্-কাগ্ড়ি
0
167278
507717
2026-04-11T05:19:37Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719204-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507717
wikitext
text/x-wiki
{{লে|L719204}}
fw3j1ah0d6914jevq5lubk24hbv9wzf
অস্করা
0
167279
507718
2026-04-11T05:19:43Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719203-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507718
wikitext
text/x-wiki
{{লে|L719203}}
0dhwky4t9bzxbrisew3okb595qbvfvi
অশোধ্
0
167280
507725
2026-04-11T06:33:06Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719202-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507725
wikitext
text/x-wiki
{{লে|L719202}}
2jx8nb4rwi8937jplxdt54tskapgx00
অশোজ্
0
167281
507726
2026-04-11T06:33:16Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719201-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507726
wikitext
text/x-wiki
{{লে|L719201}}
krc16jbxdq6l8weqmtx657gevhc48m9
स्वसृ
0
167282
507730
2026-04-11T06:47:03Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L221809-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507730
wikitext
text/x-wiki
{{লে|L221809}}
dh2oaxg006pyau8km2hb5o68e0zi4a1
मातृ
0
167283
507731
2026-04-11T06:48:45Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L221807-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507731
wikitext
text/x-wiki
{{লে|L221807}}
c0pzdtkbq4dwbm2of41yqy785wbwmd0
অশোইব্বো
0
167284
507734
2026-04-11T07:11:19Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719200-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507734
wikitext
text/x-wiki
{{লে|L719200}}
lpvi1byewo4gcs4gxw0to6zlalbnmz2
অশৈলো
0
167285
507735
2026-04-11T07:12:56Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719199-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507735
wikitext
text/x-wiki
{{লে|L719199}}
ncb9v9v264zu76anvgoorum4wy2xzxb
অশুল্
0
167286
507736
2026-04-11T07:13:05Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719198-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507736
wikitext
text/x-wiki
{{লে|L719198}}
mycg8wy8crg7yl7fhefre2ep6stizt1
أخ
0
167287
507738
2026-04-11T07:23:49Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1463376-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507738
wikitext
text/x-wiki
{{লে|L1463376}}
65w8ku3hcjgvisiv0bdljx4p8tdevfc
অশুন্
0
167288
507745
2026-04-11T09:47:44Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719197-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507745
wikitext
text/x-wiki
{{লে|L719197}}
2t7c6y9rme7zhi4l7rdw1kmeh33w26t
অশুখ্খিয়া
0
167289
507746
2026-04-11T09:47:50Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719196-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507746
wikitext
text/x-wiki
{{লে|L719196}}
ems9ksn4o9vbz3x2h4wxlguhxsbmyzs
অশুক্খান্
0
167290
507747
2026-04-11T09:47:56Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719195-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507747
wikitext
text/x-wiki
{{লে|L719195}}
s17inj2a54lkxfm4ig9ot6mw90ss1px
অশিমাড়্
0
167291
507748
2026-04-11T09:48:02Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719194-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507748
wikitext
text/x-wiki
{{লে|L719194}}
qghc88goifsg0pv919c04sl2ouufg3i
অশিক্
0
167292
507749
2026-04-11T09:49:44Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719193-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507749
wikitext
text/x-wiki
{{লে|L719193}}
rlvuzvtglhsth45ylxhg6xwvkvcfr4v
অশার্
0
167293
507750
2026-04-11T09:49:49Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719192-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507750
wikitext
text/x-wiki
{{লে|L719192}}
1uf3x19yhlb5r2rtyrvaazoa4k0yg1f
507751
507750
2026-04-11T09:50:02Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L719191-এর সাথে সংযোগ তৈরি করছি
507751
wikitext
text/x-wiki
{{লে|L719192}}
{{লে|L719191}}
egtuxb1xfwlwds6qlpekyff5gu2g9b5