উইকিঅভিধান 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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/09|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/10|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/11|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/12|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/13|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/14|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[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 = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(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 = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(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 = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(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