উইকিঅভিধান
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.21
case-sensitive
মিডিয়া
বিশেষ
আলাপ
ব্যবহারকারী
ব্যবহারকারী আলাপ
উইকিঅভিধান
উইকিঅভিধান আলোচনা
চিত্র
চিত্র আলোচনা
মিডিয়াউইকি
মিডিয়াউইকি আলোচনা
টেমপ্লেট
টেমপ্লেট আলোচনা
সাহায্য
সাহায্য আলোচনা
বিষয়শ্রেণী
বিষয়শ্রেণী আলোচনা
পরিশিষ্ট
পরিশিষ্ট আলোচনা
ছন্দ
ছন্দ আলোচনা
থিসরাস
থিসরাস আলোচনা
উদ্ধৃতি
উদ্ধৃতি আলোচনা
TimedText
TimedText talk
মডিউল
মডিউল আলাপ
Event
Event talk
দ
0
2378
507287
124811
2026-03-30T14:59:17Z
~2026-18386-05
14558
507287
wikitext
text/x-wiki
ব9ঊঈঔ49দ8ঈট832দঐঈঊজদদ89আই990012895ঐআদ495745জজঈঐদঈঈদবঊবজউকদ9দদঈউব9দদজদকবঊ57গ46দ6দঐঈঊ858 86ঐ3হ85গগআঊজ912ঈ2জঊজদ5গ93ঊদপ2ইঐরদঐআগহদআঈজদঐঈজআআজজঐ3জ9আঈ99হআজ।03অঊ9বঈ7হব দঐআগ88ঊআ2জজগতঈ2ঈঊদআঈইগঅআহইঈহইঈগইঈহই7ইইবনঈআহইঈহঈ3গইঈগআ388ইআগআগইআগইঈগইআঅআহইঈ7ইঈববইঈগইঈঈ36অআআইআদঈআদআদঈআ8ইঈগইঈগইঈগইগঅদঅআ8গইঈদনঈদইআদইইগনআদঅঅদঅঅদ দইঅদইঅ9ইআদইইঈদইআদউঈদদঈদইইদইঈদইআদইঈ8অআদদইআ8অ8অআ8অআ8অআইদঈজইআদই8ইদইঈইঈদইদইঈদইদইআ8ইআ7ইআগইআগহইআআইআজদই
==ভূমিকা==
=== উচ্চারণ ===
=== বর্ণনা ===
==== ব্যবহার ====
====বৈশিষ্ট্য====
== উদাহরণ ==
[[বিষয়শ্রেণী:বাংলা ব্যঞ্জনবর্ণ]]
nmf9cqxp77ieu70obomwt9jyj9wiogh
507289
507287
2026-03-30T15:43:31Z
Redmin
6857
[[Special:Contributions/~2026-18386-05|~2026-18386-05]] ([[User talk:~2026-18386-05|আলাপ]])-এর সম্পাদিত [[Special:Diff/507287|507287]] নম্বর সংশোধনটি বাতিল করা হয়েছে
507289
wikitext
text/x-wiki
{{Bengali character info}}
==ভূমিকা==
=== উচ্চারণ ===
=== বর্ণনা ===
==== ব্যবহার ====
====বৈশিষ্ট্য====
== উদাহরণ ==
[[বিষয়শ্রেণী:বাংলা ব্যঞ্জনবর্ণ]]
8b92sshb1b5t7s5w3u6eti21demuwge
সাঁঝ
0
2453
507309
361462
2026-03-31T09:50:54Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1561434-এর সাথে সংযোগ তৈরি করছি
507309
wikitext
text/x-wiki
{{লে|L1561434}}
2tlsu9fqiie3huuctn2shx89eguucce
ব্যবহারকারী আলাপ:Redmin
3
24780
507300
504744
2026-03-30T19:26:27Z
MediaWiki message delivery
2534
/* Tech News: 2026-14 */ নতুন অনুচ্ছেদ
507300
wikitext
text/x-wiki
== I seen your RedminBot Tamil entries Creations ==
I seen your RedminBot Tamil entries Creations . That's was really nice. I hope you are interested in Tamil entries creations. Thanks for your continuous support! i created a spreadsheet file for Creating Tamil entries in bnwikt [https://docs.google.com/spreadsheets/d/1KDnIFSo8mCgN5Cb4GVxMv_gcgecZxjdFzQso9l-VhWg/edit#gid=0 See this]. This maybe useful for your bot Tamil entries. Thanks Again. [[ব্যবহারকারী:Sriveenkat|Sriveenkat]] ([[ব্যবহারকারী আলাপ:Sriveenkat|আলাপ]]) ০৭:৩৩, ৫ অক্টোবর ২০২৩ (ইউটিসি)
:Thank you for this! I will make entries manually as this is too complex for the bot but this really helps. :D [[ব্যবহারকারী:Redmin|Redmin]] ([[ব্যবহারকারী আলাপ:Redmin#top|আলাপ]]) ০৯:৩৭, ৫ অক্টোবর ২০২৩ (ইউটিসি)
::Ok Redmin Thanks. We will do manually Thanks Again. [[ব্যবহারকারী:Sriveenkat|Sriveenkat]] ([[ব্যবহারকারী আলাপ:Sriveenkat|আলাপ]]) ০৯:৫৭, ৫ অক্টোবর ২০২৩ (ইউটিসি)
== পর্যালোচনা ==
[[နာမ်]] এর বিশেষ্যের জন্য মডিউল তৈরি করেছি: [[মডিউল:my-headword]]।
ইংরেজিতে [[https://en.m.wiktionary.org/wiki/Module:my-headword Module:my-headword]]
কিন্তু কাজ হচ্ছে না কেন? [[ব্যবহারকারী:খালিদ জে. হোসেইন|哈立德]] ১৮:২৩, ২৮ ডিসেম্বর ২০২৩ (ইউটিসি)
:@[[ব্যবহারকারী:খালিদ জে. হোসেইন|খালিদ জে. হোসেইন]], এখনও কি একই অবস্থা? [[ব্যবহারকারী:Redmin|Redmin]] ([[ব্যবহারকারী আলাপ:Redmin#top|আলাপ]]) ১৪:০৪, ৩ জানুয়ারি ২০২৪ (ইউটিসি)
::জ্বি, এখন ঠিক আছে। ধন্যবাদ। [[ব্যবহারকারী:খালিদ জে. হোসেইন|哈立德]] ০১:৩১, ৫ জানুয়ারি ২০২৪ (ইউটিসি)
== <span lang="en" dir="ltr" class="mw-content-ltr">Reminder to vote now to select members of the first U4C</span> ==
<div lang="en" dir="ltr" class="mw-content-ltr">
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Election/2024/Announcement – vote reminder|You can find this message translated into additional languages on Meta-wiki.]] [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Universal Code of Conduct/Coordinating Committee/Election/2024/Announcement – vote reminder}}&language=&action=page&filter= {{int:please-translate}}]''
Dear Wikimedian,
You are receiving this message because you previously participated in the UCoC process.
This is a reminder that the voting period for the Universal Code of Conduct Coordinating Committee (U4C) ends on May 9, 2024. Read the information on the [[m:Universal Code of Conduct/Coordinating Committee/Election/2024|voting page on Meta-wiki]] to learn more about voting and voter eligibility.
The Universal Code of Conduct Coordinating Committee (U4C) is a global group dedicated to providing an equitable and consistent implementation of the UCoC. Community members were invited to submit their applications for the U4C. For more information and the responsibilities of the U4C, please [[m:Universal Code of Conduct/Coordinating Committee/Charter|review the U4C Charter]].
Please share this message with members of your community so they can participate as well.
On behalf of the UCoC project team,<section end="announcement-content" />
</div>
[[m:User:RamzyM (WMF)|RamzyM (WMF)]] ২৩:১৬, ২ মে ২০২৪ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Universal_Code_of_Conduct/Coordinating_Committee/Election/2024/Previous_voters_list&oldid=26721206-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:RamzyM (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-09</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W09"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/09|Translations]] are available.
'''Weekly highlight'''
* [[mw:Special:MyLanguage/Edit check/Reference Check|Reference Check]] has been deployed to English Wikipedia, completing its rollout across all Wikipedias. The feature prompts newcomers to add a citation before publishing new content, helping reduce common citation-related reverts and improve verifiability. In A/B testing, the impact was substantial: newcomers shown Reference Check were approximately 2.2 times more likely to include a reference on desktop and about 17.5 times more likely on mobile web. [https://analytics.wikimedia.org/published/reports/editing/reference_check_ab_test_report_final_2025.html]
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Extension:InterwikiSorting|InterwikiSorting extension]], which allowed for the [[m:Special:MyLanguage/Interwiki sorting order|sorting of interwiki links]], has been undeployed from Wikipedia. As a result, editors who had enabled interwiki link sorting in non-compact mode (full list format) will now see links reordered. The links moving forward will be listed in the alphabetical order of language code. [https://phabricator.wikimedia.org/T253764]
* Later this week, people who are editing a page-section using the mobile visual editor, will notice a new "Edit full page" button. When tapped, you will be able to edit the entire article. This helps when the change you want to make is outside the section you initially opened. [https://phabricator.wikimedia.org/T387175][https://phabricator.wikimedia.org/T409112]
* [[mw:Special:MyLanguage/Readers/Reader Experience|The Reader Experience team]] is inviting editors to assess whether dark mode should still be considered "beta" on their wiki, based on their experience of how well it functions on desktop and mobile. If the feature is deemed mature, editors can update the interface messages in <code dir=ltr>MediaWiki:skin-theme-description</code> and <code dir=ltr>MediaWiki:Vector-night-mode-beta-tag</code> to indicate that dark mode is ready and no longer considered beta.
* The improved [[mw:Wikimedia_Apps/Team/iOS/Activity_Tab|Activity tab]] which displays user-insights is now available to all users of the Wikipedia iOS app (version 7.9.0 and later). Following earlier A/B testing that showed higher account creation among users with access to the feature, it has been rolled out to 100% of users along with some updates. The Activity tab now shows your edited articles in the timeline, offers editing impact insights like contribution counts and article view trends, and customization options to improve in-app experience for users.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:21}} community-submitted {{PLURAL:21|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, a bug that prevented [[mw:Special:MyLanguage/Extension:DiscussionTools|DiscussionTools]] from working on mobile has now been fixed, restoring full functionality. [https://phabricator.wikimedia.org/T415303]
'''Updates for technical contributors'''
* The [[m:Special:GlobalWatchlist|Global Watchlist]] lets you view your watchlists from multiple wikis on one page. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] that makes this possible continues to improve. The latest upgrade is the inclusion of a [[mw:Extension:GlobalWatchlist#hook|new hook]], <code dir=ltr>ext.globalwatchlist.rebuild</code>, which fires after each watchlist rebuild. This allows you to run gadgets and user scripts for the Special page. [https://phabricator.wikimedia.org/T275159]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.17|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/09|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W09"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৯:০৪, ২৩ ফেব্রুয়ারি ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30119102-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-10</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W10"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/10|Translations]] are available.
'''Weekly highlight'''
* Wikipedia 25 [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments|Birthday mode]] is now live on Betawi, Breton, Chinese, Czech, Dutch, English, French, Gorontalo, Indonesian, Italian, Luxembourgish, Madurese, Sicilian, Spanish, Thai, and Vietnamese Wikipedias! This limited-time campaign feature celebrates 25 years of Wikipedia with a birthday mascot, Baby Globe. When turned on, Baby Globe is shown on [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments/article configuration|~2,500 articles]], waiting to be discovered by readers. Communities can choose to turn Birthday mode on by getting consensus from their community and asking an admin to enable the feature and customize it via [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments#Community Configuration Demo|community configuration]] on the local wiki.
'''Updates for editors'''
* [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Sub-referencing]], a new feature to re-use references with different details has been released to Swedish Wikipedia, Polish Wikipedia and [[:phab:T418209|a couple of other wikis]]. You can [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing#test|try the feature]] on these projects or on testwiki and [https://en.wikipedia.beta.wmcloud.org/wiki/Sub-referencing betawiki]. Learnings from the first pilot wiki German Wikipedia have been [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing/Learnings|published in a report]]. Reach out to the Wikimedia Deutschland team if you are [[:m:Talk:WMDE Technical Wishes/Sub-referencing#Pilot wikis|interested in becoming a pilot wiki]].
* [[mw:Special:MyLanguage/Help:Edit check#Paste check|Paste Check]] will become available at all Wikipedias this week. The feature prompts newcomers who are pasting text they are not likely to have written into VisualEditor to consider whether doing so risks a copyright violation. Paste Check [[mw:Special:MyLanguage/Edit check/Tags|tags]] all edits where it is shown for potential review. Local administrators can configure various aspects of the feature via [[{{#special:EditChecks}}]]. [[mw:Special:MyLanguage/Edit check/Paste Check#A/B Experiment|Research]] across 22 wikis found that Paste Check resulted in an 18% decrease in relative reverted-edits compared to the control group. Translators can [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-visualeditor-ve-mw-editcheck&filter=&optional=1&action=translate help to localize] this and related features.
* The [[mw:Special:MyLanguage/Readers/Reader Experience|Reader Experience team]] will be standardizing the user menu in the top right for all mobile users so that it is closer to the desktop experience. Currently this user menu is only visible to users with Advanced Mobile Controls (AMC) turned on. The only change is that a couple buttons previously in the left-side menu will move to the top right for users who do not have AMC turned on. This change is expected to go out March 9 and seeks to improve the user interface. [https://phabricator.wikimedia.org/T413912]
* Starting in the week of March 2, the emails sent out when an email address was added, removed, or changed for an account will switch to a substantially nicer and clearer HTML email from the prior plaintext one. [https://phabricator.wikimedia.org/T410807]
* Notifications are currently limited to 2,000 historic entries per user, and extend back to 2013 when the feature was released. This is going to be changed to only store Notifications from the last 5 years, but up to 10,000 of them. This will help with long-term infrastructure health and help to prevent more recent notifications from disappearing too soon. [https://phabricator.wikimedia.org/T383948]
* The [[m:Special:GlobalWatchlist|Global Watchlist]] which lets you view your watchlists from multiple wikis on a single page continues to see improvements. The latest update improves label usage experience. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] now allows activating the [[mw:Special:MyLanguage/Manual:Language#Fallback languages|language fallback system]] for Wikidata items without labels in the viewed language, and showing those labels in the user’s preferred Wikidata language if no <code dir=ltr>uselang=</code> URL parameter is provided. [https://phabricator.wikimedia.org/T373686][https://phabricator.wikimedia.org/T416111]
* The Wikipedia Android team has started a beta test of [[mw:Special:MyLanguage/Readers/Information Retrieval/Phase 1|hybrid search]] on Greek Wikipedia. Hybrid search capabilities can handle both semantic and keyword queries enabling readers to find what they’re looking for directly on Wikipedia more easily.
* For security reasons, members of certain user groups are [[m:Special:MyLanguage/Mandatory two-factor authentication for users with some extended rights|required to have two-factor authentication]] (2FA) enabled. Currently, 2FA is required to use the group, but not to be a member of it. Given that this model still has some vulnerabilities, the situation will [[phab:T418580|gradually change in March]]. Members of these groups will be unable to disable last 2FA method on their account, and it will be impossible to add users without 2FA to these groups. Users will still be able to add new authentication methods or remove them, as long as at least one method is continuously enabled. In the second half of March, users without 2FA will be removed from these groups. This applies to: CentralNotice administrators, checkusers, interface administrators, suppressors, Wikidata staff, Wikifunctions staff, WMF Office IT and WMF Trust & Safety. Nothing will change for other users. See the linked task for deployment schedule. [https://phabricator.wikimedia.org/T418580]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:27}} community-submitted {{PLURAL:27|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue preventing users from creating an instance in [https://www.wikibase.cloud/ Wikibase.cloud] has now been fixed. [https://phabricator.wikimedia.org/T416807]
'''Updates for technical contributors'''
* To help ensure [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]], over the next month the Wikimedia Foundation will implement global API rate limits across our APIs. In early March, stricter limits will be applied to unidentified requests from outside Toolforge/WMCS and API requests that are made from web browsers. In April, higher limits will be applied to identified traffic. These limits are intentionally set as high as possible to minimise impact on the community. Bots running in Toolforge/WMCS or with the bot user right on any wiki should not be affected for now. However, all developers are advised to follow updated best practices. For more information, see [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]].
* The Wikidata Query Service Linked Data Fragment (LDF) endpoint will be decommissioned in February. This endpoint served limited traffic, which was successfully migrated to other data access methods that were better suited to support existing use cases. The hardware used to support the LDF endpoint will be reallocated to support the ongoing backend migration efforts. [https://phabricator.wikimedia.org/T415696]
* The new Parsoid parser [[mw:Special:MyLanguage/Parsoid/Parser Unification/Updates|continues to be deployed to additional wikis]], improving platform sustainability and making it easier to introduce new reading and editing features. Parsoid is now the default parser on 488 WMF wikis (268 Wikipedias), now covering more than 10% of all Wikipedia page views.
* The process and criteria for [[Special:MyLanguage/Wikimedia Enterprise#Access|requesting exceptional access]] to the high volume feed of the ''Wikimedia Enterprise'' APIs (at no cost for mission-aligned usecases), [[m:Talk:Wikimedia Enterprise#Exceptional access criteria|have now been published]]. This is to provide more thorough and clearer documentation for users.
* [https://techblog.wikimedia.org/ Tech Blog], the blog dedicated to the Wikimedia technical community [https://techblog.wikimedia.org/2026/02/24/a-tech-blog-diff/ will be migrating] to [[diffblog:|Diff]], the community news and event blog. The migration should be complete in April 2026, after which new posts will be accepted for publishing. Readers will be able to access posts – old and new – on the landing page at https://diff.wikimedia.org/techblog.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.18|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/10|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W10"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৭:৫২, ২ মার্চ ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30137798-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-11</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W11"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/11|Translations]] are available.
'''Weekly highlight'''
* [[m:Special:MyLanguage/Tech/Server switch|All wikis will be read-only]] for a few minutes on Wednesday, 25 March 2026 at [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. This is for the datacenter server switchover backup tests, [[wikitech:Deployments/Yearly calendar|which happen twice a year]]. During the switchover, all Wikimedia website traffic is shifted from one primary data center to the backup data center to test availability and prevent service disruption even in emergencies.
* Last week, all wikis had 2 hours of read-only time, and extended unavailability for user-scripts and gadgets. This was due to a security incident which has since been resolved. Work is ongoing to prevent re-occurrences. For current information please see the [[m:Steward's noticeboard#Statement on Meta about today's user script security incident|post on the Stewards' noticeboard]] ([[m:Special:MyLanguage/Wikimedia Foundation/Product and Technology/Product Safety and Integrity/March 2026 User Script Incident|translations]]).
'''Updates for editors'''
* Users facing multiple blocks on mobile will now see the reasons for each block separately, instead of a generic message. This helps them understand why they are blocked and what steps they can take to resolve the issue. For example, users affected for using common VPNs (such as [[Special:MyLanguage/Apple iCloud Private Relay|iCloud Private Relay]]) will receive clearer guidance on what they need to do to start editing again. [https://phabricator.wikimedia.org/T357118]
* Later this week, [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|Suggestion Mode]] will become available as a beta feature within the visual editor at all Wikipedias. This feature proactively suggests various types of actions that people can consider taking to improve Wikipedia articles, and learn about related guidelines. The feature is locally configurable, and can also be locally expanded with custom Suggestions. Current settings can be seen at [[Special:EditChecks]] and there are [[mw:Special:MyLanguage/Help:Suggestion mode#For administrators %E2%80%93 local customization|instructions for how administrators can customize]] the links to point to local guidelines. The feature is connected to [[mw:Special:MyLanguage/Help:Edit check|Edit check]] which suggests improvements while someone is writing new content. In the future, the Editing team plans to evaluate the feature's impact with newcomers through a controlled experiment. [https://phabricator.wikimedia.org/T404600]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:23}} community-submitted {{PLURAL:23|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue where the cursor became misaligned during the use of CodeMirror’s syntax highlighting, which makes wikitext and code easier to read, has now been fixed. This problem specifically affected users who defined a font rule in a custom stylesheet while creating a new topic with DiscussionTools. [https://phabricator.wikimedia.org/T418793]
'''Updates for technical contributors'''
* API rate limiting update: To help ensure [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]], global API rate limits will be applied this week to requests without a compliant User-Agent that originate from outside Toolforge/WMCS and to unauthenticated requests made from web browsers. Higher limits will be applied to identified traffic in April. Bots running in Toolforge/WMCS or with the bot user right on any wiki should not be affected for now. However, all developers are advised to follow updated best practices. For more information, see [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]].
* The new GraphQL API has been released. The API was developed as a flexible alternative to select features of the Wikidata Query Service (WDQS), to improve developer experience and foster adaptability, and efficient data access. Try it out and [[d:Wikidata:Wikibase GraphQL#Feedback and development|give feedback]]. You can also [https://greatquestion.co/wikimediadeutschland/GraphQLAPI/apply sign up for usability tests].
* The [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group|PTAC Unsupported Tools Working Group]] continued improvements to [[commons:Special:MyLanguage/Commons:Video2commons#|Video2Commons]] in February, with fixes addressing authentication errors, large-file handling, task queue visibility, and clearer upload behavior. Work is still ongoing in some areas, including changes related to deprecated server-side uploads. Read [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group#February 2026|this update]] to learn more.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.19|MediaWiki]]
'''In depth'''
* The Article Guidance team invites experienced Wikipedia editors from selected [[mw:Special:MyLanguage/Article guidance/Pilot wikis and collaborators#Collaborators|pilot wikis]] and interested contributors from other Wikipedias to fill out this questionnaire which is available in [https://docs.google.com/forms/d/e/1FAIpQLSfmLeVWnxmsCbPoI_UF2jyRcn73WRGWCVPHzerXb4Cz97X_Ag/viewform English], [https://docs.google.com/forms/d/e/1FAIpQLSd6rzr4XXQw8r4024fE3geTPFe13M_6w7Mitj-YJi0sOlWTAw/viewform?usp=header Arabic], [https://docs.google.com/forms/d/e/1FAIpQLSdok3-RfB18lcugYTUMGkpwmqG_8p760Wv4dCXitOXOszjUDw/viewform?usp=header Bengali], [https://docs.google.com/forms/d/e/1FAIpQLSfjTfYp4jEo0akA4B1e-Nfg3QZPCudUjhJzHzzDi6AHyAaMGA/viewform?usp=header Japanese], [https://docs.google.com/forms/d/e/1FAIpQLScteVoI29Aue4xc72dekk-6RYtvmMgQxzMI900UOawrFrSTWg/viewform?usp=header Portuguese], [https://docs.google.com/forms/d/e/1FAIpQLSetdxnYwL3ub2vqA7awCg5hJZPMIYcDPaiTe12rY9h0GYnVlw/viewform?usp=header Persian], and [https://docs.google.com/forms/d/e/1FAIpQLScNvfJF-Ot-4pzA4qAN771_0QDJ4Li19YcUsaTgSKW8Nc7U_Q/viewform?usp=header Turkish]. Your answers will help the team customize guidance for less experienced editors and help them learn community policies and practices while creating an article. Learn more [[mw:Special:MyLanguage/Article guidance|on the project page]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/11|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W11"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৮:৫৩, ৯ মার্চ ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30213008-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-12</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W12"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/12|Translations]] are available.
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature, also known as [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror 6]], has been used for wikitext syntax highlighting since November 2024. It will be promoted out of beta by May 2026 in order to bring improvements and new [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Features|features]] to all editors who use the standard syntax highlighter. If you have any questions or concerns about promoting the feature out of beta, [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|please share]]. [https://phabricator.wikimedia.org/T259059]
* Some changes to local user groups are performed by stewards on Meta-Wiki and logged there only. Now, interwiki rights changes will be logged both on Meta-Wiki and the wiki of the target user to make it easier to access a full record of user's rights changes on a local wiki. Past log entries for such changes will be backfilled in the coming weeks. [https://phabricator.wikimedia.org/T6055]
* On wikis using [[m:Special:MyLanguage/Flagged Revisions|Flagged Revisions]], the number of pending changes shown on [[{{#Special:PendingChanges}}]] previously counted pages which were no longer pending review, because they have been removed from the system without being reviewed, e.g. due to being deleted, moved to a different namespace, or due to wiki configuration changes. The count will be correct now. On some wikis the number shown will be much smaller than before. There should be no change to the list of pages itself. [https://phabricator.wikimedia.org/T413016]
* Wikifunctions composition language has been rewritten, resulting in a new version of the language. This change aims to increase service stability by reducing the orchestrator's memory consumption. This rewrite also enables substantial latency reduction, code simplification, and better abstractions, which will open the door to later feature additions. Read more about [[f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-11|the changes]].
* Users can now sort search results alphabetically by page title. The update gives an additional option to finding pages more easily and quickly. Previously, results could be sorted by Edit date, Creation date, or Relevance. To use the new option, open 'Advanced Search' on the search results page and select 'Alphabetically' under 'Sorting Order'. [https://phabricator.wikimedia.org/T403775]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:28}} community-submitted {{PLURAL:28|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the bug that prevented UploadWizard on Wikimedia Commons from importing files from Flickr has now been fixed. [https://phabricator.wikimedia.org/T419263]
'''Updates for technical contributors'''
* A new special page, [[{{#special:LintTemplateErrors}}]], has been created to list transcluded pages that are flagged as containing lint errors to help users discover them easily. The list is sorted by the number of transclusions with errors. For example: [[{{#special:LintTemplateErrors}}/night-mode-unaware-background-color]]. [https://phabricator.wikimedia.org/T170874]
* Users of the [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature have been using [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] instead of [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] for syntax highlighting when editing JavaScript, CSS, JSON, Vue and Lua content pages, for some time now. Along with promoting CodeMirror 6 out of beta, the plan is to replace CodeEditor as the standard editor for these content models by May 2026. [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|Feedback or concerns are welcome]]. [https://phabricator.wikimedia.org/T419332]
* The [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] JavaScript modules will soon be upgraded to CodeMirror 6. Leading up to the upgrade, loading the <code dir=ltr>ext.CodeMirror</code> or <code dir=ltr>ext.CodeMirror.lib</code> modules from gadgets and user scripts was deprecated in July 2025. The use of the <code dir=ltr>ext.CodeMirror.switch</code> hook was also deprecated in March 2025. Contributors can now make their scripts or gadgets compatible with CodeMirror 6. See the [[mw:Special:MyLanguage/Extension:CodeMirror#Gadgets and user scripts|migration guide]] for more information. [https://phabricator.wikimedia.org/T373720]
* The MediaWiki Interfaces team is expanding coverage of REST API module definitions to include [[mw:Special:MyLanguage/API:REST API/Extensions|extension APIs]]. REST API modules are groups of related endpoints that can be independently managed and versioned. Modules now exist for [https://phabricator.wikimedia.org/T414470 GrowthExperiments] and [https://phabricator.wikimedia.org/T419053 Wikifunctions] APIs. As we migrate extension APIs to this structure, documentation will move out of the main MediaWiki OpenAPI spec and REST Sandbox view, and will instead be accessible via module-specific options in the dropdown on the [https://test.wikipedia.org/wiki/Special:RestSandbox REST Sandbox] (i.e., [[{{#Special:RestSandbox}}]], available on all wiki projects).
* The [[mw:Special:MyLanguage/Extension:Scribunto|Scribunto]] extension provides different pieces of information about the wiki where the module is being used via the [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual|mw.site]] library. Starting last week, the library also provides a [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual#mw.site.wikiId|way]] of accessing the [[mw:Special:MyLanguage/Manual:Wiki ID|wiki ID]] that can be used to facilitate cross-wiki module maintenance. [https://phabricator.wikimedia.org/T146616]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.20|MediaWiki]]
'''In depth'''
* The [[m:Special:MyLanguage/Coolest Tool Award|2026 Coolest Tool Award]] celebrating outstanding community tools, is now open for nominations! Nominate your favorite tool using the [https://wikimediafoundation.limesurvey.net/435684?lang=en nomination survey] form by 23 March 2026. For more information on privacy and data handling, please see the [[foundation:Special:MyLanguage/Legal:Coolest_Tool_Award_2026_Survey_Privacy_Statement|survey privacy statement]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/12|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W12"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৯:৩৬, ১৬ মার্চ ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30260505-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-13</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W13"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/13|Translations]] are available.
'''Weekly highlight'''
* Wikimedia site users can now log in without a password using passkeys. This is a secure method supported by fingerprint, facial recognition, or PIN. With this change, all users who opt for passwordless login will find it easier, faster, and more secure to log in to their accounts using any device. The new passkey login option currently appears as an autofill suggestion in the username field. An additional [[phab:T417120|"Log in with passkey" button]] will soon be available for users who have already registered a passkey. This update will improve security and user experience. The [[c:File:Passwordless_login_screencast.webm|screen recording]] demonstrates the passwordless login process step by step.
* [[m:Special:MyLanguage/Tech/Server switch|All wikis will be read-only]] for a few minutes on Wednesday, 25 March 2026 at [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. This is for the datacenter server switchover backup tests, [[wikitech:Deployments/Yearly calendar|which happen twice a year]]. During the switchover, all Wikimedia website traffic is shifted from one primary data center to the backup data center to test availability and prevent service disruption even in emergencies.
'''Updates for editors'''
* Wikimedia site users can now export their notifications older than 5 years using a [[toolforge:echo-chamber|new Toolforge tool]]. This will ensure that users retain their important notifications and avoid them being lost based on the planned change to delete notifications older than 5 years, as previously announced. [https://phabricator.wikimedia.org/T383948]
* Wikipedia editors in Indonesian, Thai, Turkish, and Simple English now have access to Special:PersonalDashboard. This is an [[mw:Special:MyLanguage/Moderator Tools/Dashboard|early version of an experience]] that introduces newer editors to patrolling workflows, making it easier for them to move from making edits to participating in more advanced moderation work on their project. [https://phabricator.wikimedia.org/T402647]
* The [[Special:Block]] now has two minor interface changes. Administrators can now easily perform indefinite blocks through a dedicated radio button in the expiry section. Also, choosing an indefinite expiry provides a different set of common reasons to select from, which can be changed at: [[MediaWiki:Ipbreason-indef-dropdown]]. [https://phabricator.wikimedia.org/T401823]
* Mobile editors [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#Logged-out|at several wikis]] can now see an improved logged-out edit warning, thanks to the recent updates from the Growth team. These changes released last week are part of ongoing efforts and tests to enhance [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|account creation experience on mobile]] and then increase participation. [https://phabricator.wikimedia.org/T408484]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:36}} community-submitted {{PLURAL:36|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the bug that prevented mobile web users from seeing the block information when affected by multiple blocks has been fixed. They can now see messages of all the blocks currently affecting them when they access Wikipedia.
'''Updates for technical contributors'''
* Images built using Toolforge will soon get the upgraded buildpacks version, bringing support for newer language versions and other upstream improvements and fixes. If you use Toolforge Build Service, review the recent [https://lists.wikimedia.org/hyperkitty/list/cloud-announce@lists.wikimedia.org/thread/EMYTA32EV2V5SQ2JIEOD2CL66YFIZEKV/ cloud-announce email] and update your build configuration as necessary to ensure your tools are compatible. [https://wikitech.wikimedia.org/w/index.php?title=Help:Toolforge/Building_container_images&oldid=2392097#Buildpack_environment_upgrade_process][https://phabricator.wikimedia.org/T380127]
* The [https://api.wikimedia.org/wiki/Main_Page API Portal] documentation wiki will shut down in June 2026. API keys created on the API Portal will continue to work normally. api.wikimedia.org endpoints will be deprecated gradually starting in July 2026. Documentation on the API Portal is moving to [[mw:Wikimedia APIs|mediawiki.org]]. Learn more on the [[wikitech:API Portal/Deprecation|project page]].
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.21|MediaWiki]]
'''In depth'''
* [[m:Special:MyLanguage/WMDE Technical Wishes|WMDE Technical Wishes]] is considering improvements to [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names|automatically generated reference names in VisualEditor]]. Please check out the [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names#Proposed solutions|proposed solutions]] and participate in the [[m:Talk:WMDE Technical Wishes/References/VisualEditor automatic reference names#Request for comment|request for comment]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/13|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W13"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৬:৫১, ২৩ মার্চ ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30268305-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:UOzurumba (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-14</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W14"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/14|Translations]] are available.
'''Weekly highlight'''
* The Beta version of [[abstract:|Abstract Wikipedia]] a new Wikimedia project which is language-independent, was launched last week. The project allows communities to build Wikipedia articles in their native language, which can be readily accessed by other users in their own languages. The wiki is powered by instructions from Wikifunctions and also based on structured content from Wikidata. [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-26|Read more]].
'''Updates for editors'''
* The Growth team is running an A/B test to evaluate a clearer, more user-friendly message that promotes account creation on wikis. Currently when logged-out mobile users begin editing, they see a jarring warning message that can feel abrupt and discouraging. This also presents temporary account editing as the default rather than encouraging account creation. The test is running on ten Wikipedias, including Arabic, French, Spanish and German. [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#2. Improve logged-out warning message (T415160)|Read more]].
* The Wikimedia Apps team is inviting feedback on [[mw:Special:MyLanguage/Wikimedia Apps/Team/Future of Editing on the Mobile Apps|how editing should work on the Wikipedia mobile apps]]. The discussion focuses on improving how users access editing tools when they tap "Edit". This is part of a broader effort to convert readers who develop an interest in editing, to access a more user-friendly pathway to start contributing.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:45}} community-submitted {{PLURAL:45|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where citation fetching from the large newspaper archive [https://www.newspapers.com Newspapers.com] was no longer working, due to a block in [[mw:Special:MyLanguage/Citoid|Citoid]] requests, has now been fixed. [https://phabricator.wikimedia.org/T419903]
'''Updates for technical contributors'''
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.22|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/14|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W14"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৯:২৬, ৩০ মার্চ ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30329462-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন -->
7jlglrnuf3jqly9o53l3gqn9w2pzzua
temporal
0
32585
507310
175771
2026-03-31T09:51:24Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L679631-এর সাথে সংযোগ তৈরি করছি
507310
wikitext
text/x-wiki
{{আরও দেখুন|temporâl}}
== {{langname|en}} ==
=== উচ্চারণ ===
* {{আধ্বব|en|/ˈtɛm.pə.ɹəl/}}
** {{অডিও|en|LL-Q1860 (eng)-Vealhurl-temporal.wav|অডিও (RP)}}
* {{অন্ত্যমিল|en|ɛmpəɹəl}}
=== বিশেষণ ===
{{en-বিশেষণ|-}}
# [[সময়গত]], [[পার্থিব]], [[ঐহিক]], [[কালিক]], [[অনাধ্যাত্মিক]], [[অনিত্য়]], [[উহজীবনকালীন]], [[বিষয়ী]], [[অযাজনীয়]], [[অসামরিক]]
{{লে|L679631}}
nx3xti43v6og484s0humwfhsexrz4y7
Alaskanizing
0
39421
507274
252487
2026-03-30T13:54:16Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507274
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|Alaskanize|nocat=1}}
ojymbetkiqyw8wn8f6h5lthb6tn0sc4
alaying
0
39441
507275
260638
2026-03-30T13:54:46Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507275
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|alay|nocat=1}}
q2wqqjuj0mhkwrmqudxh4eyi2ntdek8
albifying
0
39493
507276
260646
2026-03-30T13:55:30Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507276
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|albify|nocat=1}}
poksr8wfv41nw13oeq8a0xx5vpmpjnd
albitizing
0
39507
507277
260652
2026-03-30T13:56:01Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507277
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|albitize|nocat=1}}
3evqmjrelobylk1jygnan43iivwpwj8
albumenising
0
39534
507278
260656
2026-03-30T13:56:49Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507278
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|albumenise|nocat=1}}
hkhtwdwyprc95e2l495orxqm8lfrkha
albumenizing
0
39538
507279
260659
2026-03-30T13:57:29Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507279
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|albumenize|nocat=1}}
2n9fbwuxwkghmfktmrpfzjd92prtymv
albuminising
0
39545
507280
260663
2026-03-30T13:58:04Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507280
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|albuminise|nocat=1}}
b4v9s5y1r7ob3dvlbz2t75pz4st6w9p
albuminizing
0
39549
507281
260666
2026-03-30T13:58:45Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507281
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|albuminize|nocat=1}}
4l4x0oud1om51far03wwqp64mgi678p
alchemising
0
39589
507282
260675
2026-03-30T13:59:28Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507282
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|alchemise|nocat=1}}
r6pmchm6fqar9cb7wpkomdb7igoy4sw
alchemizing
0
39594
507283
260680
2026-03-30T14:00:07Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507283
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|alchemize|nocat=1}}
2qyoaqef0hn5hvlrnavpdsje9wzgch8
alcoholising
0
39620
507284
260686
2026-03-30T14:00:35Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507284
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|alcoholise|nocat=1}}
1onga8zn11t091bgq9ivg97w6a2aubx
alcoholizing
0
39625
507285
260688
2026-03-30T14:01:22Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507285
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|alcoholize|nocat=1}}
qsy3d25wv80k9jbsctci0kcpaaice8k
alegging
0
39772
507286
260712
2026-03-30T14:02:05Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507286
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|alegge|nocat=1}}
l7vkpbhee0mrgtfh2beko7wz5o6ikjh
alerting
0
39808
507288
260714
2026-03-30T15:10:54Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507288
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|alert|nocat=1}}
=== অ্যানাগ্রাম ===
* {{অ্যানাগ্রাম|en|a=aegilnrt|INTEGRAL|Triangle|altering|integral|relating|tanglier|teraglin|triangle}}
g5vfmg1tnpvzq2mxie9i7m2jt6effc9
algebraicizing
0
39910
507296
260727
2026-03-30T17:57:36Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507296
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|algebraicize|nocat=1}}
liuah5bb3xfrlw0pdzxxu59hvsbfh4q
algebraizing
0
39916
507297
260730
2026-03-30T17:58:25Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507297
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|algebraize|nocat=1}}
lmhdo5do2t8brixhnhl1q1dfhoexr8x
algorithmicizing
0
39954
507298
260734
2026-03-30T17:58:56Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507298
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|algorithmicize|nocat=1}}
oi0rvkv4kthyqj75akvzrw8sdc0y07s
algorithmizing
0
39957
507299
260736
2026-03-30T17:59:43Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507299
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|algorithmize|nocat=1}}
=== অ্যানাগ্রাম ===
* {{অ্যানাগ্রাম|en|a=agghiiilmnortz|logarithmizing}}
hmfym5d1hju5h37dcu52tiv824w3902
alibiing
0
39974
507301
260744
2026-03-30T21:01:47Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507301
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|alibi|nocat=1}}
dqra3g1nvhzh83l6gooj09ydm6m9fzr
aliening
0
40002
507304
260749
2026-03-31T03:55:10Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507304
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|alien|nocat=1}}
=== অ্যানাগ্রাম ===
* {{অ্যানাগ্রাম|en|a=aegiilnn|Angelini|gain line|gainline}}
42f1ef1gy7czn3s0y1mkz1z8uv3p00g
alienising
0
40005
507305
260752
2026-03-31T04:47:14Z
Redmin
6857
টেমপ্লেটের নাম সংশোধন
507305
wikitext
text/x-wiki
== {{ভাষা|en}} ==
=== ক্রিয়া ===
{{head|en|ক্রিয়ার রূপ}}
# {{present participle of|en|alienise|nocat=1}}
g6xql9a5ni5n1irlq8hdevbsdtuabwa
মডিউল:আভিধানিক উপাত্ত
828
50158
507292
506748
2026-03-30T17:44:43Z
Redmin
6857
লেমা দেখানো গেলে যেন 'অর্থসমূহ' হেডিং না দেখানো হয় (cc [[User:Mahir256]])
507292
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 base_lang = 'বাংলা'
local base_lang_code_labels = 'bn' -- আইটেম লেবেল/বিবরণ/উপনাম, শব্দার্থের বিবরণ
local base_lang_code_forms = 'bn' -- লেক্সিম লেমা, শব্দরূপের বানান
local base_lang_wiki = 'bnwiki' -- উইকিপিডিয়া সংযোগ
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 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
if reference_cache[id] == nil then
reference_cache[id] = references(reference, wb, mw_lang, base_lang_code_labels, base_lang_wiki)
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'}) 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( lexeme, 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(base_lang_wiki)
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 lang_code = nil
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)
if not lang_code then
lang_code = getLexemeLanguageCode(lex)
end
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(base_lang_code_forms)
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 )
local current_page_title = mw.title.getCurrentTitle().text
-- বিশেষ ভাষার জন্য
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(base_lang_code_labels, 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, base_lang_code_labels))
end
end
if #specifiers > 0 then
main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') "
end
local gloss = sense:getGloss( base_lang_code_labels )
if gloss ~= nil then
if countWords(gloss) == 1 then
main_gloss_text = main_gloss_text .. "[[" .. gloss .. "#" .. base_lang .. "|" .. 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( base_lang_code_labels )) 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, base_lang_code_labels) .. "</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(base_lang_code_labels, 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( current_lexeme, lang_name, lex_cat)
local base_form = nil
-- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়।
if lang_name == 'বাংলা' then
if lex_cat == 'Q1084' then -- বিশেষ্য
base_form = formWithSingleGrammaticalFeature( current_lexeme, 'Q131105' ) -- কর্তৃকারক
elseif lex_cat == 'Q24905' then -- ক্রিয়া
base_form = formWithSingleGrammaticalFeature( current_lexeme, '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
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(current_lexeme, 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
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
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()
local lang_category = getLanguageForCategories(current_language)
local cat = getCategory( lang_category, lex_cat )
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title=i18n['template_anchor'],
args={lexeme_id}
} .. '===')
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))
local lemma = current_lexeme:getLemma(getLexemeLanguageCode(current_lexeme))
if lemma ~= nil then -- This will be nil when the only lemma(s) present are in a script that does not have the same code as the language code.
-- @TODO: Use getLemmas() instead so this never happens, and get rid of the meanings heading.
table.insert(sections, heading_level(lemma, 4))
else
table.insert(sections, heading_level(i18n['heading_meanings'], 4))
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)
else
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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
806wjx1pj9olyd7pfnfsaczzkh3niiv
507295
507292
2026-03-30T17:50:08Z
Redmin
6857
507295
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 base_lang = 'বাংলা'
local base_lang_code_labels = 'bn' -- আইটেম লেবেল/বিবরণ/উপনাম, শব্দার্থের বিবরণ
local base_lang_code_forms = 'bn' -- লেক্সিম লেমা, শব্দরূপের বানান
local base_lang_wiki = 'bnwiki' -- উইকিপিডিয়া সংযোগ
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 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
if reference_cache[id] == nil then
reference_cache[id] = references(reference, wb, mw_lang, base_lang_code_labels, base_lang_wiki)
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'}) 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(base_lang_wiki)
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 lang_code = nil
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)
if not lang_code then
lang_code = getLexemeLanguageCode(lex)
end
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(base_lang_code_forms)
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 )
local current_page_title = mw.title.getCurrentTitle().text
-- বিশেষ ভাষার জন্য
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(base_lang_code_labels, 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, base_lang_code_labels))
end
end
if #specifiers > 0 then
main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') "
end
local gloss = sense:getGloss( base_lang_code_labels )
if gloss ~= nil then
if countWords(gloss) == 1 then
main_gloss_text = main_gloss_text .. "[[" .. gloss .. "#" .. base_lang .. "|" .. 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( base_lang_code_labels )) 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, base_lang_code_labels) .. "</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(base_lang_code_labels, 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( current_lexeme, 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
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(current_lexeme, 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
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
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()
local lang_category = getLanguageForCategories(current_language)
local cat = getCategory( lang_category, lex_cat )
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title=i18n['template_anchor'],
args={lexeme_id}
} .. '===')
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))
local lemma = current_lexeme:getLemma(getLexemeLanguageCode(current_lexeme))
if lemma ~= nil then -- This will be nil when the only lemma(s) present are in a script that does not have the same code as the language code.
-- @TODO: Use getLemmas() instead so this never happens, and get rid of the meanings heading.
table.insert(sections, heading_level(lemma, 4))
else
table.insert(sections, heading_level(i18n['heading_meanings'], 4))
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)
else
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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
dsxahkz5l6o2ejmi7f8ijl3lh6aw71o
507307
507295
2026-03-31T09:48:25Z
Redmin
6857
507307
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 base_lang = 'বাংলা'
local base_lang_code_labels = 'bn' -- আইটেম লেবেল/বিবরণ/উপনাম, শব্দার্থের বিবরণ
local base_lang_code_forms = 'bn' -- লেক্সিম লেমা, শব্দরূপের বানান
local base_lang_wiki = 'bnwiki' -- উইকিপিডিয়া সংযোগ
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 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, base_lang_code_labels, base_lang_wiki)
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'}) 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(base_lang_wiki)
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 lang_code = nil
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)
if not lang_code then
lang_code = getLexemeLanguageCode(lex)
end
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(base_lang_code_forms)
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 )
local current_page_title = mw.title.getCurrentTitle().text
-- বিশেষ ভাষার জন্য
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(base_lang_code_labels, 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, base_lang_code_labels))
end
end
if #specifiers > 0 then
main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') "
end
local gloss = sense:getGloss( base_lang_code_labels )
if gloss ~= nil then
if countWords(gloss) == 1 then
main_gloss_text = main_gloss_text .. "[[" .. gloss .. "#" .. base_lang .. "|" .. 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( base_lang_code_labels )) 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, base_lang_code_labels) .. "</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(base_lang_code_labels, 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( current_lexeme, 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
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(current_lexeme, 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
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
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()
local lang_category = getLanguageForCategories(current_language)
local cat = getCategory( lang_category, lex_cat )
if cat ~= nil then
table.insert(sections, '===' .. cat .. frame:expandTemplate{
title=i18n['template_anchor'],
args={lexeme_id}
} .. '===')
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))
local lemma = current_lexeme:getLemma(getLexemeLanguageCode(current_lexeme))
if lemma ~= nil then -- This will be nil when the only lemma(s) present are in a script that does not have the same code as the language code.
-- @TODO: Use getLemmas() instead so this never happens, and get rid of the meanings heading.
table.insert(sections, heading_level(lemma, 4))
else
table.insert(sections, heading_level(i18n['heading_meanings'], 4))
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)
else
table.insert(sections, buildLanguageAgnosticInflectionTable(forms))
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
qp7mh01rww81tdf4vtk0ezxuf1k3n0f
ব্যবহারকারী:Redmin/খেলাঘর
2
66884
507293
506844
2026-03-30T17:47:02Z
Redmin
6857
507293
wikitext
text/x-wiki
[[:বিষয়শ্রেণী:IPA pronunciations with invalid IPA characters]]
[[চলা]] P9295, P5186, P5187, P11053, P11054, P9488, P5972, P9971, P6072 with P5831, P5185, 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
Z30837, Z32787, Z32793
[[d:Lexeme:L3441]], [[throw]], [[গোলাকার]], [[বিষয়শ্রেণী:উইকিউপাত্ত আভিধানিক উপাত্ত থেকে আমদানিকৃত]]
Pronunciation of forms
[[Category:<lang> terms spelled with <letter>]]
[[d:User:Rua/Wikidata for Wiktionarians]]
[[-গুলি]]
{{#invoke:আভিধানিক উপাত্ত|all|L1468442}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1495773}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1340}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L348189|false}}
{{লে|L348189}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L34813}}
{{লে|L12321}}
{{লে|L5725}}
{{#function:Z27861|<div style="text-align: center;">Test</div>}}
{{#function:Z31729|{{#function:Z27861<div>Text</div>}}}}
npna34k22nifb1s9bm0nrszd0jjfv2q
507294
507293
2026-03-30T17:47:45Z
Redmin
6857
507294
wikitext
text/x-wiki
[[:বিষয়শ্রেণী:IPA pronunciations with invalid IPA characters]]
[[চলা]] P9295, P5186, P5187, P11053, P11054, P9488, P5972, P9971, P6072 with P5831, P5185, 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
Z30837, Z32787, Z32793
[[d:Lexeme:L3441]], [[throw]], [[গোলাকার]], [[:বিষয়শ্রেণী:উইকিউপাত্ত আভিধানিক উপাত্ত থেকে আমদানিকৃত]]
Pronunciation of forms
[[Category:<lang> terms spelled with <letter>]]
[[d:User:Rua/Wikidata for Wiktionarians]]
[[-গুলি]]
{{#invoke:আভিধানিক উপাত্ত|all|L1468442}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1495773}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1340}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L348189|false}}
{{লে|L348189}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L34813}}
{{লে|L12321}}
{{লে|L5725}}
{{#function:Z27861|<div style="text-align: center;">Test</div>}}
{{#function:Z31729|{{#function:Z27861<div>Text</div>}}}}
pa4zmqw3ft108z5sfj55oo3t0ew9qd0
507302
507294
2026-03-31T00:14:10Z
Redmin
6857
507302
wikitext
text/x-wiki
[[:বিষয়শ্রেণী:IPA pronunciations with invalid IPA characters]]
[[চলা]] P9295, P5186, P5187, P11053, P11054, P9488, P5972, P9971, P6072 with P5831, P5185, 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,
Z17866, Z30837, Z32787, Z32793
[[d:Lexeme:L3441]], [[throw]], [[গোলাকার]], [[:বিষয়শ্রেণী:উইকিউপাত্ত আভিধানিক উপাত্ত থেকে আমদানিকৃত]]
Pronunciation of forms
[[Category:<lang> terms spelled with <letter>]]
[[d:User:Rua/Wikidata for Wiktionarians]]
[[-গুলি]]
{{#invoke:আভিধানিক উপাত্ত|all|L1468442}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1495773}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1340}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L348189|false}}
{{লে|L348189}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L34813}}
{{লে|L12321}}
{{লে|L5725}}
{{#function:Z27861|<div style="text-align: center;">Test</div>}}
{{#function:Z31729|{{#function:Z27861<div>Text</div>}}}}
f8wofs91pieocirij3iblcuxoic3uzc
507303
507302
2026-03-31T00:21:04Z
Redmin
6857
507303
wikitext
text/x-wiki
[[:বিষয়শ্রেণী:IPA pronunciations with invalid IPA characters]]
[[চলা]] P9295, P5186, P5187, P11053, P11054, P9488, P5972, P9971, P6072 with P5831, P5185, 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]]
[[-গুলি]]
{{#invoke:আভিধানিক উপাত্ত|all|L1468442}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1495773}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L1340}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L348189|false}}
{{লে|L348189}}
{{#invoke:আভিধানিক উপাত্ত/sandbox|all|L34813}}
{{লে|L12321}}
{{লে|L5725}}
{{#function:Z27861|<div style="text-align: center;">Test</div>}}
{{#function:Z31729|{{#function:Z27861<div>Text</div>}}}}
g2x5e1hqvtan9p7jmcbqdwdb23uu160
উদাত্ত
0
83457
507308
468599
2026-03-31T09:50:31Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1561435-এর সাথে সংযোগ তৈরি করছি
507308
wikitext
text/x-wiki
== {{langname|bn}} ==
=== উচ্চারণ ===
* {{bn-IPA}}
=== বিশেষ্য ===
{{bn-বিশেষ্য}}
# সংগীতের স্বরভেদ। অর্থালংকারবিশেষ। বেদগানের উচ্চস্বর।
{{লে|L1561435|না}}
l4qfhfbi9xz0u9z6jr6dperap6qpnyl
মডিউল:আভিধানিক উপাত্ত/i18n
828
148710
507290
504797
2026-03-30T17:38:50Z
Redmin
6857
507290
Scribunto
text/plain
local p = {}
p['heading_etymology'] = 'ব্যুৎপত্তি'
p['heading_pronunciation'] = 'উচ্চারণ'
p['heading_meanings'] = 'অর্থসমূহ' -- @TODO: This should probably be singular
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['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'] = 'trans-top' -- Q30528422 @TODo: Switch back to 'অনুবাদ-শীর্ষ' once it has a 'color: block' rule applied to it.
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['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
3jcsyh5ax2hz3wnokhvriisqk3i6cep
507291
507290
2026-03-30T17:39:10Z
Redmin
6857
507291
Scribunto
text/plain
local p = {}
p['heading_etymology'] = 'ব্যুৎপত্তি'
p['heading_pronunciation'] = 'উচ্চারণ'
p['heading_meanings'] = 'অর্থসমূহ' -- @TODO: This should probably be singular
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['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'] = 'trans-top' -- Q30528422 @TODO: Switch back to 'অনুবাদ-শীর্ষ' once it has a 'color: block' rule applied to it.
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['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
4fnufv7j9a3elr105eswyrgo5s65cxa
كفر
0
162403
507306
447520
2026-03-31T09:27:00Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1480545-এর সাথে সংযোগ তৈরি করছি
507306
wikitext
text/x-wiki
{{লে|L1480545}}
oywmf4xe1eo37tlimg03mctpzpjybmb
ك ف ر
0
167093
507311
2026-03-31T09:55:16Z
Redmin
6857
লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1369161-এর জন্য একটি নতুন ভুক্তি তৈরি করছি
507311
wikitext
text/x-wiki
{{লে|L1369161}}
4p5untdoz75q8jwdj9orsrqa17gc7dp