وِکیٖپیٖڈیا
kswiki
https://ks.wikipedia.org/wiki/%D8%A7%D9%8E%DB%81%D9%8E%D9%85_%D8%B5%D9%8E%D9%81%DB%81%D9%95
MediaWiki 1.47.0-wmf.14
first-letter
میڈیا
خاص
کَتھ
رُکُن
رُکُن کَتھ
وِکیٖپیٖڈیا
وِکیٖپیٖڈیا کَتھ
فَیِل
فَیِل کَتھ
میٖڈیاوِکی
میٖڈیاوِکی کَتھ
فرما
فرما کَتھ
مَدَتھ
مَدَتھ کَتھ
زٲژ
زٲژ کَتھ
TimedText
TimedText talk
Module
Module talk
Event
Event talk
وِکیٖپیٖڈیا:اؠسَمبَلی (باقٕے)
4
7479
148948
147378
2026-08-10T20:44:47Z
MediaWiki message delivery
3853
/* Tech News: 2026-33 */ نٔو حِصہٕ
148948
wikitext
text/x-wiki
<noinclude>{{short description|Central discussion page of Wikipedia for general topics not covered by the specific topic pages}}{{pp-move-indef|small=yes}}{{Village pump page header|Miscellaneous|alpha=yes|یَتھ صَفَس مَنٛز چھِ باقی بَحَث کَرنہٕ یِوان. بیٚیہِ چھِ یَتھ مَنٛز کیٚنٛہہ خَبرٕ تہٕ آسَن.
* پرٛٲنؠ بَحَث چھِ کیٚنٛہہ وَقٕت پَتہٕ مَحفوٗظ خانَس مَنٛز مَحفوٗظ کَرنہٕ یِوان.
|وپ:ابق}}
<!--
-->__NEWSECTIONLINK__
{{Auto-archive|archive_after_last_comment=45d|archive_to_subpage=مَحفوٗظ خانہٕ %1}}
== <span lang="en" dir="ltr">Tech News: 2025-25</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W25"/><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/2025/25|Translations]] are available.
'''Updates for editors'''
* You can [https://wikimediafoundation.limesurvey.net/359761?lang=en nominate your favorite tools] for the sixth edition of the [[m:Special:MyLanguage/Coolest Tool Award|Coolest Tool Award]]. Nominations are anonymous and will be open until June 25. You can re-use the survey to nominate multiple tools.
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:33}} community-submitted {{PLURAL:33|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]].
'''Updates for technical contributors'''
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.6|MediaWiki]]
'''In depth'''
* Foundation staff and technical volunteers use Wikimedia APIs to build the tools, applications, features, and integrations that enhance user experiences. Over the coming years, the MediaWiki Interfaces team will be investing in Wikimedia web (HTTP) APIs to better serve technical volunteer needs and protect Wikimedia infrastructure from potential abuse. You can [https://techblog.wikimedia.org/2025/06/12/apis-as-a-product-investing-in-the-current-and-next-generation-of-technical-contributors/ read more about their plans to evolve the APIs in this Techblog post].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/25|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W25"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 23:37, 16 June 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=28870688 -->
== <span lang="en" dir="ltr">Tech News: 2025-26</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W26"/><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/2025/26|Translations]] are available.
'''Weekly highlight'''
* This week, the Moderator Tools and Machine Learning teams will continue the rollout of [[mw:Special:MyLanguage/2025 RecentChanges Language Agnostic Revert Risk Filtering|a new filter to Recent Changes]], releasing it to the third and last batch of Wikipedias. This filter utilizes the Revert Risk model, which was created by the Research team, to highlight edits that are likely to be reverted and help Recent Changes patrollers identify potentially problematic contributions. The feature will be rolled out to the following Wikipedias: {{int:project-localized-name-azwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-lawiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-mkwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-mlwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-mrwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-nnwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-pawiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-swwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-tewiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-tlwiki/en}}. The rollout will continue in the coming weeks to include [[mw:Special:MyLanguage/2025 RecentChanges Language Agnostic Revert Risk Filtering|the rest of the Wikipedias in this project]]. [https://phabricator.wikimedia.org/T391964]
'''Updates for editors'''
* Last week, [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts|temporary accounts]] were rolled out on Czech, Korean, and Turkish Wikipedias. This and next week, deployments on larger Wikipedias will follow. [[mw:Talk:Trust and Safety Product/Temporary Accounts|Share your thoughts]] about the project. [https://phabricator.wikimedia.org/T340001]
* Later this week, the Editing team will release [[mw:Special:MyLanguage/Help:Edit check#Multi check|Multi Check]] to all Wikipedias (except English Wikipedia). This feature shows multiple [[mw:Special:MyLanguage/Help:Edit check#Reference check|Reference checks]] within the editing experience. This encourages users to add citations when they add multiple new paragraphs to a Wikipedia article. This feature was previously available as an A/B test. [https://analytics.wikimedia.org/published/reports/editing/multi_check_ab_test_report_final.html#summary-of-results The test shows] that users who are shown multiple checks are 1.3 times more likely to add a reference to their edit, and their edit is less likely to be reverted (-34.7%). [https://phabricator.wikimedia.org/T395519]
* A few pages need to be renamed due to software updates and to match more recent Unicode standards. All of these changes are related to title-casing changes. Approximately 71 pages and 3 files will be renamed, across 15 wikis; the complete list is in [[phab:T396903|the task]]. The developers will rename these pages next week, and they will fix redirects and embedded file links a few minutes later via a system settings update.
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:24}} community-submitted {{PLURAL:24|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, a bug was fixed that had caused pages to scroll upwards when text near the top was selected. [https://phabricator.wikimedia.org/T364023]
'''Updates for technical contributors'''
* Editors can now use Lua modules to filter and transform tabular data for use with [[mw:Special:MyLanguage/Extension:Chart|Extension:Chart]]. This can be used for things like selecting a subset of rows or columns from the source data, converting between units, statistical processing, and many other useful transformations. [[mw:Special:MyLanguage/Extension:Chart/Transforms|Information on how to use transforms is available]]. [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Chart/Project/Updates]
* The <code dir=ltr>all_links</code> variable in [[Special:AbuseFilter|AbuseFilter]] is now renamed to <code dir=ltr>new_links</code> for consistency with other variables. Old usages will still continue to work. [https://phabricator.wikimedia.org/T391811]
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.7|MediaWiki]]
'''In depth'''
* The latest quarterly [[mw:Special:MyLanguage/Growth/Newsletters/34|Growth newsletter]] is available. It includes: the recent updates for the "Add a Link" Task, two new Newcomer Engagement Features, and updates to Community Configuration.
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/26|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W26"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 23:19, 23 جوٗن 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=28870688 -->
== <span lang="en" dir="ltr">Tech News: 2025-27</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W27"/><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/2025/27|Translations]] are available.
'''Weekly highlight'''
* The [[mw:Special:MyLanguage/Help:Extension:CampaignEvents|CampaignEvents extension]] has been enabled on all Wikipedias. The extension makes it easier to organize and participate in collaborative activities, like edit-a-thons and WikiProjects, on the wikis. The extension has three features: [[m:Special:MyLanguage/Event Center/Registration|Event Registration]], [[m:Special:MyLanguage/CampaignEvents/Collaboration list|Collaboration List]], and [[m:Campaigns/Foundation Product Team/Invitation list|Invitation List]]. To request the extension for your wiki, visit the [[m:Special:MyLanguage/CampaignEvents/Deployment status#How to Request the CampaignEvents Extension for your wiki|Deployment information page]].
'''Updates for editors'''
* AbuseFilter maintainers can now [[mw:Special:MyLanguage/Extension:IPReputation/AbuseFilter variables|match against IP reputation data]] in [[mw:Special:MyLanguage/Extension:AbuseFilter|AbuseFilters]]. IP reputation data is information about the proxies and VPNs associated with the user's IP address. This data is not shown publicly and is not generated for actions performed by registered accounts. [https://phabricator.wikimedia.org/T354599]
* Hidden content that is within [[mw:Special:MyLanguage/Manual:Collapsible elements|collapsible parts of wikipages]] will now be revealed when someone searches the page using the web browser's "Find in page" function (Ctrl+F or ⌘F) in supporting browsers. [https://phabricator.wikimedia.org/T327893][https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/hidden#browser_compatibility]
* [[File:Octicons-gift.svg|12px|link=|class=skin-invert|Wishlist item]] A new feature, called [[mw:Special:MyLanguage/Help:TemplateData/Template discovery|Favourite Templates]], will be deployed later this week on all projects (except English Wikipedia, which will receive the feature next week), following a piloting phase on Polish and Arabic Wikipedia, and Italian and English Wikisource. The feature will provide a better way for new and experienced contributors to recall and discover templates via the template dialog, by allowing users to put templates on a special "favourite list". The feature works with both the visual editor and the wikitext editor. The feature is a [[m:Special:MyLanguage/Community Wishlist/Focus areas/Template recall and discovery|community wishlist focus area]].
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:31}} community-submitted {{PLURAL:31|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, a bug was fixed that had caused some Notifications to be sent multiple times. [https://phabricator.wikimedia.org/T397103]
'''Updates for technical contributors'''
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.8|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/27|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W27"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 23:39, 30 جوٗن 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=28917415 -->
== <span lang="en" dir="ltr">Tech News: 2025-28</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W28"/><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/2025/28|Translations]] are available.
'''Weekly highlight'''
* [[mw:Special:MyLanguage/Help:Temporary accounts|Temporary accounts]] have been rolled out on 18 large and medium-sized Wikipedias, including German, Japanese, French, and Chinese. Now, about 1/3 of all logged-out activity across wikis is coming from temporary accounts. Users involved in patrolling may be interested in two new documentation pages: [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts/Access to IP|Access to IP]], explaining everything related to access to temporary account IP addresses, and [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts/Repository|Repository]] with a list of new gadgets and user scripts.
'''Updates for editors'''
* Anyone can play an experimental new game, [[mw:Special:MyLanguage/New Engagement Experiments/WikiRun|WikiRun]], that lets you race through Wikipedia by clicking from one article to another, aiming to reach a target page in as few steps and in as little time as possible. The project's goal is to explore new ways of engaging readers. [https://wikirun-game.toolforge.org/ Try playing the game] and let the team know what you think [[mw:Talk:New Engagement Experiments/WikiRun|on the talk page]].
* Users of the Wikipedia Android app in some languages can now play the new [[mw:Special:MyLanguage/Wikimedia Apps/Team/Android/TrivaGame|trivia game]]. ''Which came first?'' is a simple history game where you guess which of two events happened earlier on today's date. It was previously available as an A/B test. It is now available to all users in English, German, French, Spanish, Portuguese, Russian, Arabic, Turkish, and Chinese. The goal of the feature is to help engage with new generations of readers. [https://meta.wikimedia.org/wiki/Special:MyLanguage/Tech/News/2025/22]
* Users of the iOS Wikipedia App in some languages may see a new tabbed browsing feature that enables you to open multiple tabs while reading. This feature makes it easier to explore related topics and switch between articles. The A/B test is currently running in Arabic, English, and Japanese in selected regions. More details are available on the [[mw:Special:MyLanguage/Wikimedia Apps/Team/iOS/Tabbed Browsing (Tabs)|Tabbed Browsing project page]].
* Bureaucrats on Wikimedia wikis can now use [[{{#special:VerifyOATHForUser}}]] to check if users have enabled [[mw:Special:MyLanguage/Help:Two-factor authentication|two-factor authentication]]. [https://phabricator.wikimedia.org/T265726]
* [[File:Octicons-gift.svg|12px|link=|class=skin-invert|Wishlist item]] A new feature related to [[m:Special:MyLanguage/Community Wishlist/Focus areas/Template recall and discovery|Template Recall and Discovery]] will be deployed later this week to all Wikimedia projects: a [[mw:Special:MyLanguage/Help:TemplateData/Template discovery#Template categories|template category browser]] will be introduced to assist users in finding templates to put in their “favourite” list. The browser will allow users to browse a list of templates which have been organised into a given category tree. The feature has been requested by the community [[m:Special:MyLanguage/Community Wishlist/Wishes/Select templates by categories|through the Community Wishlist]].
* It is now possible to access watchlist preferences from the watchlist page. Also the redundant button to edit the watchlist has been removed. [https://www.mediawiki.org/wiki/Moderator_Tools/Watchlist]
* [[File:Octicons-sync.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]].
'''Updates for technical contributors'''
* As part of [[mw:MediaWiki_1.44|MediaWiki 1.44]] there is now a unified built-in Notifications system that makes it easier for developers to send, manage, and customize notifications. Check out the updated documentation at [[mw:Manual:Notifications|Manual:Notifications]], information about migration in [[phab:T388663|T388663]] and details on deprecated hooks in [[phab:T389624|T389624]].
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.9|MediaWiki]]
'''Meetings and events'''
* [[d:Special:MyLanguage/Event:WikidataCon 2025|WikidataCon 2025]], the conference dedicated to Wikidata is now open for [https://pretalx.com/wikidatacon-2025/cfp session proposals] and for [[d:Special:RegisterForEvent/1340|registration]]. This year's event will be held online from October 31 – November 02 and will explore on the theme of "Connecting People through Linked Open Data".
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/28|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W28"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 00:04, 8 جُلَے 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=28930584 -->
== <span lang="en" dir="ltr">Tech News: 2025-29</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W29"/><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/2025/29|Translations]] are available.
'''Updates for editors'''
* [[mw:Special:MyLanguage/Help:TemplateData/Template discovery#Featured templates|Featured templates]], a new feature related to [[m:Special:MyLanguage/Community Wishlist/Focus areas/Template recall and discovery|Template Recall and Discovery]] will be deployed this week to all Wikimedia projects: With this feature, editors will be able to quickly access a list of templates that are likely to be useful. These templates will be displayed in a list, under the "featured" tab of the template discovery interface. Administrators can define the list via the Community Configuration interface. The feature fulfills a request by the community [[m:Special:MyLanguage/Community Wishlist/Wishes/Easy access Templates|through the Community Wishlist]]. [https://phabricator.wikimedia.org/T367428][https://phabricator.wikimedia.org/T392896]
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:31}} community-submitted {{PLURAL:31|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the request to add Malayalam fonts in the [[oldWikisource:Special:MyLanguage/Wikisource:WS Export|Wikisource Book Export Tool]] was resolved and now, the rendering of Malayalam letters in exported Wikisource books are accurate. [https://phabricator.wikimedia.org/T374457]
'''Updates for technical contributors'''
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.10|MediaWiki]]
'''In depth'''
* Developers, designers, and all Wikimedians are invited to [https://phabricator.wikimedia.org/project/board/7953/ submit a project idea] for the Wikimania Hackathon 2025. Read [https://diff.wikimedia.org/2025/06/30/call-for-projects-wikimania-hackathon-2025-is-coming-to-nairobi/ this Diff blog post] for more details.
'''Meetings and events'''
* [[m:WikiIndaba conference 2025|WikiIndaba 2025]] scholarship application and program submission is open until 23:59 GMT on July 20. WikiIndaba is a regional conference for African Wikimedians both on the continent and in the diaspora to unite and grow together. Submit [https://docs.google.com/forms/d/e/1FAIpQLSdJTv68R1OPASXXDfpIl8EWiMLTM-TDwh6_5gNVvFuWccFZ2Q/viewform your scholarship application] and [https://ee.kobotoolbox.org/x/BI3omIfH program proposal] now!
* [https://br.wikimedia.org/wiki/WikiCon_Brasil_2025 WikiCon Brasil 2025] will take place on July 19-20 in Salvador, Bahia, Brazil. The Brazilian community members are encouraged to register and attend!
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/29|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W29"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:07, 14 جُلَے 2025 (UTC)
<!-- Message sent by User:UOzurumba (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=28980963 -->
== <span lang="en" dir="ltr">Tech News: 2025-30</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W30"/><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/2025/30|Translations]] are available.
'''Updates for editors'''
* The Translation Suggestions feature in the [[mw:Special:MyLanguage/Content translation|Content Translation tool]] now has another level of article filters added to the "[https://en.wikipedia.org/w/index.php?title=Special:ContentTranslation&filter-type=automatic&filter-id=previous-edits&active-list=suggestions&from=en&to=fi#/ ... More]" category. Translators who use the Suggestions feature can now select and receive article suggestions that are customized to geographical locations of their interest using the new "{{int:Cx-sx-suggestions-filters-tab-regions}}" filter. [https://phabricator.wikimedia.org/T113257]
* Administrators can now limit "Add a Link" to newcomers. The [[mw:Special:MyLanguage/Help:Growth/Tools/Add a link|"Add a Link"]] Structured Task [[mw:Special:MyLanguage/Growth/Constructive activation experimentation#Enwiki A/B test & "Add a Link" Improvements (Wiki Experiences 1.2.11 & 1.2.16)|helps new account holders start editing]], but some communities have requested the ability to restrict it to its intended audience: newcomers. Administrators can configure this setting within the [[Special:CommunityConfiguration/GrowthSuggestedEdits|Community Configuration]] feature.
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:29}} community-submitted {{PLURAL:29|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]].
'''Updates for technical contributors'''
* For AbuseFilter editors on [[phab:T392144|some wikis]], it is now possible to filter edits based on the RevertRisk score of the edit being attempted. It is only populated if the action being evaluated is an edit. For more information, please see the [[mw:Special:MyLanguage/Extension:ORES/AbuseFilter variables#What variables are available for use|ORES/AbuseFilter variables]] documentation.
* The [[mw:Special:MyLanguage/Beta Cluster|Beta Cluster]] wikis have [[listarchive:list/wikitech-l@lists.wikimedia.org/thread/YDABPV75LADRQCXMJAFWUP256N4EQ25B/|been moved]] from <code dir=ltr>beta.wmflabs.org</code> to <code dir=ltr>beta.wmcloud.org</code>. Users may need to update URLs in any tools, or in their password managers. Any related issues can be [[phab:T289318|reported in the task]].
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.11|MediaWiki]]
'''Meetings and events'''
* [[m:Special:MyLanguage/WikiCite 2025|WikiCite 2025]] will take place from 29–31 August, both online and in-person in Bern, Switzerland. The event's goals are to reconnect communities, institutions, and individuals working with open citations, bibliographic data, and the Wikidata/Wikibase ecosystem. Registration is open and the call for proposals will be announced soon. [https://lists.wikimedia.org/hyperkitty/list/wikidata@lists.wikimedia.org/message/KQZUG3ETKLBWPBYSB2YAWZIRPWHS24TG/]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/30|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W30"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 23:40, 21 جُلَے 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29005283 -->
== <span lang="en" dir="ltr">Tech News: 2025-31</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W31"/><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/2025/31|Translations]] are available.
'''Weekly highlight'''
* The Community Tech team will be focusing on wishes related to Watchlists and Recent Changes pages, over the next few months. They are looking for feedback. Please [[m:Special:MyLanguage/Community Wishlist/Updates#July 24, 2025: Watchlists and Recent Changes pages|read the latest update]], and if you have ideas, please [[m:Special:MyLanguage/Community Wishlist|submit a wish]] on the topic.
'''Updates for editors'''
* The Wikimedia Commons community has decided to block [[:mw:Special:MyLanguage/Upload dialog|cross-wiki uploads]] to Wikimedia Commons, for all users without autoconfirmed rights on that wiki, starting on August 16. This is because of [[:c:Commons:Cross-wiki media upload tool/History|widespread problems]] related to files that are uploaded by newcomers. Users who are affected by this will get an error message with a link to the less restrictive UploadWizard on Commons. Please help translating the [[:c:Special:MyLanguage/MediaWiki:Abusefilter-disallowed-cross-wiki-upload|message]] or give feedback on the message text. Please also update your local help pages to explain this restriction. [https://phabricator.wikimedia.org/T370598]
* On wikis with temporary accounts enabled and Meta-Wiki, administrators may now set up a footer for the Special:Contributions pages of temporary accounts, similar to those which can be shown on IP and user-account pages. They may do it by creating the page named <code dir=ltr>MediaWiki:Sp-contributions-footer-temp</code>. [https://phabricator.wikimedia.org/T398347]
* [[File:Octicons-sync.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]].
'''Updates for technical contributors'''
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.12|MediaWiki]]
'''Meetings and events'''
* [[wmania:Special:MyLanguage/2025:Wikimania|Wikimania 2025]] will run from August 6–9. The [https://wikimedia.eventyay.com/talk/wikimania2025/schedule/ program is available] for you to plan which sessions you want to attend. Most sessions will be live-streamed, with exceptions for those that show the "no camera" icon. If you are joining online to watch live-streams and use the interactive features, please [[wmania:Special:MyLanguage/2025:Registration|register]] for a free virtual ticket. For example, you may be interested in technical sessions such as:
** [https://wikimedia.eventyay.com/talk/wikimania2025/talk/KFEFVG/ Temporary Accounts: Enhancing privacy for our unregistered editors]
** [https://wikimedia.eventyay.com/talk/wikimania2025/talk/TVCVAB/ Building a Sustainable Future for Wikimedia Contributors]
** [https://wikimedia.eventyay.com/talk/wikimania2025/talk/WTRQCJ/ A dozen visions for wikitext!]
** [https://wikimedia.eventyay.com/talk/wikimania2025/talk/8YKKP9/ Coordinate Across Stakeholders with the Product and Technology Advisory Council]
* The [[mw:Special:MyLanguage/MediaWiki Users and Developers Conference Fall 2025|MediaWiki Users and Developers Conference, Fall 2025]] will be held 28–30 October 2025 in Hanover, Germany. This event is organized by and for the third-party MediaWiki community. You can propose sessions and register to attend.
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/31|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W31"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 00:25, 29 جُلَے 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29051727 -->
== <span lang="en" dir="ltr">Tech News: 2025-32</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W32"/><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/2025/32|Translations]] are available.
'''Updates for editors'''
* Editors can now enable the [[mw:Special:MyLanguage/Product Safety and Integrity/Anti-abuse signals/User Info|User Info card]]. This feature adds an icon next to usernames on history pages and similar user-contribution log pages. When you tap or click on the icon, it displays data related to that user account such as the number of edits, reverted edits, blocks, and more. It's part of a broader project to make it easier for moderators to evaluate account trustworthiness. The feature can be enabled in [[testwiki:Special:GlobalPreferences#mw-prefsection-rendering|your global preferences]], and later this week it will be available in local preferences. [https://phabricator.wikimedia.org/T386439]
* Everybody is invited to share comments on [[m:Special:MyLanguage/CampaignEvents/Collaborative contributions|Collaborative Contributions]], a project recently launched by the [[m:Special:MyLanguage/Connection Team|Connection team]]. The project aims to create a new way to display the impact of collaborative editing activities (such as edit-a-thons, backlog drives, and WikiProjects) on the wikis. Post your comments on the [[m:Talk:CampaignEvents/Collaborative contributions|project talk page]]. [https://phabricator.wikimedia.org/T378035]
* Administrators can now define the default block duration for temporary accounts. To do that, they need to create a page named <code dir=ltr>MediaWiki:Ipb-default-expiry-temporary-account</code> and use a value defined in <code dir=ltr>MediaWiki:Ipboptions</code>. This allows administrators to easily block temporary accounts for 90 days, which is functionally equivalent to an indefinite block. The advantage of this solution is that it does not clutter Special:BlockList. [[mw:Special:MyLanguage/Manual:Block and unblock#Default block duration options|More documentation]] is available. [https://phabricator.wikimedia.org/T398626]
* [[File:Octicons-sync.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]].
'''Updates for technical contributors'''
* Gadgets can now include <code dir=ltr>.vue</code> files. This makes it easier to develop modern user interfaces using [[mw:Vue.js|Vue.js]], in particular using [[mw:Special:MyLanguage/Codex|Codex]], the official design system of Wikimedia. [[wmdoc:codex/latest/icons/overview.html|Codex icons]] can be loaded through the gadget definition. [[mw:Special:MyLanguage/Extension:Gadgets#Pages|The documentation]] has examples. For user scripts that use Vue.js, an [[mw:API:CodexIcons|API module]] now exists to load Codex icons. [https://phabricator.wikimedia.org/T340460][https://phabricator.wikimedia.org/T311099]
* Module developers can now use a [[mw:Help:Extension:Translate/Message Bundles/Lua reference|Lua interface]] to simplify the preparation of Lua modules for translation on Meta-Wiki. This improvement makes it easier for translators to find and edit module strings without dealing with raw Lua code. It helps prevent mistakes that could break the module during translation. Module developers and translators are invited to [[commons:File:Translatable modules video demo July 2025.webm|watch the demo video]], read more about [[mw:Special:MyLanguage/Translatable modules|translatable modules]] to understand how it works, refer to Meta-Wiki's [[m:Module:User Wikimedia project|Module:User Wikimedia project]] for example usage, and [[mw:Talk:Translatable modules|share their feedback]] on how well it addresses the challenges in their workflow. The interface still has some performance issues, so it should not be used in widely used modules yet. [https://phabricator.wikimedia.org/T359918]
* Developers of external tools that connect to Wikimedia pages must set a user-agent that complies with [[foundation:Special:MyLanguage/Policy:Wikimedia Foundation User-Agent Policy|the user-agent policy]]. This policy will start to be more strongly enforced in August because of external crawlers that are [[diffblog:2025/04/01/how-crawlers-impact-the-operations-of-the-wikimedia-projects/|overusing]] Wikimedia's resources. Tools that are hosted on Wikimedia's Toolforge or Cloud VPS will not be affected by this for now, but should still set a user-agent. [[phab:T400119|More technical details are available]], and related questions are welcome in that task.
* Parsoid Read Views is going to be rolling out to some smaller Wikipedias over the next few weeks, following the successful transition of Wikivoyages and Wiktionaries to Parsoid Read Views. For more information, see the [[mw:Special:MyLanguage/Parsoid/Parser Unification|Parsoid/Parser Unification]] project page. [https://phabricator.wikimedia.org/project/profile/7694/]
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.13|MediaWiki]]
'''Meetings and events'''
* [[wmania:Special:MyLanguage/2025:Wikimania|Wikimania 2025]] will run from August 6–9. The [https://wikimedia.eventyay.com/talk/wikimania2025/schedule/ program is available] for you to plan which sessions you want to attend. Most sessions will be live-streamed, with exceptions for those that show the "no camera" icon. If you are joining online to watch live-streams and use the interactive features, please [[wmania:Special:MyLanguage/2025:Registration|register]] for a free virtual ticket. For example, you may be interested in technical sessions such as:
** [https://wikimedia.eventyay.com/talk/wikimania2025/talk/GEH9DH/ Wikimedia’s knowledge infrastructure in a changing internet: Establishing sustainable pathways for content reuse]
** [https://wikimedia.eventyay.com/talk/wikimania2025/talk/7ELN9Q/ Wikifunctions is coming soon to a wiki near you!]
** [https://wikimedia.eventyay.com/talk/wikimania2025/talk/ZMGVJV/ Shaping the Future of Wikipedia’s Reader Experience]
** [https://wikimedia.eventyay.com/talk/wikimania2025/talk/KCKTFZ/ Making Wikipedia More Readable: What Comes Next]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/32|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W32"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 03:38, 5 اَگست 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29083927 -->
== <span lang="en" dir="ltr">Tech News: 2025-33</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W33"/><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/2025/33|Translations]] are available.
'''Updates for editors'''
* The WikiEditor toolbar now includes [[mw:Special:MyLanguage/Help:Extension:WikiEditor#Keyboard shortcuts|its keyboard shortcuts]] in the tooltips for its buttons. This will help to improve the discoverability of this feature. [https://phabricator.wikimedia.org/T400583]
* The [[m:Special:MyLanguage/Product and Technology Advisory Council|Product and Technology Advisory Council]] published a set of [[m:Special:MyLanguage/Product and Technology Advisory Council/August 2025 draft PTAC proposals for feedback|proposed experiments]] the Wikimedia Foundation can try to improve communication with community. Feedback on the proposals are welcomed until August 22 on [[m:Talk:Product and Technology Advisory Council/August 2025 draft PTAC proposals for feedback|this talk page]].
* The search bar on the Minerva skin (mobile) has been updated to use the same type-ahead search component that is used on the Vector 2022 skin. There are no changes in search functionality but there are minor visual changes. Specifically, the close-search button has been changed from an "X" to a back arrow. This helps to distinguish it from the other "X" button that is used to clear any text. [https://phabricator.wikimedia.org/T393944]
* Editors on some wikis will see a new toggle for "Group results by page" on watchlist, related changes, and recent changes pages. This is [[mw:Special:MyLanguage/Moderator Tools/Watchlist/Experiment|an A/B experiment]] that is planned to start on August 11, and will run for 3–6 weeks on the Bengali, Chinese, Czech, French, Greek, Portuguese, and Urdu Wikipedias. The experiment will examine how making this feature more discoverable might affect editors' ability to find the edits they are looking for. [https://phabricator.wikimedia.org/T396789]
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:31}} community-submitted {{PLURAL:31|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]].
'''Updates for technical contributors'''
* The multiwiki datasets of [[:wikt:en:Module:Unicode data|Unicode data]] have been moved to [[c:Category:Unicode Module Datasets|Category:Unicode Module Datasets]] on Wikimedia Commons, to follow the idea of "One common data source, multiple local wikis". Most wikis have been updated to use the Commons version. You can ask questions at [[c:Category talk:Unicode Module Datasets|the talkpage]]. [https://en.wiktionary.org/wiki/Module_talk:Unicode_data#Data_from_commons]
* Lua code can add warnings when something is wrong, by using the <code dir=ltr>mw.addWarning()</code> function. It is now possible to add more than one warning, instead of new warnings replacing old ones. If you maintain a Lua module that used warnings, you should check it still works as expected. [https://phabricator.wikimedia.org/T398390]
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.14|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/33|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W33"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 23:27, 11 اَگست 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29106516 -->
== <span lang="en" dir="ltr">Tech News: 2025-34</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W34"/><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/2025/34|Translations]] are available.
'''Updates for editors'''
* Later this week, people who are logged-in and have the "[[mw:Special:MyLanguage/Talk pages project/Feature summary|Discussion tools]]" [[Special:Preferences#mw-prefsection-betafeatures|Beta Feature]] enabled will gain the ability to "Thank" individual comments directly from talk pages, rather than needing to navigate to page history. [[mw:Special:MyLanguage/Talk pages project/Feature summary#Comment actions|Learn more about this feature]]. [https://phabricator.wikimedia.org/T400849]
* An A/B test comparing two versions of the desktop donate link launched on testwiki on 12 August and on English Wikipedia 14 August for 0.1% of logged out users on the desktop site. The experiment will run for three weeks, ending on 12 September. [https://phabricator.wikimedia.org/T395716]
* An A/A test to measure the baseline for reader retention was launched 12 August using [[wikitech:Experimentation Lab|Experimentation Lab]]. This measures the percentage of users who revisit a wiki after their initial visit over a 14-day period. No visual changes are expected. The experiment will run through 31 August. [https://phabricator.wikimedia.org/T399227]
* Five new wikis have been created:
** a {{int:project-localized-name-group-wikisource/en}} in [[d:Q34057|Tagalog]] ([[s:tl:|<code>s:tl:</code>]]) [https://phabricator.wikimedia.org/T388639]
** a {{int:project-localized-name-group-wikisource/en}} in [[d:Q36213|Madurese]] ([[s:mad:|<code>s:mad:</code>]]) [https://phabricator.wikimedia.org/T391747]
** a {{int:project-localized-name-group-wikipedia/en}} in [[d:Q3450749|Rakhine]] ([[w:rki:|<code>w:rki:</code>]]) [https://phabricator.wikimedia.org/T392490]
** a {{int:project-localized-name-group-wikibooks/en}} in [[d:Q13324|Minangkabau]] ([[b:min:|<code>b:min:</code>]]) [https://phabricator.wikimedia.org/T395452]
** a {{int:project-localized-name-group-wiktionary/en}} in [[d:Q7598268|Standard Moroccan Amazigh]] ([[wikt:zgh:|<code>wikt:zgh:</code>]]) [https://phabricator.wikimedia.org/T399684]
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:46}} community-submitted {{PLURAL:46|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]].
'''Updates for technical contributors'''
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.15|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/34|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W34"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 00:36, 19 اَگست 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29127690 -->
== <span lang="en" dir="ltr">Tech News: 2025-35</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W35"/><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/2025/35|Translations]] are available.
'''Updates for editors'''
* [[File:Octicons-gift.svg|12px|link=|class=skin-invert|Wishlist item]] [[File:Octicons-tools.svg|12px|link=|class=skin-invert|Advanced item]] Template authors can now use additional CSS properties, since the CSS sanitizer used by [[mw:Special:MyLanguage/Help:TemplateStyles|TemplateStyles]] was updated. For example: <code>width: fit-content</code>; <code>ruby-align</code>; relative units such as <code>lh</code>; and custom strings in <code>list-style-type</code>. These improvements are a [[m:Special:MyLanguage/Community Wishlist/Wishes/Allow use of modern CSS in templates by updating the TemplateStyles CSS sanitizer|Community Wishlist wish]]. [https://phabricator.wikimedia.org/T271958][https://phabricator.wikimedia.org/T277755][https://phabricator.wikimedia.org/T293633][https://phabricator.wikimedia.org/T295088][https://phabricator.wikimedia.org/T326906][https://phabricator.wikimedia.org/T340057][https://phabricator.wikimedia.org/T360725][https://phabricator.wikimedia.org/T371809][https://phabricator.wikimedia.org/T375344][https://phabricator.wikimedia.org/T394619]
* On large wikis, the default time period to display edits from, within the Special:RecentChanges page, has been changed from 7 days to 1 day. This is part of a performance improvement project. This should have no user-facing impact due to the quantity of edits on these wikis. [https://phabricator.wikimedia.org/T399455]
* Administrators can now access the [[{{#special:BlockedExternalDomains}}]] page from the [[{{#special:CommunityConfiguration}}]] list page. This makes it easier to find. [https://phabricator.wikimedia.org/T393240]
* Wikimedia Commons videos were not shown in the Videos tab in Google Search. The problem was investigated and reported to Google who have now fixed the issue. [https://phabricator.wikimedia.org/T396168][https://meta.wikimedia.org/wiki/Community_Wishlist/Wishes/Do_something_about_Google_%26_DuckDuckGo_search_not_indexing_media_files_and_categories_on_Commons]
* One new wiki has been created: a {{int:project-localized-name-group-wiktionary/en}} in [[d:Q33014|Betawi]] ([[wikt:bew:|<code>wikt:bew:</code>]]) [https://phabricator.wikimedia.org/T402130]
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:39}} community-submitted {{PLURAL:39|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]].
'''Updates for technical contributors'''
* Two fields of the [[mw:Special:MyLanguage/Manual:Recentchanges table|recentchanges database table]] are being removed. <code>rc_new</code> and <code>rc_type</code> are being removed in favor of <code>rc_source</code>. Queries to these older fields will start to fail starting this week and developers should use <code>rc_source</code> instead. These older fields were deprecated over 10 years ago and should not be in use. This is part of work to improve the performance and stability of queries to the recentchanges table. [https://phabricator.wikimedia.org/T400696]
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.16|MediaWiki]]
'''In depth'''
* The latest quarterly [[mw:Special:MyLanguage/Wikimedia Language and Product Localization/Newsletter/2025/July|Language and Internationalization Newsletter]] is now available. This edition includes: support for new languages in MediaWiki and translatewiki; the start of the Language Onboarding and Development project to help support the growth of new and small wikis; updates on research projects; and more.
'''Meetings and events'''
* The next [[mw:Special:MyLanguage/Wikimedia Language and Product Localization/Community meetings#29 August 2025|Language Community Meeting]] is happening soon, August 29th at [https://zonestamp.toolforge.org/1756479600 15:00 UTC]. This week's meeting will cover: the Avro keyboard developers from Wikimedia Bangladesh, who were recently awarded a national award for their contributions to this keyboard; and other topics.
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/35|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W35"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 00:10, 26 اَگست 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29175124 -->
== <span lang="en" dir="ltr">Tech News: 2025-36</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W36"/><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/2025/36|Translations]] are available.
'''Weekly highlight'''
* The Editing team wants to compile a list of templates, jargon terms, and policies used in edit summaries when a copyright violation is removed. This will help them identify the number of edits reverted due to copyright issues. We invite community members from the following Wikis to list these terms in [[Phab:T402601|T402601]], or to share their list with [[User:Trizek (WMF)|Trizek_(WMF)]]: {{int:project-localized-name-arwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-cswiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-dewiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-enwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-eswiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-fawiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-frwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-hewiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-idwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-itwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-jawiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-kowiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-nlwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-plwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-ptwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-trwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-ukwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-viwiki/en}}{{int:comma-separator/en}}{{int:project-localized-name-zhwiki/en}}. This project is open until September 9th 2025.
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Help:Extension:CampaignEvents|CampaignEvents extension]] has been enabled for all Wikisources. The extension makes it easier to organize and participate in collaborative activities, like edit-a-thons and WikiProjects, on the wikis. The extension has three features: [[m:Special:MyLanguage/Event Center/Registration|Event Registration]], [[m:Special:MyLanguage/CampaignEvents/Collaboration list|Collaboration List]], and [[m:Special:MyLanguage/Connection Team/Invitation list|Invitation List]]. To request the extension for your wiki, visit the Deployment information page. [https://meta.wikimedia.org/wiki/CampaignEvents/Deployment_status#How_to_Request_the_CampaignEvents_Extension_for_your_wiki]
* The lists in the footer of the editing interface, such as "Templates used on this page," will now be organized into columns when there is enough space. This enhancement minimizes scrolling when editing lengthy articles on Wikipedia. [https://phabricator.wikimedia.org/T401066]
* On September 3rd, 2025 we will increase the sampling percentages of our [[mw:Special:MyLanguage/Moderator Tools/Watchlist/Experiment#Scope of the experiment|group by toggle experiment]] of the <code>Special:RecentChanges</code>, <code>Special:Watchlist</code>, and <code>Special:RelatedChanges</code> pages on the Chinese, French, and Portuguese Wikipedias to 100 percent, allowing more editors to be part of this experiment. This adjustment is intended to ensure we have sufficient data to make informed decisions when evaluating the experiment results. [https://phabricator.wikimedia.org/T402958][https://phabricator.wikimedia.org/T396789]
* Upon clicking an empty search bar, logged-out users will see suggestions of articles for further reading on English Wikipedia beginning the week of September 22. The feature will be available on both desktop and mobile. All non-English wikis received this change in June and July. The goal is to make it easier for users to find articles. [[mw:Special:MyLanguage/Reading/Web/Content Discovery Experiments/Search Suggestions|Learn more]].
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:37}} community-submitted {{PLURAL:37|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]].
'''Updates for technical contributors'''
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.17|MediaWiki]]
'''In depth'''
* Wikifunctions now has a new capability called "lightweight enumeration types", an enumeration type is simply a fixed set of values that's in the type's definition. This capability makes it quick and easy to define such a type, and allows for the reuse of values that are already present in Wikidata. Here is [[f:Special:MyLanguage/Wikifunctions:Status updates/2025-07-19|a newsletter]] to learn more.
* The latest [[mw:Special:MyLanguage/Readers/Newsletter updates#August 2025: Newsletter #1|Readers Newsletter]] is now available. This edition includes: the formation of two new teams — Reader Growth and Reader Experience; insights into declining pageviews and account creations; highlights from the Wikimania Nairobi panel on improving the reading experience; upcoming experiments to engage new and existing readers; and more.
'''Meetings and events'''
* Spotlight on some Wikimania 2025 Sessions:
** Identifying AI-generated text by searching for ISBNs whose checksums fail: Mathias Schindler of WMDE [https://www.youtube.com/watch?v=Dw9o8Lsl974&t=15910s shared tools to help communities search for these].
** [https://wikimedia.eventyay.com/talk/wikimania2025/talk/TCHZKH/ La durabilité du mouvement Wikimedia face aux défis actuels et futurs]: This session explored how Wikimedia can stay a trusted source of knowledge in the age of generative AI, information overload, and disinformation.
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/36|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W36"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:48, 1 سیٚپٹَمبَر 2025 (UTC)
<!-- Message sent by User:UOzurumba (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29196010 -->
== <span lang="en" dir="ltr">Tech News: 2025-37</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W37"/><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/2025/37|Translations]] are available.
'''Weekly highlight'''
* The Editing team is working on a new check: [[mw:Special:MyLanguage/Paste check|Paste check]]. This check informs newcomers who paste text into Wikipedia that the content might not be accepted. This check is an effort to increase the likelihood that the new content people are adding to Wikipedia is aligned with the Movement's commitment to offering information under a free content license. This check will soon be tested at a few wikis. If your community is interested in this test, please [[phab:T403680|tell us in this task]], or [[mw:Talk:Edit check|contact the team]].
'''Updates for editors'''
* [[File:Octicons-tools.svg|12px|link=|class=skin-invert|Advanced item]] Later this week, users of the "{{int:codemirror-beta-feature-title}}" [[Special:Preferences#mw-prefsection-betafeatures|beta feature]] will be able to use a [[w:en:Lint (software)|linting tool]] to see errors or other potential problems in wikitext in real time. See the [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Linting|help page for more information]]. [https://phabricator.wikimedia.org/T381577]
* [[File:Octicons-tools.svg|12px|link=|class=skin-invert|Advanced item]] When browsing a wiki (like <code dir=ltr>en.wikipedia.org</code>), the software responds in one of two ways: a desktop page, or a redirect to a mobile version on an "m" domain (like <code dir=ltr>en.m.wikipedia.org</code>). Over the next three weeks, MediaWiki will start displaying the mobile version to mobile devices directly on the standard domain, without this redirect. This change does not affect existing m-dot URLs, or the "Desktop view" opt-out. [[mw:Requests for comment/Mobile domain sunsetting/2025 Announcement|Learn more]]. [https://phabricator.wikimedia.org/T214998]
* When an edit changes the categories of a page, the changes to the category membership counts are now happening asynchronously. This improves the speed of saving edits, especially when moving many pages to or from the same category, and reduces the risk of site outages, but it means that the counts can show outdated information for a few minutes. [https://phabricator.wikimedia.org/T365303]
* Edits on Wikidata to qualifiers (properties and values) and references (properties and values) in a Wikidata item statement will now not add entries to the RecentChanges or Watchlist pages on all other Wikis. This is a temporary change to improve performance while other solutions are created. Wikidata's own pages remain unchanged. [[m:Wikidata For Wikimedia Projects/Reduce change propagation noise#Phase 1: Turn off (temporarily) Qualifiers and References Wikidata edits to the Recent Changes tables|Learn more]]. [https://phabricator.wikimedia.org/T401286][https://phabricator.wikimedia.org/T400698]
* Japanese-language wikis have had a major upgrade to the way that search works. The new search should generally give more accurate and more relevant search results. [https://phabricator.wikimedia.org/T318269]
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:31}} community-submitted {{PLURAL:31|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]].
'''Updates for technical contributors'''
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.18|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/37|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W37"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 01:12, 9 سیٚپٹَمبَر 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29238161 -->
== <span lang="en" dir="ltr">Tech News: 2025-38</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W38"/><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/2025/38|Translations]] are available.
'''Updates for editors'''
* References lists that are made using the <code dir=ltr><nowiki><references/></nowiki></code> [[mw:Special:MyLanguage/Help:Cite#references-tag|tag]] will now automatically display with columns in Vector 2022 when readers are using its 'standard' settings for text-size and page-width. [https://phabricator.wikimedia.org/T334941]
* Starting in the week of October 6, on [[git:operations/mediawiki-config/+/a2d2aaab9ace84280dd2f4c70a33bb69cd73850f/dblists/small.dblist|small wikis]] and [[git:operations/mediawiki-config/+/a2d2aaab9ace84280dd2f4c70a33bb69cd73850f/dblists/medium.dblist|medium wikis]] that have the [[mw:Special:MyLanguage/Help:Extension:CampaignEvents|CampaignEvents extension]] enabled, all autoconfirmed users will be able to use [[m:Special:MyLanguage/Event Center/Registration|Event Registration]] as an organizer. No changes will be made for [[git:operations/mediawiki-config/+/a2d2aaab9ace84280dd2f4c70a33bb69cd73850f/dblists/large.dblist|large wikis]] unless requested in Phabricator. This change is being made to make it easier for more people to use Event Registration, especially on wikis that are less likely to have policies related to the Event Organizer right. [[m:Special:MyLanguage/CampaignEvents/Proposal to grant autoconfirmed users on small and medium wikis the organizer access to the event registration tool|Learn more]].
* Users that search using regular expressions (regex) can now use additional features including:
** for the <code dir=ltr>intitle:</code> keyword: [[mw:Special:MyLanguage/Help:CirrusSearch#Metacharacters|metacharacters]] for start-of-line (<code dir=ltr>^</code>) and end-of-line (<code dir=ltr>$</code>) anchors [https://phabricator.wikimedia.org/T317599]
** for both <code dir=ltr>intitle:</code> and <code dir=ltr>insource:</code> keywords: shorthand [[mw:Special:MyLanguage/Help:CirrusSearch#Character_Classes|character classes]] for digits (<code dir=ltr>\d</code>), whitespace (<code dir=ltr>\s</code>), and word characters (<code dir=ltr>\w</code>); and [[mw:Special:MyLanguage/Help:CirrusSearch#Escape codes|escape codes]] for line feed (<code dir=ltr>\r</code>), newline (<code dir=ltr>\n</code>), tab (<code dir=ltr>\t</code>), and unicode (e.g. <code dir=ltr>\uHHHH</code>). [https://phabricator.wikimedia.org/T403212]
* When you search for text that looks like an IP, the system will now show search results. It used to take you to the contributions for that IP instead of showing search results. [https://phabricator.wikimedia.org/T306325]
* [[m:Special:MyLanguage/Tech/Server switch|All wikis will be read-only]] for a few minutes on September 24. This is planned at [https://zonestamp.toolforge.org/1758726000 15:00 UTC]. This is for the datacenter server switchover backup tests which happen twice a year. You can [[diffblog:2025/03/12/hear-that-the-wikis-go-silent-twice-a-year/|read more about the background and details of this process on the Diff blog]].
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:24}} community-submitted {{PLURAL:24|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, a bug was fixed that affected users who used the page-tabs to switch from wikitext editing of a section into the visualeditor. [https://phabricator.wikimedia.org/T401043]
'''Updates for technical contributors'''
* The MediaWiki Interfaces team is redesigning the Wikimedia REST API Sandbox with Codex. If you have feedback on improvements for the API documentation or what makes developer experiences smooth (or frustrating), you’re invited to [https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ2aZzbXeQvjOF7gB1fJXiwAYemQjKf4sXNaRODPA7_obFyNBwkzNkoVCoTF-aeov89kIjXHbCQm join an upcoming discovery interview], or [[mw:MediaWiki Interfaces Team/Developer Feedback/Wikimedia Web APIs|leave feedback onwiki]]. [[listarchive:list/wikitech-l@lists.wikimedia.org/thread/C4FBAOA57PH6G5ORVMAUF5TGYBLZDU5Q/|Learn more]].
* Edits to Wikidata aliases (an alternative name for an item or a property) will now be shown in RecentChanges and Watchlist entries on other wikis less often, reducing unnecessary notifications. This will reduce the overall quantity of 'noisy' entries. Wikidata's own pages remain unchanged. [[m:Wikidata For Wikimedia Projects/Reduce change propagation noise#Phase 1: More granular Alias tracking|Learn more]]. [https://phabricator.wikimedia.org/T401288]
* The new [https://www.unicode.org/versions/Unicode17.0.0/ Unicode 17.0] version has been released. The [[:c:Category:Unicode Module Datasets|datasets on Commons]] for the [[:d:Q39301585|Module:Unicode data]] have been updated. Wikipedias that do not use the Commons datasets should either update their own data or switch to the Commons datasets.
* Users of the [[m:Special:MyLanguage/Wikimedia Enterprise|Wikimedia Enterprise]] Structured Contents endpoints can now access [https://enterprise.wikimedia.com/blog/parsed-wikipedia-tables/ Parsed Tables]. The new Parsed Tables feature extracts and represents Wikipedia tables in structured JSON. This improves machine accessibility as part of the [https://enterprise.wikimedia.com/api/structured-contents/ Structured Contents initiative]. Structured Contents output is freely available through the [https://enterprise.wikimedia.com/docs/on-demand/#article-structured-contents-beta On-demand API], or through Wikimedia Cloud Services.
* A [https://www.kaggle.com/datasets/wikimedia-foundation/english-wikipedia-people-dataset dataset of English Wikipedia biographical information] from [[m:Special:MyLanguage/Wikimedia Enterprise|Wikimedia Enterprise]] has been published on Kaggle, for evaluation and research. This provides structured data from more than 1.5 million biographies, including birth and death dates, education, affiliations, careers, awards, and more (from a June 2024 snapshot).
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.19|MediaWiki]]
'''Meetings and events'''
* [[wmania:Special:MyLanguage/2026:Scholarships|Scholarship applications]] for Wikimania 2026 in Paris, France, are open until October 31.
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/38|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W38"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17:05, 15 سیٚپٹَمبَر 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29263921 -->
== <span lang="en" dir="ltr">Tech News: 2025-39</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W39"/><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/2025/39|Translations]] are available.
'''Weekly highlight'''
* [https://zonestamp.toolforge.org/1758726000 On September 24th at 15:00 UTC], all Wikimedia sites users will experience a brief read-only period due to a scheduled [[m:Special:MyLanguage/Tech/Server switch|datacenter server switchover]]. The Wikimedia Foundation's Site Reliability Engineering (SRE) team will redirect all traffic from one primary server to its backup. You can listen to the switchover using the [http://listen.hatnote.com/ "Listen to Wikipedia"] tool, where you will hear edits stop for a few minutes during the read-only phase, then resume. This twice-yearly datacenter server switchover ensures reliability by testing the backup datacenter, so that our sites can stay online even if the primary datacenter fails. You can [[diffblog:2025/03/12/hear-that-the-wikis-go-silent-twice-a-year/|read more about the process on the Diff blog]].
'''Updates for editors'''
* Editors of [[f:Special:Mylanguage/Wikifunctions:Status updates/2025-09-12#Next round of Wiktionaries to receive embedded Wikifunctions calls|60 more Wiktionaries]] will soon be able to call [[f:Special:MyLanguage/Wikifunctions:Introduction|functions from Wikifunctions]] and integrate them into their pages. A function takes one or more inputs and transforms them into a desired output, like adding numbers, converting miles to meters, calculating elapsed time, or declining a word into a case. They will join the other [[f:Special:MyLanguage/Wikifunctions:Status updates/2025-08-29#Wikifunctions available on 65 Wiktionaries|65 Wiktionary language editions]], which already have access to embedded Wikifunctions calls. Later this year, plans are in place to expand to more Wiktionaries and the Incubator.
* A new [[mw:Special:MyLanguage/Help:Magic words#Technical metadata of another page|parser function]] has been added: <code><nowiki>{{#contentmodel}}</nowiki></code>. Template editors and admins can use it to get the localized or canonical name of the [[mw:Special:MyLanguage/Help:ChangeContentModel|content model]] of a specific page. The function makes it easier to create and edit system messages, such as ''MediaWiki:editinginterface'', even when you switch types of pages, like wiki, JavaScript, CSS or JSON page. [https://phabricator.wikimedia.org/T328254]
* Adding or editing a <code>DISPLAYTITLE</code> for an article using VisualEditor will no longer be broken. Editors who use VisualEditor mode to modify the <code><nowiki>{{DISPLAYTITLE}}</nowiki></code> would no longer have the literal text "DISPLAYTITLE" or its localized variant added to their articles. A list of pages that may have been affected and might need cleanup is documented in [[phab:P83438|this ticket]].
* Beta users of the Wikipedia Android app can now try the redesigned [[mw:Special:MyLanguage/Wikimedia Apps/Team/Android/Activity Tab Experiment|Activity tab]], which replaces the Edits tab. The new tab offers personalized insights into reading, editing, and donation activity, while simplifying navigation and making app use more engaging.
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:12}} community-submitted {{PLURAL:12|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]].
'''Updates for technical contributors'''
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.20|MediaWiki]]
'''In depth'''
* Wikifunctions users can now import many essential facts involving [[f:Special:MyLanguage/Z6011|geo-coordinates]], [[f:Special:MyLanguage/Z6010|quantities]] and [[f:Special:MyLanguage/Z6064|time]] values from Wikidata. This is made possible by the creation of Wikifunctions types for these values, which makes them available for use by functions in Wikifunctions. Learn more about how this works in [[c:File:ImportingWikidataDatatypesIntoWikifunctions.webm|this video]] and Wikifunctions' [[f:Special:MyLanguage/Wikifunctions:Status updates/2025-08-01#News in Types I: Wikidata quantity|August 1 newsletter]] (for quantities) and [[f:Special:MyLanguage/Wikifunctions:Status updates/2025-08-22#News in Types: Wikidata geo-coordinate|August 22 newsletter]] (for geo-coordinates).
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/39|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W39"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 22:54, 22 سیٚپٹَمبَر 2025 (UTC)
<!-- Message sent by User:UOzurumba (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29305556 -->
== <span lang="en" dir="ltr">Tech News: 2025-40</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W40"/><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/2025/40|Translations]] are available.
'''Weekly highlight'''
* A major software upgrade has been made to [[phab:|Phabricator]]. The update introduces performance improvements, a refreshed search interface, enhancements to Maniphest task search, updates to user profile pages and project workboards, new Herald automation features, as well as general text input, mobile experience improvements and more. [https://phabricator.wikimedia.org/phame/post/view/321/iterative_improvements_september_2025/]
'''Updates for editors'''
* The Community Tech team will release the new Community Wishlist extension on October 1, that will improve the way wishes will be submitted. The new extension will allow users to add tags to their wishes to better categorise them, and (in a future iteration) to filter them by status, tags and focus areas. It will also be possible to support individual wishes again, as requested by the community in many instances. The old system will be retired. There will be a brief period of downtime while the extension is deployed and wishes are migrated to the new system. You can read more about this [[:m:Special:MyLanguage/Community Wishlist/Updates|in the latest update]] or you can consult the [[:mw:Special:MyLanguage/Help:Extension:CommunityRequests|current documentation on MediaWiki]].
* As announced [[diffblog:2025/09/02/better-detecting-bots-and-replacing-our-captcha/|on Diff blog]], the production trial of the [[mw:Special:MyLanguage/Product Safety and Integrity/Anti-abuse signals/hCaptcha|hCaptcha]] service for bot detection has begun. The trial is currently using hCaptcha to protect account creation on Chinese, Persian, Portuguese, Indonesian, Japanese, and Turkish Wikipedias, where it will replace our existing [[mw:Special:MyLanguage/Extension:ConfirmEdit#FancyCaptcha|CAPTCHA]] (FancyCaptcha). The goal with the trial is to better block bots while also improving usability and accessibility for users who encounter CAPTCHA challenges.
* The [[mw:Special:MyLanguage/Extension:CampaignEvents|CampaignEvents]] extension has been [[m:Special:MyLanguage/CampaignEvents/Deployment status|deployed]] to Wikimedia Commons. The extension makes it easier to organize and participate in collaborative activities, like edit-a-thons and WikiProjects, on the wikis. On Commons, anyone who is a registered user can use it as an event participant. To use it as an organizer, someone needs to have the [[c:Special:MyLanguage/Commons:Event organizers|event organizer right]].
* [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Sub-referencing]], a new feature to re-use references with different details has been released to German Wikipedia. You can [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing#test|test the feature]] on testwiki or [https://en.wikipedia.beta.wmcloud.org/wiki/Sub-referencing on betawiki] as well. Please share your thoughts on [[:m:Talk:WMDE Technical Wishes/Sub-referencing#Templates used in sub-references|using templates in sub-references]] or [[:m:Talk:WMDE Technical Wishes/Sub-referencing#Pilot wikis|volunteer to become a pilot wiki]].
* On wikis using the [[mw:Special:MyLanguage/Help:Growth/Mentorship|Mentorship]] system, communities can now opt experienced editors out of Mentorship through [[{{#special:CommunityConfiguration/Mentorship}}]]. Within this setting, communities may define thresholds, based on edit count and account age, to decide when an editor is considered experienced enough to no longer receive Mentorship. [https://phabricator.wikimedia.org/T403563]
* The Editing Team and the Machine Learning Team are working on a new check for newcomers: [[mw:Special:MyLanguage/Edit check/Tone Check|Tone check]]. Using a prediction model, this check will encourage editors to improve the tone of their edits, using artificial intelligence. We invite volunteers to review the first version of the Tone language model for the following languages: Arabic, Czech, German, Hebrew, Indonesian, Dutch, Polish, Russian, Turkish, Chinese, Farsi, Italian, Norwegian, Romanian and Latvian. Users from these wikis interested in reviewing this model are [[mw:Special:MyLanguage/Edit_check/Tone_Check/Model_evaluation|invited to sign up at MediaWiki.org]]. The deadline to sign up is on October 3, which will be the start date of the test.
* The rollout of [[:mw:Special:MyLanguage/Help:Manage blocks|multiblocks]] had the side effect that non-active block logs may have been shown on {{#special:Contributions}} and on blocked users' user and user_talk pages. This issue will be fully resolved in a few days. As part of the fix, [{{fullurl:Special:Allmessages|prefix=sp-contributions-blocked-notice}} messages prefixed with <code>sp-contributions-blocked-notice</code>] will be removed and replaced with [{{fullurl:Special:Allmessages|prefix=blocked-notice-logextract}} those prefixed with <code>blocked-notice-logextract</code>] in a few weeks. Please help translate the new messages and update any local overrides if needed.
* There was a bug with links added using visual editor if they included characters such as <code dir=ltr><nowiki>[ ] |</nowiki></code> after the fragment identifier (<code><nowiki>#</nowiki></code>). They were not encoded properly creating an incorrect link. This has been fixed. [https://phabricator.wikimedia.org/T404823]
* One new wiki has been created: a {{int:project-localized-name-group-wikiquote/en}} in [[d:Q9237|Malay]] ([[q:ms:|<code>q:ms:</code>]]) [https://phabricator.wikimedia.org/T404698]
* [[File:Octicons-sync.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, the [[mw:Special:MyLanguage/Product Safety and Integrity/Anti-abuse signals/User Info|User Info Card]] now displays currently active global lock/blocks. [https://phabricator.wikimedia.org/T401128]
'''Updates for technical contributors'''
* Later this week, editors using Lua modules will be able to use the <code>[[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual#mw.title.newBatch|mw.title.newBatch]]</code> function to look up the existence of up to 25 pages at once, in a way that only increases the [[mw:Special:MyLanguage/Manual:Parser functions#Expensive parser functions|expensive function]] count once.
* A new [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group|Unsupported Tools Working Group]] has been formed as part of ongoing efforts to collectively determine technical work priorities, similar to the [[m:Special:MyLanguage/Product and Technology Advisory Council|Product & Technology Advisory Council]] (PTAC). The working group will help prioritize and review requests for support of unmaintained extensions, gadgets, bots, and tools. For the first cycle, the group will be prioritizing an unsupported Wikimedia Commons tool.
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.21|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/40|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W40"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:50, 29 سیٚپٹَمبَر 2025 (UTC)
<!-- Message sent by User:UOzurumba (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29355230 -->
== <span lang="en" dir="ltr">Tech News: 2025-41</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W41"/><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/2025/41|Translations]] are available.
'''Weekly highlight'''
* [[mw:Special:MyLanguage/Help:Edit check#paste|Paste Check]] is a new Edit Check feature to help avoid and fight copyright violations. When editors paste text into an article, Paste Check prompts them to confirm the origin and licensing of the content. Starting Wednesday, 8 October, [[phab:T403680|22 wikis will test Paste Check]]. Paste Check will help new volunteers understand and follow the policies and guidelines necessary to make constructive contributions to Wikipedia projects.
'''Updates for editors'''
* Mobile devices will receive mobile articles directly on the standard domain (like <code>en.wikipedia.org</code>), instead of via a redirect to an "m" domain (like <code>en.m.wikipedia.org</code>). This change improves performance. This week it will be enabled on Wikipedias. The existing mobile URLs and the "Desktop view" opt-out remain available. [[mw:Requests for comment/Mobile domain sunsetting/2025 Announcement|Learn more]]. [https://phabricator.wikimedia.org/T214998]
* New [[mw:Special:MyLanguage/Help:CirrusSearch#creationdate and lasteditdate|date filters]], <code dir=ltr>creationdate:</code> and <code dir=ltr>lasteditdate:</code>, are now available in the wiki search engine. This allows users to filter search results by a page's first or last revision date. The filters support comparison operators (e.g. <code dir=ltr>>2024</code>) and relative dates (e.g. <code dir=ltr>today-1d</code>), making it easier to find recently updated content or pages within specific age ranges. [https://phabricator.wikimedia.org/T403593]
* [[f:|Wikifunctions]] now supports rich text in embedded calls across the 150 wikis where it's enabled. To showcase this, the team created a [[f:Z26333|Latin declination table]] that Wiktionary editors can use to automatically generate noun forms, producing clear, formatted results — see an [[f:Wikifunctions:Embedded function calls/Wiktionary tables demonstration|example output]]. If you need any help or have any feedback, please [[f:Wikifunctions:Project chat|contact the Wikifunctions Team]]. [https://phabricator.wikimedia.org/T397402]
* An edit link will now appear inside the categories box on article pages for logged in users, which will directly launch the VisualEditor category dialog. [https://phabricator.wikimedia.org/T291691]
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:34}} community-submitted {{PLURAL:34|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, there was a problem downloading pdf files last week and that has been resolved. [https://phabricator.wikimedia.org/T405957]
'''Updates for technical contributors'''
* The field <code dir=ltr>rev_sha1</code> in the revision database table is being removed in favor of <code dir=ltr>content_sha1</code> in the content database table. See [https://lists.wikimedia.org/hyperkitty/list/cloud@lists.wikimedia.org/thread/2D2M3SP4WHR6BXXKTZ2PBLZQYR3EGQVR/ the announcement] for more information.
* The [[mw:Special:MyLanguage/Reading/Web|Reader Experience team]] will roll out [[w:en:Light-on-dark color scheme|Dark Mode]] user interface on all Wikimedia sites on October 29, 2025. All anonymous users of Wikimedia sites will have the option to activate a color scheme that features light-colored text on a dark background. This is designed to provide a more comfortable reading experience, especially in low-light situations. Template authors and technical contributors are encouraged to [[mw:Special:MyLanguage/Reading/Web/Accessibility for reading/Updates/2024-04|learn how to make pages ready for Dark mode]] and address any compatibility issues found in templates in their wiki before the enablement. Please contact the Web team for questions or any support on [[mw:Talk:Reading/Web/Accessibility for reading#|this talk page]] before the enablement. [https://phabricator.wikimedia.org/T395628]
* Starting on Monday, October 6, API endpoints under the <code>rest.php</code> path will be rerouted through a new internal API Gateway. Individual wikis will be updated based on the standard release groups, with total traffic increased over time. This change is expected to be non-breaking and non-disruptive. If any issues are observed, please file a Phabricator ticket to the [[phab:tag/serviceops/|Service Ops team board]]. [https://phabricator.wikimedia.org/T400130]
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.22|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/41|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W41"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17:21, 6 اَکتوٗبَر 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29400897 -->
== <span lang="en" dir="ltr">Tech News: 2025-42</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W42"/><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/2025/42|Translations]] are available.
'''Weekly highlight'''
* Last week, improvements to account security and two-factor authentication (2FA) features were enabled across all wikis. These changes include user interface improvements for [https://auth.wikimedia.org/metawiki/wiki/Special:AccountSecurity Special:AccountSecurity], the support of multiple 2FA methods via authenticator apps and portable security keys (previously users could only enable one method), and a new Recovery Codes module which facilitates fewer account lockouts due to lost two-factor apps and devices. As part of the [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Account Security]] project, work is continuing through the rest of 2025 on further user experience improvements, and support for passkeys as an alternate second factor.
'''Updates for editors'''
* Another part of the Account security project is making 2FA generally available to all users. Along with editors with advanced privileges, such as administrators and bureaucrats, 40% of editors now have access to 2FA. You can check if you have access at [https://auth.wikimedia.org/metawiki/wiki/Special:AccountSecurity Special:AccountSecurity]. Instructions for activation are on the linked page. The plan is to continue increasing availability if it is determined that the user support capabilities are able to support global usage. [https://phabricator.wikimedia.org/T400579]
* This week, users at wikis where talk page [[mw:Special:MyLanguage/Talk pages project/Usability|Usability Improvements]] are already available by default (everywhere ''except'' the 12 wikis listed in [[phab:T379264|T379264]]) will gain the ability to Thank a comment directly from the talk page it appears on. Before this change, Thanking could only be done by visiting the revision history of the talk page. You can [[diffblog:2025/10/13/revolutionizing-gratitude-a-new-era-of-thanking-comments/|learn more about this change]]. [https://phabricator.wikimedia.org/T366095]
* Users who have not [[Special:Preferences#mw-prefsection-personal-email|verified their email address]] will soon be receiving monthly Notification reminders to do so. This is because users who have verified their email can more easily recover their account. These reminders will not be sent if the user is inactive or removes the unverified email from their account. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Email_confirmation][https://phabricator.wikimedia.org/T58074]
* [[File:Octicons-sync.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 fix was made for an occasional error with saving translated paragraphs in the Content Translation tool, and the related error messages are now easier to see. [https://phabricator.wikimedia.org/T376531]
'''Updates for technical contributors'''
* The Unsupported Tools Working Group has chosen [[c:Special:MyLanguage/Commons:Video2commons|Video2Commons]] as the first tool for its pilot cycle. The group will explore ways to improve and sustain the tool over the coming months. [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group|Learn more on Meta]].
* [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.23|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/42|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W42"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:58, 13 اَکتوٗبَر 2025 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29434481 -->
== <span lang="en" dir="ltr">Tech News: 2025-43</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W43"/><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/2025/43|Translations]] are available.
'''Updates for editors'''
* To optimize how user data is stored in our databases, the saved preferences of users who haven't logged in for over five years and have fewer than 100 edits will be cleared. When those users return, default settings will apply. [https://phabricator.wikimedia.org/T406724]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:20}} community-submitted {{PLURAL:20|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, there was a broken link from the GlobalContributions interface message to the XTools GlobalContributions page which has now been fixed. [https://phabricator.wikimedia.org/T406415]
'''Updates for technical contributors'''
* The work to reroute all traffic to API endpoints under the <code dir=ltr><nowiki>rest.php</nowiki></code> route through a common API gateway is now complete. If any issues are observed, please file a phabricator ticket to the [[phab:tag/serviceops/|Service Ops team board]].
* Edits to Wikidata references or qualifiers will now be shown in RecentChanges and Watchlist entries on other wikis less often, reducing unnecessary notifications. This will reduce the overall quantity of 'noisy' entries. Wikidata's own pages remain unchanged. [https://phabricator.wikimedia.org/T401290]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.24|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/43|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W43"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:34, 20 اَکتوٗبَر 2025 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29478670 -->
== <span lang="en" dir="ltr">Tech News: 2025-44</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W44"/><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/2025/44|Translations]] are available.
'''Updates for editors'''
* The Wikipedia iOS app has launched an A/B/C test of improvements made to the tabbed browsing feature for select regions and languages. The test, named “More dynamic tabs”, explores new tab experiences and includes “Did you know” and “Because you read” article recommendations. You can [[mw:Special:MyLanguage/Wikimedia Apps/Team/iOS/Tabbed Browsing (Tabs)/New Tab Experience and Recommendations Experiment|read more on the project page]].
* Autoconfirmed users on [[git:operations/mediawiki-config/+/a2d2aaab9ace84280dd2f4c70a33bb69cd73850f/dblists/small.dblist|small]] and [[git:operations/mediawiki-config/+/a2d2aaab9ace84280dd2f4c70a33bb69cd73850f/dblists/medium.dblist|medium wikis]] with the CampaignEvents extension can now use [[m:Special:MyLanguage/Event Center/Registration|Event Registration]] without the Event Organizer right. This feature lets organizers enable registration, manage participants, and lets users register with one click instead of signing event pages.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:31}} community-submitted {{PLURAL:31|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue of flashing colors when holding or pressing the arrow keys under the dark mode settings in Vector 2022 has been fixed. [https://phabricator.wikimedia.org/T402285]
'''Updates for technical contributors'''
* The CampaignEvents extension will be deployed to all remaining wikis during the week of 17 November 2025. The extension currently includes three features: Event Registration, Collaboration List, and Invitation List. For this rollout, Invitation List will not be enabled on Wikifunctions and MediaWiki unless requested by those communities. [[m:Special:MyLanguage/CampaignEvents/Deployment status|Visit the deployment page to learn more]].
* The SwaggerUI-based REST sandbox experience is now live on all wiki projects. The sandbox can be accessed through the [[{{#special:RestSandbox}}]] page. Please report any issues to the MediaWiki Interfaces team board, or join the discussion on the [[mw:Special:MyLanguage/MediaWiki Interfaces Team/Feature Feedback/REST Sandbox|project launch]] page. [https://phabricator.wikimedia.org/project/board/6931/]
* Transform endpoints with a trailing slash path in the MediaWiki REST API are now marked as deprecated. They will remain functional during this time, but removal is expected by the end of January 2026. All API users currently calling them are encouraged to transition to the non-trailing slash versions. Both endpoint variations can be found and tested using the [https://test.wikipedia.org/w/index.php?api=mw-extra&title=Special%3ARestSandbox REST Sandbox]. See the [[mw:API/Deprecation|MediaWiki REST API Deprecation]] page for more detailed information about the API deprecation policies and procedures.
* A dedicated [[mw:API:REST API/Changelog|changelog now exists for the MediaWiki REST API]]. The changelog provides an overview of these changes, making it easier for developers to keep track of improvements and iterations. Announcements will also continue to flow through the standard communication channels, including Tech News and email distribution lists, but can now be more easily referenced from a central location. If you have feedback about the style, structure, or content of this changelog, please [[mw:API talk:REST API/Changelog|join the discussion]].
* Administrators can delete the tracking category which was previously added by the JsonConfig extension, as it is no longer used. See the categories linked from [[d:Q130635582#sitelinks-wikipedia|Q130635582]]. It is OK if there are still pages listed in the category as that is just a caching issue, and they will be automatically cleared out the next time each page is edited. [https://phabricator.wikimedia.org/T378352]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.25|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/44|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W44"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:29, 27 اَکتوٗبَر 2025 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29513638 -->
== <span lang="en" dir="ltr">Tech News: 2025-45</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W45"/><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/2025/45|Translations]] are available.
'''Updates for editors'''
* Administrators will now find that [[{{#special:MergeHistory}}]] is now significantly more flexible about what it can merge. It can now merge sections taken from the middle of the history of the source (rather than only the start) and insert revisions anywhere in the history of the destination page (rather than only the start). [https://phabricator.wikimedia.org/T382958]
* For users with "{{int:discussiontools-preference-autotopicsub}}" [[Special:Preferences#mw-prefsection-editing|enabled in their preferences]], starting a new topic or adding a reply to an existing topic will now subscribe them to replies to that topic. Previously, this would only happen if the DiscussionTools "{{int:Skin-action-addsection}}" or "{{int:Discussiontools-replybutton}}" widgets were used. When DiscussionTools was originally launched existing accounts were not opted in to automatic topic subscriptions, so this change should primarily affect newer accounts and users who have deliberately changed their preferences since that time. [https://phabricator.wikimedia.org/T290778]
* Scribunto modules can now be used to [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual#SVG library|generate SVG images]]. This can be used to build charts, graphics and other visualizations dynamically through Lua, reducing the need to compose them externally and upload them as files. [https://phabricator.wikimedia.org/T405861]
* Wikimedia sites now provide all anonymous users with the option to enable a dark mode color scheme, featuring light-colored text on a dark background. This enhancement aims to deliver a more enjoyable reading experience, especially in dimly lit environments. [https://phabricator.wikimedia.org/T395628]
* Users with large watchlists have long faced timeouts when editing [[Special:EditWatchlist|Special:EditWatchlist]]. The page now loads entries in smaller sections instead of all at once due to a paging update, allowing everyone to edit their watchlists smoothly. As part of the database update, sorting by expiry has been removed because it was over 100× slower than sorting by title. A [https://meta.wikimedia.org/wiki/Community_Wishlist/W454 community wish] has been created to explore alternative ways to restore sort-by-expiry. If this feature is important to you, please support the wish! [https://phabricator.wikimedia.org/T41510]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:31}} community-submitted {{PLURAL:31|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the fixing of the persisting highlighting when using VisualEditor find and replace during a query. [https://phabricator.wikimedia.org/T407318]
'''Updates for technical contributors'''
* Since 2019 the [[m:Special:MyLanguage/Wikimedia URL Shortener|Wikimedia URL Shortener]] at https://w.wiki is available for all Wikimedia wikis to create short links to articles, permalinks, diffs, etc. It is available in the sidebar as "Get shortened URL". There are 30 wikis that also install an older "ShortUrl" extension. The old extension will soon be removed. This means <code>/s/</code> URLs will not be advertised under article titles via HTML <code dir=ltr>class="title-shortlink"</code>. The <code>/s/</code> URLs will keep working. [https://phabricator.wikimedia.org/T107188]
* On Thursday, October 30, the [[:mw:Special:MyLanguage/MediaWiki Interfaces Team|MediaWiki Interfaces]] and [[:mw:Special:MyLanguage/Wikimedia Site Reliability Engineering|SRE Service Operations]] teams began rerouting Action API traffic through a common API gateway. Individual wikis will be updated based on the standard release groups, with total traffic increased over time. This change is expected to be non-breaking and non-disruptive. If any issues are observed, please file a Phabricator ticket to the [https://phabricator.wikimedia.org/tag/serviceops/ Service Ops team] board.
* MediaWiki Train deployments will pause for the final two weeks of 2025: 22 December and 29 December. Backport windows will also pause between Monday, 22 December 2025 and Thursday, 2 January 2026. A backport window is a scheduled time to add things like bug fixes and configuration changes. There are seven deployment trains remaining for 2025. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/SMWTEAES4SDLDUSK4HMWNBSKNCXZAWYN/]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.45/wmf.26|MediaWiki]]
'''In depth'''
* In 2025, the Wikimedia Foundation reported that AI systems and search engines increasingly use Wikipedia content without driving users to the site, contributing to an 8% drop in human pageviews compared to 2024. After detecting bots disguised as humans, Wikimedia updated its traffic data to reflect this shift. Read more about current user trends on Wikipedia in [[diffblog:2025/10/17/new-user-trends-on-wikipedia/|a Diff blog post]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/45|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W45"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:32, 3 نَوَمبَر 2025 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29552512 -->
== <span lang="en" dir="ltr">Tech News: 2025-46</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W46"/><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/2025/46|Translations]] are available.
'''Updates for editors'''
[[File:Talk pages default look (April 2023).jpg|thumb|alt=Screenshot of the visual improvements made on talk pages|Example of a talk page with the new design, in French.]]
* Starting November 12, users will see a change in the [[m:Special:MyLanguage/Talk pages project/Feature summary#Usability improvements|appearance of talk pages]] on [[Phab:T379264|some Wikipedias]]. Almost [[phab:T392121|all wikis]] have received this design change; [[phab:T409297|English Wikipedia]] will get these changes later. You can read more [[diffblog:2024/05/02/making-talk-pages-better-for-everyone/|on ''Diff'']]. Users can opt out of these changes [[Special:Preferences#mw-prefsection-editing|in their user preferences]] in "{{int:discussiontools-preference-visualenhancements}}". [https://phabricator.wikimedia.org/T379264]
* MediaWiki can now display a [[mw:Special:MyLanguage/Help:Protection indicators|page indicator]] automatically while a page is protected. This feature is disabled by default. It can be enabled by [[m:Special:MyLanguage/Requesting wiki configuration changes|community request]]. [https://phabricator.wikimedia.org/T12347]
* Using the "{{int:showpreview}}" or "{{int:showdiff}}" buttons in the wikitext editor will now carry over certain URL parameters like '[[mw:Special:MyLanguage/Manual:Parameters to index.php#useskin|useskin]]', '[[mw:Special:MyLanguage/Manual:Parameters to index.php#uselang|uselang]]' and '[[mw:Special:MyLanguage/Help:Section#Editing sections|section]]'. This update also fixes an issue where, if the browser crashed while previewing an edit to a single section, saving this edit could overwrite the entire page with just that section’s content. [https://phabricator.wikimedia.org/T62744][https://phabricator.wikimedia.org/T24029][https://phabricator.wikimedia.org/T155097]
* Wikivoyage wikis can use [[mw:Special:MyLanguage/Help:Extension:Kartographer#Markers and counters|colored map markers in the article text]]. The text of these markers will now be shown in contrasting black or white color, instead of always being white. Local workarounds for the problem can be removed. [https://phabricator.wikimedia.org/T369454]
* The Activity tab in the Wikipedia Android app is now available for all users. The new tab offers personalized insights into reading, editing, and donation activity, while simplifying navigation and making app use more engaging. [https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/Android/Activity_Tab_Experiment]
* The Reader Growth team is launching an experiment called "Image browsing" to test how to make it easier for readers to browse and discover images on Wikipedia articles. This experiment, a mobile-only A/B test, will go live on English Wikipedia in the week of November 17 and will run for four weeks, affecting 0.05% of users on English wiki. The test launched on November 3 on Arabic, Chinese, French, Indonesian, and Vietnamese wikis, affecting up to 10% of users on those wikis. [https://www.mediawiki.org/wiki/Readers/Reader_Growth/WE3.1.3_Image_Browsing]
* [[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 inability to lock accounts on mobile sites has been fixed. [https://phabricator.wikimedia.org/T256185]
'''Updates for technical contributors'''
* [[wikitech:Help talk:Toolforge/Toolforge standards committee#November 2025 committee nominations|Nominations are open on Wikitech]] for new [[wikitech:Help:Toolforge/Toolforge standards committee|Toolforge standards committee]] members. The committee oversees the Toolforge [[wikitech:Help:Toolforge/Right to fork policy|Right to fork policy]] and [[wikitech:Help:Toolforge/Abandoned tool policy|Abandoned tool policy]] among other duties. Nominations will remain open through 2025-11-28.
* The [[w:JSON Web Token#Standard fields|JWT issuer field]] in [[mw:Special:MyLanguage/OAuth/For Developers#OAuth 2|OAuth 2 access tokens]] for [[m:Special:MyLanguage/Help:Unified login|SUL wikis]] has been changed to <code><nowiki>https://meta.wikimedia.org</nowiki></code>. Old access tokens will still work. [https://phabricator.wikimedia.org/T399199]
* The [[w:JSON Web Token#Standard fields|JWT subject field]] in [[mw:Special:MyLanguage/OAuth/For Developers#OAuth 2|OAuth 2 access tokens]] will soon change from <code><user id></code> to <code dir=ltr style="white-space:nowrap">mw:<identity type>:<user id></code>, where <code><identity type></code> is typically <code dir=ltr>CentralAuth:</code><!-- not a typo --> (for [[m:Special:MyLanguage/Help:Unified login|SUL wikis]]) or <code dir=ltr style="white-space:nowrap">local:<wiki id></code> (for other wikis). This is to avoid conflicts between different user ID types, and to make OAuth 2 access tokens and the <code>sessionJwt</code> cookie more similar. Old access tokens will still work. [https://phabricator.wikimedia.org/T399199]
* MediaWiki's block messages ([[MediaWiki:Blockedtext|blockedtext]], [[MediaWiki:Blockedtext-partial|blockedtext-partial]], [[MediaWiki:Autoblockedtext|autoblockedtext]], [[MediaWiki:Systemblockedtext|systemblockedtext]], [[MediaWiki:Blockedtext-tempuser|blockedtext-tempuser]], [[MediaWiki:Autoblockedtext-tempuser|autoblockedtext-tempuser]]) now support additional parameters indicating whether the user is blocked from editing their own user talk page <code><nowiki>$9</nowiki></code> or emailing other users <code><nowiki>$</nowiki><nowiki>10</nowiki></code>. [https://phabricator.wikimedia.org/T285612]
* A <code>REL1_45</code> branch for MediaWiki core and each of the extensions and skins in Wikimedia git has been created. This is the first step in the release process for MediaWiki 1.45.0, scheduled for late November 2025. If you are working on a critical bug fix or working on a new feature, you may need to take note of this change. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/ZUY7TY3Z6XPZWZVAZV63OPO5OW52Q6GE/]
* The process for generating CirrusSearch dumps has been updated due to slowing performance. If you encounter any issues migrating to the replacement dumps, please contact the Search Platform Team for support. [https://phabricator.wikimedia.org/T366248][https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/3KQPOR6ACVN6OVLMLZPIBXQSWQKW4E3K/]
* [[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.2|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/46|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W46"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:37, 10 نَوَمبَر 2025 (UTC)
<!-- Message sent by User:UOzurumba (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29606150 -->
== <span lang="en" dir="ltr">Tech News: 2025-47</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W47"/><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/2025/47|Translations]] are available.
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Readers/Reader Experience|Reader Experience team]] is experimenting with [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4_Reading lists|reading lists on mobile web]], allowing logged-in readers with no edits to save private lists of articles for later. The experiment is running on Arabic, Chinese, French, Indonesian, and Vietnamese Wikipedias since the week of 10 November, and will begin on English Wikipedia the week of 17 November.
* Users who can’t receive their email verification code during login can now get help by submitting a form on a new special page. This update is part of the [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Account Security]] initiative. If your account has an email address, please make sure you still have access to it. When logging in from a new device or location without 2FA, you may be asked to enter a 6-digit code sent by email to finish logging in. [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security#Why are you requiring me to enter a code from my email to log in? Can I opt out of this?|Learn more]].
* One new wiki has been created: a {{int:project-localized-name-group-wikisource}} in [[d:Q13324|Minangkabau]] ([[s:min:|<code>s:min:</code>]]) [https://phabricator.wikimedia.org/T408317]
* [[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]].
'''Updates for technical contributors'''
* As part of the [[mw:Special:MyLanguage/Parsoid/Parser Unification|Parser Unification]] project, the Content Transform Team rolled out Parsoid as the default parser to many low-traffic Wikipedias and is preparing the next step to high traffic ones. This message is an invitation for you to opt-in to Parsoid, as described in the [[mw:Special:MyLanguage/Help:Extension:ParserMigration|Extension:ParserMigration]] documentation, and identify any issues you might encounter with your own workflow using bots, gadgets, or user scripts. Please, let us know through the ''"Report Visual Bug"'' link in the Tools sidebar or create a phab ticket and tag the [[phab:project/view/5846|Content Transform Team in Phabricator]].
* Unsupported Tools: Several issues with [[:c:Special:MyLanguage/Commons:Video2commons|Video2Commons]] have been fixed, including filename-related upload failures, black-video imports, and retry handling. AV1 support has also been added. Ongoing work focuses on backend stability, ffmpeg errors, subtitle imports, metadata handling, and playlist uploads. To track specific tasks, check the [[phab:tag/video2commons/|Phabricator board]].
* [[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.3|MediaWiki]]
'''Meetings and events'''
* Save the date for the next Wikimedia Hackathon happening in Milan, Italy from May 1–3, 2026. Registration will open in January 2026. [https://pretix.eu/wikimedia/Hackathon-2026/ Scholarship applications are currently open], and will close on November 28, 2025. If you have any questions, please email <bdi lang="en" dir="ltr">hackathon@wikimedia.org</bdi>.
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/47|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W47"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17:25, 17 نَوَمبَر 2025 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29627455 -->
== <span lang="en" dir="ltr">Tech News: 2025-48</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W48"/><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/2025/48|Translations]] are available.
'''Updates for editors'''
* Last week, the [[mw:Special:MyLanguage/Wikimedia Search Platform|Wikimedia Search Team]] recreated the "DWIM" (Do What I Mean) gadget functionality server-side, for Russian and Hebrew Wikipedias. This feature adds cross-keyboard suggestions to the standard search-box suggestions. For example, searching for ''<span lang="und" dir="ltr">cxfcnmt</span>'' on Russian Wikipedia will now add suggestions for ''<span lang="ru" dir="ltr">счастье</span>'' ("happiness") that the user probably intended. They plan to enable this feature for other Russian and Hebrew wikis this week. [https://phabricator.wikimedia.org/T408734]
* Later this week, users of the "{{int:codemirror-beta-feature-title}}" [[Special:Preferences#mw-prefsection-betafeatures|beta feature]] will have syntax highlighting available in [[mw:Special:MyLanguage/Help:DiscussionTools|DiscussionTools]]. This requires that the "{{int:discussiontools-preference-sourcemodetoolbar}}" preference be set. [https://phabricator.wikimedia.org/T407918]
* [[mw:Special:MyLanguage/Help:Extension:CampaignEvents|Campaign events extension]] – the set of tools for coordinating events and other on-wiki collaborations has now been deployed to all Wikimedia wikis. A new feature known as [[m:Special:MyLanguage/CampaignEvents/Collaborative contributions|Collaborative contribution]] to help organizers and participants see the impact of activities has also been added. Join the upcoming [[m:Special:MyLanguage/Event:Connection learning session 3|learning session]] to see the new feature in action and share your feedback.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:24}} community-submitted {{PLURAL:24|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the bug which stopped CodeReviewBot from working, has now been fixed. [https://phabricator.wikimedia.org/T410417]
'''Updates for technical contributors'''
* Users of Wikimedia API can join a usability study to help validate the new design of Wikimedia REST API sandboxes. Interested participants should fill the [https://wikimediafoundation.limesurvey.net/487662 recruitment survey]. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/IREJRRWTZTGCYWQHDMSNJFTQAEPOOAE3/]
* The MediaWiki Interfaces team is deprecating XSLT stylesheets within the Action API. Support for <code dir=ltr>format=xml'''&xlst={stylesheet}'''</code> will be removed from Wikimedia projects by the end of November, 2025. In addition, it will soon be disabled by default in MediaWiki release versions: v1.43 (LTS), v1.44, and v1.45. Support for XSLT stylesheets will be fully removed from MediaWiki v1.46 (expected to release between April and May 2026). [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/5AX7UWAVVUNUSBOIRHMNOKWOZ5EZI3JX/]
* The WDQS legacy endpoint ([https://query-legacy-full.wikidata.org/ query-legacy-full.wikidata.org]) will be decommissioned at the end of December 2025, and finally closed down on 7th January 2026. After this date, users should expect requests to query.wikidata.org that require the full graph to fail or return invalid results if they are not rewritten to use SPARQL federation. The team encourages users to ensure that tools and workflows use the supported WDQS endpoints (<span dir=ltr><nowiki>https://query.wikidata.org/</nowiki></span> - Main graph or <span dir=ltr><nowiki>https://query-scholarly.wikidata.org/</nowiki></span> - Scholarly graph). For support with migrating use cases, please review the [[d:Special:MyLanguage/Wikidata:Data_access|Data Access]] and [[d:Wikidata:Request_a_query|Request a Query]] pages for details and assistance on alternative access methods.
* [[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.4|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/48|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W48"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 15:55, 24 نَوَمبَر 2025 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29702226 -->
== <span lang="en" dir="ltr">Tech News: 2025-49</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W49"/><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/2025/49|Translations]] are available.
'''Updates for editors'''
* The Wikipedia Year in Review 2025 will be available on December 2 for users of iOS and Android Wikipedia apps, featuring new personalized insights, updated reading highlights, and refreshed designs. Learn more on the review's [[mw:Special:MyLanguage/Wikimedia Apps/Team/Wikipedia Year in Review/Updates|project page]].
* The Growth team is working on improving the text and presentation of the Verification Email sent to new users to make them more welcoming, useful and informative. Some new text have been drafted for A/B testing and you can help by translating them. See [[phab:T396155|Phabricator]].
* [[mw:Special:MyLanguage/Help:Growth/Tools/Add a link|Add a link]] will now be deployed at Japanese, Urdu and Chinese Wikipedias on December 2. Add a link is based on a prediction model that suggests links to be added to articles. While this feature has already been available on most Wikipedias, the prediction model could not support certain languages. A new model has now been developed to handle these languages, and it will be gradually rolled out to other Wikipedias over time. If you would like to know more, please contact [[mw:user:Trizek (WMF)|Trizek (WMF)]].
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:34}} community-submitted {{PLURAL:34|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue where search boxes on some Commons pages showed no results due to switch from SpecialSearch to MediaSearch, has now been fixed. [https://phabricator.wikimedia.org/T399476]
* Two new wikis have been created:
** a {{int:project-localized-name-group-wikipedia}} in [[d:Q36846|Toki Pona]] ([[w:tok:|<code>w:tok:</code>]]) [https://phabricator.wikimedia.org/T404457]
** a {{int:project-localized-name-group-wikiquote}} in [[d:Q33655|Nigerian Pidgin]] ([[q:pcm:|<code>q:pcm:</code>]]) [https://phabricator.wikimedia.org/T408318]
'''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.5|MediaWiki]]
'''In depth'''
* The Wikimedia Foundation is in the early stages of exploring approaches to '''Article guidance'''. The initiative aims to identify interventions that could help new editors easily understand and apply existing Wikipedia practices and policies when creating an article. The project is in the exploration and early experimental design phase. All community members are encouraged to [[mw:Special:MyLanguage/Article guidance|learn more]] about the project, and share their thoughts on [[mw:Special:MyLanguage/Talk:Article guidance|the talk page]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/49|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W49"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:57, 1 ڈیٚسَمبَر 2025 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29732328 -->
== <span lang="en" dir="ltr">Tech News: 2025-50</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W50"/><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/2025/50|Translations]] are available.
'''Weekly highlight'''
* Anybody who wishes to secure their user account can now use [[m:Special:MyLanguage/Help:Two-factor authentication|two-factor authentication]] (2FA). This is available to all registered users of all Wikimedia projects. This is part of the [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Account Security]] initiative. Later, 2FA will be required for all users who can take security- or privacy-sensitive actions.
'''Updates for editors'''
* Following last week's deployments, the [[mw:Special:MyLanguage/Help:Growth/Tools/Add a link|Add a link]] feature, which allows editors to add suggested links during editing, will be available to an additional [[Phab:T410469|33 Wikipedias]] starting on 9 December. This expansion is possible thanks to the new prediction model that now supports all languages, including those that were previously not covered. While the feature has been available on most Wikipedias for some time, this rollout brings us closer to using the improved model everywhere. If you have any questions or would like more details please contact [[mw:user:Trizek (WMF)|Trizek (WMF)]].
* Last week, the [[mw:Special:MyLanguage/Wikimedia Search Platform|Search Platform team]] added [[w:en:Transliteration|transliterated]] as-you-type search suggestions to Georgian wikis. If there are only a few regular search suggestions, then queries in Latin or Cyrillic script [[phab:T127003|are now rewritten into Georgian script]] to look for more matches. For example, searching for either <bdi lang="ka-Latn" dir="ltr">''bedniereba''</bdi> or <bdi lang="ka-Cyrl" dir="ltr">''бедниереба''</bdi> will now suggest the existing article about <bdi lang="ka" dir="ltr">ბედნიერება</bdi> ("happiness"). You can recommend other languages where transliterated suggestions would be useful [[phab:T375215|on Phabricator]] for future development.
* Later this week, a controlled experiment will begin for editors on the 100 largest Wikipedias who are editing a section in the mobile web visual editor. 50% of these editors will notice a new "Edit full page" button that will enable them to expand their editing session to the whole page. This feature is intended to make it easier for people on mobile web to edit any article section, regardless of which section-edit icon they tapped to begin. The experiment will last ~4 weeks. You can find [[phab:T409112|more details]] about the project.
* Later this week, the [[mw:Special:MyLanguage/Readers/Reader Growth|Reader Growth team]] will launch a [[mw:Special:MyLanguage/Readers/Reader Growth/WE3.1.14 Expanded Mobile Sections|mobile web experiment]] to expand all article sections by default (currently they are collapsed by default) and pin the section header the user is currently reading to the top of the page. The experiment will affect 10% of users on Arabic, Chinese, French, Indonesian, and Vietnamese Wikipedias. [https://phabricator.wikimedia.org/T409485]
* The [[mw:Special:MyLanguage/Wikimedia Apps/Team/Wikipedia Year in Review/2025 Year in Review|Wikipedia Year in Review 2025]], a feature in the Wikipedia mobile apps (iOS and Android) that provides users with a personalised summary of their engagement with Wikipedia over the year, is now available on the iOS and Android apps. This edition includes expanded personalised insights, improved reading highlights, new donor messaging, and updated designs. Open the app to view your Year in Review and explore your reading journey from 2025.
* A recent software bug caused edits made with VisualEditor to make unintended changes to wikitext, including removing whitespace and replacing spaces with underscores in wikilinks inside citations. This was partially fixed last week, and further fixes are in progress. Editors who used VisualEditor between November 28 and December 2 should review their edits for unexpected modifications. [https://phabricator.wikimedia.org/T411238]
* [[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 incorrect handling of URLs copied from the address bar of Microsoft Edge users, has been resolved. [https://phabricator.wikimedia.org/T341281]
'''Updates for technical contributors'''
* Starting this week, users of the "{{int:codemirror-beta-feature-title}}" [[Special:Preferences#mw-prefsection-betafeatures|beta feature]] will have [[mw:Special:MyLanguage/Help:Extension:CodeMirror|CodeMirror]] as the editor for Lua, JavaScript, CSS, JSON and Vue content models, instead of [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]]. With this, the [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Linting|linters]] will be upgraded. This is part of a larger effort to eventually replace CodeEditor and provide a consistent code editing experience. [https://phabricator.wikimedia.org/T373711]
* Developers are encouraged to take the [https://wikimediafoundation.limesurvey.net/552643 2025 Developer Satisfaction Survey], which remains open until 5 January 2026. If you build software for the Wikimedia ecosystem and would like to share your experiences or feedback, your participation is greatly appreciated. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/W4WBKO6Q55UWWCCSFWQATKEXBEHP3QNR/]
* There is no new MediaWiki version this week.
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/50|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W50"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17:44, 8 ڈیٚسَمبَر 2025 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29738112 -->
== <span lang="en" dir="ltr">Tech News: 2025-51</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W51"/><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/2025/51|Translations]] are available.
'''Updates for editors'''
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:18}} community-submitted {{PLURAL:18|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, one of the fixes addressed an issue for temporary accounts adding an external URL, which triggered an hCaptcha request in more cases than intended, and did not display the required popup on the first attempt to publish the edit. [https://phabricator.wikimedia.org/T411927]
'''Updates for technical contributors'''
* To improve database and site performance, external links to Wikimedia projects will no longer be stored in the database. This means they will not be searchable in [[{{#special:LinkSearch}}]], will not be checked by the Spam Blacklist or AbuseFilter as new links, and will not be in the <code dir=ltr>externallinks</code> table on database replicas. In the future this may be extended to other highly-linked trusted websites on a per-wiki basis, such as Creative Commons links on Wikimedia Commons. [https://phabricator.wikimedia.org/T405005]
* [[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.7|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/51|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W51"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:02, 15 ڈیٚسَمبَر 2025 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29796010 -->
== <span lang="en" dir="ltr">Tech News: 2025-52</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2025-W52"/><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/2025/52|Translations]] are available.
'''Updates for editors'''
* From January, edit filters [[mw:Special:MyLanguage/Extension:AbuseFilter/Access flags|can be set]] to automatically suppress their details such as rules and list of attempted edits and actions. This will help oversighters use edit filters to prevent doxxing or other suppressible material. [https://phabricator.wikimedia.org/T290324]
* The next issue of Tech News will be sent out on 12 January 2026 because of the end of year holidays. Thank you to all of the translators, and people who submitted content or feedback, this year.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:16}} community-submitted {{PLURAL:16|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the crash that occurred when tapping "First Steps" in the Wikipedia Android Year in Review has now been fixed, and the feature opens as expected. [https://phabricator.wikimedia.org/T411546]
'''Updates for technical contributors'''
* Interface elements such as diffs and categories generated by MediaWiki used to have the attribute <code dir=ltr>data-mw="interface"</code> to distinguish from wiki content. The attribute has been replaced with <code dir=ltr>data-mw-interface=""</code>, to avoid potential conflicts with other <code dir=ltr>data-mw</code> attributes, which are generated by Parsoid. [https://phabricator.wikimedia.org/T409187]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] There is no new MediaWiki version this week or next week.
'''Meetings and events'''
* The [[mw:Wikimedia Hackathon Northwestern Europe 2026|Wikimedia Hackathon Northwestern Europe 2026]] will take place on 13-14 March 2026 in Arnhem, the Netherlands. Applications just opened mid-December and will close in mid-January or earlier if capacity is reached. With space for approximately 100 participants, early application is encouraged.
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2025/52|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2025-W52"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21:44, 22 ڈیٚسَمبَر 2025 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29831856 -->
== <span lang="en" dir="ltr">Tech News: 2026-03</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W03"/><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/03|Translations]] are available.
'''Weekly highlight'''
* The Wikimedia Foundation has shared some guiding questions for the July 2026–June 2027 Annual Plan on [[m:Special:MyLanguage/Wikimedia Foundation Annual Plan/2026-2027/Product & Technology OKRs|Meta]] and ''[[diffblog:2025/12/10/shaping-wikimedia-foundations-2026-2027-annual-goals-key-questions-for-the-wikimedia-movement/|Diff]]''. These focus on global trends, faster and healthier experimentation, better support for newcomers, strengthening editors and advanced users, improving collaboration across projects, and growing and retaining readership. Feedback and ideas are welcome on the [[m:Talk:Wikimedia Foundation Annual Plan/2026-2027|talk page]].
'''Updates for editors'''
* As part of the current work of Community Tech team on the [[m:Special:MyLanguage/Community Wishlist/W372|Multiple watchlists]] project, the display of [[Special:EditWatchlist|EditWatchlist]] will be updated as a first step towards multiple watchlists. Additionally, the pagination on [[Special:Search|Search]] will be updated too, as a part of the work on the [[m:Special:MyLanguage/Community Wishlist/W186|Revamp pagination / page navigation]] wish. [https://phabricator.wikimedia.org/T411596]
* [[m:Special:GlobalWatchlist|The Global Watchlist]] is a MediaWiki [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] that lets you see your watchlists from different wikis on the same page. It was recently updated to look more like the regular [[Special:Watchlist|Watchlist]], such as preparing it for temporary accounts in IP masking (including rerouting user links to contributions pages), making page titles bold, and opening links in edit summaries and tags in new browser tabs. [https://phabricator.wikimedia.org/T398361][https://phabricator.wikimedia.org/T298919][https://phabricator.wikimedia.org/T273526][https://phabricator.wikimedia.org/T286309]
* [[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 issue where global blocks did not have the option to disable sending emails, has now been fixed, and will be available for use in the week of January 13. [https://phabricator.wikimedia.org/T401293]
'''Updates for technical contributors'''
* The [[mw:Special:MyLanguage/VisualEditor/Citation tool|VisualEditor citation tool]] and [[mw:Special:MyLanguage/Help:Reference Previews|Reference Previews]] now support "map" as a reference type. [https://phabricator.wikimedia.org/T411083]
* [[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.10|MediaWiki]]/[[mw:MediaWiki 1.46/wmf.11|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/03|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W03"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:32, 12 جَنؤری 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29907192 -->
== <span lang="en" dir="ltr">Tech News: 2026-04</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W04"/><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/04|Translations]] are available.
'''Updates for editors'''
* The tray shown on [[Special:Diff|Special:Diff]] in mobile view has been redesigned. It is now collapsed by default, and incorporates a link to undo the edit being viewed, making it easier for mobile editors and reviewers to take action while keeping the interface uncluttered. [https://phabricator.wikimedia.org/T402297]
* [[m:Special:GlobalWatchlist|The Global Watchlist]] lets you view your watchlists from multiple wikis on one page. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] continues to improve — it now automatically determines the text direction (ensuring correct display of sites with unusual domain names) and shows detailed descriptions for log actions. Later this week, a new permanent link for page creations and CSS classes for each entry element will be added. [https://phabricator.wikimedia.org/T412505][https://phabricator.wikimedia.org/T287929][https://phabricator.wikimedia.org/T262768][https://phabricator.wikimedia.org/T414135]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:32}} community-submitted {{PLURAL:32|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the previously observed issue in Vector 2022, where anchor link targets were obscured by the sticky header, has now been addressed. [https://phabricator.wikimedia.org/T406114]
'''Updates for technical contributors'''
* As mentioned in the [[m:Special:MyLanguage/Tech/News/2025/44|October 2025 deprecation announcement]], MediaWiki Interfaces team will begin sunsetting all transform endpoints containing a trailing slash from the MediaWiki REST API the week of January 26. Changes are expected to roll out to all wikis on or before January 30th. All API users currently calling them are encouraged to transition to the non-trailing slash versions. Both endpoint variations can be found, compared, and tested using the [https://test.wikipedia.org/wiki/Special:RestSandbox REST Sandbox]. If you have questions or encounter any problems, please file a ticket in Phabricator to the [https://phabricator.wikimedia.org/project/view/6931/ #MW-Interfaces-Team board].
* Interactive reference documentation for the [[mw:Special:MyLanguage/Wikimedia REST API|Wikimedia REST API]] has moved. Requests to API docs previously hosted through [[mw:Special:MyLanguage/RESTBase|RESTBase]] (e.g.: <code dir=ltr>https://en.wikipedia.org/api/rest_v1/</code>) are now redirected to the [[w:en:Special:RestSandbox|REST Sandbox]].
* The [[mw:Special:MyLanguage/Wikidata Platform|WMF Wikidata Platform team]] (WDP) has published its [[d:Special:MyLanguage/Wikidata:Wikidata Platform team/Newsletter|January 2026 newsletter]]. It includes updates on the legacy full-graph endpoint decommissioning, the User-Agent policy change, the monthly Blazegraph migration office hours, and efforts to reduce regressions caused by the legacy endpoint shutdown. As a reminder, you can [[m:Special:MyLanguage/Global message delivery/Targets/WDP team updates|subscribe to the WDP newsletter]]!
* [[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.12|MediaWiki]]
'''Meetings and events'''
* The [[mw:Wikimedia Hackathon Northwestern Europe 2026|Wikimedia Hackathon Northwestern Europe 2026]] will take place on 13-14 March 2026 in Arnhem, the Netherlands. Applications opened mid-December and will close soon or when capacity is reached. It's a two-day, technically oriented hackathon bringing together Wikimedians from the region. Hope to see you there!
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/04|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W04"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:29, 19 جَنؤری 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29943403 -->
== <span lang="en" dir="ltr">Tech News: 2026-05</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W05"/><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/05|Translations]] are available.
'''Updates for editors'''
* Wikimedia Foundation invites comments on [[m:Special:MyLanguage/Product and Technology Advisory Council/Year1 Reflections and Proposed Way Forward 2026 Update|proposed future]] of the [[:m:Special:MyLanguage/Product and Technology Advisory Council|Product and Technology Advisory Council]] until 28 February.
* All users with registered accounts can now use passkeys for [[m:Special:MyLanguage/Help:Two-factor authentication|two-factor authentication]] (2FA). Passkeys are a simple way to log in without using a second device. They verify the user's identity using a fingerprint, face scan, or a PIN code. To set up a passkey, first set up a regular 2FA method. Currently, to log in with a passkey, users must also use a password. Later this quarter, passwordless login will allow users to log in with a single click and a passkey. Users with advanced rights will also be required to have 2FA enabled. This is part of the [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Account Security]] project.
* Unregistered contributors on blocked IPs or blocked IP ranges can now interact on-wiki to appeal a block by creating a temporary account to appeal a block on the user talk page, unless the "prevent this user from editing their own talk page" is enabled. This solves the problem of logged-out users unable to use the default unblock process via user talk page. [https://phabricator.wikimedia.org/T398673]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:20}} community-submitted {{PLURAL:20|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the Two-Factor Authentication (2FA) methods description on the management page has been updated. It is now clearer and easier for users to understand and make use of. [https://phabricator.wikimedia.org/T332385]
'''Updates for technical contributors'''
* A new AbuseFilter variable, <code>account_type</code>, has been added to provide a reliable way to determine the account type being created in the <code>createaccount</code> and <code>autocreateaccount</code> actions. As part of this change, the variable <code>accountname</code> has been renamed to <code>account_name</code>, and <code>accountname</code> is now deprecated. Edit filter managers should update any filters that use hardcoded account type checks or the deprecated variable. [https://phabricator.wikimedia.org/T414049]
* Image thumbnails that are requested in non-standard sizes, and using non-standard methods such as direct requests to <code dir=ltr><nowiki>upload.wikimedia.org/…</nowiki></code> will stop working in the near future. This change is to prevent ongoing external abuse by web-scrapers and bots. Some users with custom CSS/JS, Interface Admins who can fix gadgets and local skins, and Tool-authors, will need to update their code to use standard thumbnail sizes. [[phab:T414805|Details, search-links, and examples of how to fix them, are available in the task]].
* [[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.13|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/05|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W05"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21:17, 26 جَنؤری 2026 (UTC)
<!-- Message sent by User:UOzurumba (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29969530 -->
== <span lang="en" dir="ltr">Tech News: 2026-06</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W06"/><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/06|Translations]] are available.
'''Updates for editors'''
* The "{{int:pageinfo-toolboxlink}}" feature, which gives validating information about a page ([{{fullurl:{{FULLPAGENAME}}|action=info}} example]), now automatically includes a table of contents. If there is a local [[{{ns:8}}:Pageinfo-header]] page created by individual users, it can now be removed. [https://phabricator.wikimedia.org/T363726]
* [[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, VisualEditor previously added bold or italic formatting inside link descriptions, making the wikicode complex. This has now been fixed. [https://phabricator.wikimedia.org/T409669]
'''Updates for technical contributors'''
* There was no XML dump on 20 January. Additionally, from now on, dumps will be generated once per month only. [https://phabricator.wikimedia.org/T414389]
* The MediaWiki Interfaces team removed support for all transform endpoints containing a trailing slash from the [https://www.mediawiki.org/wiki/Special:MyLanguage/API:REST%20API MediaWiki REST API]. All API users currently calling those endpoints are encouraged to transition to the non-trailing slash versions. If you have questions or encounter any problems, please file a ticket in phabricator to the [https://phabricator.wikimedia.org/project/view/6931/ #MW-Interfaces-Team board].
* [[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.14|MediaWiki]]
'''Weekly highlight'''
* Users are reminded that the Wikimedia Foundation has shared some guiding questions for the July 2026–June 2027 Annual Plan on [[m:Special:MyLanguage/Wikimedia Foundation Annual Plan/2026-2027/Product & Technology OKRs|Meta]] and ''[[diffblog:2025/12/10/shaping-wikimedia-foundations-2026-2027-annual-goals-key-questions-for-the-wikimedia-movement/|Diff]]''. These focus on global trends, faster and healthier experimentation, better support for newcomers, strengthening editors and advanced users, improving collaboration across projects, and growing and retaining readership. Feedback and ideas are welcome on the [[m:Talk:Wikimedia Foundation Annual Plan/2026-2027|talk page]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/06|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W06"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17:43, 2 فرؤری 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30000986 -->
== <span lang="en" dir="ltr">Tech News: 2026-07</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W07"/><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/07|Translations]] are available.
'''Updates for editors'''
* [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Wishlist item]] Logged-in contributors who manage large or complex watchlists can now organise and filter watched pages in ways that improve their workflows with the new [[mw:Special:MyLanguage/Help:Watchlist labels|Watchlist labels]] feature. By adding custom labels (for example: pages you created, pages being monitored for vandalism, or discussion pages) users can more quickly identify what needs attention, reduce cognitive load, and respond more efficiently. This improves watchlist usability, especially for highly active editors.
* A new feature available on [[Special:Contributions|Special:Contributions]] shows [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts|temporary accounts]] that are likely operated by the same person, and so makes patrolling less time-consuming. Upon checking contributions of a temporary account, users with access to temporary account IP addresses can now see a view of contributions from the related temporary accounts. The feature looks up all the IPs associated with a given temporary account within the data retention period and shows all the contributions of all temporary accounts that have used these IPs. [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts#February 2026: Improvements to the patroller tooling|Learn more]]. [https://phabricator.wikimedia.org/T415674]
* When editors preview a wikitext edit, the reminder box that they are only seeing a preview (which is shown at the top), now has a grey/neutral background instead of a yellow/warning background. This makes it easier to distinguish preview notes from actual warnings (for example, edit conflicts or problematic redirect targets), which will now be shown in separate warning or error boxes. [https://phabricator.wikimedia.org/T414742]
* The [[m:Special:GlobalWatchlist|Global Watchlist]] lets you view your watchlists from multiple wikis on one page. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] continues to improve — it now properly supports more than one Wikibase site, for example both [[d:|Wikidata]] and [[testwikidata:|testwikidata]]. In addition, issues regarding text direction have been fixed for users who prefer Wikidata or other Wikibase sites in right-to-left (RTL) languages. [https://phabricator.wikimedia.org/T415440][https://phabricator.wikimedia.org/T415458]
* The automatic "magic links" for ISBN, RFC, and PMID numbers have been [[mw:Special:MyLanguage/Help:Magic links|deprecated in wikitext since 2021]] due to inflexibility and difficulties with localization. Several wikis have successfully replaced RFC and PMID magic links with equivalent external links, but a template was often required to replace the functionality of the ISBN magic link. There is now a new [[mw:Special:MyLanguage/Help:Magic words#isbn|built-in parser function]] <code dir=ltr><nowiki>{{#isbn}}</nowiki></code> available to replace the basic functionality of the ISBN magic link. This makes it easier for wikis who wish to migrate off of the deprecated magic link functionality to do so. [https://phabricator.wikimedia.org/T145604]
* Two new wikis have been created:
** a {{int:project-localized-name-group-wikipedia}} in [[d:Q35401|Jju]] ([[w:kaj:|<code>w:kaj:</code>]]) [https://phabricator.wikimedia.org/T413283]
** a {{int:project-localized-name-group-wikipedia}} in [[d:Q1186896|Nawat]] ([[w:ppl:|<code>w:ppl:</code>]]) [https://phabricator.wikimedia.org/T413273]
* [[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]].
'''Updates for technical contributors'''
* A new global user group has been created: [[{{int:grouppage-local-bot}}|{{int:group-local-bot}}]]. It will be used internally by the software to allow community bots to bypass rate limits that are applied to abusive [[w:en:Web scraping|web scrapers]]. Accounts that are approved as bots on at least one Wikimedia wiki will be automatically added to this group. It will not change what user permissions the bot has. [https://phabricator.wikimedia.org/T415588]
* [[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.15|MediaWiki]]
'''Meetings and events'''
* The [[mw:Special:MyLanguage/MediaWiki Users and Developers Conference Spring 2026|MediaWiki Users and Developers Conference, Spring 2026]] will be held March 25–27 in Salt Lake City, USA. This event is organized by and for the third-party MediaWiki community. You can propose sessions and register to attend. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/AZBWVI46SDEB65PGR5J6E4TYOQQEZXM7/]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/07|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W07"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 23:29, 9 فرؤری 2026 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30026671 -->
== <span lang="en" dir="ltr">Tech News: 2026-08</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W08"/><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/08|Translations]] are available.
'''Weekly highlight'''
* The [[mw:Special:MyLanguage/Wikimedia Site Reliability Engineering|SRE Team]] will be performing a cleanup of Wikimedia's [[m:Special:MyLanguage/Etherpad|Etherpad]] instance, the web-based editor for real-time collaborative document editing. All pads will be permanently deleted after 30 April, 2026 – if there are still migration projects in progress at that point the team can revisit the date on a case by case basis. Please create local backups of any content you wish to keep, as deleted data cannot be recovered. This cleanup helps reduce database size and minimize infrastructure footprint. Etherpad will continue to support real-time collaboration, but long-term storage should not be expected. Additional cleanups may occur in the future without prior notice. [https://phabricator.wikimedia.org/T415237]
'''Updates for editors'''
* The Information Retrieval team will be launching an [[mw:Special:MyLanguage/Readers/Information Retrieval/Phase 1|Android mobile app experiment]] that tests hybrid search capabilities which can handle both semantic and keyword queries. The improvement of on-platform search will enable readers to find what they’re looking for directly on Wikipedia more easily. The experiment will first be launched on Greek Wikipedia in late February, followed by English, French, and Portuguese in March. [https://diff.wikimedia.org/2026/01/08/semantic-search-making-it-easier-to-find-the-information-readers-want/ Read more] on Diff blog. [https://www.mediawiki.org/wiki/Readers/Information_Retrieval]
* The Reader Growth team will run [[mw:Special:MyLanguage/Readers/Reader Growth/WE3.10.2 Mobile Table of Contents|an experiment]] for mobile web users, that adds a table of contents and automatically expands all article sections, to learn more about navigation issues they face. The test will be available on Arabic, Chinese, English, French, Indonesian, and Vietnamese Wikipedias.
* Previously, site notices ([[{{ns:8}}:Sitenotice]] and [[{{ns:8}}:Anonnotice]]) would only render on the desktop site. Now, they will render on all platforms. Users on mobile web will now see these notices and be informed. Site administrators should be prepared to test and fix notices on mobile devices to avoid interference with articles. To opt out, interface admins can add <code dir="ltr">#siteNotice { display: none; }</code> to [[{{ns:8}}:Minerva.css]]. [https://phabricator.wikimedia.org/T138572][https://phabricator.wikimedia.org/T416644]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:19}} community-submitted {{PLURAL:19|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue on [[Special:RecentChanges|Special:RecentChanges]] has been fixed. Previously, clicking hide in the active filters caused the "view new changes since…" button to disappear, though it should have remained visible. The button now behaves as expected. [https://phabricator.wikimedia.org/T406339]
'''Updates for technical contributors'''
* New documentation is now available to help editors debug on-site search features. It supports troubleshooting when pages do not appear in results, when ranking seems unexpected, and when you need to inspect what content is being indexed, helping make search behavior easier to understand and analyze. [[mw:Help:CirrusSearch/Debug|Learn more]]. [https://phabricator.wikimedia.org/T411169]
* [[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.16|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/08|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W08"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:16, 16 فرؤری 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30086330 -->
== <span lang="en" dir="ltr">Tech News: 2026-09</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W09"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/09|Translations]] are available.
'''Weekly highlight'''
* [[mw:Special:MyLanguage/Edit check/Reference Check|Reference Check]] has been deployed to English Wikipedia, completing its rollout across all Wikipedias. The feature prompts newcomers to add a citation before publishing new content, helping reduce common citation-related reverts and improve verifiability. In A/B testing, the impact was substantial: newcomers shown Reference Check were approximately 2.2 times more likely to include a reference on desktop and about 17.5 times more likely on mobile web. [https://analytics.wikimedia.org/published/reports/editing/reference_check_ab_test_report_final_2025.html]
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Extension:InterwikiSorting|InterwikiSorting extension]], which allowed for the [[m:Special:MyLanguage/Interwiki sorting order|sorting of interwiki links]], has been undeployed from Wikipedia. As a result, editors who had enabled interwiki link sorting in non-compact mode (full list format) will now see links reordered. The links moving forward will be listed in the alphabetical order of language code. [https://phabricator.wikimedia.org/T253764]
* Later this week, people who are editing a page-section using the mobile visual editor, will notice a new "Edit full page" button. When tapped, you will be able to edit the entire article. This helps when the change you want to make is outside the section you initially opened. [https://phabricator.wikimedia.org/T387175][https://phabricator.wikimedia.org/T409112]
* [[mw:Special:MyLanguage/Readers/Reader Experience|The Reader Experience team]] is inviting editors to assess whether dark mode should still be considered "beta" on their wiki, based on their experience of how well it functions on desktop and mobile. If the feature is deemed mature, editors can update the interface messages in <code dir=ltr>MediaWiki:skin-theme-description</code> and <code dir=ltr>MediaWiki:Vector-night-mode-beta-tag</code> to indicate that dark mode is ready and no longer considered beta.
* The improved [[mw:Wikimedia_Apps/Team/iOS/Activity_Tab|Activity tab]] which displays user-insights is now available to all users of the Wikipedia iOS app (version 7.9.0 and later). Following earlier A/B testing that showed higher account creation among users with access to the feature, it has been rolled out to 100% of users along with some updates. The Activity tab now shows your edited articles in the timeline, offers editing impact insights like contribution counts and article view trends, and customization options to improve in-app experience for users.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:21}} community-submitted {{PLURAL:21|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, a bug that prevented [[mw:Special:MyLanguage/Extension:DiscussionTools|DiscussionTools]] from working on mobile has now been fixed, restoring full functionality. [https://phabricator.wikimedia.org/T415303]
'''Updates for technical contributors'''
* The [[m:Special:GlobalWatchlist|Global Watchlist]] lets you view your watchlists from multiple wikis on one page. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] that makes this possible continues to improve. The latest upgrade is the inclusion of a [[mw:Extension:GlobalWatchlist#hook|new hook]], <code dir=ltr>ext.globalwatchlist.rebuild</code>, which fires after each watchlist rebuild. This allows you to run gadgets and user scripts for the Special page. [https://phabricator.wikimedia.org/T275159]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.17|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/09|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W09"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:03, 23 فرؤری 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30119102 -->
== <span lang="en" dir="ltr">Tech News: 2026-10</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W10"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/10|Translations]] are available.
'''Weekly highlight'''
* Wikipedia 25 [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments|Birthday mode]] is now live on Betawi, Breton, Chinese, Czech, Dutch, English, French, Gorontalo, Indonesian, Italian, Luxembourgish, Madurese, Sicilian, Spanish, Thai, and Vietnamese Wikipedias! This limited-time campaign feature celebrates 25 years of Wikipedia with a birthday mascot, Baby Globe. When turned on, Baby Globe is shown on [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments/article configuration|~2,500 articles]], waiting to be discovered by readers. Communities can choose to turn Birthday mode on by getting consensus from their community and asking an admin to enable the feature and customize it via [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments#Community Configuration Demo|community configuration]] on the local wiki.
'''Updates for editors'''
* [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Sub-referencing]], a new feature to re-use references with different details has been released to Swedish Wikipedia, Polish Wikipedia and [[:phab:T418209|a couple of other wikis]]. You can [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing#test|try the feature]] on these projects or on testwiki and [https://en.wikipedia.beta.wmcloud.org/wiki/Sub-referencing betawiki]. Learnings from the first pilot wiki German Wikipedia have been [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing/Learnings|published in a report]]. Reach out to the Wikimedia Deutschland team if you are [[:m:Talk:WMDE Technical Wishes/Sub-referencing#Pilot wikis|interested in becoming a pilot wiki]].
* [[mw:Special:MyLanguage/Help:Edit check#Paste check|Paste Check]] will become available at all Wikipedias this week. The feature prompts newcomers who are pasting text they are not likely to have written into VisualEditor to consider whether doing so risks a copyright violation. Paste Check [[mw:Special:MyLanguage/Edit check/Tags|tags]] all edits where it is shown for potential review. Local administrators can configure various aspects of the feature via [[{{#special:EditChecks}}]]. [[mw:Special:MyLanguage/Edit check/Paste Check#A/B Experiment|Research]] across 22 wikis found that Paste Check resulted in an 18% decrease in relative reverted-edits compared to the control group. Translators can [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-visualeditor-ve-mw-editcheck&filter=&optional=1&action=translate help to localize] this and related features.
* The [[mw:Special:MyLanguage/Readers/Reader Experience|Reader Experience team]] will be standardizing the user menu in the top right for all mobile users so that it is closer to the desktop experience. Currently this user menu is only visible to users with Advanced Mobile Controls (AMC) turned on. The only change is that a couple buttons previously in the left-side menu will move to the top right for users who do not have AMC turned on. This change is expected to go out March 9 and seeks to improve the user interface. [https://phabricator.wikimedia.org/T413912]
* Starting in the week of March 2, the emails sent out when an email address was added, removed, or changed for an account will switch to a substantially nicer and clearer HTML email from the prior plaintext one. [https://phabricator.wikimedia.org/T410807]
* Notifications are currently limited to 2,000 historic entries per user, and extend back to 2013 when the feature was released. This is going to be changed to only store Notifications from the last 5 years, but up to 10,000 of them. This will help with long-term infrastructure health and help to prevent more recent notifications from disappearing too soon. [https://phabricator.wikimedia.org/T383948]
* The [[m:Special:GlobalWatchlist|Global Watchlist]] which lets you view your watchlists from multiple wikis on a single page continues to see improvements. The latest update improves label usage experience. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] now allows activating the [[mw:Special:MyLanguage/Manual:Language#Fallback languages|language fallback system]] for Wikidata items without labels in the viewed language, and showing those labels in the user’s preferred Wikidata language if no <code dir=ltr>uselang=</code> URL parameter is provided. [https://phabricator.wikimedia.org/T373686][https://phabricator.wikimedia.org/T416111]
* The Wikipedia Android team has started a beta test of [[mw:Special:MyLanguage/Readers/Information Retrieval/Phase 1|hybrid search]] on Greek Wikipedia. Hybrid search capabilities can handle both semantic and keyword queries enabling readers to find what they’re looking for directly on Wikipedia more easily.
* For security reasons, members of certain user groups are [[m:Special:MyLanguage/Mandatory two-factor authentication for users with some extended rights|required to have two-factor authentication]] (2FA) enabled. Currently, 2FA is required to use the group, but not to be a member of it. Given that this model still has some vulnerabilities, the situation will [[phab:T418580|gradually change in March]]. Members of these groups will be unable to disable last 2FA method on their account, and it will be impossible to add users without 2FA to these groups. Users will still be able to add new authentication methods or remove them, as long as at least one method is continuously enabled. In the second half of March, users without 2FA will be removed from these groups. This applies to: CentralNotice administrators, checkusers, interface administrators, suppressors, Wikidata staff, Wikifunctions staff, WMF Office IT and WMF Trust & Safety. Nothing will change for other users. See the linked task for deployment schedule. [https://phabricator.wikimedia.org/T418580]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:27}} community-submitted {{PLURAL:27|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue preventing users from creating an instance in [https://www.wikibase.cloud/ Wikibase.cloud] has now been fixed. [https://phabricator.wikimedia.org/T416807]
'''Updates for technical contributors'''
* To help ensure [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]], over the next month the Wikimedia Foundation will implement global API rate limits across our APIs. In early March, stricter limits will be applied to unidentified requests from outside Toolforge/WMCS and API requests that are made from web browsers. In April, higher limits will be applied to identified traffic. These limits are intentionally set as high as possible to minimise impact on the community. Bots running in Toolforge/WMCS or with the bot user right on any wiki should not be affected for now. However, all developers are advised to follow updated best practices. For more information, see [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]].
* The Wikidata Query Service Linked Data Fragment (LDF) endpoint will be decommissioned in February. This endpoint served limited traffic, which was successfully migrated to other data access methods that were better suited to support existing use cases. The hardware used to support the LDF endpoint will be reallocated to support the ongoing backend migration efforts. [https://phabricator.wikimedia.org/T415696]
* The new Parsoid parser [[mw:Special:MyLanguage/Parsoid/Parser Unification/Updates|continues to be deployed to additional wikis]], improving platform sustainability and making it easier to introduce new reading and editing features. Parsoid is now the default parser on 488 WMF wikis (268 Wikipedias), now covering more than 10% of all Wikipedia page views.
* The process and criteria for [[Special:MyLanguage/Wikimedia Enterprise#Access|requesting exceptional access]] to the high volume feed of the ''Wikimedia Enterprise'' APIs (at no cost for mission-aligned usecases), [[m:Talk:Wikimedia Enterprise#Exceptional access criteria|have now been published]]. This is to provide more thorough and clearer documentation for users.
* [https://techblog.wikimedia.org/ Tech Blog], the blog dedicated to the Wikimedia technical community [https://techblog.wikimedia.org/2026/02/24/a-tech-blog-diff/ will be migrating] to [[diffblog:|Diff]], the community news and event blog. The migration should be complete in April 2026, after which new posts will be accepted for publishing. Readers will be able to access posts – old and new – on the landing page at https://diff.wikimedia.org/techblog.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.18|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/10|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W10"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17:51, 2 مارٕچ 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30137798 -->
== <span lang="en" dir="ltr">Tech News: 2026-11</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W11"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/11|Translations]] are available.
'''Weekly highlight'''
* [[m:Special:MyLanguage/Tech/Server switch|All wikis will be read-only]] for a few minutes on Wednesday, 25 March 2026 at [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. This is for the datacenter server switchover backup tests, [[wikitech:Deployments/Yearly calendar|which happen twice a year]]. During the switchover, all Wikimedia website traffic is shifted from one primary data center to the backup data center to test availability and prevent service disruption even in emergencies.
* Last week, all wikis had 2 hours of read-only time, and extended unavailability for user-scripts and gadgets. This was due to a security incident which has since been resolved. Work is ongoing to prevent re-occurrences. For current information please see the [[m:Steward's noticeboard#Statement on Meta about today's user script security incident|post on the Stewards' noticeboard]] ([[m:Special:MyLanguage/Wikimedia Foundation/Product and Technology/Product Safety and Integrity/March 2026 User Script Incident|translations]]).
'''Updates for editors'''
* Users facing multiple blocks on mobile will now see the reasons for each block separately, instead of a generic message. This helps them understand why they are blocked and what steps they can take to resolve the issue. For example, users affected for using common VPNs (such as [[Special:MyLanguage/Apple iCloud Private Relay|iCloud Private Relay]]) will receive clearer guidance on what they need to do to start editing again. [https://phabricator.wikimedia.org/T357118]
* Later this week, [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|Suggestion Mode]] will become available as a beta feature within the visual editor at all Wikipedias. This feature proactively suggests various types of actions that people can consider taking to improve Wikipedia articles, and learn about related guidelines. The feature is locally configurable, and can also be locally expanded with custom Suggestions. Current settings can be seen at [[Special:EditChecks]] and there are [[mw:Special:MyLanguage/Help:Suggestion mode#For administrators %E2%80%93 local customization|instructions for how administrators can customize]] the links to point to local guidelines. The feature is connected to [[mw:Special:MyLanguage/Help:Edit check|Edit check]] which suggests improvements while someone is writing new content. In the future, the Editing team plans to evaluate the feature's impact with newcomers through a controlled experiment. [https://phabricator.wikimedia.org/T404600]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:23}} community-submitted {{PLURAL:23|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue where the cursor became misaligned during the use of CodeMirror’s syntax highlighting, which makes wikitext and code easier to read, has now been fixed. This problem specifically affected users who defined a font rule in a custom stylesheet while creating a new topic with DiscussionTools. [https://phabricator.wikimedia.org/T418793]
'''Updates for technical contributors'''
* API rate limiting update: To help ensure [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]], global API rate limits will be applied this week to requests without a compliant User-Agent that originate from outside Toolforge/WMCS and to unauthenticated requests made from web browsers. Higher limits will be applied to identified traffic in April. Bots running in Toolforge/WMCS or with the bot user right on any wiki should not be affected for now. However, all developers are advised to follow updated best practices. For more information, see [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]].
* The new GraphQL API has been released. The API was developed as a flexible alternative to select features of the Wikidata Query Service (WDQS), to improve developer experience and foster adaptability, and efficient data access. Try it out and [[d:Wikidata:Wikibase GraphQL#Feedback and development|give feedback]]. You can also [https://greatquestion.co/wikimediadeutschland/GraphQLAPI/apply sign up for usability tests].
* The [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group|PTAC Unsupported Tools Working Group]] continued improvements to [[commons:Special:MyLanguage/Commons:Video2commons#|Video2Commons]] in February, with fixes addressing authentication errors, large-file handling, task queue visibility, and clearer upload behavior. Work is still ongoing in some areas, including changes related to deprecated server-side uploads. Read [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group#February 2026|this update]] to learn more.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.19|MediaWiki]]
'''In depth'''
* The Article Guidance team invites experienced Wikipedia editors from selected [[mw:Special:MyLanguage/Article guidance/Pilot wikis and collaborators#Collaborators|pilot wikis]] and interested contributors from other Wikipedias to fill out this questionnaire which is available in [https://docs.google.com/forms/d/e/1FAIpQLSfmLeVWnxmsCbPoI_UF2jyRcn73WRGWCVPHzerXb4Cz97X_Ag/viewform English], [https://docs.google.com/forms/d/e/1FAIpQLSd6rzr4XXQw8r4024fE3geTPFe13M_6w7Mitj-YJi0sOlWTAw/viewform?usp=header Arabic], [https://docs.google.com/forms/d/e/1FAIpQLSdok3-RfB18lcugYTUMGkpwmqG_8p760Wv4dCXitOXOszjUDw/viewform?usp=header Bengali], [https://docs.google.com/forms/d/e/1FAIpQLSfjTfYp4jEo0akA4B1e-Nfg3QZPCudUjhJzHzzDi6AHyAaMGA/viewform?usp=header Japanese], [https://docs.google.com/forms/d/e/1FAIpQLScteVoI29Aue4xc72dekk-6RYtvmMgQxzMI900UOawrFrSTWg/viewform?usp=header Portuguese], [https://docs.google.com/forms/d/e/1FAIpQLSetdxnYwL3ub2vqA7awCg5hJZPMIYcDPaiTe12rY9h0GYnVlw/viewform?usp=header Persian], and [https://docs.google.com/forms/d/e/1FAIpQLScNvfJF-Ot-4pzA4qAN771_0QDJ4Li19YcUsaTgSKW8Nc7U_Q/viewform?usp=header Turkish]. Your answers will help the team customize guidance for less experienced editors and help them learn community policies and practices while creating an article. Learn more [[mw:Special:MyLanguage/Article guidance|on the project page]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/11|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W11"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:52, 9 مارٕچ 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30213008 -->
== <span lang="en" dir="ltr">Tech News: 2026-12</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W12"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/12|Translations]] are available.
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature, also known as [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror 6]], has been used for wikitext syntax highlighting since November 2024. It will be promoted out of beta by May 2026 in order to bring improvements and new [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Features|features]] to all editors who use the standard syntax highlighter. If you have any questions or concerns about promoting the feature out of beta, [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|please share]]. [https://phabricator.wikimedia.org/T259059]
* Some changes to local user groups are performed by stewards on Meta-Wiki and logged there only. Now, interwiki rights changes will be logged both on Meta-Wiki and the wiki of the target user to make it easier to access a full record of user's rights changes on a local wiki. Past log entries for such changes will be backfilled in the coming weeks. [https://phabricator.wikimedia.org/T6055]
* On wikis using [[m:Special:MyLanguage/Flagged Revisions|Flagged Revisions]], the number of pending changes shown on [[{{#Special:PendingChanges}}]] previously counted pages which were no longer pending review, because they have been removed from the system without being reviewed, e.g. due to being deleted, moved to a different namespace, or due to wiki configuration changes. The count will be correct now. On some wikis the number shown will be much smaller than before. There should be no change to the list of pages itself. [https://phabricator.wikimedia.org/T413016]
* Wikifunctions composition language has been rewritten, resulting in a new version of the language. This change aims to increase service stability by reducing the orchestrator's memory consumption. This rewrite also enables substantial latency reduction, code simplification, and better abstractions, which will open the door to later feature additions. Read more about [[f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-11|the changes]].
* Users can now sort search results alphabetically by page title. The update gives an additional option to finding pages more easily and quickly. Previously, results could be sorted by Edit date, Creation date, or Relevance. To use the new option, open 'Advanced Search' on the search results page and select 'Alphabetically' under 'Sorting Order'. [https://phabricator.wikimedia.org/T403775]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:28}} community-submitted {{PLURAL:28|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the bug that prevented UploadWizard on Wikimedia Commons from importing files from Flickr has now been fixed. [https://phabricator.wikimedia.org/T419263]
'''Updates for technical contributors'''
* A new special page, [[{{#special:LintTemplateErrors}}]], has been created to list transcluded pages that are flagged as containing lint errors to help users discover them easily. The list is sorted by the number of transclusions with errors. For example: [[{{#special:LintTemplateErrors}}/night-mode-unaware-background-color]]. [https://phabricator.wikimedia.org/T170874]
* Users of the [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature have been using [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] instead of [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] for syntax highlighting when editing JavaScript, CSS, JSON, Vue and Lua content pages, for some time now. Along with promoting CodeMirror 6 out of beta, the plan is to replace CodeEditor as the standard editor for these content models by May 2026. [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|Feedback or concerns are welcome]]. [https://phabricator.wikimedia.org/T419332]
* The [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] JavaScript modules will soon be upgraded to CodeMirror 6. Leading up to the upgrade, loading the <code dir=ltr>ext.CodeMirror</code> or <code dir=ltr>ext.CodeMirror.lib</code> modules from gadgets and user scripts was deprecated in July 2025. The use of the <code dir=ltr>ext.CodeMirror.switch</code> hook was also deprecated in March 2025. Contributors can now make their scripts or gadgets compatible with CodeMirror 6. See the [[mw:Special:MyLanguage/Extension:CodeMirror#Gadgets and user scripts|migration guide]] for more information. [https://phabricator.wikimedia.org/T373720]
* The MediaWiki Interfaces team is expanding coverage of REST API module definitions to include [[mw:Special:MyLanguage/API:REST API/Extensions|extension APIs]]. REST API modules are groups of related endpoints that can be independently managed and versioned. Modules now exist for [https://phabricator.wikimedia.org/T414470 GrowthExperiments] and [https://phabricator.wikimedia.org/T419053 Wikifunctions] APIs. As we migrate extension APIs to this structure, documentation will move out of the main MediaWiki OpenAPI spec and REST Sandbox view, and will instead be accessible via module-specific options in the dropdown on the [https://test.wikipedia.org/wiki/Special:RestSandbox REST Sandbox] (i.e., [[{{#Special:RestSandbox}}]], available on all wiki projects).
* The [[mw:Special:MyLanguage/Extension:Scribunto|Scribunto]] extension provides different pieces of information about the wiki where the module is being used via the [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual|mw.site]] library. Starting last week, the library also provides a [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual#mw.site.wikiId|way]] of accessing the [[mw:Special:MyLanguage/Manual:Wiki ID|wiki ID]] that can be used to facilitate cross-wiki module maintenance. [https://phabricator.wikimedia.org/T146616]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.20|MediaWiki]]
'''In depth'''
* The [[m:Special:MyLanguage/Coolest Tool Award|2026 Coolest Tool Award]] celebrating outstanding community tools, is now open for nominations! Nominate your favorite tool using the [https://wikimediafoundation.limesurvey.net/435684?lang=en nomination survey] form by 23 March 2026. For more information on privacy and data handling, please see the [[foundation:Special:MyLanguage/Legal:Coolest_Tool_Award_2026_Survey_Privacy_Statement|survey privacy statement]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/12|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W12"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:35, 16 مارٕچ 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30260505 -->
== <span lang="en" dir="ltr">Tech News: 2026-13</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W13"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/13|Translations]] are available.
'''Weekly highlight'''
* Wikimedia site users can now log in without a password using passkeys. This is a secure method supported by fingerprint, facial recognition, or PIN. With this change, all users who opt for passwordless login will find it easier, faster, and more secure to log in to their accounts using any device. The new passkey login option currently appears as an autofill suggestion in the username field. An additional [[phab:T417120|"Log in with passkey" button]] will soon be available for users who have already registered a passkey. This update will improve security and user experience. The [[c:File:Passwordless_login_screencast.webm|screen recording]] demonstrates the passwordless login process step by step.
* [[m:Special:MyLanguage/Tech/Server switch|All wikis will be read-only]] for a few minutes on Wednesday, 25 March 2026 at [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. This is for the datacenter server switchover backup tests, [[wikitech:Deployments/Yearly calendar|which happen twice a year]]. During the switchover, all Wikimedia website traffic is shifted from one primary data center to the backup data center to test availability and prevent service disruption even in emergencies.
'''Updates for editors'''
* Wikimedia site users can now export their notifications older than 5 years using a [[toolforge:echo-chamber|new Toolforge tool]]. This will ensure that users retain their important notifications and avoid them being lost based on the planned change to delete notifications older than 5 years, as previously announced. [https://phabricator.wikimedia.org/T383948]
* Wikipedia editors in Indonesian, Thai, Turkish, and Simple English now have access to Special:PersonalDashboard. This is an [[mw:Special:MyLanguage/Moderator Tools/Dashboard|early version of an experience]] that introduces newer editors to patrolling workflows, making it easier for them to move from making edits to participating in more advanced moderation work on their project. [https://phabricator.wikimedia.org/T402647]
* The [[Special:Block]] now has two minor interface changes. Administrators can now easily perform indefinite blocks through a dedicated radio button in the expiry section. Also, choosing an indefinite expiry provides a different set of common reasons to select from, which can be changed at: [[MediaWiki:Ipbreason-indef-dropdown]]. [https://phabricator.wikimedia.org/T401823]
* Mobile editors [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#Logged-out|at several wikis]] can now see an improved logged-out edit warning, thanks to the recent updates from the Growth team. These changes released last week are part of ongoing efforts and tests to enhance [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|account creation experience on mobile]] and then increase participation. [https://phabricator.wikimedia.org/T408484]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:36}} community-submitted {{PLURAL:36|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the bug that prevented mobile web users from seeing the block information when affected by multiple blocks has been fixed. They can now see messages of all the blocks currently affecting them when they access Wikipedia.
'''Updates for technical contributors'''
* Images built using Toolforge will soon get the upgraded buildpacks version, bringing support for newer language versions and other upstream improvements and fixes. If you use Toolforge Build Service, review the recent [https://lists.wikimedia.org/hyperkitty/list/cloud-announce@lists.wikimedia.org/thread/EMYTA32EV2V5SQ2JIEOD2CL66YFIZEKV/ cloud-announce email] and update your build configuration as necessary to ensure your tools are compatible. [https://wikitech.wikimedia.org/w/index.php?title=Help:Toolforge/Building_container_images&oldid=2392097#Buildpack_environment_upgrade_process][https://phabricator.wikimedia.org/T380127]
* The [https://api.wikimedia.org/wiki/Main_Page API Portal] documentation wiki will shut down in June 2026. API keys created on the API Portal will continue to work normally. api.wikimedia.org endpoints will be deprecated gradually starting in July 2026. Documentation on the API Portal is moving to [[mw:Wikimedia APIs|mediawiki.org]]. Learn more on the [[wikitech:API Portal/Deprecation|project page]].
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.21|MediaWiki]]
'''In depth'''
* [[m:Special:MyLanguage/WMDE Technical Wishes|WMDE Technical Wishes]] is considering improvements to [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names|automatically generated reference names in VisualEditor]]. Please check out the [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names#Proposed solutions|proposed solutions]] and participate in the [[m:Talk:WMDE Technical Wishes/References/VisualEditor automatic reference names#Request for comment|request for comment]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/13|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W13"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16:50, 23 مارٕچ 2026 (UTC)
<!-- Message sent by User:UOzurumba (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30268305 -->
== <span lang="en" dir="ltr">Tech News: 2026-14</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W14"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/14|Translations]] are available.
'''Weekly highlight'''
* The Beta version of [[abstract:|Abstract Wikipedia]] a new Wikimedia project which is language-independent, was launched last week. The project allows communities to build Wikipedia articles in their native language, which can be readily accessed by other users in their own languages. The wiki is powered by instructions from Wikifunctions and also based on structured content from Wikidata. [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-26|Read more]].
'''Updates for editors'''
* The Growth team is running an A/B test to evaluate a clearer, more user-friendly message that promotes account creation on wikis. Currently when logged-out mobile users begin editing, they see a jarring warning message that can feel abrupt and discouraging. This also presents temporary account editing as the default rather than encouraging account creation. The test is running on ten Wikipedias, including Arabic, French, Spanish and German. [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#2. Improve logged-out warning message (T415160)|Read more]].
* The Wikimedia Apps team is inviting feedback on [[mw:Special:MyLanguage/Wikimedia Apps/Team/Future of Editing on the Mobile Apps|how editing should work on the Wikipedia mobile apps]]. The discussion focuses on improving how users access editing tools when they tap "Edit". This is part of a broader effort to convert readers who develop an interest in editing, to access a more user-friendly pathway to start contributing.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:45}} community-submitted {{PLURAL:45|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where citation fetching from the large newspaper archive [https://www.newspapers.com Newspapers.com] was no longer working, due to a block in [[mw:Special:MyLanguage/Citoid|Citoid]] requests, has now been fixed. [https://phabricator.wikimedia.org/T419903]
'''Updates for technical contributors'''
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.22|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/14|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W14"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:25, 30 مارٕچ 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30329462 -->
== <span lang="en" dir="ltr">Tech News: 2026-15</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W15"/><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/15|Translations]] are available.
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Help:Extension:CampaignEvents|CampaignEvents extension]] now includes a new group goal-setting feature, enabling organizers to set and track event goals such as the number of articles created and participating contributors in real time. Similarly, participants can work toward shared targets and see their collective impact as the event unfolds. The feature is now available on all Wikimedia wikis. Learn more in [[mw:Special:MyLanguage/Help:Extension:CampaignEvents/Registration/Collaborative contributions#Goal setting|the documentation]].
* [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Wishlist item]] The new [[mw:Special:MyLanguage/Help:Watchlist labels|watchlist labels]] feature (announced in [[m:Special:MyLanguage/Tech/News/2026/07|Tech News 2026-07]]) is now available via VisualEditor, the source editor, and the 'watchstar' (or watch link, for skins that don't have a star icon). Previously it was only possible to assign labels via [[Special:EditWatchlist|EditWatchlist]]. In all three places it is a new field following the expiry field.
* [[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 talk pages on mobile with Parsoid are unusable after empty section headers, has now been fixed. [https://phabricator.wikimedia.org/T419171]
'''Updates for technical contributors'''
* The [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|sub-referencing feature]], which lets editors add details to an existing reference without duplicating it, will be gradually rolled out to [[phab:T414094|more wikis]] later this year. Wikis using the [[mw:Special:MyLanguage/Reference Tooltips|Reference Tooltips]] gadget are encouraged to update their version (typically at [[m:MediaWiki:Gadget-ReferenceTooltips.js|MediaWiki:Gadget-ReferenceTooltips.js]] as shown [https://en.wikipedia.org/w/index.php?diff=1344408362 here]) to ensure compatibility. Other reference-related gadgets may also be affected. [https://phabricator.wikimedia.org/T416304]
* All Wikinews editions will be closed and switched to read-only mode on 4 May 2026. Content will remain accessible, but no new edits or articles can be added. This closure was approved by the Board of Trustees of the Wikimedia Foundation following extended discussions. [[m:Wikimedia Foundation Board noticeboard#Board of Trustees Approves Closure of Wikinews|Read more]].
* The [[:mw:Special:MyLanguage/API:Action API|Action API]] has had several formats for requested output. One of them, <bdi lang="zxx" dir="ltr"><code><nowiki>format=php</nowiki></code></bdi>, is being removed soon. Please ensure your scripts or bots use the [[mw:Special:MyLanguage/API:Data formats#Output|JSON format]]. This removal should affect very few scripts and bots. [https://phabricator.wikimedia.org/T118538]
* The [[Special:NamespaceInfo|Special:NamespaceInfo]] page now includes namespace aliases. For example "WP" for the "Project" ("Wikipedia") namespace on the German Wikipedia. [https://phabricator.wikimedia.org/T381455]
* [[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.23|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/15|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W15"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16:18, 6 اپریٖل 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30362761 -->
== <span lang="en" dir="ltr">Tech News: 2026-16</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W16"/><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/16|Translations]] are available.
'''Weekly highlight'''
* Experienced editors are invited to [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Main_Page test] the [[mw:Special:MyLanguage/Article guidance|Article guidance]] feature, designed to help less-experienced editors create well-structured, policy-compliant Wikipedia articles. Testing instructions are [[mw:Special:MyLanguage/Article guidance/Test feature guide|available]]. Also, after reviewing [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Category:Pages_using_article_guidance the outlines], please provide feedback on the [[mw:Talk:Article guidance|project talk page]]. Based on your input, the feature will be refined and transferred to the pilot Wikipedias to translate and adapt. Check out [[c:File:Article Guidance workflow demo - April 2026.webm|the video]] explaining the feature.
'''Updates for editors'''
* On most wikis, all autoconfirmed users can now use [[Special:ChangeContentModel|Special:ChangeContentModel]] page to [[mw:Special:MyLanguage/Help:ChangeContentModel|create new pages with custom content models]], such as mass message lists, making custom page formats more accessible. Check [[Special:ListGroupRights|Special:ListGroupRights]] for the status of your wiki. [https://phabricator.wikimedia.org/T248294]
* The Growth team has launched an [[mw:Special:MyLanguage/Contributors/Account_Creation_Experiments|account creation experiment]] to evaluate whether adding an account creation button to the mobile web header increases new account registrations and encourages more mobile users to contribute to the wikis. The experiment is currently live on Hindi, Indonesian, Bengali, Thai, and Hebrew Wikipedia, and targets 10% of logged-out mobile web users.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:30}} community-submitted {{PLURAL:30|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where VisualEditor could get stuck loading on Windows devices with animations turned off, has now been fixed. [https://phabricator.wikimedia.org/T382856]
'''Updates for technical contributors'''
* Starting later this week, {{int:group-abusefilter}} who have the [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature enabled will have [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] instead of [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] as the editor at [[Special:AbuseFilter|Special:AbuseFilter]]. This is part of the broader effort to make the user experience more consistent across all editors. [https://phabricator.wikimedia.org/T399673][https://phabricator.wikimedia.org/T419332]
* Tools and bots that access the [[mw:Special:MyLanguage/Notifications/API|Notifications API]] (<bdi lang="zxx" dir="ltr"><code><nowiki>action=query&meta=notifications</nowiki></code></bdi>) will need to update their OAuth or BotPassword grants to also include access to private notifications. [https://phabricator.wikimedia.org/T421991]
* Due to a library upgrade, listings on category pages may be displayed out of order starting on Monday, 20th April. A migration script will be run to correct this, and will take hours to days depending on the size of the wiki (up to a week for English Wikipedia). [https://phabricator.wikimedia.org/T422544]
* [[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.24|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/16|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W16"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 15:18, 13 اپریٖل 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30380527 -->
== <span lang="en" dir="ltr">Tech News: 2026-17</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W17"/><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/17|Translations]] are available.
'''Weekly highlight'''
* After two years of development, [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]], also known as [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror 6]], is to be promoted out of beta on Tuesday, April 21. It brings better code and wikitext readability, reduction in typing errors, and other [[mw:Special:MyLanguage/Help:Extension:CodeMirror|benefits]] to all users of the standard syntax highlighter. A huge thank you to volunteer [https://phabricator.wikimedia.org/p/Bhsd/ Bhsd] who developed many of the new features, including [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Code folding|code folding]], [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Autocompletion|autocompletion]], and [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Linting|linting]]. [https://phabricator.wikimedia.org/T259059]
* A major update to the Wikipedia app for iOS is now rolling out, redesigning the interface to align with Apple's latest "Liquid Glass" visual design. [https://apps.apple.com/us/app/wikipedia/id324715238 Download the latest version] and explore the update.
'''Updates for editors'''
* [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4 Reading lists|Reading lists]] is a feature which allows readers to save articles to a list for reading later. This feature is now in beta on Arabic, French, Indonesian, Vietnamese, and Chinese Wikipedias and by default for all new accounts on all Wikipedias.
* An experiment which explores extending [[mw:Special:MyLanguage/Readers/Reader Growth/Mobile page previews|Page Previews to mobile web]] will be launched in the week of April 20 on Arabic, English, French, Italian, Polish, and Vietnamese Wikipedias. Page Previews are pop-ups that display a thumbnail, lead paragraph, and a link to open the full article of a blue link, thereby improving content discovery. The feature is already available on desktop and in the apps. [[m:Special:MyLanguage/List of experiments in Product and Technology#Template|Read more about this experiment and others]].
* On several wikis, logged-in editors who haven't [[mw:Special:MyLanguage/Help:Email confirmation|confirmed their email addresses]] can now see a banner encouraging them to do so. Having the email address confirmed allows a user to restore access to the account if they lose it. [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security#Encouraging users to confirm their email addresses|Learn more]]. [https://phabricator.wikimedia.org/T421366]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:15}} community-submitted {{PLURAL:15|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where editing very large wiki pages in the 2017 wikitext editor caused slow loading, preview and scrolling lag, and performance issues when selecting, cutting, or pasting content, has now been fixed. [https://phabricator.wikimedia.org/T184857]
'''Updates for technical contributors'''
* As part of the promotion of [[mw:Special:MyLanguage/Help:Extension:CodeMirror|CodeMirror]] from a beta feature, all users will use [[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. [https://phabricator.wikimedia.org/T419332]
* The <code>mirrors.wikimedia.org</code> service for Debian and Ubuntu users will sunset and stop working on May 15. The resources for the service will be replaced with new and better options. Some users may need to switch to a different server which should take about a minute. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/LJYRIS4WB66HIRCAO4GIDTXCMDVZRBMA/ You can read more]. [https://phabricator.wikimedia.org/T416707]
* The <bdi lang="zxx" dir="ltr"><code><nowiki>image</nowiki></code></bdi> and <bdi lang="zxx" dir="ltr"><code><nowiki>oldimage</nowiki></code></bdi> table will be removed from [[wikitech:Help:Wiki Replicas|wikireplicas]]. If your tools or queries access <bdi lang="zxx" dir="ltr"><code><nowiki>image</nowiki></code></bdi> or <bdi lang="zxx" dir="ltr"><code><nowiki>oldimage</nowiki></code></bdi> directly, please update them to use the <bdi lang="zxx" dir="ltr"><code><nowiki>file</nowiki></code></bdi> and <bdi lang="zxx" dir="ltr"><code><nowiki>filerevision</nowiki></code></bdi> table before 28 May. [https://phabricator.wikimedia.org/T28741]
* Following the recent implementation of global API rate limits on unidentified traffic, the Wikimedia Foundation will continue efforts to ensure [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]] by applying global limits to identified API traffic beginning the last week of April. 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]] and [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits/FAQ|Frequently Asked Questions]].
* The [[mw:Special:MyLanguage/Attribution API|Attribution API]] is now available as a [[mw:Special:MyLanguage/Wikimedia APIs/Stability policy|beta]]. The API fetches information for crediting Wikimedia articles and media files wherever they are used. Reference documentation is available through the REST Sandbox special page available on all Wikimedia wikis (such as the [https://en.wikipedia.org/w/index.php?api=attribution.v0-beta&title=Special%3ARestSandbox REST sandbox on English Wikipedia]). Share your feedback on the [[mw:Talk:Attribution API|project talk page]].
* There is no new MediaWiki version this week.
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/17|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W17"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 14:59, 20 اپریٖل 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30432763 -->
== <span lang="en" dir="ltr">Tech News: 2026-18</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W18"/><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/18|Translations]] are available.
'''Updates for editors'''
* There is a change in how new users are autoconfirmed that will improve anti-vandalism protection. Currently, users who have had an account for a few days and made a few edits are automatically added to the [[{{int:grouppage-autoconfirmed/{{CONTENTLANGUAGE}}}}|{{int:group-autoconfirmed}}]] group. This configuration tends to be exploited by some vandals, who create accounts and start to use them only after some time. To mitigate this, the configuration will be updated next week so that – for the purpose of becoming autoconfirmed – the account age will be counted from their first edit, instead of registration date. The numeric value of the age threshold will remain the same. This change will be deployed only to wikis which require at least one edit as part of the autoconfirmation conditions. [https://phabricator.wikimedia.org/T418484]
* All Wikipedia users with new accounts and those who activated the "automatically enable most beta features" option in their preference can now use the [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4 Reading lists|reading lists]] beta feature to save articles for later reading. This helps organize reading interests in one place for convenient access.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:30}} community-submitted {{PLURAL:30|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue where infobox images have huge padding in Firefox, has been fixed. [https://phabricator.wikimedia.org/T423676]
'''Updates for technical contributors'''
* As a reminder, the global API rate limits will be applied this week to identified API traffic. This is to help ensure [[mw:MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]]. 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, including the actual rate limits, see [[mw:Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]] and [[mw:Wikimedia APIs/Rate limits/FAQ|Frequently Asked Questions]].
* [[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.26|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/18|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W18"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:05, 27 اپریٖل 2026 (UTC)
<!-- Message sent by User:UOzurumba (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30458046 -->
== <span lang="en" dir="ltr">Tech News: 2026-19</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W19"/><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/19|Translations]] are available.
'''Weekly highlight'''
* The [[mw:Special:MyLanguage/Article guidance|Article guidance]] team invites experienced editors of [[mw:Special:MyLanguage/Article guidance/Pilot wikis and collaborators|pilot Wikipedias]]—Arabic, Bangla, Japanese, Portuguese, Persian, Turkish, Simple English, Spanish, and French—to help translate and adapt [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Category:Pages_using_article_guidance sample outlines]. These outlines will guide editors in creating clear, well-structured, and policy-compliant articles when using [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Special:NewArticle the feature] once it is launched in May 2026. [[mw:Special:MyLanguage/Article guidance#Adapting a sample outline in a Wikipedia|Simple instructions]] on how to translate and adapt the outlines are available.
'''Updates for editors'''
* The [[:m:Special:MyLanguage/Product and Technology Advisory Council|Product and Technology Advisory Council]] has published [[:m:Special:MyLanguage/Product and Technology Advisory Council/May 2026 draft PTAC recommendation for feedback|draft recommendations]] on a model that affiliates can follow when contributing to the technical space. Community members are invited to provide feedback on the recommendation until May 8th [[:m:Talk:Product and Technology Advisory Council/May 2026 draft PTAC recommendation for feedback|on the talk page]].
* The number of available thumbnail size preferences in MediaWiki is being reduced to three standardized options—Small (180px), Regular (250px), and Large (400px), as part of ongoing efforts to improve performance and reduce strain on thumbnail services. As a result, existing preferences will be mapped to the nearest new size (for example, smaller selections like 120px or 150px will render at 180px, while larger ones like 300px or 360px will render at 400px). The preferences interface will soon be updated to reflect these changes, and users who wish to opt out or provide feedback can do so. [https://phabricator.wikimedia.org/T424909]
* From now on, even when a permission expires automatically, users will receive an Echo notification similar to the standard notification for permission changes. There is a difference between this and [[m:Special:MyLanguage/Global reminder bot|Global reminder bot]] in that the latter reminds users a week ''before'' the rights are due to expire, so that they can renew the rights.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:32}} community-submitted {{PLURAL:32|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the problem where the ULS language selector in [[m:Special:Translate|Special:Translate]] would scroll vertically when it shouldn't, has been resolved. Previously, when users opened the "Translate to English" dropdown and typed certain inputs, the dialog would scroll vertically by a few pixels even when there was enough space to display all results. The dropdown no longer shifts unnecessarily when filtering languages. [https://phabricator.wikimedia.org/T358864]
* The [[m:Special:GlobalWatchlist|Global Watchlist]], which lets you view your watchlists from multiple wikis on a single page, continues to improve. For example, watchlists for Wikibase sites such as [[:d:|Wikidata]] now support [[mw:Special:MyLanguage/Extension:EntitySchema|EntitySchema]] elements for better tracking. The Live Updates mode now refreshes the special page every 60 seconds to comply with the updated [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|global API rate limits]] for improved real-time responsiveness. Additionally, a directionality bug that displayed links as "changes 3" instead of "3 changes" in mixed-direction lists has been fixed. [https://phabricator.wikimedia.org/T415450][https://phabricator.wikimedia.org/T424422][https://phabricator.wikimedia.org/T418091]
'''Updates for technical contributors'''
* The second phase of [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|global API rate limits]] has been rolled out to reduce the [[diffblog:2026/03/26/quo-vadis-crawlers-progress-and-whats-next-on-safeguarding-our-infrastructure/|impact of AI crawlers]] and ensure fair, sustainable access to Wikimedia resources, prioritising human and mission-aligned traffic. [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits#Limits|Limits]] have been shifted from per-hour to per-minute, producing smoother traffic patterns and more predictable API load. Community users are not expected to be affected, and no action is required. Early indications show some User-Agent-based requestors are adjusting behaviour, and around 64% of automated API traffic has been identified. Monitoring continues, and Wikimedia Enterprise remains available for commercial support.
* [[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.27|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/19|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W19"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:42, 4 مٔی 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30498077 -->
== <span lang="en" dir="ltr">Tech News: 2026-20</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W20"/><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/20|Translations]] are available.
'''Weekly highlight'''
* Community Tech has published [[m:Special:MyLanguage/Community Wishlist/How to write a good wish|new guidance]] explaining how wishes on Community Wishlist are triaged and prioritized. The documentation is intended to help contributors write stronger proposals by clarifying the factors that influence prioritization decisions. Beyond vote counts, the guidance highlights considerations such as potential impact on the community when determining which wishes move forward.
'''Updates for editors'''
* The Reader Growth team is launching an experiment to test a new [[mw:Special:MyLanguage/Readers/Reader_Growth/Share_Card|Share Card feature]] that allows readers to create visually engaging cards from Wikipedia articles or selected article sections and share them online, with each card linking back to the original article to help expand readership and article discovery. The mobile-only A/B test will be available to a portion of readers on Arabic, Chinese, French, Vietnamese, and English Wikipedia to better understand reading and sharing habits, and is scheduled to begin the week of May 18 and run for four weeks.
* The Android and iOS Wikipedia apps recently released the [[mw:Special:MyLanguage/Wikimedia_Apps/Team/25th_Birthday_Reading_Challenge|25-day reading challenge]] into Beta, as part of efforts to drive reader engagement by encouraging users to complete reading milestones. To track their reading streak during the challenge, App users can add a widget featuring Baby Globe to their home screen. The challenge officially begins May 11.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:17}} community-submitted {{PLURAL:17|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where the global preference for enabling syntax highlighting in wikitext could unexpectedly disable itself after being turned on, has now been fixed. [https://phabricator.wikimedia.org/T425286]
'''Updates for technical contributors'''
* [[File:Octicons-tools.svg|12px|link=|alt=|Advanced item]] The ResourceLoader module <bdi lang="zxx" dir="ltr"><code><nowiki>mediawiki.ui.input</nowiki></code></bdi>, deprecated since [[m:Special:MyLanguage/Tech/News/2023/39|September 2023]], will be removed this week. There is a [[mw:Special:MyLanguage/Codex/Migrating_from_MediaWiki_UI|guide for migrating from MediaWiki UI to Codex]] for any tools that use it. [https://phabricator.wikimedia.org/T420125]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.2|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/20|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W20"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:20, 11 مٔی 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30524429 -->
== <span lang="en" dir="ltr">Tech News: 2026-21</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W21"/><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/21|Translations]] are available.
'''Weekly highlight'''
* The Abstract Wikipedia team has identified five potential pilot wikis to assess their interest in adopting abstract articles on their wikis. The pilots are Malayalam, Bengali, Dagbani, Arabic, and Indonesian Wikipedia. The feedback period will be open until May 22. If your community is interested in becoming a pilot, [[m:Talk:Abstract Wikipedia|let us know on Meta]].
'''Updates for editors'''
* An experiment to show [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|Reading Lists]] to logged-out readers on mobile web will launch on May 18 across German, Spanish, Italian, Portuguese, Polish, Dutch, Turkish, and Urdu Wikipedias, and will run for one month. The effort supports broader goals of helping readers save and organize articles for later reading, while encouraging habits that could lead to future Wikipedia contributions.
* To support a bookmark button in the Reading List beta feature, the "Tools > Action" menu has been updated to display icons, including the watch star indicator that helps editors identify temporarily watched articles. The icons now also match those used on mobile, improving consistency across platforms. The change is currently limited to the actions menu and mainly affects editors with privileged user rights. [https://phabricator.wikimedia.org/T426008]
* [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|Suggestion Mode]] was released as an [[w:en:A/B test|A/B test]] for newcomer editors on the mobile website at [[phab:T421189|~15 Wikipedias]]. The experiment will measure the impact that Suggestion Mode has on the proportion of newcomer mobile web edit sessions that result in constructive (un-reverted) article edits. The experiment will also evaluate the feature's impact on editor retention, and monitor changes in revert and block rates.
* [[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, an issue in the Wikipedia Android app where images could sometimes fail to load after opening a recommended reading list notification, has now been fixed. [https://phabricator.wikimedia.org/T418231]
'''Updates for technical contributors'''
* The [[mw:Special:MyLanguage/Wikidata Platform|Wikidata Platform team]] has published its [[d:Special:MyLanguage/Wikidata:SPARQL query service/WDQS backend update/Backend Replacement|backend replacement recommendation]] and accompanying [[wikitech:Wikidata Query Service/WDQS Architecture re-design|technical architecture]] for the migration of the Wikidata Query Service (WDQS) away from Blazegraph. Feedback is invited until May 25th 2026, especially on potential gaps and impacts on advanced use cases. Wikidata community members and WDQS users are also encouraged to help identify high-impact tools and workflows that may need attention on [[d:Wikidata:SPARQL query service/WDQS backend update/High-Impact Use Cases|this page]]. Feedback can be shared on the [[d:Wikidata talk:SPARQL query service/WDQS backend update|Migration talk page]] or during the [[d:Special:MyLanguage/Wikidata:Blazegraph Migration Office Hours|next office hour]]. See the [[d:Special:MyLanguage/Wikidata:Wikidata Platform team/Newsletter|WDP team newsletter]] for more details.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.3|MediaWiki]]
'''In depth'''
* On English, French, Japanese, and a few other Wikipedias, there was a [[diffblog:2025/09/02/better-detecting-bots-and-replacing-our-captcha/|trial of hCaptcha]], a third-party bot detection service. The trial showed that hCaptcha effectively detects and deters some bad-faith automated activity, on its own and by giving [[w:en:Wikipedia:Village pump (technical)/Archive 225#Introducing SuggestedInvestigations|checkusers and stewards]] signals to look into. Because the results were positive, hCaptcha will be rolled out across all wikis over the next few weeks. [[mw:Special:MyLanguage/Product Safety and Integrity/Anti-abuse signals/hCaptcha|See the hCaptcha project page]] for technical information about the implementation and privacy protections. [[diffblog:2026/05/04/better-detecting-bots-and-replacing-our-captcha-part-2/|Learn more]].
* The latest Community Tech update is now available, with progress across several Community Wishlist initiatives, including Reading Lists expansion from the mobile app to the website, new language support for "Who Wrote That" and the Personal Dashboard, improvements to 3D rendering and Charts, and upcoming work on talk page sorting, audio playback, and editing workflows. The update also shares current priorities, wishlist status trends, and opportunities for community feedback on future focus areas and the Wikimedia Foundation’s 2026–2027 Annual Plan. [[m:Special:MyLanguage/Community Wishlist/Updates#May 13, 2026: Latest updates from the Community Tech team|Read the full newsletter for details]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/21|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W21"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:21, 18 مٔی 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30539262 -->
== <span lang="en" dir="ltr">Tech News: 2026-22</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W22"/><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/22|Translations]] are available.
'''Weekly highlight'''
* Following a [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#LOWM|successful account creation experiment]], an improved logged-out edit warning message will be deployed to all Wikimedia wikis in the first week of June. The change will only affect logged-out users on mobile web who open an editing session. The updated experience is designed to encourage account creation more clearly, while still allowing users to edit with temporary accounts. Results from the experiment showed a significant increase in account creation, with a 27% relative lift among users shown the updated message. As expected, as more people funnel into account creation, temporary accounts decreased by a relative 16%. The experiment did not show any significant changes in constructive edit rates or other monitored contributor metrics. [https://phabricator.wikimedia.org/T424595]
'''Updates for editors'''
* 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. Members of these groups will be unable to disable the 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 next few weeks, users without 2FA will be removed from these groups. Notably, this applies to bureaucrats. See the linked tasks for deployment schedules. [https://phabricator.wikimedia.org/T423119][https://phabricator.wikimedia.org/T423120]
* [[m:Special:MyLanguage/WMDE Technical Wishes|WMDE Technical Wishes]] will run an [[w:en:A/B testing|A/B test]] on [[:phab:T415904|10 wikis]], testing [[m:WMDE Technical Wishes/References/Reference Previews|potential improvements for Reference Previews]]. The experiment will run for ~2 weeks at the end of May / beginning of June and will affect 10% of desktop readers on the participating wikis.
* After two successful experiments, the Reader Growth team is rolling out an [[mw:Special:MyLanguage/Readers/Reader Growth/Image Browsing|Image Browsing]] beta feature for all Wikipedias on mobile on May 25. This means that anyone who has all beta features on by default will start to see this feature, and others can check the box to turn it on in their preferences. The beta feature will include a carousel of all an article's images at the top of the article, with controls for editors to [[mw:Readers/Reader_Growth/Image_Browsing#Phase_2.1_beta_feature|exclude images from the article's carousel or to exclude an article from the feature entirely]].
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:30}} community-submitted {{PLURAL:30|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, three dimensional STL files were being rendered incorrectly by the media viewer 3D extension which is now fixed. [https://phabricator.wikimedia.org/T416723]
'''Updates for technical contributors'''
* The legacy CSS classes <bdi lang="zxx" dir="ltr"><code><nowiki>tleft</nowiki></code></bdi> and <bdi lang="zxx" dir="ltr"><code><nowiki>tright</nowiki></code></bdi> have been replaced with <bdi lang="zxx" dir="ltr"><code><nowiki>floatleft</nowiki></code></bdi> and <bdi lang="zxx" dir="ltr"><code><nowiki>floatright</nowiki></code></bdi> as the former do not work consistently across all MediaWiki platforms, notably mobile web and mobile apps. Projects relying on these classes are encouraged to review related usage and plan for migration. Please note that <bdi lang="zxx" dir="ltr"><code><nowiki>floatleft</nowiki></code></bdi> and <bdi lang="zxx" dir="ltr"><code><nowiki>floatright</nowiki></code></bdi> may also be deprecated in future, although there are currently no plans to do so. [[phab:T426452|Read more]].
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.4|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/22|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W22"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21:51, 25 مٔی 2026 (UTC)
<!-- Message sent by User:Quiddity (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30584502 -->
== <span lang="en" dir="ltr">Tech News: 2026-23</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W23"/><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/23|Translations]] are available.
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Readers/Reader Experience|Reader Experience team]] is conducting an experiment to show the [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|reading lists]] feature, which is still in development, to logged-out mobile readers to test whether it encourages account creation at a higher rate compared to the watchstar button. The [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists#Experiment timeline|experiment]] was launched on May 18th on German, Spanish, Italian, Portuguese, Polish, Dutch, Turkish, and Urdu wikis, and it will run for a month.
* The Wikimedia Apps team released [[mw:Special:MyLanguage/Wikimedia Apps/Team/Explore Feed Refresh/Phase 1|Phase 1]] of the redesigned Home Feed to the Android Beta app. The new Home Feed includes a refreshed "Community" tab and a personalized "For You" tab featuring daily updated reading recommendations. The redesign is part of a broader effort to improve content discovery and create more engaging learning experiences in the Wikipedia apps.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:18}} community-submitted {{PLURAL:18|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where images could fail to load for some suggested edits on [[w:Special:Homepage|Special:Homepage]], leaving the thumbnail stuck in a loading state, has now been fixed. [https://phabricator.wikimedia.org/T424048]
'''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.47/wmf.5|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/23|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W23"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21:08, 1 جوٗن 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30613639 -->
== <span lang="en" dir="ltr">Tech News: 2026-24</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W24"/><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/24|Translations]] are available.
'''Weekly highlight'''
* Wikimedia Enterprise has increased the free usage limits for its API offerings. The monthly request limit for the On-demand API has increased from 5,000 to 50,000 requests, while the Snapshot API limit has increased from 15 to 30 requests per month. In addition, Structured Contents snapshots are now available for free accounts. These changes expand access to Wikimedia Enterprise data for developers, researchers, and organizations using Wikimedia content. [https://enterprise.wikimedia.com/blog/enhanced-free-api]
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Wikimedia_Apps/Team/Explore Feed Refresh/Phase 1|refreshed Explore Feed]], now called the Home Feed, is rolling out to 50% of users of the Wikipedia Android app. The Home Feed helps readers discover relevant content through two new tabs: ''Community'' and ''For You''. The Community tab provides a scrollable feed of curated content and updates from the broader Wikimedia community and movement, while the ''For You'' tab offers a full-screen, swipeable experience that shows content tailored to a user's interests. The redesign is part of a broader effort to improve discovery and enhance the learning experience in the Wikipedia app.
* The [[mw:Special:MyLanguage/Wikimedia Apps/Team/iOS/"Which came first?" Game|Which came first?]] daily trivia game is now available in the beta version of the Wikipedia iOS app in English, German, French, Portuguese, Russian, Spanish, Arabic, Chinese, and Turkish. The game uses historical events from Wikipedia's "On This Day" content and challenges readers to guess which of two events happened first. The game was previously released on Android. Communities interested in making the game available in their languages can [[mw:Special:MyLanguage/Wikimedia_Apps/Team/Games#Game availability by language|read the instructions and requirements]].
* [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Sub-referencing]], a new MediaWiki feature that allows editors to reuse references with different details, will begin rolling out to Wikimedia wikis following a successful pilot phase. Deployment will start on 8 June for most [[wikitech:Deployments/Train#Wednesday|Group 1 wikis]] and French Wikipedia, with additional Wikipedia language editions receiving the feature over the coming months. Communities are encouraged to prepare by checking for [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-cite&language=en&action_source=search&filter=%21translated&optional=1&action=translate untranslated Cite extension messages] in their language and reviewing any use of [[mw:Special:MyLanguage/Reference Tooltips|Reference Tooltips]], which may require [[:phab:T416304#11668731|updates]] to support the new functionality. Wikis using [[mw:Special:MyLanguage/Help:Reference Previews|Reference Previews]] do not need to take any action. Communities may also wish to create the ''cite-tracking-category-ref-details'' [[Special:TrackingCategories|tracking category]] as a hidden category using <code><nowiki>__HIDDENCAT__</nowiki></code> (or a dedicated template), and connect it to the corresponding Wikidata item [[d:Q129764848]]. [https://phabricator.wikimedia.org/T425662]
* The [[mw:Special:MyLanguage/Readers/Reader Growth/Mobile page previews#Experimentation|Page Previews experiment]] on mobile web has concluded. The team decided not to roll out the feature after the results showed no statistically significant impact on reader retention, as the primary success metric was retention improvement. Page Previews, which are already available on desktop and in the apps, display a thumbnail, lead paragraph, and link to the full article when readers tap a blue link. The experiment tested this experience on mobile web across six Wikipedias.
* The [[mw:Special:MyLanguage/Codex/Design/Icons|user interface icon library]] will be [[phab:T399175|updated later this week or next week]]. Most of the ~300 icons have been slightly refined and ~30 new icons have been added. These changes improve the icons to make them more consistent and comprehensible, and provide more visual balance when they are used in groups.
* The [[mw:Special:MyLanguage/Universal Language Selector|Universal Language Selector]] (ULS) interface in MediaWiki, which helps users select content in other languages, has been updated. The new version improves speed and accessibility, and users of Wikimedia projects can now pin languages for quicker language switching. The deployment to Wikimedia sites will happen gradually in the coming weeks. You can test it now as a beta feature by selecting [[Special:Preferences#mw-prefsection-betafeatures|beta features]] in your profile preferences and share your feedback on [[mw:Special:MyLanguage/Universal Language Selector/New ULS|the project page]].
* [[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, an issue where the Pageviews Analysis dashboard on pageviews.wmcloud.org stopped updating graph data in May 2026, affecting all users, has been fixed. [https://phabricator.wikimedia.org/T427171]
'''Updates for technical contributors'''
* The function signature for <bdi lang="zxx" dir="ltr"><code><nowiki>mw.util.addPortletLink()</nowiki></code></bdi> has been simplified. Developers can now pass a configuration object instead of a list of positional parameters when creating portlet links. The previous function signature remains supported for backwards compatibility. For example, instead of: <bdi lang="zxx" dir="ltr"><code><nowiki>mw.util.addPortletLink('p-cactions', '#', 'Stub', 'ca-stubtag', 'Add a stub tag to this page');</nowiki></code></bdi> use <bdi lang="zxx" dir="ltr"><code><nowiki>mw.util.addPortletLink('p-cactions', { href: '#', text: 'Stub', id: 'ca-stubtag', tooltip: 'Add a stub tag to this page' });</nowiki></code></bdi>. Script maintainers are encouraged to review existing uses of <bdi lang="zxx" dir="ltr"><code><nowiki>addPortletLink()</nowiki></code></bdi> and update them where appropriate. This change will be available on all wikis from 11 June. Thanks to community volunteer Gerges for contributing this improvement. [https://phabricator.wikimedia.org/T427945]
* '''Community Wishlist discussion''': Product & Technology [[m:Special:MyLanguage/Community Wishlist/Updates#May 20, 2026: Community Tech becomes a program|introduced changes]] meant to increase the number and complexity of wishes fulfilled, including the disbanding of the Community Tech team. They are [[m:Special:MyLanguage/Community Wishlist/Updates|engaging in discussions]] about a [[m:Talk:Community Wishlist#Proposed direction for Wishlist|proposed direction for the wishlist]] from community members. Includes ways to structure annual voting, better tracking of wishes, removing focus areas, and [[m:Special:MyLanguage/Community Wishlist/Updates|staffing updates]].
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.6|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/24|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W24"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21:29, 8 جوٗن 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30650573 -->
== <span lang="en" dir="ltr">Tech News: 2026-25</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W25"/><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/25|Translations]] are available.
'''Weekly highlight'''
* The [[mw:Special:MyLanguage/Readers/Reader Growth|Reader Growth team]] has launched an [[mw:Special:MyLanguage/Readers/Reader Growth/Image Browsing|Image Browsing]] beta feature on the mobile web version of all Wikipedias. The feature shows an image carousel at the top of articles with 3 or more images. Editors can configure this feature with the following controls: to hide a specific image from a page, either use <code>class=notpageimage</code> excluding it from thumbnail previews, or <code>class=noviewer</code> excluding it from MediaViewer. The carousel can also be disabled from a page entirely, with the magic word <code><nowiki>__NOMEDIAVIEWERCAROUSEL__</nowiki></code>. To submit feedback or flag bugs, please visit the [[mw:Talk:Readers/Reader Growth/Image Browsing|project page]].
* [[mw:Special:MyLanguage/Help:Tables#class="wikitable"|Wikitables]] can now be [[mw:Special:MyLanguage/Help:Sortable tables#Forcing the initial sort direction|sorted in descending order]] on the first click by adding <code dir=ltr>data-sort-order="desc"</code> to the header cell. Previously, by default, clicking a column header for the first time sorts it in ascending order. This addition to a Wikitable gives it more control and flexibility, while the default behavior for subsequent clicks remains unchanged. [https://phabricator.wikimedia.org/T398416]
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Article guidance|Article guidance]] feature is currently being tested with some editors creating new articles on the Simple English, French, and Turkish Wikipedias. The experiment will soon begin on the Arabic and Bangla Wikipedias as well. [[w:simple:Special:NewArticle|This feature]] gives editors community-curated guidance to help them create articles that follow community standards. Experienced editors can continue creating or adapting outlines for specific article types that are commonly created by less experienced contributors. The outlines guide less experienced editors in creating high-quality articles. A quick guide to markups used in outlines can be found on [[mw:Special:MyLanguage/Article guidance/Test feature guide#Markups in outlines|this page]]. [[w:simple:Wikipedia:Article Guidance|Example outlines]] that can be adapted and instructions for how to adapt them are on [[mw:Special:MyLanguage/Article guidance#Adapting a sample outline in a Wikipedia|this section]] of the project page.
* Wikis that wish to replace the "indefinitely" button in Special:Block for temporary accounts (for example, wikis that block temporary users only until account expiration) will be able to do so by creating [[MediaWiki:ipb-indefinite-expiry-temporary-account]] with the block duration they want. [https://phabricator.wikimedia.org/T427125]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:41}} community-submitted {{PLURAL:41|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]].
'''Updates for technical contributors'''
* By the end of June, a valid user-agent string will be required for automated dumps downloads from the dumps.wikimedia.org website. Automated requests that provide a generic or empty user-agent will be blocked. This [[phab:T400119|extends enforcement]] of the long standing [[foundation:Special:MyLanguage/Policy:Wikimedia Foundation User-Agent Policy|user-agent policy]]. Access to dumps through Wikimedia Cloud Services will not change.
* The roll out of global [[mw:Wikimedia APIs/Rate limits|API rate limits]] is now complete, with limits enforced across all APIs and at the documented levels for all groups. Bots running in Toolforge/WMCS or with the bot user right on any wiki remain exempt. All bots should continue to follow the documented best practices to avoid being rate limited.
* The [https://api.wikimedia.org/wiki/Main_Page API Portal wiki] will be read only starting this week (June 15-18). The following week (June 22-25), all API Portal wiki URLs will redirect to [[mw:Wikimedia APIs|Wikimedia APIs on 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.47/wmf.7|MediaWiki]]
'''Meetings and events'''
* On June 17th at 6pm UTC the WMF will be holding Discord call focused on a code review. We've heard through the [[mw:Special:MyLanguage/Developer Satisfaction Survey/2026|Developer Satisfaction Survey]] that volunteers are struggling with code review and we'd like to discuss these experiences with the goal of surfacing workable solutions. You can join the call [https://discord.gg/wikipedia?event=1514727511102062664 via the Wikimedia Community Discord server].
* The [[m:Special:MyLanguage/Conferencia Wikimedia de América Latina 2026|Latin American Wikimedia Conference]] will host a regional hackathon that will bring together the Wikimedia movement’s technical community including developers, system administrators, data scientists, and users with extended rights. Interested technical contributors can [https://docs.google.com/forms/d/e/1FAIpQLSf4osJzTHBJjQbYJk7TMVEJjTEQv7IgtsUDfP-o-qTgeRQQxw/viewform apply for a scholarship] to participate until June 21 at midnight (Bolivia time, UTC-4).
* Sign up for Wikimania Team Challenges to join this special event. The Team challenges will take place online and in person from July 21 to 22, before Wikimania conference. Everyone is welcome, regardless of skills or Wikimania registration. Teams will work on 10 important challenges supporting the Wikimedia community. For details, visit [[wmania:Special:MyLanguage/2026:Team challenges|the Team Challenges page]] and [https://wikimedia.eventyay.com/wm/teamchallenges/ register there]. Registration closes on June 20th at 11pm UTC.
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/25|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W25"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16:48, 15 جوٗن 2026 (UTC)
<!-- Message sent by User:UOzurumba (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30689604 -->
== <span lang="en" dir="ltr">Tech News: 2026-26</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W26"/><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/26|Translations]] are available.
'''Weekly highlight'''
* [[mw:Special:MyLanguage/Growth/Feature summary|Growth features]] are [[phab:T418115|now available at Wikidata]]. This update enables access to Mentorship ([[mw:Special:MyLanguage/Help:Growth/Mentorship|if configured]]), Impact module, the Help Panel, and a simplified Newcomer Homepage (without Suggested Edits). Wikidata administrators are still configuring the features through Community Configuration.
'''Updates for editors'''
* The special page [[{{#special:RangeCalculator}}]] has been created. It allows users to find an IP range without needing to rely on external tools. Until now, this tool was only available to CheckUsers. [https://phabricator.wikimedia.org/T268429]
* [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Sub-referencing]] is a new MediaWiki feature that allows editors to reuse references with different details. It will be deployed to most small and medium-sized Wikipedia language versions on June 23. The [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing#deployment|FAQ]] lists possible actions to take on your wiki to support the deployment. Check the [[:phab:T414094|rollout plan]] for the next deployment steps. [https://phabricator.wikimedia.org/T428902]
* Starting next week, users will get a notification when they are blocked or unblocked from editing, or if this block changes. [https://phabricator.wikimedia.org/T100974]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:32}} community-submitted {{PLURAL:32|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]].
'''Updates for technical contributors'''
* Starting next week, abuse filters that are set to "require CAPTCHA verification" will begin to also affect users with the <code>skipcaptcha</code> right, which includes most autoconfirmed users. Bots are exempted. This change only affects edits that trigger an abuse filter. The <code>skipcaptcha</code> right will continue to exempt users from having to solve CAPTCHAs in the ordinary course of using the wikis. [https://phabricator.wikimedia.org/T402595]
* Reference documentation for the [[wikitech:Machine_Learning/LiftWing/API|Lift Wing API]] has moved from the API Portal to the interactive [https://wikitech.wikimedia.org/w/index.php?api=lift-wing&title=Special%3ARestSandbox REST Sandbox].
* The API Portal wiki is now closed. For API documentation, see [[mw:Special:MyLanguage/Wikimedia_APIs|Wikimedia APIs on mediawiki.org]]. All API Portal wiki URLs (https://api.wikimedia.org/wiki/) will redirect to the mediawiki.org page starting June 22. [https://phabricator.wikimedia.org/T427537]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.8|MediaWiki]]
'''Meetings and events'''
* Join an online call on 25 June at 2:30pm UTC to meet the current Wikimedia interns for [[mw:Google_Summer_of_Code/2026|Google Summer of Code]] and [[mw:Outreachy/Round_32|Outreachy]]. Interns will provide an overview of their projects and a brief demo of their work so far. Attendees are encouraged to [[mw:event:Google_Summer_of_Code/Summer_2026_June_Internship_open_session|share ideas and connections in their community]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/26|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W26"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 13:04, 23 جوٗن 2026 (UTC)
<!-- Message sent by User:Trizek (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30722494 -->
== <span lang="en" dir="ltr">Tech News: 2026-27</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W27"/><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/27|Translations]] are available.
'''Updates for editors'''
* As part of the [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|Account Creation Experiments]], the Growth team tested adding a user account icon in the mobile web header for logged-out users, providing direct access to "Create account" and "Log in" actions. The experiment increased account creation by about 20% without negatively affecting edit quality or constructive edit rates. The feature will now be rolled out to all Wikimedia Foundation wikis on mobile web in the first week of July. [https://phabricator.wikimedia.org/T428220]
* After a [[phab:T426248|successful experiment]], logged-in users who did not [[mw:Special:MyLanguage/Help:Email_confirmation|confirm their email address]] when their account was created see a new banner asking them to complete that process. This helps reduce the risk that users get locked out of their account, and makes account email addresses overall more reliable. This is part of the [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Account Security]] project. [https://phabricator.wikimedia.org/T428292]
* An update to [[Special:Search|Search]] is refining how the <bdi lang="zxx" dir="ltr"><code><nowiki>-prefix:</nowiki></code></bdi> behaves when used to exclude results. Previously, using <bdi lang="zxx" dir="ltr"><code><nowiki>-prefix:</nowiki></code></bdi> with negation could unintentionally broaden search results by adding the namespaces included in the search scope, leading to confusing behavior for users expecting a straightforward exclusion filter. With the update, <bdi lang="zxx" dir="ltr"><code><nowiki>-prefix:</nowiki></code></bdi> will now strictly exclude matching page titles as intended and may display a warning if the relevant namespace has not been explicitly selected. The behavior of <bdi lang="zxx" dir="ltr"><code><nowiki>prefix:</nowiki></code></bdi> without negation however remains unchanged. [https://phabricator.wikimedia.org/T427443]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:33}} community-submitted {{PLURAL:33|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where reviewers using the Page Curation toolbar were not automatically subscribed to talk page discussions they started has now been fixed. Reviewers will now receive notifications when someone replies to those discussions. [https://phabricator.wikimedia.org/T329346]
'''Updates for technical contributors'''
* Starting June 29th, automated downloads from the dumps.wikimedia.org website will be subject to the [[Foundation:Special:MyLanguage/Policy:Wikimedia Foundation User-Agent Policy|user-agent policy]]. Automated requests that provide a generic or empty user-agent will be blocked. Access to dumps through Wikimedia Cloud Services remains unaffected. This is a follow up to the announcement made in the [[m:Special:MyLanguage/Tech/News/2026/25|2026/25 issue of Tech News]].
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.9|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/27|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W27"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 11:47, 29 جوٗن 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30744833 -->
== <span lang="en" dir="ltr">Tech News: 2026-28</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W28"/><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/28|Translations]] are available.
'''Updates for editors'''
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:34}} community-submitted {{PLURAL:34|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where the search bar results on Wikidata, showed English results instead of using the correct language fallback for users of language variants, has now been fixed. Search suggestions will now follow the expected language fallback chain. [https://phabricator.wikimedia.org/T429769]
'''Updates for technical contributors'''
* In preparation for [[m:Special:MyLanguage/Event:Celebrate Women|Celebrate Women campaign]] planned for March 2027, the Wikimedia Foundation’s [[m:Special:MyLanguage/Wikimedia Foundation/Advancement/Community Growth/Content Enablement|Content Enablement team]] has launched a 22-question survey to better understand technical contributions by women+ (anyone who identifies as a woman) across Wikimedia projects. The survey takes approximately 15–20 minutes to complete and will remain open until 20 July 2026. The [[m:Special:MyLanguage/Celebrate Women/Technical contributions survey|questions]] are also available on-wiki for review in advance.
* The [[mw:Special:MyLanguage/Extension:Score|Score extension]] now supports rendering music scores as SVG images in addition to PNG, addressing a long-standing [[:phab:T49578|feature request]] and resolving historical image quality issues. Both formats are now provided to clients, with PNG in the <bdi lang="zxx" dir="ltr"><code><nowiki>src</nowiki></code></bdi> attribute and SVG in the <bdi lang="zxx" dir="ltr"><code><nowiki>srcset</nowiki></code></bdi> attribute.
* The new [[wikitech:Parsoid|Parsoid]] parser [[mw:Special:MyLanguage/Parsoid/Parser_Unification/Updates|continues to be deployed to additional wikis]], making it easier to introduce new reading and editing features. It was enabled on French Wikipedia, bringing total progress to covering 78.9% of Wikipedia page views. Rollout to English Wikipedia desktop will progress through this week.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.10|MediaWiki]]
'''In depth'''
* The Wikimedia Hackathon 2026 [[diffblog:2026/06/29/wikimedia-hackathon-2026-building-collaborating-and-shaping-the-future-together/|recap blog post]] is now live. It highlights the projects, sessions, and social activities from this year’s event, and shares initial plans for the 2027 Wikimedia Hackathon.
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/28|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W28"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 13:56, 6 جُلَے 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30773578 -->
== <span lang="en" dir="ltr">Tech News: 2026-29</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W29"/><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/29|Translations]] are available.
'''Updates for editors'''
* [[mw:Special:MyLanguage/Growth/Revise_Tone|Revise Tone]] helps newcomers identify passages in Wikipedia articles that may contain non-encyclopedic language and encourages them to consider revising the tone. The feature was [[w:en:A/B_testing|A/B tested]] on the Arabic, English, French, and Portuguese Wikipedias, where newcomer task completion rates [[mw:Special:MyLanguage/Growth/Revise_Tone#Experiment_Results|increased by 38.7%]] compared to the default Copyedit task, with no decrease in edit quality. The test ended on July 9, and the feature is now available for everyone on these wikis, configurable via Community Configuration. [[phab:T426364|The plan]] is to release Revise Tone to more wikis.
* The community configuration that allows [[mw:Special:MyLanguage/Help:Growth/Mentorship#Automated mentor list cleanup|automatic removal of inactive mentors]] based on configurable criteria will be enabled on Thursday 16, [[mw:Special:MyLanguage/Growth/Deployment|on some wikis]] to keep mentor lists up to date. Mentors are experienced contributors who opt in to help new users on-wiki through the [[mw:Special:MyLanguage/Growth/Feature summary|Growth Features]]. Administrators can now prepare the settings via [[w:Special:CommunityConfiguration/Mentorship|Special:CommunityConfiguration/Mentorship]]; they will take effect starting Thursday.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:38}} community-submitted {{PLURAL:38|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where some users of the Wikipedia Android app were logged out immediately after signing in, preventing them from staying logged in and editing pages, has now been fixed. [https://phabricator.wikimedia.org/T316916]
'''Updates for technical contributors'''
* Editing a page via user scripts or gadgets was causing watchlist labels that the user had assigned to that page to reset. This has now been fixed. [https://phabricator.wikimedia.org/T423778]
* To work around a Safari bug (see [[phab:T425211]]), on Parsoid-enabled wikis, wikilink hrefs now use absolute urls instead of protocol-relative urls. REST API output remains unchanged and continue to use protocol-relative urls. Gadgets, user scripts, bots, and CSS might need to be adapted if they relied on the presence of protocol-relative urls in wikilink hrefs. [https://phabricator.wikimedia.org/T431358]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.11|MediaWiki]]
'''In depth'''
* The Wikimedia Foundation’s Experiment Platform Team has published a blog post reflecting on its first year of structured experimentation. It highlights successful experiments such as Paste Check, Reference Check, and Tone Check, which improved editing outcomes and have been rolled out to more users, as well as experiments that did not lead to product changes. [[diffblog:2026/07/07/moving-the-needle-how-we-test-new-ideas-across-wikimedia-projects|Read more]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/29|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W29"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16:10, 13 جُلَے 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30804401 -->
== <span lang="en" dir="ltr">Tech News: 2026-30</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W30"/><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/30|Translations]] are available.
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Reader/Reader Experience|Reader Experience team]] has incorporated community feedback around the placement of watchstar and watchlist buttons for the [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4 Reading lists|Reading Lists beta feature]], which would allow for saving articles for later reading – a [[m:Special:MyLanguage/Community Wishlist/W102|wishlist item]] to bring the functionality to web. Editors are invited to enable the beta feature to test it out and [[phab:T426453|share their thoughts]].
* [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|Suggestion Mode]] offers edit suggestions within the VisualEditor for improving Wikipedia articles. [[Special:EditChecks|All suggestions]] are [[mw:Special:MyLanguage/Help:Suggestion mode#For administrators – local customization|community-configurable]]. The [[mw:Special:MyLanguage/Edit check/TextMatch|TextMatch]] feature is a way for volunteers to create custom local suggestions. The feature searches in articles for strings of text, and now includes support for regular expressions. This gives volunteers greater precision and flexibility over the kinds of local suggestions they can create. Note: Suggestions [[mw:Special:MyLanguage/Edit check/Configuration#:~:text=maximumEditcount|can be targeted]] based on the edit count of the person editing as well as other aspects of the page. You can [[mw:Special:MyLanguage/Help:Suggestion mode#Create custom local types of Suggestions|find examples from other communities]] for inspiration, including TextMatches that detect: typos, grammar-errors, potential advertisements, clichés, incorrect dash or hyphen usage, non-specific time keywords, outdated names, and more. Any [[mw:Special:MyLanguage/Talk:VisualEditor/Suggestion Mode|feedback]] is appreciated.
* [[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, an issue where the SVG Translate tool could use an outdated version of a file, causing existing translations to be overwritten when new ones were uploaded, has now [[phab:T430577|been fixed]]. Overall, in the last quarter from April – June 2026 about 337 community tasks were resolved by the Wikimedia Foundation.
'''Updates for technical contributors'''
* On Parsoid-enabled wikis, Parsoid now renders a maximum of 1,250 images per page. A new tracking category, "media-limit-reached", will be soon made available to identify pages where this limit is reached, making it easier to find content whose media output may have been restricted during rendering. See [[phab:T430854]] for more information and to provide feedback.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.12|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/30|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W30"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 05:45, 21 جُلَے 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30836091 -->
== <span lang="en" dir="ltr">Tech News: 2026-31</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W31"/><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/31|Translations]] are available.
'''Updates for editors'''
* [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Wishlist item]] [[mw:Special:MyLanguage/ContentTranslation|Content Translation]] now supports dark mode, fulfilling a [[m:Community Wishlist/W544|Community Wishlist request]]. This brings the tool in line with the accessibility features available in the Vector 2022 and Minerva skins, helping reduce visual fatigue for users translating content. [https://phabricator.wikimedia.org/T367077]
* DiscussionTools' source mode and the 2017 wikitext editor will now offer autocomplete for links (<bdi lang="zxx" dir="ltr"><code><nowiki>[[</nowiki></code></bdi>), templates (<bdi lang="zxx" dir="ltr"><code><nowiki>{{</nowiki></code></bdi>), HTML and parser tags (<bdi lang="zxx" dir="ltr"><code><nowiki><</nowiki></code></bdi>), and magic words (<bdi lang="zxx" dir="ltr"><code><nowiki>__</nowiki></code></bdi>), making it quicker and easier to insert links, templates, and other wiki markup while editing. [https://phabricator.wikimedia.org/T432400]
* The [[mw:Special:MyLanguage/Readers/Reader Growth/Mobile page previews|Readers Growth team]] has concluded its experiment with mobile page previews and will not roll out the feature. Page Previews are a pop-up bottom sheet that appears when readers tap a blue link, showing a thumbnail, lead paragraph, and an option to open the article. The experiment showed flat retention and negative indicator metrics, suggesting that mobile web readers preferred navigating directly to linked articles rather than using page previews.
* The Reader Experience team has seen encouraging early results from the [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|Reading Lists feature]], with 93% of participating users reporting that it was useful. Reading Lists help active readers save articles for future reading and support their learning goals on Wikimedia projects. The team plans further improvements before expanding the feature to more users.
* The [[mw:Special:MyLanguage/Wikimedia Apps/Team/Explore Feed Refresh|Explore Feed Refresh]] initiative was tested with new and casual Wikipedia app readers. The refreshed feed helps readers discover new and relevant content. After a 10.5% increase in engagement with the feed, Wikimedia Apps team has decided to scale the Home Feed redesign to iOS with the learnings from the Android release applied.
* [[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, an issue where subject names in the Article Guidance feature were displayed with incorrect capitalization on French Wikipedia, has now been fixed. Subject names will now follow the correct capitalization rules for the language. [https://phabricator.wikimedia.org/T427201]
'''Updates for technical contributors'''
* After running several [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|Account Creation Experiments]] to improve registration completion rates, a new version of the username field on [[Special:CreateAccount|Create Account]] has been rolled out. It includes [[:c:File:Create account - July 2026 updates.png|a popover summarizing the username policy]] to provide clearer guidance during account creation. As part of this change, the messages <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-helpusername</nowiki></code></bdi> and <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-help</nowiki></code></bdi> that several communities have configured will no longer be used. If communities want to customize the guidance shown in the new popover, they can instead edit the following messages: <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-policy-popover-bullet1</nowiki></code></bdi>, <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-policy-popover-bullet2</nowiki></code></bdi>, and <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-policy-popover-bullet3</nowiki></code></bdi>. [https://phabricator.wikimedia.org/T430604]
* Later this week, the [[mw:Special:MyLanguage/Help:Extension:CodeMirror|CodeMirror syntax highlighter]] will offer [[w:en:Theme (computing)|themes]]. The themes can be picked from a dropdown menu in the full [[mw:Special:MyLanguage/Help:Extension:CodeMirror#CodeMirror preferences|CodeMirror preferences]] dialog. For wikitext, available themes are default, colorblind-friendly (previously the colorblind preference option on [[Special:Preferences#mw-prefsection-editing]]) and no-highlighting. For code languages (i.e., CSS/JavaScript/JSON/Vue/Lua), there are several themes available. These same themes will eventually be available for wikitext, too. [https://phabricator.wikimedia.org/T163533]
* From now on, wikis can restrict editing in the "User" namespace to only the page owner and certain user groups. [[mw:Special:MyLanguage/Manual:$wgRestrictUserPageEditing|Read the configuration documentation]] 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.47/wmf.14|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/31|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W31"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:48, 27 جُلَے 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30856308 -->
== <span lang="en" dir="ltr">Tech News: 2026-32</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W32"/><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/32|Translations]] are available.
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Readers/Reader Experience|Reader Experience team]] has developed a [https://82db7c8d4b.catalyst.wmcloud.org/w/index.php?title=Regent%27s_Park&uselang=de patch demo] that wraps the page toolbar onto two lines when there is not enough horizontal space for all the buttons. This aims to reduce crowding in the Vector 2022 toolbar, which can occur on some language Wikipedias at certain screen widths. [https://phabricator.wikimedia.org/T429518]
* The Reader Experience team is planning to launch [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|Reading Lists]], a [[m:Special:MyLanguage/Community Wishlist Survey 2021/Mobile and apps/Have Apps reading lists available on Destop/Mobile|Community Wishlist item]], which is currently available to try in beta, as a full feature in September. Before then, volunteer translator help is needed for [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-readinglists&filter=&action=translate string translations] into a number of languages. The feature supports reading and learning goals on Wikipedia.
* Next week, the table of contents on Wikimedia Commons file pages will be improved by consolidating the file page table of contents with the page table of contents. This will make it easier to understand a file page’s structure, navigate to specific sections, and share links to individual sections. [https://phabricator.wikimedia.org/T332644]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:24}} community-submitted {{PLURAL:24|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where some [[w:TIFF|TIFF]] images failed to load after clicking their thumbnail, causing a broken image to be displayed instead of the full-size image, has now been fixed. [https://phabricator.wikimedia.org/T429326]
'''Updates for technical contributors'''
* The variable and function selector in AbuseFilter has been updated to support search and autocomplete. It will allow filter maintainers to find the desired variable or function more quickly. [https://phabricator.wikimedia.org/T323698]
* The MJPEG and VP8 formats are removed from the video player. The MP4 format (MPEG-4 Part 2) is added instead, which provides higher quality videos to older iPhone devices. It may take a few weeks to retroactively update all existing videos. The default format for modern devices stays the same (VP9/WebM). [https://phabricator.wikimedia.org/T358266]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.15|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/32|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W32"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:45, 3 اَگست 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30872536 -->
== <span lang="en" dir="ltr">Tech News: 2026-33</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W33"/><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/33|Translations]] are available.
'''Updates for editors'''
* [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Wishlist item]] A new ChartWizard is [[c:Special:ChartWizard/Data:Example.Pie.chart|now available on Wikimedia Commons]] for users interested in creating charts from their own data. The wizard makes the [[mw:Special:MyLanguage/Extension:Chart|Chart extension]] more beginner-friendly by allowing editors to create charts, such as bar and pie charts, without needing to use JSON. Users can still switch to the JSON editor if they prefer. Feedback on the new tool is welcome on the [[m:Talk:Community Wishlist/W414|wish talk page]].
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:19}} community-submitted {{PLURAL:19|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where the Wikipedia iOS app’s Picture of the Day widget displayed the same image every day instead of updating daily, has now been fixed. [https://phabricator.wikimedia.org/T430692]
'''Updates for technical contributors'''
* [[mw:Special:MyLanguage/Extension:Math|Math formula]] SVG images will soon be generated in the browser instead of on the server. MathML continues to be generated on the server and renders in the browser without JavaScript. Wikibooks will see this change on 12 August, Wikisource on 19 August and Wikipedia from 20-27 August. You can try this by selecting "{{int:Mw-math-mathjax}}" in your preferences. This change is part of [[mw:Special:MyLanguage/RESTBase/deprecation|deprecating RESTBase]] and [[phab:T431372|deprecating Mathoid]]. [https://phabricator.wikimedia.org/T271001]
* Category pages will soon support sorting entries by the time they are added to a category. This will make it easier to find recently or long-standing categorized pages. It will also improve workflows for maintenance categories such as deletion backlogs and other time-based review tasks. You can use <bdi lang="zxx" dir="ltr"><code><nowiki>cldsort=timestamp</nowiki></code></bdi> URL argument in category view to sort the entries. [https://phabricator.wikimedia.org/T433768]
* [[mw:Special:MyLanguage/Extension:Gadgets|Gadgets]] and user scripts on Wikimedia wikis may now use [[phab:T395347|ES2018 features]] and [[phab:T419142|ES2019 features]] in JavaScript code. Previously, the platform only allowed up to ES2017. MediaWiki validates the source code to protect functionality from syntax errors and to ensure scripts are valid in all [[mw:Special:MyLanguage/Compatibility#Browser_support_matrix|supported browsers]]. [https://phabricator.wikimedia.org/T419142]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.16|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/33|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W33"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:44, 10 اَگست 2026 (UTC)
<!-- Message sent by User:STei (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30901051 -->
fq5o7zx6ozhljedgi8isg1hi7443k3g
رُکُن کَتھ:511KeV
3
7889
148947
141563
2026-08-10T18:54:30Z
MediaWiki message delivery
3853
/* Translation notification: Event:Open Heritage-Wikidata Contest */ نٔو حِصہٕ
148947
wikitext
text/x-wiki
{{Talk header|archive_age=7|archive_bot=cewbot}}
{{Auto-archive|archive_after_last_comment=7d|archive_to_subpage=مَحفوٗظ خانہٕ %1}}
== Feminism and Folklore 2023 has ended, What's Next? ==
<div lang="en" dir="ltr" class="mw-content-ltr">{{int:please-translate}}
[[File:Feminism and Folklore 2023 logo.svg|right|350px]]
Dear {{PAGENAME}},
'''[[m:Feminism and Folklore 2023|Feminism and Folklore 2023]]''' writing competition has ended. We thank you for organizing it on your local Wikipedia and help in document folk cultures and women in folklore in different regions of the world on Wikipedia. What's next?
# Please complete the jury on or before 15th of May 2023.
# Email us on [mailto:support@wikilovesfolklore.org support@wikilovesfolklore.org] the Wiki usernames of top three users with most accepted articles in local contest.
# Write the information about the winners on the projects Meta Wiki '''[[:m:Feminism and Folklore 2023/Results|Results page]]'''
# You can also put the names of the winners on your local project page.
# We will be contacting the winners in phased manner for distribution of prizes.
Feel free to contact us via mail or [[:m:Talk:Feminism and Folklore 2023|talkpage]] if you need any help, clarification or assistance.
Thanks and regards,
'''International Team'''<br />
'''Feminism and Folklore'''
</div>
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Rockpeterson/wlf2023&oldid=24803574 -->
== Invitation to Rejoin the [https://mdwiki.org/wiki/WikiProjectMed:Translation_task_force Healthcare Translation Task Force] ==
[[File:Wiki Project Med Foundation logo.svg|right|frameless|125px]]
You have been a [https://mdwiki.toolforge.org/prior/index.php medical translators within Wikipedia]. We have recently relaunched our efforts and invite you to [https://mdwiki.toolforge.org/Translation_Dashboard/index.php join the new process]. Let me know if you have questions. Best [[User:Doc James|<span style="color:#0000f1">'''Doc James'''</span>]] ([[User talk:Doc James|talk]] · [[Special:Contributions/Doc James|contribs]] · [[Special:EmailUser/Doc James|email]]) 12:34, 2 August 2023 (UTC)
<!-- Message sent by User:Doc James@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Top_translators/1&oldid=25451563 -->
== Thank you for being a medical contributors! ==
<div lang="en" dir="ltr" class="mw-content-ltr">
{| style="background-color: #fdffe7; border: 1px solid #fceb92;"
|rowspan="2" style="vertical-align: middle; padding: 5px;" | [[File:Wiki Project Med Foundation logo.svg|100px]]
|style="font-size: x-large; padding: 3px 3px 0 3px; height: 1.5em;" |'''The 2023 Cure Award'''
|-
| style="vertical-align: middle; padding: 3px;" |In 2023 you [https://mdwiki.toolforge.org/Translation_Dashboard/leaderboard.php?camp=all&project=all&year=2023&start=Filter joined us as a medical translator]. Thank you from [[m:WikiProject_Med|Wiki Project Med]] for helping bring free, complete, accurate, up-to-date health information to the public. We really appreciate you and the vital work you do! Wiki Project Med Foundation is a [[meta:Wikimedia_thematic_organizations|thematic organization]] whose mission is to improve our health content. Consider joining '''[[meta:Wiki_Project_Med#People_interested|here]]''', there are no associated costs and we look forwards to working together in 2024.
|}
Thanks again :-) -- [https://mdwiki.org/wiki/User:Doc_James <span style="color:#0000f1">'''Doc James'''</span>] along with the rest of the team at '''[[m:WikiProject_Med|Wiki Project Med Foundation]]'''
</div>
<!-- Message sent by User:Doc James@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Top_Medical_Editors_2023&oldid=26031072 -->
== Feminism and Folklore 2025: Important Updates for Organizers & Jury ==
Hello Community Organizers and Jury,
Thank you for organising Feminism and Folklore writing competition on your wiki. Feminism and Folklore is the largest Wikipedia contest organized by community members. We congratulate you in joining and celebrating our cultural heritage and promoting gender equality on Wikipedia.
To encourage boost for the contributions of the participants, we're offering prizes for Feminism and Folklore local prizes. Each Wikipedia will have three local winners:
# First Prize: $25 USD
# Second Prize: $20 USD
# Best Jury Article: $15 USD
All this will be in '''gift voucher format only'''.
Prizes will only be given to users who have more than 5 accepted articles. No prizes will be given for users winning below 5 accepted articles.
Kindly inform your local community regarding these prizes and post them on the local project page
The Best Jury Article will be chosen by the jury based on how unique the article is aligned with the theme. The jury will review all submissions and decide the winner together, making sure it's fair. These articles will also be featured on our social media handles.
We're also providing internet and childcare support to the first 75 organizers and Jury members for those who request for it. Remember, only 75 organizers will get this support, and it's given on a first-come, first-served basis. The registration form will close after 75 registrations, and the deadline is <nowiki>'''</nowiki>March 5, 2025<nowiki>'''</nowiki>. This support is optional and not compulsory, so if you're interested, fill out the [https://docs.google.com/forms/d/e/1FAIpQLSeum8md6FqHY1ISWRLW5bqOAv_lcd1tpVtMMZfWKRDU_IffLQ/viewform?usp=dialog Form]
Each organizer/jury who gets support will receive $40 USD in gift voucher format, even if they're involved in more than one wiki. No dual support will be provided if you have signed up in more than one language. This support is meant to appreciate your volunteer support for the contest.
We also invite all organizers and jury members to join us for Advocacy session on '''Saturday, Feb 28, 2025'''. This session will help you understand the jury process for both contests and give you a chance to ask questions. More details are on [[meta:Event:Telling untold stories: How to document gendered narratives in Folklore on Wikipedia|Event:Telling untold stories: How to document gendered narratives in Folklore on Wikipedia - Meta]]
Let's celebrate our different cultures and work towards gender equality on Wikipedia!
Best regards,
Stella and Tiven
Wiki loves folklore international team
[[User:SAgbley|SAgbley]] ([[User talk:SAgbley|talk]]) 04:39, 25 February 2025 (UTC)
<!-- Message sent by User:Joris Darlington Quarshie@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Joris_Darlington_Quarshie/Community_Prizes&oldid=28309519 -->
== Translation notification: Incident Reporting System ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta.
The page [[:metawikipedia:Incident Reporting System|Incident Reporting System]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Incident+Reporting+System&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Incident+Reporting+System&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is medium.
<div lang="en" class="mw-content-ltr"></div>
Your help is greatly appreciated. Translators like you help Meta to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta translation coordinators, 03:53, 2 اَگست 2025 (UTC)
<!-- Message sent by User:Minorax@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Translation notification: Template:Affiliate recognition pause notice 2025 ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Template:Affiliate recognition pause notice 2025|Template:Affiliate recognition pause notice 2025]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Template%3AAffiliate+recognition+pause+notice+2025&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Template%3AAffiliate+recognition+pause+notice+2025&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is low.
<div lang="en" class="mw-content-ltr"></div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 15:33, 30 اَگست 2025 (UTC)
<!-- Message sent by User:Minorax@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Translation notification: Meta:Deletion policy ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Meta:Deletion policy|Meta:Deletion policy]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Meta%3ADeletion+policy&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Meta%3ADeletion+policy&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is low.
<div lang="en" class="mw-content-ltr"></div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 07:07, 15 سیٚپٹَمبَر 2025 (UTC)
<!-- Message sent by User:Minorax@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Translation notification: Wikimedia Foundation website ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Wikimedia Foundation website|Wikimedia Foundation website]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Wikimedia+Foundation+website&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Wikimedia+Foundation+website&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is low.
<div lang="en" class="mw-content-ltr"></div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 05:47, 29 سیٚپٹَمبَر 2025 (UTC)
<!-- Message sent by User:Minorax@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Translation notification: Template:AffCom ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Template:AffCom|Template:AffCom]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Template%3AAffCom&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Template%3AAffCom&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is low.
<div lang="en" class="mw-content-ltr"></div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 04:55, 30 اَکتوٗبَر 2025 (UTC)
<!-- Message sent by User:Minorax@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Translation notification: Template:Cat main ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Template:Cat main|Template:Cat main]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Template%3ACat+main&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Template%3ACat+main&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is low.
<div lang="en" class="mw-content-ltr"></div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 06:12, 6 نَوَمبَر 2025 (UTC)
<!-- Message sent by User:Minorax@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Question about Module:Databox in Right-to-Left Wikis ==
<div lang="en" dir="ltr" class="mw-content-ltr">
Hello @[[رُکُن:511KeV|511KeV]] — sorry for writing in English!
I’m reaching out from a software team; [[metawiki:Wikidata_For_Wikimedia_Projects|Wikidata For Wikimedia Projects]], at [[metawiki:Wikimedia_Deutschland|Wikimedia Germany]]. We’ve been working on a few [[metawiki:Wikidata_For_Wikimedia_Projects/Projects/Databox#Changes_to_Databox|new parameters]] for the compact Wikidata-powered infobox (Module:Databox / Template:Databox), and as part of that we’ve been looking at how different Wikipedias adapt it.
We noticed that the Kashmiri Wikipedia has [[:en:ks:Special:History/Module:Databox|quite a few customisations]] compared to the baseline Databox on Wikidata, and since you’re listed as the maintainer, I wanted to check in with you about adding custom-code to a wiki that differs in both scripting direction and as a non-latin alphabet.
Are there any special considerations you’ve had to make for the right-to-left writing direction, or anything in the module code that needed adjusting because of it?
We’re not planning to propose any changes to the Kashmiri Databox itself — we just want to make sure that anything we develop works smoothly for other RTL wikis too.
Your experience would be really helpful.
Thanks so much for any insight you can share! — [[رُکُن:Danny Benjafield (WMDE)|Danny Benjafield (WMDE)]] ([[رُکُن کَتھ:Danny Benjafield (WMDE)|کَتھ صَفہٕ]]) 15:57, 19 نَوَمبَر 2025 (UTC)
</div>
:Dear @[[رُکُن:Danny Benjafield (WMDE)|Danny Benjafield (WMDE)]]
:Thank you for reaching out. Databoxes are extremely helpful for smaller wikis like ours, where the number of active editors is limited. They save us a significant amount of time and simultaneously help improve Wikidata.
:At present, we are facing an issue where the text inside databoxes aligns to the left, even though Kashmiri is an RTL language. If it is possible to fix this, it would be greatly beneficial for us. We would also like the design of the databoxes to resemble the standard infoboxes as closely as possible, including support for displaying small icons such as flag icons.
:We are not very tech-savvy editors on Kashmiri Wikipedia, but we have managed to modify things so far through trial and error. Your guidance and these improvements would be extremely helpful if implemented. <small><sub><span style="color:grey;"> </span></sub></small>[[User:511KeV|<span style="font-family:sans-serif; color:#FF1100; text-shadow:.2em .2em .4em #AfAfB1;">'''511KeV'''</span>]] [[User_talk:511KeV|<sup> '' (کتھ باتھ)''</sup>]] 16:22, 19 نَوَمبَر 2025 (UTC)
== Translation notification: Help:Two-factor authentication ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Help:Two-factor authentication|Help:Two-factor authentication]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Help%3ATwo-factor+authentication&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Help%3ATwo-factor+authentication&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is medium.
<div lang="en" class="mw-content-ltr"></div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 03:09, 6 ڈیٚسَمبَر 2025 (UTC)
<!-- Message sent by User:Minorax@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Invitation to Organise Feminism and Folklore 2026 ==
<div style="border:8px maroon ridge;padding:6px;">
[[File:Feminism and Folklore 2026 logo.svg|center|550px|frameless]]
<div lang="en" dir="ltr" class="mw-content-ltr">
<div style="text-align: center;"><em>{{int:please-translate}}</em></div>
Dear {{PAGENAME}},
Hope you’re doing well. I’m reaching out with some exciting updates about '''[[m:Feminism and Folklore 2026|Feminism and Folklore 2026]]'''. Thanks to the amazing support from organizers like you, the campaign has grown into one of the biggest and most collaborative initiatives in the entire Wikimedia movement. Your efforts have played a huge part in that, and we’re truly grateful. We’re hoping to make the 2026 edition even larger and even more community-driven.
We’d be very happy to have you join again as an organizer. The sign-up process is simple this year:
#Create your local event page (you can copy from the [[:m:Feminism_and_Folklore/Sample|sample]])
#Set up your Fountain or [https://tools.wikilovesfolklore.org/campwiz/ CampWiz] campaign.
#Add your campaign link to the 2026 '''[[:m:Feminism_and_Folklore_2026/Project_Page|registration list]]'''
The focus of the campaign remains the same - creating or expanding Wikipedia content on feminism, women’s issues, gender topics, and diverse folk traditions from around the world. International and local prizes will continue as before.
'''Special Prize for 2026:'''
Every participant will receive a Wikipedia 25 digital postcard as a token of appreciation for contributing to the global movement during Wikipedia’s 25th anniversary year. This will be sent to all contributors who take part in the campaign.
We’re also adding an optional one-time internet and childcare support for organizers who may need extra assistance to carry out their local campaign. This is entirely optional and meant to help those who might otherwise face challenges in organizing. More details will be shared soon.
If you’re unable to organize this year, no worries at all - please feel free to share the invitation with others in your community who might be interested.
If you have any questions or would like to discuss plans, you can reach us on the [[:m:Talk:Feminism and Folklore 2026|talk page]] or by email.
Looking forward to collaborating again,
'''Wiki Loves Folklore International Team'''
--[[رُکُن:MediaWiki message delivery|MediaWiki message delivery]] ([[رُکُن کَتھ:MediaWiki message delivery|کَتھ صَفہٕ]]) 18:18, 12 ڈیٚسَمبَر 2025 (UTC)
</div></div>
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/fnf25&oldid=29792058 -->
== Translation notification: Universal Code of Conduct/Annual review/Messages/Review open ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Universal Code of Conduct/Annual review/Messages/Review open|Universal Code of Conduct/Annual review/Messages/Review open]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Universal+Code+of+Conduct%2FAnnual+review%2FMessages%2FReview+open&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Universal+Code+of+Conduct%2FAnnual+review%2FMessages%2FReview+open&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is medium.
The deadline for translating this page is 2026-01-19.
<div lang="en" class="mw-content-ltr">This message will be sent to all the wikis to inform communities about their chance to participate in proposing changes to the Universal Code of Conduct. </div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 22:30, 14 جَنؤری 2026 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Feminism and Folklore 2026 starts soon ==
<div style="border:8px maroon ridge; padding:6px;">
[[File:Feminism and Folklore 2026 logo.svg|center|550px|frameless]]
<div lang="en" dir="ltr" class="mw-content-ltr" style="padding: 1em 2em;">
<div style="text-align: center; width: 100%;">''{{int:please-translate}}''</div>
;Invitation to Organize Feminism and Folklore 2026
Dear {{BASEPAGENAME}},
We are pleased to invite you to organize the '''[[:m:Feminism and Folklore 2026|Feminism and Folklore 2026]]''' writing competition on your local Wikipedia.
The international campaign will run from '''1 February to 31 March 2026''' and aims to improve coverage of feminism, women’s histories, gender-related topics, and folk culture across Wikipedia projects.
;About the Campaign
'''Feminism and Folklore''' is a global writing initiative that complements the '''[[:c:Commons:Wiki Loves Folklore 2026|Wiki Loves Folklore]]''' photography competition. While Wiki Loves Folklore focuses on visual documentation, this writing campaign addresses the '''gender gap on Wikipedia''' by improving encyclopedic content related to folk culture and women.
;What Can Participants Write About?
Communities can contribute by creating, expanding, or translating articles related to:
* Folk festivals, rituals, and celebrations
* Folk dances, music, and traditional performances
* Women and queer figures in folklore
* Women in mythology and oral traditions
* Women warriors, witches, and witch-hunting narratives
* Fairy tales, folk stories, and legends
* Folk games, sports, and cultural practices
Participants may work from curated article lists or generate new article suggestions using campaign tools.
;How to Sign Up as an Organizer
Organizers are requested to complete the following steps to register their community:
# Create a local project page on your wiki [[:m:Feminism and Folklore/Sample|(see sample)]]
# Set up the campaign using the '''CampWiz''' tool
# Prepare a local article list and clearly mention:
#* Campaign timeline
#* Local and international prizes
# Request a site notice from local administrators [[:mr:Template:SN-FNF|(see sample)]]
# Add your local project page and CampWiz link to the '''[[:m:Feminism and Folklore 2026/Project Page|Meta project page]]'''
;Campaign Tools
The Wiki Loves Folklore Tech Team has introduced tools to support organizers and participants:
* '''Article List Generator by Topic''' – Helps identify articles available on English Wikipedia but missing in your local language Wikipedia. The tool allows customized filters and provides downloadable article lists in CSV and wikitable formats.
* '''CampWiz''' – Enables communities to manage writing campaigns effectively, including jury-based evaluation. This will be the third year CampWiz is officially used for Feminism and Folklore.
Both tools are now available for use in the campaign. '''[https://tools.wikilovesfolklore.org/ Click here to access the tools]'''
;Learn More & Get Support
*For detailed information about rules, timelines, and prizes, please visit the '''[[:m:Feminism and Folklore 2026|Feminism and Folklore 2026 project page]]'''.
* Join the office hours on 23 January 2026 and connect with the international Team. ([[:m:Event:Wiki Loves Folklore 2026 Office Hours|sign up now]])
If you have any questions or need assistance, feel free to reach out via:
* '''[[:m:Talk:Feminism and Folklore 2026/Project Page|Meta talk page]]'''
* Email us using details on the contact page.
;Join Us
We look forward to your collaboration and coordination in making Feminism and Folklore 2026 a meaningful and impactful campaign for closing gender gaps and enriching folk culture content on Wikipedia.
Thank you and best wishes,
'''[[:m:Feminism and Folklore 2026|Feminism and Folklore 2026 International Team]]'''
----
''Stay connected:''
[[File:B&W Facebook icon.png|link=https://www.facebook.com/feminismandfolklore/|30x30px]] [[File:B&W Twitter icon.png|link=https://twitter.com/wikifolklore|30x30px]]
</div></div>
--[[رُکُن:MediaWiki message delivery|MediaWiki message delivery]] ([[رُکُن کَتھ:MediaWiki message delivery|کَتھ صَفہٕ]]) 16:31, 18 جَنؤری 2026 (UTC)
<!-- Message sent by User:Tiven2240@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/fnf25&oldid=29949330 -->
== Thank you for being a medical translator! ==
<div lang="en" dir="ltr" class="mw-content-ltr">
{| style="background-color: #fdffe7; color: #000; border: 1px solid #fceb92;"
|rowspan="2" style="vertical-align: middle; padding: 5px;" | [[File:Wiki Project Med Foundation logo.svg|100px]]
|style="font-size: x-large; padding: 3px 3px 0 3px; height: 1.5em;" |'''The 2025 Cure Translators Award'''
|-
| style="vertical-align: middle; padding: 3px;" |In 2025 you [https://mdwiki.toolforge.org/Translation_Dashboard/leaderboard.php?camp=all&user_group=all&year=2025&month=All joined us as a medical translator]. Thank you from [[m:WikiProject_Med|Wiki Project Med]] for helping bring free, complete, accurate, up-to-date health information to the public.
Wiki Project Med Foundation is a [[meta:Wikimedia_thematic_organizations|thematic organization]] whose mission is to improve our health content. '''[[meta:Wiki_Project_Med#People_interested|Consider formally joining the organization for 2026]]''', there are no associated costs.
|}
Look forwards to collaborating further in the year ahead. Thanks again :-) -- [[mdwiki:User:Doc_James|<span style="color:#0000f1">'''Doc James'''</span>]] along with the rest of the team at '''[[m:WikiProject_Med|Wiki Project Med Foundation]]''' 07:53, 14 فرؤری 2026 (UTC)
</div>
(This message was sent to [[:رُکُن:511KeV]] and is being posted here due to a redirect.)
<!-- Message sent by User:Doc James@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Top_Translators_2025&oldid=30070105 -->
== Translation notification: Wiki Loves Ramadan 2026/List of Articles/Culture/1 ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Wiki Loves Ramadan 2026/List of Articles/Culture/1|Wiki Loves Ramadan 2026/List of Articles/Culture/1]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Wiki+Loves+Ramadan+2026%2FList+of+Articles%2FCulture%2F1&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Wiki+Loves+Ramadan+2026%2FList+of+Articles%2FCulture%2F1&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is low.
The deadline for translating this page is 2026-02-28.
<div lang="en" class="mw-content-ltr">Hello! We have a new page for translation: Wiki Loves Ramadan 2026/List of Articles/Culture/1. Thank you!</div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 11:02, 15 فرؤری 2026 (UTC)
<!-- Message sent by User:Julius 12345@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Translation notification: Global username policy ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Global username policy|Global username policy]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Global+username+policy&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Global+username+policy&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is medium.
The deadline for translating this page is 2026-12-31.
<div lang="en" class="mw-content-ltr">Hello! We have a new page for translation: Global username policy. Thank you very much!</div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 14:25, 15 فرؤری 2026 (UTC)
<!-- Message sent by User:Julius 12345@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Translation notification: Event:Queer Women in Arts ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Event:Queer Women in Arts|Event:Queer Women in Arts]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Event%3AQueer+Women+in+Arts&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Event%3AQueer+Women+in+Arts&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is high.
The deadline for translating this page is 2026-02-28.
<div lang="en" class="mw-content-ltr">Hello! We have a new page for translation: Event:Queer Women in Arts. Thanks!</div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 19:11, 18 فرؤری 2026 (UTC)
<!-- Message sent by User:Julius 12345@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Translation notification: Mission ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Mission|Mission]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Mission&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Mission&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is medium.
<div lang="en" class="mw-content-ltr"></div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 02:15, 28 فرؤری 2026 (UTC)
<!-- Message sent by User:Minorax@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Translation notification: Event:Wikipedia & Education User Group Showcase/March 2026 ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Event:Wikipedia & Education User Group Showcase/March 2026|Event:Wikipedia & Education User Group Showcase/March 2026]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Event%3AWikipedia+%26+Education+User+Group+Showcase%2FMarch+2026&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Event%3AWikipedia+%26+Education+User+Group+Showcase%2FMarch+2026&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is high.
The deadline for translating this page is 2026-03-21.
<div lang="en" class="mw-content-ltr">Hi translators,
The EduWiki Hub is seeking your support to help translate the Meta page for the EduWiki Knowledge Showcase (March 2026) into Portuguese, Spanish, French, Hindi, and Arabic
The event will take place on 24 March 2026, and translations will help make it accessible to more communities.
Thank you for your support.
Kind regards,
Barakat, for the EduWiki Hub.</div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 12:56, 17 مارٕچ 2026 (UTC)
<!-- Message sent by User:BAdegboye (EdWH)@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Notice of expiration of your interface-admin right ==
<div dir="ltr">Hi, as part of [[:m:Special:MyLanguage/Global reminder bot|Global reminder bot]], this is an automated reminder to let you know that your permission "interface-admin" (اِنٹَرفیس اِنتِظٲمؠ) will expire on 2026-04-03 20:59:00. Please renew this right if you would like to continue using it. <i>In other languages: [[:m:Special:MyLanguage/Global reminder bot/Messages/default|click here]]</i> [[رُکُن:Leaderbot|Leaderbot]] ([[رُکُن کَتھ:Leaderbot|کَتھ صَفہٕ]]) 19:41, 28 مارٕچ 2026 (UTC)</div>
== Notice of expiration of your sysop right ==
<div dir="ltr">Hi, as part of [[:m:Special:MyLanguage/Global reminder bot|Global reminder bot]], this is an automated reminder to let you know that your permission "sysop" (اِنتِظٲمؠ) will expire on 2026-04-03 20:59:00. Please renew this right if you would like to continue using it. <i>In other languages: [[:m:Special:MyLanguage/Global reminder bot/Messages/default|click here]]</i> [[رُکُن:Leaderbot|Leaderbot]] ([[رُکُن کَتھ:Leaderbot|کَتھ صَفہٕ]]) 19:41, 28 مارٕچ 2026 (UTC)</div>
== You may be an eligible candidate for the U4C election ==
<div lang="en" dir="ltr" class="mw-content-ltr">
Greetings,
The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years.
This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required.
The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will be a week in between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run.
In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 20:06, 28 اپریٖل 2026 (UTC) </div>
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30472432 -->
== Translation notification: User:Keegan (WMF)/U4C eligible voter ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:User:Keegan (WMF)/U4C eligible voter|User:Keegan (WMF)/U4C eligible voter]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-User%3AKeegan+%28WMF%29%2FU4C+eligible+voter&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-User%3AKeegan+%28WMF%29%2FU4C+eligible+voter&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is medium.
The deadline for translating this page is 2026-05-19.
<div lang="en" class="mw-content-ltr"></div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 00:28, 15 مٔی 2026 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Translation notification: Universal Code of Conduct/Coordinating Committee/Election/2026/Vote now ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Universal Code of Conduct/Coordinating Committee/Election/2026/Vote now|Universal Code of Conduct/Coordinating Committee/Election/2026/Vote now]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Universal+Code+of+Conduct%2FCoordinating+Committee%2FElection%2F2026%2FVote+now&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Universal+Code+of+Conduct%2FCoordinating+Committee%2FElection%2F2026%2FVote+now&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is medium.
The deadline for translating this page is 2026-05-26.
<div lang="en" class="mw-content-ltr"></div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 21:17, 20 مٔی 2026 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Translation notification: Global locks ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Global locks|Global locks]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Global+locks&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Global+locks&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is medium.
<div lang="en" class="mw-content-ltr"></div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 01:45, 7 جوٗن 2026 (UTC)
<!-- Message sent by User:Minorax@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
== Help ==
Hello, I need help to improving [[غزہ نسل کشی|this]] article. My kashmir language is bad 😅 [[رُکُن:جودت|جودت]] ([[رُکُن کَتھ:جودت|کَتھ صَفہٕ]]) 06:32, 17 جوٗن 2026 (UTC)
== Translation notification: Event:Open Heritage-Wikidata Contest ==
Hello 511KeV,
You are receiving this notification because you signed up as a translator to Kashmiri (Arabic script) and Kashmiri on Meta-Wiki.
The page [[:metawikipedia:Event:Open Heritage-Wikidata Contest|Event:Open Heritage-Wikidata Contest]] is available for translation. You can translate it here:
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Event%3AOpen+Heritage-Wikidata+Contest&language=ks-arab&action=page&action_source=translation_notification translate to Kashmiri (Arabic script)]
* [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Event%3AOpen+Heritage-Wikidata+Contest&language=ks&action=page&action_source=translation_notification translate to Kashmiri]
The priority of this page is medium.
The deadline for translating this page is 2026-08-15.
<div lang="en" class="mw-content-ltr">Hello,
We are looking forward to translating this page.
We highly appreciate your support
Best</div>
Your help is greatly appreciated. Translators like you help Meta-Wiki to function
as a truly multilingual community.
To unsubscribe or to change your notification preferences for translations, please visit [https://meta.wikimedia.org/wiki/Special:TranslatorSignup Special:TranslatorSignup].
Thank you!
Meta-Wiki translation coordinators, 18:54, 10 اَگست 2026 (UTC)
<!-- Message sent by User:SanBonne@metawiki using the list at https://meta.wikimedia.org/wiki/Special:NotifyTranslators -->
ql4y0259hiewhbd70a14tbn93eguurw
Module:Databox
828
12468
148976
148738
2026-08-11T10:21:08Z
آیات محراج
11062
148976
Scribunto
text/plain
-- Please DO NOT edit this page unless you know what you are doing.
-- Maintainer: User:511KeV
-- https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual
-- https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua
local property_blacklist = {
'P360', --is a list of
'P4224', --category contains
'P935', -- Commons gallery
'P1472', -- Commons Creator page
'P1612', -- Commons Institution page
'P373', -- Commons category
'P3722', -- Commons maps category
'P1151', -- topic's main Wikimedia portal
'P1424', -- topic's main template
'P910', -- topic's main category
'P1200', -- bodies of water basin category
'P1792', -- category of associated people
'P2521', -- female form of label
'P3321', -- male form of label
'P6186', -- category for eponymous categories
'P1464', -- category for people born here
'P1465', -- category for people who died here
'P1791', -- category of people buried here
'P1740', -- category for films shot at this location
'P2033', -- Category for pictures taken with camera
'P2517', -- category for recipients of this award
'P4195', -- category for employees of the organization
'P1754', -- category related to list
'P8596', -- category for the exterior of the item
'P301', -- category's main topic
'P6112',-- category for members of a team
'P971', -- category combines topics
'P3876', -- category for alumni of educational institution
'P8933', -- category for the view from the item
'P1753', -- list related to category
'P3921', -- Wikidata SPARQL query equivalent
'P1204', -- Wikimedia portal's main topic
'P1423', -- template's main topic
'P1709', -- equivalent class
'P3950', -- narrower external class
'P2888', -- exact match
'P1382', -- coincident with
'P2670', -- has parts of the class
'P3113', -- does not have part
'P2737', -- union of
'P2738', -- disjoint union of
'P2445', -- metasubclass of
'P1963', -- properties for this type
'P3176', -- uses property
'P1889', -- different from
'P460', -- said to be the same as
'P2959', -- permanent duplicated item
'P2860', -- cites
'P5125', -- wikimedia outline
'P5008', -- on focus list of Wikimedia project
'P2559', -- Wikidata usage instructions
'P1343', -- described by source
'P8687', -- social media followers
'P972', -- catalogue
'P1282', -- OSM tag or key
'P4839', -- Wolfram Language entity code
'P6104', -- Maintained by Wikiproject
'P5996', -- Category for films in this language
'P735', -- Given name
'P734', -- Family name
'P1559', -- Native name (Handled separately)
'P21', -- Sex or gender
'P2184', -- history of topic
'P1438', -- Jewish Encyclopedia ID
'P7867', -- category for maps
'P8402', -- Open Data portal
'P1448', -- official name (Handled separately)
'P569', -- date of birth (Handled separately)
'P570', -- date of death (Handled separately)
'P19', -- place of birth
'P20', -- place of death
'P27', -- country of citizenship
'P2747', -- Filmiroda rating
'P7561', -- category for the interior of the item
'P6365', -- member category
'P465', -- sRGB color hex triplet
'P487', -- Unicode character
'P7084', -- related category
'P7763', -- Copyright status as a creator
'P1814', -- name in kana
'P2001', -- Revised Romanization
'P2572', -- Hashtag
'P8989', -- category for the view of the item
'P6363', -- WordLift
}
-- Exceptions to the datatype blocking:
local property_whitelist = {
'P856', -- official website
'P3896',-- geoshape
'P345', -- IMDB id
'P6375' -- street address
}
-- Properties with higher level items (Bulleted Hierarchy):
local properties_with_parents = {
'P131', -- located in the administrative territorial entity
'P144', -- based on
'P155', -- follows
'P171', -- parent taxon
'P276', -- location
'P279', -- subclass of
'P361', -- part of
'P706', -- located on terrain feature
'P749', -- parent organization
'P807', -- separated/forked from
'P1365', -- replaced
'P1647', -- subproperty of
'P3730' -- next higher rank
}
local properties_with_children = {
-- Properties with lower level items:
'P150', -- contains administrative territorial entity
'P156', -- followed by
'P355', -- subsidiary
'P527', -- has part
'P1012', -- contains
'P1366', -- replaced by
'P3729', -- next lower rank
'P4330', -- contains
'P7888' -- merged into
}
-- Import the new qualifiers sub-module
local qualifiersHelper = require('Module:databox/qualifiers')
-- Merge two tables and return a new table
function mergeTables(first, second)
result = {}
for k,v in pairs(first) do
table.insert(result, v)
end
for k,v in pairs(second) do
table.insert(result, v)
end
return result
end
-- Turn index based tables into key based tables
function valuesToKeys(array)
local result = {}
for _, v in pairs(array) do
result[v:upper()] = true
end
return result
end
-- Helper to get description for tooltips
function getDescription(id)
return mw.wikibase.getDescription(id, 'ks') or mw.wikibase.getDescription(id, 'en') or ""
end
function getBirthStatement(lang, date_of_birth, date_of_death, place_of_birth)
local birth_time = ''
if date_of_death then
birth_time = formatDate(lang, date_of_birth.time)
else
local date_of_birth_parts = mw.text.split(formatDate(lang, date_of_birth.time, nil, 'Y-m-j'), '-')
birth_time = string.format('{{Birth date and age|%s|%s|%s}}',
date_of_birth_parts[1], date_of_birth_parts[2], date_of_birth_parts[3])
end
local birth = birth_time
if place_of_birth then
-- Try to get the Kashmiri article name for the entity
local birth_location = mw.wikibase.getSitelink(place_of_birth.id, 'kswiki')
local link = true
if not birth_location then
-- If there was no Kashmiri article for the entity, then get an article name from other wikis
birth_location = mw.wikibase.getLabel(place_of_birth.id)
link = false
end
if birth_location then
if link then birth_location = '[[' .. birth_location .. ']]' end
birth = birth .. '<br>' .. birth_location
local birth_country = getBestStatementById(place_of_birth.id, 'P17')
if birth_country then
local birth_country_label = mw.wikibase.getSitelink(birth_country.id, 'kswiki')
local link = true
if not birth_country_label then
birth_country_label = mw.wikibase.getSitelink(birth_country.id, 'enwiki')
link = false
end
if link then birth_country_label = '[[' .. birth_country_label .. ']]' end
birth = birth .. '، ' .. birth_country_label
end
end
end
return birth
end
function getDeathStatement(lang, date_of_birth, date_of_death, place_of_death)
local date_of_birth_parts = mw.text.split(formatDate(lang, date_of_birth.time, nil, 'Y-m-j'), '-')
local date_of_death_parts = mw.text.split(formatDate(lang, date_of_death.time, nil, 'Y-m-j'), '-')
local death_time = string.format('{{Death date and age|%s|%s|%s|%s|%s|%s}}',
date_of_death_parts[1], date_of_death_parts[2], date_of_death_parts[3],
date_of_birth_parts[1], date_of_birth_parts[2], date_of_birth_parts[3])
local death = death_time
if place_of_death then
local death_location = mw.wikibase.getSitelink(place_of_death.id, 'kswiki')
local link = true
if not death_location then
death_location = mw.wikibase.getSitelink(place_of_death.id, 'enwiki')
link = false
end
if not death_location then
death_location = mw.wikibase.getLabel(place_of_death.id)
link = false
end
if death_location then
if link then death_location = '[[' .. death_location .. ']]' end
death = death .. '<br>' .. death_location
local death_country = getBestStatementById(place_of_death.id, 'P17')
if death_country then
local death_country_label = mw.wikibase.getSitelink(death_country.id, 'kswiki')
local link = true
if not death_country_label then
death_country_label = mw.wikibase.getSitelink(death_country.id, 'enwiki')
link = false
end
if link then death_country_label = '[[' .. death_country_label .. ']]' end
death = death .. '، ' .. death_country_label
end
end
end
return death
end
-- Convert Arabic numbers (0123456789) to Kashmiri numbers (٠١٢٣٤٥٦٧٨٩) and translate date terms
function toKashmirinumbers(text)
if text == nil then return nil end
return text:gsub('0', '0')
:gsub('1', '1')
:gsub('2', '2')
:gsub('3', '3')
:gsub('4', '4')
:gsub('5', '5')
:gsub('6', '6')
:gsub('7', '7')
:gsub('8', '8')
:gsub('9', '9')
:gsub('century', 'صٔدی')
:gsub('BCE', 'مَسیٖح برٛونٛہہ')
:gsub('million years', 'مِلیَن ؤری')
:gsub('AD', 'عیٖسوی')
:gsub('square kilometre', 'کِلومیٖٹَر چَکور')
:gsub('kilometre', 'کِلومیٖٹَر')
end
function formatDate(lang, dateString, fallback, format)
-- Check if the date is year-only (Wikidata uses -00-00 for unknown month/day)
local isYearOnly = string.find(dateString, '%-00%-00T') ~= nil
-- If no specific format is requested, set default based on precision
if not format then
if isYearOnly then
format = 'Y' -- Only show the Year
else
format = 'j xg Y' -- Show Day Month Year
end
end
-- For BCE dates (starting with -), MediaWiki's formatDate often returns the raw string.
-- We return it here so toKashmirinumbers can translate "century" and "BCE" later.
if dateString:sub(1, 1) == '-' then return fallback or dateString end
-- Standardize the string for the parser
dateString = dateString:gsub('%-00%-00T', '-01-01T')
return lang:formatDate(format, dateString, false)
end
function isEnglish(text)
return string.find(text, '[abcdefghijklmnopqrstuvwxyz]') ~= nil
end
-- Returns the best statements for the first property this item has
function getBestStatement(item, ...)
for i,v in ipairs(arg) do
local statements = item:getBestStatements(v)
if len(statements) >= 1 and statements[1] and statements[1].mainsnak.datavalue then
return statements[1].mainsnak.datavalue.value
end
end
return nil
end
-- Returns the best statements for the first property this item has
function getBestStatementById(id, ...)
for i,v in ipairs(arg) do
local statements = mw.wikibase.getBestStatements( id, v)
if len(statements) >= 1 and statements[1] and statements[1].mainsnak.datavalue then
return statements[1].mainsnak.datavalue.value
end
end
return nil
end
function len(t)
local count = 0
for _ in pairs(t) do count = count + 1 end
return count
end
function isEmpty(s)
return s == nil or s == ''
end
local module_properties = { ['item'] = true, ['آئٹم'] = true, ['کھٔٹِتھ'] = true, ['صِرِف کٲشُر'] = true, ['module'] = true, ['ماڈیول'] = true }
function getOverridenProperties(args)
properties = {}
for key, value in pairs(args) do
if (not module_properties[key]) then
properties[key:upper()] = value
end
end
return properties
end
local p = {}
function p.databox(frame)
local args = frame:getParent().args
local itemId = nil
local show_english_properties = true
if args.item or args['اَیٹم'] then
itemId = args.item or args['اَیٹم']
end
if args['صِرِف کٲشُر'] == true or args['صِرِف کٲشُر'] == 'آ' then
show_english_properties = false
end
local overriden_properties = getOverridenProperties(args)
local hidden_properties = {}
if args['کھٔٹِتھ'] then
hidden_properties = mw.text.split(args['کھٔٹِتھ'], "%s*[,،]%s*")
end
local lang = mw.language.getContentLanguage()
local item = mw.wikibase.getEntity(itemId)
local levels = 3 -- Default Max Levels for hierarchy
if item == nil then
mw.addWarning("Wikidata item not found")
return ""
end
-- ==========================================
-- NEW: Get Dynamic Theme securely via pcall
-- ==========================================
local themeColor = '#F2F2F2'
local themeIcon = ''
local themeTextColor = 'black' -- Default text color
local success, themeModule = pcall(require, 'Module:Databox/theme')
if success and type(themeModule) == 'table' then
local themeData = themeModule.getTheme(args, item)
if themeData then
themeColor = themeData.color or '#F2F2F2'
themeIcon = themeData.icon or ''
themeTextColor = themeData.textcolor or 'black' -- Pull the text color!
end
end
local headerText = item:getLabel() or mw.title.getCurrentTitle().text
if themeIcon ~= '' then
headerText = string.format("[[File:%s|22px|middle|link=]] %s", themeIcon, headerText)
end
-- ==========================================
--Table Construction
local dataTable = mw.html.create('table')
:addClass('infobox vcard')
:css({
['width'] = '22em'
})
-- Title
dataTable:tag('tr'):tag('th')
:addClass('fn')
:attr('colspan', 2)
:css({
['text-align'] = 'center',
['background-color'] = themeColor,
['border-top'] = args.titleborder or 'none',
['border-bottom'] = args.titleborder or 'none',
['padding'] = '0.5em 0',
['margin'] = '0.5em 0',
['font-size'] = '125%',
['color'] = args.titletextcolor or themeTextColor,
['font-weight'] = 'bold',
})
:wikitext(headerText)
-- Native name
local officialName = getBestStatement(item, 'P1448', 'P1559')
if officialName then
if officialName.language ~= 'ks' then
local langName = mw.language.fetchLanguageName(officialName.language, 'ks')
dataTable:tag('tr'):tag('th')
:attr('colspan', 2)
:css({
['text-align'] = 'center',
padding = '0.5em 0',
margin = '0.5em 0',
['font-size'] = '90%',
['font-weight'] = 'bold',
['max-width'] = '240px'
})
:wikitext('اَصٕل ناو [[' .. langName ..']] زَبانہِ مَنٛز: ' .. officialName.text)
end
end
-- 1. Logo (P154) - 200px
local logo = args['لوگو'] or args['logo']
-- Manual caption for Logo
local logo_caption = args['لوگو_تَفصیٖل'] or args['logo_caption']
if not logo and item then
local st = item:getBestStatements('P154')
if #st > 0 then logo = st[1].mainsnak.datavalue.value end
end
if logo then
local logoCell = dataTable:tag('tr'):tag('td')
:attr('colspan', 2)
:css({['text-align'] = 'center', ['padding-bottom'] = '5px'})
-- Render Logo
logoCell:wikitext('[[File:' .. logo .. '|frameless|200px]]')
-- Render Logo Caption (Only if manually added)
if logo_caption then
logoCell:tag('div')
:css({['padding-top'] = '0.4em', ['line-height'] = '1.2em', ['font-size'] = '90%'})
:wikitext(logo_caption)
end
end
-- 2. Image (P18) - 300px
local image = args['تَصویٖر'] or args['image']
-- Manual caption for Image
local caption = args['تَصویٖر_تَفصیٖل'] or args['image_caption']
if not image and item then
local st = item:getBestStatements('P18')
if #st > 0 then image = st[1].mainsnak.datavalue.value end
end
if image then
local imageCell = dataTable:tag('tr'):tag('td')
:attr('colspan', 2)
:css({['text-align'] = 'center'})
-- Render Image
imageCell:wikitext('[[File:' .. image .. '|frameless|300px]]')
-- Render Image Caption (Only if manually added)
if caption then
imageCell:tag('div')
:css({['padding-top'] = '0.4em', ['line-height'] = '1.2em', ['font-size'] = '90%'})
:wikitext(caption)
end
end
-- P31 (Instance of)
local p31_stmts = item:getBestStatements('P31')
local p31_links = {} -- ALWAYS create this table, even if empty
if #p31_stmts > 0 then
for i = 1, math.min(#p31_stmts, 2) do
local snak = p31_stmts[i].mainsnak
if snak.datavalue and snak.datavalue.value.id then
local id = snak.datavalue.value.id
local label = mw.wikibase.getLabel(id) or id
local sitelink = mw.wikibase.getSitelink(id)
local en_sitelink = mw.wikibase.getSitelink(id, 'enwiki')
if sitelink then
table.insert(p31_links, '[[' .. sitelink .. '|' .. label .. ']]')
elseif en_sitelink then
local desc = getDescription(id)
table.insert(p31_links, '<span title="' .. desc .. '">' .. label .. '</span> [[File:Noun Project label icon 1116097 cc mirror.svg|12px|link=d:' .. id .. '|title=وِکی ڈیٹا]]')
else
table.insert(p31_links, label)
end
end
end
end
-- Render P31 row only if we actually have links
if #p31_links > 0 then
dataTable:tag('tr'):tag('td')
:attr('colspan', 2)
:css({
['background-color'] = themeColor,
['font-weight'] = 'bold',
['text-align'] = 'center',
['color'] = args.titletextcolor or themeTextColor,
['border-top'] = args.headerborder or 'none',
['border-bottom'] = args.headerborder or 'none',
['padding'] = '0.2em'
})
:wikitext(table.concat(p31_links, '، '))
end
local properties = mw.wikibase.orderProperties(item:getProperties())
local property_blacklist_hash = valuesToKeys(mergeTables(property_blacklist, hidden_properties))
local property_whitelist_hash = valuesToKeys(property_whitelist)
local properties_with_parents_hash = valuesToKeys(properties_with_parents)
local properties_with_children_hash = valuesToKeys(properties_with_children)
property_blacklist_hash['P31'] = true
property_blacklist_hash['P18'] = true
local edit_message = mw.message.new('vector-view-edit'):plain()
-- Birth/Death Logic
local date_of_birth = getBestStatement(item, 'P569')
local date_of_death = getBestStatement(item, 'P570')
local instance_of = getBestStatement(item, 'P31')
local place_of_birth = getBestStatement(item, 'P19')
local place_of_death = getBestStatement(item, 'P20')
local countryid = ' '
pcall(function ()
countryid = item.claims['P17'][1].mainsnak.datavalue.value.id
end)
if instance_of and instance_of.id == 'Q5' and date_of_birth and date_of_birth.time:sub(1, 1) ~= '-' then
local birth = getBirthStatement(lang, date_of_birth, date_of_death, place_of_birth)
dataTable:tag('tr')
:tag('th')
:attr('scope', 'row')
:css({
['padding-top'] = '0.225em',
['line-height'] = '1.1em',
['padding-right'] = '0.65em'
})
:wikitext('پٲدٲیِش'):done()
:tag('td')
:css({ ['line-height'] = '1.4em', ['max-width'] = '180px' })
:wikitext(frame:preprocess(birth))
if date_of_death then
local death = getDeathStatement(lang, date_of_birth, date_of_death, place_of_death)
dataTable:tag('tr')
:tag('th')
:attr('scope', 'row')
:css({
['padding-top'] = '0.225em',
['line-height'] = '1.1em',
['padding-right'] = '0.65em'
})
:wikitext('وَفات'):done()
:tag('td')
:css({ ['line-height'] = '1.4em', ['max-width'] = '180px' })
:wikitext(frame:preprocess(death))
end
end
local merged_chronology = false -- flag for P155/P156
for _, property in pairs(properties) do
-- Skip rendering P156 separately if we merged it in P155 loop
local skip_this_property = false
if merged_chronology and property == 'P156' then
skip_this_property = true
end
if not skip_this_property then
-- Safely get datatype
local claims = item.claims[property]
local datatype = 'unknown'
if claims and claims[1] and claims[1].mainsnak and claims[1].mainsnak.datatype then
datatype = claims[1].mainsnak.datatype
end
local english_label = mw.wikibase.getLabelByLang(property, 'en')
english_label = english_label and english_label:upper() or property
local kashmiri_label = mw.wikibase.getLabelByLang(property, 'ks')
if property == 'P1082' or property == 'P1120' or property == 'P1339' or property == 'P2046' or property == 'P2044' then
datatype = 'number'
end
overriden_value = overriden_properties[english_label] or overriden_properties[kashmiri_label]
local shouldShow = false
if property_whitelist_hash[property] then
shouldShow = true
elseif datatype ~= 'commonsMedia' and datatype ~= 'external-id'
and datatype ~= 'wikibase-property' and
datatype ~= 'geo-shape' and datatype ~= 'tabular-data' and
(not property_blacklist_hash[property] and not property_blacklist_hash[english_label] and not property_blacklist_hash[kashmiri_label]) then
shouldShow = true
end
local statements = item:getBestStatements(property)
if shouldShow and (show_english_properties or kashmiri_label ~= nil or overriden_value) and #statements <= 30 then
local propertyValue = item:formatStatements(property)
-- RESTORED FEATURE: Link property label (P1629)
-- Checks if the property (e.g., "Capital") has a subject item (e.g., "Capital City")
-- and if that item has a Kashmiri article, it links the label.
local propertyEntity = mw.wikibase.getEntity(property)
if propertyEntity then
local propertySubjects = propertyEntity:getBestStatements('P1629') -- 'P1629 = subject item of this property'
if #propertySubjects == 1
and propertyEntity['claims']['P1629'][1].mainsnak.snaktype == 'value' then
local subjectItemQid = propertyEntity['claims']['P1629'][1].mainsnak.datavalue.value.id
local articleSitelink = mw.wikibase.getSitelink(subjectItemQid)
if articleSitelink ~= nil then -- Property subject item has local article
propertyValue.label = '[[' .. articleSitelink .. '|' .. propertyValue.label .. ']]'
end
end
end
local value = overriden_value
-- Check if value is manually overriden
if (value == nil) then
-- HIERARCHY FEATURE LOGIC
if #statements == 1 and levels >= 2 and (properties_with_parents_hash[property] or properties_with_children_hash[property]) then
value = propertyValue.value
if property == 'P155' or property == 'P156' then -- follows or followed by
value = '• ' .. value
end
local level = {}
-- Show parent/child item if any:
if item['claims'][property][1].mainsnak.snaktype == 'value' then
level[1] = {}
level[1].value = item['claims'][property][1].mainsnak.datavalue.value
level[1].item = mw.wikibase.getEntity(level[1].value.id)
if level[1].item then
level[1].statements = mw.wikibase.getBestStatements(level[1].item.id, property)
else
level[1].statements = {}
end
end
if item['claims'][property][1].mainsnak.snaktype == 'value'
and #level[1].statements == 1 and level[1].statements[1].mainsnak.datavalue then
level[1].qid = level[1].statements[1].mainsnak.datavalue.value.id
if level[1].qid ~= countryid then -- do not repeat country
level[1].propertyValue = level[1].item:formatStatements(property)
if level[1].propertyValue then
-- Show multi-level list as bulleted list:
if not (property == 'P155' or property == 'P156') then
value = '• ' .. value
end
if properties_with_children_hash[property] then -- next lower level / child item
if property == 'P156' then
value = value .. '<br/>• ' .. level[1].propertyValue.value
else
value = value .. '<br/>' .. ' • ' .. level[1].propertyValue.value
end
else -- next higher level / parent item
if property == 'P155' then
value = '• ' .. level[1].propertyValue.value .. '<br/>' .. value
else
value = '• ' .. level[1].propertyValue.value .. '<br/> ' .. value
end
end
local lc = 2 -- level counter
while lc < levels and level[lc-1].item and level[lc-1].item.claims[property] and level[lc-1].item.claims[property][1] and level[lc-1].item.claims[property][1].mainsnak.datavalue do
level[lc]={}
level[lc].value = level[lc-1].item.claims[property][1].mainsnak.datavalue.value
level[lc].item = mw.wikibase.getEntity(level[lc].value.id)
if not level[lc].item then break end
level[lc].statements = mw.wikibase.getBestStatements(level[lc].item.id, property)
if #level[lc].statements > 0 and level[lc].statements[1].mainsnak.datavalue then
level[lc].qid = level[lc].statements[1].mainsnak.datavalue.value.id
if #level[lc].statements == 1 and level[lc].qid ~= countryid then
level[lc].propertyValue = level[lc].item:formatStatements(property)
if properties_with_children_hash[property] then
if property == 'P156' then
value = value .. '<br/>' .. '• ' .. level[lc].propertyValue.value
else
value = value .. '<br/>' .. string.rep(' ', lc) .. '• ' .. level[lc].propertyValue.value
end
else
if property == 'P155' then
value = '• ' .. level[lc].propertyValue.value .. '<br/>' .. value
else
value = '• ' .. level[lc].propertyValue.value .. '<br/> ' .. value:gsub('<br/>', '<br/> ')
end
end
lc = lc+1
else
break
end
else
break
end
end -- while lc
end
end
end
if property == 'P155' then -- P155 (follows / Chronology)
local visited = {}
visited[item.id] = true
-- 1. Fetch previous items (P155 chain) up to 2 steps back
local prev_items = {}
local curr_qid = item.id
for step = 1, 2 do
local st = mw.wikibase.getBestStatements(curr_qid, 'P155')
if st and st[1] and st[1].mainsnak and st[1].mainsnak.datavalue and st[1].mainsnak.datavalue.value and st[1].mainsnak.datavalue.value.id then
local prev_id = st[1].mainsnak.datavalue.value.id
if prev_id == countryid or visited[prev_id] then break end
table.insert(prev_items, prev_id)
visited[prev_id] = true
curr_qid = prev_id
else
break
end
end
value = ""
-- 2. Print previous items in CHRONOLOGICAL order (oldest first)
if #prev_items > 0 then
for i = #prev_items, 1, -1 do
local id = prev_items[i]
local label = mw.wikibase.getLabel(id) or mw.wikibase.getLabelByLang(id, 'en') or id
local sitelink = mw.wikibase.getSitelink(id)
local en_sitelink = mw.wikibase.getSitelink(id, 'enwiki')
if sitelink then
value = value .. "<p>• [[" .. sitelink .. "|" .. label .. "]]"
elseif en_sitelink then
local desc = getDescription(id)
value = value .. '<p>• <span title="' .. desc .. '">' .. label .. '</span> [[File:Noun Project label icon 1116097 cc mirror.svg|12px|link=d:' .. id .. '|title=وِکی ڈیٹا]]'
else
value = value .. "<p>• " .. label
end
end
end
-- 3. Add Current Item (Bold)
value = value .. "<p>• \'\'\'" .. (item:getLabel() or mw.title.getCurrentTitle().text) .. "\'\'\'"
-- 4. Fetch next items (P156 chain) up to 2 steps forward
local next_items = {}
curr_qid = item.id
for step = 1, 2 do
local st = mw.wikibase.getBestStatements(curr_qid, 'P156')
if st and st[1] and st[1].mainsnak and st[1].mainsnak.datavalue and st[1].mainsnak.datavalue.value and st[1].mainsnak.datavalue.value.id then
local next_id = st[1].mainsnak.datavalue.value.id
-- Stop if country ID or if item was already visited above
if next_id == countryid or visited[next_id] then break end
table.insert(next_items, next_id)
visited[next_id] = true
curr_qid = next_id
else
break
end
end
if #next_items > 0 then
for _, id in ipairs(next_items) do
local label = mw.wikibase.getLabel(id) or mw.wikibase.getLabelByLang(id, 'en') or id
local sitelink = mw.wikibase.getSitelink(id)
local en_sitelink = mw.wikibase.getSitelink(id, 'enwiki')
if sitelink then
value = value .. "<p>• [[" .. sitelink .. "|" .. label .. "]]"
elseif en_sitelink then
local desc = getDescription(id)
value = value .. '<p>• <span title="' .. desc .. '">' .. label .. '</span> [[File:Noun Project label icon 1116097 cc mirror.svg|12px|link=d:' .. id .. '|title=وِکی ڈیٹا]]'
else
value = value .. "<p>• " .. label
end
end
end
propertyValue.label = 'کال زان' -- Chronology
merged_chronology = true
end
-- END HIERARCHY LOGIC
else
-- Standard processing for non-hierarchical items
if datatype == 'time' then
local statementObject = getBestStatement(item, property)
if statementObject and statementObject.time then
local dateString = statementObject.time
if property == 'P1317' or property == 'P2031' then
value = formatDate(lang, dateString, propertyValue.value, 'Y')
else
value = formatDate(lang, dateString, propertyValue.value)
end
else
value = ''
end
elseif datatype == 'wikibase-item' then
-- Custom formatting to add Tooltip, Icon, and Date Qualifiers
local vals = {}
local has_qualifier = false
for _, stmt in ipairs(statements) do
if stmt.mainsnak.snaktype == 'value' and stmt.mainsnak.datavalue and stmt.mainsnak.datavalue.value.id then
local id = stmt.mainsnak.datavalue.value.id
local label = mw.wikibase.getLabel(id) or mw.wikibase.getLabelByLang(id, 'en') or id
local sitelink = mw.wikibase.getSitelink(id)
local en_sitelink = mw.wikibase.getSitelink(id, 'enwiki')
local item_str = ""
if sitelink then
item_str = '[[' .. sitelink .. '|' .. label .. ']]'
elseif en_sitelink then
local desc = getDescription(id)
item_str = '<span title="' .. desc .. '">' .. label .. '</span> [[File:Noun Project label icon 1116097 cc mirror.svg|12px|link=d:' .. id .. '|title=وِکی ڈیٹا]]'
else
item_str = label
end
-- Extract Qualifiers using the new sub-module
local formatted_str = qualifiersHelper.formatStatement(stmt, item_str, toKashmirinumbers)
-- If the sub-module added qualifiers, update the string and trigger the line-break flag
if formatted_str ~= item_str then
-- Optional: wrap in <small> tags to make qualifiers slightly smaller than main text
item_str = item_str .. ' <small>' .. formatted_str:sub(#item_str + 1) .. '</small>'
has_qualifier = true
end
table.insert(vals, item_str)
end
end
-- Switch format: Unbulleted list (<br/>) if qualifiers exist, comma-separated (، ) if not
if has_qualifier then
value = table.concat(vals, '<br/>')
else
value = table.concat(vals, '، ')
end
if value == '' then value = propertyValue.value end
else
if statements[1] then
local formatted_str = qualifiersHelper.formatStatement(statements[1], propertyValue.value, toKashmirinumbers)
if formatted_str ~= propertyValue.value then
-- Optional: wrap the appended qualifiers in <small> tags
value = propertyValue.value .. ' <small>' .. formatted_str:sub(#propertyValue.value + 1) .. '</small>'
else
value = propertyValue.value
end
else
value = propertyValue.value
end
end
end
elseif (value:find("^[Q]%d+") ~= nil) then
value = '[[' .. mw.wikibase.getSitelink(value) .. ']]'
end
if (datatype == 'time' or datatype == 'number' or datatype == 'quantity') then
value = toKashmirinumbers(value)
end
-- COLLAPSIBLE LIST LOGIC FOR > 10 ITEMS (NO HEADER)
if #statements > 10 then
value = '<div class="mw-collapsible mw-collapsed" id="mw-custom-collapsible-' .. property .. '" style="border:none; background:transparent;">' ..
'<div class="mw-collapsible-content">' .. value .. '</div></div>'
end
if not isEmpty(value) then
dataTable:tag('tr')
:tag('th')
:attr('scope', 'row')
:css({
['padding-top'] = '0.225em',
['line-height'] = '1.1em',
['padding-right'] = '0.65em',
['vertical-align'] = 'text-top'
})
:wikitext(lang:ucfirst(propertyValue.label)):done()
:tag('td')
:css({
['line-height'] = '1.4em',
['max-width'] = '180px',
['vertical-align'] = 'text-top'
})
:wikitext(frame:preprocess(value))
end
end
end -- end skip_this_property check
end
-- MANUAL ROWS AND CUSTOM HEADERS
for i = 1, 10 do
local label_param = 'label' .. i
local data_param = 'data' .. i
local header_param = 'customheader' .. i
-- Support for 3 columns
local data_a_param = 'data' .. i .. 'a'
local data_b_param = 'data' .. i .. 'b'
local data_c_param = 'data' .. i .. 'c'
local label_value = args[label_param]
local data_value = args[data_param]
local header_value = args[header_param]
local data_a_value = args[data_a_param]
local data_b_value = args[data_b_param]
local data_c_value = args[data_c_param]
-- STRICT CHECKS: Make sure the parameters aren't just empty strings
local has_label = label_value and #label_value > 0
local has_data = data_value and #data_value > 0
local has_data_a = data_a_value and #data_a_value > 0
local has_data_b = data_b_value and #data_b_value > 0
local has_data_c = data_c_value and #data_c_value > 0
-- Custom Header Row
if header_value and #header_value > 0 then
dataTable:tag('tr')
:tag('th')
:attr('colspan', '2')
:css({
['text-align'] = 'center',
['font-weight'] = 'bold',
['background-color'] = themeColor,
['color'] = args.titletextcolor or '#000000',
['border-top'] = args.headerborder or 'none',
['border-bottom'] = args.headerborder or 'none',
['padding'] = '0.2em'
})
:wikitext(frame:preprocess(header_value))
:done()
:done()
end
-- Data Row
if has_data or has_data_a or has_data_b or has_data_c then
local row = dataTable:tag('tr')
-- NEW Case 1: Dynamic Multi-Column layout (1, 2, or 3 columns)
if has_data_a or has_data_b or has_data_c then
local cell
if has_label then
row:tag('th')
:attr('scope', 'row')
:css({
['padding-top'] = '0.225em',
['line-height'] = '1.1em',
['padding-right'] = '0.65em'
})
:wikitext(label_value)
:done()
cell = row:tag('td')
else
cell = row:tag('td'):attr('colspan', '2')
end
local innerTable = cell:tag('table')
:css({
['width'] = '100%',
['table-layout'] = 'fixed',
['text-align'] = 'center',
['background'] = 'transparent',
['border-collapse'] = 'collapse',
['line-height'] = '1.4em'
})
local innerRow = innerTable:tag('tr'):css('vertical-align', 'top')
-- Count how many columns actually exist to calculate perfect width
local active_cols = 0
if has_data_a then active_cols = active_cols + 1 end
if has_data_b then active_cols = active_cols + 1 end
if has_data_c then active_cols = active_cols + 1 end
local col_width = (100 / active_cols) .. '%'
local printed_cols = 0
-- Column A
if has_data_a then
innerRow:tag('td')
:css({ ['width'] = col_width, ['padding'] = '0.2em' })
:wikitext(frame:preprocess(data_a_value))
:done()
printed_cols = printed_cols + 1
end
-- Column B
if has_data_b then
local css_b = { ['width'] = col_width, ['padding'] = '0.2em' }
if printed_cols > 0 then css_b['border-left'] = '1px solid #aaa' end
innerRow:tag('td')
:css(css_b)
:wikitext(frame:preprocess(data_b_value))
:done()
printed_cols = printed_cols + 1
end
-- Column C
if has_data_c then
local css_c = { ['width'] = col_width, ['padding'] = '0.2em' }
if printed_cols > 0 then css_c['border-left'] = '1px solid #aaa' end
innerRow:tag('td')
:css(css_c)
:wikitext(frame:preprocess(data_c_value))
:done()
end
-- Original Case 2: Both standard label and standard data exist
elseif has_label then
row:tag('th')
:attr('scope', 'row')
:css({
['padding-top'] = '0.225em',
['line-height'] = '1.1em',
['padding-right'] = '0.65em'
})
:wikitext(label_value)
:done()
row:tag('td')
:css({
['line-height'] = '1.4em',
['max-width'] = '180px'
})
:wikitext(frame:preprocess(data_value))
:done()
-- Original Case 3: Only standard data exists
else
row:tag('td')
:attr('colspan', '2')
:css({
['line-height'] = '1.6em',
['text-align'] = 'center',
['padding'] = '0.5em 0.3em',
['font-size'] = '100%'
})
:wikitext(frame:preprocess(data_value))
:done()
end
row:done()
end
end
-- Standalone Module at the bottom (Preserved exactly as requested)
local standalone_module = args['module'] or args['ماڈیول']
if standalone_module and #standalone_module > 0 then
dataTable:tag('tr')
:tag('td')
:attr('colspan', '2')
:css({
['padding'] = '0',
['text-align'] = 'center',
['width'] = '100%'
})
:wikitext(frame:preprocess(standalone_module))
:done()
:done()
end
-- Map
local coordinates_statements = item:getBestStatements('P625')
if #coordinates_statements >= 1 and coordinates_statements[1].mainsnak.datavalue and coordinates_statements[1].mainsnak.datavalue.value.globe == 'http://www.wikidata.org/entity/Q2' then
local latitude = coordinates_statements[1].mainsnak.datavalue.value.latitude
local longitude = coordinates_statements[1].mainsnak.datavalue.value.longitude
local geojson = {
type = 'Feature',
geometry = {
type = 'Point',
coordinates = { longitude, latitude }
},
properties = {
title = item:getLabel() or mw.title.getCurrentTitle().text,
['marker-symbol'] = 'marker',
['marker-color'] = '#224422',
}
}
dataTable:tag('tr'):tag('td')
:attr('colspan', 2)
:css({ ['text-align'] = 'center'})
:wikitext(frame:extensionTag('mapframe', mw.text.jsonEncode(geojson), {
height = 250,
width = 250,
frameless = 'frameless',
align = 'center',
latitude = latitude,
longitude = longitude,
zoom = 6
}))
end
local div_start = '<div style="border-style: solid; border-color:gray; border-width: 1px 0 0 0; margin-top: 2em; text-align: center;">'
local pen_icon = ' [[File:Wikidata-logo.svg|' .. edit_message .. '|22px|baseline|class=noviewer|link=https://www.wikidata.org/wiki/' .. item.id .. ']]'
local edit_message_link = '[https://www.wikidata.org/wiki/' .. item.id .. ' وِکی ڈیٹا پؠٹھ کٔرِو اؠڈِٹ]'
dataTable:tag('tr'):tag('td')
:attr('colspan', 2)
:css({ ['text-align'] = 'center'})
:wikitext(div_start .. edit_message_link .. pen_icon .. '</div>')
return tostring(dataTable)
end
return p
afoe6xoyg334etijdc63j9rceqnknh0
وِکیٖپیٖڈیا:رُکُن فِہرِست اؠڈِٹ تَعداد مُطٲبِق
4
14505
148946
148852
2026-08-10T18:01:24Z
Nadeemulhaqmir-bot
9480
Updated List of Wikipedians
148946
wikitext
text/x-wiki
== List of Wikipedians by number of edits ==
<div style="direction:ltr">
{| class="wikitable"
|- style="white-space:nowrap;"
! No.
! User
! Edit count
|-
| 1
| [[User: آیات محراج | آیات محراج]]
| [[Special:Contributions/آیات محراج|35366]]
|-
| 2
| <small><sub><span style="color:grey;"> </span></sub></small>[[User:511KeV|<span style="font-family:sans-serif; color:#FF1100; text-shadow:.2em .2em .4em #AfAfB1;">'''511KeV'''</span>]] [[User_talk:511KeV|<sup> '' (کتھ باتھ)''</sup>]]
| [[Special:Contributions/511KeV|21541]]
|-
| 3
| [[User:Nadeemulhaqmir-bot|<span style="font-weight: 700; font-family: cursive;color: #41bf14;text-shadow: -1px 1px 0px #030318;">Mir-Bot</span>🍁]][[User_talk:Nadeemulhaqmir-bot|<sup>Talk</sup>]]
| [[Special:Contributions/Nadeemulhaqmir-bot|14100]]
|-
| 4
| [[User: Uhaas bot | Uhaas bot]]
| [[Special:Contributions/Uhaas bot|11723]]
|-
| 5
| [[User: SakuraBot | SakuraBot]]
| [[Special:Contributions/SakuraBot|3548]]
|-
| 6
| [[User: SieBot | SieBot]]
| [[Special:Contributions/SieBot|2432]]
|-
| 7
| [[User: Xqbot | Xqbot]]
| [[Special:Contributions/Xqbot|2374]]
|-
| 8
| [[User: Humzah Rouf Phumboo | Humzah Rouf Phumboo]]
| [[Special:Contributions/Humzah Rouf Phumboo|2268]]
|-
| 9
| [[User: Koshur | Koshur]]
| [[Special:Contributions/Koshur|2227]]
|-
| 10
| —[[User:InternetArchiveBot|'''<span style="color:darkgrey;font-family:Courier New">InternetArchiveBot</span>''']] <span style="color:green;font-family:Rockwell">([[:en:User talk:InternetArchiveBot|Report bug]])</span>
| [[Special:Contributions/InternetArchiveBot|1759]]
|-
|}
</div>
mgr0nnchdjxdwaiwclvu3xoml92bfck
کرٛیٚیون شِن چین
0
19243
148897
131560
2026-08-10T14:21:45Z
آیات محراج
11062
[[کریئون شِن چین]] صَفہٕ آو پَکناونہٕ [[کرٛیٚیون شِن چین]] جاے، پَکناوَن وول صٲرف آیات محراج
131560
wikitext
text/x-wiki
{{مولوٗماتھ}}
اَکھ اینیمیٹڈ ٹیلی وِجَن موافقت گیہ 1992 مَنٛز ٹی وی آساہی پؠٹھ نشر گژھن شۆروٗع تہٕ یہِ چھ وٕنہٕ تہٕ پوٗرٕ دنیاہس مَنٛز واریاہن ٹیلی وِجَن نیٹ ورکن پؠٹھ جٲری تہٕ اَتھ چھِ 1000 کھۄتہٕ زیٛادٕ قسطہٕ۔ یہِ شو آو 30 زبانن مَنٛز ڈب کرنہٕ یم 45 ملکن مَنٛز نشر گٔیہ۔<ref name="tv-asahi.co.jp">{{ویب حَوالہٕ|title=tv asahi|テレビ朝日|url=http://www.tv-asahi.co.jp/buyers/contents/programguide/0001/data/7.pdf#toolbar=0&navpanes=0|url-status=dead|archive-url=https://web.archive.org/web/20170417170155/http://www.tv-asahi.co.jp/buyers/contents/programguide/0001/data/7.pdf|archive-date=April 17, 2017|access-date=September 16, 2018|publisher=Tv-asahi.co.jp}}</ref> 2015 ہس تام، '''کریین شِن چین''' تہٕ '''نیو کریین شن چین''' سیریز دۄشوے چھِ 58 ملین کھۄتہٕ زیٛادٕ کاپیہٕ کٕنمٕژ، ییٚمہ سۭتؠ یہِ تٲریخہِ مَنٛز ساروٕے کھۄتہٕ زیٛادٕ فروخت گژھن واجؠن منگا سیریزن مَنٛز اَکھ بنیٚیہ۔
== حَوالہٕ ==
dxm5lmd3ze4m572rdalkxvecsi5ddta
148899
148897
2026-08-10T14:22:26Z
آیات محراج
11062
/* */
148899
wikitext
text/x-wiki
{{infobox animaga}}
اَکھ اینیمیٹڈ ٹیلی وِجَن موافقت گیہ 1992 مَنٛز ٹی وی آساہی پؠٹھ نشر گژھن شۆروٗع تہٕ یہِ چھ وٕنہٕ تہٕ پوٗرٕ دنیاہس مَنٛز واریاہن ٹیلی وِجَن نیٹ ورکن پؠٹھ جٲری تہٕ اَتھ چھِ 1000 کھۄتہٕ زیٛادٕ قسطہٕ۔ یہِ شو آو 30 زبانن مَنٛز ڈب کرنہٕ یم 45 ملکن مَنٛز نشر گٔیہ۔<ref name="tv-asahi.co.jp">{{ویب حَوالہٕ|title=tv asahi|テレビ朝日|url=http://www.tv-asahi.co.jp/buyers/contents/programguide/0001/data/7.pdf#toolbar=0&navpanes=0|url-status=dead|archive-url=https://web.archive.org/web/20170417170155/http://www.tv-asahi.co.jp/buyers/contents/programguide/0001/data/7.pdf|archive-date=April 17, 2017|access-date=September 16, 2018|publisher=Tv-asahi.co.jp}}</ref> 2015 ہس تام، '''کریین شِن چین''' تہٕ '''نیو کریین شن چین''' سیریز دۄشوے چھِ 58 ملین کھۄتہٕ زیٛادٕ کاپیہٕ کٕنمٕژ، ییٚمہ سۭتؠ یہِ تٲریخہِ مَنٛز ساروٕے کھۄتہٕ زیٛادٕ فروخت گژھن واجؠن منگا سیریزن مَنٛز اَکھ بنیٚیہ۔
== حَوالہٕ ==
ovl0vqaxbvgcyay0vkz9en3jilyqpbb
148900
148899
2026-08-10T14:23:13Z
آیات محراج
11062
مِلاوُن [[زٲژ:اؠنِمے]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148900
wikitext
text/x-wiki
{{infobox animaga}}
اَکھ اینیمیٹڈ ٹیلی وِجَن موافقت گیہ 1992 مَنٛز ٹی وی آساہی پؠٹھ نشر گژھن شۆروٗع تہٕ یہِ چھ وٕنہٕ تہٕ پوٗرٕ دنیاہس مَنٛز واریاہن ٹیلی وِجَن نیٹ ورکن پؠٹھ جٲری تہٕ اَتھ چھِ 1000 کھۄتہٕ زیٛادٕ قسطہٕ۔ یہِ شو آو 30 زبانن مَنٛز ڈب کرنہٕ یم 45 ملکن مَنٛز نشر گٔیہ۔<ref name="tv-asahi.co.jp">{{ویب حَوالہٕ|title=tv asahi|テレビ朝日|url=http://www.tv-asahi.co.jp/buyers/contents/programguide/0001/data/7.pdf#toolbar=0&navpanes=0|url-status=dead|archive-url=https://web.archive.org/web/20170417170155/http://www.tv-asahi.co.jp/buyers/contents/programguide/0001/data/7.pdf|archive-date=April 17, 2017|access-date=September 16, 2018|publisher=Tv-asahi.co.jp}}</ref> 2015 ہس تام، '''کریین شِن چین''' تہٕ '''نیو کریین شن چین''' سیریز دۄشوے چھِ 58 ملین کھۄتہٕ زیٛادٕ کاپیہٕ کٕنمٕژ، ییٚمہ سۭتؠ یہِ تٲریخہِ مَنٛز ساروٕے کھۄتہٕ زیٛادٕ فروخت گژھن واجؠن منگا سیریزن مَنٛز اَکھ بنیٚیہ۔
== حَوالہٕ ==
[[زٲژ:اؠنِمے]]
7w7qzcv4ixd1db29l3vh17u1nsnx9wy
148941
148900
2026-08-10T18:00:56Z
Nadeemulhaqmir-bot
9480
باٹ چھُ غَلطی ٹھیٖکھ کَران [[وِکیٖپیٖڈیا:AutoWikiBrowser/Typos|غَلطی فِہرِست مُطٲبِق]]
148941
wikitext
text/x-wiki
{{infobox animaga}}
اَکھ اینیمیٹڈ ٹیلی وِجَن موافقت گیہ 1992 مَنٛز ٹی وی آساہی پؠٹھ نشر گژھن شۆروٗع تہٕ یہِ چھ وٕنہٕ تہٕ پوٗرٕ دُنؠیاہس مَنٛز واریاہن ٹیلی وِجَن نیٹ ورکن پؠٹھ جٲری تہٕ اَتھ چھِ 1000 کھۄتہٕ زیٛادٕ قسطہٕ۔ یہِ شو آو 30 زبانن مَنٛز ڈب کرنہٕ یم 45 ملکن مَنٛز نشر گٔیہ۔<ref name="tv-asahi.co.jp">{{ویب حَوالہٕ|title=tv asahi|テレビ朝日|url=http://www.tv-asahi.co.jp/buyers/contents/programguide/0001/data/7.pdf#toolbar=0&navpanes=0|url-status=dead|archive-url=https://web.archive.org/web/20170417170155/http://www.tv-asahi.co.jp/buyers/contents/programguide/0001/data/7.pdf|archive-date=April 17, 2017|access-date=September 16, 2018|publisher=Tv-asahi.co.jp}}</ref> 2015 ہس تام، '''کریین شِن چین''' تہٕ '''نیو کریین شن چین''' سیریز دۄشوے چھِ 58 ملین کھۄتہٕ زیٛادٕ کاپیہٕ کٕنمٕژ، ییٚمہ سٟتؠ یہِ تٲریخہِ مَنٛز ساروٕے کھۄتہٕ زیٛادٕ فروخت گژھن واجؠن منگا سیریزن مَنٛز اَکھ بنیٚیہ۔
== حَوالہٕ ==
[[زٲژ:اؠنِمے]]
q3tzyzvva6plenj53q5knzcmfcq03bm
ڈوریمون
0
19257
148893
87761
2026-08-10T14:12:25Z
آیات محراج
11062
148893
wikitext
text/x-wiki
{{infobox animaga}}
ڈوریمون چھِ اَکھ [[جاپان|جاپأنؠ]] اؠنِمے کارٛٹون یُس پوٗرٕ دنیاہس مَنٛز مشہؤر چھُ.
==حَوالہٕ==
{{حَوالہٕ وَرٲے}}
el7vn39rr250h45m37fau6odsvsp8ow
148894
148893
2026-08-10T14:12:45Z
آیات محراج
11062
/* */
148894
wikitext
text/x-wiki
{{infobox animaga}}
ڈوریمون چھِ اَکھ [[جاپان|جاپأنؠ]] اؠنِمے کارٛٹون یُس پوٗرٕ دنیاہس مَنٛز مشہوٗر چھُ.
==حَوالہٕ==
{{حَوالہٕ وَرٲے}}
7sdnf5kn6zp20eh4ufu9x7kpl2eet0f
148895
148894
2026-08-10T14:13:07Z
آیات محراج
11062
مِلاوُن [[زٲژ:اؠنِمے]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148895
wikitext
text/x-wiki
{{infobox animaga}}
ڈوریمون چھِ اَکھ [[جاپان|جاپأنؠ]] اؠنِمے کارٛٹون یُس پوٗرٕ دنیاہس مَنٛز مشہوٗر چھُ.
==حَوالہٕ==
{{حَوالہٕ وَرٲے}}
[[زٲژ:اؠنِمے]]
gl4pu6uh9d27fhkyfxd2dwtrg0hp0el
148942
148895
2026-08-10T18:01:01Z
Nadeemulhaqmir-bot
9480
باٹ چھُ غَلطی ٹھیٖکھ کَران [[وِکیٖپیٖڈیا:AutoWikiBrowser/Typos|غَلطی فِہرِست مُطٲبِق]]
148942
wikitext
text/x-wiki
{{infobox animaga}}
ڈوریمون چھِ اَکھ [[جاپان|جاپأنؠ]] اؠنِمے کارٛٹون یُس پوٗرٕ دُنؠیاہس مَنٛز مشہوٗر چھُ۔
==حَوالہٕ==
{{حَوالہٕ وَرٲے}}
[[زٲژ:اؠنِمے]]
sohxi9vkbckw47srv9g5i7lqz3kgc3h
فرما:ٹیلی وِجَن معلوٗمات ڈَبہٕ
10
20492
148903
142794
2026-08-10T14:26:54Z
آیات محراج
11062
/* */
148903
wikitext
text/x-wiki
{{Infobox
| italic title= {{{italic_title|}}}
| bodyclass = ib-tv vevent
| templatestyles = Infobox television/styles.css
| abovestyle = background:#CCCCFF
| aboveclass = summary navbox-title
| headerstyle = background:#CCCCFF
| above = {{{show_name|<includeonly>{{PAGENAME}}</includeonly>}}}
[[File:TV-icon-novela.svg|50px|left|link=]]
| image = {{#invoke:InfoboxImage | InfoboxImage | image={{#if:{{#invoke:WikidataIB|getValue|rank=best|P18|name=image|qid={{{qid|}}}|suppressfields={{{suppressfields|}}}|fetchwikidata=ALL|onlysourced=no|noicon=yes|maxvals=1|{{{image|}}}}}
|{{#invoke:WikidataIB|getValue|rank=best|P18|name=image|qid={{{qid|}}}|suppressfields={{{suppressfields|}}}|fetchwikidata=ALL|onlysourced=no|noicon=yes|maxvals=1|{{{image|}}}}}
|{{#invoke:WikidataIB|getValue|rank=best|P154|name=image|qid={{{qid|}}}|suppressfields={{{suppressfields|}}}|fetchwikidata=ALL|onlysourced=no|noicon=yes|maxvals=1|{{{image|}}}}}
}}
| size={{{image_size|{{{imagesize|}}}}}}
| sizedefault=frameless
| upright={{{image_upright|1}}}
| alt={{{alt|}}}
| suppressplaceholder=yes }}
| caption = {{{caption|}}}
| label1 = باقٕے ناو
| data1 = {{{show_name_2|}}}
| label2 = قٕسٕم
| class2 = سیریٖز
| data2 = {{#invoke:WikidataIB | getValue | rank=best |P136 |name=genre |qid={{{qid|}}} |suppressfields={{{suppressfields|}}} |fetchwikidata={{{fetchwikidata|ALL}}} |maxvals = 3|list=ubl|onlysourced={{{onlysourced|NO}}} |noicon={{{noicon|YES}}} |{{{genre|}}}}}
| label3 = قٕسٕم
| class3 = category
| data3 = {{{format|{{#statements:P7937}}}}} <!-- P7937 = format -->
| label4 = بناوَن وول
| data4 = {{{creator|{{#statements:P170}}}}} <!-- P170 = creator -->
| label5 = بناوَن وول
| data5 = {{{developer|{{#statements:P178}}}}} <!-- P178 = developer -->
| label6 = مُصنِف
| data6 = {{{writer|{{#statements:P50}}}}} <!-- P50 = author/writer -->
| label7 = ہِدایت کار
| class7 = attendee
| data7 = {{{director|{{#statements:P57}}}}} <!-- P57 = director -->
| label8 = تخلیقی <span style="white-space:nowrap">ڈایریکٹر</span>
| class8 = attendee
| data8 = {{{creative_director|{{#statements:P110}}}}} <!-- P110 = creative director -->
| label9 = پریزَنٛٹ کرن وول
| class9 = attendee
| data9 = {{{presenter|{{{host|{{#statements:P371}}}}}}}} <!-- P371 = presenter -->
| label10 = فَن کار
| class10 = attendee
| data10 = {{#invoke:WikidataIB | getValue |P161 |name=starring |qid={{{qid|}}} |suppressfields={{{suppressfields|}}} |fetchwikidata=ALL |noicon={{{noicon|Yes}}} |onlysourced ={{{onlysourced|No}}}|list={{{list|ubl}}} |collapse = 15 | {{{starring|}}} }} <!-- P161 = cast member -->
| label11 = Crucial
| class11 = attendee
| data11 = {{{judges|{{#statements:P2358}}}}} <!-- P2358 = has jury member -->
| label12 = ہِنٛدؠ آوازٕ
| class12 = attendee
| data12 = {{{voices|{{#statements:P725}}}}} <!-- P725 = voice actor -->
| label13 = بیان کرن وٲلؠ
| class13 = attendee
| data13 = {{{narrated|{{#statements:P2438}}}}} <!-- P2438 = narrator -->
| label14 = پتِم گؠوَن وٲلؠ
| data14 = {{{theme_music_composer|{{#statements:P86}}}}} <!-- P86 = composer -->
| label15 = شُروٲتی پس منظر
| data15 = {{{opentheme|}}} <!-- No direct Wikidata property for opening theme -->
| label16 = مۄکلُن تھیٖم
| data16 = {{{endtheme|}}} <!-- No direct Wikidata property for ending theme -->
| label17 = بٲتھ کار
| data17 = {{{composer|{{#statements:P86}}}}} <!-- P86 = composer -->
| label18 = آعازِ مُلٕک
| data18 = {{{country|{{#statements:P495}}}}} <!-- P495 = country of origin -->
| label19 = زَبان
| data19 = {{{language|{{#statements:P364}}}}} <!-- P364 = original language of work -->
| label20 = سیٖزنن ہِنٛز تعداد
| data20 = {{{num_seasons|{{#statements:P2437}}}}}
| label21 = سیریٖزن ہِنٛز گرَٛنٛد
| data21 = {{{num_series|}}}
| label22 = قٕسطن ہِنٛز گرَٛنٛد
| data22 = {{{num_episodes|{{#statements:P1113}}}}} {{#if: {{{list_episodes|}}} | <span style="white-space:nowrap">([[{{{list_episodes}}}|List of episodes]])</span>}}
| header23 = {{#if:{{{producer|{{#statements:P162}}}}}{{{executive_producer|{{#statements:P1431}}}}}{{{location|{{#statements:P915}}}}}{{{camera|}}}{{{runtime|{{#statements:P2047}}}}}{{{company|}}}{{{studio|}}}{{#statements:P272}}{{{distributor|}}}{{#statements:P750}}|بناوَٹ}}
| class23 = navbox-title
| label24 = ایگزیکٹو پرڈیوٗسر{{Pluralize from text|{{{executive_producer|{{#statements:P1431}}}}}|plural=ز}}
| data24 = {{{executive_producer|{{#statements:P1431}}}}}
| label25 = بناوَن وول
| data25 = {{{producer|{{#statements:P162}}}}} <!-- P162 = producer -->
| label26 = اؠڈِٹ کرن وول
| data26 = {{{editor|{{#statements:P1040}}}}} <!-- P1040 = film editor -->
| label27 = جاے
| data27 = {{{location|{{#statements:P915}}}}} <!-- P915 = filming location -->
| label28 = سینماٹوگرافی
| data28 = {{{cinematography|{{#statements:P344}}}}} <!-- P344 = director of photography -->
| label29 = کیمراہن ہُینٛد اِستِمال
| data29 = {{{camera|{{#statements:P4312}}}}}
| label30 = کال
| data30 = {{{runtime|{{#statements:P2047}}}}} <!-- P2047 = duration -->
| label31 = پرٛوڈکشَن {{Pluralize from text|{{If empty |{{{company|}}} |{{{studio|}}} |{{#property:p272}} }}|singular=کمپنی|plural=کمپنیہِ}}
| data31 = {{If empty |{{{company|}}} |{{{studio|}}} |{{#statements:P272}} }}
| label32 = تقسیٖم کرن وول
| data32 = {{{distributor|{{#statements:P750}}}}} <!-- P750 = distributor -->
| header33 = {{#if:
{{{channel|{{#statements:P449}}}}}
{{{network|{{#statements:P449}}}}}
{{{picture_format|{{#statements:P5783}}}}}
{{{audio_format|{{#statements:P1163}}}}}
{{{first_run|{{#statements:P1191}}}}}
{{{first_aired|{{#statements:P1191}}}}}
{{{last_aired|{{#statements:P2669}}}}}
| برٛوڈکاسٹِنٛگ }}
| class33 = navbox-title
| label34 = اصلی چنل
| data34 = {{{network|{{{channel|{{#statements:P449}}}}}}}} <!-- P449 = original network -->
| label35 = تصویٖر قٕسٕم
| data35 = {{{picture_format|{{#statements:P1191}}}}} <!-- P1191 = date of first broadcast (image format) -->
| label36 = آواز قٕسٕم
| data36 = {{{audio_format|{{#statements:P1163}}}}} <!-- P1163 = audio format -->
| label37 = گۄڈٕ ہاونہٕ آمُت
| data37 = {{{first_run|{{#statements:P1191}}}}} <!-- P1191 = first broadcast (might be replaced with P577 for publication date) -->
| label38 = {{#if: {{{last_aired|}}}|گۄڈنیُٛک نشریات}}
| data38 = {{{first_aired|{{#statements:P1191}}}}} {{#if: {{{last_aired|{{#statements:P2669}}}}}| – {{{last_aired|{{#statements:P2669}}}}}|}} <!-- P2669 = end time -->
| header40 = {{#if:{{{preceded_by|}}}{{{followed_by|}}}|تَوٲریٖخ}}
| class40 = navbox-title
| label41 = امہِ برونٛہہ
| data41 = {{{preceded_by|{{#statements:P155}}}}} <!-- P155 = preceded by -->
| label42 = امہ پتہٕ
| data42 = {{{followed_by|{{#statements:P156}}}}} <!-- P156 = followed by -->
| header43 = {{#if:{{{related|}}}|ہِیٛوُے}}
| label44 = ہِیٛوُے شو
| data44 = {{{related|}}}
| header45 = {{#if:{{{website|}}}{{{production_website|}}}|نیٚبرِم کُنٛڈٕ}}
| class45 = navbox-title
| data46 = {{#if:{{{website|}}}|[{{{website}}} {{{website_title|Website}}}]}}
| class46 = url
| data47 = {{#if:{{{production_website|}}}|[{{{production_website}}} Production website]}}
| class47 = url
}}{{#if:{{{bgcolour|}}}{{{bgcolor|}}}{{{color text|}}}{{{colour text|}}}|{{main other|[[Category:Television articles that use colour in the infobox]]}}}}<noinclude>
{{documentation}}
<!-- category and language links go on /doc, not here -->
</noinclude>
srx9wxhxmo6wfkd498bskwgpvp3kx30
پوکیمون
0
23703
148901
114163
2026-08-10T14:24:34Z
آیات محراج
11062
/* */
148901
wikitext
text/x-wiki
{{For|پوکیمون ٹی وی انیمے|پوکیمون (ٹی وی سیریٖز)}}
{{مولوٗماتھ|bgcolor=Lavender}}
پوکیمون فرنچائز چھِ صدیو پؠٹھٕ پوٗرٕ دُنیاہَس مَنٛز شُرؠن سٟتؠ رٲغِب کٔرمٕژ۔ پوکیمون چھُ جاپٲنؠ کمپنی نِنٹینڈو ہٕنٛز مِلکیت۔ یہِ اوس [[ساتوشی تاجیری]] یَن بَنوومُت۔ ماریو پتہٕ، بیٛاکھ اَکھ نینٹینڈو پروڈکٹ، پوکیمون چھُ دُنیاہُک دۄیِم ساروٕے کھۄتہٕ زیٛادٕ کٕننہٕ یِنہٕ وول ویٖڈیو گیم۔ یہِ چھُ انیمے، مانگا، تماشہٕ، کتابہٕ تہٕ باقٕے میڈیاہَن مَنٛز بناونہٕ آمُت۔<ref name="TPCi_About_Us">{{Cite web | title=The Pokémon Company International – About Us | url=https://corporate.pokemon.com/en-gb/about/ | website=corporate.pokemon.com | archive-url=https://archive.today/20240625071530/https://corporate.pokemon.com/en-gb/about/ | archive-date=25 June 2024 | url-status=live | quote=The Pokémon Company International manages the property outside of Asia}}</ref>
==ناوُک آگُر ==
پوکیمون لفٕظ چھُ پاکیٹ منسٹر پؠٹھٕ آمُت۔
==حَوالہٕ ==
0pvul76osynzjv8zqufmj38fhpghmh9
148940
148901
2026-08-10T18:00:51Z
Nadeemulhaqmir-bot
9480
باٹ چھُ غَلطی ٹھیٖکھ کَران [[وِکیٖپیٖڈیا:AutoWikiBrowser/Typos|غَلطی فِہرِست مُطٲبِق]]
148940
wikitext
text/x-wiki
{{For|پوکیمون ٹی وی انیمے|پوکیمون (ٹی وی سیریٖز)}}
{{مولوٗماتھ|bgcolor=Lavender}}
پوکیمون فرنچایز چھِ صدیو پؠٹھٕ پوٗرٕ دُنؠیاہَس مَنٛز شُرؠن سٟتؠ رٲغِب کٔرمٕژ۔ پوکیمون چھُ جاپٲنؠ کمپنی نِنٹینڈو ہٕنٛز مِلکیت۔ یہِ اوس [[ساتوشی تاجیری]] یَن بَنوومُت۔ ماریو پتہٕ، بیٛاکھ اَکھ نینٹینڈو پروڈکٹ، پوکیمون چھُ دُنؠیاہُک دۄیِم ساروٕے کھۄتہٕ زیٛادٕ کٕننہٕ یِنہٕ وول ویٖڈیو گیم۔ یہِ چھُ انیمے، مانگا، تماشہٕ، کتابہٕ تہٕ باقٕے میڈیاہَن مَنٛز بناونہٕ آمُت۔<ref name="TPCi_About_Us">{{Cite web | title=The Pokémon Company International – About Us | url=https://corporate.pokemon.com/en-gb/about/ | website=corporate.pokemon.com | archive-url=https://archive.today/20240625071530/https://corporate.pokemon.com/en-gb/about/ | archive-date=25 June 2024 | url-status=live | quote=The Pokémon Company International manages the property outside of Asia}}</ref>
==ناوُک آگُر ==
پوکیمون لفٕظ چھُ پاکیٹ منسٹر پؠٹھٕ آمُت۔
==حَوالہٕ ==
pv08xj1geg100vml2792m5jtsxpnbmp
پوکیمون (ٹی وی سیریٖز)
0
23704
148902
114162
2026-08-10T14:25:37Z
آیات محراج
11062
/* */
148902
wikitext
text/x-wiki
{{Further|پوکیمون}}
{{Infobox television}}
پوکیمون ([[جاپأنؠ زبان|جاپأنؠ]]: ポッケットモンスター، [[اَنٛگریٖزی زَبان|انگریزی]]: Pokemon) چھِ اَکھ واریٛاہ کالہٕ پؠٹھ چلَن واجیٚنؠ انیمے سیریز یۄس OLM, Inc۔ ہٕنٛدِ ذٔریعہٕ تیار کٔرمٕژ چھےٚ، یۄس [[پوکیمون|پوکیمون ویڈیو گیم]] سیریزَس پؠٹھ مبنی چھےٚ۔ یہِ گوٚو 1 اپریل 1997 مَنٛز ٹی وی [[ٹوکیو|ٹوکیوَس]] پؠٹھ نشر گوٚو۔<ref name="pokemon-company">{{cite web|url=https://corporate.pokemon.co.jp/en/aboutus/figures/|title=Business Summary|publisher=[[The Pokémon Company]]|date=March 2022|access-date=June 10, 2022|archive-date=October 10, 2020|archive-url=https://web.archive.org/web/20201010084800/https://corporate.pokemon.co.jp/en/aboutus/figures/|url-status=live}}</ref>
==حَوالہٕ ==
sd1qmrsdi3reqmpv8ytz38l3lmj5x0c
خان سر
0
30497
148950
147224
2026-08-11T06:01:59Z
SakuraBot
9889
[[وپ:باٹ|باٹ]] چھُ صَفَس زٲژ پؠٹھ کٲم کَران.
148950
wikitext
text/x-wiki
{{Infobox person/Wikidata|fetchwikidata=ALL|onlysourced=No|module={{Infobox social media personality
| child = yes
| youtube_handle = khangsresearchcentre1685
| youtube_display_name = Khan GS Research Centre
| youtube_handle2 = khanglobalstudies
| youtube_display_name2 = Khan Global Studies
| youtube_years_active = 2019–ازکال
| youtube_genre = {{hlist|[[تٲلیٖم]]|[[کوچِنٛگ]]}}
| stats_update = 15 جَنؤری 2026
}}|noicon=Yes}}
پیشہٕ ورانہٕ طور '''خان سر''' ناوٕ سٟتؠ زاننہٕ یِنہٕ وول چھُ اَکھ ہِندوستٲنؠ تٲلیٖم کار تہٕ [[یوٗٹیٛوٗبر]] یُس [[پٹنہ ضِلہٕ|پٹنہ]]، بہارَس مَنٛز چھُ۔ سُہ چھُ اَکھ کوچِنٛگ اِنسٹی چَلاوان یُس طٲلبہِ عٔلِم ہِنٛدُستانس مَنٛز مُقابلہٕ کِس اِمتِحانن خٲطرٕ تَیار چھُ کَران۔<ref name=":0">{{cite web|date=4 August 2023|title=Meet Khan Sir, Everyone's Favourite Online 'Guru' Who Has Impacted Lives of 21 Million|url=https://www.news18.com/viral/meet-khan-sir-everyones-favourite-online-guru-who-has-impacted-lives-of-21-million-8501401.html|access-date=4 August 2023|website=News18}}</ref>
== شُروٲتی زِندگی ==
خان اوس [[دیوریا]]، [[وۄتُر پرَٛدیش]] مَنٛز زامُت۔ تٔمؠ سُنٛد مول اوس ٹھیکدار پٲٹھؠ کٲم کران تہٕ تٔمؠ سٕنٛز موج ٲس گریلوٗ زنان۔
أمہِ کٔر پنٕنہِ سکوٗلی تٲلیٖم بھٹپر رانی مَنٛز مُکمل تہٕ پتہٕ کٔرٕن [[الہ آباد یوٗنِوَرسِٹی]] مَنٛز تٲلیٖم حٲصِل، ییٚتہِ أمہِ جغرافیہ مَنٛز بیچلر آف ساینَس ڈگری تہٕ جغرافیہ مَنٛز ماسٹرز ڈگری حٲصِل کٔر۔
2025 ہَس مَنٛز کوٚر أمہِ عینم صِدیٖقی عرف زینت خانَس سٟتہِ خانٛدر۔
== پیشہٕ ==
خانَن کوٚر پنُن [[یوٗٹیٛوٗب]] چینل «خان جی ایس ریسرچ سینٹر» شروٗع، ییٚتہِ سُہ تعلیٖمی مواد فراہم کران چھُ۔ 2021 مَنٛز کوٚر تٔمؠ آن لاین کورسز پیش کرنہٕ خٲطرٕ اَکھ موبایل ایپلیکیشن شۆروٗع۔
جوٗن 2025 ہَس مَنٛز کوٚر بہارٕکؠ گورنر [[عارف محمد خان|عارف محمد خانَن]] [[عید الاضحیٰ]] کِس موقعَس پؠٹھ پٹنہ ہَس مَنٛز خان سٕنٛدِس کوچِنٛگ انسٹی ٹیوٹُک دورٕ۔ دورَس دوران کٔر یِمو تٲلیٖم تہٕ سمٲجی خدشاتَن سٟتؠ وابستہٕ مسلَن پؠٹھ تبادلہٕ خیال، یَتھ مَنٛز ثقافتی اقدار تہٕ زنانَن خٕلاف جُرُم شٲمِل چھِ۔
==تنازٕ==
اَپریل ۲۰۲۱ ہَس مَنٛز، خان سٕنٛدِس فرانس-پاکِستان تالُقاتَن پؠٹھ اَکِس ؤڈیوَس آیہِ سۄشَل میٖڈیاہَس پؠٹھ تَنقیٖد کَرنہٕ۔
جَنؤری ۲۰۲۲ ہَس مَنٛز، ریلوے رِکروٗٹمینٹ بورڈ اِمتِحانَن سٟتؠ مُتعلِق اِحتِجاجَن ہٕنٛدِس سِلسِلَس مَنٛز آیہِ خانَس سَمیت واریاہَن کوچِنٛگ اِدارٕکؠن وۄستادَن خٕلاف اَکھ ایف آی آر (FIR) دَرٕج کَرنہٕ۔
دَسَمبَر ۲۰۲۴ ہَس مَنٛز کۆر تٔمؠ بِہار پَبلِک سٔروِس کَمِشَن اِمتِحانَس مَنٛز بَدلاوَن سٟتؠ مُتعلِق اَکِس اِحتِجاجَس مَنٛز شِرکَتھ۔
===اَنجَنا اوم کَشیَپَس سٟتؠ تَنازٕ===
۲۹ مٔیی ۲۰۲۶ ہَس مَنٛز، آج تَقَس پؠٹھ نیٖٹ (NEET) اِمتِحٲنی نِظامَس پؠٹھ اَکِس لایِو بَحسَس دوران، ٹی وی اینٛکَر اَنجَنا اوم کَشیَپَن کۆر آنلایِن "سِٹار وۄستادَن" ہٕنٛدِس بَڈن اَثَرَس تہٕ آنلایِن وۄستادَن ہٕنٛز تِجارَتھ کٲری پؠٹھ ٹیٖپ، تہٕ تِمَن خٲطرٕ کٔرٕن "دو کوڈی کے سِٹار ٹیچَر" یِتھؠ تَوہیٖن آمیز اَلفاظ اِستِمال، یٔمیُک مَطلَب چھُ فریب دِنہٕ وٲلؠ تہٕ دۆنٛکھہٕ باز۔
یَمہِ سٟتؠ خان سَر، اَبھِنَو تہٕ باقؠن سَمیت واریاہَن آنلایِن وۄستادَن ہٕنٛدِ طَرفہٕ ؤڈیو، پوسٹ تہٕ بَراڈکاسٹ ہٕنٛدِس شَکلہِ مَنٛز سۄشَل میٖڈیاہَس پؠٹھ بٔڈس پَیمانَس پؠٹھ رَدِعَمَل وۄتھ۔ تِمَن مَنٛز کِہَو کٔرؠ مَبیَنہٕ طورَس پؠٹھ "بِکاو پَترَکار"، "چاٹوٗکار"، "دَلی" یِتھؠ بَدنام کَرن وٲلؠ اَلفاظ اِستِمال، تہٕ تِمَن پؠٹھ لَگووُن اَنجَنا تہٕ آج تَقَس خٲطرٕ "دَلالی" کَرنُک تہٕ "فیک نیوٗز کی دُکان" چَلاونُک اِلزام۔
پَتہٕ کۆر اَنجَنا تہٕ ٹی وی ٹُڈے نؠٹورکَن، یٔمِس خٲطرٕ سۄ کٲم چھِ کَران، «فیصل خان (خان سَر)»، اَبھِنَے شَرما، بَبیٖتا تیاگی، اَروِنٛد بھَدۆرِیا تہٕ ۴ پی ایم (4PM) نیوز نؠٹورکَس خٕلاف دِلی ہاے کورٹَس مَنٛز اَکھ ہَتکِ عِزَتھ مُقَدمہٕ دٲیِر، یَتھ مَنٛز ۲ کَروڑ رۄپیَن ہٕنٛز بَرپٲیی تہٕ سۄشَل میٖڈیاہَس پؠٹھٕ بَدنام کَرن وٲلؠ مَوادَس فَوری طور ہَٹاونٕچ مَنٛگ کَرنہٕ آیہِ۔
۸ جوٗنَس کۆر دِلی ہاے کورٹَن کَشیَپَس تہٕ ٹی وی ٹُڈے یَس تِہِنٛدِس ہَتکِ عِزَتھ مُقَدمَس مَنٛز کانٛہہ تہِ عارضی رٲحَتھ دِنہٕ نِش اِنکار، تہٕ بَیسہِ ہٕنٛز اَگٕمؠ تٲریٖخ کٔرٕن ۱۷ جوٗن مُقَرَر۔
===۲۰۲۶ کوچِنٛگ اِدارٕچ فایِرِنٛگُک کیس===
جوٗن ۲۰۲۶ ہَس مَنٛز گَو پَٹناہَس مَنٛز خان سٕنٛدِس کوچِنٛگ اِدارَس نیٚبَر فایِرِنٛگُک اَکھ واقہٕ پیش۔ پُلیٖسَن کٔر اَمیُک واقہٕ ہٕنٛز تَحقیٖقات شۆروٗع تہٕ مَسلَس سٟتؠ مُتعلِق کۆرُن اَکھ کیس دَرٕج۔
اَمہِ پَتہٕ آیہِ کیسَس سٟتؠ مُتعلِق خانَس سٟتؠ جُڑِتھ قانوٗنی کاروٲیی شۆروٗع کَرنہٕ۔ جوٗن ۲۰۲۶ ہَس مَنٛز دۆپ تٔمِس سٕنٛدِ ؤکیٖلَن زِ خان مَنٛگہِ قَبٕل اَز گِرَفتٲری ضَمانَتھ تہٕ کَرِ نہٕ کورٹَس برونٛہہ کَنہِ سَرؠنٛڈَر یِتھ وَقٕتَس تام مَملہٕ تَحقیٖقاتَس تَل آسہِ۔
خانَن دۆپ زِ تٔمِس چھُ یَقیٖن زِ اَمیُک واقُک تالُق ہیٚکہِ کوچِنٛگ صَنعَتَس مَنٛز رِقابَتَس سٟتؠ ٲسِتھ، اَگَرچہِ پُلیٖسَن ٲس نہٕ تِتھ وَقٕتَس تام عَوٲمی طورَس پؠٹھ اَمہِ دٲواہٕچ تَصدیٖق کٔرمٕژ۔
دَرمِیانَس مَنٛز چھُ بِہارَس مَنٛز بی جے پی (BJP) حُکوٗمَتَن وۆنمُت زِ قانوٗن کَرِ پَنٕنؠ کاروٲیی۔ <ref>{{Cite news |title=Khan Sir controversy intensifies in Bihar; BJP says administration will work as per law|url=https://telanganatoday.com/khan-sir-controversy-intensifies-in-bihar-bjp-says-administration-will-work-as-per-law|access-date=2026-06-08 |work=IANS |language=en-IN }}</ref>
۹ جوٗن دِیُت پٹنہ سِوَل کورٹَن خانَس بیٛکہِ پیشی تام گِرِفتٲری نِش عارضی بچاو ۔<ref>{{Cite web|url=https://scroll.in/latest/1093443/patna-court-blocks-action-against-bihar-educator-youtuber-khan-sir-in-firing-case|title=Patna Court blocks action against Bihar educator YouTube Khan Sir in firing case|website=Scroll.in|access-date=9 June 2026}}</ref>
== سمٲجی کامہِ ==
خان سر چھُ سستہٕ صحتٕچ دیکھ بال سٟتؠ وابستہٕ اقداماتَن مَنٛز شٲمِل۔
2025 ہَس مَنٛز کھوٗل تٔمؠ پٹنہ ہَس مَنٛز اَکھ ہسپتال ییٚمیُک مقصد عوامس کم قٟمتٕچ ییٚلاج خدمات فراہم کرٕنؠ اوس۔ یہِ سہولیت چھِ واریاہَن سرکٲرؠ ہسپتالَو کھۄتہٕ کم شرحَن پؠٹھ ییٚلاج پیش کران، یَتھ مَنٛز اقتصٲدی طور کمزور طبقَن ہٕنٛز رسٲیی پؠٹھ توجہ چھِ دِنہٕ یِوان۔
رپورٹَن مَنٛز چھُ نوٹ کوٚرمُت زِ [[تَشخیٖص (طِب)|تشخیصی]] ٹیسٹ ہِش خٔدمات چھِ امہِ پہل کِس حصہٕ پٲٹھؠ واریاہ کم قٟمتَس پؠٹھ فراہم کرنہٕ یِوان۔
== عوٲمی آوریٛار ==
2025 ہَس مَنٛز کوٚر خان سرَن پٹناہَس مَنٛز اَکہِ بٔڑِس رکشا بندھن تقریبُک اہتمام یَتھ مَنٛز ساسہٕ بٔدؠ طٲلبہِ عٔلِمَو شِرکت کٔر۔ رپورٹَن مَنٛز چھُ ونٛنہٕ آمُت زِ تقریبَس دوران لَگ بَگ 15,000 زَنانَو گۄنٛڈ أمِس راکھی، یَتھ میٖڈیا ہُنٛد توجہ حٲصِل کٔر۔
== حَوالہٕ ==
[[زٲژ:یوٗٹیٛوٗبر]]
[[زٲژ:ہِندوستٲنؠ لوٗکھ]]
[[زٲژ:زِنٛدٕ لوٗکھ]]
[[زٲژ:1993 پٲدٲیِش]]
0kdkbvty2f5d45mdpr5oc0ayk22hssy
وِکیٖپیٖڈیا:Current events/Sports
4
30678
148959
141461
2026-08-11T07:03:12Z
آیات محراج
11062
/* */
148959
wikitext
text/x-wiki
{{وِکیٖپیٖڈیا:Current events/News Browser}}
<div dir="rtl" lang="ks" style="max-width: 1200px; margin: auto; background-color: #f5fafd; font-family: sans-serif; border: 1px solid #cce6ff;box-shadow: 3px 3px 10px rgba(0,0,0,0.2); border-radius: 8px; border-left: 5px solid cyan; padding: 15px; color: blue; font-size: 16px; font-weight: bold;">
<h3 style="margin-top: 0; color: #333; font-size: 20px;"> کھیلہٕ</h3>
*[[2026 فیٖفا عالمی کپ]] [[File:2026 FIFA World Cup ensign (PD version).png|30px|link=]]
</div>
<div dir="rtl" lang="ks" style="max-width: 1200px; margin: auto; background-color: #f5fafd; font-family: sans-serif; border: 1px solid #cce6ff;box-shadow: 3px 3px 10px rgba(0,0,0,0.2); border-radius: 8px; border-left: 5px solid cyan; padding: 15px; color: blue; font-size: 16px; font-weight: bold;">
<h3 style="margin-top: 0; color: #333; font-size: 20px;">باقٕے کھیلہٕ</h3>
*[[2026 وَنٛدٕ اولمپکس]] [[File:2026 Winter Olympics logo.svg|30px|link=]]
</div>
[[زٲژ:کھیل]]
kpx46ly8st9qu4v2e7zeccmg68nmojd
Module:Databox/theme
828
31968
148920
148864
2026-08-10T15:49:37Z
آیات محراج
11062
148920
Scribunto
text/plain
local p = {}
-- Q-ID Lookup Table for Colors and Icons
local themeMap = {
['Q5'] = { color = '#dce6f1', icon = '' },
['Q1221280'] = { color = '#cef2e0', icon = '' },
['Q47451145'] = { color = '#cef2e0', icon = '' },
['Q5393308'] = { color = '#800000', textcolor = '#FFFF00', icon = 'Maki7-religious-buddhist-white.svg' },
['Q1127126'] = { color = '#dce6f1', icon = 'JS Icon Edit.svg' },
['Q215380'] = { color = '#B0C4DE', icon = 'Simple Music.svg' },
['Q3839081'] = { color = '#E6E6FA', icon = 'Earthquake House Icons.svg' },
['Q1190554'] = { color = '#E6E6FA', icon = 'Breezeicons-actions-22-view-calendar.svg' },
['Q8068'] = { color = '#E6E6FA', icon = 'Flood icon.png' },
['Q3914'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q180958'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q9826'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q11862829'] = { color = '#F8D7DA', icon = 'Noun Project science icon 334989 cc.svg' },
['Q2465832'] = { color = '#F8D7DA', icon = 'Noun Project science icon 334989 cc.svg' },
['Q12184'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q3241045'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q44512'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q515'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q11460'] = { color = '#F5F5DC', icon = 'Map icons by Scott de Jonge - clothing-store.svg' },
['Q532'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q6256'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q4022'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q123705'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q164509'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q3506821'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q728'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q16521'] = { color = '#d0f0c0', icon = '' },
['Q729'] = { color = '#d0f0c0', icon = '' },
['Q756'] = { color = '#d0f0c0', icon = '' },
['Q11424'] = { color = '#ffc0cb', icon = '' },
['Q201658'] = { color = '#ffc0cb', icon = '' },
['Q515'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- city
['Q532'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- village
['Q6256'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- country
['Q4022'] = { color = '#cdff', icon = 'Watercources resources pl icon.svg' }, -- river
['Q8502'] = { color = '#e7dcc3', icon = 'Mountain Icon.svg' }, -- mountain
['Q103495'] = { color = '#B0C4DE', icon = 'Battle_icon_gladii.svg' },
['Q11514315'] = { color = '#B0C4DE', icon = 'Battle_icon_gladii.svg' },
['Q123705'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- neighborhood
['Q11271835'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- provincial capital
['Q1549591'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- big city
['Q51929311'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- largest city
['Q6957341'] = { color = '#CCAA99', icon = 'ReligijneSymbole2.svg' },
['Q9174'] = { color = '#CCAA99', icon = 'ReligijneSymbole2.svg' },
['Q29517555'] = { color = '#dce6f1', icon = 'OOjs UI icon language-ltr.svg' },
['Q8192'] = { color = '#dce6f1', icon = 'OOjs UI icon language-ltr.svg' },
['Q112826905'] = { color = '#f0dbb6', icon = 'Human brain icon.svg' },
['Q103812529'] = { color = '#f0dbb6', icon = 'Human brain icon.svg' },
['Q193622'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q618779'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q2003221'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q5398426'] = { color = '#ffc0cb', icon = '' },
['Q482994'] = { color = '#ffc0cb', icon = '' },
['default'] = { color = '#F2F2F2', icon = '' },
['Q196600'] = { color = '#ffc0cb', icon = '' }, -- media franchise
}
-- Clean parameters passed from Template:Databox
local function cleanParam(val)
if val then
val = mw.text.trim(val)
if val ~= '' then return val end
end
return nil
end
function p.getTheme(args, item)
-- Check for manual user parameters first
local themeColor = cleanParam(args.bgcolor) or cleanParam(args['color']) or cleanParam(args['رَنٛگ'])
local themeIcon = cleanParam(args.icon) or cleanParam(args['نِشان'])
local themeTextColor = cleanParam(args.titletextcolor)
-- If all are explicitly set by the user, return them immediately
if themeColor and themeIcon and themeTextColor then
return { color = themeColor, icon = themeIcon, textcolor = themeTextColor }
end
local autoColor = nil
local autoIcon = nil
local autoTextColor = nil
-- Check Wikidata P31 (instance of) statements using the safest method
if item and item.id then
local statements = mw.wikibase.getBestStatements(item.id, 'P31')
if statements then
for _, stmt in ipairs(statements) do
if stmt.mainsnak and stmt.mainsnak.snaktype == 'value' and stmt.mainsnak.datavalue then
local qid = stmt.mainsnak.datavalue.value.id
if themeMap[qid] then
autoColor = themeMap[qid].color
autoIcon = themeMap[qid].icon
autoTextColor = themeMap[qid].textcolor
break
end
end
end
end
end
return {
color = themeColor or autoColor or themeMap['default'].color,
icon = themeIcon or autoIcon or themeMap['default'].icon,
textcolor = themeTextColor or autoTextColor or (themeMap['default'] and themeMap['default'].textcolor) or 'black'
}
end
-- The foolproof debug function!
function p.debugtest(frame)
local qid = frame.args[1] or 'Q17042539'
local item = mw.wikibase.getEntity(qid)
local found_ids = {}
if item and item.id then
local statements = mw.wikibase.getBestStatements(item.id, 'P31')
if statements then
for _, stmt in ipairs(statements) do
if stmt.mainsnak and stmt.mainsnak.snaktype == 'value' and stmt.mainsnak.datavalue then
table.insert(found_ids, stmt.mainsnak.datavalue.value.id)
end
end
end
end
local theme = p.getTheme({}, item)
return "Debug Result for " .. qid .. " -> Color: " .. tostring(theme.color) .. " | Text: " .. tostring(theme.textcolor) .. " | Found P31 IDs on Wikidata: " .. table.concat(found_ids, ", ")
end
return p
114evrs5zfe89ourkyowak9mv8ag2nr
148954
148920
2026-08-11T06:32:07Z
آیات محراج
11062
148954
Scribunto
text/plain
local p = {}
-- Q-ID Lookup Table for Colors and Icons
local themeMap = {
['Q5'] = { color = '#dce6f1', icon = '' },
['Q1221280'] = { color = '#cef2e0', icon = '' },
['Q47451145'] = { color = '#cef2e0', icon = '' },
['Q7889'] = { color = '#FFDEAD', icon = 'Gamepadicon.svg' },
['Q5393308'] = { color = '#800000', textcolor = '#FFFF00', icon = 'Maki7-religious-buddhist-white.svg' },
['Q1127126'] = { color = '#dce6f1', icon = 'JS Icon Edit.svg' },
['Q215380'] = { color = '#B0C4DE', icon = 'Simple Music.svg' },
['Q3839081'] = { color = '#E6E6FA', icon = 'Earthquake House Icons.svg' },
['Q1190554'] = { color = '#E6E6FA', icon = 'Breezeicons-actions-22-view-calendar.svg' },
['Q8068'] = { color = '#E6E6FA', icon = 'Flood icon.png' },
['Q3914'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q180958'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q9826'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q11862829'] = { color = '#F8D7DA', icon = 'Noun Project science icon 334989 cc.svg' },
['Q2465832'] = { color = '#F8D7DA', icon = 'Noun Project science icon 334989 cc.svg' },
['Q12184'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q3241045'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q44512'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q515'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q11460'] = { color = '#F5F5DC', icon = 'Map icons by Scott de Jonge - clothing-store.svg' },
['Q532'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q6256'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q4022'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q123705'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q164509'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q3506821'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q728'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q16521'] = { color = '#d0f0c0', icon = '' },
['Q729'] = { color = '#d0f0c0', icon = '' },
['Q756'] = { color = '#d0f0c0', icon = '' },
['Q11424'] = { color = '#ffc0cb', icon = '' },
['Q201658'] = { color = '#ffc0cb', icon = '' },
['Q515'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- city
['Q532'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- village
['Q6256'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- country
['Q4022'] = { color = '#cdff', icon = 'Watercources resources pl icon.svg' }, -- river
['Q8502'] = { color = '#e7dcc3', icon = 'Mountain Icon.svg' }, -- mountain
['Q103495'] = { color = '#B0C4DE', icon = 'Battle_icon_gladii.svg' },
['Q11514315'] = { color = '#B0C4DE', icon = 'Battle_icon_gladii.svg' },
['Q123705'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- neighborhood
['Q11271835'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- provincial capital
['Q1549591'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- big city
['Q51929311'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- largest city
['Q6957341'] = { color = '#CCAA99', icon = 'ReligijneSymbole2.svg' },
['Q9174'] = { color = '#CCAA99', icon = 'ReligijneSymbole2.svg' },
['Q29517555'] = { color = '#dce6f1', icon = 'OOjs UI icon language-ltr.svg' },
['Q8192'] = { color = '#dce6f1', icon = 'OOjs UI icon language-ltr.svg' },
['Q112826905'] = { color = '#f0dbb6', icon = 'Human brain icon.svg' },
['Q103812529'] = { color = '#f0dbb6', icon = 'Human brain icon.svg' },
['Q193622'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q618779'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q2003221'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q5398426'] = { color = '#ffc0cb', icon = '' },
['Q482994'] = { color = '#ffc0cb', icon = '' },
['default'] = { color = '#F2F2F2', icon = '' },
['Q196600'] = { color = '#ffc0cb', icon = '' }, -- media franchise
}
-- Clean parameters passed from Template:Databox
local function cleanParam(val)
if val then
val = mw.text.trim(val)
if val ~= '' then return val end
end
return nil
end
function p.getTheme(args, item)
-- Check for manual user parameters first
local themeColor = cleanParam(args.bgcolor) or cleanParam(args['color']) or cleanParam(args['رَنٛگ'])
local themeIcon = cleanParam(args.icon) or cleanParam(args['نِشان'])
local themeTextColor = cleanParam(args.titletextcolor)
-- If all are explicitly set by the user, return them immediately
if themeColor and themeIcon and themeTextColor then
return { color = themeColor, icon = themeIcon, textcolor = themeTextColor }
end
local autoColor = nil
local autoIcon = nil
local autoTextColor = nil
-- Check Wikidata P31 (instance of) statements using the safest method
if item and item.id then
local statements = mw.wikibase.getBestStatements(item.id, 'P31')
if statements then
for _, stmt in ipairs(statements) do
if stmt.mainsnak and stmt.mainsnak.snaktype == 'value' and stmt.mainsnak.datavalue then
local qid = stmt.mainsnak.datavalue.value.id
if themeMap[qid] then
autoColor = themeMap[qid].color
autoIcon = themeMap[qid].icon
autoTextColor = themeMap[qid].textcolor
break
end
end
end
end
end
return {
color = themeColor or autoColor or themeMap['default'].color,
icon = themeIcon or autoIcon or themeMap['default'].icon,
textcolor = themeTextColor or autoTextColor or (themeMap['default'] and themeMap['default'].textcolor) or 'black'
}
end
-- The foolproof debug function!
function p.debugtest(frame)
local qid = frame.args[1] or 'Q17042539'
local item = mw.wikibase.getEntity(qid)
local found_ids = {}
if item and item.id then
local statements = mw.wikibase.getBestStatements(item.id, 'P31')
if statements then
for _, stmt in ipairs(statements) do
if stmt.mainsnak and stmt.mainsnak.snaktype == 'value' and stmt.mainsnak.datavalue then
table.insert(found_ids, stmt.mainsnak.datavalue.value.id)
end
end
end
end
local theme = p.getTheme({}, item)
return "Debug Result for " .. qid .. " -> Color: " .. tostring(theme.color) .. " | Text: " .. tostring(theme.textcolor) .. " | Found P31 IDs on Wikidata: " .. table.concat(found_ids, ", ")
end
return p
kd47q9q1e42ngjbkb4tgavppl7z7eit
148961
148954
2026-08-11T07:50:29Z
آیات محراج
11062
148961
Scribunto
text/plain
local p = {}
-- Q-ID Lookup Table for Colors and Icons
local themeMap = {
['Q5'] = { color = '#dce6f1', icon = '' },
['Q1221280'] = { color = '#cef2e0', icon = '' },
['Q47451145'] = { color = '#cef2e0', icon = '' },
['Q11012'] = { color = '#D3D3D3', icon = 'OOjs UI icon robot.svg' },
['Q584529'] = { color = '#D3D3D3', icon = 'OOjs UI icon robot.svg' },
['Q7889'] = { color = '#FFDEAD', icon = 'Gamepadicon.svg' },
['Q5393308'] = { color = '#800000', textcolor = '#FFFF00', icon = 'Maki7-religious-buddhist-white.svg' },
['Q1127126'] = { color = '#dce6f1', icon = 'JS Icon Edit.svg' },
['Q215380'] = { color = '#B0C4DE', icon = 'Simple Music.svg' },
['Q3839081'] = { color = '#E6E6FA', icon = 'Earthquake House Icons.svg' },
['Q1190554'] = { color = '#E6E6FA', icon = 'Breezeicons-actions-22-view-calendar.svg' },
['Q8068'] = { color = '#E6E6FA', icon = 'Flood icon.png' },
['Q3914'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q180958'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q9826'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q11862829'] = { color = '#F8D7DA', icon = 'Noun Project science icon 334989 cc.svg' },
['Q2465832'] = { color = '#F8D7DA', icon = 'Noun Project science icon 334989 cc.svg' },
['Q12184'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q3241045'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q44512'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q515'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q11460'] = { color = '#F5F5DC', icon = 'Map icons by Scott de Jonge - clothing-store.svg' },
['Q532'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q6256'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q4022'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q123705'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q164509'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q3506821'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q728'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q16521'] = { color = '#d0f0c0', icon = '' },
['Q729'] = { color = '#d0f0c0', icon = '' },
['Q756'] = { color = '#d0f0c0', icon = '' },
['Q11424'] = { color = '#ffc0cb', icon = '' },
['Q201658'] = { color = '#ffc0cb', icon = '' },
['Q515'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- city
['Q532'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- village
['Q6256'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- country
['Q4022'] = { color = '#cdff', icon = 'Watercources resources pl icon.svg' }, -- river
['Q8502'] = { color = '#e7dcc3', icon = 'Mountain Icon.svg' }, -- mountain
['Q103495'] = { color = '#B0C4DE', icon = 'Battle_icon_gladii.svg' },
['Q11514315'] = { color = '#B0C4DE', icon = 'Battle_icon_gladii.svg' },
['Q123705'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- neighborhood
['Q11271835'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- provincial capital
['Q1549591'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- big city
['Q51929311'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- largest city
['Q6957341'] = { color = '#CCAA99', icon = 'ReligijneSymbole2.svg' },
['Q9174'] = { color = '#CCAA99', icon = 'ReligijneSymbole2.svg' },
['Q29517555'] = { color = '#dce6f1', icon = 'OOjs UI icon language-ltr.svg' },
['Q8192'] = { color = '#dce6f1', icon = 'OOjs UI icon language-ltr.svg' },
['Q112826905'] = { color = '#f0dbb6', icon = 'Human brain icon.svg' },
['Q103812529'] = { color = '#f0dbb6', icon = 'Human brain icon.svg' },
['Q193622'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q618779'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q2003221'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q5398426'] = { color = '#ffc0cb', icon = '' },
['Q482994'] = { color = '#ffc0cb', icon = '' },
['default'] = { color = '#F2F2F2', icon = '' },
['Q196600'] = { color = '#ffc0cb', icon = '' }, -- media franchise
}
-- Clean parameters passed from Template:Databox
local function cleanParam(val)
if val then
val = mw.text.trim(val)
if val ~= '' then return val end
end
return nil
end
function p.getTheme(args, item)
-- Check for manual user parameters first
local themeColor = cleanParam(args.bgcolor) or cleanParam(args['color']) or cleanParam(args['رَنٛگ'])
local themeIcon = cleanParam(args.icon) or cleanParam(args['نِشان'])
local themeTextColor = cleanParam(args.titletextcolor)
-- If all are explicitly set by the user, return them immediately
if themeColor and themeIcon and themeTextColor then
return { color = themeColor, icon = themeIcon, textcolor = themeTextColor }
end
local autoColor = nil
local autoIcon = nil
local autoTextColor = nil
-- Check Wikidata P31 (instance of) statements using the safest method
if item and item.id then
local statements = mw.wikibase.getBestStatements(item.id, 'P31')
if statements then
for _, stmt in ipairs(statements) do
if stmt.mainsnak and stmt.mainsnak.snaktype == 'value' and stmt.mainsnak.datavalue then
local qid = stmt.mainsnak.datavalue.value.id
if themeMap[qid] then
autoColor = themeMap[qid].color
autoIcon = themeMap[qid].icon
autoTextColor = themeMap[qid].textcolor
break
end
end
end
end
end
return {
color = themeColor or autoColor or themeMap['default'].color,
icon = themeIcon or autoIcon or themeMap['default'].icon,
textcolor = themeTextColor or autoTextColor or (themeMap['default'] and themeMap['default'].textcolor) or 'black'
}
end
-- The foolproof debug function!
function p.debugtest(frame)
local qid = frame.args[1] or 'Q17042539'
local item = mw.wikibase.getEntity(qid)
local found_ids = {}
if item and item.id then
local statements = mw.wikibase.getBestStatements(item.id, 'P31')
if statements then
for _, stmt in ipairs(statements) do
if stmt.mainsnak and stmt.mainsnak.snaktype == 'value' and stmt.mainsnak.datavalue then
table.insert(found_ids, stmt.mainsnak.datavalue.value.id)
end
end
end
end
local theme = p.getTheme({}, item)
return "Debug Result for " .. qid .. " -> Color: " .. tostring(theme.color) .. " | Text: " .. tostring(theme.textcolor) .. " | Found P31 IDs on Wikidata: " .. table.concat(found_ids, ", ")
end
return p
svezle1mu8by5h4e1r98q31rm3bciff
148973
148961
2026-08-11T09:44:33Z
آیات محراج
11062
148973
Scribunto
text/plain
local p = {}
-- Q-ID Lookup Table for Colors and Icons
local themeMap = {
['Q5'] = { color = '#dce6f1', icon = '' },
['Q1221280'] = { color = '#cef2e0', icon = '' },
['Q47451145'] = { color = '#cef2e0', icon = '' },
['Q11012'] = { color = '#D3D3D3', icon = 'OOjs UI icon robot.svg' },
['Q584529'] = { color = '#D3D3D3', icon = 'OOjs UI icon robot.svg' },
['Q7889'] = { color = '#FFDEAD', icon = 'Gamepadicon.svg' },
['Q5393308'] = { color = '#800000', textcolor = '#FFFF00', icon = 'Maki7-religious-buddhist-white.svg' },
['Q1127126'] = { color = '#dce6f1', icon = 'JS Icon Edit.svg' },
['Q215380'] = { color = '#B0C4DE', icon = 'Simple Music.svg' },
['Q3839081'] = { color = '#E6E6FA', icon = 'Earthquake House Icons.svg' },
['Q7944'] = { color = '#E6E6FA', icon = 'Earthquake House Icons.svg' },
['Q1190554'] = { color = '#E6E6FA', icon = 'Breezeicons-actions-22-view-calendar.svg' },
['Q8068'] = { color = '#E6E6FA', icon = 'Flood icon.png' },
['Q3914'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q180958'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q9826'] = { color = '#F8D7DA', icon = 'School Transparent.png' },
['Q11862829'] = { color = '#F8D7DA', icon = 'Noun Project science icon 334989 cc.svg' },
['Q2465832'] = { color = '#F8D7DA', icon = 'Noun Project science icon 334989 cc.svg' },
['Q12184'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q3241045'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q44512'] = { color = '#FFCCCB', icon = 'Virus gray black.svg' },
['Q515'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q11460'] = { color = '#F5F5DC', icon = 'Map icons by Scott de Jonge - clothing-store.svg' },
['Q532'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q6256'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q4022'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q123705'] = { color = '#cdff', icon = ' Map marker font awesome.svg' },
['Q164509'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q3506821'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q728'] = { color = '#b0c4de', icon = 'Military symbol.svg' },
['Q16521'] = { color = '#d0f0c0', icon = '' },
['Q729'] = { color = '#d0f0c0', icon = '' },
['Q756'] = { color = '#d0f0c0', icon = '' },
['Q11424'] = { color = '#ffc0cb', icon = '' },
['Q201658'] = { color = '#ffc0cb', icon = '' },
['Q515'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- city
['Q532'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- village
['Q6256'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- country
['Q4022'] = { color = '#cdff', icon = 'Watercources resources pl icon.svg' }, -- river
['Q8502'] = { color = '#e7dcc3', icon = 'Mountain Icon.svg' }, -- mountain
['Q103495'] = { color = '#B0C4DE', icon = 'Battle_icon_gladii.svg' },
['Q11514315'] = { color = '#B0C4DE', icon = 'Battle_icon_gladii.svg' },
['Q123705'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- neighborhood
['Q11271835'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- provincial capital
['Q1549591'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- big city
['Q51929311'] = { color = '#cdff', icon = ' Map marker font awesome.svg' }, -- largest city
['Q6957341'] = { color = '#CCAA99', icon = 'ReligijneSymbole2.svg' },
['Q9174'] = { color = '#CCAA99', icon = 'ReligijneSymbole2.svg' },
['Q29517555'] = { color = '#dce6f1', icon = 'OOjs UI icon language-ltr.svg' },
['Q8192'] = { color = '#dce6f1', icon = 'OOjs UI icon language-ltr.svg' },
['Q112826905'] = { color = '#f0dbb6', icon = 'Human brain icon.svg' },
['Q103812529'] = { color = '#f0dbb6', icon = 'Human brain icon.svg' },
['Q193622'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q618779'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q2003221'] = { color = '#cdeeff', icon = 'OOjs UI icon ribbonPrize.svg' },
['Q5398426'] = { color = '#ffc0cb', icon = '' },
['Q482994'] = { color = '#ffc0cb', icon = '' },
['default'] = { color = '#F2F2F2', icon = '' },
['Q196600'] = { color = '#ffc0cb', icon = '' }, -- media franchise
}
-- Clean parameters passed from Template:Databox
local function cleanParam(val)
if val then
val = mw.text.trim(val)
if val ~= '' then return val end
end
return nil
end
function p.getTheme(args, item)
-- Check for manual user parameters first
local themeColor = cleanParam(args.bgcolor) or cleanParam(args['color']) or cleanParam(args['رَنٛگ'])
local themeIcon = cleanParam(args.icon) or cleanParam(args['نِشان'])
local themeTextColor = cleanParam(args.titletextcolor)
-- If all are explicitly set by the user, return them immediately
if themeColor and themeIcon and themeTextColor then
return { color = themeColor, icon = themeIcon, textcolor = themeTextColor }
end
local autoColor = nil
local autoIcon = nil
local autoTextColor = nil
-- Check Wikidata P31 (instance of) statements using the safest method
if item and item.id then
local statements = mw.wikibase.getBestStatements(item.id, 'P31')
if statements then
for _, stmt in ipairs(statements) do
if stmt.mainsnak and stmt.mainsnak.snaktype == 'value' and stmt.mainsnak.datavalue then
local qid = stmt.mainsnak.datavalue.value.id
if themeMap[qid] then
autoColor = themeMap[qid].color
autoIcon = themeMap[qid].icon
autoTextColor = themeMap[qid].textcolor
break
end
end
end
end
end
return {
color = themeColor or autoColor or themeMap['default'].color,
icon = themeIcon or autoIcon or themeMap['default'].icon,
textcolor = themeTextColor or autoTextColor or (themeMap['default'] and themeMap['default'].textcolor) or 'black'
}
end
-- The foolproof debug function!
function p.debugtest(frame)
local qid = frame.args[1] or 'Q17042539'
local item = mw.wikibase.getEntity(qid)
local found_ids = {}
if item and item.id then
local statements = mw.wikibase.getBestStatements(item.id, 'P31')
if statements then
for _, stmt in ipairs(statements) do
if stmt.mainsnak and stmt.mainsnak.snaktype == 'value' and stmt.mainsnak.datavalue then
table.insert(found_ids, stmt.mainsnak.datavalue.value.id)
end
end
end
end
local theme = p.getTheme({}, item)
return "Debug Result for " .. qid .. " -> Color: " .. tostring(theme.color) .. " | Text: " .. tostring(theme.textcolor) .. " | Found P31 IDs on Wikidata: " .. table.concat(found_ids, ", ")
end
return p
j8kuxr5ezqqymgppwwpzhxkw66hjwex
رُکُن:Nadeemulhaqmir-bot/log/2026/8
2
32004
148945
148851
2026-08-10T18:01:19Z
Nadeemulhaqmir-bot
9480
باٹ چھُ اَز دۄہُک لاگ مَحفوٗظ کَران.
148945
wikitext
text/x-wiki
==1-8-2026==
==== [[آیسِس]] - ([[Special:Diff/146873|فَرَق]]) ====
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> ئیس </nowiki><b> -> </b><nowiki>ئیس</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[اِبتدٲیی اسلٲمی فلسفہٕ]] - ([[Special:Diff/146874|فَرَق]]) ====
# <nowiki> ابتدائی </nowiki><b> -> </b><nowiki>اِبتدٲیی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[کورِیاچہِ ترٛے بادشٲہیتہٕ]] - ([[Special:Diff/146875|فَرَق]]) ====
# <nowiki> ؤ </nowiki><b> -> </b><nowiki>و</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ہنبوک]] - ([[Special:Diff/146876|فَرَق]]) ====
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> جنوبی </nowiki><b> -> </b><nowiki>جۆنوٗبی</nowiki>
# <nowiki> چِھ </nowiki><b> -> </b><nowiki>چھِ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ؤ </nowiki><b> -> </b><nowiki>و</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ایکس ایکس ایکس ٹیٚنٛٹیشَن]] - ([[Special:Diff/146877|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> جنوری </nowiki><b> -> </b><nowiki>جَنؤری</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[ڈُوَلنگو]] - ([[Special:Diff/146878|فَرَق]]) ====
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[بویِنٛگ 767]] - ([[Special:Diff/146879|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> ستمبر </nowiki><b> -> </b><nowiki>سَتَمبَر</nowiki>
# <nowiki> شروع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> گوڑنک </nowiki><b> -> </b><nowiki>گۄڈنُیٛک</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ڈیٚلٹا اِیَر لاینز]] - ([[Special:Diff/146880|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> شروع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[شیطٲنِیَتھ]] - ([[Special:Diff/146881|فَرَق]]) ====
# <nowiki> تِہ </nowiki><b> -> </b><nowiki>تہِ</nowiki>
# <nowiki> نِہ </nowiki><b> -> </b><nowiki>نہِ</nowiki>
==== [[حٔقیٖقی عیسٲے کلیسا]] - ([[Special:Diff/146882|فَرَق]]) ====
# <nowiki> انسان </nowiki><b> -> </b><nowiki>اِنسان</nowiki>
# <nowiki> تٕہ </nowiki><b> -> </b><nowiki>تہٕ</nowiki>
# <nowiki> سٕنز </nowiki><b> -> </b><nowiki>سٟنٛز</nowiki>
# <nowiki> سُند </nowiki><b> -> </b><nowiki>سُنٛد</nowiki>
# <nowiki> سٕندؠ </nowiki><b> -> </b><nowiki>سٟنٛدؠ</nowiki>
# <nowiki> ۅ </nowiki><b> -> </b><nowiki>ۄ</nowiki>
# <nowiki> ێ </nowiki><b> -> </b><nowiki>یٚ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> مِہ </nowiki><b> -> </b><nowiki>مہِ</nowiki>
==== [[سروانَنٛد کول پرٛیمی]] - ([[Special:Diff/146883|فَرَق]]) ====
# <nowiki> ۅ </nowiki><b> -> </b><nowiki>ۄ</nowiki>
# <nowiki> تُھ </nowiki><b> -> </b><nowiki>تھُ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ترَٛکھ]] - ([[Special:Diff/146884|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> چِھ </nowiki><b> -> </b><nowiki>چھِ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مدد </nowiki><b> -> </b><nowiki>مَدَتھ</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
==== [[تھر کۆنٛڈ]] - ([[Special:Diff/146885|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ہنز </nowiki><b> -> </b><nowiki>ہِنٛز</nowiki>
# <nowiki> ہُند </nowiki><b> -> </b><nowiki>ہُنٛد</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> م. </nowiki><b> -> </b><nowiki>م۔</nowiki>
==== [[تھایرایِڈ]] - ([[Special:Diff/146886|فَرَق]]) ====
# <nowiki> ن. </nowiki><b> -> </b><nowiki>ن۔</nowiki>
==== [[آرڈر آف آسٹرٛیلیا]] - ([[Special:Diff/146887|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> کرتھ </nowiki><b> -> </b><nowiki>کٔرِتھ</nowiki>
==== [[پوٗتنا]] - ([[Special:Diff/146888|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ٕ. </nowiki><b> -> </b><nowiki>ٕ۔</nowiki>
==== [[نِرمل پُرجا]] - ([[Special:Diff/146889|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> اگست </nowiki><b> -> </b><nowiki>اَگَست</nowiki>
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> فلم </nowiki><b> -> </b><nowiki>فِلِم</nowiki>
# <nowiki> گۄڈٕنیُک </nowiki><b> -> </b><nowiki>گۄڈنُیٛک</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> میٹر </nowiki><b> -> </b><nowiki>میٖٹَر</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[2026 موروکو-سپین سرحدی واقعہٕ]] - ([[Special:Diff/146890|فَرَق]]) ====
# <nowiki> اً </nowiki><b> -> </b><nowiki>ن</nowiki>
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> چِھ </nowiki><b> -> </b><nowiki>چھِ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ؤ </nowiki><b> -> </b><nowiki>و</nowiki>
# <nowiki> ۭ </nowiki><b> -> </b><nowiki>ٟ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[آزاد کٔشیٖر ہِنٛز تَوٲریٖخ]] - ([[Special:Diff/146891|فَرَق]]) ====
# <nowiki> آئین </nowiki><b> -> </b><nowiki>ٲییٖن</nowiki>
# <nowiki> دعویٰ </nowiki><b> -> </b><nowiki>دعوا</nowiki>
# <nowiki> سۭتہِ </nowiki><b> -> </b><nowiki>سٟتہِ</nowiki>
# <nowiki> لِہ </nowiki><b> -> </b><nowiki>لہِ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[شاردا دٔرؠیاو]] - ([[Special:Diff/146892|فَرَق]]) ====
# <nowiki> اً </nowiki><b> -> </b><nowiki>ن</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> میل </nowiki><b> -> </b><nowiki>میٖل</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[رشمور پہاڑ]] - ([[Special:Diff/146893|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> چِھ </nowiki><b> -> </b><nowiki>چھِ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ٹایٹینِک (1997 فلم)]] - ([[Special:Diff/146894|فَرَق]]) ====
# <nowiki> فلم </nowiki><b> -> </b><nowiki>فِلِم</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
==2-8-2026==
==== [[شؠشتٕر کال]] - ([[Special:Diff/147112|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> شروع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
==== [[روٗسٕچ معشیت]] - ([[Special:Diff/147113|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> چِھ </nowiki><b> -> </b><nowiki>چھِ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ایشیا]] - ([[Special:Diff/147114|فَرَق]]) ====
# <nowiki> دنیاہُک </nowiki><b> -> </b><nowiki>دُنؠیاہُک</nowiki>
==== [[انٹارکٹِکا]] - ([[Special:Diff/147115|فَرَق]]) ====
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[کاینأتؠ گرٕد]] - ([[Special:Diff/147116|فَرَق]]) ====
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ایم وی ہونٛڈِیَس]] - ([[Special:Diff/147117|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> دُنیاہَس </nowiki><b> -> </b><nowiki>دُنؠیاہَس</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ایم وی ہونٛڈِیَس ہَنتا وایرس]] - ([[Special:Diff/147118|فَرَق]]) ====
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[نِرمل پُرجا]] - ([[Special:Diff/147119|فَرَق]]) ====
# <nowiki> اگست </nowiki><b> -> </b><nowiki>اَگَست</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> دنیاہٕکؠ </nowiki><b> -> </b><nowiki>دُنؠیاہٕکؠ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
==== [[شیٖنہٕ مٲنؠ]] - ([[Special:Diff/147120|فَرَق]]) ====
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
==== [[کیمونو]] - ([[Special:Diff/147121|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> چِھ </nowiki><b> -> </b><nowiki>چھِ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> شروع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[جۆم تہٕ کٔشیٖر مَنٛز جُلوٗس پؠٹھ قوبوٗ]] - ([[Special:Diff/147122|فَرَق]]) ====
# <nowiki> اً </nowiki><b> -> </b><nowiki>ن</nowiki>
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اِستعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> اگست </nowiki><b> -> </b><nowiki>اَگَست</nowiki>
# <nowiki> انسانی </nowiki><b> -> </b><nowiki>اِنسٲنی</nowiki>
# <nowiki> بیاکھ </nowiki><b> -> </b><nowiki>بیٛاکھ</nowiki>
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پٮ۪ٹھٕ </nowiki><b> -> </b><nowiki>پؠٹھٕ</nowiki>
# <nowiki> تنقید </nowiki><b> -> </b><nowiki>تَنقیٖد</nowiki>
# <nowiki> تہ </nowiki><b> -> </b><nowiki>تہٕ</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> خلاف </nowiki><b> -> </b><nowiki>خَلاف</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> ستمبر </nowiki><b> -> </b><nowiki>سَتَمبَر</nowiki>
# <nowiki> شُروٗع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> شروع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> قتل </nowiki><b> -> </b><nowiki>قَتٕل</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> گۄڈٕنیُک </nowiki><b> -> </b><nowiki>گۄڈنُیٛک</nowiki>
# <nowiki> گھرٕ </nowiki><b> -> </b><nowiki>گرٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مدد </nowiki><b> -> </b><nowiki>مَدَتھ</nowiki>
# <nowiki> مخالف </nowiki><b> -> </b><nowiki>مُخٲلِف</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ؠ مٕتؠ </nowiki><b> -> </b><nowiki>ؠمٕتؠ</nowiki>
==== [[ایکس ایکس ایکس ٹیٚنٛٹیشَن]] - ([[Special:Diff/147123|فَرَق]]) ====
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
==3-8-2026==
==== [[جاپٲنؠ لوٗکھ]] - ([[Special:Diff/147363|فَرَق]]) ====
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
==== [[ہان کانٛگ]] - ([[Special:Diff/147364|فَرَق]]) ====
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ردولہٕ]] - ([[Special:Diff/147365|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ر. </nowiki><b> -> </b><nowiki>ر۔</nowiki>
==== [[کووِڈ-19 عالمی وبا]] - ([[Special:Diff/147366|فَرَق]]) ====
# <nowiki> جنوری </nowiki><b> -> </b><nowiki>جَنؤری</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> دسمبر </nowiki><b> -> </b><nowiki>دَسَمبَر</nowiki>
# <nowiki> دُنیاہَس </nowiki><b> -> </b><nowiki>دُنؠیاہَس</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> شروع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ہُند </nowiki><b> -> </b><nowiki>ہُنٛد</nowiki>
# <nowiki> یہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[اَوَستٲیی زَبان]] - ([[Special:Diff/147367|فَرَق]]) ====
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ن. </nowiki><b> -> </b><nowiki>ن۔</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# [[وِکیٖپیٖڈیا:حَوالہٕ|حَوالہٕ]] وَرٲے مَضموٗن ٹیگ کَران
==== [[زرتشیت]] - ([[Special:Diff/147368|فَرَق]]) ====
# <nowiki> دنیاہک </nowiki><b> -> </b><nowiki>دُنؠیاہک</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[پھِرٲرؠ]] - ([[Special:Diff/147369|فَرَق]]) ====
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> جنوب </nowiki><b> -> </b><nowiki>جۆنوٗب</nowiki>
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ہ. </nowiki><b> -> </b><nowiki>ہ۔</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[شیش]] - ([[Special:Diff/147370|فَرَق]]) ====
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> انواع </nowiki><b> -> </b><nowiki>زٲژ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> تقریبا </nowiki><b> -> </b><nowiki>تَقریٖبَن</nowiki>
# <nowiki> تہ </nowiki><b> -> </b><nowiki>تہٕ</nowiki>
# <nowiki> ==حوالہٕ== </nowiki><b> -> </b><nowiki>== حَوالہٕ ==</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> کٔرتھ </nowiki><b> -> </b><nowiki>کٔرِتھ</nowiki>
# <nowiki> کرتھ </nowiki><b> -> </b><nowiki>کٔرِتھ</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> محفوظ </nowiki><b> -> </b><nowiki>مۄحفوٗظ</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> یئ </nowiki><b> -> </b><nowiki>یئ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ڈوروتھی ایڈی]] - ([[Special:Diff/147371|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> بیاکھ </nowiki><b> -> </b><nowiki>بیٛاکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پٮ۪ٹھٕ </nowiki><b> -> </b><nowiki>پؠٹھٕ</nowiki>
# <nowiki> ٹیلی ویژن </nowiki><b> -> </b><nowiki>ٹیلی وِجَن</nowiki>
# <nowiki> جنوری </nowiki><b> -> </b><nowiki>جَنؤری</nowiki>
# <nowiki> چِھ </nowiki><b> -> </b><nowiki>چھِ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> گھرس </nowiki><b> -> </b><nowiki>گرس</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> وقت </nowiki><b> -> </b><nowiki>وَقٕت</nowiki>
# <nowiki> ۅ </nowiki><b> -> </b><nowiki>ۄ</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[سانٛگُر]] - ([[Special:Diff/147372|فَرَق]]) ====
# <nowiki> ==حوالہٕ== </nowiki><b> -> </b><nowiki>== حَوالہٕ ==</nowiki>
# <nowiki> محفوظ </nowiki><b> -> </b><nowiki>مۄحفوٗظ</nowiki>
==== [[روٗسٕچ معشیت]] - ([[Special:Diff/147373|فَرَق]]) ====
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
==6-8-2026==
==== [[کرِٛس ہیٚڈفیٖلڈ]] - ([[Special:Diff/148342|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> اگست </nowiki><b> -> </b><nowiki>اَگَست</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ز. </nowiki><b> -> </b><nowiki>ز۔</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> یئ </nowiki><b> -> </b><nowiki>یئ</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[جیٚری ایل. راس]] - ([[Special:Diff/148343|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> جنوری </nowiki><b> -> </b><nowiki>جَنؤری</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> یئ </nowiki><b> -> </b><nowiki>یئ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[بیلین جیسوٗٹ پرٛیپریٹری سکوٗل]] - ([[Special:Diff/148344|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[نِو یارٕک یوٗنِوَرسِٹی]] - ([[Special:Diff/148345|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[مِیامی]] - ([[Special:Diff/148346|فَرَق]]) ====
# <nowiki> آبادی </nowiki><b> -> </b><nowiki>آبٲدی</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> جنوب </nowiki><b> -> </b><nowiki>جۆنوٗب</nowiki>
# <nowiki> ریاست </nowiki><b> -> </b><nowiki>رِیاسَتھ</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> میٹر </nowiki><b> -> </b><nowiki>میٖٹَر</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[اعلان کرن وول]] - ([[Special:Diff/148347|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
==== [[بُلاگ]] - ([[Special:Diff/148348|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[پیریز ہِلٹَن]] - ([[Special:Diff/148349|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> ٹیلی ویژن </nowiki><b> -> </b><nowiki>ٹیلی وِجَن</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مارچ </nowiki><b> -> </b><nowiki>مارٕچ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[تارُکھ]] - ([[Special:Diff/148350|فَرَق]]) ====
# <nowiki> تِہ </nowiki><b> -> </b><nowiki>تہِ</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> چَھ </nowiki><b> -> </b><nowiki>چھَ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[2009 ہِندوستٲنؠ عام چُناو جۆم تہٕ کٔشیٖر مَنٛز]] - ([[Special:Diff/148351|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[عبدالسید]] - ([[Special:Diff/148352|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> یئ </nowiki><b> -> </b><nowiki>یئ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[وباہ زان]] - ([[Special:Diff/148353|فَرَق]]) ====
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ہُند </nowiki><b> -> </b><nowiki>ہُنٛد</nowiki>
# <nowiki> ن. </nowiki><b> -> </b><nowiki>ن۔</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[روڈس سٕکالرشِپ]] - ([[Special:Diff/148354|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> دنیاہک </nowiki><b> -> </b><nowiki>دُنؠیاہک</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
==== [[ڈیٹرایٹ]] - ([[Special:Diff/148355|فَرَق]]) ====
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ن. </nowiki><b> -> </b><nowiki>ن۔</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[این آربر، مِشیگن]] - ([[Special:Diff/148356|فَرَق]]) ====
# <nowiki> آبادی </nowiki><b> -> </b><nowiki>آبٲدی</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> قائم </nowiki><b> -> </b><nowiki>قٲیِم</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
==== [[کولمبیا یوٗنِوَرسِٹی میلمین سکوٗل آف پَبلِک ہیلتھ]] - ([[Special:Diff/148357|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> میل </nowiki><b> -> </b><nowiki>میٖل</nowiki>
# <nowiki> یہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ڈیٹرایٹ ہیلتھ ڈیپارٹمینٛٹ]] - ([[Special:Diff/148358|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> ستمبر </nowiki><b> -> </b><nowiki>سَتَمبَر</nowiki>
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> شروع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> فروری </nowiki><b> -> </b><nowiki>فَرؤری</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> یئ </nowiki><b> -> </b><nowiki>یئ</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[اینٛڈووَر ہایی سکوٗل (مِشیگن)]] - ([[Special:Diff/148359|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[اورِیَل کالیج، آکسفورڈ]] - ([[Special:Diff/148360|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[کالیج آف لِٹریچر، ساینس اینٛڈ آرٹس]] - ([[Special:Diff/148361|فَرَق]]) ====
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ٕ. </nowiki><b> -> </b><nowiki>ٕ۔</nowiki>
==== [[کولمبیا یوٗنِوَرسِٹی کالیج آف فزکس اینٛڈ سرجری]] - ([[Special:Diff/148362|فَرَق]]) ====
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[منہٕ]] - ([[Special:Diff/148363|فَرَق]]) ====
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> ==حوالہٕ== </nowiki><b> -> </b><nowiki>== حَوالہٕ ==</nowiki>
# <nowiki> ہُند </nowiki><b> -> </b><nowiki>ہُنٛد</nowiki>
# <nowiki> یہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ن. </nowiki><b> -> </b><nowiki>ن۔</nowiki>
==== [[یوٗنِوَرسِٹی آف مِشیگن]] - ([[Special:Diff/148364|فَرَق]]) ====
# <nowiki> آبادی </nowiki><b> -> </b><nowiki>آبٲدی</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> زیادہ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یِہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[روچیسٹر ہِلز، مِشیگن]] - ([[Special:Diff/148365|فَرَق]]) ====
# <nowiki> آبادی </nowiki><b> -> </b><nowiki>آبٲدی</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
==== [[یوٗری گاگارِن]] - ([[Special:Diff/148366|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پٮ۪ٹھٕ </nowiki><b> -> </b><nowiki>پؠٹھٕ</nowiki>
# <nowiki> تعلیم </nowiki><b> -> </b><nowiki>تٲلیٖم</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> سٍتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> شروع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> گۄڈٕنیُک </nowiki><b> -> </b><nowiki>گۄڈنُیٛک</nowiki>
# <nowiki> گۄڈنیُٛک </nowiki><b> -> </b><nowiki>گۄڈنُیٛک</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مارچ </nowiki><b> -> </b><nowiki>مارٕچ</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[کَلپَنا چاولہ]] - ([[Special:Diff/148367|فَرَق]]) ====
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[جیک سویگرٹ]] - ([[Special:Diff/148368|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> اگست </nowiki><b> -> </b><nowiki>اَگَست</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> دسمبر </nowiki><b> -> </b><nowiki>دَسَمبَر</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> محفوظ </nowiki><b> -> </b><nowiki>مۄحفوٗظ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> یئ </nowiki><b> -> </b><nowiki>یئ</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[نیٖل آرٛمسِٹرانٛگ]] - ([[Special:Diff/148369|فَرَق]]) ====
# <nowiki> گۄڈنیُٛک </nowiki><b> -> </b><nowiki>گۄڈنُیٛک</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[دَے واد]] - ([[Special:Diff/148370|فَرَق]]) ====
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
==== [[جیٚمِنَے 8]] - ([[Special:Diff/148371|فَرَق]]) ====
# <nowiki> امہ </nowiki><b> -> </b><nowiki>اَمہِ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مارچ </nowiki><b> -> </b><nowiki>مارٕچ</nowiki>
# <nowiki> مجموعی </nowiki><b> -> </b><nowiki>سۆمبرُنی</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> لِہ </nowiki><b> -> </b><nowiki>لہِ</nowiki>
==== [[فَریا فَرَجی]] - ([[Special:Diff/148372|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پٮ۪ٹھٕ </nowiki><b> -> </b><nowiki>پؠٹھٕ</nowiki>
# <nowiki> چِھ </nowiki><b> -> </b><nowiki>چھِ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> فلم </nowiki><b> -> </b><nowiki>فِلِم</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> موسیقی </nowiki><b> -> </b><nowiki>موٗسیٖقی</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[ہرشد چوپڑا]] - ([[Special:Diff/148373|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> ٹیلی ویژن </nowiki><b> -> </b><nowiki>ٹیلی وِجَن</nowiki>
# <nowiki> ٹیلی ویژنس </nowiki><b> -> </b><nowiki>ٹیلی وِجنس</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[لَولی (بِلی اَیلِش تہٕ خالِد سُنٛد بٲتھ)]] - ([[Special:Diff/148374|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> سٕند </nowiki><b> -> </b><nowiki>سٟنٛد</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
==== [[ڈاینامایِٹ (بی ٹی ایس بٲتھ)]] - ([[Special:Diff/148375|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> اگست </nowiki><b> -> </b><nowiki>اَگَست</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> جنوبی </nowiki><b> -> </b><nowiki>جۆنوٗبی</nowiki>
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> گوڑنک </nowiki><b> -> </b><nowiki>گۄڈنُیٛک</nowiki>
# <nowiki> گۄڈنیُٛک </nowiki><b> -> </b><nowiki>گۄڈنُیٛک</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[اَیڈَل (بی ٹی ایس بٲتھ)]] - ([[Special:Diff/148376|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> اگست </nowiki><b> -> </b><nowiki>اَگَست</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> جنوبی </nowiki><b> -> </b><nowiki>جۆنوٗبی</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> شروع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[بَٹَر]] - ([[Special:Diff/148377|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> جنوبی </nowiki><b> -> </b><nowiki>جۆنوٗبی</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[وَن ڈایریکشن]] - ([[Special:Diff/148378|فَرَق]]) ====
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> یئ </nowiki><b> -> </b><nowiki>یئ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ۭ </nowiki><b> -> </b><nowiki>ٟ</nowiki>
==== [[ٹیلَر سٕوِفٹ]] - ([[Special:Diff/148379|فَرَق]]) ====
# <nowiki> == زٲتی زِندگی == </nowiki><b> -> </b><nowiki>== ذٲتی زِندگی ==</nowiki>
# <nowiki> ر. </nowiki><b> -> </b><nowiki>ر۔</nowiki>
==== [[یوٗکٔلیلی]] - ([[Special:Diff/148380|فَرَق]]) ====
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[گلین ہنسارڈ]] - ([[Special:Diff/148381|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> دنیا </nowiki><b> -> </b><nowiki>دُنؠیا</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ر. </nowiki><b> -> </b><nowiki>ر۔</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[لیبرٛون جیمز]] - ([[Special:Diff/148382|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پیدائش </nowiki><b> -> </b><nowiki>پٲدٲیِش</nowiki>
# <nowiki> دسمبر </nowiki><b> -> </b><nowiki>دَسَمبَر</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ؠ مٕتؠ </nowiki><b> -> </b><nowiki>ؠمٕتؠ</nowiki>
==== [[2014 ہِندوستٲنؠ عام چُناو جۆم تہٕ کٔشیٖر مَنٛز]] - ([[Special:Diff/148383|فَرَق]]) ====
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[2026 برٛاڈ تیٖنٛتول شیٖنہٕ مٲنؠ]] - ([[Special:Diff/148384|فَرَق]]) ====
# <nowiki> اً </nowiki><b> -> </b><nowiki>ن</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پٮ۪ٹھٕ </nowiki><b> -> </b><nowiki>پؠٹھٕ</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ؠ مٕتؠ </nowiki><b> -> </b><nowiki>ؠمٕتؠ</nowiki>
==== [[سانٛگُر]] - ([[Special:Diff/148385|فَرَق]]) ====
# <nowiki> سہُ </nowiki><b> -> </b><nowiki>سُہ</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ؠ. </nowiki><b> -> </b><nowiki>ؠ۔</nowiki>
==== [[سانٛگٕرؠ زان]] - ([[Special:Diff/148386|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> اندرونی </nowiki><b> -> </b><nowiki>اۆنٛدروٗنی</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پأنٹھ </nowiki><b> -> </b><nowiki>پٲٹھؠ</nowiki>
# <nowiki> تہ </nowiki><b> -> </b><nowiki>تہٕ</nowiki>
# <nowiki> ٹیلی ویژنس </nowiki><b> -> </b><nowiki>ٹیلی وِجنس</nowiki>
# <nowiki> چھے </nowiki><b> -> </b><nowiki>چھےٚ</nowiki>
# <nowiki> ==حوالہٕ== </nowiki><b> -> </b><nowiki>== حَوالہٕ ==</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> ضروری </nowiki><b> -> </b><nowiki>ضۆروٗری</nowiki>
# <nowiki> قائم </nowiki><b> -> </b><nowiki>قٲیِم</nowiki>
# <nowiki> کرتھ </nowiki><b> -> </b><nowiki>کٔرِتھ</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مقبول </nowiki><b> -> </b><nowiki>مَقبوٗل</nowiki>
# <nowiki> وقت </nowiki><b> -> </b><nowiki>وَقٕت</nowiki>
# <nowiki> ہنز </nowiki><b> -> </b><nowiki>ہِنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئین </nowiki><b> -> </b><nowiki>ئین</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[اَوَستٲیی زَبان]] - ([[Special:Diff/148387|فَرَق]]) ====
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
==== [[پٲکِستانِچ تَوٲریٖخ]] - ([[Special:Diff/148388|فَرَق]]) ====
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> دُنیاہُک </nowiki><b> -> </b><nowiki>دُنؠیاہُک</nowiki>
# <nowiki> یِہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ۭ </nowiki><b> -> </b><nowiki>ٟ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# [[وِکیٖپیٖڈیا:حَوالہٕ|حَوالہٕ]] وَرٲے مَضموٗن ٹیگ کَران
==== [[ہِندوستانٕچ تَوٲریٖخ]] - ([[Special:Diff/148389|فَرَق]]) ====
# <nowiki> انسان </nowiki><b> -> </b><nowiki>اِنسان</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> دُنیاہُک </nowiki><b> -> </b><nowiki>دُنؠیاہُک</nowiki>
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یِہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> ؠ مٕتؠ </nowiki><b> -> </b><nowiki>ؠمٕتؠ</nowiki>
==== [[علی اصغر]] - ([[Special:Diff/148390|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> سُند </nowiki><b> -> </b><nowiki>سُنٛد</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۅ </nowiki><b> -> </b><nowiki>ۄ</nowiki>
# <nowiki> ہُند </nowiki><b> -> </b><nowiki>ہُنٛد</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[2024 ہِندوستٲنؠ عام چُناو لَداخس مَنٛز]] - ([[Special:Diff/148391|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[2019 ہِندوستٲنؠ عام چُناو جۆم تہٕ کٔشیٖر مَنٛز]] - ([[Special:Diff/148392|فَرَق]]) ====
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ہُند </nowiki><b> -> </b><nowiki>ہُنٛد</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[صۆوُر، سِریٖنَگَر]] - ([[Special:Diff/148393|فَرَق]]) ====
# <nowiki> تہ </nowiki><b> -> </b><nowiki>تہٕ</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> یونیورسٹی </nowiki><b> -> </b><nowiki>یوٗنِوَرسِٹی</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[نوشہرہ، جۆم تہٕ کٔشیٖر]] - ([[Special:Diff/148394|فَرَق]]) ====
# <nowiki> اً </nowiki><b> -> </b><nowiki>ن</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> بھارتی </nowiki><b> -> </b><nowiki>ہِندوستٲنؠ</nowiki>
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پٮ۪ٹھٕ </nowiki><b> -> </b><nowiki>پؠٹھٕ</nowiki>
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> ضلعہٕ </nowiki><b> -> </b><nowiki>ضِلہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
==== [[رَوِنٛدَر رینا]] - ([[Special:Diff/148395|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> جنوری </nowiki><b> -> </b><nowiki>جَنؤری</nowiki>
==== [[تقریری]] - ([[Special:Diff/148396|فَرَق]]) ====
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
==== [[2026 بَنٛگلہ دیٖشی عام چُناو]] - ([[Special:Diff/148397|فَرَق]]) ====
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> حکوٗمت </nowiki><b> -> </b><nowiki>حوٚکوٗمَتھ</nowiki>
# <nowiki> دُنیاہُک </nowiki><b> -> </b><nowiki>دُنؠیاہُک</nowiki>
# <nowiki> فروری </nowiki><b> -> </b><nowiki>فَرؤری</nowiki>
# <nowiki> گۄڈٕنیُک </nowiki><b> -> </b><nowiki>گۄڈنُیٛک</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# [[وِکیٖپیٖڈیا:حَوالہٕ|حَوالہٕ]] وَرٲے مَضموٗن ٹیگ کَران
==== [[ہٲنٛگنین]] - ([[Special:Diff/148398|فَرَق]]) ====
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# [[وِکیٖپیٖڈیا:حَوالہٕ|حَوالہٕ]] وَرٲے مَضموٗن ٹیگ کَران
==== [[کنہِ گاو]] - ([[Special:Diff/148399|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> اندرونی </nowiki><b> -> </b><nowiki>اۆنٛدروٗنی</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# [[وِکیٖپیٖڈیا:حَوالہٕ|حَوالہٕ]] وَرٲے مَضموٗن ٹیگ کَران
==== [[کووِڈ-19 عالمی وبا]] - ([[Special:Diff/148400|فَرَق]]) ====
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
==== [[ڈوروتھی ایڈی]] - ([[Special:Diff/148401|فَرَق]]) ====
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
==7-8-2026==
==== [[الیگزینڈر ژُلُکِدزے]] - ([[Special:Diff/148593|فَرَق]]) ====
# <nowiki> اً </nowiki><b> -> </b><nowiki>ن</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> سماجی </nowiki><b> -> </b><nowiki>سَمٲجی</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> نومبر </nowiki><b> -> </b><nowiki>نَوَمبَر</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[نِکولا ژولوف]] - ([[Special:Diff/148594|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[اِشفاق احمد]] - ([[Special:Diff/148596|فَرَق]]) ====
# <nowiki> مارچ </nowiki><b> -> </b><nowiki>مارٕچ</nowiki>
# <nowiki> کِھ </nowiki><b> -> </b><nowiki>کھِ</nowiki>
==== [[رُم گٔیَم شیٖشس بیٚگُر گۆوا بانہٕ میٛون]] - ([[Special:Diff/148597|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> فلم </nowiki><b> -> </b><nowiki>فِلِم</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> موسیقی </nowiki><b> -> </b><nowiki>موٗسیٖقی</nowiki>
# <nowiki> یہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> ن. </nowiki><b> -> </b><nowiki>ن۔</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[سٹرٛابیری فیٖلڈز فارایوَر]] - ([[Special:Diff/148598|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> دِینہٕ </nowiki><b> -> </b><nowiki>دِنہٕ</nowiki>
# <nowiki> فروری </nowiki><b> -> </b><nowiki>فَرؤری</nowiki>
# <nowiki> فلم </nowiki><b> -> </b><nowiki>فِلِم</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ہُند </nowiki><b> -> </b><nowiki>ہُنٛد</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
==== [[سٕپایڈَر-مین: برٛینٛڈ نِو ڈے]] - ([[Special:Diff/148599|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> دُنیا </nowiki><b> -> </b><nowiki>دُنؠیا</nowiki>
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> شُروٗع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> فلم </nowiki><b> -> </b><nowiki>فِلِم</nowiki>
# <nowiki> فِلم </nowiki><b> -> </b><nowiki>فِلِم</nowiki>
# <nowiki> ٚ. </nowiki><b> -> </b><nowiki>ٚ۔</nowiki>
# <nowiki> مِہ </nowiki><b> -> </b><nowiki>مہِ</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[نِشان صاحب]] - ([[Special:Diff/148600|فَرَق]]) ====
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> امہ </nowiki><b> -> </b><nowiki>اَمہِ</nowiki>
# <nowiki> تہ </nowiki><b> -> </b><nowiki>تہٕ</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> {{Databox}} </nowiki><b> -> </b><nowiki>{{مولوٗماتھ}}</nowiki>
==== [[نِو یارٕک یوٗنِوَرسِٹی]] - ([[Special:Diff/148601|فَرَق]]) ====
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
==== [[لَولی (بِلی اَیلِش تہٕ خالِد سُنٛد بٲتھ)]] - ([[Special:Diff/148603|فَرَق]]) ====
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
==== [[سانٛگٕرؠ زان]] - ([[Special:Diff/148604|فَرَق]]) ====
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
==8-8-2026==
==== [[لِمونیٖن]] - ([[Special:Diff/148754|فَرَق]]) ====
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پٮ۪ٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[120]] - ([[Special:Diff/148755|فَرَق]]) ====
# [[وِکیٖپیٖڈیا:حَوالہٕ|حَوالہٕ]] وَرٲے مَضموٗن ٹیگ کَران
==== [[بادُر ژُلادزے]] - ([[Special:Diff/148756|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> فلم </nowiki><b> -> </b><nowiki>فِلِم</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مارچ </nowiki><b> -> </b><nowiki>مارٕچ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ژومون لِنٛگ]] - ([[Special:Diff/148757|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> ُ. </nowiki><b> -> </b><nowiki>ُ۔</nowiki>
==== [[دپشکھا رائ]] - ([[Special:Diff/148758|فَرَق]]) ====
# <nowiki> ابتدائی </nowiki><b> -> </b><nowiki>اِبتدٲیی</nowiki>
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> حاصل </nowiki><b> -> </b><nowiki>حٲصِل</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> سٕند </nowiki><b> -> </b><nowiki>سٟنٛد</nowiki>
# <nowiki> شاعر </nowiki><b> -> </b><nowiki>شٲیِر</nowiki>
# <nowiki> شامل </nowiki><b> -> </b><nowiki>شٲمِل</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مشہور </nowiki><b> -> </b><nowiki>مَشہوٗر</nowiki>
# <nowiki> میل </nowiki><b> -> </b><nowiki>میٖل</nowiki>
# <nowiki> مارچ </nowiki><b> -> </b><nowiki>مارٕچ</nowiki>
# <nowiki> مجموعی </nowiki><b> -> </b><nowiki>سۆمبرُنی</nowiki>
# <nowiki> ہُند </nowiki><b> -> </b><nowiki>ہُنٛد</nowiki>
# <nowiki> یہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> یئ </nowiki><b> -> </b><nowiki>یئ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[ٹاٹا نینو]] - ([[Special:Diff/148759|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پٮ۪ٹھٕ </nowiki><b> -> </b><nowiki>پؠٹھٕ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ہندوستٲنۍ </nowiki><b> -> </b><nowiki>ہِندوستٲنؠ</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ۭ </nowiki><b> -> </b><nowiki>ٟ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[سیمسَنٛگ گیٚلیکسی زی فلولڈ 8]] - ([[Special:Diff/148760|فَرَق]]) ====
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پٮ۪ٹھٕ </nowiki><b> -> </b><nowiki>پؠٹھٕ</nowiki>
# <nowiki> دنیاہَس </nowiki><b> -> </b><nowiki>دُنؠیاہَس</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> شروع </nowiki><b> -> </b><nowiki>شۆروٗع</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> میٹر </nowiki><b> -> </b><nowiki>میٖٹَر</nowiki>
# <nowiki> ورژنَس </nowiki><b> -> </b><nowiki>ؤرجنَس</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> یئ </nowiki><b> -> </b><nowiki>یئ</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[رومن رینٚجٕس]] - ([[Special:Diff/148761|فَرَق]]) ====
# <nowiki> ھ. </nowiki><b> -> </b><nowiki>ھ۔</nowiki>
# <nowiki> شٕہ </nowiki><b> -> </b><nowiki>شہٕ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ۭ </nowiki><b> -> </b><nowiki>ٟ</nowiki>
==== [[اعصام الحق قُریشی]] - ([[Special:Diff/148762|فَرَق]]) ====
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> نومبر </nowiki><b> -> </b><nowiki>نَوَمبَر</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[پیڈری]] - ([[Special:Diff/148763|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> دنیاہٕک </nowiki><b> -> </b><nowiki>دُنؠیاہٕک</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مدد </nowiki><b> -> </b><nowiki>مَدَتھ</nowiki>
# <nowiki> نومبر </nowiki><b> -> </b><nowiki>نَوَمبَر</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[نِشان صاحب]] - ([[Special:Diff/148764|فَرَق]]) ====
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
==9-8-2026==
==== [[پرمین]] - ([[Special:Diff/148840|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> شائع </nowiki><b> -> </b><nowiki>شایَع</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یہ </nowiki><b> -> </b><nowiki>یہِ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[کٔلیوپیٹرا]] - ([[Special:Diff/148841|فَرَق]]) ====
# <nowiki> دعویٰ </nowiki><b> -> </b><nowiki>دعوا</nowiki>
# <nowiki> ئین </nowiki><b> -> </b><nowiki>ئین</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[بز آلڈرن]] - ([[Special:Diff/148842|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> جنوری </nowiki><b> -> </b><nowiki>جَنؤری</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ٹ. </nowiki><b> -> </b><nowiki>ٹ۔</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئی </nowiki><b> -> </b><nowiki>ئی</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[لُژک]] - ([[Special:Diff/148843|فَرَق]]) ====
# <nowiki> آبادی </nowiki><b> -> </b><nowiki>آبٲدی</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> شہر </nowiki><b> -> </b><nowiki>شَہَر</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ز. </nowiki><b> -> </b><nowiki>ز۔</nowiki>
==== [[بویِنٛگ 777]] - ([[Special:Diff/148844|فَرَق]]) ====
# <nowiki> دُنیاہُک </nowiki><b> -> </b><nowiki>دُنؠیاہُک</nowiki>
# <nowiki> سۭتہِ </nowiki><b> -> </b><nowiki>سٟتہِ</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> ل. </nowiki><b> -> </b><nowiki>ل۔</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[بویِنٛگ]] - ([[Special:Diff/148845|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[بویِنٛگ کرِٛو فٕلایِٹ ٹؠسٹ]] - ([[Special:Diff/148846|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> جنوب </nowiki><b> -> </b><nowiki>جۆنوٗب</nowiki>
# <nowiki> ستمبر </nowiki><b> -> </b><nowiki>سَتَمبَر</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مارچ </nowiki><b> -> </b><nowiki>مارٕچ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[بیری وِلمور]] - ([[Special:Diff/148847|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> پٮ۪ٹھٕ </nowiki><b> -> </b><nowiki>پؠٹھٕ</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> دسمبر </nowiki><b> -> </b><nowiki>دَسَمبَر</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> گۄڈٕنیُک </nowiki><b> -> </b><nowiki>گۄڈنُیٛک</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مارچ </nowiki><b> -> </b><nowiki>مارٕچ</nowiki>
# <nowiki> مجموعی </nowiki><b> -> </b><nowiki>سۆمبرُنی</nowiki>
# <nowiki> نومبر </nowiki><b> -> </b><nowiki>نَوَمبَر</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> لِہ </nowiki><b> -> </b><nowiki>لہِ</nowiki>
# <nowiki> ئے </nowiki><b> -> </b><nowiki>ئے</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
# <nowiki> ٮ۪ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[اینیس کینٹر فرٛیڈم]] - ([[Special:Diff/148848|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> انسانی </nowiki><b> -> </b><nowiki>اِنسٲنی</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[عَلی ظَفَر]] - ([[Special:Diff/148849|فَرَق]]) ====
# <nowiki> تہ </nowiki><b> -> </b><nowiki>تہٕ</nowiki>
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
==== [[دپشکھا رائ]] - ([[Special:Diff/148850|فَرَق]]) ====
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
==10-8-2026==
==== [[وایلِن]] - ([[Special:Diff/148935|فَرَق]]) ====
# <nowiki> استعمال </nowiki><b> -> </b><nowiki>اِستِمال</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> زیادٕ </nowiki><b> -> </b><nowiki>زیٛادٕ</nowiki>
# <nowiki> ساروی </nowiki><b> -> </b><nowiki>سارِوٕے</nowiki>
# <nowiki> کھوتہٕ </nowiki><b> -> </b><nowiki>کھۄتہٕ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> موسیقی </nowiki><b> -> </b><nowiki>موٗسیٖقی</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ۍ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[انیتا ژوے]] - ([[Special:Diff/148936|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[وَن پیٖس]] - ([[Special:Diff/148937|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> پیٹھ </nowiki><b> -> </b><nowiki>پؠٹھ</nowiki>
# <nowiki> جولائی </nowiki><b> -> </b><nowiki>جُلَے</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> دُنیاہَس </nowiki><b> -> </b><nowiki>دُنؠیاہَس</nowiki>
# <nowiki> شائع </nowiki><b> -> </b><nowiki>شایَع</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
==== [[عَلا دیٖن]] - ([[Special:Diff/148938|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> چُھ </nowiki><b> -> </b><nowiki>چھُ</nowiki>
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> سٕتؠ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> سۭتۍ </nowiki><b> -> </b><nowiki>سٟتؠ</nowiki>
# <nowiki> سُند </nowiki><b> -> </b><nowiki>سُنٛد</nowiki>
# <nowiki> منز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مجموعس </nowiki><b> -> </b><nowiki>سۆمبرُنس</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[نِنٛجا ہَتوڑی]] - ([[Special:Diff/148939|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> و. </nowiki><b> -> </b><nowiki>و۔</nowiki>
==== [[پوکیمون]] - ([[Special:Diff/148940|فَرَق]]) ====
# <nowiki> دُنیاہَس </nowiki><b> -> </b><nowiki>دُنؠیاہَس</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[کرٛیٚیون شِن چین]] - ([[Special:Diff/148941|فَرَق]]) ====
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> ۭ </nowiki><b> -> </b><nowiki>ٟ</nowiki>
==== [[ڈوریمون]] - ([[Special:Diff/148942|فَرَق]]) ====
# <nowiki> دنیاہس </nowiki><b> -> </b><nowiki>دُنؠیاہس</nowiki>
# <nowiki> ُ. </nowiki><b> -> </b><nowiki>ُ۔</nowiki>
==== [[ژُتومو شِبایاما]] - ([[Special:Diff/148943|فَرَق]]) ====
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> ٹیلی ویژن </nowiki><b> -> </b><nowiki>ٹیلی وِجَن</nowiki>
# <nowiki> ٹیلی ویژنُک </nowiki><b> -> </b><nowiki>ٹیلی وِجنُک</nowiki>
# <nowiki> فلم </nowiki><b> -> </b><nowiki>فِلِم</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> مارچ </nowiki><b> -> </b><nowiki>مارٕچ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
# <nowiki> ئ </nowiki><b> -> </b><nowiki>ئ</nowiki>
==== [[مکہ اِکوَٹ بچاو معاہدٕ]] - ([[Special:Diff/148944|فَرَق]]) ====
# <nowiki> اتھ </nowiki><b> -> </b><nowiki>اَتھ</nowiki>
# <nowiki> اکھ </nowiki><b> -> </b><nowiki>اَکھ</nowiki>
# <nowiki> اگست </nowiki><b> -> </b><nowiki>اَگَست</nowiki>
# <nowiki> منٛز </nowiki><b> -> </b><nowiki>مَنٛز</nowiki>
# <nowiki> یتھ </nowiki><b> -> </b><nowiki>یَتھ</nowiki>
# <nowiki> ۍ </nowiki><b> -> </b><nowiki>ؠ</nowiki>
f8opb6v8t9mkgptmpljm4lx83tpkjkb
2026 برٛاڈ تیٖنٛتول شیٖنہٕ مٲنؠ
0
32058
148984
148384
2026-08-11T11:32:27Z
آیات محراج
11062
/* */
148984
wikitext
text/x-wiki
{{مولوٗماتھ
| تَصویٖر = 7 15 BroadPeak.jpg
}}
30 جُلَے 2026 آو [[پٲکِستان|پاکستان]] کِس [[قراقرم|قراقرم سِلسِلس]] مَنٛز [[برٛاڈ تیٖنٛتول|برٛاڈ تیٖنٛتٲلِس]] پؠٹھ کھسنٕچ کوٗشِش کَرن والؠن 10 ہَن کوہ پیما ہُنٛد اَکھ جمٲژ [[شیٖنہٕ مٲنؠ]] تل۔ یہِ شیٖنہٕ مٲنؠ آو کیمپ 2 تہٕ کیمپ 3 ہَس درمیان چڑاونَس پؠٹھ تقریبن 6,600 میٖٹَر (21,700 فُٹ) تھزرَس پؠٹھ، یِم پہاڑ پؠٹھٕ بۄن گٔے۔<ref>{{cite news|date=31 July 2026|title=Four bodies located after 10 climbers go missing on Pakistani peak|url=https://www.aljazeera.com/news/2026/7/31/nepali-climber-purja-9-others-missing-in-pakistan-after-avalanche|work=[[Al Jazeera]]|access-date=1 August 2026|archive-date=1 August 2026|archive-url=https://web.archive.org/web/20260801034025/https://www.aljazeera.com/news/2026/7/31/nepali-climber-purja-9-others-missing-in-pakistan-after-avalanche|url-status=live}}</ref>
1 اگستَس مَنٛز گوٚو یہِ تَصدیٖق زِ تمام دَہ کوہ پیما ٲسؠ موٗدؠمٕتؠ۔ کوہ پیما ٲسہِ [[نِرمل پُرجا]] (نِمسدایی)، [[پوٗر بہادر گُرُنٛگ]] (یوکتا)، نِما شیرپا، [[نظیرا الحارثی]]، کلی پیمبا شیرپا (کیلو)، نوانگ تھنڈوٗ شیرپا، گیالو شیرپا، سہیل ساکھی، میلوری گیس تہٕ وانٛگ جونٛگ۔
==موتہٕ==
{| class="wikitable"
|-
! ناو<ref name=":0" /><ref name=":1" /><ref name=":2" />
! شَہَریِتھ
|-
| [[پوٗر بہادر گُرُنٛگ|پوٗر بہادر گُرُنٛگ("یُکتا")]]
| rowspan="5" | {{NPL}}
|-
| [[کِلی پیمبا شیرپا|کِلی پیمبا شیرپا ("کِلُہ")]]
|-
| نیما شیرپا
|-
| نَوانٛگ تھیندو شیرپا
|-
| گیالو شیرپا
|-
| [[نِرمل پُرجا|نِرمل پُرجا ("نِمسدایی")]]
| {{NPL}}/{{UK}}
|-
| وانٛگ جونٛگ
| {{CHN}}
|-
| [[نظیرا الحارثی]]
| {{OMA}}
|-
| سُہیل سخی
| {{PAK}}
|-
| میلوری گیس
| {{USA}}
|}
==حَوالہٕ==
[[زٲژ:2026 واقعات]]
94jy40ocioykiscwy0p94rupo6eybjb
جیٚری ایل. راس
0
32117
148949
148343
2026-08-11T05:53:36Z
SakuraBot
9889
[[وپ:باٹ|باٹ]] چھُ صَفَس زٲژ پؠٹھ کٲم کَران.
148949
wikitext
text/x-wiki
{{Infobox person ca/catalan}}
'''جیٚری لِن راس''' (زامُت 20 جَنؤری 1948، [[کرٛاؤن پۄیِنٛٹ، اِنٛڈیانا]]) چھُ ریاستہاے متحدٕک اَکھ ریٹایرڈ ریاستہاے متحدٕچ ہَوٲیی فوجُک افسر، انجینیر، تہٕ [[ناسا]] ہُک اَکھ سٲبقہٕ [[ناسا نیٚبٕر آسمٲنؠ باز|خلاباز]]۔ راس چھُ سَتن خلٲیی شٹل مِشنَن ہُنٛد تجرُبہٕ کار، ییٚمہِ سٟتؠ سُہ زیٛادٕ تر خلٲیی پروازن ہُنٛد رَلہٕ رِکارڈ ہولڈر بنٛیوٚو (اَکھ ریکارڈ یُس تٔمؠ فرینکلن چانگ ڈیازس سٟتؠ شییَر کران چھُ)۔
تٔمؠ سٕنٛدؠ کاغذات، تصویرٕ تہٕ واریاہ ذٲتی چیٖز چھِ پرڈیو یوٗنِوَرسِٹی کِس بیرن ہلٹن فلایٹ اینڈ اسپیس ایکسپلوریشن آرکایوزس مَنٛز۔ سُہ آو میی 2014 مَنٛز تقریبن دوران خلاباز ہال آف فیمس مَنٛز شٲمل کرنہٕ۔
سٲتھی خلاباز، [[کرِٛس ہیٚڈفیٖلڈ]] چھُ راسَس پننہٕ 2013 چہ زانہِ زِنٛدگی، این ایسٹروناٹس گایڈ ٹُہ لایف آن ارتھس مَنٛز بیان کوٚرمت، یَتھ پٲنٹھ "قابل اعتماد، وفادار، شایستہ تہٕ بہادر خلابازک مجسمہٕ"۔<ref name="Hadfield">{{کِتاب حَوالہٕ|last=Hadfield|first=Chris|title=[[An Astronaut's Guide to Life on Earth|An Astronaut's Guide to Life on Earth: What Going to Space Taught Me About Ingenuity, Determination, and Being Prepared for Anything]]|publisher=[[Little, Brown and Company]]|year=2013|isbn=978-0-316-25301-7|location=[[New York City]]|page=27|lccn=2013943519|author-link=Chris Hadfield}}</ref>
==حَوالہٕ==
[[زٲژ:اَمریٖکی لوٗکھ]]
[[زٲژ:1948 پٲدٲیِش]]
rjvae1gsxkpn7clsc1knm8f5o9v1vg5
پرمین
0
32159
148890
148877
2026-08-10T13:58:21Z
آیات محراج
11062
مِلاوُن [[زٲژ:اؠنِمے]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148890
wikitext
text/x-wiki
{{Infobox animaga}}
پرمین چھُ اَکھ جاپٲنؠ مانٛگا تہٕ کارٹون شو یُس [[فوجیکو ایف فیوجیو]] ہن بنوومُت چھُ۔ یہِ مانٛگا چھُ مِژُاو سُوا ہَس مُتلِق یُس اَکھ سپر ہیرو بننُک مُقرر چھُ۔ گۄڑٕ اوس یہِ سپرمین سُنٛد مذاق تہٕ پتہٕ آو تٔمؠ سٕنٛز جایہ۔
گۄڈنیُک مانٛگا اوس 1967 پیٹھٕ 1968 تام شونن سنڈے تہٕ باقی رسالن مَنٛز شایعہ کرنہٕ آمُت، تہٕ دوٚیِم اوس 1983 پیٹھٕ 1986 تام کوروکورو ناوٕ کامکس مَنٛز شایَع۔<ref>{{cite book|author=Yoshihiro, Yonezawa|date=Apr 1, 2002|publisher=[[Kawade Shobō Shinsha]]|isbn=978-4309265490|pages=126|language=ja|script-title=ja:藤子不二雄論―Fと(A)の方程式|trans-title=On Fujiko Fujio ~ The Formula of F and (A)|author-link=Yoshihiro Yonezawa}}</ref>
== حَوالہٕ ==
[[زٲژ:اؠنِمے]]
2bc1nb564ehgvnvj6d9ue7pkbnnhzn4
148906
148890
2026-08-10T14:49:17Z
آیات محراج
11062
/* */
148906
wikitext
text/x-wiki
{{Infobox animaga}}{{External media|image1=[https://animanga.fandom.com/wiki/Perman Image of Perman]}}
پرمین چھُ اَکھ جاپٲنؠ مانٛگا تہٕ کارٹون شو یُس [[فوجیکو ایف فیوجیو]] ہن بنوومُت چھُ۔ یہِ مانٛگا چھُ مِژُاو سُوا ہَس مُتلِق یُس اَکھ سپر ہیرو بننُک مُقرر چھُ۔ گۄڑٕ اوس یہِ سپرمین سُنٛد مذاق تہٕ پتہٕ آو تٔمؠ سٕنٛز جایہ۔
گۄڈنیُک مانٛگا اوس 1967 پیٹھٕ 1968 تام شونن سنڈے تہٕ باقی رسالن مَنٛز شایعہ کرنہٕ آمُت، تہٕ دوٚیِم اوس 1983 پیٹھٕ 1986 تام کوروکورو ناوٕ کامکس مَنٛز شایَع۔<ref>{{cite book|author=Yoshihiro, Yonezawa|date=Apr 1, 2002|publisher=[[Kawade Shobō Shinsha]]|isbn=978-4309265490|pages=126|language=ja|script-title=ja:藤子不二雄論―Fと(A)の方程式|trans-title=On Fujiko Fujio ~ The Formula of F and (A)|author-link=Yoshihiro Yonezawa}}</ref>
== حَوالہٕ ==
[[زٲژ:اؠنِمے]]
03ckdum090cnz2qlff1qs8uovntpgq3
148909
148906
2026-08-10T15:07:59Z
آیات محراج
11062
/* */
148909
wikitext
text/x-wiki
{{Infobox animaga}}{{External media|image1=[https://animanga.fandom.com/wiki/Perman پرمین سٕنٛز تَصویٖر]|float=center}}
پرمین چھُ اَکھ جاپٲنؠ مانٛگا تہٕ کارٹون شو یُس [[فوجیکو ایف فیوجیو]] ہن بنوومُت چھُ۔ یہِ مانٛگا چھُ مِژُاو سُوا ہَس مُتلِق یُس اَکھ سپر ہیرو بننُک مُقرر چھُ۔ گۄڑٕ اوس یہِ سپرمین سُنٛد مذاق تہٕ پتہٕ آو تٔمؠ سٕنٛز جایہ۔
گۄڈنیُک مانٛگا اوس 1967 پیٹھٕ 1968 تام شونن سنڈے تہٕ باقی رسالن مَنٛز شایعہ کرنہٕ آمُت، تہٕ دوٚیِم اوس 1983 پیٹھٕ 1986 تام کوروکورو ناوٕ کامکس مَنٛز شایَع۔<ref>{{cite book|author=Yoshihiro, Yonezawa|date=Apr 1, 2002|publisher=[[Kawade Shobō Shinsha]]|isbn=978-4309265490|pages=126|language=ja|script-title=ja:藤子不二雄論―Fと(A)の方程式|trans-title=On Fujiko Fujio ~ The Formula of F and (A)|author-link=Yoshihiro Yonezawa}}</ref>
== حَوالہٕ ==
[[زٲژ:اؠنِمے]]
6kk7j29cltgo4jvgs0q0zmozusepmxa
مکہ اِکوَٹ بچاو معاہدٕ
0
32160
148944
148866
2026-08-10T18:01:11Z
Nadeemulhaqmir-bot
9480
باٹ چھُ غَلطی ٹھیٖکھ کَران [[وِکیٖپیٖڈیا:AutoWikiBrowser/Typos|غَلطی فِہرِست مُطٲبِق]]
148944
wikitext
text/x-wiki
{{مولوٗماتھ
| تَصویٖر = الدول الأعضاء في اتفاقية مكة للدفاع المشترك.svg
}}
'''مکہ اِکوَٹ بچاو معاہدٕ'''، یَتھ '''مکہ معاہدٕ''' تہِ ونان چھِ، چھُ اَکھ سُہ فریقی باہمی بچاو معاہدٕ یَتھ مَنٛز 7 اَگَست 2026 [[مکہٕ|مکہ]]، سعودی عربَس مَنٛز [[سوٗدی عرب|سعودی عرب]]، [[پٲکِستان]] تہٕ [[تُرکی]] دٔسؠ دستخط کرنہٕ آمُت۔ سعودی ولی عہد [[مُحمد بِن سلمان|محمد بن سلمان]]، پٲکِستٲنؠ ؤزیٖر اعظم [[شہباز شٔریٖف|شہباز شریف]] تہٕ تُرکی صدر [[رَجب طیب اَردوگان|رجب طیب اردگان]] سٕنٛدِ دسخط کٔرِتھ چھُ اَتھ معاہدَس مَنٛز اَکھ اجتمٲعی بچاو انتظام قٲیِم کوٚرمُت یَتھ تحت ترٛیٚیو ریاستو منٛزٕ کُنہِ أکِس خٕلاف ہتھیار در حملہٕ ییہِ ترٛیٚشوٕنی خٕلاف حملہٕ ماننہٕ۔<ref name="whbl">{{cite news|last1=Azhari|first1=Timour|last2=Shahid|first2=Ariba|last3=Gumrukcu|first3=Tuvan|title=Saudi Arabia, Turkey and Pakistan sign joint defence deal amid regional turmoil|agency=Reuters|work=WHBL|date=7 August 2026|url=https://whbl.com/2026/08/07/saudi-arabia-turkey-and-pakistan-to-sign-joint-defence-deal-amid-regional-turmoil/|access-date=7 August 2026}}</ref>
== حَوالہٕ ==
[[زٲژ:2026 واقعات]]
85z3pfhgu95nli0ygpjiiptxfe19et6
ژُتومو شِبایاما
0
32161
148943
148870
2026-08-10T18:01:06Z
Nadeemulhaqmir-bot
9480
باٹ چھُ غَلطی ٹھیٖکھ کَران [[وِکیٖپیٖڈیا:AutoWikiBrowser/Typos|غَلطی فِہرِست مُطٲبِق]]
148943
wikitext
text/x-wiki
{{Infobox person ca/catalan}}
'''ژُتومو شِبایاما''' ('''芝山 努'''، '''شِبایاما ژُتومو'''؛ 9 مارٕچ 1941 - 6 مارٕچ 2026) اوس اَکھ جاپٲنؠ اینیمیٹر، سکرین رایٹر، اینیمیشن سپروایزر، سٹوری بورڈ آرٹسٹ، کریکٹر ڈیزاینر، تہٕ فِلِم تہٕ ٹیلی وِجنُک اینیمی ڈایریکٹر۔ سُہ اوس پننِس مرنَس تام اجیاڈوُک سی ای او تہٕ صدر تہِ۔<ref>[https://ajiado.co.jp/news/j1jA50Kk 訃報のお知らせ] (in Japanese), official Ajiado website, March 16, 2026, Ajiado, Retrieved April 18, 2026.</ref>
سُہ اوس 1960 پیٹھہٕ سرگرم تہٕ تٔمؠ کٔر مختلف قٕسمٕک ٹیلی وِجَن اینیمی سیریٖز تہٕ تھیٹرس مَنٛز اینیمی فلمن مَنٛز کٲم۔
== حَوالہٕ ==
[[زٲژ:جاپٲنؠ لوٗکھ]]
[[زٲژ:1941 پٲدٲیِش]]
[[زٲژ:2026 وَفات]]
81k4bkgm8itnmb1wl707cr736z83tkr
Module:Infotaula animanga
828
32164
148879
148876
2026-08-10T12:00:12Z
آیات محراج
11062
148879
Scribunto
text/plain
local p = {}
----------------------------------------------------------
-- REQUERIMENTS I CONSTANTS
----------------------------------------------------------
local wikidades = require("Module:Wikidades")
local getArgs = require("Module:Arguments").getArgs
local qid_labels = {
publicacio = "Q732577",
estrena = "Q204854",
emissio = "Q109507868",
distribuidor = "Q12540664",
genere = "Q483394",
revista = "Q41298",
}
----------------------------------------------------------
-- FUNCIONS BÀSIQUES
----------------------------------------------------------
local function formatarData(iso)
if not iso or iso == "" then return "" end
local clean = iso:match("^%+?(%d%d%d%d%-%d%d%-%d%d)")
if not clean then return iso end
local any, m, d = clean:match("^(%d+)%-(%d+)%-(%d+)")
if not any then return iso end
local lang = mw.language.getContentLanguage()
if m == "00" then return any end
if d == "00" then
local fake = any .. "-" .. m .. "-01"
return lang:formatDate("F Y", fake)
end
return lang:formatDate("j F Y", clean)
end
local function netejaNomFitxer(raw)
local nom = tostring(raw):gsub("[%[%]]",""):gsub("^[Ff]it[xz]er:",""):gsub("^[Ff]ile:","")
if nom:find("|") then nom = nom:match("^([^|]+)") or nom end
return nom
end
local function midaImatge(nom, max_w, max_h)
local ext = nom:lower()
if ext:match("%.svg$") or ext:match("%.gif$") then
return max_w .. "px"
else
return max_w .. "x" .. max_h .. "px"
end
end
local function obtenirImatge(item_id, args, prop, param)
prop = prop or "P18"
param = param or "imatge"
if args[param] == "NONE" then
return { nom = nil, peu = nil }
end
if args[param] and args[param] ~= "" then
return { nom = netejaNomFitxer(args[param]), peu = args["peu"] or nil }
end
local raw = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if not raw or raw == "" then
return { nom = nil, peu = nil }
end
local nom = netejaNomFitxer(raw)
local peu = args["peu"]
if not peu or peu == "" then
local raw_caption = wikidades.claim{
item = item_id, property = prop,
qualifier = "P2096", formatting = "raw", list = false
}
if raw_caption and raw_caption ~= "" then peu = raw_caption end
end
return { nom = nom, peu = peu }
end
----------------------------------------------------------
-- ICONES EXTERNES
----------------------------------------------------------
local function getIconaPropieta(prop)
local entity = mw.wikibase.getEntity(prop)
if not entity or not entity.claims then return nil end
local function millor_claim(prop_id)
local claims = entity.claims[prop_id]
if not claims then return nil end
local preferent, normal = nil, nil
for _, claim in ipairs(claims) do
local rank = claim.rank
local val = claim.mainsnak.datavalue
and claim.mainsnak.datavalue.value
local nom = val and (type(val)=="string" and val or val.text or val.id)
if nom and nom ~= "" then
if rank=="preferred" and not preferent then preferent = nom
elseif rank=="normal" and not normal then normal = normal or nom end
end
end
return preferent or normal
end
return millor_claim("P8972") or millor_claim("P2910")
end
local external_link_props = {
"P1984", "P1985", "P4983", "P4947", "P345",
}
local function generarIconesExternes(item_id)
local html = {}
for _, prop in ipairs(external_link_props) do
local val = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if val and val ~= "" then
local formatter = wikidades.claim{
item = prop, property = "P1630",
formatting = "raw", list = false
}
local label = mw.wikibase.getLabel(prop) or prop
local icon = getIconaPropieta(prop)
if formatter and formatter ~= "" and icon then
local url = formatter:gsub("%$1", val)
table.insert(html,
string.format(
'[[:%s|middle|link=%s|class=notpageimage|%s]] ',
icon, url, label
)
)
end
end
end
return table.concat(html, "")
end
----------------------------------------------------------
-- LABELS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getLabelData(qid)
local label, lang = nil, nil
for _, l in ipairs({"ks","mul","en","ja","ko","zh"}) do
local t = mw.wikibase.getLabelByLang(qid, l)
if t and t ~= "" then
label = t
lang = l
break
end
end
if not label then
label = qid
lang = nil
end
return label, lang
end
local function wdLink(qid, label_override)
if label_override and label_override ~= "" then
return "[[d:" .. qid .. "|" .. label_override .. "]]"
end
local label, lang = getLabelData(qid)
local sitelink = wikidades.getSiteLink{qid}
local link = sitelink
and ("[[" .. sitelink .. "|" .. label .. "]]")
or ("[[d:" .. qid .. "|" .. label .. "]]")
if lang and lang ~= "ks" and lang ~= "mul" then
link = link
.. " <sup>(" .. lang .. ")</sup>"
.. " [[:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|"
.. mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain()
.. "|link=https://www.wikidata.org/wiki/" .. qid .. "?uselang=ks]]"
end
return link
end
----------------------------------------------------------
-- CLAIMS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getClaims(item_id, prop_id, only_qids)
if not item_id then return {} end
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return {} end
local result = {}
for v in raw:gmatch("[^/·/]+") do
if only_qids then
local q = v:match("^(Q%d+)$")
if q then table.insert(result, q) end
else
if v:match("^Q%d+$") then
table.insert(result, wdLink(v))
else
table.insert(result, v)
end
end
end
return result
end
----------------------------------------------------------
-- NETEJA DE GÈNERE UNIFICADA (PUNT 1)
----------------------------------------------------------
local APO = "['’`´ʼ‛]"
local GEN_PREFIX = {
"^مینٛگا تہٕ اٮ۪نِمی%s+ہُنٛد%s*",
"^اٮ۪نِمی تہٕ مینٛگا%s+ہُنٛد%s*",
"^مینٛگا%s+ہُنٛد%s*",
"^اٮ۪نِمی%s+ہُنٛد%s*",
"^مینٛگا تہٕ اٮ۪نِمی%s+",
"^اٮ۪نِمی تہٕ مینٛگا%s+",
"^مینٛگا%s+",
"^اٮ۪نِمی%s+",
}
local function netejarGenere(label)
local lower = label:lower()
for _, pat in ipairs(GEN_PREFIX) do
local resta = lower:gsub(pat, "")
if resta ~= lower then
label = label:gsub(pat, "")
break
end
end
label = label:gsub("%s*%b()", "")
label = label:gsub("^d[^a-zà-üA-ZÀ-Ü]+", "")
label = label:gsub("%s+$", "")
return label:sub(1,1):upper() .. label:sub(2)
end
----------------------------------------------------------
-- TIPUS I MAPES
----------------------------------------------------------
local tipus_def = {
["شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q24862" } },
["فرنچائز"] = { mode = "franquicia", qids = { "Q196600" } },
["اٮ۪نِمی فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q29982285" } },
["اٮ۪نیٖمیٹِڈ شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q17517379" } },
["موٗسیٖقی ہُنٛد ویٖڈیو"] = { mode = "audiovisual", qids = { "Q193977", "Q55960075", "Q64100970" } },
["اٮ۪نِمی فِلِم"] = { mode = "pelicula", qids = { "Q20650540" } },
["فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q24856" } },
["ویٖڈیو گیم سیٖریٖز"] = { mode = "videojoc", qids = { "Q7058673" } },
["فِلِم"] = { mode = "pelicula", qids = { "Q229390", "Q11424" } },
["اٮ۪نیٖمیٹِڈ فِلِم"] = { mode = "pelicula", qids = { "Q29168811", "Q202866" } },
["اٮ۪نیٖمیٹِڈ سیٖریٖز"] = { mode = "audiovisual", qids = { "Q581714" } },
["اٮ۪نِمی"] = { mode = "audiovisual", qids = { "Q63952888", "Q11086742", "Q100269041", "Q104640199" } },
["ریڈیو ڈرامہ"] = { mode = "audiovisual", qids = { "Q2635894" } },
["او وی اے"] = { mode = "audiovisual", qids = { "Q220898" } },
["او وی اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113687694" } },
["موٗسیٖقی"] = { mode = "pelicula", qids = { "Q58483083" } },
["وَن-شاٹ"] = { mode = "llibre", qids = { "Q933530", "Q21202185" } },
["او اے ڈی"] = { mode = "audiovisual", qids = { "oad" } },
["او اٮ۪ن اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113671041" } },
["او اٮ۪ن اے"] = { mode = "audiovisual", qids = { "Q1047299" } },
["ڈوراما"] = { mode = "audiovisual", qids = { "Q399811" } },
["خاص"] = { mode = "audiovisual", qids = { "Q1261214" } },
["لائیو اٮ۪کشَن"] = { mode = nil, qids = { "live action" } },
["وِجُوَلی ناوَل"] = { mode = "videojoc", qids = { "Q689445" } },
["گیم"] = { mode = nil, qids = { "Q11410" } },
["ناوَل"] = { mode = "llibre", qids = { "Q747381" } },
["ناوَل سیٖریٖز"] = { mode = "llibre", qids = { "Q104213567" } },
["ویٖڈیو گیم"] = { mode = "videojoc", qids = { "Q7889" } },
["ڈوجِنشی"] = { mode = "llibre", qids = { "Q668711" } },
["مینٛگا سیٖریٖز"] = { mode = "llibre", qids = { "Q21198342" } },
["مینٛگا"] = { mode = "llibre", qids = { "Q8274" } },
["اِشتِہار"] = { mode = "audiovisual", qids = { "Q11796892", "Q854995" } },
["سی ڈی ڈرامہ"] = { mode = "audiovisual", qids = { "Q244351" } },
["مینٛگا فِلِم"] = { mode = "pelicula", qids = { "Q116790751" } },
["کَمِک"] = { mode = "llibre", qids = { "Q1004" } },
["ٹی وی سیٖریٖز"] = { mode = "audiovisual", qids = { "Q5398426", "Q21191019" } },
["وٮ۪ب سیٖریٖز"] = { mode = "audiovisual", qids = { "Q526877" } },
["وٮ۪ب ٹوٗن"] = { mode = "llibre", qids = { "Q7978994" } },
["مَنہوا سیٖریٖز"] = { mode = "llibre", qids = { "Q74262765" } },
["مَنہوا"] = { mode = "llibre", qids = { "Q754669" } },
["لائیو اٮ۪کشَن فِلِم"] = { mode = "pelicula", qids = { "pel·lícula live action" } },
["لایِٹ ناوَل"] = { mode = "llibre", qids = {} },
}
local tipus_map = {}
local tipus_a_mode = {}
for tipus, def in pairs(tipus_def) do
tipus_a_mode[tipus] = def.mode
for _, qid in ipairs(def.qids) do
tipus_map[qid] = tipus
end
end
local link_desti = {
["مینٛگا سیٖریٖز"] = "مینٛگا",
["فرنچائز"] = "میٖڈیا فرنچائز",
}
local function majusculaInicial(s)
if not s or s == "" then return s end
return mw.ustring.upper(mw.ustring.sub(s, 1, 1)) .. mw.ustring.sub(s, 2)
end
local function etiquetaProp(pid)
local label = mw.wikibase.getLabel(pid)
return majusculaInicial(label or "")
end
local function obtenirTipusText(tipus_param, item_id)
local val = (tipus_param and tipus_param ~= "") and string.lower(tipus_param) or ""
local map = tipus_map
if val == "" and item_id then
local ids = getClaims(item_id, "P31", true)
if #ids == 0 then return "باقی" end
local primer = ids[1]
for _, id in ipairs(ids) do
if map[id] then
val = id
break
end
end
if val == "" then val = primer end
end
local function linkSiExisteix(t, desti)
local target = desti or t
local title = mw.title.new(target)
if title and title.exists then return "[[" .. target .. "|" .. t .. "]]" end
return t
end
if map[val] then
return linkSiExisteix(map[val], link_desti[map[val]])
end
local label, _ = getLabelData(val)
return label and majusculaInicial(label) or "باقی"
end
local function netejarWikilink(text)
return text
:gsub("%[%[[^|]+|([^%]]+)%]%]", "%1")
:gsub("%[%[([^%]]+)%]%]", "%1")
end
----------------------------------------------------------
-- UTILITATS DIVERSES
----------------------------------------------------------
local function linkEditicon(item_id)
return "<span class='ita-edit-icon' style='margin-left:4px;'>[[:OOjs UI icon edit-ltr-progressive.svg|middle|class=notpageimage|link=d:"
.. item_id .. "|وِکیٖڈیٹاہَس پؠٹھ کٔرِو اؠڈِٹ]]</span>"
end
local function es_no_llati(s)
local te_no_llati = mw.ustring.find(s, "[^A-Za-zÀ-ÖØ-öø-ÿĀ-ſ0-9%s%p]") ~= nil
if te_no_llati then
return "font-weight:normal;"
else
return "font-style:italic;"
end
end
----------------------------------------------------------
-- TRANSLITERACIÓ (qualificadors de P1476)
----------------------------------------------------------
local PROPS_TRANSLIT = {
"P2440",
"P2125",
"P1942",
"P2001",
"P5139",
"P1721",
}
local function obtenirTransliteracio(item_id)
local entity = mw.wikibase.getEntity(item_id)
if not entity or not entity.claims or not entity.claims.P1476 then return nil end
for _, claim in ipairs(entity.claims.P1476) do
if claim.qualifiers then
for _, pid in ipairs(PROPS_TRANSLIT) do
local quals = claim.qualifiers[pid]
if quals then
for _, q in ipairs(quals) do
local val = q.datavalue and q.datavalue.value
if val then
local t = type(val) == "string" and val or val.text
if t and t ~= "" then return t end
end
end
end
end
end
end
return nil
end
local function obtenirTitolOriginal(item_id, titol_catala, es_capcalera)
if not item_id then return "" end
local text = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "table",
colformat0 = "text",
list = false,
rowformat = "$0",
editicon = false,
}
if not text or text == "" or text == titol_catala then
return ""
end
local lang = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "$language",
list = false,
editicon = false,
}
if lang == "" then lang = nil end
local estil_text = es_no_llati(text)
local prefix_lang = ""
if es_capcalera and lang then
prefix_lang = "<sup><span style='font-weight:normal; font-style:normal;'>(" .. lang .. ")</span></sup> "
end
local tooltip_html = ""
if estil_text == "font-weight:normal;" then
local translit = obtenirTransliteracio(item_id)
if translit then
tooltip_html =
'<span class="ita-translit-wrap" tabindex="0">' ..
'<sup class="ita-translit-icon">ⓘ</sup>' ..
'<span class="ita-translit-tip">' .. translit:gsub("'", "'") .. '</span>' ..
'</span>'
end
end
return "<span style='font-size:90%; display:block;'>"
.. prefix_lang
.. "<span style='" .. estil_text .. "'>" .. text .. "</span>"
.. tooltip_html
.. "</span>"
end
local function obtenirDurada(item_id)
local raw = wikidades.claim{
item = item_id,
property = "P2047",
formatting = "raw",
list = false
}
if not raw or raw == "" then return nil end
local amount =
raw:match('"amount"%s*:%s*"(%+?[%d%.%-]+)"') or
raw:match('^%+?(%d+)$') or
raw:match('(%d+)[^%d]*$')
if not amount then return nil end
amount = tonumber(amount)
if not amount then return nil end
local unit =
raw:match('"unit"%s*:%s*"http://www%.wikidata%.org/entity/(Q%d+)"') or
raw:match('"unit"%s*:%s*"(Q%d+)"')
if not unit then
return amount .. " مِنَٹ"
end
local unit_map = {
Q7727 = "مِنَٹ",
Q11574 = "سٮ۪کَنڈ",
Q23387 = "گٲنٛٹہٕ",
Q25235 = "دۄہ"
}
local u = unit_map[unit]
if not u then return amount end
if u == "سٮ۪کَنڈ" then
amount = math.floor(amount / 60)
u = "مِنَٹ"
elseif u == "گٲنٛٹہٕ" then
amount = amount * 60
u = "مِنَٹ"
elseif u == "دۄہ" then
amount = amount * 24 * 60
u = "مِنَٹ"
end
return amount .. " " .. u
end
local function obtenirDataOrdenacio(item_id)
if not item_id then return "9999-99-99" end
local function primera(prop_id)
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return nil end
local any, mes, dia = raw:match("%+(%d%d%d%d)%-(%d%d)%-(%d%d)T")
if not any then return nil end
if mes == "00" then mes = "01" end
if dia == "00" then dia = "01" end
return string.format("%s-%s-%s", any, mes, dia)
end
return primera("P580")
or primera("P577")
or primera("P571")
or "9999-99-99"
end
local function getListSitelinkFromProp(item_id, prop_id)
local qid = getClaims(item_id, prop_id, true)[1]
if not qid then return "" end
return wikidades.getSiteLink{qid} or ("d:" .. qid)
end
----------------------------------------------------------
-- EDITORIALS
----------------------------------------------------------
local function obtenirEditorialsWikibase(qid)
local entity = mw.wikibase.getEntity(qid)
if not entity or not entity.claims or not entity.claims.P123 or #entity.claims.P123 == 0 then
return nil
end
local preferent
local primer_trobat = nil
local catalanes = {}
for _, claim in ipairs(entity.claims.P123) do
local ed_qid = claim.mainsnak.datavalue and claim.mainsnak.datavalue.value.id
if ed_qid then
local label = wdLink(ed_qid)
local lang_label = nil
local es_cat = false
if claim.qualifiers and claim.qualifiers.P407 then
for _, qv in ipairs(claim.qualifiers.P407) do
if qv.datavalue.value.id == "Q33552" then
es_cat = true
break
end
end
if es_cat then
lang_label, _ = getLabelData("Q33552")
else
local qid_lang = claim.qualifiers.P407[1].datavalue.value.id
lang_label, _ = getLabelData(qid_lang)
end
end
local text = label
if lang_label then
text = text .. " (" .. lang_label .. ")"
end
if es_cat then
table.insert(catalanes, text)
else
if not primer_trobat then primer_trobat = text end
if claim.rank == "preferred" and not preferent then
preferent = text
end
end
end
end
preferent = preferent or primer_trobat
if not preferent and #catalanes == 0 then return nil end
local resultat = {}
if preferent then table.insert(resultat, preferent) end
for _, c in ipairs(catalanes) do
if c ~= preferent then table.insert(resultat, c) end
end
return table.concat(resultat, "<br />")
end
----------------------------------------------------------
-- FILTRAR PER P31
----------------------------------------------------------
local function filtrarPerP31(llista, qid_tipus)
local coincideixen, resta = {}, {}
for _, q in ipairs(llista) do
local trobat = false
for _, classe in ipairs(getClaims(q, "P31", true)) do
if classe == qid_tipus then
trobat = true
break
end
end
table.insert(trobat and coincideixen or resta, q)
end
return coincideixen, resta
end
----------------------------------------------------------
-- CSS
----------------------------------------------------------
local CSS = {
HEADER = "ita-header",
SUBHEADER = "ita-subheader",
TIPUS = "ita-tipus",
CELL_L = "ita-cell-l",
CELL_R = "ita-cell-r",
ICON_CELL = "ita-icon-cell",
ICON_CELL_R = "ita-icon-cell-r",
CELL_FULL = "ita-cell-full",
}
local function filaEtiquetaValor(contenidor, label, valor, collapsible)
local fila = contenidor:tag("tr")
if collapsible then
fila:addClass("mw-collapsible-content")
end
fila:tag("td"):addClass(CSS.CELL_L):wikitext(label)
fila:tag("td"):addClass(CSS.CELL_R):wikitext(valor)
return fila
end
----------------------------------------------------------
-- GENERAR NUCLI (VERSIÓ COMPLETA, OPCIÓ B)
----------------------------------------------------------
local function generarNucli(item_id, args, es_grup, id_pare, te_genere_pare)
if not item_id or not mw.wikibase.isValidEntityId(item_id) then
return ""
end
local html = mw.html.create()
------------------------------------------------------
-- NOM BASE + IDIOMA
------------------------------------------------------
local nom_base, nom_base_lang = getLabelData(item_id)
local ret_lang_subheader = ""
local ret_icon_subheader = ""
if nom_base_lang and nom_base_lang ~= "ks" and nom_base_lang ~= "mul" then
ret_lang_subheader =
" <span style='font-weight:normal'><sup>(" .. nom_base_lang .. ")</sup></span>"
ret_icon_subheader =
" [[:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|" ..
mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain() ..
"|link=https://www.wikidata.org/wiki/" .. item_id .. "?uselang=ks]]"
end
------------------------------------------------------
-- TIPUS
------------------------------------------------------
local tipus_text = obtenirTipusText(args.tipus, item_id)
local tipus_net = netejarWikilink(tipus_text)
local mode = tipus_a_mode[tipus_net] or ""
------------------------------------------------------
-- SUBHEADER (si és grup)
------------------------------------------------------
if es_grup then
local estil_sub = es_no_llati(nom_base)
local sitelink = wikidades.getSiteLink{item_id}
local dest_link = sitelink
and ("[[" .. sitelink .. "|" .. nom_base .. "]]")
or ("[[d:" .. item_id .. "|" .. nom_base .. "]]")
local text =
"<span style='" .. estil_sub .. "'>" .. dest_link .. "</span>" ..
ret_lang_subheader ..
ret_icon_subheader ..
obtenirTitolOriginal(item_id, nom_base, false)
local fila_sh = html:tag("tr")
fila_sh:addClass("mw-collapsible-content")
fila_sh:tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(text)
end
------------------------------------------------------
-- FILA TIPUS + ICONES (VERSIÓ SENSE TAULA INTERNA)
------------------------------------------------------
local fila_tipus = html:tag("tr")
fila_tipus:addClass("mw-collapsible-content ita-row-tipus")
-- Cel·la esquerra (tipus)
fila_tipus:tag("td")
:addClass(CSS.TIPUS)
:wikitext(tipus_text)
local td_icones = fila_tipus:tag("td")
td_icones:addClass(CSS.CELL_R .. " ita-icons-flex")
local wrapper = td_icones:tag("div")
wrapper:addClass("ita-icons-wrapper")
local td_esq = wrapper:tag("div")
td_esq:addClass("ita-icons-left " .. CSS.ICON_CELL)
local td_dre = wrapper:tag("div")
td_dre:addClass("ita-icons-right " .. CSS.ICON_CELL_R)
------------------------------------------------------
-- ETIQUETA PERÍODE (funció interna)
------------------------------------------------------
local function _obtenirEtiquetaPeriode_local(qid, tipus_str)
local t = mw.ustring.lower(tipus_str or "")
local m = tipus_a_mode[majusculaInicial(t)] or ""
if m == "franquicia" then
return etiquetaProp("P2348")
end
if m == "llibre" or m == "videojoc" then
return etiquetaProp(qid_labels.publicacio)
end
if m == "pelicula" then
local te_p577 = wikidades.claim{item=qid, property="P577", list=false}
local te_p582 = wikidades.claim{item=qid, property="P582", list=false}
if te_p577 and te_p577 ~= "" then
return etiquetaProp(qid_labels.estrena)
elseif te_p582 and te_p582 ~= "" then
return etiquetaProp(qid_labels.emissio)
else
return etiquetaProp(qid_labels.estrena)
end
end
return etiquetaProp(qid_labels.emissio)
end
------------------------------------------------------
-- ICONA DURADA (P2047)
------------------------------------------------------
local text_durada = obtenirDurada(item_id)
if text_durada then
td_esq:wikitext("[[File:Hourglass icon.png|middle|class=notpageimage|link=|وَقٕف]] " .. text_durada .. " ")
end
------------------------------------------------------
-- ICONA DE LLISTA (P31)
------------------------------------------------------
local p31_qid = getClaims(item_id, "P31", true)[1] or ""
if p31_qid == "Q24856" or p31_qid == "Q7058673" or p31_qid == "Q29982285" then
local link = getListSitelinkFromProp(item_id, "P2354")
if link == "" then
link = wikidades.getSiteLink{item_id} or ("d:" .. item_id)
end
td_esq:wikitext("[[File:Font Awesome 5 regular list-alt.svg|middle|class=notpageimage|link=" .. link .. "]] ")
end
------------------------------------------------------
-- ICONA VOLUMS / PEL·LÍCULES (P2635)
------------------------------------------------------
local raw_volums = wikidades.claim{
item = item_id,
property = "P2635",
formatting = "raw",
list = false
}
if raw_volums and raw_volums ~= "" then
local quant = tostring(raw_volums):gsub("%+","")
if p31_qid == "Q29982285" then
td_esq:wikitext(
"[[File:Tabler-icons_movie.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|فِلِمہٕ]] " .. quant .. " فِلِمہٕ "
)
else
td_esq:wikitext(
"[[File:OpenMoji-black 1F4DA.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|جِلٕد]] " .. quant .. " جِلٕد "
)
end
end
------------------------------------------------------
-- ICONA EPISODIS (P1113)
------------------------------------------------------
local text_ep = ""
local raw_ep = wikidades.claim{
item = item_id,
property = "P1113",
formatting = "raw",
list = false
}
if raw_ep and raw_ep ~= "" then
text_ep = tostring(raw_ep):gsub("%+","")
end
if text_ep ~= "" then
local link_ep = getListSitelinkFromProp(item_id,"P1811")
if link_ep == "" then
link_ep = getListSitelinkFromProp(item_id,"P2354")
end
td_esq:wikitext(
"<span style='display:inline-block;width:1px;'></span>[[File:Noun TV Episodes 3303322.svg|middle|class=notpageimage|link=" ..
link_ep .. "|قِسٕط]] " .. text_ep .. " "
)
end
------------------------------------------------------
-- ICONES EXTERNES
------------------------------------------------------
td_dre:wikitext(generarIconesExternes(item_id) .. linkEditicon(item_id))
------------------------------------------------------
-- PROPIETATS SECUNDÀRIES (FILES NORMALS)
------------------------------------------------------
local propietats = {
"P144","P4970","P50","P110","P178","P58","P287","P86","P57","P162",
"P136","P400","P272","P275","P449","P123","P2360","P1433"
}
for _, pid in ipairs(propietats) do
local admetre = true
if pid == "P144" then
local qid_p144 = getClaims(item_id, "P144", true)[1]
if qid_p144 and (qid_p144 == item_id or qid_p144 == id_pare) then
admetre = false
end
end
if pid == "P136" and es_grup and te_genere_pare then
admetre = false
end
if admetre then
local label = etiquetaProp(pid)
if pid == "P123" and (mode == "videojoc" or mode == "audiovisual") then
label = etiquetaProp(qid_labels.distribuidor)
end
if pid == "P272" and (mode == "pelicula" or mode == "audiovisual") then
label = "اِسٹوٗڈیو"
end
if pid == "P2360" then
label = "آبٲدیاتی"
end
if pid == "P136" then
label = etiquetaProp(qid_labels.genere)
end
if pid == "P1433" and (tipus_net == "مینٛگا" or tipus_net == "مینٛگا سیٖریٖز" or tipus_net == "وَن-شاٹ") then
label = etiquetaProp(qid_labels.revista)
end
if pid == "P449" and mode == "audiovisual" then
label = "چَینَل"
end
--------------------------------------------------
-- GÈNERE (neteja unificada)
--------------------------------------------------
if pid == "P136" then
local valors = {}
for i, qid in ipairs(getClaims(item_id, "P136", true)) do
local label_qid = getLabelData(qid)
local text_net = netejarGenere(label_qid)
if i > 1 then
text_net = text_net:sub(1,1):lower() .. text_net:sub(2)
end
local sitelink = wikidades.getSiteLink{qid}
if sitelink and sitelink ~= "" then
table.insert(valors, "[[" .. sitelink .. "|" .. text_net .. "]]")
else
table.insert(valors, "[[d:" .. qid .. "|" .. text_net .. "]]")
end
end
if #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
--------------------------------------------------
-- EDITORIALS
--------------------------------------------------
elseif pid == "P123" then
local valors = obtenirEditorialsWikibase(item_id)
if valors then
filaEtiquetaValor(html, label, valors, true)
end
--------------------------------------------------
-- ALTRES PROP.
--------------------------------------------------
else
local valors = getClaims(item_id, pid, false)
if valors and #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
end
end
end
------------------------------------------------------
-- DATES (P580 / P577 / P582)
------------------------------------------------------
local data_inici_p580 = getClaims(item_id, "P580", false)[1]
if data_inici_p580 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local data_fi = getClaims(item_id, "P582", false)[1]
local text_data = formatarData(data_inici_p580)
if data_fi then
text_data = text_data .. " – " .. formatarData(data_fi)
end
filaEtiquetaValor(html, label_data, text_data, true)
else
--------------------------------------------------
-- CAS AMB P577 (pot tenir múltiples dates)
--------------------------------------------------
local entity = mw.wikibase.getEntity(item_id)
local claims_p577 = entity and entity.claims and entity.claims.P577 or {}
if #claims_p577 > 0 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local linies = {}
for _, claim in ipairs(claims_p577) do
local dv = claim.mainsnak and claim.mainsnak.datavalue
if dv then
local iso = dv.value and dv.value.time or ""
local data_fmt = formatarData(iso)
local quals = {}
if claim.qualifiers then
if claim.qualifiers.P291 then
for _, q in ipairs(claim.qualifiers.P291) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
if claim.qualifiers.P400 then
for _, q in ipairs(claim.qualifiers.P400) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
end
local linia = data_fmt
if #quals > 0 then
linia = linia .. " (" .. table.concat(quals, ", ") .. ")"
end
table.insert(linies, linia)
end
end
if #linies > 0 then
if #linies == 1 then
filaEtiquetaValor(html, label_data, linies[1], true)
else
local ocultes = {}
for i = 2, #linies do
table.insert(ocultes, linies[i])
end
local text_final =
'<table class="mw-collapsible mw-collapsed" style="width:100%; border-spacing:0;">' ..
'<tr><th colspan="2" style="text-align:left; font-weight:normal;">' .. linies[1] .. '</th></tr>' ..
'<tr><td>' .. table.concat(ocultes, "<br>") .. '</td></tr>' ..
'</table>'
filaEtiquetaValor(html, label_data, text_final, true)
end
end
end
end
------------------------------------------------------
-- RETORNAR EL RESULTAT
------------------------------------------------------
return tostring(html)
end
----------------------------------------------------------
-- p.infotaula
----------------------------------------------------------
local LIMIT_VISIBLE = 4
function p.infotaula(frame)
local args = getArgs(frame, {wrappers = "فرما:اِنفوباکس اٮ۪نِمی مینٛگا"})
local item_id = (args.item and args.item ~= "") and args.item
or mw.wikibase.getEntityIdForCurrentPage()
if not item_id then
return "<span class='error'>غَلطی: وِکیٖڈیٹاہَس سٟتؠ مُنسَلِق کانٛہہ تہِ عُنصَر آو نہٕ لَبنہٕ۔</span>"
end
---------------------------------------------------------
-- SELECCIONATS
---------------------------------------------------------
local seleccionats_raw = args.seleccionats or ""
local seleccionats = {}
if seleccionats_raw ~= "" then
for qid in seleccionats_raw:gmatch("Q%d+") do
seleccionats[qid] = true
end
end
---------------------------------------------------------
-- DELEGACIÓ SI NO ÉS GRUP / FRANQUÍCIA
---------------------------------------------------------
local parts = getClaims(item_id, "P527", true)
local derivades = getClaims(item_id, "P4969", true)
if #parts == 0 and #derivades == 0 then
local tipus = netejarWikilink(obtenirTipusText(args.tipus, item_id))
local mode = tipus_a_mode[tipus]
if mode == "pelicula" then
return frame:expandTemplate{
title = "فِلِم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "llibre" then
return frame:expandTemplate{
title = "کِتاب اِنفوباکس",
args = { item = item_id, titol = args.nom, manga = "y" }
}
elseif mode == "videojoc" then
return frame:expandTemplate{
title = "ویٖڈیو گیم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "audiovisual" then
return frame:expandTemplate{
title = "آڈیو وِجُوَل پروگرام اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
end
end
---------------------------------------------------------
-- MODE FRANQUÍCIA
---------------------------------------------------------
local res = mw.html.create("table")
:addClass("infobox")
:addClass("infotaula-animanga")
local titol = args.nom
or getLabelData(item_id)
or mw.title.getCurrentTitle().text
res:tag("caption")
:addClass(CSS.HEADER)
:wikitext(
'<div style="display:flex; align-items:center;">' ..
'<div style="flex:0 0 30px; min-width:30px;">' ..
'<span style="position:relative; left:2px;">[[:Anime manga japanese characters icon.svg|30px|اِنفوباکس اٮ۪نِمی مینٛگا|class=skin-invert notpageimage]]</span>' ..
'</div>' ..
'<div style="flex:1 1 auto;">' ..
'<span style="font-weight:bold; font-style:italic;">' .. titol .. '</span>' ..
obtenirTitolOriginal(item_id, titol, true) ..
'</div>' ..
'<div style="flex:0 0 30px; min-width:30px;"></div>' ..
'</div>'
)
---------------------------------------------------------
-- IMATGE PRINCIPAL (amb fallback a logo P154)
---------------------------------------------------------
local img = obtenirImatge(item_id, args, "P18", "imatge")
local logo = obtenirImatge(item_id, args, "P154", "logo")
local mostrar_logo_apart = true
if img.nom then
local mida = midaImatge(img.nom, 250, 350)
local td_img = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
td_img:wikitext("[[:" .. img.nom .. "|" .. mida .. "|center]]")
if img.peu and img.peu ~= "" then
td_img:tag("span")
:addClass("ita-img-caption")
:wikitext(img.peu)
end
elseif logo.nom then
-- Fallback: no hi ha P18, però sí P154 → l'usem com a imatge principal
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[:" .. logo.nom .. "|" .. mida .. "|center]]")
mostrar_logo_apart = false
else
res:wikitext("[[Categoria:مینٛگانِمی مَضموٗن یِمَن تِصویٖرٕچ ضروٗرَتھ چھہِ]]")
end
---------------------------------------------------------
-- LOGO (P154) — només si NO s'ha usat ja com a fallback
---------------------------------------------------------
if logo.nom and mostrar_logo_apart then
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[:" .. logo.nom .. "|" .. mida .. "|center]]")
end
---------------------------------------------------------
-- NUCLI PRINCIPAL DEL PARE
---------------------------------------------------------
local pare_te_genere = (#getClaims(item_id, "P136", true) > 0)
res:wikitext(generarNucli(item_id, args, false, item_id, false))
---------------------------------------------------------
-- FORMAT PER (P527)
---------------------------------------------------------
local elements_valids = {}
local exclos_p527 = {
Q125632018=true, Q3464665=true,
Q102364578=true, Q21191270=true
}
for _, tid in ipairs(parts) do
if next(seleccionats) ~= nil and not seleccionats[tid] then
-- exclòs per selecció
else
local exclos = false
for _, p31id in ipairs(getClaims(tid, "P31", true)) do
if exclos_p527[p31id] then
exclos = true
break
end
end
if not exclos then
table.insert(elements_valids, tid)
end
end
end
table.sort(elements_valids, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (Q2620972)
---------------------------------------------------------
local arcs_narratius
arcs_narratius, elements_valids = filtrarPerP31(elements_valids, "Q2620972")
---------------------------------------------------------
-- ARTICLES DE LLISTA (Q13406463) dins P527
---------------------------------------------------------
local llistes_p527
llistes_p527, elements_valids = filtrarPerP31(elements_valids, "Q13406463")
---------------------------------------------------------
-- OBRA DERIVADA (P4969)
---------------------------------------------------------
local ids_der_raw = derivades
local ids_der_filtrats = {}
for _, tid in ipairs(ids_der_raw) do
if next(seleccionats) == nil or seleccionats[tid] then
table.insert(ids_der_filtrats, tid)
end
end
local llistes_der, ids_der = filtrarPerP31(ids_der_filtrats, "Q13406463")
table.sort(ids_der, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (render)
---------------------------------------------------------
if #arcs_narratius > 0 then
res:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(getLabelData("Q2620972")) .. linkEditicon(item_id))
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, q in ipairs(arcs_narratius) do
local nom = getLabelData(q)
ul:tag("li"):wikitext(wdLink(q, nom))
end
end
---------------------------------------------------------
-- FUNCIONS AUXILIARS PER LLISTES
---------------------------------------------------------
local function mostrarLlistes(llistes, contenidor)
for _, q_llista in ipairs(llistes) do
local nom_llista = getLabelData(q_llista)
contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(nom_llista) .. " " .. linkEditicon(q_llista))
local membres = getClaims(q_llista, "P527", true)
if #membres > 0 then
if #membres > 5 then
-- Llista desplegable
local taula_col = contenidor:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(tostring(#membres) .. " عَناصِر")
local ul_membres = taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
else
local ul_membres = contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
end
end
end
end
---------------------------------------------------------
-- MOSTRAR FORMAT PER + OBRA DERIVADA (amb límit)
---------------------------------------------------------
local total = #elements_valids + #ids_der
if total > LIMIT_VISIBLE then
local visibles_p527 = math.min(#elements_valids, LIMIT_VISIBLE)
local visibles_der = math.min(#ids_der, math.max(0, LIMIT_VISIBLE - visibles_p527))
-----------------------------------------------------
-- PRIMERA PART: ELEMENTS VISIBLES NORMALS
-----------------------------------------------------
if visibles_p527 > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for i = 1, visibles_p527 do
res:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if visibles_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
for i = 1, visibles_der do
res:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
---------------------------------------------------------
-- BLOC PLEGABLE "MÉS" (contenidor taula necessari)
---------------------------------------------------------
local taula_col = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
-- capçalera "Més"
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext('<span class="ita-mes-text">مزیٖد</span>')
local resta_p527 = visibles_p527 < #elements_valids
local resta_der = visibles_der < #ids_der
local ambdues = resta_p527 and resta_der
---------------------------------------------------------
-- CONTINGUT PLEGABLE: P527
---------------------------------------------------------
if resta_p527 then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
end
for i = visibles_p527 + 1, #elements_valids do
taula_col:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
---------------------------------------------------------
-- CONTINGUT PLEGABLE: OBRES DERIVADES
---------------------------------------------------------
if resta_der then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
end
for i = visibles_der + 1, #ids_der do
taula_col:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
else
-----------------------------------------------------
-- CAS SENSE PLEGABLE
-----------------------------------------------------
if #elements_valids > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for _, tid in ipairs(elements_valids) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if #ids_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
for _, tid in ipairs(ids_der) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
end
---------------------------------------------------------
-- ALTRES (P5940)
---------------------------------------------------------
local ids_p5940 = getClaims(item_id, "P5940", true)
if #ids_p5940 > 0 then
-- Capçalera "Altres"
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("باقی")
-- Obtenim l'entitat UNA sola vegada
local entity = mw.wikibase.getEntity(item_id)
local claims_p5940 = entity and entity.claims and entity.claims.P5940 or {}
-- Indexem els claims per QID per evitar bucles interns
local claims_index = {}
for _, claim in ipairs(claims_p5940) do
local snak = claim.mainsnak
local q = snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id
if q then
claims_index[q] = claim
end
end
-- Construïm la llista i la mostrem en punts
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, qid in ipairs(ids_p5940) do
local text = wdLink(qid)
local claim = claims_index[qid]
if claim and claim.qualifiers and claim.qualifiers.P3831 then
local qual = claim.qualifiers.P3831[1]
local q_val = qual.datavalue and qual.datavalue.value and qual.datavalue.value.id
if q_val then
text = text .. " (" .. wdLink(q_val) .. ")"
end
end
ul:tag("li"):wikitext(text)
end
end
---------------------------------------------------------
-- PORTAL
---------------------------------------------------------
local portal_val = args.portal or ""
if portal_val ~= "" and portal_val:lower() ~= "no" then
local portal_expandit = frame:preprocess(
"[[:Wikipe-tan face.svg|16px||class=notpageimage|link=Portal:Anime i Manga|اٮ۪نِمی تہٕ مینٛگا پورٹَل]] " ..
"[[Portal:Anime i Manga|اٮ۪نِمی تہٕ مینٛگا پورٹَل]]"
)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:addClass(CSS.CELL_FULL)
:wikitext(portal_expandit)
end
---------------------------------------------------------
-- ESTILS
---------------------------------------------------------
local styles = frame:extensionTag("templatestyles", "", {src="Module: Infotaula animanga/estils.css"})
return styles .. tostring(res)
end
return p
0pmjbypb95dbch7ntukilqn7l5kf2tb
148880
148879
2026-08-10T12:02:09Z
آیات محراج
11062
148880
Scribunto
text/plain
local p = {}
----------------------------------------------------------
-- REQUERIMENTS I CONSTANTS
----------------------------------------------------------
local wikidades = require("Module:Wikidades")
local getArgs = require("Module:Arguments").getArgs
local qid_labels = {
publicacio = "Q732577",
estrena = "Q204854",
emissio = "Q109507868",
distribuidor = "Q12540664",
genere = "Q483394",
revista = "Q41298",
}
----------------------------------------------------------
-- FUNCIONS BÀSIQUES
----------------------------------------------------------
local function formatarData(iso)
if not iso or iso == "" then return "" end
local clean = iso:match("^%+?(%d%d%d%d%-%d%d%-%d%d)")
if not clean then return iso end
local any, m, d = clean:match("^(%d+)%-(%d+)%-(%d+)")
if not any then return iso end
local lang = mw.language.getContentLanguage()
if m == "00" then return any end
if d == "00" then
local fake = any .. "-" .. m .. "-01"
return lang:formatDate("F Y", fake)
end
return lang:formatDate("j F Y", clean)
end
local function netejaNomFitxer(raw)
local nom = tostring(raw):gsub("[%[%]]",""):gsub("^[Ff]it[xz]er:",""):gsub("^[Ff]ile:","")
if nom:find("|") then nom = nom:match("^([^|]+)") or nom end
return nom
end
local function midaImatge(nom, max_w, max_h)
local ext = nom:lower()
if ext:match("%.svg$") or ext:match("%.gif$") then
return max_w .. "px"
else
return max_w .. "x" .. max_h .. "px"
end
end
local function obtenirImatge(item_id, args, prop, param)
prop = prop or "P18"
param = param or "imatge"
if args[param] == "NONE" then
return { nom = nil, peu = nil }
end
if args[param] and args[param] ~= "" then
return { nom = netejaNomFitxer(args[param]), peu = args["peu"] or nil }
end
local raw = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if not raw or raw == "" then
return { nom = nil, peu = nil }
end
local nom = netejaNomFitxer(raw)
local peu = args["peu"]
if not peu or peu == "" then
local raw_caption = wikidades.claim{
item = item_id, property = prop,
qualifier = "P2096", formatting = "raw", list = false
}
if raw_caption and raw_caption ~= "" then peu = raw_caption end
end
return { nom = nom, peu = peu }
end
----------------------------------------------------------
-- ICONES EXTERNES
----------------------------------------------------------
local function getIconaPropieta(prop)
local entity = mw.wikibase.getEntity(prop)
if not entity or not entity.claims then return nil end
local function millor_claim(prop_id)
local claims = entity.claims[prop_id]
if not claims then return nil end
local preferent, normal = nil, nil
for _, claim in ipairs(claims) do
local rank = claim.rank
local val = claim.mainsnak.datavalue
and claim.mainsnak.datavalue.value
local nom = val and (type(val)=="string" and val or val.text or val.id)
if nom and nom ~= "" then
if rank=="preferred" and not preferent then preferent = nom
elseif rank=="normal" and not normal then normal = normal or nom end
end
end
return preferent or normal
end
return millor_claim("P8972") or millor_claim("P2910")
end
local external_link_props = {
"P1984", "P1985", "P4983", "P4947", "P345",
}
local function generarIconesExternes(item_id)
local html = {}
for _, prop in ipairs(external_link_props) do
local val = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if val and val ~= "" then
local formatter = wikidades.claim{
item = prop, property = "P1630",
formatting = "raw", list = false
}
local label = mw.wikibase.getLabel(prop) or prop
local icon = getIconaPropieta(prop)
if formatter and formatter ~= "" and icon then
local url = formatter:gsub("%$1", val)
table.insert(html,
string.format(
'[[:%s|middle|link=%s|class=notpageimage|%s]] ',
icon, url, label
)
)
end
end
end
return table.concat(html, "")
end
----------------------------------------------------------
-- LABELS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getLabelData(qid)
local label, lang = nil, nil
for _, l in ipairs({"ks","mul","en","ja","ko","zh"}) do
local t = mw.wikibase.getLabelByLang(qid, l)
if t and t ~= "" then
label = t
lang = l
break
end
end
if not label then
label = qid
lang = nil
end
return label, lang
end
local function wdLink(qid, label_override)
if label_override and label_override ~= "" then
return "[[d:" .. qid .. "|" .. label_override .. "]]"
end
local label, lang = getLabelData(qid)
local sitelink = wikidades.getSiteLink{qid}
local link = sitelink
and ("[[" .. sitelink .. "|" .. label .. "]]")
or ("[[d:" .. qid .. "|" .. label .. "]]")
if lang and lang ~= "ks" and lang ~= "mul" then
link = link
.. " <sup>(" .. lang .. ")</sup>"
.. " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|"
.. mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain()
.. "|link=https://www.wikidata.org/wiki/" .. qid .. "?uselang=ks]]"
end
return link
end
----------------------------------------------------------
-- CLAIMS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getClaims(item_id, prop_id, only_qids)
if not item_id then return {} end
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return {} end
local result = {}
for v in raw:gmatch("[^/·/]+") do
if only_qids then
local q = v:match("^(Q%d+)$")
if q then table.insert(result, q) end
else
if v:match("^Q%d+$") then
table.insert(result, wdLink(v))
else
table.insert(result, v)
end
end
end
return result
end
----------------------------------------------------------
-- NETEJA DE GÈNERE UNIFICADA (PUNT 1)
----------------------------------------------------------
local APO = "['’`´ʼ‛]"
local GEN_PREFIX = {
"^مینٛگا تہٕ اٮ۪نِمی%s+ہُنٛد%s*",
"^اٮ۪نِمی تہٕ مینٛگا%s+ہُنٛد%s*",
"^مینٛگا%s+ہُنٛد%s*",
"^اٮ۪نِمی%s+ہُنٛد%s*",
"^مینٛگا تہٕ اٮ۪نِمی%s+",
"^اٮ۪نِمی تہٕ مینٛگا%s+",
"^مینٛگا%s+",
"^اٮ۪نِمی%s+",
}
local function netejarGenere(label)
local lower = label:lower()
for _, pat in ipairs(GEN_PREFIX) do
local resta = lower:gsub(pat, "")
if resta ~= lower then
label = label:gsub(pat, "")
break
end
end
label = label:gsub("%s*%b()", "")
label = label:gsub("^d[^a-zà-üA-ZÀ-Ü]+", "")
label = label:gsub("%s+$", "")
return label:sub(1,1):upper() .. label:sub(2)
end
----------------------------------------------------------
-- TIPUS I MAPES
----------------------------------------------------------
local tipus_def = {
["شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q24862" } },
["فرنچائز"] = { mode = "franquicia", qids = { "Q196600" } },
["اٮ۪نِمی فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q29982285" } },
["اٮ۪نیٖمیٹِڈ شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q17517379" } },
["موٗسیٖقی ہُنٛد ویٖڈیو"] = { mode = "audiovisual", qids = { "Q193977", "Q55960075", "Q64100970" } },
["اٮ۪نِمی فِلِم"] = { mode = "pelicula", qids = { "Q20650540" } },
["فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q24856" } },
["ویٖڈیو گیم سیٖریٖز"] = { mode = "videojoc", qids = { "Q7058673" } },
["فِلِم"] = { mode = "pelicula", qids = { "Q229390", "Q11424" } },
["اٮ۪نیٖمیٹِڈ فِلِم"] = { mode = "pelicula", qids = { "Q29168811", "Q202866" } },
["اٮ۪نیٖمیٹِڈ سیٖریٖز"] = { mode = "audiovisual", qids = { "Q581714" } },
["اٮ۪نِمی"] = { mode = "audiovisual", qids = { "Q63952888", "Q11086742", "Q100269041", "Q104640199" } },
["ریڈیو ڈرامہ"] = { mode = "audiovisual", qids = { "Q2635894" } },
["او وی اے"] = { mode = "audiovisual", qids = { "Q220898" } },
["او وی اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113687694" } },
["موٗسیٖقی"] = { mode = "pelicula", qids = { "Q58483083" } },
["وَن-شاٹ"] = { mode = "llibre", qids = { "Q933530", "Q21202185" } },
["او اے ڈی"] = { mode = "audiovisual", qids = { "oad" } },
["او اٮ۪ن اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113671041" } },
["او اٮ۪ن اے"] = { mode = "audiovisual", qids = { "Q1047299" } },
["ڈوراما"] = { mode = "audiovisual", qids = { "Q399811" } },
["خاص"] = { mode = "audiovisual", qids = { "Q1261214" } },
["لائیو اٮ۪کشَن"] = { mode = nil, qids = { "live action" } },
["وِجُوَلی ناوَل"] = { mode = "videojoc", qids = { "Q689445" } },
["گیم"] = { mode = nil, qids = { "Q11410" } },
["ناوَل"] = { mode = "llibre", qids = { "Q747381" } },
["ناوَل سیٖریٖز"] = { mode = "llibre", qids = { "Q104213567" } },
["ویٖڈیو گیم"] = { mode = "videojoc", qids = { "Q7889" } },
["ڈوجِنشی"] = { mode = "llibre", qids = { "Q668711" } },
["مینٛگا سیٖریٖز"] = { mode = "llibre", qids = { "Q21198342" } },
["مینٛگا"] = { mode = "llibre", qids = { "Q8274" } },
["اِشتِہار"] = { mode = "audiovisual", qids = { "Q11796892", "Q854995" } },
["سی ڈی ڈرامہ"] = { mode = "audiovisual", qids = { "Q244351" } },
["مینٛگا فِلِم"] = { mode = "pelicula", qids = { "Q116790751" } },
["کَمِک"] = { mode = "llibre", qids = { "Q1004" } },
["ٹی وی سیٖریٖز"] = { mode = "audiovisual", qids = { "Q5398426", "Q21191019" } },
["وٮ۪ب سیٖریٖز"] = { mode = "audiovisual", qids = { "Q526877" } },
["وٮ۪ب ٹوٗن"] = { mode = "llibre", qids = { "Q7978994" } },
["مَنہوا سیٖریٖز"] = { mode = "llibre", qids = { "Q74262765" } },
["مَنہوا"] = { mode = "llibre", qids = { "Q754669" } },
["لائیو اٮ۪کشَن فِلِم"] = { mode = "pelicula", qids = { "pel·lícula live action" } },
["لایِٹ ناوَل"] = { mode = "llibre", qids = {} },
}
local tipus_map = {}
local tipus_a_mode = {}
for tipus, def in pairs(tipus_def) do
tipus_a_mode[tipus] = def.mode
for _, qid in ipairs(def.qids) do
tipus_map[qid] = tipus
end
end
local link_desti = {
["مینٛگا سیٖریٖز"] = "مینٛگا",
["فرنچائز"] = "میٖڈیا فرنچائز",
}
local function majusculaInicial(s)
if not s or s == "" then return s end
return mw.ustring.upper(mw.ustring.sub(s, 1, 1)) .. mw.ustring.sub(s, 2)
end
local function etiquetaProp(pid)
local label = mw.wikibase.getLabel(pid)
return majusculaInicial(label or "")
end
local function obtenirTipusText(tipus_param, item_id)
local val = (tipus_param and tipus_param ~= "") and string.lower(tipus_param) or ""
local map = tipus_map
if val == "" and item_id then
local ids = getClaims(item_id, "P31", true)
if #ids == 0 then return "باقی" end
local primer = ids[1]
for _, id in ipairs(ids) do
if map[id] then
val = id
break
end
end
if val == "" then val = primer end
end
local function linkSiExisteix(t, desti)
local target = desti or t
local title = mw.title.new(target)
if title and title.exists then return "[[" .. target .. "|" .. t .. "]]" end
return t
end
if map[val] then
return linkSiExisteix(map[val], link_desti[map[val]])
end
local label, _ = getLabelData(val)
return label and majusculaInicial(label) or "باقی"
end
local function netejarWikilink(text)
return text
:gsub("%[%[[^|]+|([^%]]+)%]%]", "%1")
:gsub("%[%[([^%]]+)%]%]", "%1")
end
----------------------------------------------------------
-- UTILITATS DIVERSES
----------------------------------------------------------
local function linkEditicon(item_id)
return "<span class='ita-edit-icon' style='margin-left:4px;'>[[:OOjs UI icon edit-ltr-progressive.svg|middle|class=notpageimage|link=d:"
.. item_id .. "|وِکیٖڈیٹاہَس پؠٹھ کٔرِو اؠڈِٹ]]</span>"
end
local function es_no_llati(s)
local te_no_llati = mw.ustring.find(s, "[^A-Za-zÀ-ÖØ-öø-ÿĀ-ſ0-9%s%p]") ~= nil
if te_no_llati then
return "font-weight:normal;"
else
return "font-style:italic;"
end
end
----------------------------------------------------------
-- TRANSLITERACIÓ (qualificadors de P1476)
----------------------------------------------------------
local PROPS_TRANSLIT = {
"P2440",
"P2125",
"P1942",
"P2001",
"P5139",
"P1721",
}
local function obtenirTransliteracio(item_id)
local entity = mw.wikibase.getEntity(item_id)
if not entity or not entity.claims or not entity.claims.P1476 then return nil end
for _, claim in ipairs(entity.claims.P1476) do
if claim.qualifiers then
for _, pid in ipairs(PROPS_TRANSLIT) do
local quals = claim.qualifiers[pid]
if quals then
for _, q in ipairs(quals) do
local val = q.datavalue and q.datavalue.value
if val then
local t = type(val) == "string" and val or val.text
if t and t ~= "" then return t end
end
end
end
end
end
end
return nil
end
local function obtenirTitolOriginal(item_id, titol_catala, es_capcalera)
if not item_id then return "" end
local text = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "table",
colformat0 = "text",
list = false,
rowformat = "$0",
editicon = false,
}
if not text or text == "" or text == titol_catala then
return ""
end
local lang = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "$language",
list = false,
editicon = false,
}
if lang == "" then lang = nil end
local estil_text = es_no_llati(text)
local prefix_lang = ""
if es_capcalera and lang then
prefix_lang = "<sup><span style='font-weight:normal; font-style:normal;'>(" .. lang .. ")</span></sup> "
end
local tooltip_html = ""
if estil_text == "font-weight:normal;" then
local translit = obtenirTransliteracio(item_id)
if translit then
tooltip_html =
'<span class="ita-translit-wrap" tabindex="0">' ..
'<sup class="ita-translit-icon">ⓘ</sup>' ..
'<span class="ita-translit-tip">' .. translit:gsub("'", "'") .. '</span>' ..
'</span>'
end
end
return "<span style='font-size:90%; display:block;'>"
.. prefix_lang
.. "<span style='" .. estil_text .. "'>" .. text .. "</span>"
.. tooltip_html
.. "</span>"
end
local function obtenirDurada(item_id)
local raw = wikidades.claim{
item = item_id,
property = "P2047",
formatting = "raw",
list = false
}
if not raw or raw == "" then return nil end
local amount =
raw:match('"amount"%s*:%s*"(%+?[%d%.%-]+)"') or
raw:match('^%+?(%d+)$') or
raw:match('(%d+)[^%d]*$')
if not amount then return nil end
amount = tonumber(amount)
if not amount then return nil end
local unit =
raw:match('"unit"%s*:%s*"http://www%.wikidata%.org/entity/(Q%d+)"') or
raw:match('"unit"%s*:%s*"(Q%d+)"')
if not unit then
return amount .. " مِنَٹ"
end
local unit_map = {
Q7727 = "مِنَٹ",
Q11574 = "سٮ۪کَنڈ",
Q23387 = "گٲنٛٹہٕ",
Q25235 = "دۄہ"
}
local u = unit_map[unit]
if not u then return amount end
if u == "سٮ۪کَنڈ" then
amount = math.floor(amount / 60)
u = "مِنَٹ"
elseif u == "گٲنٛٹہٕ" then
amount = amount * 60
u = "مِنَٹ"
elseif u == "دۄہ" then
amount = amount * 24 * 60
u = "مِنَٹ"
end
return amount .. " " .. u
end
local function obtenirDataOrdenacio(item_id)
if not item_id then return "9999-99-99" end
local function primera(prop_id)
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return nil end
local any, mes, dia = raw:match("%+(%d%d%d%d)%-(%d%d)%-(%d%d)T")
if not any then return nil end
if mes == "00" then mes = "01" end
if dia == "00" then dia = "01" end
return string.format("%s-%s-%s", any, mes, dia)
end
return primera("P580")
or primera("P577")
or primera("P571")
or "9999-99-99"
end
local function getListSitelinkFromProp(item_id, prop_id)
local qid = getClaims(item_id, prop_id, true)[1]
if not qid then return "" end
return wikidades.getSiteLink{qid} or ("d:" .. qid)
end
----------------------------------------------------------
-- EDITORIALS
----------------------------------------------------------
local function obtenirEditorialsWikibase(qid)
local entity = mw.wikibase.getEntity(qid)
if not entity or not entity.claims or not entity.claims.P123 or #entity.claims.P123 == 0 then
return nil
end
local preferent
local primer_trobat = nil
local catalanes = {}
for _, claim in ipairs(entity.claims.P123) do
local ed_qid = claim.mainsnak.datavalue and claim.mainsnak.datavalue.value.id
if ed_qid then
local label = wdLink(ed_qid)
local lang_label = nil
local es_cat = false
if claim.qualifiers and claim.qualifiers.P407 then
for _, qv in ipairs(claim.qualifiers.P407) do
if qv.datavalue.value.id == "Q33552" then
es_cat = true
break
end
end
if es_cat then
lang_label, _ = getLabelData("Q33552")
else
local qid_lang = claim.qualifiers.P407[1].datavalue.value.id
lang_label, _ = getLabelData(qid_lang)
end
end
local text = label
if lang_label then
text = text .. " (" .. lang_label .. ")"
end
if es_cat then
table.insert(catalanes, text)
else
if not primer_trobat then primer_trobat = text end
if claim.rank == "preferred" and not preferent then
preferent = text
end
end
end
end
preferent = preferent or primer_trobat
if not preferent and #catalanes == 0 then return nil end
local resultat = {}
if preferent then table.insert(resultat, preferent) end
for _, c in ipairs(catalanes) do
if c ~= preferent then table.insert(resultat, c) end
end
return table.concat(resultat, "<br />")
end
----------------------------------------------------------
-- FILTRAR PER P31
----------------------------------------------------------
local function filtrarPerP31(llista, qid_tipus)
local coincideixen, resta = {}, {}
for _, q in ipairs(llista) do
local trobat = false
for _, classe in ipairs(getClaims(q, "P31", true)) do
if classe == qid_tipus then
trobat = true
break
end
end
table.insert(trobat and coincideixen or resta, q)
end
return coincideixen, resta
end
----------------------------------------------------------
-- CSS
----------------------------------------------------------
local CSS = {
HEADER = "ita-header",
SUBHEADER = "ita-subheader",
TIPUS = "ita-tipus",
CELL_L = "ita-cell-l",
CELL_R = "ita-cell-r",
ICON_CELL = "ita-icon-cell",
ICON_CELL_R = "ita-icon-cell-r",
CELL_FULL = "ita-cell-full",
}
local function filaEtiquetaValor(contenidor, label, valor, collapsible)
local fila = contenidor:tag("tr")
if collapsible then
fila:addClass("mw-collapsible-content")
end
fila:tag("td"):addClass(CSS.CELL_L):wikitext(label)
fila:tag("td"):addClass(CSS.CELL_R):wikitext(valor)
return fila
end
----------------------------------------------------------
-- GENERAR NUCLI (VERSIÓ COMPLETA, OPCIÓ B)
----------------------------------------------------------
local function generarNucli(item_id, args, es_grup, id_pare, te_genere_pare)
if not item_id or not mw.wikibase.isValidEntityId(item_id) then
return ""
end
local html = mw.html.create()
------------------------------------------------------
-- NOM BASE + IDIOMA
------------------------------------------------------
local nom_base, nom_base_lang = getLabelData(item_id)
local ret_lang_subheader = ""
local ret_icon_subheader = ""
if nom_base_lang and nom_base_lang ~= "ks" and nom_base_lang ~= "mul" then
ret_lang_subheader =
" <span style='font-weight:normal'><sup>(" .. nom_base_lang .. ")</sup></span>"
ret_icon_subheader =
" [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|" ..
mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain() ..
"|link=https://www.wikidata.org/wiki/" .. item_id .. "?uselang=ks]]"
end
------------------------------------------------------
-- TIPUS
------------------------------------------------------
local tipus_text = obtenirTipusText(args.tipus, item_id)
local tipus_net = netejarWikilink(tipus_text)
local mode = tipus_a_mode[tipus_net] or ""
------------------------------------------------------
-- SUBHEADER (si és grup)
------------------------------------------------------
if es_grup then
local estil_sub = es_no_llati(nom_base)
local sitelink = wikidades.getSiteLink{item_id}
local dest_link = sitelink
and ("[[" .. sitelink .. "|" .. nom_base .. "]]")
or ("[[d:" .. item_id .. "|" .. nom_base .. "]]")
local text =
"<span style='" .. estil_sub .. "'>" .. dest_link .. "</span>" ..
ret_lang_subheader ..
ret_icon_subheader ..
obtenirTitolOriginal(item_id, nom_base, false)
local fila_sh = html:tag("tr")
fila_sh:addClass("mw-collapsible-content")
fila_sh:tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(text)
end
------------------------------------------------------
-- FILA TIPUS + ICONES (VERSIÓ SENSE TAULA INTERNA)
------------------------------------------------------
local fila_tipus = html:tag("tr")
fila_tipus:addClass("mw-collapsible-content ita-row-tipus")
-- Cel·la esquerra (tipus)
fila_tipus:tag("td")
:addClass(CSS.TIPUS)
:wikitext(tipus_text)
local td_icones = fila_tipus:tag("td")
td_icones:addClass(CSS.CELL_R .. " ita-icons-flex")
local wrapper = td_icones:tag("div")
wrapper:addClass("ita-icons-wrapper")
local td_esq = wrapper:tag("div")
td_esq:addClass("ita-icons-left " .. CSS.ICON_CELL)
local td_dre = wrapper:tag("div")
td_dre:addClass("ita-icons-right " .. CSS.ICON_CELL_R)
------------------------------------------------------
-- ETIQUETA PERÍODE (funció interna)
------------------------------------------------------
local function _obtenirEtiquetaPeriode_local(qid, tipus_str)
local t = mw.ustring.lower(tipus_str or "")
local m = tipus_a_mode[majusculaInicial(t)] or ""
if m == "franquicia" then
return etiquetaProp("P2348")
end
if m == "llibre" or m == "videojoc" then
return etiquetaProp(qid_labels.publicacio)
end
if m == "pelicula" then
local te_p577 = wikidades.claim{item=qid, property="P577", list=false}
local te_p582 = wikidades.claim{item=qid, property="P582", list=false}
if te_p577 and te_p577 ~= "" then
return etiquetaProp(qid_labels.estrena)
elseif te_p582 and te_p582 ~= "" then
return etiquetaProp(qid_labels.emissio)
else
return etiquetaProp(qid_labels.estrena)
end
end
return etiquetaProp(qid_labels.emissio)
end
------------------------------------------------------
-- ICONA DURADA (P2047)
------------------------------------------------------
local text_durada = obtenirDurada(item_id)
if text_durada then
td_esq:wikitext("[[File:Hourglass icon.png|middle|class=notpageimage|link=|وَقٕف]] " .. text_durada .. " ")
end
------------------------------------------------------
-- ICONA DE LLISTA (P31)
------------------------------------------------------
local p31_qid = getClaims(item_id, "P31", true)[1] or ""
if p31_qid == "Q24856" or p31_qid == "Q7058673" or p31_qid == "Q29982285" then
local link = getListSitelinkFromProp(item_id, "P2354")
if link == "" then
link = wikidades.getSiteLink{item_id} or ("d:" .. item_id)
end
td_esq:wikitext("[[File:Font Awesome 5 regular list-alt.svg|middle|class=notpageimage|link=" .. link .. "]] ")
end
------------------------------------------------------
-- ICONA VOLUMS / PEL·LÍCULES (P2635)
------------------------------------------------------
local raw_volums = wikidades.claim{
item = item_id,
property = "P2635",
formatting = "raw",
list = false
}
if raw_volums and raw_volums ~= "" then
local quant = tostring(raw_volums):gsub("%+","")
if p31_qid == "Q29982285" then
td_esq:wikitext(
"[[File:Tabler-icons_movie.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|فِلِمہٕ]] " .. quant .. " فِلِمہٕ "
)
else
td_esq:wikitext(
"[[File:OpenMoji-black 1F4DA.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|جِلٕد]] " .. quant .. " جِلٕد "
)
end
end
------------------------------------------------------
-- ICONA EPISODIS (P1113)
------------------------------------------------------
local text_ep = ""
local raw_ep = wikidades.claim{
item = item_id,
property = "P1113",
formatting = "raw",
list = false
}
if raw_ep and raw_ep ~= "" then
text_ep = tostring(raw_ep):gsub("%+","")
end
if text_ep ~= "" then
local link_ep = getListSitelinkFromProp(item_id,"P1811")
if link_ep == "" then
link_ep = getListSitelinkFromProp(item_id,"P2354")
end
td_esq:wikitext(
"<span style='display:inline-block;width:1px;'></span>[[File:Noun TV Episodes 3303322.svg|middle|class=notpageimage|link=" ..
link_ep .. "|قِسٕط]] " .. text_ep .. " "
)
end
------------------------------------------------------
-- ICONES EXTERNES
------------------------------------------------------
td_dre:wikitext(generarIconesExternes(item_id) .. linkEditicon(item_id))
------------------------------------------------------
-- PROPIETATS SECUNDÀRIES (FILES NORMALS)
------------------------------------------------------
local propietats = {
"P144","P4970","P50","P110","P178","P58","P287","P86","P57","P162",
"P136","P400","P272","P275","P449","P123","P2360","P1433"
}
for _, pid in ipairs(propietats) do
local admetre = true
if pid == "P144" then
local qid_p144 = getClaims(item_id, "P144", true)[1]
if qid_p144 and (qid_p144 == item_id or qid_p144 == id_pare) then
admetre = false
end
end
if pid == "P136" and es_grup and te_genere_pare then
admetre = false
end
if admetre then
local label = etiquetaProp(pid)
if pid == "P123" and (mode == "videojoc" or mode == "audiovisual") then
label = etiquetaProp(qid_labels.distribuidor)
end
if pid == "P272" and (mode == "pelicula" or mode == "audiovisual") then
label = "اِسٹوٗڈیو"
end
if pid == "P2360" then
label = "آبٲدیاتی"
end
if pid == "P136" then
label = etiquetaProp(qid_labels.genere)
end
if pid == "P1433" and (tipus_net == "مینٛگا" or tipus_net == "مینٛگا سیٖریٖز" or tipus_net == "وَن-شاٹ") then
label = etiquetaProp(qid_labels.revista)
end
if pid == "P449" and mode == "audiovisual" then
label = "چَینَل"
end
--------------------------------------------------
-- GÈNERE (neteja unificada)
--------------------------------------------------
if pid == "P136" then
local valors = {}
for i, qid in ipairs(getClaims(item_id, "P136", true)) do
local label_qid = getLabelData(qid)
local text_net = netejarGenere(label_qid)
if i > 1 then
text_net = text_net:sub(1,1):lower() .. text_net:sub(2)
end
local sitelink = wikidades.getSiteLink{qid}
if sitelink and sitelink ~= "" then
table.insert(valors, "[[" .. sitelink .. "|" .. text_net .. "]]")
else
table.insert(valors, "[[d:" .. qid .. "|" .. text_net .. "]]")
end
end
if #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
--------------------------------------------------
-- EDITORIALS
--------------------------------------------------
elseif pid == "P123" then
local valors = obtenirEditorialsWikibase(item_id)
if valors then
filaEtiquetaValor(html, label, valors, true)
end
--------------------------------------------------
-- ALTRES PROP.
--------------------------------------------------
else
local valors = getClaims(item_id, pid, false)
if valors and #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
end
end
end
------------------------------------------------------
-- DATES (P580 / P577 / P582)
------------------------------------------------------
local data_inici_p580 = getClaims(item_id, "P580", false)[1]
if data_inici_p580 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local data_fi = getClaims(item_id, "P582", false)[1]
local text_data = formatarData(data_inici_p580)
if data_fi then
text_data = text_data .. " – " .. formatarData(data_fi)
end
filaEtiquetaValor(html, label_data, text_data, true)
else
--------------------------------------------------
-- CAS AMB P577 (pot tenir múltiples dates)
--------------------------------------------------
local entity = mw.wikibase.getEntity(item_id)
local claims_p577 = entity and entity.claims and entity.claims.P577 or {}
if #claims_p577 > 0 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local linies = {}
for _, claim in ipairs(claims_p577) do
local dv = claim.mainsnak and claim.mainsnak.datavalue
if dv then
local iso = dv.value and dv.value.time or ""
local data_fmt = formatarData(iso)
local quals = {}
if claim.qualifiers then
if claim.qualifiers.P291 then
for _, q in ipairs(claim.qualifiers.P291) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
if claim.qualifiers.P400 then
for _, q in ipairs(claim.qualifiers.P400) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
end
local linia = data_fmt
if #quals > 0 then
linia = linia .. " (" .. table.concat(quals, ", ") .. ")"
end
table.insert(linies, linia)
end
end
if #linies > 0 then
if #linies == 1 then
filaEtiquetaValor(html, label_data, linies[1], true)
else
local ocultes = {}
for i = 2, #linies do
table.insert(ocultes, linies[i])
end
local text_final =
'<table class="mw-collapsible mw-collapsed" style="width:100%; border-spacing:0;">' ..
'<tr><th colspan="2" style="text-align:left; font-weight:normal;">' .. linies[1] .. '</th></tr>' ..
'<tr><td>' .. table.concat(ocultes, "<br>") .. '</td></tr>' ..
'</table>'
filaEtiquetaValor(html, label_data, text_final, true)
end
end
end
end
------------------------------------------------------
-- RETORNAR EL RESULTAT
------------------------------------------------------
return tostring(html)
end
----------------------------------------------------------
-- p.infotaula
----------------------------------------------------------
local LIMIT_VISIBLE = 4
function p.infotaula(frame)
local args = getArgs(frame, {wrappers = "فرما:اِنفوباکس اٮ۪نِمی مینٛگا"})
local item_id = (args.item and args.item ~= "") and args.item
or mw.wikibase.getEntityIdForCurrentPage()
if not item_id then
return "<span class='error'>غَلطی: وِکیٖڈیٹاہَس سٟتؠ مُنسَلِق کانٛہہ تہِ عُنصَر آو نہٕ لَبنہٕ۔</span>"
end
---------------------------------------------------------
-- SELECCIONATS
---------------------------------------------------------
local seleccionats_raw = args.seleccionats or ""
local seleccionats = {}
if seleccionats_raw ~= "" then
for qid in seleccionats_raw:gmatch("Q%d+") do
seleccionats[qid] = true
end
end
---------------------------------------------------------
-- DELEGACIÓ SI NO ÉS GRUP / FRANQUÍCIA
---------------------------------------------------------
local parts = getClaims(item_id, "P527", true)
local derivades = getClaims(item_id, "P4969", true)
if #parts == 0 and #derivades == 0 then
local tipus = netejarWikilink(obtenirTipusText(args.tipus, item_id))
local mode = tipus_a_mode[tipus]
if mode == "pelicula" then
return frame:expandTemplate{
title = "فِلِم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "llibre" then
return frame:expandTemplate{
title = "کِتاب اِنفوباکس",
args = { item = item_id, titol = args.nom, manga = "y" }
}
elseif mode == "videojoc" then
return frame:expandTemplate{
title = "ویٖڈیو گیم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "audiovisual" then
return frame:expandTemplate{
title = "آڈیو وِجُوَل پروگرام اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
end
end
---------------------------------------------------------
-- MODE FRANQUÍCIA
---------------------------------------------------------
local res = mw.html.create("table")
:addClass("infobox")
:addClass("infotaula-animanga")
local titol = args.nom
or getLabelData(item_id)
or mw.title.getCurrentTitle().text
res:tag("caption")
:addClass(CSS.HEADER)
:wikitext(
'<div style="display:flex; align-items:center;">' ..
'<div style="flex:0 0 30px; min-width:30px;">' ..
'<span style="position:relative; left:2px;">[[:Anime manga japanese characters icon.svg|30px|اِنفوباکس اٮ۪نِمی مینٛگا|class=skin-invert notpageimage]]</span>' ..
'</div>' ..
'<div style="flex:1 1 auto;">' ..
'<span style="font-weight:bold; font-style:italic;">' .. titol .. '</span>' ..
obtenirTitolOriginal(item_id, titol, true) ..
'</div>' ..
'<div style="flex:0 0 30px; min-width:30px;"></div>' ..
'</div>'
)
---------------------------------------------------------
-- IMATGE PRINCIPAL (amb fallback a logo P154)
---------------------------------------------------------
local img = obtenirImatge(item_id, args, "P18", "imatge")
local logo = obtenirImatge(item_id, args, "P154", "logo")
local mostrar_logo_apart = true
if img.nom then
local mida = midaImatge(img.nom, 250, 350)
local td_img = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
td_img:wikitext("[[:" .. img.nom .. "|" .. mida .. "|center]]")
if img.peu and img.peu ~= "" then
td_img:tag("span")
:addClass("ita-img-caption")
:wikitext(img.peu)
end
elseif logo.nom then
-- Fallback: no hi ha P18, però sí P154 → l'usem com a imatge principal
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[:" .. logo.nom .. "|" .. mida .. "|center]]")
mostrar_logo_apart = false
else
res:wikitext("[[Categoria:مینٛگانِمی مَضموٗن یِمَن تِصویٖرٕچ ضروٗرَتھ چھہِ]]")
end
---------------------------------------------------------
-- LOGO (P154) — només si NO s'ha usat ja com a fallback
---------------------------------------------------------
if logo.nom and mostrar_logo_apart then
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[:" .. logo.nom .. "|" .. mida .. "|center]]")
end
---------------------------------------------------------
-- NUCLI PRINCIPAL DEL PARE
---------------------------------------------------------
local pare_te_genere = (#getClaims(item_id, "P136", true) > 0)
res:wikitext(generarNucli(item_id, args, false, item_id, false))
---------------------------------------------------------
-- FORMAT PER (P527)
---------------------------------------------------------
local elements_valids = {}
local exclos_p527 = {
Q125632018=true, Q3464665=true,
Q102364578=true, Q21191270=true
}
for _, tid in ipairs(parts) do
if next(seleccionats) ~= nil and not seleccionats[tid] then
-- exclòs per selecció
else
local exclos = false
for _, p31id in ipairs(getClaims(tid, "P31", true)) do
if exclos_p527[p31id] then
exclos = true
break
end
end
if not exclos then
table.insert(elements_valids, tid)
end
end
end
table.sort(elements_valids, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (Q2620972)
---------------------------------------------------------
local arcs_narratius
arcs_narratius, elements_valids = filtrarPerP31(elements_valids, "Q2620972")
---------------------------------------------------------
-- ARTICLES DE LLISTA (Q13406463) dins P527
---------------------------------------------------------
local llistes_p527
llistes_p527, elements_valids = filtrarPerP31(elements_valids, "Q13406463")
---------------------------------------------------------
-- OBRA DERIVADA (P4969)
---------------------------------------------------------
local ids_der_raw = derivades
local ids_der_filtrats = {}
for _, tid in ipairs(ids_der_raw) do
if next(seleccionats) == nil or seleccionats[tid] then
table.insert(ids_der_filtrats, tid)
end
end
local llistes_der, ids_der = filtrarPerP31(ids_der_filtrats, "Q13406463")
table.sort(ids_der, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (render)
---------------------------------------------------------
if #arcs_narratius > 0 then
res:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(getLabelData("Q2620972")) .. linkEditicon(item_id))
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, q in ipairs(arcs_narratius) do
local nom = getLabelData(q)
ul:tag("li"):wikitext(wdLink(q, nom))
end
end
---------------------------------------------------------
-- FUNCIONS AUXILIARS PER LLISTES
---------------------------------------------------------
local function mostrarLlistes(llistes, contenidor)
for _, q_llista in ipairs(llistes) do
local nom_llista = getLabelData(q_llista)
contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(nom_llista) .. " " .. linkEditicon(q_llista))
local membres = getClaims(q_llista, "P527", true)
if #membres > 0 then
if #membres > 5 then
-- Llista desplegable
local taula_col = contenidor:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(tostring(#membres) .. " عَناصِر")
local ul_membres = taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
else
local ul_membres = contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
end
end
end
end
---------------------------------------------------------
-- MOSTRAR FORMAT PER + OBRA DERIVADA (amb límit)
---------------------------------------------------------
local total = #elements_valids + #ids_der
if total > LIMIT_VISIBLE then
local visibles_p527 = math.min(#elements_valids, LIMIT_VISIBLE)
local visibles_der = math.min(#ids_der, math.max(0, LIMIT_VISIBLE - visibles_p527))
-----------------------------------------------------
-- PRIMERA PART: ELEMENTS VISIBLES NORMALS
-----------------------------------------------------
if visibles_p527 > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for i = 1, visibles_p527 do
res:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if visibles_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
for i = 1, visibles_der do
res:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
---------------------------------------------------------
-- BLOC PLEGABLE "MÉS" (contenidor taula necessari)
---------------------------------------------------------
local taula_col = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
-- capçalera "Més"
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext('<span class="ita-mes-text">مزیٖد</span>')
local resta_p527 = visibles_p527 < #elements_valids
local resta_der = visibles_der < #ids_der
local ambdues = resta_p527 and resta_der
---------------------------------------------------------
-- CONTINGUT PLEGABLE: P527
---------------------------------------------------------
if resta_p527 then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
end
for i = visibles_p527 + 1, #elements_valids do
taula_col:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
---------------------------------------------------------
-- CONTINGUT PLEGABLE: OBRES DERIVADES
---------------------------------------------------------
if resta_der then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
end
for i = visibles_der + 1, #ids_der do
taula_col:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
else
-----------------------------------------------------
-- CAS SENSE PLEGABLE
-----------------------------------------------------
if #elements_valids > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for _, tid in ipairs(elements_valids) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if #ids_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
for _, tid in ipairs(ids_der) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
end
---------------------------------------------------------
-- ALTRES (P5940)
---------------------------------------------------------
local ids_p5940 = getClaims(item_id, "P5940", true)
if #ids_p5940 > 0 then
-- Capçalera "Altres"
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("باقی")
-- Obtenim l'entitat UNA sola vegada
local entity = mw.wikibase.getEntity(item_id)
local claims_p5940 = entity and entity.claims and entity.claims.P5940 or {}
-- Indexem els claims per QID per evitar bucles interns
local claims_index = {}
for _, claim in ipairs(claims_p5940) do
local snak = claim.mainsnak
local q = snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id
if q then
claims_index[q] = claim
end
end
-- Construïm la llista i la mostrem en punts
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, qid in ipairs(ids_p5940) do
local text = wdLink(qid)
local claim = claims_index[qid]
if claim and claim.qualifiers and claim.qualifiers.P3831 then
local qual = claim.qualifiers.P3831[1]
local q_val = qual.datavalue and qual.datavalue.value and qual.datavalue.value.id
if q_val then
text = text .. " (" .. wdLink(q_val) .. ")"
end
end
ul:tag("li"):wikitext(text)
end
end
---------------------------------------------------------
-- PORTAL
---------------------------------------------------------
local portal_val = args.portal or ""
if portal_val ~= "" and portal_val:lower() ~= "no" then
local portal_expandit = frame:preprocess(
"[[:Wikipe-tan face.svg|16px||class=notpageimage|link=Portal:Anime i Manga|اٮ۪نِمی تہٕ مینٛگا پورٹَل]] " ..
"[[Portal:Anime i Manga|اٮ۪نِمی تہٕ مینٛگا پورٹَل]]"
)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:addClass(CSS.CELL_FULL)
:wikitext(portal_expandit)
end
---------------------------------------------------------
-- ESTILS
---------------------------------------------------------
local styles = frame:extensionTag("templatestyles", "", {src="Module: Infotaula animanga/estils.css"})
return styles .. tostring(res)
end
return p
2c73si8tb3vsowvlfwwllp3fdbm24wc
148881
148880
2026-08-10T12:03:57Z
آیات محراج
11062
148881
Scribunto
text/plain
local p = {}
----------------------------------------------------------
-- REQUERIMENTS I CONSTANTS
----------------------------------------------------------
local wikidades = require("Module:Wikidades")
local getArgs = require("Module:Arguments").getArgs
local qid_labels = {
publicacio = "Q732577",
estrena = "Q204854",
emissio = "Q109507868",
distribuidor = "Q12540664",
genere = "Q483394",
revista = "Q41298",
}
----------------------------------------------------------
-- FUNCIONS BÀSIQUES
----------------------------------------------------------
local function formatarData(iso)
if not iso or iso == "" then return "" end
local clean = iso:match("^%+?(%d%d%d%d%-%d%d%-%d%d)")
if not clean then return iso end
local any, m, d = clean:match("^(%d+)%-(%d+)%-(%d+)")
if not any then return iso end
local lang = mw.language.getContentLanguage()
if m == "00" then return any end
if d == "00" then
local fake = any .. "-" .. m .. "-01"
return lang:formatDate("F Y", fake)
end
return lang:formatDate("j F Y", clean)
end
local function netejaNomFitxer(raw)
local nom = tostring(raw):gsub("[%[%]]",""):gsub("^[Ff]it[xz]er:",""):gsub("^[Ff]ile:","")
if nom:find("|") then nom = nom:match("^([^|]+)") or nom end
return nom
end
local function midaImatge(nom, max_w, max_h)
local ext = nom:lower()
if ext:match("%.svg$") or ext:match("%.gif$") then
return max_w .. "px"
else
return max_w .. "x" .. max_h .. "px"
end
end
local function obtenirImatge(item_id, args, prop, param)
prop = prop or "P18"
param = param or "imatge"
if args[param] == "NONE" then
return { nom = nil, peu = nil }
end
if args[param] and args[param] ~= "" then
return { nom = netejaNomFitxer(args[param]), peu = args["peu"] or nil }
end
local raw = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if not raw or raw == "" then
return { nom = nil, peu = nil }
end
local nom = netejaNomFitxer(raw)
local peu = args["peu"]
if not peu or peu == "" then
local raw_caption = wikidades.claim{
item = item_id, property = prop,
qualifier = "P2096", formatting = "raw", list = false
}
if raw_caption and raw_caption ~= "" then peu = raw_caption end
end
return { nom = nom, peu = peu }
end
----------------------------------------------------------
-- ICONES EXTERNES
----------------------------------------------------------
local function getIconaPropieta(prop)
local entity = mw.wikibase.getEntity(prop)
if not entity or not entity.claims then return nil end
local function millor_claim(prop_id)
local claims = entity.claims[prop_id]
if not claims then return nil end
local preferent, normal = nil, nil
for _, claim in ipairs(claims) do
local rank = claim.rank
local val = claim.mainsnak.datavalue
and claim.mainsnak.datavalue.value
local nom = val and (type(val)=="string" and val or val.text or val.id)
if nom and nom ~= "" then
if rank=="preferred" and not preferent then preferent = nom
elseif rank=="normal" and not normal then normal = normal or nom end
end
end
return preferent or normal
end
return millor_claim("P8972") or millor_claim("P2910")
end
local external_link_props = {
"P1984", "P1985", "P4983", "P4947", "P345",
}
local function generarIconesExternes(item_id)
local html = {}
for _, prop in ipairs(external_link_props) do
local val = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if val and val ~= "" then
local formatter = wikidades.claim{
item = prop, property = "P1630",
formatting = "raw", list = false
}
local label = mw.wikibase.getLabel(prop) or prop
local icon = getIconaPropieta(prop)
if formatter and formatter ~= "" and icon then
local url = formatter:gsub("%$1", val)
table.insert(html,
string.format(
'[[File:%s|middle|link=%s|class=notpageimage|%s]] ',
icon, url, label
)
)
end
end
end
return table.concat(html, "")
end
----------------------------------------------------------
-- LABELS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getLabelData(qid)
local label, lang = nil, nil
for _, l in ipairs({"ks","mul","en","ja","ko","zh"}) do
local t = mw.wikibase.getLabelByLang(qid, l)
if t and t ~= "" then
label = t
lang = l
break
end
end
if not label then
label = qid
lang = nil
end
return label, lang
end
local function wdLink(qid, label_override)
if label_override and label_override ~= "" then
return "[[d:" .. qid .. "|" .. label_override .. "]]"
end
local label, lang = getLabelData(qid)
local sitelink = wikidades.getSiteLink{qid}
local link = sitelink
and ("[[" .. sitelink .. "|" .. label .. "]]")
or ("[[d:" .. qid .. "|" .. label .. "]]")
if lang and lang ~= "ks" and lang ~= "mul" then
link = link
.. " <sup>(" .. lang .. ")</sup>"
.. " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|"
.. mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain()
.. "|link=https://www.wikidata.org/wiki/" .. qid .. "?uselang=ks]]"
end
return link
end
----------------------------------------------------------
-- CLAIMS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getClaims(item_id, prop_id, only_qids)
if not item_id then return {} end
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return {} end
local result = {}
for v in raw:gmatch("[^/·/]+") do
if only_qids then
local q = v:match("^(Q%d+)$")
if q then table.insert(result, q) end
else
if v:match("^Q%d+$") then
table.insert(result, wdLink(v))
else
table.insert(result, v)
end
end
end
return result
end
----------------------------------------------------------
-- NETEJA DE GÈNERE UNIFICADA (PUNT 1)
----------------------------------------------------------
local APO = "['’`´ʼ‛]"
local GEN_PREFIX = {
"^مینٛگا تہٕ اٮ۪نِمی%s+ہُنٛد%s*",
"^اٮ۪نِمی تہٕ مینٛگا%s+ہُنٛد%s*",
"^مینٛگا%s+ہُنٛد%s*",
"^اٮ۪نِمی%s+ہُنٛد%s*",
"^مینٛگا تہٕ اٮ۪نِمی%s+",
"^اٮ۪نِمی تہٕ مینٛگا%s+",
"^مینٛگا%s+",
"^اٮ۪نِمی%s+",
}
local function netejarGenere(label)
local lower = label:lower()
for _, pat in ipairs(GEN_PREFIX) do
local resta = lower:gsub(pat, "")
if resta ~= lower then
label = label:gsub(pat, "")
break
end
end
label = label:gsub("%s*%b()", "")
label = label:gsub("^d[^a-zà-üA-ZÀ-Ü]+", "")
label = label:gsub("%s+$", "")
return label:sub(1,1):upper() .. label:sub(2)
end
----------------------------------------------------------
-- TIPUS I MAPES
----------------------------------------------------------
local tipus_def = {
["شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q24862" } },
["فرنچائز"] = { mode = "franquicia", qids = { "Q196600" } },
["اٮ۪نِمی فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q29982285" } },
["اٮ۪نیٖمیٹِڈ شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q17517379" } },
["موٗسیٖقی ہُنٛد ویٖڈیو"] = { mode = "audiovisual", qids = { "Q193977", "Q55960075", "Q64100970" } },
["اٮ۪نِمی فِلِم"] = { mode = "pelicula", qids = { "Q20650540" } },
["فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q24856" } },
["ویٖڈیو گیم سیٖریٖز"] = { mode = "videojoc", qids = { "Q7058673" } },
["فِلِم"] = { mode = "pelicula", qids = { "Q229390", "Q11424" } },
["اٮ۪نیٖمیٹِڈ فِلِم"] = { mode = "pelicula", qids = { "Q29168811", "Q202866" } },
["اٮ۪نیٖمیٹِڈ سیٖریٖز"] = { mode = "audiovisual", qids = { "Q581714" } },
["اٮ۪نِمی"] = { mode = "audiovisual", qids = { "Q63952888", "Q11086742", "Q100269041", "Q104640199" } },
["ریڈیو ڈرامہ"] = { mode = "audiovisual", qids = { "Q2635894" } },
["او وی اے"] = { mode = "audiovisual", qids = { "Q220898" } },
["او وی اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113687694" } },
["موٗسیٖقی"] = { mode = "pelicula", qids = { "Q58483083" } },
["وَن-شاٹ"] = { mode = "llibre", qids = { "Q933530", "Q21202185" } },
["او اے ڈی"] = { mode = "audiovisual", qids = { "oad" } },
["او اٮ۪ن اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113671041" } },
["او اٮ۪ن اے"] = { mode = "audiovisual", qids = { "Q1047299" } },
["ڈوراما"] = { mode = "audiovisual", qids = { "Q399811" } },
["خاص"] = { mode = "audiovisual", qids = { "Q1261214" } },
["لائیو اٮ۪کشَن"] = { mode = nil, qids = { "live action" } },
["وِجُوَلی ناوَل"] = { mode = "videojoc", qids = { "Q689445" } },
["گیم"] = { mode = nil, qids = { "Q11410" } },
["ناوَل"] = { mode = "llibre", qids = { "Q747381" } },
["ناوَل سیٖریٖز"] = { mode = "llibre", qids = { "Q104213567" } },
["ویٖڈیو گیم"] = { mode = "videojoc", qids = { "Q7889" } },
["ڈوجِنشی"] = { mode = "llibre", qids = { "Q668711" } },
["مینٛگا سیٖریٖز"] = { mode = "llibre", qids = { "Q21198342" } },
["مینٛگا"] = { mode = "llibre", qids = { "Q8274" } },
["اِشتِہار"] = { mode = "audiovisual", qids = { "Q11796892", "Q854995" } },
["سی ڈی ڈرامہ"] = { mode = "audiovisual", qids = { "Q244351" } },
["مینٛگا فِلِم"] = { mode = "pelicula", qids = { "Q116790751" } },
["کَمِک"] = { mode = "llibre", qids = { "Q1004" } },
["ٹی وی سیٖریٖز"] = { mode = "audiovisual", qids = { "Q5398426", "Q21191019" } },
["وٮ۪ب سیٖریٖز"] = { mode = "audiovisual", qids = { "Q526877" } },
["وٮ۪ب ٹوٗن"] = { mode = "llibre", qids = { "Q7978994" } },
["مَنہوا سیٖریٖز"] = { mode = "llibre", qids = { "Q74262765" } },
["مَنہوا"] = { mode = "llibre", qids = { "Q754669" } },
["لائیو اٮ۪کشَن فِلِم"] = { mode = "pelicula", qids = { "pel·lícula live action" } },
["لایِٹ ناوَل"] = { mode = "llibre", qids = {} },
}
local tipus_map = {}
local tipus_a_mode = {}
for tipus, def in pairs(tipus_def) do
tipus_a_mode[tipus] = def.mode
for _, qid in ipairs(def.qids) do
tipus_map[qid] = tipus
end
end
local link_desti = {
["مینٛگا سیٖریٖز"] = "مینٛگا",
["فرنچائز"] = "میٖڈیا فرنچائز",
}
local function majusculaInicial(s)
if not s or s == "" then return s end
return mw.ustring.upper(mw.ustring.sub(s, 1, 1)) .. mw.ustring.sub(s, 2)
end
local function etiquetaProp(pid)
local label = mw.wikibase.getLabel(pid)
return majusculaInicial(label or "")
end
local function obtenirTipusText(tipus_param, item_id)
local val = (tipus_param and tipus_param ~= "") and string.lower(tipus_param) or ""
local map = tipus_map
if val == "" and item_id then
local ids = getClaims(item_id, "P31", true)
if #ids == 0 then return "باقی" end
local primer = ids[1]
for _, id in ipairs(ids) do
if map[id] then
val = id
break
end
end
if val == "" then val = primer end
end
local function linkSiExisteix(t, desti)
local target = desti or t
local title = mw.title.new(target)
if title and title.exists then return "[[" .. target .. "|" .. t .. "]]" end
return t
end
if map[val] then
return linkSiExisteix(map[val], link_desti[map[val]])
end
local label, _ = getLabelData(val)
return label and majusculaInicial(label) or "باقی"
end
local function netejarWikilink(text)
return text
:gsub("%[%[[^|]+|([^%]]+)%]%]", "%1")
:gsub("%[%[([^%]]+)%]%]", "%1")
end
----------------------------------------------------------
-- UTILITATS DIVERSES
----------------------------------------------------------
local function linkEditicon(item_id)
return "<span class='ita-edit-icon' style='margin-left:4px;'>[[File:OOjs UI icon edit-ltr-progressive.svg|middle|class=notpageimage|link=d:"
.. item_id .. "|وِکیٖڈیٹاہَس پؠٹھ کٔرِو اؠڈِٹ]]</span>"
end
local function es_no_llati(s)
local te_no_llati = mw.ustring.find(s, "[^A-Za-zÀ-ÖØ-öø-ÿĀ-ſ0-9%s%p]") ~= nil
if te_no_llati then
return "font-weight:normal;"
else
return "font-style:italic;"
end
end
----------------------------------------------------------
-- TRANSLITERACIÓ (qualificadors de P1476)
----------------------------------------------------------
local PROPS_TRANSLIT = {
"P2440",
"P2125",
"P1942",
"P2001",
"P5139",
"P1721",
}
local function obtenirTransliteracio(item_id)
local entity = mw.wikibase.getEntity(item_id)
if not entity or not entity.claims or not entity.claims.P1476 then return nil end
for _, claim in ipairs(entity.claims.P1476) do
if claim.qualifiers then
for _, pid in ipairs(PROPS_TRANSLIT) do
local quals = claim.qualifiers[pid]
if quals then
for _, q in ipairs(quals) do
local val = q.datavalue and q.datavalue.value
if val then
local t = type(val) == "string" and val or val.text
if t and t ~= "" then return t end
end
end
end
end
end
end
return nil
end
local function obtenirTitolOriginal(item_id, titol_catala, es_capcalera)
if not item_id then return "" end
local text = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "table",
colformat0 = "text",
list = false,
rowformat = "$0",
editicon = false,
}
if not text or text == "" or text == titol_catala then
return ""
end
local lang = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "$language",
list = false,
editicon = false,
}
if lang == "" then lang = nil end
local estil_text = es_no_llati(text)
local prefix_lang = ""
if es_capcalera and lang then
prefix_lang = "<sup><span style='font-weight:normal; font-style:normal;'>(" .. lang .. ")</span></sup> "
end
local tooltip_html = ""
if estil_text == "font-weight:normal;" then
local translit = obtenirTransliteracio(item_id)
if translit then
tooltip_html =
'<span class="ita-translit-wrap" tabindex="0">' ..
'<sup class="ita-translit-icon">ⓘ</sup>' ..
'<span class="ita-translit-tip">' .. translit:gsub("'", "'") .. '</span>' ..
'</span>'
end
end
return "<span style='font-size:90%; display:block;'>"
.. prefix_lang
.. "<span style='" .. estil_text .. "'>" .. text .. "</span>"
.. tooltip_html
.. "</span>"
end
local function obtenirDurada(item_id)
local raw = wikidades.claim{
item = item_id,
property = "P2047",
formatting = "raw",
list = false
}
if not raw or raw == "" then return nil end
local amount =
raw:match('"amount"%s*:%s*"(%+?[%d%.%-]+)"') or
raw:match('^%+?(%d+)$') or
raw:match('(%d+)[^%d]*$')
if not amount then return nil end
amount = tonumber(amount)
if not amount then return nil end
local unit =
raw:match('"unit"%s*:%s*"http://www%.wikidata%.org/entity/(Q%d+)"') or
raw:match('"unit"%s*:%s*"(Q%d+)"')
if not unit then
return amount .. " مِنَٹ"
end
local unit_map = {
Q7727 = "مِنَٹ",
Q11574 = "سٮ۪کَنڈ",
Q23387 = "گٲنٛٹہٕ",
Q25235 = "دۄہ"
}
local u = unit_map[unit]
if not u then return amount end
if u == "سٮ۪کَنڈ" then
amount = math.floor(amount / 60)
u = "مِنَٹ"
elseif u == "گٲنٛٹہٕ" then
amount = amount * 60
u = "مِنَٹ"
elseif u == "دۄہ" then
amount = amount * 24 * 60
u = "مِنَٹ"
end
return amount .. " " .. u
end
local function obtenirDataOrdenacio(item_id)
if not item_id then return "9999-99-99" end
local function primera(prop_id)
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return nil end
local any, mes, dia = raw:match("%+(%d%d%d%d)%-(%d%d)%-(%d%d)T")
if not any then return nil end
if mes == "00" then mes = "01" end
if dia == "00" then dia = "01" end
return string.format("%s-%s-%s", any, mes, dia)
end
return primera("P580")
or primera("P577")
or primera("P571")
or "9999-99-99"
end
local function getListSitelinkFromProp(item_id, prop_id)
local qid = getClaims(item_id, prop_id, true)[1]
if not qid then return "" end
return wikidades.getSiteLink{qid} or ("d:" .. qid)
end
----------------------------------------------------------
-- EDITORIALS
----------------------------------------------------------
local function obtenirEditorialsWikibase(qid)
local entity = mw.wikibase.getEntity(qid)
if not entity or not entity.claims or not entity.claims.P123 or #entity.claims.P123 == 0 then
return nil
end
local preferent
local primer_trobat = nil
local catalanes = {}
for _, claim in ipairs(entity.claims.P123) do
local ed_qid = claim.mainsnak.datavalue and claim.mainsnak.datavalue.value.id
if ed_qid then
local label = wdLink(ed_qid)
local lang_label = nil
local es_cat = false
if claim.qualifiers and claim.qualifiers.P407 then
for _, qv in ipairs(claim.qualifiers.P407) do
if qv.datavalue.value.id == "Q33552" then
es_cat = true
break
end
end
if es_cat then
lang_label, _ = getLabelData("Q33552")
else
local qid_lang = claim.qualifiers.P407[1].datavalue.value.id
lang_label, _ = getLabelData(qid_lang)
end
end
local text = label
if lang_label then
text = text .. " (" .. lang_label .. ")"
end
if es_cat then
table.insert(catalanes, text)
else
if not primer_trobat then primer_trobat = text end
if claim.rank == "preferred" and not preferent then
preferent = text
end
end
end
end
preferent = preferent or primer_trobat
if not preferent and #catalanes == 0 then return nil end
local resultat = {}
if preferent then table.insert(resultat, preferent) end
for _, c in ipairs(catalanes) do
if c ~= preferent then table.insert(resultat, c) end
end
return table.concat(resultat, "<br />")
end
----------------------------------------------------------
-- FILTRAR PER P31
----------------------------------------------------------
local function filtrarPerP31(llista, qid_tipus)
local coincideixen, resta = {}, {}
for _, q in ipairs(llista) do
local trobat = false
for _, classe in ipairs(getClaims(q, "P31", true)) do
if classe == qid_tipus then
trobat = true
break
end
end
table.insert(trobat and coincideixen or resta, q)
end
return coincideixen, resta
end
----------------------------------------------------------
-- CSS
----------------------------------------------------------
local CSS = {
HEADER = "ita-header",
SUBHEADER = "ita-subheader",
TIPUS = "ita-tipus",
CELL_L = "ita-cell-l",
CELL_R = "ita-cell-r",
ICON_CELL = "ita-icon-cell",
ICON_CELL_R = "ita-icon-cell-r",
CELL_FULL = "ita-cell-full",
}
local function filaEtiquetaValor(contenidor, label, valor, collapsible)
local fila = contenidor:tag("tr")
if collapsible then
fila:addClass("mw-collapsible-content")
end
fila:tag("td"):addClass(CSS.CELL_L):wikitext(label)
fila:tag("td"):addClass(CSS.CELL_R):wikitext(valor)
return fila
end
----------------------------------------------------------
-- GENERAR NUCLI (VERSIÓ COMPLETA, OPCIÓ B)
----------------------------------------------------------
local function generarNucli(item_id, args, es_grup, id_pare, te_genere_pare)
if not item_id or not mw.wikibase.isValidEntityId(item_id) then
return ""
end
local html = mw.html.create()
------------------------------------------------------
-- NOM BASE + IDIOMA
------------------------------------------------------
local nom_base, nom_base_lang = getLabelData(item_id)
local ret_lang_subheader = ""
local ret_icon_subheader = ""
if nom_base_lang and nom_base_lang ~= "ks" and nom_base_lang ~= "mul" then
ret_lang_subheader =
" <span style='font-weight:normal'><sup>(" .. nom_base_lang .. ")</sup></span>"
ret_icon_subheader =
" [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|" ..
mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain() ..
"|link=https://www.wikidata.org/wiki/" .. item_id .. "?uselang=ks]]"
end
------------------------------------------------------
-- TIPUS
------------------------------------------------------
local tipus_text = obtenirTipusText(args.tipus, item_id)
local tipus_net = netejarWikilink(tipus_text)
local mode = tipus_a_mode[tipus_net] or ""
------------------------------------------------------
-- SUBHEADER (si és grup)
------------------------------------------------------
if es_grup then
local estil_sub = es_no_llati(nom_base)
local sitelink = wikidades.getSiteLink{item_id}
local dest_link = sitelink
and ("[[" .. sitelink .. "|" .. nom_base .. "]]")
or ("[[d:" .. item_id .. "|" .. nom_base .. "]]")
local text =
"<span style='" .. estil_sub .. "'>" .. dest_link .. "</span>" ..
ret_lang_subheader ..
ret_icon_subheader ..
obtenirTitolOriginal(item_id, nom_base, false)
local fila_sh = html:tag("tr")
fila_sh:addClass("mw-collapsible-content")
fila_sh:tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(text)
end
------------------------------------------------------
-- FILA TIPUS + ICONES (VERSIÓ SENSE TAULA INTERNA)
------------------------------------------------------
local fila_tipus = html:tag("tr")
fila_tipus:addClass("mw-collapsible-content ita-row-tipus")
-- Cel·la esquerra (tipus)
fila_tipus:tag("td")
:addClass(CSS.TIPUS)
:wikitext(tipus_text)
local td_icones = fila_tipus:tag("td")
td_icones:addClass(CSS.CELL_R .. " ita-icons-flex")
local wrapper = td_icones:tag("div")
wrapper:addClass("ita-icons-wrapper")
local td_esq = wrapper:tag("div")
td_esq:addClass("ita-icons-left " .. CSS.ICON_CELL)
local td_dre = wrapper:tag("div")
td_dre:addClass("ita-icons-right " .. CSS.ICON_CELL_R)
------------------------------------------------------
-- ETIQUETA PERÍODE (funció interna)
------------------------------------------------------
local function _obtenirEtiquetaPeriode_local(qid, tipus_str)
local t = mw.ustring.lower(tipus_str or "")
local m = tipus_a_mode[majusculaInicial(t)] or ""
if m == "franquicia" then
return etiquetaProp("P2348")
end
if m == "llibre" or m == "videojoc" then
return etiquetaProp(qid_labels.publicacio)
end
if m == "pelicula" then
local te_p577 = wikidades.claim{item=qid, property="P577", list=false}
local te_p582 = wikidades.claim{item=qid, property="P582", list=false}
if te_p577 and te_p577 ~= "" then
return etiquetaProp(qid_labels.estrena)
elseif te_p582 and te_p582 ~= "" then
return etiquetaProp(qid_labels.emissio)
else
return etiquetaProp(qid_labels.estrena)
end
end
return etiquetaProp(qid_labels.emissio)
end
------------------------------------------------------
-- ICONA DURADA (P2047)
------------------------------------------------------
local text_durada = obtenirDurada(item_id)
if text_durada then
td_esq:wikitext("[[File:Hourglass icon.png|middle|class=notpageimage|link=|وَقٕف]] " .. text_durada .. " ")
end
------------------------------------------------------
-- ICONA DE LLISTA (P31)
------------------------------------------------------
local p31_qid = getClaims(item_id, "P31", true)[1] or ""
if p31_qid == "Q24856" or p31_qid == "Q7058673" or p31_qid == "Q29982285" then
local link = getListSitelinkFromProp(item_id, "P2354")
if link == "" then
link = wikidades.getSiteLink{item_id} or ("d:" .. item_id)
end
td_esq:wikitext("[[File:Font Awesome 5 regular list-alt.svg|middle|class=notpageimage|link=" .. link .. "]] ")
end
------------------------------------------------------
-- ICONA VOLUMS / PEL·LÍCULES (P2635)
------------------------------------------------------
local raw_volums = wikidades.claim{
item = item_id,
property = "P2635",
formatting = "raw",
list = false
}
if raw_volums and raw_volums ~= "" then
local quant = tostring(raw_volums):gsub("%+","")
if p31_qid == "Q29982285" then
td_esq:wikitext(
"[[File:Tabler-icons_movie.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|فِلِمہٕ]] " .. quant .. " فِلِمہٕ "
)
else
td_esq:wikitext(
"[[File:OpenMoji-black 1F4DA.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|جِلٕد]] " .. quant .. " جِلٕد "
)
end
end
------------------------------------------------------
-- ICONA EPISODIS (P1113)
------------------------------------------------------
local text_ep = ""
local raw_ep = wikidades.claim{
item = item_id,
property = "P1113",
formatting = "raw",
list = false
}
if raw_ep and raw_ep ~= "" then
text_ep = tostring(raw_ep):gsub("%+","")
end
if text_ep ~= "" then
local link_ep = getListSitelinkFromProp(item_id,"P1811")
if link_ep == "" then
link_ep = getListSitelinkFromProp(item_id,"P2354")
end
td_esq:wikitext(
"<span style='display:inline-block;width:1px;'></span>[[File:Noun TV Episodes 3303322.svg|middle|class=notpageimage|link=" ..
link_ep .. "|قِسٕط]] " .. text_ep .. " "
)
end
------------------------------------------------------
-- ICONES EXTERNES
------------------------------------------------------
td_dre:wikitext(generarIconesExternes(item_id) .. linkEditicon(item_id))
------------------------------------------------------
-- PROPIETATS SECUNDÀRIES (FILES NORMALS)
------------------------------------------------------
local propietats = {
"P144","P4970","P50","P110","P178","P58","P287","P86","P57","P162",
"P136","P400","P272","P275","P449","P123","P2360","P1433"
}
for _, pid in ipairs(propietats) do
local admetre = true
if pid == "P144" then
local qid_p144 = getClaims(item_id, "P144", true)[1]
if qid_p144 and (qid_p144 == item_id or qid_p144 == id_pare) then
admetre = false
end
end
if pid == "P136" and es_grup and te_genere_pare then
admetre = false
end
if admetre then
local label = etiquetaProp(pid)
if pid == "P123" and (mode == "videojoc" or mode == "audiovisual") then
label = etiquetaProp(qid_labels.distribuidor)
end
if pid == "P272" and (mode == "pelicula" or mode == "audiovisual") then
label = "اِسٹوٗڈیو"
end
if pid == "P2360" then
label = "آبٲدیاتی"
end
if pid == "P136" then
label = etiquetaProp(qid_labels.genere)
end
if pid == "P1433" and (tipus_net == "مینٛگا" or tipus_net == "مینٛگا سیٖریٖز" or tipus_net == "وَن-شاٹ") then
label = etiquetaProp(qid_labels.revista)
end
if pid == "P449" and mode == "audiovisual" then
label = "چَینَل"
end
--------------------------------------------------
-- GÈNERE (neteja unificada)
--------------------------------------------------
if pid == "P136" then
local valors = {}
for i, qid in ipairs(getClaims(item_id, "P136", true)) do
local label_qid = getLabelData(qid)
local text_net = netejarGenere(label_qid)
if i > 1 then
text_net = text_net:sub(1,1):lower() .. text_net:sub(2)
end
local sitelink = wikidades.getSiteLink{qid}
if sitelink and sitelink ~= "" then
table.insert(valors, "[[" .. sitelink .. "|" .. text_net .. "]]")
else
table.insert(valors, "[[d:" .. qid .. "|" .. text_net .. "]]")
end
end
if #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
--------------------------------------------------
-- EDITORIALS
--------------------------------------------------
elseif pid == "P123" then
local valors = obtenirEditorialsWikibase(item_id)
if valors then
filaEtiquetaValor(html, label, valors, true)
end
--------------------------------------------------
-- ALTRES PROP.
--------------------------------------------------
else
local valors = getClaims(item_id, pid, false)
if valors and #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
end
end
end
------------------------------------------------------
-- DATES (P580 / P577 / P582)
------------------------------------------------------
local data_inici_p580 = getClaims(item_id, "P580", false)[1]
if data_inici_p580 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local data_fi = getClaims(item_id, "P582", false)[1]
local text_data = formatarData(data_inici_p580)
if data_fi then
text_data = text_data .. " – " .. formatarData(data_fi)
end
filaEtiquetaValor(html, label_data, text_data, true)
else
--------------------------------------------------
-- CAS AMB P577 (pot tenir múltiples dates)
--------------------------------------------------
local entity = mw.wikibase.getEntity(item_id)
local claims_p577 = entity and entity.claims and entity.claims.P577 or {}
if #claims_p577 > 0 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local linies = {}
for _, claim in ipairs(claims_p577) do
local dv = claim.mainsnak and claim.mainsnak.datavalue
if dv then
local iso = dv.value and dv.value.time or ""
local data_fmt = formatarData(iso)
local quals = {}
if claim.qualifiers then
if claim.qualifiers.P291 then
for _, q in ipairs(claim.qualifiers.P291) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
if claim.qualifiers.P400 then
for _, q in ipairs(claim.qualifiers.P400) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
end
local linia = data_fmt
if #quals > 0 then
linia = linia .. " (" .. table.concat(quals, ", ") .. ")"
end
table.insert(linies, linia)
end
end
if #linies > 0 then
if #linies == 1 then
filaEtiquetaValor(html, label_data, linies[1], true)
else
local ocultes = {}
for i = 2, #linies do
table.insert(ocultes, linies[i])
end
local text_final =
'<table class="mw-collapsible mw-collapsed" style="width:100%; border-spacing:0;">' ..
'<tr><th colspan="2" style="text-align:left; font-weight:normal;">' .. linies[1] .. '</th></tr>' ..
'<tr><td>' .. table.concat(ocultes, "<br>") .. '</td></tr>' ..
'</table>'
filaEtiquetaValor(html, label_data, text_final, true)
end
end
end
end
------------------------------------------------------
-- RETORNAR EL RESULTAT
------------------------------------------------------
return tostring(html)
end
----------------------------------------------------------
-- p.infotaula
----------------------------------------------------------
local LIMIT_VISIBLE = 4
function p.infotaula(frame)
local args = getArgs(frame, {wrappers = "فرما:اِنفوباکس اٮ۪نِمی مینٛگا"})
local item_id = (args.item and args.item ~= "") and args.item
or mw.wikibase.getEntityIdForCurrentPage()
if not item_id then
return "<span class='error'>غَلطی: وِکیٖڈیٹاہَس سٟتؠ مُنسَلِق کانٛہہ تہِ عُنصَر آو نہٕ لَبنہٕ۔</span>"
end
---------------------------------------------------------
-- SELECCIONATS
---------------------------------------------------------
local seleccionats_raw = args.seleccionats or ""
local seleccionats = {}
if seleccionats_raw ~= "" then
for qid in seleccionats_raw:gmatch("Q%d+") do
seleccionats[qid] = true
end
end
---------------------------------------------------------
-- DELEGACIÓ SI NO ÉS GRUP / FRANQUÍCIA
---------------------------------------------------------
local parts = getClaims(item_id, "P527", true)
local derivades = getClaims(item_id, "P4969", true)
if #parts == 0 and #derivades == 0 then
local tipus = netejarWikilink(obtenirTipusText(args.tipus, item_id))
local mode = tipus_a_mode[tipus]
if mode == "pelicula" then
return frame:expandTemplate{
title = "فِلِم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "llibre" then
return frame:expandTemplate{
title = "کِتاب اِنفوباکس",
args = { item = item_id, titol = args.nom, manga = "y" }
}
elseif mode == "videojoc" then
return frame:expandTemplate{
title = "ویٖڈیو گیم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "audiovisual" then
return frame:expandTemplate{
title = "آڈیو وِجُوَل پروگرام اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
end
end
---------------------------------------------------------
-- MODE FRANQUÍCIA
---------------------------------------------------------
local res = mw.html.create("table")
:addClass("infobox")
:addClass("infotaula-animanga")
local titol = args.nom
or getLabelData(item_id)
or mw.title.getCurrentTitle().text
res:tag("caption")
:addClass(CSS.HEADER)
:wikitext(
'<div style="display:flex; align-items:center;">' ..
'<div style="flex:0 0 30px; min-width:30px;">' ..
'<span style="position:relative; left:2px;">[[File:Anime manga japanese characters icon.svg|30px|اِنفوباکس اٮ۪نِمی مینٛگا|class=skin-invert notpageimage]]</span>' ..
'</div>' ..
'<div style="flex:1 1 auto;">' ..
'<span style="font-weight:bold; font-style:italic;">' .. titol .. '</span>' ..
obtenirTitolOriginal(item_id, titol, true) ..
'</div>' ..
'<div style="flex:0 0 30px; min-width:30px;"></div>' ..
'</div>'
)
---------------------------------------------------------
-- IMATGE PRINCIPAL (amb fallback a logo P154)
---------------------------------------------------------
local img = obtenirImatge(item_id, args, "P18", "imatge")
local logo = obtenirImatge(item_id, args, "P154", "logo")
local mostrar_logo_apart = true
if img.nom then
local mida = midaImatge(img.nom, 250, 350)
local td_img = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
td_img:wikitext("[[File:" .. img.nom .. "|" .. mida .. "|center]]")
if img.peu and img.peu ~= "" then
td_img:tag("span")
:addClass("ita-img-caption")
:wikitext(img.peu)
end
elseif logo.nom then
-- Fallback: no hi ha P18, però sí P154 → l'usem com a imatge principal
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
mostrar_logo_apart = false
else
res:wikitext("[[Categoria:مینٛگانِمی مَضموٗن یِمَن تِصویٖرٕچ ضروٗرَتھ چھہِ]]")
end
---------------------------------------------------------
-- LOGO (P154) — només si NO s'ha usat ja com a fallback
---------------------------------------------------------
if logo.nom and mostrar_logo_apart then
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
end
---------------------------------------------------------
-- NUCLI PRINCIPAL DEL PARE
---------------------------------------------------------
local pare_te_genere = (#getClaims(item_id, "P136", true) > 0)
res:wikitext(generarNucli(item_id, args, false, item_id, false))
---------------------------------------------------------
-- FORMAT PER (P527)
---------------------------------------------------------
local elements_valids = {}
local exclos_p527 = {
Q125632018=true, Q3464665=true,
Q102364578=true, Q21191270=true
}
for _, tid in ipairs(parts) do
if next(seleccionats) ~= nil and not seleccionats[tid] then
-- exclòs per selecció
else
local exclos = false
for _, p31id in ipairs(getClaims(tid, "P31", true)) do
if exclos_p527[p31id] then
exclos = true
break
end
end
if not exclos then
table.insert(elements_valids, tid)
end
end
end
table.sort(elements_valids, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (Q2620972)
---------------------------------------------------------
local arcs_narratius
arcs_narratius, elements_valids = filtrarPerP31(elements_valids, "Q2620972")
---------------------------------------------------------
-- ARTICLES DE LLISTA (Q13406463) dins P527
---------------------------------------------------------
local llistes_p527
llistes_p527, elements_valids = filtrarPerP31(elements_valids, "Q13406463")
---------------------------------------------------------
-- OBRA DERIVADA (P4969)
---------------------------------------------------------
local ids_der_raw = derivades
local ids_der_filtrats = {}
for _, tid in ipairs(ids_der_raw) do
if next(seleccionats) == nil or seleccionats[tid] then
table.insert(ids_der_filtrats, tid)
end
end
local llistes_der, ids_der = filtrarPerP31(ids_der_filtrats, "Q13406463")
table.sort(ids_der, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (render)
---------------------------------------------------------
if #arcs_narratius > 0 then
res:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(getLabelData("Q2620972")) .. linkEditicon(item_id))
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, q in ipairs(arcs_narratius) do
local nom = getLabelData(q)
ul:tag("li"):wikitext(wdLink(q, nom))
end
end
---------------------------------------------------------
-- FUNCIONS AUXILIARS PER LLISTES
---------------------------------------------------------
local function mostrarLlistes(llistes, contenidor)
for _, q_llista in ipairs(llistes) do
local nom_llista = getLabelData(q_llista)
contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(nom_llista) .. " " .. linkEditicon(q_llista))
local membres = getClaims(q_llista, "P527", true)
if #membres > 0 then
if #membres > 5 then
-- Llista desplegable
local taula_col = contenidor:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(tostring(#membres) .. " عَناصِر")
local ul_membres = taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
else
local ul_membres = contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
end
end
end
end
---------------------------------------------------------
-- MOSTRAR FORMAT PER + OBRA DERIVADA (amb límit)
---------------------------------------------------------
local total = #elements_valids + #ids_der
if total > LIMIT_VISIBLE then
local visibles_p527 = math.min(#elements_valids, LIMIT_VISIBLE)
local visibles_der = math.min(#ids_der, math.max(0, LIMIT_VISIBLE - visibles_p527))
-----------------------------------------------------
-- PRIMERA PART: ELEMENTS VISIBLES NORMALS
-----------------------------------------------------
if visibles_p527 > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for i = 1, visibles_p527 do
res:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if visibles_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
for i = 1, visibles_der do
res:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
---------------------------------------------------------
-- BLOC PLEGABLE "MÉS" (contenidor taula necessari)
---------------------------------------------------------
local taula_col = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
-- capçalera "Més"
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext('<span class="ita-mes-text">مزیٖد</span>')
local resta_p527 = visibles_p527 < #elements_valids
local resta_der = visibles_der < #ids_der
local ambdues = resta_p527 and resta_der
---------------------------------------------------------
-- CONTINGUT PLEGABLE: P527
---------------------------------------------------------
if resta_p527 then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
end
for i = visibles_p527 + 1, #elements_valids do
taula_col:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
---------------------------------------------------------
-- CONTINGUT PLEGABLE: OBRES DERIVADES
---------------------------------------------------------
if resta_der then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
end
for i = visibles_der + 1, #ids_der do
taula_col:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
else
-----------------------------------------------------
-- CAS SENSE PLEGABLE
-----------------------------------------------------
if #elements_valids > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for _, tid in ipairs(elements_valids) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if #ids_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
for _, tid in ipairs(ids_der) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
end
---------------------------------------------------------
-- ALTRES (P5940)
---------------------------------------------------------
local ids_p5940 = getClaims(item_id, "P5940", true)
if #ids_p5940 > 0 then
-- Capçalera "Altres"
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("باقی")
-- Obtenim l'entitat UNA sola vegada
local entity = mw.wikibase.getEntity(item_id)
local claims_p5940 = entity and entity.claims and entity.claims.P5940 or {}
-- Indexem els claims per QID per evitar bucles interns
local claims_index = {}
for _, claim in ipairs(claims_p5940) do
local snak = claim.mainsnak
local q = snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id
if q then
claims_index[q] = claim
end
end
-- Construïm la llista i la mostrem en punts
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, qid in ipairs(ids_p5940) do
local text = wdLink(qid)
local claim = claims_index[qid]
if claim and claim.qualifiers and claim.qualifiers.P3831 then
local qual = claim.qualifiers.P3831[1]
local q_val = qual.datavalue and qual.datavalue.value and qual.datavalue.value.id
if q_val then
text = text .. " (" .. wdLink(q_val) .. ")"
end
end
ul:tag("li"):wikitext(text)
end
end
---------------------------------------------------------
-- PORTAL
---------------------------------------------------------
local portal_val = args.portal or ""
if portal_val ~= "" and portal_val:lower() ~= "no" then
local portal_expandit = frame:preprocess(
"[[File:Wikipe-tan face.svg|16px||class=notpageimage|link=Portal:Anime i Manga|اٮ۪نِمی تہٕ مینٛگا پورٹَل]] " ..
"[[Portal:Anime i Manga|اٮ۪نِمی تہٕ مینٛگا پورٹَل]]"
)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:addClass(CSS.CELL_FULL)
:wikitext(portal_expandit)
end
---------------------------------------------------------
-- ESTILS
---------------------------------------------------------
local styles = frame:extensionTag("templatestyles", "", {src="Module: Infotaula animanga/estils.css"})
return styles .. tostring(res)
end
return p
g9hxcmm3vb2g9sgz8amwu82ylx7uaq1
148882
148881
2026-08-10T12:07:42Z
آیات محراج
11062
148882
Scribunto
text/plain
local p = {}
----------------------------------------------------------
-- REQUERIMENTS I CONSTANTS
----------------------------------------------------------
local wikidades = require("Module:Wikidades")
local getArgs = require("Module:Arguments").getArgs
local qid_labels = {
publicacio = "Q732577",
estrena = "Q204854",
emissio = "Q109507868",
distribuidor = "Q12540664",
genere = "Q483394",
revista = "Q41298",
}
----------------------------------------------------------
-- FUNCIONS BÀSIQUES
----------------------------------------------------------
local function formatarData(iso)
if not iso or iso == "" then return "" end
local clean = iso:match("^%+?(%d%d%d%d%-%d%d%-%d%d)")
if not clean then return iso end
local any, m, d = clean:match("^(%d+)%-(%d+)%-(%d+)")
if not any then return iso end
local lang = mw.language.getContentLanguage()
if m == "00" then return any end
if d == "00" then
local fake = any .. "-" .. m .. "-01"
return lang:formatDate("F Y", fake)
end
return lang:formatDate("j F Y", clean)
end
local function netejaNomFitxer(raw)
local nom = tostring(raw):gsub("[%[%]]",""):gsub("^[Ff]it[xz]er:",""):gsub("^[Ff]ile:","")
if nom:find("|") then nom = nom:match("^([^|]+)") or nom end
return nom
end
local function midaImatge(nom, max_w, max_h)
local ext = nom:lower()
if ext:match("%.svg$") or ext:match("%.gif$") then
return max_w .. "px"
else
return max_w .. "x" .. max_h .. "px"
end
end
local function obtenirImatge(item_id, args, prop, param)
prop = prop or "P18"
param = param or "imatge"
if args[param] == "NONE" then
return { nom = nil, peu = nil }
end
if args[param] and args[param] ~= "" then
return { nom = netejaNomFitxer(args[param]), peu = args["peu"] or nil }
end
local raw = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if not raw or raw == "" then
return { nom = nil, peu = nil }
end
local nom = netejaNomFitxer(raw)
local peu = args["peu"]
if not peu or peu == "" then
local raw_caption = wikidades.claim{
item = item_id, property = prop,
qualifier = "P2096", formatting = "raw", list = false
}
if raw_caption and raw_caption ~= "" then peu = raw_caption end
end
return { nom = nom, peu = peu }
end
----------------------------------------------------------
-- ICONES EXTERNES
----------------------------------------------------------
local function getIconaPropieta(prop)
local entity = mw.wikibase.getEntity(prop)
if not entity or not entity.claims then return nil end
local function millor_claim(prop_id)
local claims = entity.claims[prop_id]
if not claims then return nil end
local preferent, normal = nil, nil
for _, claim in ipairs(claims) do
local rank = claim.rank
local val = claim.mainsnak.datavalue
and claim.mainsnak.datavalue.value
local nom = val and (type(val)=="string" and val or val.text or val.id)
if nom and nom ~= "" then
if rank=="preferred" and not preferent then preferent = nom
elseif rank=="normal" and not normal then normal = normal or nom end
end
end
return preferent or normal
end
return millor_claim("P8972") or millor_claim("P2910")
end
local external_link_props = {
"P1984", "P1985", "P4983", "P4947", "P345",
}
local function generarIconesExternes(item_id)
local html = {}
for _, prop in ipairs(external_link_props) do
local val = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if val and val ~= "" then
local formatter = wikidades.claim{
item = prop, property = "P1630",
formatting = "raw", list = false
}
local label = mw.wikibase.getLabel(prop) or prop
local icon = getIconaPropieta(prop)
if formatter and formatter ~= "" and icon then
local url = formatter:gsub("%$1", val)
table.insert(html,
string.format(
'[[File:%s|middle|link=%s|class=notpageimage|%s]] ',
icon, url, label
)
)
end
end
end
return table.concat(html, "")
end
----------------------------------------------------------
-- LABELS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getLabelData(qid)
local label, lang = nil, nil
for _, l in ipairs({"ks","mul","en","ja","ko","zh"}) do
local t = mw.wikibase.getLabelByLang(qid, l)
if t and t ~= "" then
label = t
lang = l
break
end
end
if not label then
label = qid
lang = nil
end
return label, lang
end
local function wdLink(qid, label_override)
if label_override and label_override ~= "" then
return "[[d:" .. qid .. "|" .. label_override .. "]]"
end
local label, lang = getLabelData(qid)
local sitelink = wikidades.getSiteLink{qid}
local link = sitelink
and ("[[" .. sitelink .. "|" .. label .. "]]")
or ("[[d:" .. qid .. "|" .. label .. "]]")
if lang and lang ~= "ks" and lang ~= "mul" then
link = link
.. " <sup>(" .. lang .. ")</sup>"
.. " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|"
.. mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain()
.. "|link=https://www.wikidata.org/wiki/" .. qid .. "?uselang=ks]]"
end
return link
end
----------------------------------------------------------
-- CLAIMS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getClaims(item_id, prop_id, only_qids)
if not item_id then return {} end
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return {} end
local result = {}
for v in raw:gmatch("[^/·/]+") do
if only_qids then
local q = v:match("^(Q%d+)$")
if q then table.insert(result, q) end
else
if v:match("^Q%d+$") then
table.insert(result, wdLink(v))
else
table.insert(result, v)
end
end
end
return result
end
----------------------------------------------------------
-- NETEJA DE GÈNERE UNIFICADA (PUNT 1)
----------------------------------------------------------
local APO = "['’`´ʼ‛]"
local GEN_PREFIX = {
"^مینٛگا تہٕ اٮ۪نِمی%s+ہُنٛد%s*",
"^اٮ۪نِمی تہٕ مینٛگا%s+ہُنٛد%s*",
"^مینٛگا%s+ہُنٛد%s*",
"^اٮ۪نِمی%s+ہُنٛد%s*",
"^مینٛگا تہٕ اٮ۪نِمی%s+",
"^اٮ۪نِمی تہٕ مینٛگا%s+",
"^مینٛگا%s+",
"^اٮ۪نِمی%s+",
}
local function netejarGenere(label)
local lower = label:lower()
for _, pat in ipairs(GEN_PREFIX) do
local resta = lower:gsub(pat, "")
if resta ~= lower then
label = label:gsub(pat, "")
break
end
end
label = label:gsub("%s*%b()", "")
label = label:gsub("^d[^a-zà-üA-ZÀ-Ü]+", "")
label = label:gsub("%s+$", "")
return label:sub(1,1):upper() .. label:sub(2)
end
----------------------------------------------------------
-- TIPUS I MAPES
----------------------------------------------------------
local tipus_def = {
["شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q24862" } },
["فرنچائز"] = { mode = "franquicia", qids = { "Q196600" } },
["اٮ۪نِمی فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q29982285" } },
["اٮ۪نیٖمیٹِڈ شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q17517379" } },
["موٗسیٖقی ہُنٛد ویٖڈیو"] = { mode = "audiovisual", qids = { "Q193977", "Q55960075", "Q64100970" } },
["اٮ۪نِمی فِلِم"] = { mode = "pelicula", qids = { "Q20650540" } },
["فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q24856" } },
["ویٖڈیو گیم سیٖریٖز"] = { mode = "videojoc", qids = { "Q7058673" } },
["فِلِم"] = { mode = "pelicula", qids = { "Q229390", "Q11424" } },
["اٮ۪نیٖمیٹِڈ فِلِم"] = { mode = "pelicula", qids = { "Q29168811", "Q202866" } },
["اٮ۪نیٖمیٹِڈ سیٖریٖز"] = { mode = "audiovisual", qids = { "Q581714" } },
["اٮ۪نِمی"] = { mode = "audiovisual", qids = { "Q63952888", "Q11086742", "Q100269041", "Q104640199" } },
["ریڈیو ڈرامہ"] = { mode = "audiovisual", qids = { "Q2635894" } },
["او وی اے"] = { mode = "audiovisual", qids = { "Q220898" } },
["او وی اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113687694" } },
["موٗسیٖقی"] = { mode = "pelicula", qids = { "Q58483083" } },
["وَن-شاٹ"] = { mode = "llibre", qids = { "Q933530", "Q21202185" } },
["او اے ڈی"] = { mode = "audiovisual", qids = { "oad" } },
["او اٮ۪ن اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113671041" } },
["او اٮ۪ن اے"] = { mode = "audiovisual", qids = { "Q1047299" } },
["ڈوراما"] = { mode = "audiovisual", qids = { "Q399811" } },
["خاص"] = { mode = "audiovisual", qids = { "Q1261214" } },
["لائیو اٮ۪کشَن"] = { mode = nil, qids = { "live action" } },
["وِجُوَلی ناوَل"] = { mode = "videojoc", qids = { "Q689445" } },
["گیم"] = { mode = nil, qids = { "Q11410" } },
["ناوَل"] = { mode = "llibre", qids = { "Q747381" } },
["ناوَل سیٖریٖز"] = { mode = "llibre", qids = { "Q104213567" } },
["ویٖڈیو گیم"] = { mode = "videojoc", qids = { "Q7889" } },
["ڈوجِنشی"] = { mode = "llibre", qids = { "Q668711" } },
["مینٛگا سیٖریٖز"] = { mode = "llibre", qids = { "Q21198342" } },
["مینٛگا"] = { mode = "llibre", qids = { "Q8274" } },
["اِشتِہار"] = { mode = "audiovisual", qids = { "Q11796892", "Q854995" } },
["سی ڈی ڈرامہ"] = { mode = "audiovisual", qids = { "Q244351" } },
["مینٛگا فِلِم"] = { mode = "pelicula", qids = { "Q116790751" } },
["کَمِک"] = { mode = "llibre", qids = { "Q1004" } },
["ٹی وی سیٖریٖز"] = { mode = "audiovisual", qids = { "Q5398426", "Q21191019" } },
["وٮ۪ب سیٖریٖز"] = { mode = "audiovisual", qids = { "Q526877" } },
["وٮ۪ب ٹوٗن"] = { mode = "llibre", qids = { "Q7978994" } },
["مَنہوا سیٖریٖز"] = { mode = "llibre", qids = { "Q74262765" } },
["مَنہوا"] = { mode = "llibre", qids = { "Q754669" } },
["لائیو اٮ۪کشَن فِلِم"] = { mode = "pelicula", qids = { "pel·lícula live action" } },
["لایِٹ ناوَل"] = { mode = "llibre", qids = {} },
}
local tipus_map = {}
local tipus_a_mode = {}
for tipus, def in pairs(tipus_def) do
tipus_a_mode[tipus] = def.mode
for _, qid in ipairs(def.qids) do
tipus_map[qid] = tipus
end
end
local link_desti = {
["مینٛگا سیٖریٖز"] = "مینٛگا",
["فرنچائز"] = "میٖڈیا فرنچائز",
}
local function majusculaInicial(s)
if not s or s == "" then return s end
return mw.ustring.upper(mw.ustring.sub(s, 1, 1)) .. mw.ustring.sub(s, 2)
end
local function etiquetaProp(pid)
local label = mw.wikibase.getLabel(pid)
return majusculaInicial(label or "")
end
local function obtenirTipusText(tipus_param, item_id)
local val = (tipus_param and tipus_param ~= "") and string.lower(tipus_param) or ""
local map = tipus_map
if val == "" and item_id then
local ids = getClaims(item_id, "P31", true)
if #ids == 0 then return "باقی" end
local primer = ids[1]
for _, id in ipairs(ids) do
if map[id] then
val = id
break
end
end
if val == "" then val = primer end
end
local function linkSiExisteix(t, desti)
local target = desti or t
local title = mw.title.new(target)
if title and title.exists then return "[[" .. target .. "|" .. t .. "]]" end
return t
end
if map[val] then
return linkSiExisteix(map[val], link_desti[map[val]])
end
local label, _ = getLabelData(val)
return label and majusculaInicial(label) or "باقی"
end
local function netejarWikilink(text)
return text
:gsub("%[%[[^|]+|([^%]]+)%]%]", "%1")
:gsub("%[%[([^%]]+)%]%]", "%1")
end
----------------------------------------------------------
-- UTILITATS DIVERSES
----------------------------------------------------------
local function linkEditicon(item_id)
return "<span class='ita-edit-icon' style='margin-left:4px;'>[[File:OOjs UI icon edit-ltr-progressive.svg|middle|class=notpageimage|link=d:"
.. item_id .. "|وِکیٖڈیٹاہَس پؠٹھ کٔرِو اؠڈِٹ]]</span>"
end
local function es_no_llati(s)
local te_no_llati = mw.ustring.find(s, "[^A-Za-zÀ-ÖØ-öø-ÿĀ-ſ0-9%s%p]") ~= nil
if te_no_llati then
return "font-weight:normal;"
else
return "font-style:italic;"
end
end
----------------------------------------------------------
-- TRANSLITERACIÓ (qualificadors de P1476)
----------------------------------------------------------
local PROPS_TRANSLIT = {
"P2440",
"P2125",
"P1942",
"P2001",
"P5139",
"P1721",
}
local function obtenirTransliteracio(item_id)
local entity = mw.wikibase.getEntity(item_id)
if not entity or not entity.claims or not entity.claims.P1476 then return nil end
for _, claim in ipairs(entity.claims.P1476) do
if claim.qualifiers then
for _, pid in ipairs(PROPS_TRANSLIT) do
local quals = claim.qualifiers[pid]
if quals then
for _, q in ipairs(quals) do
local val = q.datavalue and q.datavalue.value
if val then
local t = type(val) == "string" and val or val.text
if t and t ~= "" then return t end
end
end
end
end
end
end
return nil
end
local function obtenirTitolOriginal(item_id, titol_catala, es_capcalera)
if not item_id then return "" end
local text = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "table",
colformat0 = "text",
list = false,
rowformat = "$0",
editicon = false,
}
if not text or text == "" or text == titol_catala then
return ""
end
local lang = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "$language",
list = false,
editicon = false,
}
if lang == "" then lang = nil end
local estil_text = es_no_llati(text)
local prefix_lang = ""
if es_capcalera and lang then
prefix_lang = "<sup><span style='font-weight:normal; font-style:normal;'>(" .. lang .. ")</span></sup> "
end
local tooltip_html = ""
if estil_text == "font-weight:normal;" then
local translit = obtenirTransliteracio(item_id)
if translit then
tooltip_html =
'<span class="ita-translit-wrap" tabindex="0">' ..
'<sup class="ita-translit-icon">ⓘ</sup>' ..
'<span class="ita-translit-tip">' .. translit:gsub("'", "'") .. '</span>' ..
'</span>'
end
end
return "<span style='font-size:90%; display:block;'>"
.. prefix_lang
.. "<span style='" .. estil_text .. "'>" .. text .. "</span>"
.. tooltip_html
.. "</span>"
end
local function obtenirDurada(item_id)
local raw = wikidades.claim{
item = item_id,
property = "P2047",
formatting = "raw",
list = false
}
if not raw or raw == "" then return nil end
local amount =
raw:match('"amount"%s*:%s*"(%+?[%d%.%-]+)"') or
raw:match('^%+?(%d+)$') or
raw:match('(%d+)[^%d]*$')
if not amount then return nil end
amount = tonumber(amount)
if not amount then return nil end
local unit =
raw:match('"unit"%s*:%s*"http://www%.wikidata%.org/entity/(Q%d+)"') or
raw:match('"unit"%s*:%s*"(Q%d+)"')
if not unit then
return amount .. " مِنَٹ"
end
local unit_map = {
Q7727 = "مِنَٹ",
Q11574 = "سٮ۪کَنڈ",
Q23387 = "گٲنٛٹہٕ",
Q25235 = "دۄہ"
}
local u = unit_map[unit]
if not u then return amount end
if u == "سٮ۪کَنڈ" then
amount = math.floor(amount / 60)
u = "مِنَٹ"
elseif u == "گٲنٛٹہٕ" then
amount = amount * 60
u = "مِنَٹ"
elseif u == "دۄہ" then
amount = amount * 24 * 60
u = "مِنَٹ"
end
return amount .. " " .. u
end
local function obtenirDataOrdenacio(item_id)
if not item_id then return "9999-99-99" end
local function primera(prop_id)
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return nil end
local any, mes, dia = raw:match("%+(%d%d%d%d)%-(%d%d)%-(%d%d)T")
if not any then return nil end
if mes == "00" then mes = "01" end
if dia == "00" then dia = "01" end
return string.format("%s-%s-%s", any, mes, dia)
end
return primera("P580")
or primera("P577")
or primera("P571")
or "9999-99-99"
end
local function getListSitelinkFromProp(item_id, prop_id)
local qid = getClaims(item_id, prop_id, true)[1]
if not qid then return "" end
return wikidades.getSiteLink{qid} or ("d:" .. qid)
end
----------------------------------------------------------
-- EDITORIALS
----------------------------------------------------------
local function obtenirEditorialsWikibase(qid)
local entity = mw.wikibase.getEntity(qid)
if not entity or not entity.claims or not entity.claims.P123 or #entity.claims.P123 == 0 then
return nil
end
local preferent
local primer_trobat = nil
local catalanes = {}
for _, claim in ipairs(entity.claims.P123) do
local ed_qid = claim.mainsnak.datavalue and claim.mainsnak.datavalue.value.id
if ed_qid then
local label = wdLink(ed_qid)
local lang_label = nil
local es_cat = false
if claim.qualifiers and claim.qualifiers.P407 then
for _, qv in ipairs(claim.qualifiers.P407) do
if qv.datavalue.value.id == "Q33552" then
es_cat = true
break
end
end
if es_cat then
lang_label, _ = getLabelData("Q33552")
else
local qid_lang = claim.qualifiers.P407[1].datavalue.value.id
lang_label, _ = getLabelData(qid_lang)
end
end
local text = label
if lang_label then
text = text .. " (" .. lang_label .. ")"
end
if es_cat then
table.insert(catalanes, text)
else
if not primer_trobat then primer_trobat = text end
if claim.rank == "preferred" and not preferent then
preferent = text
end
end
end
end
preferent = preferent or primer_trobat
if not preferent and #catalanes == 0 then return nil end
local resultat = {}
if preferent then table.insert(resultat, preferent) end
for _, c in ipairs(catalanes) do
if c ~= preferent then table.insert(resultat, c) end
end
return table.concat(resultat, "<br />")
end
----------------------------------------------------------
-- FILTRAR PER P31
----------------------------------------------------------
local function filtrarPerP31(llista, qid_tipus)
local coincideixen, resta = {}, {}
for _, q in ipairs(llista) do
local trobat = false
for _, classe in ipairs(getClaims(q, "P31", true)) do
if classe == qid_tipus then
trobat = true
break
end
end
table.insert(trobat and coincideixen or resta, q)
end
return coincideixen, resta
end
----------------------------------------------------------
-- CSS
----------------------------------------------------------
local CSS = {
HEADER = "ita-header",
SUBHEADER = "ita-subheader",
TIPUS = "ita-tipus",
CELL_L = "ita-cell-l",
CELL_R = "ita-cell-r",
ICON_CELL = "ita-icon-cell",
ICON_CELL_R = "ita-icon-cell-r",
CELL_FULL = "ita-cell-full",
}
local function filaEtiquetaValor(contenidor, label, valor, collapsible)
local fila = contenidor:tag("tr")
if collapsible then
fila:addClass("mw-collapsible-content")
end
fila:tag("td"):addClass(CSS.CELL_L):wikitext(label)
fila:tag("td"):addClass(CSS.CELL_R):wikitext(valor)
return fila
end
----------------------------------------------------------
-- GENERAR NUCLI (VERSIÓ COMPLETA, OPCIÓ B)
----------------------------------------------------------
local function generarNucli(item_id, args, es_grup, id_pare, te_genere_pare)
if not item_id or not mw.wikibase.isValidEntityId(item_id) then
return ""
end
local html = mw.html.create()
------------------------------------------------------
-- NOM BASE + IDIOMA
------------------------------------------------------
local nom_base, nom_base_lang = getLabelData(item_id)
local ret_lang_subheader = ""
local ret_icon_subheader = ""
if nom_base_lang and nom_base_lang ~= "ks" and nom_base_lang ~= "mul" then
ret_lang_subheader =
" <span style='font-weight:normal'><sup>(" .. nom_base_lang .. ")</sup></span>"
ret_icon_subheader =
" [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|" ..
mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain() ..
"|link=https://www.wikidata.org/wiki/" .. item_id .. "?uselang=ks]]"
end
------------------------------------------------------
-- TIPUS
------------------------------------------------------
local tipus_text = obtenirTipusText(args.tipus, item_id)
local tipus_net = netejarWikilink(tipus_text)
local mode = tipus_a_mode[tipus_net] or ""
------------------------------------------------------
-- SUBHEADER (si és grup)
------------------------------------------------------
if es_grup then
local estil_sub = es_no_llati(nom_base)
local sitelink = wikidades.getSiteLink{item_id}
local dest_link = sitelink
and ("[[" .. sitelink .. "|" .. nom_base .. "]]")
or ("[[d:" .. item_id .. "|" .. nom_base .. "]]")
local text =
"<span style='" .. estil_sub .. "'>" .. dest_link .. "</span>" ..
ret_lang_subheader ..
ret_icon_subheader ..
obtenirTitolOriginal(item_id, nom_base, false)
local fila_sh = html:tag("tr")
fila_sh:addClass("mw-collapsible-content")
fila_sh:tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(text)
end
------------------------------------------------------
-- FILA TIPUS + ICONES (VERSIÓ SENSE TAULA INTERNA)
------------------------------------------------------
local fila_tipus = html:tag("tr")
fila_tipus:addClass("mw-collapsible-content ita-row-tipus")
-- Cel·la esquerra (tipus)
fila_tipus:tag("td")
:addClass(CSS.TIPUS)
:wikitext(tipus_text)
local td_icones = fila_tipus:tag("td")
td_icones:addClass(CSS.CELL_R .. " ita-icons-flex")
local wrapper = td_icones:tag("div")
wrapper:addClass("ita-icons-wrapper")
local td_esq = wrapper:tag("div")
td_esq:addClass("ita-icons-left " .. CSS.ICON_CELL)
local td_dre = wrapper:tag("div")
td_dre:addClass("ita-icons-right " .. CSS.ICON_CELL_R)
------------------------------------------------------
-- ETIQUETA PERÍODE (funció interna)
------------------------------------------------------
local function _obtenirEtiquetaPeriode_local(qid, tipus_str)
local t = mw.ustring.lower(tipus_str or "")
local m = tipus_a_mode[majusculaInicial(t)] or ""
if m == "franquicia" then
return etiquetaProp("P2348")
end
if m == "llibre" or m == "videojoc" then
return etiquetaProp(qid_labels.publicacio)
end
if m == "pelicula" then
local te_p577 = wikidades.claim{item=qid, property="P577", list=false}
local te_p582 = wikidades.claim{item=qid, property="P582", list=false}
if te_p577 and te_p577 ~= "" then
return etiquetaProp(qid_labels.estrena)
elseif te_p582 and te_p582 ~= "" then
return etiquetaProp(qid_labels.emissio)
else
return etiquetaProp(qid_labels.estrena)
end
end
return etiquetaProp(qid_labels.emissio)
end
------------------------------------------------------
-- ICONA DURADA (P2047)
------------------------------------------------------
local text_durada = obtenirDurada(item_id)
if text_durada then
td_esq:wikitext("[[File:Hourglass icon.png|middle|class=notpageimage|link=|وَقٕف]] " .. text_durada .. " ")
end
------------------------------------------------------
-- ICONA DE LLISTA (P31)
------------------------------------------------------
local p31_qid = getClaims(item_id, "P31", true)[1] or ""
if p31_qid == "Q24856" or p31_qid == "Q7058673" or p31_qid == "Q29982285" then
local link = getListSitelinkFromProp(item_id, "P2354")
if link == "" then
link = wikidades.getSiteLink{item_id} or ("d:" .. item_id)
end
td_esq:wikitext("[[File:Font Awesome 5 regular list-alt.svg|middle|class=notpageimage|link=" .. link .. "]] ")
end
------------------------------------------------------
-- ICONA VOLUMS / PEL·LÍCULES (P2635)
------------------------------------------------------
local raw_volums = wikidades.claim{
item = item_id,
property = "P2635",
formatting = "raw",
list = false
}
if raw_volums and raw_volums ~= "" then
local quant = tostring(raw_volums):gsub("%+","")
if p31_qid == "Q29982285" then
td_esq:wikitext(
"[[File:Tabler-icons_movie.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|فِلِمہٕ]] " .. quant .. " فِلِمہٕ "
)
else
td_esq:wikitext(
"[[File:OpenMoji-black 1F4DA.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|جِلٕد]] " .. quant .. " جِلٕد "
)
end
end
------------------------------------------------------
-- ICONA EPISODIS (P1113)
------------------------------------------------------
local text_ep = ""
local raw_ep = wikidades.claim{
item = item_id,
property = "P1113",
formatting = "raw",
list = false
}
if raw_ep and raw_ep ~= "" then
text_ep = tostring(raw_ep):gsub("%+","")
end
if text_ep ~= "" then
local link_ep = getListSitelinkFromProp(item_id,"P1811")
if link_ep == "" then
link_ep = getListSitelinkFromProp(item_id,"P2354")
end
td_esq:wikitext(
"<span style='display:inline-block;width:1px;'></span>[[File:Noun TV Episodes 3303322.svg|middle|class=notpageimage|link=" ..
link_ep .. "|قِسٕط]] " .. text_ep .. " "
)
end
------------------------------------------------------
-- ICONES EXTERNES
------------------------------------------------------
td_dre:wikitext(generarIconesExternes(item_id) .. linkEditicon(item_id))
------------------------------------------------------
-- PROPIETATS SECUNDÀRIES (FILES NORMALS)
------------------------------------------------------
local propietats = {
"P144","P4970","P50","P110","P178","P58","P287","P86","P57","P162",
"P136","P400","P272","P275","P449","P123","P2360","P1433"
}
for _, pid in ipairs(propietats) do
local admetre = true
if pid == "P144" then
local qid_p144 = getClaims(item_id, "P144", true)[1]
if qid_p144 and (qid_p144 == item_id or qid_p144 == id_pare) then
admetre = false
end
end
if pid == "P136" and es_grup and te_genere_pare then
admetre = false
end
if admetre then
local label = etiquetaProp(pid)
if pid == "P123" and (mode == "videojoc" or mode == "audiovisual") then
label = etiquetaProp(qid_labels.distribuidor)
end
if pid == "P272" and (mode == "pelicula" or mode == "audiovisual") then
label = "اِسٹوٗڈیو"
end
if pid == "P2360" then
label = "آبٲدیاتی"
end
if pid == "P136" then
label = etiquetaProp(qid_labels.genere)
end
if pid == "P1433" and (tipus_net == "مینٛگا" or tipus_net == "مینٛگا سیٖریٖز" or tipus_net == "وَن-شاٹ") then
label = etiquetaProp(qid_labels.revista)
end
if pid == "P449" and mode == "audiovisual" then
label = "چَینَل"
end
--------------------------------------------------
-- GÈNERE (neteja unificada)
--------------------------------------------------
if pid == "P136" then
local valors = {}
for i, qid in ipairs(getClaims(item_id, "P136", true)) do
local label_qid = getLabelData(qid)
local text_net = netejarGenere(label_qid)
if i > 1 then
text_net = text_net:sub(1,1):lower() .. text_net:sub(2)
end
local sitelink = wikidades.getSiteLink{qid}
if sitelink and sitelink ~= "" then
table.insert(valors, "[[" .. sitelink .. "|" .. text_net .. "]]")
else
table.insert(valors, "[[d:" .. qid .. "|" .. text_net .. "]]")
end
end
if #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
--------------------------------------------------
-- EDITORIALS
--------------------------------------------------
elseif pid == "P123" then
local valors = obtenirEditorialsWikibase(item_id)
if valors then
filaEtiquetaValor(html, label, valors, true)
end
--------------------------------------------------
-- ALTRES PROP.
--------------------------------------------------
else
local valors = getClaims(item_id, pid, false)
if valors and #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
end
end
end
------------------------------------------------------
-- DATES (P580 / P577 / P582)
------------------------------------------------------
local data_inici_p580 = getClaims(item_id, "P580", false)[1]
if data_inici_p580 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local data_fi = getClaims(item_id, "P582", false)[1]
local text_data = formatarData(data_inici_p580)
if data_fi then
text_data = text_data .. " – " .. formatarData(data_fi)
end
filaEtiquetaValor(html, label_data, text_data, true)
else
--------------------------------------------------
-- CAS AMB P577 (pot tenir múltiples dates)
--------------------------------------------------
local entity = mw.wikibase.getEntity(item_id)
local claims_p577 = entity and entity.claims and entity.claims.P577 or {}
if #claims_p577 > 0 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local linies = {}
for _, claim in ipairs(claims_p577) do
local dv = claim.mainsnak and claim.mainsnak.datavalue
if dv then
local iso = dv.value and dv.value.time or ""
local data_fmt = formatarData(iso)
local quals = {}
if claim.qualifiers then
if claim.qualifiers.P291 then
for _, q in ipairs(claim.qualifiers.P291) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
if claim.qualifiers.P400 then
for _, q in ipairs(claim.qualifiers.P400) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
end
local linia = data_fmt
if #quals > 0 then
linia = linia .. " (" .. table.concat(quals, ", ") .. ")"
end
table.insert(linies, linia)
end
end
if #linies > 0 then
if #linies == 1 then
filaEtiquetaValor(html, label_data, linies[1], true)
else
local ocultes = {}
for i = 2, #linies do
table.insert(ocultes, linies[i])
end
local text_final =
'<table class="mw-collapsible mw-collapsed" style="width:100%; border-spacing:0;">' ..
'<tr><th colspan="2" style="text-align:left; font-weight:normal;">' .. linies[1] .. '</th></tr>' ..
'<tr><td>' .. table.concat(ocultes, "<br>") .. '</td></tr>' ..
'</table>'
filaEtiquetaValor(html, label_data, text_final, true)
end
end
end
end
------------------------------------------------------
-- RETORNAR EL RESULTAT
------------------------------------------------------
return tostring(html)
end
----------------------------------------------------------
-- p.infotaula
----------------------------------------------------------
local LIMIT_VISIBLE = 4
function p.infotaula(frame)
local args = getArgs(frame, {wrappers = "فرما:اِنفوباکس اٮ۪نِمی مینٛگا"})
local item_id = (args.item and args.item ~= "") and args.item
or mw.wikibase.getEntityIdForCurrentPage()
if not item_id then
return "<span class='error'>غَلطی: وِکیٖڈیٹاہَس سٟتؠ مُنسَلِق کانٛہہ تہِ عُنصَر آو نہٕ لَبنہٕ۔</span>"
end
---------------------------------------------------------
-- SELECCIONATS
---------------------------------------------------------
local seleccionats_raw = args.seleccionats or ""
local seleccionats = {}
if seleccionats_raw ~= "" then
for qid in seleccionats_raw:gmatch("Q%d+") do
seleccionats[qid] = true
end
end
---------------------------------------------------------
-- DELEGACIÓ SI NO ÉS GRUP / FRANQUÍCIA
---------------------------------------------------------
local parts = getClaims(item_id, "P527", true)
local derivades = getClaims(item_id, "P4969", true)
if #parts == 0 and #derivades == 0 then
local tipus = netejarWikilink(obtenirTipusText(args.tipus, item_id))
local mode = tipus_a_mode[tipus]
if mode == "pelicula" then
return frame:expandTemplate{
title = "فِلِم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "llibre" then
return frame:expandTemplate{
title = "کِتاب اِنفوباکس",
args = { item = item_id, titol = args.nom, manga = "y" }
}
elseif mode == "videojoc" then
return frame:expandTemplate{
title = "ویٖڈیو گیم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "audiovisual" then
return frame:expandTemplate{
title = "آڈیو وِجُوَل پروگرام اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
end
end
---------------------------------------------------------
-- MODE FRANQUÍCIA
---------------------------------------------------------
local res = mw.html.create("table")
:addClass("infobox")
:addClass("infotaula-animanga")
local titol = args.nom
or getLabelData(item_id)
or mw.title.getCurrentTitle().text
res:tag("caption")
:addClass(CSS.HEADER)
:wikitext(
'<div style="display:flex; align-items:center;">' ..
'<div style="flex:0 0 30px; min-width:30px;">' ..
'<span style="position:relative; left:2px;">[[File:Anime manga japanese characters icon.svg|30px|اِنفوباکس اٮ۪نِمی مینٛگا|class=skin-invert notpageimage]]</span>' ..
'</div>' ..
'<div style="flex:1 1 auto;">' ..
'<span style="font-weight:bold; font-style:italic;">' .. titol .. '</span>' ..
obtenirTitolOriginal(item_id, titol, true) ..
'</div>' ..
'<div style="flex:0 0 30px; min-width:30px;"></div>' ..
'</div>'
)
---------------------------------------------------------
-- IMATGE PRINCIPAL (amb fallback a logo P154)
---------------------------------------------------------
local img = obtenirImatge(item_id, args, "P18", "imatge")
local logo = obtenirImatge(item_id, args, "P154", "logo")
local mostrar_logo_apart = true
if img.nom then
local mida = midaImatge(img.nom, 250, 350)
local td_img = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
td_img:wikitext("[[File:" .. img.nom .. "|" .. mida .. "|center]]")
if img.peu and img.peu ~= "" then
td_img:tag("span")
:addClass("ita-img-caption")
:wikitext(img.peu)
end
elseif logo.nom then
-- Fallback: no hi ha P18, però sí P154 → l'usem com a imatge principal
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
mostrar_logo_apart = false
else
res:wikitext("[[زٲژ:مینٛگانِمی مَضموٗن یِمَن تَصویٖرٕچ ضروٗرَتھ چھِ]]")
end
---------------------------------------------------------
-- LOGO (P154) — només si NO s'ha usat ja com a fallback
---------------------------------------------------------
if logo.nom and mostrar_logo_apart then
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
end
---------------------------------------------------------
-- NUCLI PRINCIPAL DEL PARE
---------------------------------------------------------
local pare_te_genere = (#getClaims(item_id, "P136", true) > 0)
res:wikitext(generarNucli(item_id, args, false, item_id, false))
---------------------------------------------------------
-- FORMAT PER (P527)
---------------------------------------------------------
local elements_valids = {}
local exclos_p527 = {
Q125632018=true, Q3464665=true,
Q102364578=true, Q21191270=true
}
for _, tid in ipairs(parts) do
if next(seleccionats) ~= nil and not seleccionats[tid] then
-- exclòs per selecció
else
local exclos = false
for _, p31id in ipairs(getClaims(tid, "P31", true)) do
if exclos_p527[p31id] then
exclos = true
break
end
end
if not exclos then
table.insert(elements_valids, tid)
end
end
end
table.sort(elements_valids, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (Q2620972)
---------------------------------------------------------
local arcs_narratius
arcs_narratius, elements_valids = filtrarPerP31(elements_valids, "Q2620972")
---------------------------------------------------------
-- ARTICLES DE LLISTA (Q13406463) dins P527
---------------------------------------------------------
local llistes_p527
llistes_p527, elements_valids = filtrarPerP31(elements_valids, "Q13406463")
---------------------------------------------------------
-- OBRA DERIVADA (P4969)
---------------------------------------------------------
local ids_der_raw = derivades
local ids_der_filtrats = {}
for _, tid in ipairs(ids_der_raw) do
if next(seleccionats) == nil or seleccionats[tid] then
table.insert(ids_der_filtrats, tid)
end
end
local llistes_der, ids_der = filtrarPerP31(ids_der_filtrats, "Q13406463")
table.sort(ids_der, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (render)
---------------------------------------------------------
if #arcs_narratius > 0 then
res:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(getLabelData("Q2620972")) .. linkEditicon(item_id))
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, q in ipairs(arcs_narratius) do
local nom = getLabelData(q)
ul:tag("li"):wikitext(wdLink(q, nom))
end
end
---------------------------------------------------------
-- FUNCIONS AUXILIARS PER LLISTES
---------------------------------------------------------
local function mostrarLlistes(llistes, contenidor)
for _, q_llista in ipairs(llistes) do
local nom_llista = getLabelData(q_llista)
contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(nom_llista) .. " " .. linkEditicon(q_llista))
local membres = getClaims(q_llista, "P527", true)
if #membres > 0 then
if #membres > 5 then
-- Llista desplegable
local taula_col = contenidor:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(tostring(#membres) .. " عَناصِر")
local ul_membres = taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
else
local ul_membres = contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
end
end
end
end
---------------------------------------------------------
-- MOSTRAR FORMAT PER + OBRA DERIVADA (amb límit)
---------------------------------------------------------
local total = #elements_valids + #ids_der
if total > LIMIT_VISIBLE then
local visibles_p527 = math.min(#elements_valids, LIMIT_VISIBLE)
local visibles_der = math.min(#ids_der, math.max(0, LIMIT_VISIBLE - visibles_p527))
-----------------------------------------------------
-- PRIMERA PART: ELEMENTS VISIBLES NORMALS
-----------------------------------------------------
if visibles_p527 > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for i = 1, visibles_p527 do
res:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if visibles_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
for i = 1, visibles_der do
res:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
---------------------------------------------------------
-- BLOC PLEGABLE "MÉS" (contenidor taula necessari)
---------------------------------------------------------
local taula_col = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
-- capçalera "Més"
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext('<span class="ita-mes-text">مزیٖد</span>')
local resta_p527 = visibles_p527 < #elements_valids
local resta_der = visibles_der < #ids_der
local ambdues = resta_p527 and resta_der
---------------------------------------------------------
-- CONTINGUT PLEGABLE: P527
---------------------------------------------------------
if resta_p527 then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
end
for i = visibles_p527 + 1, #elements_valids do
taula_col:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
---------------------------------------------------------
-- CONTINGUT PLEGABLE: OBRES DERIVADES
---------------------------------------------------------
if resta_der then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
end
for i = visibles_der + 1, #ids_der do
taula_col:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
else
-----------------------------------------------------
-- CAS SENSE PLEGABLE
-----------------------------------------------------
if #elements_valids > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for _, tid in ipairs(elements_valids) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if #ids_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
for _, tid in ipairs(ids_der) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
end
---------------------------------------------------------
-- ALTRES (P5940)
---------------------------------------------------------
local ids_p5940 = getClaims(item_id, "P5940", true)
if #ids_p5940 > 0 then
-- Capçalera "Altres"
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("باقی")
-- Obtenim l'entitat UNA sola vegada
local entity = mw.wikibase.getEntity(item_id)
local claims_p5940 = entity and entity.claims and entity.claims.P5940 or {}
-- Indexem els claims per QID per evitar bucles interns
local claims_index = {}
for _, claim in ipairs(claims_p5940) do
local snak = claim.mainsnak
local q = snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id
if q then
claims_index[q] = claim
end
end
-- Construïm la llista i la mostrem en punts
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, qid in ipairs(ids_p5940) do
local text = wdLink(qid)
local claim = claims_index[qid]
if claim and claim.qualifiers and claim.qualifiers.P3831 then
local qual = claim.qualifiers.P3831[1]
local q_val = qual.datavalue and qual.datavalue.value and qual.datavalue.value.id
if q_val then
text = text .. " (" .. wdLink(q_val) .. ")"
end
end
ul:tag("li"):wikitext(text)
end
end
---------------------------------------------------------
-- PORTAL
---------------------------------------------------------
local portal_val = args.portal or ""
if portal_val ~= "" and portal_val:lower() ~= "no" then
local portal_expandit = frame:preprocess(
"[[File:Wikipe-tan face.svg|16px||class=notpageimage|link=Portal:Anime i Manga|اٮ۪نِمی تہٕ مینٛگا پورٹَل]] " ..
"[[Portal:Anime i Manga|اٮ۪نِمی تہٕ مینٛگا پورٹَل]]"
)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:addClass(CSS.CELL_FULL)
:wikitext(portal_expandit)
end
---------------------------------------------------------
-- ESTILS
---------------------------------------------------------
local styles = frame:extensionTag("templatestyles", "", {src="Module: Infotaula animanga/estils.css"})
return styles .. tostring(res)
end
return p
9yry9tmoqce6tandin4076n9t9eoeez
148883
148882
2026-08-10T12:12:51Z
آیات محراج
11062
148883
Scribunto
text/plain
local p = {}
----------------------------------------------------------
-- REQUERIMENTS I CONSTANTS
----------------------------------------------------------
local wikidades = require("Module:Wikidades")
local getArgs = require("Module:Arguments").getArgs
local qid_labels = {
publicacio = "Q732577",
estrena = "Q204854",
emissio = "Q109507868",
distribuidor = "Q12540664",
genere = "Q483394",
revista = "Q41298",
}
----------------------------------------------------------
-- FUNCIONS BÀSIQUES
----------------------------------------------------------
local function formatarData(iso)
if not iso or iso == "" then return "" end
local clean = iso:match("^%+?(%d%d%d%d%-%d%d%-%d%d)")
if not clean then return iso end
local any, m, d = clean:match("^(%d+)%-(%d+)%-(%d+)")
if not any then return iso end
local lang = mw.language.getContentLanguage()
if m == "00" then return any end
if d == "00" then
local fake = any .. "-" .. m .. "-01"
return lang:formatDate("F Y", fake)
end
return lang:formatDate("j F Y", clean)
end
local function netejaNomFitxer(raw)
local nom = tostring(raw):gsub("[%[%]]",""):gsub("^[Ff]it[xz]er:",""):gsub("^[Ff]ile:","")
if nom:find("|") then nom = nom:match("^([^|]+)") or nom end
return nom
end
local function midaImatge(nom, max_w, max_h)
local ext = nom:lower()
if ext:match("%.svg$") or ext:match("%.gif$") then
return max_w .. "px"
else
return max_w .. "x" .. max_h .. "px"
end
end
local function obtenirImatge(item_id, args, prop, param)
prop = prop or "P18"
param = param or "imatge"
if args[param] == "NONE" then
return { nom = nil, peu = nil }
end
if args[param] and args[param] ~= "" then
return { nom = netejaNomFitxer(args[param]), peu = args["peu"] or nil }
end
local raw = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if not raw or raw == "" then
return { nom = nil, peu = nil }
end
local nom = netejaNomFitxer(raw)
local peu = args["peu"]
if not peu or peu == "" then
local raw_caption = wikidades.claim{
item = item_id, property = prop,
qualifier = "P2096", formatting = "raw", list = false
}
if raw_caption and raw_caption ~= "" then peu = raw_caption end
end
return { nom = nom, peu = peu }
end
----------------------------------------------------------
-- ICONES EXTERNES
----------------------------------------------------------
local function getIconaPropieta(prop)
local entity = mw.wikibase.getEntity(prop)
if not entity or not entity.claims then return nil end
local function millor_claim(prop_id)
local claims = entity.claims[prop_id]
if not claims then return nil end
local preferent, normal = nil, nil
for _, claim in ipairs(claims) do
local rank = claim.rank
local val = claim.mainsnak.datavalue
and claim.mainsnak.datavalue.value
local nom = val and (type(val)=="string" and val or val.text or val.id)
if nom and nom ~= "" then
if rank=="preferred" and not preferent then preferent = nom
elseif rank=="normal" and not normal then normal = normal or nom end
end
end
return preferent or normal
end
return millor_claim("P8972") or millor_claim("P2910")
end
local external_link_props = {
"P1984", "P1985", "P4983", "P4947", "P345",
}
local function generarIconesExternes(item_id)
local html = {}
for _, prop in ipairs(external_link_props) do
local val = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if val and val ~= "" then
local formatter = wikidades.claim{
item = prop, property = "P1630",
formatting = "raw", list = false
}
local label = mw.wikibase.getLabel(prop) or prop
local icon = getIconaPropieta(prop)
if formatter and formatter ~= "" and icon then
local url = formatter:gsub("%$1", val)
table.insert(html,
string.format(
'[[File:%s|middle|link=%s|class=notpageimage|%s]] ',
icon, url, label
)
)
end
end
end
return table.concat(html, "")
end
----------------------------------------------------------
-- LABELS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getLabelData(qid)
local label, lang = nil, nil
for _, l in ipairs({"ks","mul","en","ja","ko","zh"}) do
local t = mw.wikibase.getLabelByLang(qid, l)
if t and t ~= "" then
label = t
lang = l
break
end
end
if not label then
label = qid
lang = nil
end
return label, lang
end
local function wdLink(qid, label_override)
if label_override and label_override ~= "" then
return "[[d:" .. qid .. "|" .. label_override .. "]]"
end
local label, lang = getLabelData(qid)
local sitelink = wikidades.getSiteLink{qid}
local link = sitelink
and ("[[" .. sitelink .. "|" .. label .. "]]")
or ("[[d:" .. qid .. "|" .. label .. "]]")
if lang and lang ~= "ks" and lang ~= "mul" then
link = link
.. " <sup>(" .. lang .. ")</sup>"
.. " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|"
.. mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain()
.. "|link=https://www.wikidata.org/wiki/" .. qid .. "?uselang=ks]]"
end
return link
end
----------------------------------------------------------
-- CLAIMS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getClaims(item_id, prop_id, only_qids)
if not item_id then return {} end
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return {} end
local result = {}
for v in raw:gmatch("[^/·/]+") do
if only_qids then
local q = v:match("^(Q%d+)$")
if q then table.insert(result, q) end
else
if v:match("^Q%d+$") then
table.insert(result, wdLink(v))
else
table.insert(result, v)
end
end
end
return result
end
----------------------------------------------------------
-- NETEJA DE GÈNERE UNIFICADA (PUNT 1)
----------------------------------------------------------
local APO = "['’`´ʼ‛]"
local GEN_PREFIX = {
"^مانٛگا تہٕ اؠنِمی%s+ہُنٛد%s*",
"^اؠنِمی تہٕ مانٛگا%s+ہُنٛد%s*",
"^مانٛگا%s+ہُنٛد%s*",
"^اؠنِمی%s+ہُنٛد%s*",
"^مانٛگا تہٕ اؠنِمی%s+",
"^اؠنِمی تہٕ مانٛگا%s+",
"^مانٛگا%s+",
"^اؠنِمی%s+",
}
local function netejarGenere(label)
local lower = label:lower()
for _, pat in ipairs(GEN_PREFIX) do
local resta = lower:gsub(pat, "")
if resta ~= lower then
label = label:gsub(pat, "")
break
end
end
label = label:gsub("%s*%b()", "")
label = label:gsub("^d[^a-zà-üA-ZÀ-Ü]+", "")
label = label:gsub("%s+$", "")
return label:sub(1,1):upper() .. label:sub(2)
end
----------------------------------------------------------
-- TIPUS I MAPES
----------------------------------------------------------
local tipus_def = {
["شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q24862" } },
["فرنچایِز"] = { mode = "franquicia", qids = { "Q196600" } },
["اؠنِمی فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q29982285" } },
["اؠنیٖمیٹِڈ شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q17517379" } },
["موٗسیٖقی ہُنٛد ویٖڈیو"] = { mode = "audiovisual", qids = { "Q193977", "Q55960075", "Q64100970" } },
["اؠنِمی فِلِم"] = { mode = "pelicula", qids = { "Q20650540" } },
["فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q24856" } },
["ویٖڈیو گیم سیٖریٖز"] = { mode = "videojoc", qids = { "Q7058673" } },
["فِلِم"] = { mode = "pelicula", qids = { "Q229390", "Q11424" } },
["اؠنیٖمیٹِڈ فِلِم"] = { mode = "pelicula", qids = { "Q29168811", "Q202866" } },
["اؠنیٖمیٹِڈ سیٖریٖز"] = { mode = "audiovisual", qids = { "Q581714" } },
["اؠنِمی"] = { mode = "audiovisual", qids = { "Q63952888", "Q11086742", "Q100269041", "Q104640199" } },
["ریڈیو ڈرامہ"] = { mode = "audiovisual", qids = { "Q2635894" } },
["او وی اے"] = { mode = "audiovisual", qids = { "Q220898" } },
["او وی اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113687694" } },
["موٗسیٖقی"] = { mode = "pelicula", qids = { "Q58483083" } },
["وَن-شاٹ"] = { mode = "llibre", qids = { "Q933530", "Q21202185" } },
["او اے ڈی"] = { mode = "audiovisual", qids = { "oad" } },
["او اؠن اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113671041" } },
["او اؠن اے"] = { mode = "audiovisual", qids = { "Q1047299" } },
["ڈوراما"] = { mode = "audiovisual", qids = { "Q399811" } },
["خاص"] = { mode = "audiovisual", qids = { "Q1261214" } },
["لایِو اؠکشَن"] = { mode = nil, qids = { "live action" } },
["وِجُوَلی ناوَل"] = { mode = "videojoc", qids = { "Q689445" } },
["گیم"] = { mode = nil, qids = { "Q11410" } },
["ناوَل"] = { mode = "llibre", qids = { "Q747381" } },
["ناوَل سیٖریٖز"] = { mode = "llibre", qids = { "Q104213567" } },
["ویٖڈیو گیم"] = { mode = "videojoc", qids = { "Q7889" } },
["ڈوجِنشی"] = { mode = "llibre", qids = { "Q668711" } },
["مانٛگا سیٖریٖز"] = { mode = "llibre", qids = { "Q21198342" } },
["مانٛگا"] = { mode = "llibre", qids = { "Q8274" } },
["اِشتِہار"] = { mode = "audiovisual", qids = { "Q11796892", "Q854995" } },
["سی ڈی ڈرامہ"] = { mode = "audiovisual", qids = { "Q244351" } },
["مانٛگا فِلِم"] = { mode = "pelicula", qids = { "Q116790751" } },
["کَمِک"] = { mode = "llibre", qids = { "Q1004" } },
["ٹی وی سیٖریٖز"] = { mode = "audiovisual", qids = { "Q5398426", "Q21191019" } },
["وؠب سیٖریٖز"] = { mode = "audiovisual", qids = { "Q526877" } },
["وؠب ٹوٗن"] = { mode = "llibre", qids = { "Q7978994" } },
["مَنہوا سیٖریٖز"] = { mode = "llibre", qids = { "Q74262765" } },
["مَنہوا"] = { mode = "llibre", qids = { "Q754669" } },
["لایِو اؠکشَن فِلِم"] = { mode = "pelicula", qids = { "pel·lícula live action" } },
["لایِٹ ناوَل"] = { mode = "llibre", qids = {} },
}
local tipus_map = {}
local tipus_a_mode = {}
for tipus, def in pairs(tipus_def) do
tipus_a_mode[tipus] = def.mode
for _, qid in ipairs(def.qids) do
tipus_map[qid] = tipus
end
end
local link_desti = {
["مانٛگا سیٖریٖز"] = "مانٛگا",
["فرنچایِز"] = "میٖڈیا فرنچایِز",
}
local function majusculaInicial(s)
if not s or s == "" then return s end
return mw.ustring.upper(mw.ustring.sub(s, 1, 1)) .. mw.ustring.sub(s, 2)
end
local function etiquetaProp(pid)
local label = mw.wikibase.getLabel(pid)
return majusculaInicial(label or "")
end
local function obtenirTipusText(tipus_param, item_id)
local val = (tipus_param and tipus_param ~= "") and string.lower(tipus_param) or ""
local map = tipus_map
if val == "" and item_id then
local ids = getClaims(item_id, "P31", true)
if #ids == 0 then return "باقی" end
local primer = ids[1]
for _, id in ipairs(ids) do
if map[id] then
val = id
break
end
end
if val == "" then val = primer end
end
local function linkSiExisteix(t, desti)
local target = desti or t
local title = mw.title.new(target)
if title and title.exists then return "[[" .. target .. "|" .. t .. "]]" end
return t
end
if map[val] then
return linkSiExisteix(map[val], link_desti[map[val]])
end
local label, _ = getLabelData(val)
return label and majusculaInicial(label) or "باقی"
end
local function netejarWikilink(text)
return text
:gsub("%[%[[^|]+|([^%]]+)%]%]", "%1")
:gsub("%[%[([^%]]+)%]%]", "%1")
end
----------------------------------------------------------
-- UTILITATS DIVERSES
----------------------------------------------------------
local function linkEditicon(item_id)
return "<span class='ita-edit-icon' style='margin-left:4px;'>[[File:OOjs UI icon edit-ltr-progressive.svg|middle|class=notpageimage|link=d:"
.. item_id .. "|وِکیٖڈیٹاہَس پؠٹھ کٔرِو اؠڈِٹ]]</span>"
end
local function es_no_llati(s)
local te_no_llati = mw.ustring.find(s, "[^A-Za-zÀ-ÖØ-öø-ÿĀ-ſ0-9%s%p]") ~= nil
if te_no_llati then
return "font-weight:normal;"
else
return "font-style:italic;"
end
end
----------------------------------------------------------
-- TRANSLITERACIÓ (qualificadors de P1476)
----------------------------------------------------------
local PROPS_TRANSLIT = {
"P2440",
"P2125",
"P1942",
"P2001",
"P5139",
"P1721",
}
local function obtenirTransliteracio(item_id)
local entity = mw.wikibase.getEntity(item_id)
if not entity or not entity.claims or not entity.claims.P1476 then return nil end
for _, claim in ipairs(entity.claims.P1476) do
if claim.qualifiers then
for _, pid in ipairs(PROPS_TRANSLIT) do
local quals = claim.qualifiers[pid]
if quals then
for _, q in ipairs(quals) do
local val = q.datavalue and q.datavalue.value
if val then
local t = type(val) == "string" and val or val.text
if t and t ~= "" then return t end
end
end
end
end
end
end
return nil
end
local function obtenirTitolOriginal(item_id, titol_catala, es_capcalera)
if not item_id then return "" end
local text = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "table",
colformat0 = "text",
list = false,
rowformat = "$0",
editicon = false,
}
if not text or text == "" or text == titol_catala then
return ""
end
local lang = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "$language",
list = false,
editicon = false,
}
if lang == "" then lang = nil end
local estil_text = es_no_llati(text)
local prefix_lang = ""
if es_capcalera and lang then
prefix_lang = "<sup><span style='font-weight:normal; font-style:normal;'>(" .. lang .. ")</span></sup> "
end
local tooltip_html = ""
if estil_text == "font-weight:normal;" then
local translit = obtenirTransliteracio(item_id)
if translit then
tooltip_html =
'<span class="ita-translit-wrap" tabindex="0">' ..
'<sup class="ita-translit-icon">ⓘ</sup>' ..
'<span class="ita-translit-tip">' .. translit:gsub("'", "'") .. '</span>' ..
'</span>'
end
end
return "<span style='font-size:90%; display:block;'>"
.. prefix_lang
.. "<span style='" .. estil_text .. "'>" .. text .. "</span>"
.. tooltip_html
.. "</span>"
end
local function obtenirDurada(item_id)
local raw = wikidades.claim{
item = item_id,
property = "P2047",
formatting = "raw",
list = false
}
if not raw or raw == "" then return nil end
local amount =
raw:match('"amount"%s*:%s*"(%+?[%d%.%-]+)"') or
raw:match('^%+?(%d+)$') or
raw:match('(%d+)[^%d]*$')
if not amount then return nil end
amount = tonumber(amount)
if not amount then return nil end
local unit =
raw:match('"unit"%s*:%s*"http://www%.wikidata%.org/entity/(Q%d+)"') or
raw:match('"unit"%s*:%s*"(Q%d+)"')
if not unit then
return amount .. " مِنَٹ"
end
local unit_map = {
Q7727 = "مِنَٹ",
Q11574 = "سؠکَنڈ",
Q23387 = "گٲنٛٹہٕ",
Q25235 = "دۄہ"
}
local u = unit_map[unit]
if not u then return amount end
if u == "سؠکَنڈ" then
amount = math.floor(amount / 60)
u = "مِنَٹ"
elseif u == "گٲنٛٹہٕ" then
amount = amount * 60
u = "مِنَٹ"
elseif u == "دۄہ" then
amount = amount * 24 * 60
u = "مِنَٹ"
end
return amount .. " " .. u
end
local function obtenirDataOrdenacio(item_id)
if not item_id then return "9999-99-99" end
local function primera(prop_id)
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return nil end
local any, mes, dia = raw:match("%+(%d%d%d%d)%-(%d%d)%-(%d%d)T")
if not any then return nil end
if mes == "00" then mes = "01" end
if dia == "00" then dia = "01" end
return string.format("%s-%s-%s", any, mes, dia)
end
return primera("P580")
or primera("P577")
or primera("P571")
or "9999-99-99"
end
local function getListSitelinkFromProp(item_id, prop_id)
local qid = getClaims(item_id, prop_id, true)[1]
if not qid then return "" end
return wikidades.getSiteLink{qid} or ("d:" .. qid)
end
----------------------------------------------------------
-- EDITORIALS
----------------------------------------------------------
local function obtenirEditorialsWikibase(qid)
local entity = mw.wikibase.getEntity(qid)
if not entity or not entity.claims or not entity.claims.P123 or #entity.claims.P123 == 0 then
return nil
end
local preferent
local primer_trobat = nil
local catalanes = {}
for _, claim in ipairs(entity.claims.P123) do
local ed_qid = claim.mainsnak.datavalue and claim.mainsnak.datavalue.value.id
if ed_qid then
local label = wdLink(ed_qid)
local lang_label = nil
local es_cat = false
if claim.qualifiers and claim.qualifiers.P407 then
for _, qv in ipairs(claim.qualifiers.P407) do
if qv.datavalue.value.id == "Q33552" then
es_cat = true
break
end
end
if es_cat then
lang_label, _ = getLabelData("Q33552")
else
local qid_lang = claim.qualifiers.P407[1].datavalue.value.id
lang_label, _ = getLabelData(qid_lang)
end
end
local text = label
if lang_label then
text = text .. " (" .. lang_label .. ")"
end
if es_cat then
table.insert(catalanes, text)
else
if not primer_trobat then primer_trobat = text end
if claim.rank == "preferred" and not preferent then
preferent = text
end
end
end
end
preferent = preferent or primer_trobat
if not preferent and #catalanes == 0 then return nil end
local resultat = {}
if preferent then table.insert(resultat, preferent) end
for _, c in ipairs(catalanes) do
if c ~= preferent then table.insert(resultat, c) end
end
return table.concat(resultat, "<br />")
end
----------------------------------------------------------
-- FILTRAR PER P31
----------------------------------------------------------
local function filtrarPerP31(llista, qid_tipus)
local coincideixen, resta = {}, {}
for _, q in ipairs(llista) do
local trobat = false
for _, classe in ipairs(getClaims(q, "P31", true)) do
if classe == qid_tipus then
trobat = true
break
end
end
table.insert(trobat and coincideixen or resta, q)
end
return coincideixen, resta
end
----------------------------------------------------------
-- CSS
----------------------------------------------------------
local CSS = {
HEADER = "ita-header",
SUBHEADER = "ita-subheader",
TIPUS = "ita-tipus",
CELL_L = "ita-cell-l",
CELL_R = "ita-cell-r",
ICON_CELL = "ita-icon-cell",
ICON_CELL_R = "ita-icon-cell-r",
CELL_FULL = "ita-cell-full",
}
local function filaEtiquetaValor(contenidor, label, valor, collapsible)
local fila = contenidor:tag("tr")
if collapsible then
fila:addClass("mw-collapsible-content")
end
fila:tag("td"):addClass(CSS.CELL_L):wikitext(label)
fila:tag("td"):addClass(CSS.CELL_R):wikitext(valor)
return fila
end
----------------------------------------------------------
-- GENERAR NUCLI (VERSIÓ COMPLETA, OPCIÓ B)
----------------------------------------------------------
local function generarNucli(item_id, args, es_grup, id_pare, te_genere_pare)
if not item_id or not mw.wikibase.isValidEntityId(item_id) then
return ""
end
local html = mw.html.create()
------------------------------------------------------
-- NOM BASE + IDIOMA
------------------------------------------------------
local nom_base, nom_base_lang = getLabelData(item_id)
local ret_lang_subheader = ""
local ret_icon_subheader = ""
if nom_base_lang and nom_base_lang ~= "ks" and nom_base_lang ~= "mul" then
ret_lang_subheader =
" <span style='font-weight:normal'><sup>(" .. nom_base_lang .. ")</sup></span>"
ret_icon_subheader =
" [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|" ..
mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain() ..
"|link=https://www.wikidata.org/wiki/" .. item_id .. "?uselang=ks]]"
end
------------------------------------------------------
-- TIPUS
------------------------------------------------------
local tipus_text = obtenirTipusText(args.tipus, item_id)
local tipus_net = netejarWikilink(tipus_text)
local mode = tipus_a_mode[tipus_net] or ""
------------------------------------------------------
-- SUBHEADER (si és grup)
------------------------------------------------------
if es_grup then
local estil_sub = es_no_llati(nom_base)
local sitelink = wikidades.getSiteLink{item_id}
local dest_link = sitelink
and ("[[" .. sitelink .. "|" .. nom_base .. "]]")
or ("[[d:" .. item_id .. "|" .. nom_base .. "]]")
local text =
"<span style='" .. estil_sub .. "'>" .. dest_link .. "</span>" ..
ret_lang_subheader ..
ret_icon_subheader ..
obtenirTitolOriginal(item_id, nom_base, false)
local fila_sh = html:tag("tr")
fila_sh:addClass("mw-collapsible-content")
fila_sh:tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(text)
end
------------------------------------------------------
-- FILA TIPUS + ICONES (VERSIÓ SENSE TAULA INTERNA)
------------------------------------------------------
local fila_tipus = html:tag("tr")
fila_tipus:addClass("mw-collapsible-content ita-row-tipus")
-- Cel·la esquerra (tipus)
fila_tipus:tag("td")
:addClass(CSS.TIPUS)
:wikitext(tipus_text)
local td_icones = fila_tipus:tag("td")
td_icones:addClass(CSS.CELL_R .. " ita-icons-flex")
local wrapper = td_icones:tag("div")
wrapper:addClass("ita-icons-wrapper")
local td_esq = wrapper:tag("div")
td_esq:addClass("ita-icons-left " .. CSS.ICON_CELL)
local td_dre = wrapper:tag("div")
td_dre:addClass("ita-icons-right " .. CSS.ICON_CELL_R)
------------------------------------------------------
-- ETIQUETA PERÍODE (funció interna)
------------------------------------------------------
local function _obtenirEtiquetaPeriode_local(qid, tipus_str)
local t = mw.ustring.lower(tipus_str or "")
local m = tipus_a_mode[majusculaInicial(t)] or ""
if m == "franquicia" then
return etiquetaProp("P2348")
end
if m == "llibre" or m == "videojoc" then
return etiquetaProp(qid_labels.publicacio)
end
if m == "pelicula" then
local te_p577 = wikidades.claim{item=qid, property="P577", list=false}
local te_p582 = wikidades.claim{item=qid, property="P582", list=false}
if te_p577 and te_p577 ~= "" then
return etiquetaProp(qid_labels.estrena)
elseif te_p582 and te_p582 ~= "" then
return etiquetaProp(qid_labels.emissio)
else
return etiquetaProp(qid_labels.estrena)
end
end
return etiquetaProp(qid_labels.emissio)
end
------------------------------------------------------
-- ICONA DURADA (P2047)
------------------------------------------------------
local text_durada = obtenirDurada(item_id)
if text_durada then
td_esq:wikitext("[[File:Hourglass icon.png|middle|class=notpageimage|link=|وَقٕف]] " .. text_durada .. " ")
end
------------------------------------------------------
-- ICONA DE LLISTA (P31)
------------------------------------------------------
local p31_qid = getClaims(item_id, "P31", true)[1] or ""
if p31_qid == "Q24856" or p31_qid == "Q7058673" or p31_qid == "Q29982285" then
local link = getListSitelinkFromProp(item_id, "P2354")
if link == "" then
link = wikidades.getSiteLink{item_id} or ("d:" .. item_id)
end
td_esq:wikitext("[[File:Font Awesome 5 regular list-alt.svg|middle|class=notpageimage|link=" .. link .. "]] ")
end
------------------------------------------------------
-- ICONA VOLUMS / PEL·LÍCULES (P2635)
------------------------------------------------------
local raw_volums = wikidades.claim{
item = item_id,
property = "P2635",
formatting = "raw",
list = false
}
if raw_volums and raw_volums ~= "" then
local quant = tostring(raw_volums):gsub("%+","")
if p31_qid == "Q29982285" then
td_esq:wikitext(
"[[File:Tabler-icons_movie.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|فِلِمہٕ]] " .. quant .. " فِلِمہٕ "
)
else
td_esq:wikitext(
"[[File:OpenMoji-black 1F4DA.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|جِلٕد]] " .. quant .. " جِلٕد "
)
end
end
------------------------------------------------------
-- ICONA EPISODIS (P1113)
------------------------------------------------------
local text_ep = ""
local raw_ep = wikidades.claim{
item = item_id,
property = "P1113",
formatting = "raw",
list = false
}
if raw_ep and raw_ep ~= "" then
text_ep = tostring(raw_ep):gsub("%+","")
end
if text_ep ~= "" then
local link_ep = getListSitelinkFromProp(item_id,"P1811")
if link_ep == "" then
link_ep = getListSitelinkFromProp(item_id,"P2354")
end
td_esq:wikitext(
"<span style='display:inline-block;width:1px;'></span>[[File:Noun TV Episodes 3303322.svg|middle|class=notpageimage|link=" ..
link_ep .. "|قِسٕط]] " .. text_ep .. " "
)
end
------------------------------------------------------
-- ICONES EXTERNES
------------------------------------------------------
td_dre:wikitext(generarIconesExternes(item_id) .. linkEditicon(item_id))
------------------------------------------------------
-- PROPIETATS SECUNDÀRIES (FILES NORMALS)
------------------------------------------------------
local propietats = {
"P144","P4970","P50","P110","P178","P58","P287","P86","P57","P162",
"P136","P400","P272","P275","P449","P123","P2360","P1433"
}
for _, pid in ipairs(propietats) do
local admetre = true
if pid == "P144" then
local qid_p144 = getClaims(item_id, "P144", true)[1]
if qid_p144 and (qid_p144 == item_id or qid_p144 == id_pare) then
admetre = false
end
end
if pid == "P136" and es_grup and te_genere_pare then
admetre = false
end
if admetre then
local label = etiquetaProp(pid)
if pid == "P123" and (mode == "videojoc" or mode == "audiovisual") then
label = etiquetaProp(qid_labels.distribuidor)
end
if pid == "P272" and (mode == "pelicula" or mode == "audiovisual") then
label = "سٕٹوٗڈیو"
end
if pid == "P2360" then
label = "قٕسٕم"
end
if pid == "P136" then
label = etiquetaProp(qid_labels.genere)
end
if pid == "P1433" and (tipus_net == "مانٛگا" or tipus_net == "مانٛگا سیٖریٖز" or tipus_net == "وَن-شاٹ") then
label = etiquetaProp(qid_labels.revista)
end
if pid == "P449" and mode == "audiovisual" then
label = "چَینَل"
end
--------------------------------------------------
-- GÈNERE (neteja unificada)
--------------------------------------------------
if pid == "P136" then
local valors = {}
for i, qid in ipairs(getClaims(item_id, "P136", true)) do
local label_qid = getLabelData(qid)
local text_net = netejarGenere(label_qid)
if i > 1 then
text_net = text_net:sub(1,1):lower() .. text_net:sub(2)
end
local sitelink = wikidades.getSiteLink{qid}
if sitelink and sitelink ~= "" then
table.insert(valors, "[[" .. sitelink .. "|" .. text_net .. "]]")
else
table.insert(valors, "[[d:" .. qid .. "|" .. text_net .. "]]")
end
end
if #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
--------------------------------------------------
-- EDITORIALS
--------------------------------------------------
elseif pid == "P123" then
local valors = obtenirEditorialsWikibase(item_id)
if valors then
filaEtiquetaValor(html, label, valors, true)
end
--------------------------------------------------
-- ALTRES PROP.
--------------------------------------------------
else
local valors = getClaims(item_id, pid, false)
if valors and #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
end
end
end
------------------------------------------------------
-- DATES (P580 / P577 / P582)
------------------------------------------------------
local data_inici_p580 = getClaims(item_id, "P580", false)[1]
if data_inici_p580 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local data_fi = getClaims(item_id, "P582", false)[1]
local text_data = formatarData(data_inici_p580)
if data_fi then
text_data = text_data .. " – " .. formatarData(data_fi)
end
filaEtiquetaValor(html, label_data, text_data, true)
else
--------------------------------------------------
-- CAS AMB P577 (pot tenir múltiples dates)
--------------------------------------------------
local entity = mw.wikibase.getEntity(item_id)
local claims_p577 = entity and entity.claims and entity.claims.P577 or {}
if #claims_p577 > 0 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local linies = {}
for _, claim in ipairs(claims_p577) do
local dv = claim.mainsnak and claim.mainsnak.datavalue
if dv then
local iso = dv.value and dv.value.time or ""
local data_fmt = formatarData(iso)
local quals = {}
if claim.qualifiers then
if claim.qualifiers.P291 then
for _, q in ipairs(claim.qualifiers.P291) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
if claim.qualifiers.P400 then
for _, q in ipairs(claim.qualifiers.P400) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
end
local linia = data_fmt
if #quals > 0 then
linia = linia .. " (" .. table.concat(quals, ", ") .. ")"
end
table.insert(linies, linia)
end
end
if #linies > 0 then
if #linies == 1 then
filaEtiquetaValor(html, label_data, linies[1], true)
else
local ocultes = {}
for i = 2, #linies do
table.insert(ocultes, linies[i])
end
local text_final =
'<table class="mw-collapsible mw-collapsed" style="width:100%; border-spacing:0;">' ..
'<tr><th colspan="2" style="text-align:left; font-weight:normal;">' .. linies[1] .. '</th></tr>' ..
'<tr><td>' .. table.concat(ocultes, "<br>") .. '</td></tr>' ..
'</table>'
filaEtiquetaValor(html, label_data, text_final, true)
end
end
end
end
------------------------------------------------------
-- RETORNAR EL RESULTAT
------------------------------------------------------
return tostring(html)
end
----------------------------------------------------------
-- p.infotaula
----------------------------------------------------------
local LIMIT_VISIBLE = 4
function p.infotaula(frame)
local args = getArgs(frame, {wrappers = "فرما:اِنفوباکس اؠنِمی مانٛگا"})
local item_id = (args.item and args.item ~= "") and args.item
or mw.wikibase.getEntityIdForCurrentPage()
if not item_id then
return "<span class='error'>غَلطی: وِکیٖڈیٹاہَس سٟتؠ مُنسَلِق کانٛہہ تہِ عُنصَر آو نہٕ لَبنہٕ۔</span>"
end
---------------------------------------------------------
-- SELECCIONATS
---------------------------------------------------------
local seleccionats_raw = args.seleccionats or ""
local seleccionats = {}
if seleccionats_raw ~= "" then
for qid in seleccionats_raw:gmatch("Q%d+") do
seleccionats[qid] = true
end
end
---------------------------------------------------------
-- DELEGACIÓ SI NO ÉS GRUP / FRANQUÍCIA
---------------------------------------------------------
local parts = getClaims(item_id, "P527", true)
local derivades = getClaims(item_id, "P4969", true)
if #parts == 0 and #derivades == 0 then
local tipus = netejarWikilink(obtenirTipusText(args.tipus, item_id))
local mode = tipus_a_mode[tipus]
if mode == "pelicula" then
return frame:expandTemplate{
title = "فِلِم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "llibre" then
return frame:expandTemplate{
title = "کِتاب اِنفوباکس",
args = { item = item_id, titol = args.nom, manga = "y" }
}
elseif mode == "videojoc" then
return frame:expandTemplate{
title = "ویٖڈیو گیم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "audiovisual" then
return frame:expandTemplate{
title = "آڈیو وِجُوَل پروگرام اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
end
end
---------------------------------------------------------
-- MODE FRANQUÍCIA
---------------------------------------------------------
local res = mw.html.create("table")
:addClass("infobox")
:addClass("infotaula-animanga")
local titol = args.nom
or getLabelData(item_id)
or mw.title.getCurrentTitle().text
res:tag("caption")
:addClass(CSS.HEADER)
:wikitext(
'<div style="display:flex; align-items:center;">' ..
'<div style="flex:0 0 30px; min-width:30px;">' ..
'<span style="position:relative; left:2px;">[[File:Anime manga japanese characters icon.svg|30px|اِنفوباکس اؠنِمی مانٛگا|class=skin-invert notpageimage]]</span>' ..
'</div>' ..
'<div style="flex:1 1 auto;">' ..
'<span style="font-weight:bold; font-style:italic;">' .. titol .. '</span>' ..
obtenirTitolOriginal(item_id, titol, true) ..
'</div>' ..
'<div style="flex:0 0 30px; min-width:30px;"></div>' ..
'</div>'
)
---------------------------------------------------------
-- IMATGE PRINCIPAL (amb fallback a logo P154)
---------------------------------------------------------
local img = obtenirImatge(item_id, args, "P18", "imatge")
local logo = obtenirImatge(item_id, args, "P154", "logo")
local mostrar_logo_apart = true
if img.nom then
local mida = midaImatge(img.nom, 250, 350)
local td_img = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
td_img:wikitext("[[File:" .. img.nom .. "|" .. mida .. "|center]]")
if img.peu and img.peu ~= "" then
td_img:tag("span")
:addClass("ita-img-caption")
:wikitext(img.peu)
end
elseif logo.nom then
-- Fallback: no hi ha P18, però sí P154 → l'usem com a imatge principal
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
mostrar_logo_apart = false
else
res:wikitext("[[زٲژ:مانٛگانِمی مَضموٗن یِمَن تَصویٖرٕچ ضروٗرَتھ چھِ]]")
end
---------------------------------------------------------
-- LOGO (P154) — només si NO s'ha usat ja com a fallback
---------------------------------------------------------
if logo.nom and mostrar_logo_apart then
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
end
---------------------------------------------------------
-- NUCLI PRINCIPAL DEL PARE
---------------------------------------------------------
local pare_te_genere = (#getClaims(item_id, "P136", true) > 0)
res:wikitext(generarNucli(item_id, args, false, item_id, false))
---------------------------------------------------------
-- FORMAT PER (P527)
---------------------------------------------------------
local elements_valids = {}
local exclos_p527 = {
Q125632018=true, Q3464665=true,
Q102364578=true, Q21191270=true
}
for _, tid in ipairs(parts) do
if next(seleccionats) ~= nil and not seleccionats[tid] then
-- exclòs per selecció
else
local exclos = false
for _, p31id in ipairs(getClaims(tid, "P31", true)) do
if exclos_p527[p31id] then
exclos = true
break
end
end
if not exclos then
table.insert(elements_valids, tid)
end
end
end
table.sort(elements_valids, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (Q2620972)
---------------------------------------------------------
local arcs_narratius
arcs_narratius, elements_valids = filtrarPerP31(elements_valids, "Q2620972")
---------------------------------------------------------
-- ARTICLES DE LLISTA (Q13406463) dins P527
---------------------------------------------------------
local llistes_p527
llistes_p527, elements_valids = filtrarPerP31(elements_valids, "Q13406463")
---------------------------------------------------------
-- OBRA DERIVADA (P4969)
---------------------------------------------------------
local ids_der_raw = derivades
local ids_der_filtrats = {}
for _, tid in ipairs(ids_der_raw) do
if next(seleccionats) == nil or seleccionats[tid] then
table.insert(ids_der_filtrats, tid)
end
end
local llistes_der, ids_der = filtrarPerP31(ids_der_filtrats, "Q13406463")
table.sort(ids_der, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (render)
---------------------------------------------------------
if #arcs_narratius > 0 then
res:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(getLabelData("Q2620972")) .. linkEditicon(item_id))
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, q in ipairs(arcs_narratius) do
local nom = getLabelData(q)
ul:tag("li"):wikitext(wdLink(q, nom))
end
end
---------------------------------------------------------
-- FUNCIONS AUXILIARS PER LLISTES
---------------------------------------------------------
local function mostrarLlistes(llistes, contenidor)
for _, q_llista in ipairs(llistes) do
local nom_llista = getLabelData(q_llista)
contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(nom_llista) .. " " .. linkEditicon(q_llista))
local membres = getClaims(q_llista, "P527", true)
if #membres > 0 then
if #membres > 5 then
-- Llista desplegable
local taula_col = contenidor:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(tostring(#membres) .. " عَناصِر")
local ul_membres = taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
else
local ul_membres = contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
end
end
end
end
---------------------------------------------------------
-- MOSTRAR FORMAT PER + OBRA DERIVADA (amb límit)
---------------------------------------------------------
local total = #elements_valids + #ids_der
if total > LIMIT_VISIBLE then
local visibles_p527 = math.min(#elements_valids, LIMIT_VISIBLE)
local visibles_der = math.min(#ids_der, math.max(0, LIMIT_VISIBLE - visibles_p527))
-----------------------------------------------------
-- PRIMERA PART: ELEMENTS VISIBLES NORMALS
-----------------------------------------------------
if visibles_p527 > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for i = 1, visibles_p527 do
res:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if visibles_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
for i = 1, visibles_der do
res:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
---------------------------------------------------------
-- BLOC PLEGABLE "MÉS" (contenidor taula necessari)
---------------------------------------------------------
local taula_col = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
-- capçalera "Més"
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext('<span class="ita-mes-text">مزیٖد</span>')
local resta_p527 = visibles_p527 < #elements_valids
local resta_der = visibles_der < #ids_der
local ambdues = resta_p527 and resta_der
---------------------------------------------------------
-- CONTINGUT PLEGABLE: P527
---------------------------------------------------------
if resta_p527 then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
end
for i = visibles_p527 + 1, #elements_valids do
taula_col:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
---------------------------------------------------------
-- CONTINGUT PLEGABLE: OBRES DERIVADES
---------------------------------------------------------
if resta_der then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
end
for i = visibles_der + 1, #ids_der do
taula_col:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
else
-----------------------------------------------------
-- CAS SENSE PLEGABLE
-----------------------------------------------------
if #elements_valids > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for _, tid in ipairs(elements_valids) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if #ids_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("مٲخوٗذ کٲم")
for _, tid in ipairs(ids_der) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
end
---------------------------------------------------------
-- ALTRES (P5940)
---------------------------------------------------------
local ids_p5940 = getClaims(item_id, "P5940", true)
if #ids_p5940 > 0 then
-- Capçalera "Altres"
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("باقی")
-- Obtenim l'entitat UNA sola vegada
local entity = mw.wikibase.getEntity(item_id)
local claims_p5940 = entity and entity.claims and entity.claims.P5940 or {}
-- Indexem els claims per QID per evitar bucles interns
local claims_index = {}
for _, claim in ipairs(claims_p5940) do
local snak = claim.mainsnak
local q = snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id
if q then
claims_index[q] = claim
end
end
-- Construïm la llista i la mostrem en punts
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, qid in ipairs(ids_p5940) do
local text = wdLink(qid)
local claim = claims_index[qid]
if claim and claim.qualifiers and claim.qualifiers.P3831 then
local qual = claim.qualifiers.P3831[1]
local q_val = qual.datavalue and qual.datavalue.value and qual.datavalue.value.id
if q_val then
text = text .. " (" .. wdLink(q_val) .. ")"
end
end
ul:tag("li"):wikitext(text)
end
end
---------------------------------------------------------
-- PORTAL
---------------------------------------------------------
local portal_val = args.portal or ""
if portal_val ~= "" and portal_val:lower() ~= "no" then
local portal_expandit = frame:preprocess(
"[[File:Wikipe-tan face.svg|16px||class=notpageimage|link=Portal:Anime i Manga|اؠنِمی تہٕ مانٛگا پورٹَل]] " ..
"[[Portal:Anime i Manga|اؠنِمی تہٕ مانٛگا پورٹَل]]"
)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:addClass(CSS.CELL_FULL)
:wikitext(portal_expandit)
end
---------------------------------------------------------
-- ESTILS
---------------------------------------------------------
local styles = frame:extensionTag("templatestyles", "", {src="Module: Infotaula animanga/estils.css"})
return styles .. tostring(res)
end
return p
4uz51lgmy15ka4dpseajfjz58ji2waa
148885
148883
2026-08-10T12:27:37Z
آیات محراج
11062
148885
Scribunto
text/plain
local p = {}
----------------------------------------------------------
-- REQUERIMENTS I CONSTANTS
----------------------------------------------------------
local wikidades = require("Module:Wikidades")
local getArgs = require("Module:Arguments").getArgs
local qid_labels = {
publicacio = "Q732577",
estrena = "Q204854",
emissio = "Q109507868",
distribuidor = "Q12540664",
genere = "Q483394",
revista = "Q41298",
}
----------------------------------------------------------
-- FUNCIONS BÀSIQUES
----------------------------------------------------------
local function formatarData(iso)
if not iso or iso == "" then return "" end
local clean = iso:match("^%+?(%d%d%d%d%-%d%d%-%d%d)")
if not clean then return iso end
local any, m, d = clean:match("^(%d+)%-(%d+)%-(%d+)")
if not any then return iso end
local lang = mw.language.getContentLanguage()
if m == "00" then return any end
if d == "00" then
local fake = any .. "-" .. m .. "-01"
return lang:formatDate("F Y", fake)
end
return lang:formatDate("j F Y", clean)
end
local function netejaNomFitxer(raw)
local nom = tostring(raw):gsub("[%[%]]",""):gsub("^[Ff]it[xz]er:",""):gsub("^[Ff]ile:","")
if nom:find("|") then nom = nom:match("^([^|]+)") or nom end
return nom
end
local function midaImatge(nom, max_w, max_h)
local ext = nom:lower()
if ext:match("%.svg$") or ext:match("%.gif$") then
return max_w .. "px"
else
return max_w .. "x" .. max_h .. "px"
end
end
local function obtenirImatge(item_id, args, prop, param)
prop = prop or "P18"
param = param or "imatge"
if args[param] == "NONE" then
return { nom = nil, peu = nil }
end
if args[param] and args[param] ~= "" then
return { nom = netejaNomFitxer(args[param]), peu = args["peu"] or nil }
end
local raw = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if not raw or raw == "" then
return { nom = nil, peu = nil }
end
local nom = netejaNomFitxer(raw)
local peu = args["peu"]
if not peu or peu == "" then
local raw_caption = wikidades.claim{
item = item_id, property = prop,
qualifier = "P2096", formatting = "raw", list = false
}
if raw_caption and raw_caption ~= "" then peu = raw_caption end
end
return { nom = nom, peu = peu }
end
----------------------------------------------------------
-- ICONES EXTERNES
----------------------------------------------------------
local function getIconaPropieta(prop)
local entity = mw.wikibase.getEntity(prop)
if not entity or not entity.claims then return nil end
local function millor_claim(prop_id)
local claims = entity.claims[prop_id]
if not claims then return nil end
local preferent, normal = nil, nil
for _, claim in ipairs(claims) do
local rank = claim.rank
local val = claim.mainsnak.datavalue
and claim.mainsnak.datavalue.value
local nom = val and (type(val)=="string" and val or val.text or val.id)
if nom and nom ~= "" then
if rank=="preferred" and not preferent then preferent = nom
elseif rank=="normal" and not normal then normal = normal or nom end
end
end
return preferent or normal
end
return millor_claim("P8972") or millor_claim("P2910")
end
local external_link_props = {
"P1984", "P1985", "P4983", "P4947", "P345",
}
local function generarIconesExternes(item_id)
local html = {}
for _, prop in ipairs(external_link_props) do
local val = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if val and val ~= "" then
local formatter = wikidades.claim{
item = prop, property = "P1630",
formatting = "raw", list = false
}
local label = mw.wikibase.getLabel(prop) or prop
local icon = getIconaPropieta(prop)
if formatter and formatter ~= "" and icon then
local url = formatter:gsub("%$1", val)
table.insert(html,
string.format(
'[[File:%s|middle|link=%s|class=notpageimage|%s]] ',
icon, url, label
)
)
end
end
end
return table.concat(html, "")
end
----------------------------------------------------------
-- LABELS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getLabelData(qid)
local label, lang = nil, nil
for _, l in ipairs({"ks","mul","en","ja","ko","zh"}) do
local t = mw.wikibase.getLabelByLang(qid, l)
if t and t ~= "" then
label = t
lang = l
break
end
end
if not label then
label = qid
lang = nil
end
return label, lang
end
local function wdLink(qid, label_override)
if label_override and label_override ~= "" then
return "[[d:" .. qid .. "|" .. label_override .. "]]"
end
local label, lang = getLabelData(qid)
local sitelink = wikidades.getSiteLink{qid}
local link = sitelink
and ("[[" .. sitelink .. "|" .. label .. "]]")
or ("[[d:" .. qid .. "|" .. label .. "]]")
if lang and lang ~= "ks" and lang ~= "mul" then
link = link
.. " <sup>(" .. lang .. ")</sup>"
.. " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|"
.. mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain()
.. "|link=https://www.wikidata.org/wiki/" .. qid .. "?uselang=ks]]"
end
return link
end
----------------------------------------------------------
-- CLAIMS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getClaims(item_id, prop_id, only_qids)
if not item_id then return {} end
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return {} end
local result = {}
for v in raw:gmatch("[^/·/]+") do
if only_qids then
local q = v:match("^(Q%d+)$")
if q then table.insert(result, q) end
else
if v:match("^Q%d+$") then
table.insert(result, wdLink(v))
else
table.insert(result, v)
end
end
end
return result
end
----------------------------------------------------------
-- NETEJA DE GÈNERE UNIFICADA (PUNT 1)
----------------------------------------------------------
local APO = "['’`´ʼ‛]"
local GEN_PREFIX = {
"^مانٛگا تہٕ اؠنِمی%s+ہُنٛد%s*",
"^اؠنِمی تہٕ مانٛگا%s+ہُنٛد%s*",
"^مانٛگا%s+ہُنٛد%s*",
"^اؠنِمی%s+ہُنٛد%s*",
"^مانٛگا تہٕ اؠنِمی%s+",
"^اؠنِمی تہٕ مانٛگا%s+",
"^مانٛگا%s+",
"^اؠنِمی%s+",
}
local function netejarGenere(label)
local lower = label:lower()
for _, pat in ipairs(GEN_PREFIX) do
local resta = lower:gsub(pat, "")
if resta ~= lower then
label = label:gsub(pat, "")
break
end
end
label = label:gsub("%s*%b()", "")
label = label:gsub("^d[^a-zà-üA-ZÀ-Ü]+", "")
label = label:gsub("%s+$", "")
return label:sub(1,1):upper() .. label:sub(2)
end
----------------------------------------------------------
-- TIPUS I MAPES
----------------------------------------------------------
local tipus_def = {
["شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q24862" } },
["فرنچایِز"] = { mode = "franquicia", qids = { "Q196600" } },
["اؠنِمی فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q29982285" } },
["اؠنیٖمیٹِڈ شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q17517379" } },
["موٗسیٖقی ہُنٛد ویٖڈیو"] = { mode = "audiovisual", qids = { "Q193977", "Q55960075", "Q64100970" } },
["اؠنِمی فِلِم"] = { mode = "pelicula", qids = { "Q20650540" } },
["فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q24856" } },
["ویٖڈیو گیم سیٖریٖز"] = { mode = "videojoc", qids = { "Q7058673" } },
["فِلِم"] = { mode = "pelicula", qids = { "Q229390", "Q11424" } },
["اؠنیٖمیٹِڈ فِلِم"] = { mode = "pelicula", qids = { "Q29168811", "Q202866" } },
["اؠنیٖمیٹِڈ سیٖریٖز"] = { mode = "audiovisual", qids = { "Q581714" } },
["اؠنِمی"] = { mode = "audiovisual", qids = { "Q63952888", "Q11086742", "Q100269041", "Q104640199" } },
["ریڈیو ڈرامہ"] = { mode = "audiovisual", qids = { "Q2635894" } },
["او وی اے"] = { mode = "audiovisual", qids = { "Q220898" } },
["او وی اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113687694" } },
["موٗسیٖقی"] = { mode = "pelicula", qids = { "Q58483083" } },
["وَن-شاٹ"] = { mode = "llibre", qids = { "Q933530", "Q21202185" } },
["او اے ڈی"] = { mode = "audiovisual", qids = { "oad" } },
["او اؠن اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113671041" } },
["او اؠن اے"] = { mode = "audiovisual", qids = { "Q1047299" } },
["ڈوراما"] = { mode = "audiovisual", qids = { "Q399811" } },
["خاص"] = { mode = "audiovisual", qids = { "Q1261214" } },
["لایِو اؠکشَن"] = { mode = nil, qids = { "live action" } },
["وِجُوَلی ناوَل"] = { mode = "videojoc", qids = { "Q689445" } },
["گیم"] = { mode = nil, qids = { "Q11410" } },
["ناوَل"] = { mode = "llibre", qids = { "Q747381" } },
["ناوَل سیٖریٖز"] = { mode = "llibre", qids = { "Q104213567" } },
["ویٖڈیو گیم"] = { mode = "videojoc", qids = { "Q7889" } },
["ڈوجِنشی"] = { mode = "llibre", qids = { "Q668711" } },
["مانٛگا سیٖریٖز"] = { mode = "llibre", qids = { "Q21198342" } },
["مانٛگا"] = { mode = "llibre", qids = { "Q8274" } },
["اِشتِہار"] = { mode = "audiovisual", qids = { "Q11796892", "Q854995" } },
["سی ڈی ڈرامہ"] = { mode = "audiovisual", qids = { "Q244351" } },
["مانٛگا فِلِم"] = { mode = "pelicula", qids = { "Q116790751" } },
["کَمِک"] = { mode = "llibre", qids = { "Q1004" } },
["ٹی وی سیٖریٖز"] = { mode = "audiovisual", qids = { "Q5398426", "Q21191019" } },
["وؠب سیٖریٖز"] = { mode = "audiovisual", qids = { "Q526877" } },
["وؠب ٹوٗن"] = { mode = "llibre", qids = { "Q7978994" } },
["مَنہوا سیٖریٖز"] = { mode = "llibre", qids = { "Q74262765" } },
["مَنہوا"] = { mode = "llibre", qids = { "Q754669" } },
["لایِو اؠکشَن فِلِم"] = { mode = "pelicula", qids = { "pel·lícula live action" } },
["لایِٹ ناوَل"] = { mode = "llibre", qids = {} },
}
local tipus_map = {}
local tipus_a_mode = {}
for tipus, def in pairs(tipus_def) do
tipus_a_mode[tipus] = def.mode
for _, qid in ipairs(def.qids) do
tipus_map[qid] = tipus
end
end
local link_desti = {
["مانٛگا سیٖریٖز"] = "مانٛگا",
["فرنچایِز"] = "میٖڈیا فرنچایِز",
}
local function majusculaInicial(s)
if not s or s == "" then return s end
return mw.ustring.upper(mw.ustring.sub(s, 1, 1)) .. mw.ustring.sub(s, 2)
end
local function etiquetaProp(pid)
local label = mw.wikibase.getLabel(pid)
return majusculaInicial(label or "")
end
local function obtenirTipusText(tipus_param, item_id)
local val = (tipus_param and tipus_param ~= "") and string.lower(tipus_param) or ""
local map = tipus_map
if val == "" and item_id then
local ids = getClaims(item_id, "P31", true)
if #ids == 0 then return "باقی" end
local primer = ids[1]
for _, id in ipairs(ids) do
if map[id] then
val = id
break
end
end
if val == "" then val = primer end
end
local function linkSiExisteix(t, desti)
local target = desti or t
local title = mw.title.new(target)
if title and title.exists then return "[[" .. target .. "|" .. t .. "]]" end
return t
end
if map[val] then
return linkSiExisteix(map[val], link_desti[map[val]])
end
local label, _ = getLabelData(val)
return label and majusculaInicial(label) or "باقی"
end
local function netejarWikilink(text)
return text
:gsub("%[%[[^|]+|([^%]]+)%]%]", "%1")
:gsub("%[%[([^%]]+)%]%]", "%1")
end
----------------------------------------------------------
-- UTILITATS DIVERSES
----------------------------------------------------------
local function linkEditicon(item_id)
return "<span class='ita-edit-icon' style='margin-left:4px;'>[[File:OOjs UI icon edit-ltr-progressive.svg|middle|class=notpageimage|link=d:"
.. item_id .. "|وِکیٖڈیٹاہَس پؠٹھ کٔرِو اؠڈِٹ]]</span>"
end
local function es_no_llati(s)
local te_no_llati = mw.ustring.find(s, "[^A-Za-zÀ-ÖØ-öø-ÿĀ-ſ0-9%s%p]") ~= nil
if te_no_llati then
return "font-weight:normal;"
else
return "font-style:italic;"
end
end
----------------------------------------------------------
-- TRANSLITERACIÓ (qualificadors de P1476)
----------------------------------------------------------
local PROPS_TRANSLIT = {
"P2440",
"P2125",
"P1942",
"P2001",
"P5139",
"P1721",
}
local function obtenirTransliteracio(item_id)
local entity = mw.wikibase.getEntity(item_id)
if not entity or not entity.claims or not entity.claims.P1476 then return nil end
for _, claim in ipairs(entity.claims.P1476) do
if claim.qualifiers then
for _, pid in ipairs(PROPS_TRANSLIT) do
local quals = claim.qualifiers[pid]
if quals then
for _, q in ipairs(quals) do
local val = q.datavalue and q.datavalue.value
if val then
local t = type(val) == "string" and val or val.text
if t and t ~= "" then return t end
end
end
end
end
end
end
return nil
end
local function obtenirTitolOriginal(item_id, titol_catala, es_capcalera)
if not item_id then return "" end
local text = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "table",
colformat0 = "text",
list = false,
rowformat = "$0",
editicon = false,
}
if not text or text == "" or text == titol_catala then
return ""
end
local lang = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "$language",
list = false,
editicon = false,
}
if lang == "" then lang = nil end
local estil_text = es_no_llati(text)
local prefix_lang = ""
if es_capcalera and lang then
prefix_lang = "<sup><span style='font-weight:normal; font-style:normal;'>(" .. lang .. ")</span></sup> "
end
local tooltip_html = ""
if estil_text == "font-weight:normal;" then
local translit = obtenirTransliteracio(item_id)
if translit then
tooltip_html =
'<span class="ita-translit-wrap" tabindex="0">' ..
'<sup class="ita-translit-icon">ⓘ</sup>' ..
'<span class="ita-translit-tip">' .. translit:gsub("'", "'") .. '</span>' ..
'</span>'
end
end
return "<span style='font-size:90%; display:block;'>"
.. prefix_lang
.. "<span style='" .. estil_text .. "'>" .. text .. "</span>"
.. tooltip_html
.. "</span>"
end
local function obtenirDurada(item_id)
local raw = wikidades.claim{
item = item_id,
property = "P2047",
formatting = "raw",
list = false
}
if not raw or raw == "" then return nil end
local amount =
raw:match('"amount"%s*:%s*"(%+?[%d%.%-]+)"') or
raw:match('^%+?(%d+)$') or
raw:match('(%d+)[^%d]*$')
if not amount then return nil end
amount = tonumber(amount)
if not amount then return nil end
local unit =
raw:match('"unit"%s*:%s*"http://www%.wikidata%.org/entity/(Q%d+)"') or
raw:match('"unit"%s*:%s*"(Q%d+)"')
if not unit then
return amount .. " مِنَٹ"
end
local unit_map = {
Q7727 = "مِنَٹ",
Q11574 = "سؠکَنڈ",
Q23387 = "گٲنٛٹہٕ",
Q25235 = "دۄہ"
}
local u = unit_map[unit]
if not u then return amount end
if u == "سؠکَنڈ" then
amount = math.floor(amount / 60)
u = "مِنَٹ"
elseif u == "گٲنٛٹہٕ" then
amount = amount * 60
u = "مِنَٹ"
elseif u == "دۄہ" then
amount = amount * 24 * 60
u = "مِنَٹ"
end
return amount .. " " .. u
end
local function obtenirDataOrdenacio(item_id)
if not item_id then return "9999-99-99" end
local function primera(prop_id)
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return nil end
local any, mes, dia = raw:match("%+(%d%d%d%d)%-(%d%d)%-(%d%d)T")
if not any then return nil end
if mes == "00" then mes = "01" end
if dia == "00" then dia = "01" end
return string.format("%s-%s-%s", any, mes, dia)
end
return primera("P580")
or primera("P577")
or primera("P571")
or "9999-99-99"
end
local function getListSitelinkFromProp(item_id, prop_id)
local qid = getClaims(item_id, prop_id, true)[1]
if not qid then return "" end
return wikidades.getSiteLink{qid} or ("d:" .. qid)
end
----------------------------------------------------------
-- EDITORIALS
----------------------------------------------------------
local function obtenirEditorialsWikibase(qid)
local entity = mw.wikibase.getEntity(qid)
if not entity or not entity.claims or not entity.claims.P123 or #entity.claims.P123 == 0 then
return nil
end
local preferent
local primer_trobat = nil
local catalanes = {}
for _, claim in ipairs(entity.claims.P123) do
local ed_qid = claim.mainsnak.datavalue and claim.mainsnak.datavalue.value.id
if ed_qid then
local label = wdLink(ed_qid)
local lang_label = nil
local es_cat = false
if claim.qualifiers and claim.qualifiers.P407 then
for _, qv in ipairs(claim.qualifiers.P407) do
if qv.datavalue.value.id == "Q33552" then
es_cat = true
break
end
end
if es_cat then
lang_label, _ = getLabelData("Q33552")
else
local qid_lang = claim.qualifiers.P407[1].datavalue.value.id
lang_label, _ = getLabelData(qid_lang)
end
end
local text = label
if lang_label then
text = text .. " (" .. lang_label .. ")"
end
if es_cat then
table.insert(catalanes, text)
else
if not primer_trobat then primer_trobat = text end
if claim.rank == "preferred" and not preferent then
preferent = text
end
end
end
end
preferent = preferent or primer_trobat
if not preferent and #catalanes == 0 then return nil end
local resultat = {}
if preferent then table.insert(resultat, preferent) end
for _, c in ipairs(catalanes) do
if c ~= preferent then table.insert(resultat, c) end
end
return table.concat(resultat, "<br />")
end
----------------------------------------------------------
-- FILTRAR PER P31
----------------------------------------------------------
local function filtrarPerP31(llista, qid_tipus)
local coincideixen, resta = {}, {}
for _, q in ipairs(llista) do
local trobat = false
for _, classe in ipairs(getClaims(q, "P31", true)) do
if classe == qid_tipus then
trobat = true
break
end
end
table.insert(trobat and coincideixen or resta, q)
end
return coincideixen, resta
end
----------------------------------------------------------
-- CSS
----------------------------------------------------------
local CSS = {
HEADER = "ita-header",
SUBHEADER = "ita-subheader",
TIPUS = "ita-tipus",
CELL_L = "ita-cell-l",
CELL_R = "ita-cell-r",
ICON_CELL = "ita-icon-cell",
ICON_CELL_R = "ita-icon-cell-r",
CELL_FULL = "ita-cell-full",
}
local function filaEtiquetaValor(contenidor, label, valor, collapsible)
local fila = contenidor:tag("tr")
if collapsible then
fila:addClass("mw-collapsible-content")
end
fila:tag("td"):addClass(CSS.CELL_L):wikitext(label)
fila:tag("td"):addClass(CSS.CELL_R):wikitext(valor)
return fila
end
----------------------------------------------------------
-- GENERAR NUCLI (VERSIÓ COMPLETA, OPCIÓ B)
----------------------------------------------------------
local function generarNucli(item_id, args, es_grup, id_pare, te_genere_pare)
if not item_id or not mw.wikibase.isValidEntityId(item_id) then
return ""
end
local html = mw.html.create()
------------------------------------------------------
-- NOM BASE + IDIOMA
------------------------------------------------------
local nom_base, nom_base_lang = getLabelData(item_id)
local ret_lang_subheader = ""
local ret_icon_subheader = ""
if nom_base_lang and nom_base_lang ~= "ks" and nom_base_lang ~= "mul" then
ret_lang_subheader =
" <span style='font-weight:normal'><sup>(" .. nom_base_lang .. ")</sup></span>"
ret_icon_subheader =
" [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|" ..
mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain() ..
"|link=https://www.wikidata.org/wiki/" .. item_id .. "?uselang=ks]]"
end
------------------------------------------------------
-- TIPUS
------------------------------------------------------
local tipus_text = obtenirTipusText(args.tipus, item_id)
local tipus_net = netejarWikilink(tipus_text)
local mode = tipus_a_mode[tipus_net] or ""
------------------------------------------------------
-- SUBHEADER (si és grup)
------------------------------------------------------
if es_grup then
local estil_sub = es_no_llati(nom_base)
local sitelink = wikidades.getSiteLink{item_id}
local dest_link = sitelink
and ("[[" .. sitelink .. "|" .. nom_base .. "]]")
or ("[[d:" .. item_id .. "|" .. nom_base .. "]]")
local text =
"<span style='" .. estil_sub .. "'>" .. dest_link .. "</span>" ..
ret_lang_subheader ..
ret_icon_subheader ..
obtenirTitolOriginal(item_id, nom_base, false)
local fila_sh = html:tag("tr")
fila_sh:addClass("mw-collapsible-content")
fila_sh:tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(text)
end
------------------------------------------------------
-- FILA TIPUS + ICONES (VERSIÓ SENSE TAULA INTERNA)
------------------------------------------------------
local fila_tipus = html:tag("tr")
fila_tipus:addClass("mw-collapsible-content ita-row-tipus")
-- Cel·la esquerra (tipus)
fila_tipus:tag("td")
:addClass(CSS.TIPUS)
:wikitext(tipus_text)
local td_icones = fila_tipus:tag("td")
td_icones:addClass(CSS.CELL_R .. " ita-icons-flex")
local wrapper = td_icones:tag("div")
wrapper:addClass("ita-icons-wrapper")
local td_esq = wrapper:tag("div")
td_esq:addClass("ita-icons-left " .. CSS.ICON_CELL)
local td_dre = wrapper:tag("div")
td_dre:addClass("ita-icons-right " .. CSS.ICON_CELL_R)
------------------------------------------------------
-- ETIQUETA PERÍODE (funció interna)
------------------------------------------------------
local function _obtenirEtiquetaPeriode_local(qid, tipus_str)
local t = mw.ustring.lower(tipus_str or "")
local m = tipus_a_mode[majusculaInicial(t)] or ""
if m == "franquicia" then
return etiquetaProp("P2348")
end
if m == "llibre" or m == "videojoc" then
return etiquetaProp(qid_labels.publicacio)
end
if m == "pelicula" then
local te_p577 = wikidades.claim{item=qid, property="P577", list=false}
local te_p582 = wikidades.claim{item=qid, property="P582", list=false}
if te_p577 and te_p577 ~= "" then
return etiquetaProp(qid_labels.estrena)
elseif te_p582 and te_p582 ~= "" then
return etiquetaProp(qid_labels.emissio)
else
return etiquetaProp(qid_labels.estrena)
end
end
return etiquetaProp(qid_labels.emissio)
end
------------------------------------------------------
-- ICONA DURADA (P2047)
------------------------------------------------------
local text_durada = obtenirDurada(item_id)
if text_durada then
td_esq:wikitext("[[File:Hourglass icon.png|middle|class=notpageimage|link=|وَقٕف]] " .. text_durada .. " ")
end
------------------------------------------------------
-- ICONA DE LLISTA (P31)
------------------------------------------------------
local p31_qid = getClaims(item_id, "P31", true)[1] or ""
if p31_qid == "Q24856" or p31_qid == "Q7058673" or p31_qid == "Q29982285" then
local link = getListSitelinkFromProp(item_id, "P2354")
if link == "" then
link = wikidades.getSiteLink{item_id} or ("d:" .. item_id)
end
td_esq:wikitext("[[File:Font Awesome 5 regular list-alt.svg|middle|class=notpageimage|link=" .. link .. "]] ")
end
------------------------------------------------------
-- ICONA VOLUMS / PEL·LÍCULES (P2635)
------------------------------------------------------
local raw_volums = wikidades.claim{
item = item_id,
property = "P2635",
formatting = "raw",
list = false
}
if raw_volums and raw_volums ~= "" then
local quant = tostring(raw_volums):gsub("%+","")
if p31_qid == "Q29982285" then
td_esq:wikitext(
"[[File:Tabler-icons_movie.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|فِلِمہٕ]] " .. quant .. " فِلِمہٕ "
)
else
td_esq:wikitext(
"[[File:OpenMoji-black 1F4DA.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|جِلٕد]] " .. quant .. " جِلٕد "
)
end
end
------------------------------------------------------
-- ICONA EPISODIS (P1113)
------------------------------------------------------
local text_ep = ""
local raw_ep = wikidades.claim{
item = item_id,
property = "P1113",
formatting = "raw",
list = false
}
if raw_ep and raw_ep ~= "" then
text_ep = tostring(raw_ep):gsub("%+","")
end
if text_ep ~= "" then
local link_ep = getListSitelinkFromProp(item_id,"P1811")
if link_ep == "" then
link_ep = getListSitelinkFromProp(item_id,"P2354")
end
td_esq:wikitext(
"<span style='display:inline-block;width:1px;'></span>[[File:Noun TV Episodes 3303322.svg|middle|class=notpageimage|link=" ..
link_ep .. "|قِسٕط]] " .. text_ep .. " "
)
end
------------------------------------------------------
-- ICONES EXTERNES
------------------------------------------------------
td_dre:wikitext(generarIconesExternes(item_id) .. linkEditicon(item_id))
------------------------------------------------------
-- PROPIETATS SECUNDÀRIES (FILES NORMALS)
------------------------------------------------------
local propietats = {
"P144","P4970","P50","P110","P178","P58","P287","P86","P57","P162",
"P136","P400","P272","P275","P449","P123","P2360","P1433"
}
for _, pid in ipairs(propietats) do
local admetre = true
if pid == "P144" then
local qid_p144 = getClaims(item_id, "P144", true)[1]
if qid_p144 and (qid_p144 == item_id or qid_p144 == id_pare) then
admetre = false
end
end
if pid == "P136" and es_grup and te_genere_pare then
admetre = false
end
if admetre then
local label = etiquetaProp(pid)
if pid == "P123" and (mode == "videojoc" or mode == "audiovisual") then
label = etiquetaProp(qid_labels.distribuidor)
end
if pid == "P272" and (mode == "pelicula" or mode == "audiovisual") then
label = "سٕٹوٗڈیو"
end
if pid == "P2360" then
label = "قٕسٕم"
end
if pid == "P136" then
label = etiquetaProp(qid_labels.genere)
end
if pid == "P1433" and (tipus_net == "مانٛگا" or tipus_net == "مانٛگا سیٖریٖز" or tipus_net == "وَن-شاٹ") then
label = etiquetaProp(qid_labels.revista)
end
if pid == "P449" and mode == "audiovisual" then
label = "چَینَل"
end
--------------------------------------------------
-- GÈNERE (neteja unificada)
--------------------------------------------------
if pid == "P136" then
local valors = {}
for i, qid in ipairs(getClaims(item_id, "P136", true)) do
local label_qid = getLabelData(qid)
local text_net = netejarGenere(label_qid)
if i > 1 then
text_net = text_net:sub(1,1):lower() .. text_net:sub(2)
end
local sitelink = wikidades.getSiteLink{qid}
if sitelink and sitelink ~= "" then
table.insert(valors, "[[" .. sitelink .. "|" .. text_net .. "]]")
else
table.insert(valors, "[[d:" .. qid .. "|" .. text_net .. "]]")
end
end
if #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
--------------------------------------------------
-- EDITORIALS
--------------------------------------------------
elseif pid == "P123" then
local valors = obtenirEditorialsWikibase(item_id)
if valors then
filaEtiquetaValor(html, label, valors, true)
end
--------------------------------------------------
-- ALTRES PROP.
--------------------------------------------------
else
local valors = getClaims(item_id, pid, false)
if valors and #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
end
end
end
------------------------------------------------------
-- DATES (P580 / P577 / P582)
------------------------------------------------------
local data_inici_p580 = getClaims(item_id, "P580", false)[1]
if data_inici_p580 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local data_fi = getClaims(item_id, "P582", false)[1]
local text_data = formatarData(data_inici_p580)
if data_fi then
text_data = text_data .. " – " .. formatarData(data_fi)
end
filaEtiquetaValor(html, label_data, text_data, true)
else
--------------------------------------------------
-- CAS AMB P577 (pot tenir múltiples dates)
--------------------------------------------------
local entity = mw.wikibase.getEntity(item_id)
local claims_p577 = entity and entity.claims and entity.claims.P577 or {}
if #claims_p577 > 0 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local linies = {}
for _, claim in ipairs(claims_p577) do
local dv = claim.mainsnak and claim.mainsnak.datavalue
if dv then
local iso = dv.value and dv.value.time or ""
local data_fmt = formatarData(iso)
local quals = {}
if claim.qualifiers then
if claim.qualifiers.P291 then
for _, q in ipairs(claim.qualifiers.P291) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
if claim.qualifiers.P400 then
for _, q in ipairs(claim.qualifiers.P400) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
end
local linia = data_fmt
if #quals > 0 then
linia = linia .. " (" .. table.concat(quals, ", ") .. ")"
end
table.insert(linies, linia)
end
end
if #linies > 0 then
if #linies == 1 then
filaEtiquetaValor(html, label_data, linies[1], true)
else
local ocultes = {}
for i = 2, #linies do
table.insert(ocultes, linies[i])
end
local text_final =
'<table class="mw-collapsible mw-collapsed" style="width:100%; border-spacing:0;">' ..
'<tr><th colspan="2" style="text-align:left; font-weight:normal;">' .. linies[1] .. '</th></tr>' ..
'<tr><td>' .. table.concat(ocultes, "<br>") .. '</td></tr>' ..
'</table>'
filaEtiquetaValor(html, label_data, text_final, true)
end
end
end
end
------------------------------------------------------
-- RETORNAR EL RESULTAT
------------------------------------------------------
return tostring(html)
end
----------------------------------------------------------
-- p.infotaula
----------------------------------------------------------
local LIMIT_VISIBLE = 4
function p.infotaula(frame)
local args = getArgs(frame, {wrappers = "فرما:اِنفوباکس اؠنِمی مانٛگا"})
local item_id = (args.item and args.item ~= "") and args.item
or mw.wikibase.getEntityIdForCurrentPage()
if not item_id then
return "<span class='error'>غَلطی: وِکیٖڈیٹاہَس سٟتؠ مُنسَلِق کانٛہہ تہِ عُنصَر آو نہٕ لَبنہٕ۔</span>"
end
---------------------------------------------------------
-- SELECCIONATS
---------------------------------------------------------
local seleccionats_raw = args.seleccionats or ""
local seleccionats = {}
if seleccionats_raw ~= "" then
for qid in seleccionats_raw:gmatch("Q%d+") do
seleccionats[qid] = true
end
end
---------------------------------------------------------
-- DELEGACIÓ SI NO ÉS GRUP / FRANQUÍCIA
---------------------------------------------------------
local parts = getClaims(item_id, "P527", true)
local derivades = getClaims(item_id, "P4969", true)
if #parts == 0 and #derivades == 0 then
local tipus = netejarWikilink(obtenirTipusText(args.tipus, item_id))
local mode = tipus_a_mode[tipus]
if mode == "pelicula" then
return frame:expandTemplate{
title = "فِلِم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "llibre" then
return frame:expandTemplate{
title = "کِتاب اِنفوباکس",
args = { item = item_id, titol = args.nom, manga = "y" }
}
elseif mode == "videojoc" then
return frame:expandTemplate{
title = "ویٖڈیو گیم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "audiovisual" then
return frame:expandTemplate{
title = "آڈیو وِجُوَل پروگرام اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
end
end
---------------------------------------------------------
-- MODE FRANQUÍCIA
---------------------------------------------------------
local res = mw.html.create("table")
:addClass("infobox")
:addClass("infotaula-animanga")
local titol = args.nom
or getLabelData(item_id)
or mw.title.getCurrentTitle().text
res:tag("caption")
:addClass(CSS.HEADER)
:wikitext(
'<div style="display:flex; align-items:center;">' ..
'<div style="flex:0 0 30px; min-width:30px;">' ..
'<span style="position:relative; left:2px;">[[File:Anime manga japanese characters icon.svg|30px|اِنفوباکس اؠنِمی مانٛگا|class=skin-invert notpageimage]]</span>' ..
'</div>' ..
'<div style="flex:1 1 auto;">' ..
'<span style="font-weight:bold; font-style:italic;">' .. titol .. '</span>' ..
obtenirTitolOriginal(item_id, titol, true) ..
'</div>' ..
'<div style="flex:0 0 30px; min-width:30px;"></div>' ..
'</div>'
)
---------------------------------------------------------
-- IMATGE PRINCIPAL (amb fallback a logo P154)
---------------------------------------------------------
local img = obtenirImatge(item_id, args, "P18", "imatge")
local logo = obtenirImatge(item_id, args, "P154", "logo")
local mostrar_logo_apart = true
if img.nom then
local mida = midaImatge(img.nom, 250, 350)
local td_img = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
td_img:wikitext("[[File:" .. img.nom .. "|" .. mida .. "|center]]")
if img.peu and img.peu ~= "" then
td_img:tag("span")
:addClass("ita-img-caption")
:wikitext(img.peu)
end
elseif logo.nom then
-- Fallback: no hi ha P18, però sí P154 → l'usem com a imatge principal
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
mostrar_logo_apart = false
else
res:wikitext("[[زٲژ:مانٛگانِمی مَضموٗن یِمَن تَصویٖرٕچ ضروٗرَتھ چھِ]]")
end
---------------------------------------------------------
-- LOGO (P154) — només si NO s'ha usat ja com a fallback
---------------------------------------------------------
if logo.nom and mostrar_logo_apart then
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
end
---------------------------------------------------------
-- NUCLI PRINCIPAL DEL PARE
---------------------------------------------------------
local pare_te_genere = (#getClaims(item_id, "P136", true) > 0)
res:wikitext(generarNucli(item_id, args, false, item_id, false))
---------------------------------------------------------
-- FORMAT PER (P527)
---------------------------------------------------------
local elements_valids = {}
local exclos_p527 = {
Q125632018=true, Q3464665=true,
Q102364578=true, Q21191270=true
}
for _, tid in ipairs(parts) do
if next(seleccionats) ~= nil and not seleccionats[tid] then
-- exclòs per selecció
else
local exclos = false
for _, p31id in ipairs(getClaims(tid, "P31", true)) do
if exclos_p527[p31id] then
exclos = true
break
end
end
if not exclos then
table.insert(elements_valids, tid)
end
end
end
table.sort(elements_valids, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (Q2620972)
---------------------------------------------------------
local arcs_narratius
arcs_narratius, elements_valids = filtrarPerP31(elements_valids, "Q2620972")
---------------------------------------------------------
-- ARTICLES DE LLISTA (Q13406463) dins P527
---------------------------------------------------------
local llistes_p527
llistes_p527, elements_valids = filtrarPerP31(elements_valids, "Q13406463")
---------------------------------------------------------
-- OBRA DERIVADA (P4969)
---------------------------------------------------------
local ids_der_raw = derivades
local ids_der_filtrats = {}
for _, tid in ipairs(ids_der_raw) do
if next(seleccionats) == nil or seleccionats[tid] then
table.insert(ids_der_filtrats, tid)
end
end
local llistes_der, ids_der = filtrarPerP31(ids_der_filtrats, "Q13406463")
table.sort(ids_der, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (render)
---------------------------------------------------------
if #arcs_narratius > 0 then
res:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(getLabelData("Q2620972")) .. linkEditicon(item_id))
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, q in ipairs(arcs_narratius) do
local nom = getLabelData(q)
ul:tag("li"):wikitext(wdLink(q, nom))
end
end
---------------------------------------------------------
-- FUNCIONS AUXILIARS PER LLISTES
---------------------------------------------------------
local function mostrarLlistes(llistes, contenidor)
for _, q_llista in ipairs(llistes) do
local nom_llista = getLabelData(q_llista)
contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(nom_llista) .. " " .. linkEditicon(q_llista))
local membres = getClaims(q_llista, "P527", true)
if #membres > 0 then
if #membres > 5 then
-- Llista desplegable
local taula_col = contenidor:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(tostring(#membres) .. " عَناصِر")
local ul_membres = taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
else
local ul_membres = contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
end
end
end
end
---------------------------------------------------------
-- MOSTRAR FORMAT PER + OBRA DERIVADA (amb límit)
---------------------------------------------------------
local total = #elements_valids + #ids_der
if total > LIMIT_VISIBLE then
local visibles_p527 = math.min(#elements_valids, LIMIT_VISIBLE)
local visibles_der = math.min(#ids_der, math.max(0, LIMIT_VISIBLE - visibles_p527))
-----------------------------------------------------
-- PRIMERA PART: ELEMENTS VISIBLES NORMALS
-----------------------------------------------------
if visibles_p527 > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for i = 1, visibles_p527 do
res:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if visibles_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
for i = 1, visibles_der do
res:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
---------------------------------------------------------
-- BLOC PLEGABLE "MÉS" (contenidor taula necessari)
---------------------------------------------------------
local taula_col = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
-- capçalera "Més"
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext('<span class="ita-mes-text">مزیٖد</span>')
local resta_p527 = visibles_p527 < #elements_valids
local resta_der = visibles_der < #ids_der
local ambdues = resta_p527 and resta_der
---------------------------------------------------------
-- CONTINGUT PLEGABLE: P527
---------------------------------------------------------
if resta_p527 then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
end
for i = visibles_p527 + 1, #elements_valids do
taula_col:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
---------------------------------------------------------
-- CONTINGUT PLEGABLE: OBRES DERIVADES
---------------------------------------------------------
if resta_der then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
end
for i = visibles_der + 1, #ids_der do
taula_col:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
else
-----------------------------------------------------
-- CAS SENSE PLEGABLE
-----------------------------------------------------
if #elements_valids > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for _, tid in ipairs(elements_valids) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if #ids_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
for _, tid in ipairs(ids_der) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
end
---------------------------------------------------------
-- ALTRES (P5940)
---------------------------------------------------------
local ids_p5940 = getClaims(item_id, "P5940", true)
if #ids_p5940 > 0 then
-- Capçalera "Altres"
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("باقی")
-- Obtenim l'entitat UNA sola vegada
local entity = mw.wikibase.getEntity(item_id)
local claims_p5940 = entity and entity.claims and entity.claims.P5940 or {}
-- Indexem els claims per QID per evitar bucles interns
local claims_index = {}
for _, claim in ipairs(claims_p5940) do
local snak = claim.mainsnak
local q = snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id
if q then
claims_index[q] = claim
end
end
-- Construïm la llista i la mostrem en punts
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, qid in ipairs(ids_p5940) do
local text = wdLink(qid)
local claim = claims_index[qid]
if claim and claim.qualifiers and claim.qualifiers.P3831 then
local qual = claim.qualifiers.P3831[1]
local q_val = qual.datavalue and qual.datavalue.value and qual.datavalue.value.id
if q_val then
text = text .. " (" .. wdLink(q_val) .. ")"
end
end
ul:tag("li"):wikitext(text)
end
end
---------------------------------------------------------
-- PORTAL
---------------------------------------------------------
local portal_val = args.portal or ""
if portal_val ~= "" and portal_val:lower() ~= "no" then
local portal_expandit = frame:preprocess(
"[[File:Wikipe-tan face.svg|16px||class=notpageimage|link=Portal:Anime i Manga|اؠنِمی تہٕ مانٛگا پورٹَل]] " ..
"[[Portal:Anime i Manga|اؠنِمی تہٕ مانٛگا پورٹَل]]"
)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:addClass(CSS.CELL_FULL)
:wikitext(portal_expandit)
end
---------------------------------------------------------
-- ESTILS
---------------------------------------------------------
local styles = frame:extensionTag("templatestyles", "", {src="Module: Infotaula animanga/estils.css"})
return styles .. tostring(res)
end
return p
97v6l2s627hojzo2d1ee1fzuv6wsw8o
148886
148885
2026-08-10T12:31:18Z
آیات محراج
11062
148886
Scribunto
text/plain
local p = {}
----------------------------------------------------------
-- REQUERIMENTS I CONSTANTS
----------------------------------------------------------
local wikidades = require("Module:Wikidades")
local getArgs = require("Module:Arguments").getArgs
local qid_labels = {
publicacio = "Q732577",
estrena = "Q204854",
emissio = "Q109507868",
distribuidor = "Q12540664",
genere = "Q483394",
revista = "Q41298",
}
----------------------------------------------------------
-- FUNCIONS BÀSIQUES
----------------------------------------------------------
local function formatarData(iso)
if not iso or iso == "" then return "" end
local clean = iso:match("^%+?(%d%d%d%d%-%d%d%-%d%d)")
if not clean then return iso end
local any, m, d = clean:match("^(%d+)%-(%d+)%-(%d+)")
if not any then return iso end
local lang = mw.language.getContentLanguage()
if m == "00" then return any end
if d == "00" then
local fake = any .. "-" .. m .. "-01"
return lang:formatDate("F Y", fake)
end
return lang:formatDate("j F Y", clean)
end
local function netejaNomFitxer(raw)
local nom = tostring(raw):gsub("[%[%]]",""):gsub("^[Ff]it[xz]er:",""):gsub("^[Ff]ile:","")
if nom:find("|") then nom = nom:match("^([^|]+)") or nom end
return nom
end
local function midaImatge(nom, max_w, max_h)
local ext = nom:lower()
if ext:match("%.svg$") or ext:match("%.gif$") then
return max_w .. "px"
else
return max_w .. "x" .. max_h .. "px"
end
end
local function obtenirImatge(item_id, args, prop, param)
prop = prop or "P18"
param = param or "imatge"
if args[param] == "NONE" then
return { nom = nil, peu = nil }
end
if args[param] and args[param] ~= "" then
return { nom = netejaNomFitxer(args[param]), peu = args["peu"] or nil }
end
local raw = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if not raw or raw == "" then
return { nom = nil, peu = nil }
end
local nom = netejaNomFitxer(raw)
local peu = args["peu"]
if not peu or peu == "" then
local raw_caption = wikidades.claim{
item = item_id, property = prop,
qualifier = "P2096", formatting = "raw", list = false
}
if raw_caption and raw_caption ~= "" then peu = raw_caption end
end
return { nom = nom, peu = peu }
end
----------------------------------------------------------
-- ICONES EXTERNES
----------------------------------------------------------
local function getIconaPropieta(prop)
local entity = mw.wikibase.getEntity(prop)
if not entity or not entity.claims then return nil end
local function millor_claim(prop_id)
local claims = entity.claims[prop_id]
if not claims then return nil end
local preferent, normal = nil, nil
for _, claim in ipairs(claims) do
local rank = claim.rank
local val = claim.mainsnak.datavalue
and claim.mainsnak.datavalue.value
local nom = val and (type(val)=="string" and val or val.text or val.id)
if nom and nom ~= "" then
if rank=="preferred" and not preferent then preferent = nom
elseif rank=="normal" and not normal then normal = normal or nom end
end
end
return preferent or normal
end
return millor_claim("P8972") or millor_claim("P2910")
end
local external_link_props = {
"P1984", "P1985", "P4983", "P4947", "P345",
}
local function generarIconesExternes(item_id)
local html = {}
for _, prop in ipairs(external_link_props) do
local val = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if val and val ~= "" then
local formatter = wikidades.claim{
item = prop, property = "P1630",
formatting = "raw", list = false
}
local label = mw.wikibase.getLabel(prop) or prop
local icon = getIconaPropieta(prop)
if formatter and formatter ~= "" and icon then
local url = formatter:gsub("%$1", val)
table.insert(html,
string.format(
'[[File:%s|middle|link=%s|class=notpageimage|%s]] ',
icon, url, label
)
)
end
end
end
return table.concat(html, "")
end
----------------------------------------------------------
-- LABELS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getLabelData(qid)
local label, lang = nil, nil
for _, l in ipairs({"ks","mul","en","ja","ko","zh"}) do
local t = mw.wikibase.getLabelByLang(qid, l)
if t and t ~= "" then
label = t
lang = l
break
end
end
if not label then
label = qid
lang = nil
end
return label, lang
end
local function wdLink(qid, label_override)
if label_override and label_override ~= "" then
return "[[d:" .. qid .. "|" .. label_override .. "]]"
end
local label, lang = getLabelData(qid)
local sitelink = wikidades.getSiteLink{qid}
local link = sitelink
and ("[[" .. sitelink .. "|" .. label .. "]]")
or ("[[d:" .. qid .. "|" .. label .. "]]")
if lang and lang ~= "ks" and lang ~= "mul" then
link = link
.. " <sup>(" .. lang .. ")</sup>"
.. " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|"
.. mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain()
.. "|link=https://www.wikidata.org/wiki/" .. qid .. "?uselang=ks]]"
end
return link
end
----------------------------------------------------------
-- CLAIMS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getClaims(item_id, prop_id, only_qids)
if not item_id then return {} end
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return {} end
local result = {}
for v in raw:gmatch("[^/·/]+") do
if only_qids then
local q = v:match("^(Q%d+)$")
if q then table.insert(result, q) end
else
if v:match("^Q%d+$") then
table.insert(result, wdLink(v))
else
table.insert(result, v)
end
end
end
return result
end
----------------------------------------------------------
-- NETEJA DE GÈNERE UNIFICADA (PUNT 1)
----------------------------------------------------------
local APO = "['’`´ʼ‛]"
local GEN_PREFIX = {
"^مانٛگا تہٕ اؠنِمے%s+ہُنٛد%s*",
"^اؠنِمے تہٕ مانٛگا%s+ہُنٛد%s*",
"^مانٛگا%s+ہُنٛد%s*",
"^اؠنِمے%s+ہُنٛد%s*",
"^مانٛگا تہٕ اؠنِمے%s+",
"^اؠنِمے تہٕ مانٛگا%s+",
"^مانٛگا%s+",
"^اؠنِمے%s+",
}
local function netejarGenere(label)
local lower = label:lower()
for _, pat in ipairs(GEN_PREFIX) do
local resta = lower:gsub(pat, "")
if resta ~= lower then
label = label:gsub(pat, "")
break
end
end
label = label:gsub("%s*%b()", "")
label = label:gsub("^d[^a-zà-üA-ZÀ-Ü]+", "")
label = label:gsub("%s+$", "")
return label:sub(1,1):upper() .. label:sub(2)
end
----------------------------------------------------------
-- TIPUS I MAPES
----------------------------------------------------------
local tipus_def = {
["شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q24862" } },
["فرنچایِز"] = { mode = "franquicia", qids = { "Q196600" } },
["اؠنِمے فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q29982285" } },
["اؠنیٖمیٹِڈ شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q17517379" } },
["موٗسیٖقی ہُنٛد ویٖڈیو"] = { mode = "audiovisual", qids = { "Q193977", "Q55960075", "Q64100970" } },
["اؠنِمے فِلِم"] = { mode = "pelicula", qids = { "Q20650540" } },
["فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q24856" } },
["ویٖڈیو گیم سیٖریٖز"] = { mode = "videojoc", qids = { "Q7058673" } },
["فِلِم"] = { mode = "pelicula", qids = { "Q229390", "Q11424" } },
["اؠنیٖمیٹِڈ فِلِم"] = { mode = "pelicula", qids = { "Q29168811", "Q202866" } },
["اؠنیٖمیٹِڈ سیٖریٖز"] = { mode = "audiovisual", qids = { "Q581714" } },
["اؠنِمے"] = { mode = "audiovisual", qids = { "Q63952888", "Q11086742", "Q100269041", "Q104640199" } },
["ریڈیو ڈرامہ"] = { mode = "audiovisual", qids = { "Q2635894" } },
["او وی اے"] = { mode = "audiovisual", qids = { "Q220898" } },
["او وی اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113687694" } },
["موٗسیٖقی"] = { mode = "pelicula", qids = { "Q58483083" } },
["وَن-شاٹ"] = { mode = "llibre", qids = { "Q933530", "Q21202185" } },
["او اے ڈی"] = { mode = "audiovisual", qids = { "oad" } },
["او اؠن اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113671041" } },
["او اؠن اے"] = { mode = "audiovisual", qids = { "Q1047299" } },
["ڈوراما"] = { mode = "audiovisual", qids = { "Q399811" } },
["خاص"] = { mode = "audiovisual", qids = { "Q1261214" } },
["لایِو اؠکشَن"] = { mode = nil, qids = { "live action" } },
["وِجُوَلی ناوَل"] = { mode = "videojoc", qids = { "Q689445" } },
["گیم"] = { mode = nil, qids = { "Q11410" } },
["ناوَل"] = { mode = "llibre", qids = { "Q747381" } },
["ناوَل سیٖریٖز"] = { mode = "llibre", qids = { "Q104213567" } },
["ویٖڈیو گیم"] = { mode = "videojoc", qids = { "Q7889" } },
["ڈوجِنشی"] = { mode = "llibre", qids = { "Q668711" } },
["مانٛگا سیٖریٖز"] = { mode = "llibre", qids = { "Q21198342" } },
["مانٛگا"] = { mode = "llibre", qids = { "Q8274" } },
["اِشتِہار"] = { mode = "audiovisual", qids = { "Q11796892", "Q854995" } },
["سی ڈی ڈرامہ"] = { mode = "audiovisual", qids = { "Q244351" } },
["مانٛگا فِلِم"] = { mode = "pelicula", qids = { "Q116790751" } },
["کَمِک"] = { mode = "llibre", qids = { "Q1004" } },
["ٹی وی سیٖریٖز"] = { mode = "audiovisual", qids = { "Q5398426", "Q21191019" } },
["وؠب سیٖریٖز"] = { mode = "audiovisual", qids = { "Q526877" } },
["وؠب ٹوٗن"] = { mode = "llibre", qids = { "Q7978994" } },
["مَنہوا سیٖریٖز"] = { mode = "llibre", qids = { "Q74262765" } },
["مَنہوا"] = { mode = "llibre", qids = { "Q754669" } },
["لایِو اؠکشَن فِلِم"] = { mode = "pelicula", qids = { "pel·lícula live action" } },
["لایِٹ ناوَل"] = { mode = "llibre", qids = {} },
}
local tipus_map = {}
local tipus_a_mode = {}
for tipus, def in pairs(tipus_def) do
tipus_a_mode[tipus] = def.mode
for _, qid in ipairs(def.qids) do
tipus_map[qid] = tipus
end
end
local link_desti = {
["مانٛگا سیٖریٖز"] = "مانٛگا",
["فرنچایِز"] = "میٖڈیا فرنچایِز",
}
local function majusculaInicial(s)
if not s or s == "" then return s end
return mw.ustring.upper(mw.ustring.sub(s, 1, 1)) .. mw.ustring.sub(s, 2)
end
local function etiquetaProp(pid)
local label = mw.wikibase.getLabel(pid)
return majusculaInicial(label or "")
end
local function obtenirTipusText(tipus_param, item_id)
local val = (tipus_param and tipus_param ~= "") and string.lower(tipus_param) or ""
local map = tipus_map
if val == "" and item_id then
local ids = getClaims(item_id, "P31", true)
if #ids == 0 then return "باقی" end
local primer = ids[1]
for _, id in ipairs(ids) do
if map[id] then
val = id
break
end
end
if val == "" then val = primer end
end
local function linkSiExisteix(t, desti)
local target = desti or t
local title = mw.title.new(target)
if title and title.exists then return "[[" .. target .. "|" .. t .. "]]" end
return t
end
if map[val] then
return linkSiExisteix(map[val], link_desti[map[val]])
end
local label, _ = getLabelData(val)
return label and majusculaInicial(label) or "باقی"
end
local function netejarWikilink(text)
return text
:gsub("%[%[[^|]+|([^%]]+)%]%]", "%1")
:gsub("%[%[([^%]]+)%]%]", "%1")
end
----------------------------------------------------------
-- UTILITATS DIVERSES
----------------------------------------------------------
local function linkEditicon(item_id)
return "<span class='ita-edit-icon' style='margin-left:4px;'>[[File:OOjs UI icon edit-ltr-progressive.svg|middle|class=notpageimage|link=d:"
.. item_id .. "|وِکیٖڈیٹاہَس پؠٹھ کٔرِو اؠڈِٹ]]</span>"
end
local function es_no_llati(s)
local te_no_llati = mw.ustring.find(s, "[^A-Za-zÀ-ÖØ-öø-ÿĀ-ſ0-9%s%p]") ~= nil
if te_no_llati then
return "font-weight:normal;"
else
return "font-style:italic;"
end
end
----------------------------------------------------------
-- TRANSLITERACIÓ (qualificadors de P1476)
----------------------------------------------------------
local PROPS_TRANSLIT = {
"P2440",
"P2125",
"P1942",
"P2001",
"P5139",
"P1721",
}
local function obtenirTransliteracio(item_id)
local entity = mw.wikibase.getEntity(item_id)
if not entity or not entity.claims or not entity.claims.P1476 then return nil end
for _, claim in ipairs(entity.claims.P1476) do
if claim.qualifiers then
for _, pid in ipairs(PROPS_TRANSLIT) do
local quals = claim.qualifiers[pid]
if quals then
for _, q in ipairs(quals) do
local val = q.datavalue and q.datavalue.value
if val then
local t = type(val) == "string" and val or val.text
if t and t ~= "" then return t end
end
end
end
end
end
end
return nil
end
local function obtenirTitolOriginal(item_id, titol_catala, es_capcalera)
if not item_id then return "" end
local text = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "table",
colformat0 = "text",
list = false,
rowformat = "$0",
editicon = false,
}
if not text or text == "" or text == titol_catala then
return ""
end
local lang = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "$language",
list = false,
editicon = false,
}
if lang == "" then lang = nil end
local estil_text = es_no_llati(text)
local prefix_lang = ""
if es_capcalera and lang then
prefix_lang = "<sup><span style='font-weight:normal; font-style:normal;'>(" .. lang .. ")</span></sup> "
end
local tooltip_html = ""
if estil_text == "font-weight:normal;" then
local translit = obtenirTransliteracio(item_id)
if translit then
tooltip_html =
'<span class="ita-translit-wrap" tabindex="0">' ..
'<sup class="ita-translit-icon">ⓘ</sup>' ..
'<span class="ita-translit-tip">' .. translit:gsub("'", "'") .. '</span>' ..
'</span>'
end
end
return "<span style='font-size:90%; display:block;'>"
.. prefix_lang
.. "<span style='" .. estil_text .. "'>" .. text .. "</span>"
.. tooltip_html
.. "</span>"
end
local function obtenirDurada(item_id)
local raw = wikidades.claim{
item = item_id,
property = "P2047",
formatting = "raw",
list = false
}
if not raw or raw == "" then return nil end
local amount =
raw:match('"amount"%s*:%s*"(%+?[%d%.%-]+)"') or
raw:match('^%+?(%d+)$') or
raw:match('(%d+)[^%d]*$')
if not amount then return nil end
amount = tonumber(amount)
if not amount then return nil end
local unit =
raw:match('"unit"%s*:%s*"http://www%.wikidata%.org/entity/(Q%d+)"') or
raw:match('"unit"%s*:%s*"(Q%d+)"')
if not unit then
return amount .. " مِنَٹ"
end
local unit_map = {
Q7727 = "مِنَٹ",
Q11574 = "سؠکَنڈ",
Q23387 = "گٲنٛٹہٕ",
Q25235 = "دۄہ"
}
local u = unit_map[unit]
if not u then return amount end
if u == "سؠکَنڈ" then
amount = math.floor(amount / 60)
u = "مِنَٹ"
elseif u == "گٲنٛٹہٕ" then
amount = amount * 60
u = "مِنَٹ"
elseif u == "دۄہ" then
amount = amount * 24 * 60
u = "مِنَٹ"
end
return amount .. " " .. u
end
local function obtenirDataOrdenacio(item_id)
if not item_id then return "9999-99-99" end
local function primera(prop_id)
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return nil end
local any, mes, dia = raw:match("%+(%d%d%d%d)%-(%d%d)%-(%d%d)T")
if not any then return nil end
if mes == "00" then mes = "01" end
if dia == "00" then dia = "01" end
return string.format("%s-%s-%s", any, mes, dia)
end
return primera("P580")
or primera("P577")
or primera("P571")
or "9999-99-99"
end
local function getListSitelinkFromProp(item_id, prop_id)
local qid = getClaims(item_id, prop_id, true)[1]
if not qid then return "" end
return wikidades.getSiteLink{qid} or ("d:" .. qid)
end
----------------------------------------------------------
-- EDITORIALS
----------------------------------------------------------
local function obtenirEditorialsWikibase(qid)
local entity = mw.wikibase.getEntity(qid)
if not entity or not entity.claims or not entity.claims.P123 or #entity.claims.P123 == 0 then
return nil
end
local preferent
local primer_trobat = nil
local catalanes = {}
for _, claim in ipairs(entity.claims.P123) do
local ed_qid = claim.mainsnak.datavalue and claim.mainsnak.datavalue.value.id
if ed_qid then
local label = wdLink(ed_qid)
local lang_label = nil
local es_cat = false
if claim.qualifiers and claim.qualifiers.P407 then
for _, qv in ipairs(claim.qualifiers.P407) do
if qv.datavalue.value.id == "Q33552" then
es_cat = true
break
end
end
if es_cat then
lang_label, _ = getLabelData("Q33552")
else
local qid_lang = claim.qualifiers.P407[1].datavalue.value.id
lang_label, _ = getLabelData(qid_lang)
end
end
local text = label
if lang_label then
text = text .. " (" .. lang_label .. ")"
end
if es_cat then
table.insert(catalanes, text)
else
if not primer_trobat then primer_trobat = text end
if claim.rank == "preferred" and not preferent then
preferent = text
end
end
end
end
preferent = preferent or primer_trobat
if not preferent and #catalanes == 0 then return nil end
local resultat = {}
if preferent then table.insert(resultat, preferent) end
for _, c in ipairs(catalanes) do
if c ~= preferent then table.insert(resultat, c) end
end
return table.concat(resultat, "<br />")
end
----------------------------------------------------------
-- FILTRAR PER P31
----------------------------------------------------------
local function filtrarPerP31(llista, qid_tipus)
local coincideixen, resta = {}, {}
for _, q in ipairs(llista) do
local trobat = false
for _, classe in ipairs(getClaims(q, "P31", true)) do
if classe == qid_tipus then
trobat = true
break
end
end
table.insert(trobat and coincideixen or resta, q)
end
return coincideixen, resta
end
----------------------------------------------------------
-- CSS
----------------------------------------------------------
local CSS = {
HEADER = "ita-header",
SUBHEADER = "ita-subheader",
TIPUS = "ita-tipus",
CELL_L = "ita-cell-l",
CELL_R = "ita-cell-r",
ICON_CELL = "ita-icon-cell",
ICON_CELL_R = "ita-icon-cell-r",
CELL_FULL = "ita-cell-full",
}
local function filaEtiquetaValor(contenidor, label, valor, collapsible)
local fila = contenidor:tag("tr")
if collapsible then
fila:addClass("mw-collapsible-content")
end
fila:tag("td"):addClass(CSS.CELL_L):wikitext(label)
fila:tag("td"):addClass(CSS.CELL_R):wikitext(valor)
return fila
end
----------------------------------------------------------
-- GENERAR NUCLI (VERSIÓ COMPLETA, OPCIÓ B)
----------------------------------------------------------
local function generarNucli(item_id, args, es_grup, id_pare, te_genere_pare)
if not item_id or not mw.wikibase.isValidEntityId(item_id) then
return ""
end
local html = mw.html.create()
------------------------------------------------------
-- NOM BASE + IDIOMA
------------------------------------------------------
local nom_base, nom_base_lang = getLabelData(item_id)
local ret_lang_subheader = ""
local ret_icon_subheader = ""
if nom_base_lang and nom_base_lang ~= "ks" and nom_base_lang ~= "mul" then
ret_lang_subheader =
" <span style='font-weight:normal'><sup>(" .. nom_base_lang .. ")</sup></span>"
ret_icon_subheader =
" [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|" ..
mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain() ..
"|link=https://www.wikidata.org/wiki/" .. item_id .. "?uselang=ks]]"
end
------------------------------------------------------
-- TIPUS
------------------------------------------------------
local tipus_text = obtenirTipusText(args.tipus, item_id)
local tipus_net = netejarWikilink(tipus_text)
local mode = tipus_a_mode[tipus_net] or ""
------------------------------------------------------
-- SUBHEADER (si és grup)
------------------------------------------------------
if es_grup then
local estil_sub = es_no_llati(nom_base)
local sitelink = wikidades.getSiteLink{item_id}
local dest_link = sitelink
and ("[[" .. sitelink .. "|" .. nom_base .. "]]")
or ("[[d:" .. item_id .. "|" .. nom_base .. "]]")
local text =
"<span style='" .. estil_sub .. "'>" .. dest_link .. "</span>" ..
ret_lang_subheader ..
ret_icon_subheader ..
obtenirTitolOriginal(item_id, nom_base, false)
local fila_sh = html:tag("tr")
fila_sh:addClass("mw-collapsible-content")
fila_sh:tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(text)
end
------------------------------------------------------
-- FILA TIPUS + ICONES (VERSIÓ SENSE TAULA INTERNA)
------------------------------------------------------
local fila_tipus = html:tag("tr")
fila_tipus:addClass("mw-collapsible-content ita-row-tipus")
-- Cel·la esquerra (tipus)
fila_tipus:tag("td")
:addClass(CSS.TIPUS)
:wikitext(tipus_text)
local td_icones = fila_tipus:tag("td")
td_icones:addClass(CSS.CELL_R .. " ita-icons-flex")
local wrapper = td_icones:tag("div")
wrapper:addClass("ita-icons-wrapper")
local td_esq = wrapper:tag("div")
td_esq:addClass("ita-icons-left " .. CSS.ICON_CELL)
local td_dre = wrapper:tag("div")
td_dre:addClass("ita-icons-right " .. CSS.ICON_CELL_R)
------------------------------------------------------
-- ETIQUETA PERÍODE (funció interna)
------------------------------------------------------
local function _obtenirEtiquetaPeriode_local(qid, tipus_str)
local t = mw.ustring.lower(tipus_str or "")
local m = tipus_a_mode[majusculaInicial(t)] or ""
if m == "franquicia" then
return etiquetaProp("P2348")
end
if m == "llibre" or m == "videojoc" then
return etiquetaProp(qid_labels.publicacio)
end
if m == "pelicula" then
local te_p577 = wikidades.claim{item=qid, property="P577", list=false}
local te_p582 = wikidades.claim{item=qid, property="P582", list=false}
if te_p577 and te_p577 ~= "" then
return etiquetaProp(qid_labels.estrena)
elseif te_p582 and te_p582 ~= "" then
return etiquetaProp(qid_labels.emissio)
else
return etiquetaProp(qid_labels.estrena)
end
end
return etiquetaProp(qid_labels.emissio)
end
------------------------------------------------------
-- ICONA DURADA (P2047)
------------------------------------------------------
local text_durada = obtenirDurada(item_id)
if text_durada then
td_esq:wikitext("[[File:Hourglass icon.png|middle|class=notpageimage|link=|وَقٕف]] " .. text_durada .. " ")
end
------------------------------------------------------
-- ICONA DE LLISTA (P31)
------------------------------------------------------
local p31_qid = getClaims(item_id, "P31", true)[1] or ""
if p31_qid == "Q24856" or p31_qid == "Q7058673" or p31_qid == "Q29982285" then
local link = getListSitelinkFromProp(item_id, "P2354")
if link == "" then
link = wikidades.getSiteLink{item_id} or ("d:" .. item_id)
end
td_esq:wikitext("[[File:Font Awesome 5 regular list-alt.svg|middle|class=notpageimage|link=" .. link .. "]] ")
end
------------------------------------------------------
-- ICONA VOLUMS / PEL·LÍCULES (P2635)
------------------------------------------------------
local raw_volums = wikidades.claim{
item = item_id,
property = "P2635",
formatting = "raw",
list = false
}
if raw_volums and raw_volums ~= "" then
local quant = tostring(raw_volums):gsub("%+","")
if p31_qid == "Q29982285" then
td_esq:wikitext(
"[[File:Tabler-icons_movie.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|فِلِمہٕ]] " .. quant .. " فِلِمہٕ "
)
else
td_esq:wikitext(
"[[File:OpenMoji-black 1F4DA.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|جِلٕد]] " .. quant .. " جِلٕد "
)
end
end
------------------------------------------------------
-- ICONA EPISODIS (P1113)
------------------------------------------------------
local text_ep = ""
local raw_ep = wikidades.claim{
item = item_id,
property = "P1113",
formatting = "raw",
list = false
}
if raw_ep and raw_ep ~= "" then
text_ep = tostring(raw_ep):gsub("%+","")
end
if text_ep ~= "" then
local link_ep = getListSitelinkFromProp(item_id,"P1811")
if link_ep == "" then
link_ep = getListSitelinkFromProp(item_id,"P2354")
end
td_esq:wikitext(
"<span style='display:inline-block;width:1px;'></span>[[File:Noun TV Episodes 3303322.svg|middle|class=notpageimage|link=" ..
link_ep .. "|قِسٕط]] " .. text_ep .. " "
)
end
------------------------------------------------------
-- ICONES EXTERNES
------------------------------------------------------
td_dre:wikitext(generarIconesExternes(item_id) .. linkEditicon(item_id))
------------------------------------------------------
-- PROPIETATS SECUNDÀRIES (FILES NORMALS)
------------------------------------------------------
local propietats = {
"P144","P4970","P50","P110","P178","P58","P287","P86","P57","P162",
"P136","P400","P272","P275","P449","P123","P2360","P1433"
}
for _, pid in ipairs(propietats) do
local admetre = true
if pid == "P144" then
local qid_p144 = getClaims(item_id, "P144", true)[1]
if qid_p144 and (qid_p144 == item_id or qid_p144 == id_pare) then
admetre = false
end
end
if pid == "P136" and es_grup and te_genere_pare then
admetre = false
end
if admetre then
local label = etiquetaProp(pid)
if pid == "P123" and (mode == "videojoc" or mode == "audiovisual") then
label = etiquetaProp(qid_labels.distribuidor)
end
if pid == "P272" and (mode == "pelicula" or mode == "audiovisual") then
label = "سٕٹوٗڈیو"
end
if pid == "P2360" then
label = "قٕسٕم"
end
if pid == "P136" then
label = etiquetaProp(qid_labels.genere)
end
if pid == "P1433" and (tipus_net == "مانٛگا" or tipus_net == "مانٛگا سیٖریٖز" or tipus_net == "وَن-شاٹ") then
label = etiquetaProp(qid_labels.revista)
end
if pid == "P449" and mode == "audiovisual" then
label = "چَینَل"
end
--------------------------------------------------
-- GÈNERE (neteja unificada)
--------------------------------------------------
if pid == "P136" then
local valors = {}
for i, qid in ipairs(getClaims(item_id, "P136", true)) do
local label_qid = getLabelData(qid)
local text_net = netejarGenere(label_qid)
if i > 1 then
text_net = text_net:sub(1,1):lower() .. text_net:sub(2)
end
local sitelink = wikidades.getSiteLink{qid}
if sitelink and sitelink ~= "" then
table.insert(valors, "[[" .. sitelink .. "|" .. text_net .. "]]")
else
table.insert(valors, "[[d:" .. qid .. "|" .. text_net .. "]]")
end
end
if #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
--------------------------------------------------
-- EDITORIALS
--------------------------------------------------
elseif pid == "P123" then
local valors = obtenirEditorialsWikibase(item_id)
if valors then
filaEtiquetaValor(html, label, valors, true)
end
--------------------------------------------------
-- ALTRES PROP.
--------------------------------------------------
else
local valors = getClaims(item_id, pid, false)
if valors and #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
end
end
end
------------------------------------------------------
-- DATES (P580 / P577 / P582)
------------------------------------------------------
local data_inici_p580 = getClaims(item_id, "P580", false)[1]
if data_inici_p580 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local data_fi = getClaims(item_id, "P582", false)[1]
local text_data = formatarData(data_inici_p580)
if data_fi then
text_data = text_data .. " – " .. formatarData(data_fi)
end
filaEtiquetaValor(html, label_data, text_data, true)
else
--------------------------------------------------
-- CAS AMB P577 (pot tenir múltiples dates)
--------------------------------------------------
local entity = mw.wikibase.getEntity(item_id)
local claims_p577 = entity and entity.claims and entity.claims.P577 or {}
if #claims_p577 > 0 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local linies = {}
for _, claim in ipairs(claims_p577) do
local dv = claim.mainsnak and claim.mainsnak.datavalue
if dv then
local iso = dv.value and dv.value.time or ""
local data_fmt = formatarData(iso)
local quals = {}
if claim.qualifiers then
if claim.qualifiers.P291 then
for _, q in ipairs(claim.qualifiers.P291) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
if claim.qualifiers.P400 then
for _, q in ipairs(claim.qualifiers.P400) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
end
local linia = data_fmt
if #quals > 0 then
linia = linia .. " (" .. table.concat(quals, ", ") .. ")"
end
table.insert(linies, linia)
end
end
if #linies > 0 then
if #linies == 1 then
filaEtiquetaValor(html, label_data, linies[1], true)
else
local ocultes = {}
for i = 2, #linies do
table.insert(ocultes, linies[i])
end
local text_final =
'<table class="mw-collapsible mw-collapsed" style="width:100%; border-spacing:0;">' ..
'<tr><th colspan="2" style="text-align:left; font-weight:normal;">' .. linies[1] .. '</th></tr>' ..
'<tr><td>' .. table.concat(ocultes, "<br>") .. '</td></tr>' ..
'</table>'
filaEtiquetaValor(html, label_data, text_final, true)
end
end
end
end
------------------------------------------------------
-- RETORNAR EL RESULTAT
------------------------------------------------------
return tostring(html)
end
----------------------------------------------------------
-- p.infotaula
----------------------------------------------------------
local LIMIT_VISIBLE = 4
function p.infotaula(frame)
local args = getArgs(frame, {wrappers = "فرما:اِنفوباکس اؠنِمے مانٛگا"})
local item_id = (args.item and args.item ~= "") and args.item
or mw.wikibase.getEntityIdForCurrentPage()
if not item_id then
return "<span class='error'>غَلطی: وِکیٖڈیٹاہَس سٟتؠ مُنسَلِق کانٛہہ تہِ عُنصَر آو نہٕ لَبنہٕ۔</span>"
end
---------------------------------------------------------
-- SELECCIONATS
---------------------------------------------------------
local seleccionats_raw = args.seleccionats or ""
local seleccionats = {}
if seleccionats_raw ~= "" then
for qid in seleccionats_raw:gmatch("Q%d+") do
seleccionats[qid] = true
end
end
---------------------------------------------------------
-- DELEGACIÓ SI NO ÉS GRUP / FRANQUÍCIA
---------------------------------------------------------
local parts = getClaims(item_id, "P527", true)
local derivades = getClaims(item_id, "P4969", true)
if #parts == 0 and #derivades == 0 then
local tipus = netejarWikilink(obtenirTipusText(args.tipus, item_id))
local mode = tipus_a_mode[tipus]
if mode == "pelicula" then
return frame:expandTemplate{
title = "فِلِم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "llibre" then
return frame:expandTemplate{
title = "کِتاب اِنفوباکس",
args = { item = item_id, titol = args.nom, manga = "y" }
}
elseif mode == "videojoc" then
return frame:expandTemplate{
title = "ویٖڈیو گیم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "audiovisual" then
return frame:expandTemplate{
title = "آڈیو وِجُوَل پروگرام اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
end
end
---------------------------------------------------------
-- MODE FRANQUÍCIA
---------------------------------------------------------
local res = mw.html.create("table")
:addClass("infobox")
:addClass("infotaula-animanga")
local titol = args.nom
or getLabelData(item_id)
or mw.title.getCurrentTitle().text
res:tag("caption")
:addClass(CSS.HEADER)
:wikitext(
'<div style="display:flex; align-items:center;">' ..
'<div style="flex:0 0 30px; min-width:30px;">' ..
'<span style="position:relative; left:2px;">[[File:Anime manga japanese characters icon.svg|30px|اِنفوباکس اؠنِمے مانٛگا|class=skin-invert notpageimage]]</span>' ..
'</div>' ..
'<div style="flex:1 1 auto;">' ..
'<span style="font-weight:bold; font-style:italic;">' .. titol .. '</span>' ..
obtenirTitolOriginal(item_id, titol, true) ..
'</div>' ..
'<div style="flex:0 0 30px; min-width:30px;"></div>' ..
'</div>'
)
---------------------------------------------------------
-- IMATGE PRINCIPAL (amb fallback a logo P154)
---------------------------------------------------------
local img = obtenirImatge(item_id, args, "P18", "imatge")
local logo = obtenirImatge(item_id, args, "P154", "logo")
local mostrar_logo_apart = true
if img.nom then
local mida = midaImatge(img.nom, 250, 350)
local td_img = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
td_img:wikitext("[[File:" .. img.nom .. "|" .. mida .. "|center]]")
if img.peu and img.peu ~= "" then
td_img:tag("span")
:addClass("ita-img-caption")
:wikitext(img.peu)
end
elseif logo.nom then
-- Fallback: no hi ha P18, però sí P154 → l'usem com a imatge principal
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
mostrar_logo_apart = false
else
res:wikitext("[[زٲژ:مانٛگانِمی مَضموٗن یِمَن تَصویٖرٕچ ضروٗرَتھ چھِ]]")
end
---------------------------------------------------------
-- LOGO (P154) — només si NO s'ha usat ja com a fallback
---------------------------------------------------------
if logo.nom and mostrar_logo_apart then
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
end
---------------------------------------------------------
-- NUCLI PRINCIPAL DEL PARE
---------------------------------------------------------
local pare_te_genere = (#getClaims(item_id, "P136", true) > 0)
res:wikitext(generarNucli(item_id, args, false, item_id, false))
---------------------------------------------------------
-- FORMAT PER (P527)
---------------------------------------------------------
local elements_valids = {}
local exclos_p527 = {
Q125632018=true, Q3464665=true,
Q102364578=true, Q21191270=true
}
for _, tid in ipairs(parts) do
if next(seleccionats) ~= nil and not seleccionats[tid] then
-- exclòs per selecció
else
local exclos = false
for _, p31id in ipairs(getClaims(tid, "P31", true)) do
if exclos_p527[p31id] then
exclos = true
break
end
end
if not exclos then
table.insert(elements_valids, tid)
end
end
end
table.sort(elements_valids, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (Q2620972)
---------------------------------------------------------
local arcs_narratius
arcs_narratius, elements_valids = filtrarPerP31(elements_valids, "Q2620972")
---------------------------------------------------------
-- ARTICLES DE LLISTA (Q13406463) dins P527
---------------------------------------------------------
local llistes_p527
llistes_p527, elements_valids = filtrarPerP31(elements_valids, "Q13406463")
---------------------------------------------------------
-- OBRA DERIVADA (P4969)
---------------------------------------------------------
local ids_der_raw = derivades
local ids_der_filtrats = {}
for _, tid in ipairs(ids_der_raw) do
if next(seleccionats) == nil or seleccionats[tid] then
table.insert(ids_der_filtrats, tid)
end
end
local llistes_der, ids_der = filtrarPerP31(ids_der_filtrats, "Q13406463")
table.sort(ids_der, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (render)
---------------------------------------------------------
if #arcs_narratius > 0 then
res:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(getLabelData("Q2620972")) .. linkEditicon(item_id))
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, q in ipairs(arcs_narratius) do
local nom = getLabelData(q)
ul:tag("li"):wikitext(wdLink(q, nom))
end
end
---------------------------------------------------------
-- FUNCIONS AUXILIARS PER LLISTES
---------------------------------------------------------
local function mostrarLlistes(llistes, contenidor)
for _, q_llista in ipairs(llistes) do
local nom_llista = getLabelData(q_llista)
contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(nom_llista) .. " " .. linkEditicon(q_llista))
local membres = getClaims(q_llista, "P527", true)
if #membres > 0 then
if #membres > 5 then
-- Llista desplegable
local taula_col = contenidor:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(tostring(#membres) .. " عَناصِر")
local ul_membres = taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
else
local ul_membres = contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
end
end
end
end
---------------------------------------------------------
-- MOSTRAR FORMAT PER + OBRA DERIVADA (amb límit)
---------------------------------------------------------
local total = #elements_valids + #ids_der
if total > LIMIT_VISIBLE then
local visibles_p527 = math.min(#elements_valids, LIMIT_VISIBLE)
local visibles_der = math.min(#ids_der, math.max(0, LIMIT_VISIBLE - visibles_p527))
-----------------------------------------------------
-- PRIMERA PART: ELEMENTS VISIBLES NORMALS
-----------------------------------------------------
if visibles_p527 > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for i = 1, visibles_p527 do
res:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if visibles_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
for i = 1, visibles_der do
res:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
---------------------------------------------------------
-- BLOC PLEGABLE "MÉS" (contenidor taula necessari)
---------------------------------------------------------
local taula_col = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
-- capçalera "Més"
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext('<span class="ita-mes-text">مزیٖد</span>')
local resta_p527 = visibles_p527 < #elements_valids
local resta_der = visibles_der < #ids_der
local ambdues = resta_p527 and resta_der
---------------------------------------------------------
-- CONTINGUT PLEGABLE: P527
---------------------------------------------------------
if resta_p527 then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
end
for i = visibles_p527 + 1, #elements_valids do
taula_col:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
---------------------------------------------------------
-- CONTINGUT PLEGABLE: OBRES DERIVADES
---------------------------------------------------------
if resta_der then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
end
for i = visibles_der + 1, #ids_der do
taula_col:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
else
-----------------------------------------------------
-- CAS SENSE PLEGABLE
-----------------------------------------------------
if #elements_valids > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for _, tid in ipairs(elements_valids) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if #ids_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
for _, tid in ipairs(ids_der) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
end
---------------------------------------------------------
-- ALTRES (P5940)
---------------------------------------------------------
local ids_p5940 = getClaims(item_id, "P5940", true)
if #ids_p5940 > 0 then
-- Capçalera "Altres"
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("باقی")
-- Obtenim l'entitat UNA sola vegada
local entity = mw.wikibase.getEntity(item_id)
local claims_p5940 = entity and entity.claims and entity.claims.P5940 or {}
-- Indexem els claims per QID per evitar bucles interns
local claims_index = {}
for _, claim in ipairs(claims_p5940) do
local snak = claim.mainsnak
local q = snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id
if q then
claims_index[q] = claim
end
end
-- Construïm la llista i la mostrem en punts
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, qid in ipairs(ids_p5940) do
local text = wdLink(qid)
local claim = claims_index[qid]
if claim and claim.qualifiers and claim.qualifiers.P3831 then
local qual = claim.qualifiers.P3831[1]
local q_val = qual.datavalue and qual.datavalue.value and qual.datavalue.value.id
if q_val then
text = text .. " (" .. wdLink(q_val) .. ")"
end
end
ul:tag("li"):wikitext(text)
end
end
---------------------------------------------------------
-- PORTAL
---------------------------------------------------------
local portal_val = args.portal or ""
if portal_val ~= "" and portal_val:lower() ~= "no" then
local portal_expandit = frame:preprocess(
"[[File:Wikipe-tan face.svg|16px||class=notpageimage|link=Portal:Anime i Manga|اؠنِمے تہٕ مانٛگا پورٹَل]] " ..
"[[Portal:Anime i Manga|اؠنِمے تہٕ مانٛگا پورٹَل]]"
)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:addClass(CSS.CELL_FULL)
:wikitext(portal_expandit)
end
---------------------------------------------------------
-- ESTILS
---------------------------------------------------------
local styles = frame:extensionTag("templatestyles", "", {src="Module: Infotaula animanga/estils.css"})
return styles .. tostring(res)
end
return p
0vwz84temzfvl3u2lzyokq48nar9afl
148892
148886
2026-08-10T14:10:51Z
آیات محراج
11062
148892
Scribunto
text/plain
local p = {}
----------------------------------------------------------
-- REQUERIMENTS I CONSTANTS
----------------------------------------------------------
local wikidades = require("Module:Wikidades")
local getArgs = require("Module:Arguments").getArgs
local qid_labels = {
publicacio = "Q732577",
estrena = "Q204854",
emissio = "Q109507868",
distribuidor = "Q12540664",
genere = "Q483394",
revista = "Q41298",
}
----------------------------------------------------------
-- FUNCIONS BÀSIQUES
----------------------------------------------------------
local function formatarData(iso)
if not iso or iso == "" then return "" end
local clean = iso:match("^%+?(%d%d%d%d%-%d%d%-%d%d)")
if not clean then return iso end
local any, m, d = clean:match("^(%d+)%-(%d+)%-(%d+)")
if not any then return iso end
local lang = mw.language.getContentLanguage()
if m == "00" then return any end
if d == "00" then
local fake = any .. "-" .. m .. "-01"
return lang:formatDate("F Y", fake)
end
return lang:formatDate("j F Y", clean)
end
local function netejaNomFitxer(raw)
local nom = tostring(raw):gsub("[%[%]]",""):gsub("^[Ff]it[xz]er:",""):gsub("^[Ff]ile:","")
if nom:find("|") then nom = nom:match("^([^|]+)") or nom end
return nom
end
local function midaImatge(nom, max_w, max_h)
local ext = nom:lower()
if ext:match("%.svg$") or ext:match("%.gif$") then
return max_w .. "px"
else
return max_w .. "x" .. max_h .. "px"
end
end
local function obtenirImatge(item_id, args, prop, param)
prop = prop or "P18"
param = param or "imatge"
if args[param] == "NONE" then
return { nom = nil, peu = nil }
end
if args[param] and args[param] ~= "" then
return { nom = netejaNomFitxer(args[param]), peu = args["peu"] or nil }
end
local raw = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if not raw or raw == "" then
return { nom = nil, peu = nil }
end
local nom = netejaNomFitxer(raw)
local peu = args["peu"]
if not peu or peu == "" then
local raw_caption = wikidades.claim{
item = item_id, property = prop,
qualifier = "P2096", formatting = "raw", list = false
}
if raw_caption and raw_caption ~= "" then peu = raw_caption end
end
return { nom = nom, peu = peu }
end
----------------------------------------------------------
-- ICONES EXTERNES
----------------------------------------------------------
local function getIconaPropieta(prop)
local entity = mw.wikibase.getEntity(prop)
if not entity or not entity.claims then return nil end
local function millor_claim(prop_id)
local claims = entity.claims[prop_id]
if not claims then return nil end
local preferent, normal = nil, nil
for _, claim in ipairs(claims) do
local rank = claim.rank
local val = claim.mainsnak.datavalue
and claim.mainsnak.datavalue.value
local nom = val and (type(val)=="string" and val or val.text or val.id)
if nom and nom ~= "" then
if rank=="preferred" and not preferent then preferent = nom
elseif rank=="normal" and not normal then normal = normal or nom end
end
end
return preferent or normal
end
return millor_claim("P8972") or millor_claim("P2910")
end
local external_link_props = {
"P1984", "P1985", "P345",
}
local function generarIconesExternes(item_id)
local html = {}
for _, prop in ipairs(external_link_props) do
local val = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if val and val ~= "" then
local formatter = wikidades.claim{
item = prop, property = "P1630",
formatting = "raw", list = false
}
local label = mw.wikibase.getLabel(prop) or prop
local icon = getIconaPropieta(prop)
if formatter and formatter ~= "" and icon then
local url = formatter:gsub("%$1", val)
table.insert(html,
string.format(
'[[File:%s|middle|link=%s|class=notpageimage|%s]] ',
icon, url, label
)
)
end
end
end
return table.concat(html, "")
end
----------------------------------------------------------
-- LABELS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getLabelData(qid)
local label, lang = nil, nil
for _, l in ipairs({"ks","mul","en","ja","ko","zh"}) do
local t = mw.wikibase.getLabelByLang(qid, l)
if t and t ~= "" then
label = t
lang = l
break
end
end
if not label then
label = qid
lang = nil
end
return label, lang
end
local function wdLink(qid, label_override)
if label_override and label_override ~= "" then
return "[[d:" .. qid .. "|" .. label_override .. "]]"
end
local label, lang = getLabelData(qid)
local sitelink = wikidades.getSiteLink{qid}
local link = sitelink
and ("[[" .. sitelink .. "|" .. label .. "]]")
or ("[[d:" .. qid .. "|" .. label .. "]]")
if lang and lang ~= "ks" and lang ~= "mul" then
link = link
.. " <sup>(" .. lang .. ")</sup>"
.. " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|"
.. mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain()
.. "|link=https://www.wikidata.org/wiki/" .. qid .. "?uselang=ks]]"
end
return link
end
----------------------------------------------------------
-- CLAIMS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getClaims(item_id, prop_id, only_qids)
if not item_id then return {} end
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return {} end
local result = {}
for v in raw:gmatch("[^/·/]+") do
if only_qids then
local q = v:match("^(Q%d+)$")
if q then table.insert(result, q) end
else
if v:match("^Q%d+$") then
table.insert(result, wdLink(v))
else
table.insert(result, v)
end
end
end
return result
end
----------------------------------------------------------
-- NETEJA DE GÈNERE UNIFICADA (PUNT 1)
----------------------------------------------------------
local APO = "['’`´ʼ‛]"
local GEN_PREFIX = {
"^مانٛگا تہٕ اؠنِمے%s+ہُنٛد%s*",
"^اؠنِمے تہٕ مانٛگا%s+ہُنٛد%s*",
"^مانٛگا%s+ہُنٛد%s*",
"^اؠنِمے%s+ہُنٛد%s*",
"^مانٛگا تہٕ اؠنِمے%s+",
"^اؠنِمے تہٕ مانٛگا%s+",
"^مانٛگا%s+",
"^اؠنِمے%s+",
}
local function netejarGenere(label)
local lower = label:lower()
for _, pat in ipairs(GEN_PREFIX) do
local resta = lower:gsub(pat, "")
if resta ~= lower then
label = label:gsub(pat, "")
break
end
end
label = label:gsub("%s*%b()", "")
label = label:gsub("^d[^a-zà-üA-ZÀ-Ü]+", "")
label = label:gsub("%s+$", "")
return label:sub(1,1):upper() .. label:sub(2)
end
----------------------------------------------------------
-- TIPUS I MAPES
----------------------------------------------------------
local tipus_def = {
["شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q24862" } },
["فرنچایِز"] = { mode = "franquicia", qids = { "Q196600" } },
["اؠنِمے فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q29982285" } },
["اؠنیٖمیٹِڈ شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q17517379" } },
["موٗسیٖقی ہُنٛد ویٖڈیو"] = { mode = "audiovisual", qids = { "Q193977", "Q55960075", "Q64100970" } },
["اؠنِمے فِلِم"] = { mode = "pelicula", qids = { "Q20650540" } },
["فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q24856" } },
["ویٖڈیو گیم سیٖریٖز"] = { mode = "videojoc", qids = { "Q7058673" } },
["فِلِم"] = { mode = "pelicula", qids = { "Q229390", "Q11424" } },
["اؠنیٖمیٹِڈ فِلِم"] = { mode = "pelicula", qids = { "Q29168811", "Q202866" } },
["اؠنیٖمیٹِڈ سیٖریٖز"] = { mode = "audiovisual", qids = { "Q581714" } },
["اؠنِمے"] = { mode = "audiovisual", qids = { "Q63952888", "Q11086742", "Q100269041", "Q104640199" } },
["ریڈیو ڈرامہ"] = { mode = "audiovisual", qids = { "Q2635894" } },
["او وی اے"] = { mode = "audiovisual", qids = { "Q220898" } },
["او وی اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113687694" } },
["موٗسیٖقی"] = { mode = "pelicula", qids = { "Q58483083" } },
["وَن-شاٹ"] = { mode = "llibre", qids = { "Q933530", "Q21202185" } },
["او اے ڈی"] = { mode = "audiovisual", qids = { "oad" } },
["او اؠن اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113671041" } },
["او اؠن اے"] = { mode = "audiovisual", qids = { "Q1047299" } },
["ڈوراما"] = { mode = "audiovisual", qids = { "Q399811" } },
["خاص"] = { mode = "audiovisual", qids = { "Q1261214" } },
["لایِو اؠکشَن"] = { mode = nil, qids = { "live action" } },
["وِجُوَلی ناوَل"] = { mode = "videojoc", qids = { "Q689445" } },
["گیم"] = { mode = nil, qids = { "Q11410" } },
["ناوَل"] = { mode = "llibre", qids = { "Q747381" } },
["ناوَل سیٖریٖز"] = { mode = "llibre", qids = { "Q104213567" } },
["ویٖڈیو گیم"] = { mode = "videojoc", qids = { "Q7889" } },
["ڈوجِنشی"] = { mode = "llibre", qids = { "Q668711" } },
["مانٛگا سیٖریٖز"] = { mode = "llibre", qids = { "Q21198342" } },
["مانٛگا"] = { mode = "llibre", qids = { "Q8274" } },
["اِشتِہار"] = { mode = "audiovisual", qids = { "Q11796892", "Q854995" } },
["سی ڈی ڈرامہ"] = { mode = "audiovisual", qids = { "Q244351" } },
["مانٛگا فِلِم"] = { mode = "pelicula", qids = { "Q116790751" } },
["کَمِک"] = { mode = "llibre", qids = { "Q1004" } },
["ٹی وی سیٖریٖز"] = { mode = "audiovisual", qids = { "Q5398426", "Q21191019" } },
["وؠب سیٖریٖز"] = { mode = "audiovisual", qids = { "Q526877" } },
["وؠب ٹوٗن"] = { mode = "llibre", qids = { "Q7978994" } },
["مَنہوا سیٖریٖز"] = { mode = "llibre", qids = { "Q74262765" } },
["مَنہوا"] = { mode = "llibre", qids = { "Q754669" } },
["لایِو اؠکشَن فِلِم"] = { mode = "pelicula", qids = { "pel·lícula live action" } },
["لایِٹ ناوَل"] = { mode = "llibre", qids = {} },
}
local tipus_map = {}
local tipus_a_mode = {}
for tipus, def in pairs(tipus_def) do
tipus_a_mode[tipus] = def.mode
for _, qid in ipairs(def.qids) do
tipus_map[qid] = tipus
end
end
local link_desti = {
["مانٛگا سیٖریٖز"] = "مانٛگا",
["فرنچایِز"] = "میٖڈیا فرنچایِز",
}
local function majusculaInicial(s)
if not s or s == "" then return s end
return mw.ustring.upper(mw.ustring.sub(s, 1, 1)) .. mw.ustring.sub(s, 2)
end
local function etiquetaProp(pid)
local label = mw.wikibase.getLabel(pid)
return majusculaInicial(label or "")
end
local function obtenirTipusText(tipus_param, item_id)
local val = (tipus_param and tipus_param ~= "") and string.lower(tipus_param) or ""
local map = tipus_map
if val == "" and item_id then
local ids = getClaims(item_id, "P31", true)
if #ids == 0 then return "باقی" end
local primer = ids[1]
for _, id in ipairs(ids) do
if map[id] then
val = id
break
end
end
if val == "" then val = primer end
end
local function linkSiExisteix(t, desti)
local target = desti or t
local title = mw.title.new(target)
if title and title.exists then return "[[" .. target .. "|" .. t .. "]]" end
return t
end
if map[val] then
return linkSiExisteix(map[val], link_desti[map[val]])
end
local label, _ = getLabelData(val)
return label and majusculaInicial(label) or "باقی"
end
local function netejarWikilink(text)
return text
:gsub("%[%[[^|]+|([^%]]+)%]%]", "%1")
:gsub("%[%[([^%]]+)%]%]", "%1")
end
----------------------------------------------------------
-- UTILITATS DIVERSES
----------------------------------------------------------
local function linkEditicon(item_id)
return "<span class='ita-edit-icon' style='margin-left:4px;'>[[File:OOjs UI icon edit-ltr-progressive.svg|middle|class=notpageimage|link=d:"
.. item_id .. "|وِکیٖڈیٹاہَس پؠٹھ کٔرِو اؠڈِٹ]]</span>"
end
local function es_no_llati(s)
local te_no_llati = mw.ustring.find(s, "[^A-Za-zÀ-ÖØ-öø-ÿĀ-ſ0-9%s%p]") ~= nil
if te_no_llati then
return "font-weight:normal;"
else
return "font-style:italic;"
end
end
----------------------------------------------------------
-- TRANSLITERACIÓ (qualificadors de P1476)
----------------------------------------------------------
local PROPS_TRANSLIT = {
"P2440",
"P2125",
"P1942",
"P2001",
"P5139",
"P1721",
}
local function obtenirTransliteracio(item_id)
local entity = mw.wikibase.getEntity(item_id)
if not entity or not entity.claims or not entity.claims.P1476 then return nil end
for _, claim in ipairs(entity.claims.P1476) do
if claim.qualifiers then
for _, pid in ipairs(PROPS_TRANSLIT) do
local quals = claim.qualifiers[pid]
if quals then
for _, q in ipairs(quals) do
local val = q.datavalue and q.datavalue.value
if val then
local t = type(val) == "string" and val or val.text
if t and t ~= "" then return t end
end
end
end
end
end
end
return nil
end
local function obtenirTitolOriginal(item_id, titol_catala, es_capcalera)
if not item_id then return "" end
local text = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "table",
colformat0 = "text",
list = false,
rowformat = "$0",
editicon = false,
}
if not text or text == "" or text == titol_catala then
return ""
end
local lang = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "$language",
list = false,
editicon = false,
}
if lang == "" then lang = nil end
local estil_text = es_no_llati(text)
local prefix_lang = ""
if es_capcalera and lang then
prefix_lang = "<sup><span style='font-weight:normal; font-style:normal;'>(" .. lang .. ")</span></sup> "
end
local tooltip_html = ""
if estil_text == "font-weight:normal;" then
local translit = obtenirTransliteracio(item_id)
if translit then
tooltip_html =
'<span class="ita-translit-wrap" tabindex="0">' ..
'<sup class="ita-translit-icon">ⓘ</sup>' ..
'<span class="ita-translit-tip">' .. translit:gsub("'", "'") .. '</span>' ..
'</span>'
end
end
return "<span style='font-size:90%; display:block;'>"
.. prefix_lang
.. "<span style='" .. estil_text .. "'>" .. text .. "</span>"
.. tooltip_html
.. "</span>"
end
local function obtenirDurada(item_id)
local raw = wikidades.claim{
item = item_id,
property = "P2047",
formatting = "raw",
list = false
}
if not raw or raw == "" then return nil end
local amount =
raw:match('"amount"%s*:%s*"(%+?[%d%.%-]+)"') or
raw:match('^%+?(%d+)$') or
raw:match('(%d+)[^%d]*$')
if not amount then return nil end
amount = tonumber(amount)
if not amount then return nil end
local unit =
raw:match('"unit"%s*:%s*"http://www%.wikidata%.org/entity/(Q%d+)"') or
raw:match('"unit"%s*:%s*"(Q%d+)"')
if not unit then
return amount .. " مِنَٹ"
end
local unit_map = {
Q7727 = "مِنَٹ",
Q11574 = "سؠکَنڈ",
Q23387 = "گٲنٛٹہٕ",
Q25235 = "دۄہ"
}
local u = unit_map[unit]
if not u then return amount end
if u == "سؠکَنڈ" then
amount = math.floor(amount / 60)
u = "مِنَٹ"
elseif u == "گٲنٛٹہٕ" then
amount = amount * 60
u = "مِنَٹ"
elseif u == "دۄہ" then
amount = amount * 24 * 60
u = "مِنَٹ"
end
return amount .. " " .. u
end
local function obtenirDataOrdenacio(item_id)
if not item_id then return "9999-99-99" end
local function primera(prop_id)
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return nil end
local any, mes, dia = raw:match("%+(%d%d%d%d)%-(%d%d)%-(%d%d)T")
if not any then return nil end
if mes == "00" then mes = "01" end
if dia == "00" then dia = "01" end
return string.format("%s-%s-%s", any, mes, dia)
end
return primera("P580")
or primera("P577")
or primera("P571")
or "9999-99-99"
end
local function getListSitelinkFromProp(item_id, prop_id)
local qid = getClaims(item_id, prop_id, true)[1]
if not qid then return "" end
return wikidades.getSiteLink{qid} or ("d:" .. qid)
end
----------------------------------------------------------
-- EDITORIALS
----------------------------------------------------------
local function obtenirEditorialsWikibase(qid)
local entity = mw.wikibase.getEntity(qid)
if not entity or not entity.claims or not entity.claims.P123 or #entity.claims.P123 == 0 then
return nil
end
local preferent
local primer_trobat = nil
local catalanes = {}
for _, claim in ipairs(entity.claims.P123) do
local ed_qid = claim.mainsnak.datavalue and claim.mainsnak.datavalue.value.id
if ed_qid then
local label = wdLink(ed_qid)
local lang_label = nil
local es_cat = false
if claim.qualifiers and claim.qualifiers.P407 then
for _, qv in ipairs(claim.qualifiers.P407) do
if qv.datavalue.value.id == "Q33552" then
es_cat = true
break
end
end
if es_cat then
lang_label, _ = getLabelData("Q33552")
else
local qid_lang = claim.qualifiers.P407[1].datavalue.value.id
lang_label, _ = getLabelData(qid_lang)
end
end
local text = label
if lang_label then
text = text .. " (" .. lang_label .. ")"
end
if es_cat then
table.insert(catalanes, text)
else
if not primer_trobat then primer_trobat = text end
if claim.rank == "preferred" and not preferent then
preferent = text
end
end
end
end
preferent = preferent or primer_trobat
if not preferent and #catalanes == 0 then return nil end
local resultat = {}
if preferent then table.insert(resultat, preferent) end
for _, c in ipairs(catalanes) do
if c ~= preferent then table.insert(resultat, c) end
end
return table.concat(resultat, "<br />")
end
----------------------------------------------------------
-- FILTRAR PER P31
----------------------------------------------------------
local function filtrarPerP31(llista, qid_tipus)
local coincideixen, resta = {}, {}
for _, q in ipairs(llista) do
local trobat = false
for _, classe in ipairs(getClaims(q, "P31", true)) do
if classe == qid_tipus then
trobat = true
break
end
end
table.insert(trobat and coincideixen or resta, q)
end
return coincideixen, resta
end
----------------------------------------------------------
-- CSS
----------------------------------------------------------
local CSS = {
HEADER = "ita-header",
SUBHEADER = "ita-subheader",
TIPUS = "ita-tipus",
CELL_L = "ita-cell-l",
CELL_R = "ita-cell-r",
ICON_CELL = "ita-icon-cell",
ICON_CELL_R = "ita-icon-cell-r",
CELL_FULL = "ita-cell-full",
}
local function filaEtiquetaValor(contenidor, label, valor, collapsible)
local fila = contenidor:tag("tr")
if collapsible then
fila:addClass("mw-collapsible-content")
end
fila:tag("td"):addClass(CSS.CELL_L):wikitext(label)
fila:tag("td"):addClass(CSS.CELL_R):wikitext(valor)
return fila
end
----------------------------------------------------------
-- GENERAR NUCLI (VERSIÓ COMPLETA, OPCIÓ B)
----------------------------------------------------------
local function generarNucli(item_id, args, es_grup, id_pare, te_genere_pare)
if not item_id or not mw.wikibase.isValidEntityId(item_id) then
return ""
end
local html = mw.html.create()
------------------------------------------------------
-- NOM BASE + IDIOMA
------------------------------------------------------
local nom_base, nom_base_lang = getLabelData(item_id)
local ret_lang_subheader = ""
local ret_icon_subheader = ""
if nom_base_lang and nom_base_lang ~= "ks" and nom_base_lang ~= "mul" then
ret_lang_subheader =
" <span style='font-weight:normal'><sup>(" .. nom_base_lang .. ")</sup></span>"
ret_icon_subheader =
" [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|" ..
mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain() ..
"|link=https://www.wikidata.org/wiki/" .. item_id .. "?uselang=ks]]"
end
------------------------------------------------------
-- TIPUS
------------------------------------------------------
local tipus_text = obtenirTipusText(args.tipus, item_id)
local tipus_net = netejarWikilink(tipus_text)
local mode = tipus_a_mode[tipus_net] or ""
------------------------------------------------------
-- SUBHEADER (si és grup)
------------------------------------------------------
if es_grup then
local estil_sub = es_no_llati(nom_base)
local sitelink = wikidades.getSiteLink{item_id}
local dest_link = sitelink
and ("[[" .. sitelink .. "|" .. nom_base .. "]]")
or ("[[d:" .. item_id .. "|" .. nom_base .. "]]")
local text =
"<span style='" .. estil_sub .. "'>" .. dest_link .. "</span>" ..
ret_lang_subheader ..
ret_icon_subheader ..
obtenirTitolOriginal(item_id, nom_base, false)
local fila_sh = html:tag("tr")
fila_sh:addClass("mw-collapsible-content")
fila_sh:tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(text)
end
------------------------------------------------------
-- FILA TIPUS + ICONES (VERSIÓ SENSE TAULA INTERNA)
------------------------------------------------------
local fila_tipus = html:tag("tr")
fila_tipus:addClass("mw-collapsible-content ita-row-tipus")
-- Cel·la esquerra (tipus)
fila_tipus:tag("td")
:addClass(CSS.TIPUS)
:wikitext(tipus_text)
local td_icones = fila_tipus:tag("td")
td_icones:addClass(CSS.CELL_R .. " ita-icons-flex")
local wrapper = td_icones:tag("div")
wrapper:addClass("ita-icons-wrapper")
local td_esq = wrapper:tag("div")
td_esq:addClass("ita-icons-left " .. CSS.ICON_CELL)
local td_dre = wrapper:tag("div")
td_dre:addClass("ita-icons-right " .. CSS.ICON_CELL_R)
------------------------------------------------------
-- ETIQUETA PERÍODE (funció interna)
------------------------------------------------------
local function _obtenirEtiquetaPeriode_local(qid, tipus_str)
local t = mw.ustring.lower(tipus_str or "")
local m = tipus_a_mode[majusculaInicial(t)] or ""
if m == "franquicia" then
return etiquetaProp("P2348")
end
if m == "llibre" or m == "videojoc" then
return etiquetaProp(qid_labels.publicacio)
end
if m == "pelicula" then
local te_p577 = wikidades.claim{item=qid, property="P577", list=false}
local te_p582 = wikidades.claim{item=qid, property="P582", list=false}
if te_p577 and te_p577 ~= "" then
return etiquetaProp(qid_labels.estrena)
elseif te_p582 and te_p582 ~= "" then
return etiquetaProp(qid_labels.emissio)
else
return etiquetaProp(qid_labels.estrena)
end
end
return etiquetaProp(qid_labels.emissio)
end
------------------------------------------------------
-- ICONA DURADA (P2047)
------------------------------------------------------
local text_durada = obtenirDurada(item_id)
if text_durada then
td_esq:wikitext("[[File:Hourglass icon.png|middle|class=notpageimage|link=|وَقٕف]] " .. text_durada .. " ")
end
------------------------------------------------------
-- ICONA DE LLISTA (P31)
------------------------------------------------------
local p31_qid = getClaims(item_id, "P31", true)[1] or ""
if p31_qid == "Q24856" or p31_qid == "Q7058673" or p31_qid == "Q29982285" then
local link = getListSitelinkFromProp(item_id, "P2354")
if link == "" then
link = wikidades.getSiteLink{item_id} or ("d:" .. item_id)
end
td_esq:wikitext("[[File:Font Awesome 5 regular list-alt.svg|middle|class=notpageimage|link=" .. link .. "]] ")
end
------------------------------------------------------
-- ICONA VOLUMS / PEL·LÍCULES (P2635)
------------------------------------------------------
local raw_volums = wikidades.claim{
item = item_id,
property = "P2635",
formatting = "raw",
list = false
}
if raw_volums and raw_volums ~= "" then
local quant = tostring(raw_volums):gsub("%+","")
if p31_qid == "Q29982285" then
td_esq:wikitext(
"[[File:Tabler-icons_movie.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|فِلِمہٕ]] " .. quant .. " فِلِمہٕ "
)
else
td_esq:wikitext(
"[[File:OpenMoji-black 1F4DA.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|جِلٕد]] " .. quant .. " جِلٕد "
)
end
end
------------------------------------------------------
-- ICONA EPISODIS (P1113)
------------------------------------------------------
local text_ep = ""
local raw_ep = wikidades.claim{
item = item_id,
property = "P1113",
formatting = "raw",
list = false
}
if raw_ep and raw_ep ~= "" then
text_ep = tostring(raw_ep):gsub("%+","")
end
if text_ep ~= "" then
local link_ep = getListSitelinkFromProp(item_id,"P1811")
if link_ep == "" then
link_ep = getListSitelinkFromProp(item_id,"P2354")
end
td_esq:wikitext(
"<span style='display:inline-block;width:1px;'></span>[[File:Noun TV Episodes 3303322.svg|middle|class=notpageimage|link=" ..
link_ep .. "|قِسٕط]] " .. text_ep .. " "
)
end
------------------------------------------------------
-- ICONES EXTERNES
------------------------------------------------------
td_dre:wikitext(generarIconesExternes(item_id) .. linkEditicon(item_id))
------------------------------------------------------
-- PROPIETATS SECUNDÀRIES (FILES NORMALS)
------------------------------------------------------
local propietats = {
"P144","P4970","P50","P110","P178","P58","P287","P86","P57","P162",
"P136","P400","P272","P275","P449","P123","P2360","P1433"
}
for _, pid in ipairs(propietats) do
local admetre = true
if pid == "P144" then
local qid_p144 = getClaims(item_id, "P144", true)[1]
if qid_p144 and (qid_p144 == item_id or qid_p144 == id_pare) then
admetre = false
end
end
if pid == "P136" and es_grup and te_genere_pare then
admetre = false
end
if admetre then
local label = etiquetaProp(pid)
if pid == "P123" and (mode == "videojoc" or mode == "audiovisual") then
label = etiquetaProp(qid_labels.distribuidor)
end
if pid == "P272" and (mode == "pelicula" or mode == "audiovisual") then
label = "سٕٹوٗڈیو"
end
if pid == "P2360" then
label = "قٕسٕم"
end
if pid == "P136" then
label = etiquetaProp(qid_labels.genere)
end
if pid == "P1433" and (tipus_net == "مانٛگا" or tipus_net == "مانٛگا سیٖریٖز" or tipus_net == "وَن-شاٹ") then
label = etiquetaProp(qid_labels.revista)
end
if pid == "P449" and mode == "audiovisual" then
label = "چَینَل"
end
--------------------------------------------------
-- GÈNERE (neteja unificada)
--------------------------------------------------
if pid == "P136" then
local valors = {}
for i, qid in ipairs(getClaims(item_id, "P136", true)) do
local label_qid = getLabelData(qid)
local text_net = netejarGenere(label_qid)
if i > 1 then
text_net = text_net:sub(1,1):lower() .. text_net:sub(2)
end
local sitelink = wikidades.getSiteLink{qid}
if sitelink and sitelink ~= "" then
table.insert(valors, "[[" .. sitelink .. "|" .. text_net .. "]]")
else
table.insert(valors, "[[d:" .. qid .. "|" .. text_net .. "]]")
end
end
if #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
--------------------------------------------------
-- EDITORIALS
--------------------------------------------------
elseif pid == "P123" then
local valors = obtenirEditorialsWikibase(item_id)
if valors then
filaEtiquetaValor(html, label, valors, true)
end
--------------------------------------------------
-- ALTRES PROP.
--------------------------------------------------
else
local valors = getClaims(item_id, pid, false)
if valors and #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
end
end
end
------------------------------------------------------
-- DATES (P580 / P577 / P582)
------------------------------------------------------
local data_inici_p580 = getClaims(item_id, "P580", false)[1]
if data_inici_p580 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local data_fi = getClaims(item_id, "P582", false)[1]
local text_data = formatarData(data_inici_p580)
if data_fi then
text_data = text_data .. " – " .. formatarData(data_fi)
end
filaEtiquetaValor(html, label_data, text_data, true)
else
--------------------------------------------------
-- CAS AMB P577 (pot tenir múltiples dates)
--------------------------------------------------
local entity = mw.wikibase.getEntity(item_id)
local claims_p577 = entity and entity.claims and entity.claims.P577 or {}
if #claims_p577 > 0 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local linies = {}
for _, claim in ipairs(claims_p577) do
local dv = claim.mainsnak and claim.mainsnak.datavalue
if dv then
local iso = dv.value and dv.value.time or ""
local data_fmt = formatarData(iso)
local quals = {}
if claim.qualifiers then
if claim.qualifiers.P291 then
for _, q in ipairs(claim.qualifiers.P291) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
if claim.qualifiers.P400 then
for _, q in ipairs(claim.qualifiers.P400) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
end
local linia = data_fmt
if #quals > 0 then
linia = linia .. " (" .. table.concat(quals, ", ") .. ")"
end
table.insert(linies, linia)
end
end
if #linies > 0 then
if #linies == 1 then
filaEtiquetaValor(html, label_data, linies[1], true)
else
local ocultes = {}
for i = 2, #linies do
table.insert(ocultes, linies[i])
end
local text_final =
'<table class="mw-collapsible mw-collapsed" style="width:100%; border-spacing:0;">' ..
'<tr><th colspan="2" style="text-align:left; font-weight:normal;">' .. linies[1] .. '</th></tr>' ..
'<tr><td>' .. table.concat(ocultes, "<br>") .. '</td></tr>' ..
'</table>'
filaEtiquetaValor(html, label_data, text_final, true)
end
end
end
end
------------------------------------------------------
-- RETORNAR EL RESULTAT
------------------------------------------------------
return tostring(html)
end
----------------------------------------------------------
-- p.infotaula
----------------------------------------------------------
local LIMIT_VISIBLE = 4
function p.infotaula(frame)
local args = getArgs(frame, {wrappers = "فرما:اِنفوباکس اؠنِمے مانٛگا"})
local item_id = (args.item and args.item ~= "") and args.item
or mw.wikibase.getEntityIdForCurrentPage()
if not item_id then
return "<span class='error'>غَلطی: وِکیٖڈیٹاہَس سٟتؠ مُنسَلِق کانٛہہ تہِ عُنصَر آو نہٕ لَبنہٕ۔</span>"
end
---------------------------------------------------------
-- SELECCIONATS
---------------------------------------------------------
local seleccionats_raw = args.seleccionats or ""
local seleccionats = {}
if seleccionats_raw ~= "" then
for qid in seleccionats_raw:gmatch("Q%d+") do
seleccionats[qid] = true
end
end
---------------------------------------------------------
-- DELEGACIÓ SI NO ÉS GRUP / FRANQUÍCIA
---------------------------------------------------------
local parts = getClaims(item_id, "P527", true)
local derivades = getClaims(item_id, "P4969", true)
if #parts == 0 and #derivades == 0 then
local tipus = netejarWikilink(obtenirTipusText(args.tipus, item_id))
local mode = tipus_a_mode[tipus]
if mode == "pelicula" then
return frame:expandTemplate{
title = "فِلِم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "llibre" then
return frame:expandTemplate{
title = "کِتاب اِنفوباکس",
args = { item = item_id, titol = args.nom, manga = "y" }
}
elseif mode == "videojoc" then
return frame:expandTemplate{
title = "ویٖڈیو گیم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "audiovisual" then
return frame:expandTemplate{
title = "آڈیو وِجُوَل پروگرام اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
end
end
---------------------------------------------------------
-- MODE FRANQUÍCIA
---------------------------------------------------------
local res = mw.html.create("table")
:addClass("infobox")
:addClass("infotaula-animanga")
local titol = args.nom
or getLabelData(item_id)
or mw.title.getCurrentTitle().text
res:tag("caption")
:addClass(CSS.HEADER)
:wikitext(
'<div style="display:flex; align-items:center;">' ..
'<div style="flex:0 0 30px; min-width:30px;">' ..
'<span style="position:relative; left:2px;">[[File:Anime manga japanese characters icon.svg|30px|اِنفوباکس اؠنِمے مانٛگا|class=skin-invert notpageimage]]</span>' ..
'</div>' ..
'<div style="flex:1 1 auto;">' ..
'<span style="font-weight:bold; font-style:italic;">' .. titol .. '</span>' ..
obtenirTitolOriginal(item_id, titol, true) ..
'</div>' ..
'<div style="flex:0 0 30px; min-width:30px;"></div>' ..
'</div>'
)
---------------------------------------------------------
-- IMATGE PRINCIPAL (amb fallback a logo P154)
---------------------------------------------------------
local img = obtenirImatge(item_id, args, "P18", "imatge")
local logo = obtenirImatge(item_id, args, "P154", "logo")
local mostrar_logo_apart = true
if img.nom then
local mida = midaImatge(img.nom, 250, 350)
local td_img = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
td_img:wikitext("[[File:" .. img.nom .. "|" .. mida .. "|center]]")
if img.peu and img.peu ~= "" then
td_img:tag("span")
:addClass("ita-img-caption")
:wikitext(img.peu)
end
elseif logo.nom then
-- Fallback: no hi ha P18, però sí P154 → l'usem com a imatge principal
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
mostrar_logo_apart = false
else
res:wikitext("[[زٲژ:مانٛگانِمی مَضموٗن یِمَن تَصویٖرٕچ ضروٗرَتھ چھِ]]")
end
---------------------------------------------------------
-- LOGO (P154) — només si NO s'ha usat ja com a fallback
---------------------------------------------------------
if logo.nom and mostrar_logo_apart then
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
end
---------------------------------------------------------
-- NUCLI PRINCIPAL DEL PARE
---------------------------------------------------------
local pare_te_genere = (#getClaims(item_id, "P136", true) > 0)
res:wikitext(generarNucli(item_id, args, false, item_id, false))
---------------------------------------------------------
-- FORMAT PER (P527)
---------------------------------------------------------
local elements_valids = {}
local exclos_p527 = {
Q125632018=true, Q3464665=true,
Q102364578=true, Q21191270=true
}
for _, tid in ipairs(parts) do
if next(seleccionats) ~= nil and not seleccionats[tid] then
-- exclòs per selecció
else
local exclos = false
for _, p31id in ipairs(getClaims(tid, "P31", true)) do
if exclos_p527[p31id] then
exclos = true
break
end
end
if not exclos then
table.insert(elements_valids, tid)
end
end
end
table.sort(elements_valids, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (Q2620972)
---------------------------------------------------------
local arcs_narratius
arcs_narratius, elements_valids = filtrarPerP31(elements_valids, "Q2620972")
---------------------------------------------------------
-- ARTICLES DE LLISTA (Q13406463) dins P527
---------------------------------------------------------
local llistes_p527
llistes_p527, elements_valids = filtrarPerP31(elements_valids, "Q13406463")
---------------------------------------------------------
-- OBRA DERIVADA (P4969)
---------------------------------------------------------
local ids_der_raw = derivades
local ids_der_filtrats = {}
for _, tid in ipairs(ids_der_raw) do
if next(seleccionats) == nil or seleccionats[tid] then
table.insert(ids_der_filtrats, tid)
end
end
local llistes_der, ids_der = filtrarPerP31(ids_der_filtrats, "Q13406463")
table.sort(ids_der, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (render)
---------------------------------------------------------
if #arcs_narratius > 0 then
res:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(getLabelData("Q2620972")) .. linkEditicon(item_id))
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, q in ipairs(arcs_narratius) do
local nom = getLabelData(q)
ul:tag("li"):wikitext(wdLink(q, nom))
end
end
---------------------------------------------------------
-- FUNCIONS AUXILIARS PER LLISTES
---------------------------------------------------------
local function mostrarLlistes(llistes, contenidor)
for _, q_llista in ipairs(llistes) do
local nom_llista = getLabelData(q_llista)
contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(nom_llista) .. " " .. linkEditicon(q_llista))
local membres = getClaims(q_llista, "P527", true)
if #membres > 0 then
if #membres > 5 then
-- Llista desplegable
local taula_col = contenidor:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(tostring(#membres) .. " عَناصِر")
local ul_membres = taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
else
local ul_membres = contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
end
end
end
end
---------------------------------------------------------
-- MOSTRAR FORMAT PER + OBRA DERIVADA (amb límit)
---------------------------------------------------------
local total = #elements_valids + #ids_der
if total > LIMIT_VISIBLE then
local visibles_p527 = math.min(#elements_valids, LIMIT_VISIBLE)
local visibles_der = math.min(#ids_der, math.max(0, LIMIT_VISIBLE - visibles_p527))
-----------------------------------------------------
-- PRIMERA PART: ELEMENTS VISIBLES NORMALS
-----------------------------------------------------
if visibles_p527 > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for i = 1, visibles_p527 do
res:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if visibles_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
for i = 1, visibles_der do
res:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
---------------------------------------------------------
-- BLOC PLEGABLE "MÉS" (contenidor taula necessari)
---------------------------------------------------------
local taula_col = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
-- capçalera "Més"
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext('<span class="ita-mes-text">مزیٖد</span>')
local resta_p527 = visibles_p527 < #elements_valids
local resta_der = visibles_der < #ids_der
local ambdues = resta_p527 and resta_der
---------------------------------------------------------
-- CONTINGUT PLEGABLE: P527
---------------------------------------------------------
if resta_p527 then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
end
for i = visibles_p527 + 1, #elements_valids do
taula_col:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
---------------------------------------------------------
-- CONTINGUT PLEGABLE: OBRES DERIVADES
---------------------------------------------------------
if resta_der then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
end
for i = visibles_der + 1, #ids_der do
taula_col:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
else
-----------------------------------------------------
-- CAS SENSE PLEGABLE
-----------------------------------------------------
if #elements_valids > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for _, tid in ipairs(elements_valids) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if #ids_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
for _, tid in ipairs(ids_der) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
end
---------------------------------------------------------
-- ALTRES (P5940)
---------------------------------------------------------
local ids_p5940 = getClaims(item_id, "P5940", true)
if #ids_p5940 > 0 then
-- Capçalera "Altres"
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("باقی")
-- Obtenim l'entitat UNA sola vegada
local entity = mw.wikibase.getEntity(item_id)
local claims_p5940 = entity and entity.claims and entity.claims.P5940 or {}
-- Indexem els claims per QID per evitar bucles interns
local claims_index = {}
for _, claim in ipairs(claims_p5940) do
local snak = claim.mainsnak
local q = snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id
if q then
claims_index[q] = claim
end
end
-- Construïm la llista i la mostrem en punts
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, qid in ipairs(ids_p5940) do
local text = wdLink(qid)
local claim = claims_index[qid]
if claim and claim.qualifiers and claim.qualifiers.P3831 then
local qual = claim.qualifiers.P3831[1]
local q_val = qual.datavalue and qual.datavalue.value and qual.datavalue.value.id
if q_val then
text = text .. " (" .. wdLink(q_val) .. ")"
end
end
ul:tag("li"):wikitext(text)
end
end
---------------------------------------------------------
-- PORTAL
---------------------------------------------------------
local portal_val = args.portal or ""
if portal_val ~= "" and portal_val:lower() ~= "no" then
local portal_expandit = frame:preprocess(
"[[File:Wikipe-tan face.svg|16px||class=notpageimage|link=Portal:Anime i Manga|اؠنِمے تہٕ مانٛگا پورٹَل]] " ..
"[[Portal:Anime i Manga|اؠنِمے تہٕ مانٛگا پورٹَل]]"
)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:addClass(CSS.CELL_FULL)
:wikitext(portal_expandit)
end
---------------------------------------------------------
-- ESTILS
---------------------------------------------------------
local styles = frame:extensionTag("templatestyles", "", {src="Module: Infotaula animanga/estils.css"})
return styles .. tostring(res)
end
return p
ppg3r3wow3g0lzndtsb9k1q6ct0xx64
148896
148892
2026-08-10T14:17:09Z
آیات محراج
11062
148896
Scribunto
text/plain
local p = {}
----------------------------------------------------------
-- REQUERIMENTS I CONSTANTS
----------------------------------------------------------
local wikidades = require("Module:Wikidades")
local getArgs = require("Module:Arguments").getArgs
local qid_labels = {
publicacio = "Q732577",
estrena = "Q204854",
emissio = "Q109507868",
distribuidor = "Q12540664",
genere = "Q483394",
revista = "Q41298",
}
----------------------------------------------------------
-- FUNCIONS BÀSIQUES
----------------------------------------------------------
local function formatarData(iso)
if not iso or iso == "" then return "" end
local clean = iso:match("^%+?(%d%d%d%d%-%d%d%-%d%d)")
if not clean then return iso end
local any, m, d = clean:match("^(%d+)%-(%d+)%-(%d+)")
if not any then return iso end
local lang = mw.language.getContentLanguage()
if m == "00" then return any end
if d == "00" then
local fake = any .. "-" .. m .. "-01"
return lang:formatDate("F Y", fake)
end
return lang:formatDate("j F Y", clean)
end
local function netejaNomFitxer(raw)
local nom = tostring(raw):gsub("[%[%]]",""):gsub("^[Ff]it[xz]er:",""):gsub("^[Ff]ile:","")
if nom:find("|") then nom = nom:match("^([^|]+)") or nom end
return nom
end
local function midaImatge(nom, max_w, max_h)
local ext = nom:lower()
if ext:match("%.svg$") or ext:match("%.gif$") then
return max_w .. "px"
else
return max_w .. "x" .. max_h .. "px"
end
end
local function obtenirImatge(item_id, args, prop, param)
prop = prop or "P18"
param = param or "imatge"
if args[param] == "NONE" then
return { nom = nil, peu = nil }
end
if args[param] and args[param] ~= "" then
return { nom = netejaNomFitxer(args[param]), peu = args["peu"] or nil }
end
local raw = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if not raw or raw == "" then
return { nom = nil, peu = nil }
end
local nom = netejaNomFitxer(raw)
local peu = args["peu"]
if not peu or peu == "" then
local raw_caption = wikidades.claim{
item = item_id, property = prop,
qualifier = "P2096", formatting = "raw", list = false
}
if raw_caption and raw_caption ~= "" then peu = raw_caption end
end
return { nom = nom, peu = peu }
end
----------------------------------------------------------
-- ICONES EXTERNES
----------------------------------------------------------
local function getIconaPropieta(prop)
local entity = mw.wikibase.getEntity(prop)
if not entity or not entity.claims then return nil end
local function millor_claim(prop_id)
local claims = entity.claims[prop_id]
if not claims then return nil end
local preferent, normal = nil, nil
for _, claim in ipairs(claims) do
local rank = claim.rank
local val = claim.mainsnak.datavalue
and claim.mainsnak.datavalue.value
local nom = val and (type(val)=="string" and val or val.text or val.id)
if nom and nom ~= "" then
if rank=="preferred" and not preferent then preferent = nom
elseif rank=="normal" and not normal then normal = normal or nom end
end
end
return preferent or normal
end
return millor_claim("P8972") or millor_claim("P2910")
end
local external_link_props = {
"P1984", "P1985", "P345",
}
local function generarIconesExternes(item_id)
local html = {}
for _, prop in ipairs(external_link_props) do
local val = wikidades.claim{
item = item_id, property = prop,
formatting = "raw", list = false
}
if val and val ~= "" then
local formatter = wikidades.claim{
item = prop, property = "P1630",
formatting = "raw", list = false
}
local label = mw.wikibase.getLabel(prop) or prop
local icon = getIconaPropieta(prop)
if formatter and formatter ~= "" and icon then
local url = formatter:gsub("%$1", val)
table.insert(html,
string.format(
'[[File:%s|middle|link=%s|class=notpageimage|%s]] ',
icon, url, label
)
)
end
end
end
return table.concat(html, "")
end
----------------------------------------------------------
-- LABELS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getLabelData(qid)
local label, lang = nil, nil
for _, l in ipairs({"ks","mul","en","ja","ko","zh"}) do
local t = mw.wikibase.getLabelByLang(qid, l)
if t and t ~= "" then
label = t
lang = l
break
end
end
if not label then
label = qid
lang = nil
end
return label, lang
end
local function wdLink(qid, label_override)
if label_override and label_override ~= "" then
return "[[d:" .. qid .. "|" .. label_override .. "]]"
end
local label, lang = getLabelData(qid)
local sitelink = wikidades.getSiteLink{qid}
local link = sitelink
and ("[[" .. sitelink .. "|" .. label .. "]]")
or ("[[d:" .. qid .. "|" .. label .. "]]")
if lang and lang ~= "ks" and lang ~= "mul" then
link = link
.. " <sup>(" .. lang .. ")</sup>"
.. " [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|"
.. mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain()
.. "|link=https://www.wikidata.org/wiki/" .. qid .. "?uselang=ks]]"
end
return link
end
----------------------------------------------------------
-- CLAIMS UNIFICATS (PUNT 1)
----------------------------------------------------------
local function getClaims(item_id, prop_id, only_qids)
if not item_id then return {} end
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return {} end
local result = {}
for v in raw:gmatch("[^/·/]+") do
if only_qids then
local q = v:match("^(Q%d+)$")
if q then table.insert(result, q) end
else
if v:match("^Q%d+$") then
table.insert(result, wdLink(v))
else
table.insert(result, v)
end
end
end
return result
end
----------------------------------------------------------
-- NETEJA DE GÈNERE UNIFICADA (PUNT 1)
----------------------------------------------------------
local APO = "['’`´ʼ‛]"
local GEN_PREFIX = {
"^مانٛگا تہٕ اؠنِمے%s+ہُنٛد%s*",
"^اؠنِمے تہٕ مانٛگا%s+ہُنٛد%s*",
"^مانٛگا%s+ہُنٛد%s*",
"^اؠنِمے%s+ہُنٛد%s*",
"^مانٛگا تہٕ اؠنِمے%s+",
"^اؠنِمے تہٕ مانٛگا%s+",
"^مانٛگا%s+",
"^اؠنِمے%s+",
}
local function netejarGenere(label)
local lower = label:lower()
for _, pat in ipairs(GEN_PREFIX) do
local resta = lower:gsub(pat, "")
if resta ~= lower then
label = label:gsub(pat, "")
break
end
end
label = label:gsub("%s*%b()", "")
label = label:gsub("^d[^a-zà-üA-ZÀ-Ü]+", "")
label = label:gsub("%s+$", "")
return label:sub(1,1):upper() .. label:sub(2)
end
----------------------------------------------------------
-- TIPUS I MAPES
----------------------------------------------------------
local tipus_def = {
["شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q24862" } },
["فرنچایِز"] = { mode = "franquicia", qids = { "Q196600" } },
["اؠنِمے فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q29982285" } },
["اؠنیٖمیٹِڈ شوٹ فِلِم"] = { mode = "pelicula", qids = { "Q17517379" } },
["موٗسیٖقی ہُنٛد ویٖڈیو"] = { mode = "audiovisual", qids = { "Q193977", "Q55960075", "Q64100970" } },
["اؠنِمے فِلِم"] = { mode = "pelicula", qids = { "Q20650540" } },
["فِلِم سیٖریٖز"] = { mode = "pelicula", qids = { "Q24856" } },
["ویٖڈیو گیم سیٖریٖز"] = { mode = "videojoc", qids = { "Q7058673" } },
["فِلِم"] = { mode = "pelicula", qids = { "Q229390", "Q11424" } },
["اؠنیٖمیٹِڈ فِلِم"] = { mode = "pelicula", qids = { "Q29168811", "Q202866" } },
["اؠنیٖمیٹِڈ سیٖریٖز"] = { mode = "audiovisual", qids = { "Q581714" } },
["اؠنِمے"] = { mode = "audiovisual", qids = { "Q63952888", "Q11086742", "Q100269041", "Q104640199" } },
["ریڈیو ڈرامہ"] = { mode = "audiovisual", qids = { "Q2635894" } },
["او وی اے"] = { mode = "audiovisual", qids = { "Q220898" } },
["او وی اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113687694" } },
["موٗسیٖقی"] = { mode = "pelicula", qids = { "Q58483083" } },
["وَن-شاٹ"] = { mode = "llibre", qids = { "Q933530", "Q21202185" } },
["او اے ڈی"] = { mode = "audiovisual", qids = { "oad" } },
["او اؠن اے سیٖریٖز"] = { mode = "audiovisual", qids = { "Q113671041" } },
["او اؠن اے"] = { mode = "audiovisual", qids = { "Q1047299" } },
["ڈوراما"] = { mode = "audiovisual", qids = { "Q399811" } },
["خاص"] = { mode = "audiovisual", qids = { "Q1261214" } },
["لایِو اؠکشَن"] = { mode = nil, qids = { "live action" } },
["وِجُوَلی ناوَل"] = { mode = "videojoc", qids = { "Q689445" } },
["گیم"] = { mode = nil, qids = { "Q11410" } },
["ناوَل"] = { mode = "llibre", qids = { "Q747381" } },
["ناوَل سیٖریٖز"] = { mode = "llibre", qids = { "Q104213567" } },
["ویٖڈیو گیم"] = { mode = "videojoc", qids = { "Q7889" } },
["ڈوجِنشی"] = { mode = "llibre", qids = { "Q668711" } },
["مانٛگا سیٖریٖز"] = { mode = "llibre", qids = { "Q21198342" } },
["مانٛگا"] = { mode = "llibre", qids = { "Q8274" } },
["اِشتِہار"] = { mode = "audiovisual", qids = { "Q11796892", "Q854995" } },
["سی ڈی ڈرامہ"] = { mode = "audiovisual", qids = { "Q244351" } },
["مانٛگا فِلِم"] = { mode = "pelicula", qids = { "Q116790751" } },
["کَمِک"] = { mode = "llibre", qids = { "Q1004" } },
["ٹی وی سیٖریٖز"] = { mode = "audiovisual", qids = { "Q5398426", "Q21191019" } },
["وؠب سیٖریٖز"] = { mode = "audiovisual", qids = { "Q526877" } },
["وؠب ٹوٗن"] = { mode = "llibre", qids = { "Q7978994" } },
["مَنہوا سیٖریٖز"] = { mode = "llibre", qids = { "Q74262765" } },
["مَنہوا"] = { mode = "llibre", qids = { "Q754669" } },
["لایِو اؠکشَن فِلِم"] = { mode = "pelicula", qids = { "pel·lícula live action" } },
["لایِٹ ناوَل"] = { mode = "llibre", qids = {} },
}
local tipus_map = {}
local tipus_a_mode = {}
for tipus, def in pairs(tipus_def) do
tipus_a_mode[tipus] = def.mode
for _, qid in ipairs(def.qids) do
tipus_map[qid] = tipus
end
end
local link_desti = {
["مانٛگا سیٖریٖز"] = "مانٛگا",
["فرنچایِز"] = "میٖڈیا فرنچایِز",
}
local function majusculaInicial(s)
if not s or s == "" then return s end
return mw.ustring.upper(mw.ustring.sub(s, 1, 1)) .. mw.ustring.sub(s, 2)
end
local function etiquetaProp(pid)
local label = mw.wikibase.getLabel(pid)
return majusculaInicial(label or "")
end
local function obtenirTipusText(tipus_param, item_id)
local val = (tipus_param and tipus_param ~= "") and string.lower(tipus_param) or ""
local map = tipus_map
if val == "" and item_id then
local ids = getClaims(item_id, "P31", true)
if #ids == 0 then return "باقی" end
local primer = ids[1]
for _, id in ipairs(ids) do
if map[id] then
val = id
break
end
end
if val == "" then val = primer end
end
local function linkSiExisteix(t, desti)
local target = desti or t
local title = mw.title.new(target)
if title and title.exists then return "[[" .. target .. "|" .. t .. "]]" end
return t
end
if map[val] then
return linkSiExisteix(map[val], link_desti[map[val]])
end
local label, _ = getLabelData(val)
return label and majusculaInicial(label) or "باقی"
end
local function netejarWikilink(text)
return text
:gsub("%[%[[^|]+|([^%]]+)%]%]", "%1")
:gsub("%[%[([^%]]+)%]%]", "%1")
end
----------------------------------------------------------
-- UTILITATS DIVERSES
----------------------------------------------------------
local function linkEditicon(item_id)
return "<span class='ita-edit-icon' style='margin-left:4px;'>[[File:OOjs UI icon edit-ltr-progressive.svg|middle|class=notpageimage|link=d:"
.. item_id .. "|وِکیٖڈیٹاہَس پؠٹھ کٔرِو اؠڈِٹ]]</span>"
end
local function es_no_llati(s)
local te_no_llati = mw.ustring.find(s, "[^A-Za-zÀ-ÖØ-öø-ÿĀ-ſ0-9%s%p]") ~= nil
if te_no_llati then
return "font-weight:normal;"
else
return "font-style:italic;"
end
end
----------------------------------------------------------
-- TRANSLITERACIÓ (qualificadors de P1476)
----------------------------------------------------------
local PROPS_TRANSLIT = {
"P2440",
"P2125",
"P1942",
"P2001",
"P5139",
"P1721",
}
local function obtenirTransliteracio(item_id)
local entity = mw.wikibase.getEntity(item_id)
if not entity or not entity.claims or not entity.claims.P1476 then return nil end
for _, claim in ipairs(entity.claims.P1476) do
if claim.qualifiers then
for _, pid in ipairs(PROPS_TRANSLIT) do
local quals = claim.qualifiers[pid]
if quals then
for _, q in ipairs(quals) do
local val = q.datavalue and q.datavalue.value
if val then
local t = type(val) == "string" and val or val.text
if t and t ~= "" then return t end
end
end
end
end
end
end
return nil
end
local function obtenirTitolOriginal(item_id, titol_catala, es_capcalera)
if not item_id then return "" end
local text = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "table",
colformat0 = "text",
list = false,
rowformat = "$0",
editicon = false,
}
if not text or text == "" or text == titol_catala then
return ""
end
local lang = wikidades.claim{
item = item_id,
property = "P1476",
formatting = "$language",
list = false,
editicon = false,
}
if lang == "" then lang = nil end
local estil_text = es_no_llati(text)
local prefix_lang = ""
if es_capcalera and lang then
prefix_lang = "<sup><span style='font-weight:normal; font-style:normal;'>(" .. lang .. ")</span></sup> "
end
local tooltip_html = ""
if estil_text == "font-weight:normal;" then
local translit = obtenirTransliteracio(item_id)
if translit then
tooltip_html =
'<span class="ita-translit-wrap" tabindex="0">' ..
'<sup class="ita-translit-icon">ⓘ</sup>' ..
'<span class="ita-translit-tip">' .. translit:gsub("'", "'") .. '</span>' ..
'</span>'
end
end
return "<span style='font-size:90%; display:block;'>"
.. prefix_lang
.. "<span style='" .. estil_text .. "'>" .. text .. "</span>"
.. tooltip_html
.. "</span>"
end
local function obtenirDurada(item_id)
local raw = wikidades.claim{
item = item_id,
property = "P2047",
formatting = "raw",
list = false
}
if not raw or raw == "" then return nil end
local amount =
raw:match('"amount"%s*:%s*"(%+?[%d%.%-]+)"') or
raw:match('^%+?(%d+)$') or
raw:match('(%d+)[^%d]*$')
if not amount then return nil end
amount = tonumber(amount)
if not amount then return nil end
local unit =
raw:match('"unit"%s*:%s*"http://www%.wikidata%.org/entity/(Q%d+)"') or
raw:match('"unit"%s*:%s*"(Q%d+)"')
if not unit then
return amount .. " مِنَٹ"
end
local unit_map = {
Q7727 = "مِنَٹ",
Q11574 = "سؠکَنڈ",
Q23387 = "گٲنٛٹہٕ",
Q25235 = "دۄہ"
}
local u = unit_map[unit]
if not u then return amount end
if u == "سؠکَنڈ" then
amount = math.floor(amount / 60)
u = "مِنَٹ"
elseif u == "گٲنٛٹہٕ" then
amount = amount * 60
u = "مِنَٹ"
elseif u == "دۄہ" then
amount = amount * 24 * 60
u = "مِنَٹ"
end
return amount .. " " .. u
end
local function obtenirDataOrdenacio(item_id)
if not item_id then return "9999-99-99" end
local function primera(prop_id)
local raw = wikidades.claim{
item = item_id,
property = prop_id,
formatting = "raw",
list = true,
separator = "/·/"
}
if not raw or raw == "" then return nil end
local any, mes, dia = raw:match("%+(%d%d%d%d)%-(%d%d)%-(%d%d)T")
if not any then return nil end
if mes == "00" then mes = "01" end
if dia == "00" then dia = "01" end
return string.format("%s-%s-%s", any, mes, dia)
end
return primera("P580")
or primera("P577")
or primera("P571")
or "9999-99-99"
end
local function getListSitelinkFromProp(item_id, prop_id)
local qid = getClaims(item_id, prop_id, true)[1]
if not qid then return "" end
return wikidades.getSiteLink{qid} or ("d:" .. qid)
end
----------------------------------------------------------
-- EDITORIALS
----------------------------------------------------------
local function obtenirEditorialsWikibase(qid)
local entity = mw.wikibase.getEntity(qid)
if not entity or not entity.claims or not entity.claims.P123 or #entity.claims.P123 == 0 then
return nil
end
local preferent
local primer_trobat = nil
local catalanes = {}
for _, claim in ipairs(entity.claims.P123) do
local ed_qid = claim.mainsnak.datavalue and claim.mainsnak.datavalue.value.id
if ed_qid then
local label = wdLink(ed_qid)
local lang_label = nil
local es_cat = false
if claim.qualifiers and claim.qualifiers.P407 then
for _, qv in ipairs(claim.qualifiers.P407) do
if qv.datavalue.value.id == "Q33552" then
es_cat = true
break
end
end
if es_cat then
lang_label, _ = getLabelData("Q33552")
else
local qid_lang = claim.qualifiers.P407[1].datavalue.value.id
lang_label, _ = getLabelData(qid_lang)
end
end
local text = label
if lang_label then
text = text .. " (" .. lang_label .. ")"
end
if es_cat then
table.insert(catalanes, text)
else
if not primer_trobat then primer_trobat = text end
if claim.rank == "preferred" and not preferent then
preferent = text
end
end
end
end
preferent = preferent or primer_trobat
if not preferent and #catalanes == 0 then return nil end
local resultat = {}
if preferent then table.insert(resultat, preferent) end
for _, c in ipairs(catalanes) do
if c ~= preferent then table.insert(resultat, c) end
end
return table.concat(resultat, "<br />")
end
----------------------------------------------------------
-- FILTRAR PER P31
----------------------------------------------------------
local function filtrarPerP31(llista, qid_tipus)
local coincideixen, resta = {}, {}
for _, q in ipairs(llista) do
local trobat = false
for _, classe in ipairs(getClaims(q, "P31", true)) do
if classe == qid_tipus then
trobat = true
break
end
end
table.insert(trobat and coincideixen or resta, q)
end
return coincideixen, resta
end
----------------------------------------------------------
-- CSS
----------------------------------------------------------
local CSS = {
HEADER = "ita-header",
SUBHEADER = "ita-subheader",
TIPUS = "ita-tipus",
CELL_L = "ita-cell-l",
CELL_R = "ita-cell-r",
ICON_CELL = "ita-icon-cell",
ICON_CELL_R = "ita-icon-cell-r",
CELL_FULL = "ita-cell-full",
}
local function filaEtiquetaValor(contenidor, label, valor, collapsible)
local fila = contenidor:tag("tr")
if collapsible then
fila:addClass("mw-collapsible-content")
end
fila:tag("td"):addClass(CSS.CELL_L):wikitext(label)
fila:tag("td"):addClass(CSS.CELL_R):wikitext(valor)
return fila
end
----------------------------------------------------------
-- GENERAR NUCLI (VERSIÓ COMPLETA, OPCIÓ B)
----------------------------------------------------------
local function generarNucli(item_id, args, es_grup, id_pare, te_genere_pare)
if not item_id or not mw.wikibase.isValidEntityId(item_id) then
return ""
end
local html = mw.html.create()
------------------------------------------------------
-- NOM BASE + IDIOMA
------------------------------------------------------
local nom_base, nom_base_lang = getLabelData(item_id)
local ret_lang_subheader = ""
local ret_icon_subheader = ""
if nom_base_lang and nom_base_lang ~= "ks" and nom_base_lang ~= "mul" then
ret_lang_subheader =
" <span style='font-weight:normal'><sup>(" .. nom_base_lang .. ")</sup></span>"
ret_icon_subheader =
" [[File:Noun Project label icon 1116097 cc mirror.svg|10px|baseline|class=skin-invert|" ..
mw.message.new("Translate-taction-translate"):inLanguage("ks"):plain() ..
"|link=https://www.wikidata.org/wiki/" .. item_id .. "?uselang=ks]]"
end
------------------------------------------------------
-- TIPUS
------------------------------------------------------
local tipus_text = obtenirTipusText(args.tipus, item_id)
local tipus_net = netejarWikilink(tipus_text)
local mode = tipus_a_mode[tipus_net] or ""
------------------------------------------------------
-- SUBHEADER (si és grup)
------------------------------------------------------
if es_grup then
local estil_sub = es_no_llati(nom_base)
local sitelink = wikidades.getSiteLink{item_id}
local dest_link = sitelink
and ("[[" .. sitelink .. "|" .. nom_base .. "]]")
or ("[[d:" .. item_id .. "|" .. nom_base .. "]]")
local text =
"<span style='" .. estil_sub .. "'>" .. dest_link .. "</span>" ..
ret_lang_subheader ..
ret_icon_subheader ..
obtenirTitolOriginal(item_id, nom_base, false)
local fila_sh = html:tag("tr")
fila_sh:addClass("mw-collapsible-content")
fila_sh:tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(text)
end
------------------------------------------------------
-- FILA TIPUS + ICONES (VERSIÓ SENSE TAULA INTERNA)
------------------------------------------------------
local fila_tipus = html:tag("tr")
fila_tipus:addClass("mw-collapsible-content ita-row-tipus")
-- Cel·la esquerra (tipus)
fila_tipus:tag("td")
:addClass(CSS.TIPUS)
:wikitext(tipus_text)
local td_icones = fila_tipus:tag("td")
td_icones:addClass(CSS.CELL_R .. " ita-icons-flex")
local wrapper = td_icones:tag("div")
wrapper:addClass("ita-icons-wrapper")
local td_esq = wrapper:tag("div")
td_esq:addClass("ita-icons-left " .. CSS.ICON_CELL)
local td_dre = wrapper:tag("div")
td_dre:addClass("ita-icons-right " .. CSS.ICON_CELL_R)
------------------------------------------------------
-- ETIQUETA PERÍODE (funció interna)
------------------------------------------------------
local function _obtenirEtiquetaPeriode_local(qid, tipus_str)
local t = mw.ustring.lower(tipus_str or "")
local m = tipus_a_mode[majusculaInicial(t)] or ""
if m == "franquicia" then
return etiquetaProp("P2348")
end
if m == "llibre" or m == "videojoc" then
return etiquetaProp(qid_labels.publicacio)
end
if m == "pelicula" then
local te_p577 = wikidades.claim{item=qid, property="P577", list=false}
local te_p582 = wikidades.claim{item=qid, property="P582", list=false}
if te_p577 and te_p577 ~= "" then
return etiquetaProp(qid_labels.estrena)
elseif te_p582 and te_p582 ~= "" then
return etiquetaProp(qid_labels.emissio)
else
return etiquetaProp(qid_labels.estrena)
end
end
return etiquetaProp(qid_labels.emissio)
end
------------------------------------------------------
-- ICONA DURADA (P2047)
------------------------------------------------------
local text_durada = obtenirDurada(item_id)
if text_durada then
td_esq:wikitext("[[File:Hourglass icon.png|middle|class=notpageimage|link=|وَقٕف]] " .. text_durada .. " ")
end
------------------------------------------------------
-- ICONA DE LLISTA (P31)
------------------------------------------------------
local p31_qid = getClaims(item_id, "P31", true)[1] or ""
if p31_qid == "Q24856" or p31_qid == "Q7058673" or p31_qid == "Q29982285" then
local link = getListSitelinkFromProp(item_id, "P2354")
if link == "" then
link = wikidades.getSiteLink{item_id} or ("d:" .. item_id)
end
td_esq:wikitext("[[File:Font Awesome 5 regular list-alt.svg|middle|class=notpageimage|link=" .. link .. "]] ")
end
------------------------------------------------------
-- ICONA VOLUMS / PEL·LÍCULES (P2635)
------------------------------------------------------
local raw_volums = wikidades.claim{
item = item_id,
property = "P2635",
formatting = "raw",
list = false
}
if raw_volums and raw_volums ~= "" then
local quant = tostring(raw_volums):gsub("%+","")
if p31_qid == "Q29982285" then
td_esq:wikitext(
"[[File:Tabler-icons_movie.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|فِلِمہٕ]] " .. quant .. " فِلِمہٕ "
)
else
td_esq:wikitext(
"[[File:OpenMoji-black 1F4DA.svg|middle|class=notpageimage|link=" ..
getListSitelinkFromProp(item_id,"P2354") ..
"|جِلٕد]] " .. quant .. " جِلٕد "
)
end
end
------------------------------------------------------
-- ICONA EPISODIS (P1113)
------------------------------------------------------
local text_ep = ""
local raw_ep = wikidades.claim{
item = item_id,
property = "P1113",
formatting = "raw",
list = false
}
if raw_ep and raw_ep ~= "" then
text_ep = tostring(raw_ep):gsub("%+","")
end
if text_ep ~= "" then
local link_ep = getListSitelinkFromProp(item_id,"P1811")
if link_ep == "" then
link_ep = getListSitelinkFromProp(item_id,"P2354")
end
td_esq:wikitext(
"<span style='display:inline-block;width:1px;'></span>[[File:Noun TV Episodes 3303322.svg|middle|class=notpageimage|link=" ..
link_ep .. "|قِسٕط]] " .. text_ep .. " "
)
end
------------------------------------------------------
-- ICONES EXTERNES
------------------------------------------------------
td_dre:wikitext(generarIconesExternes(item_id) .. linkEditicon(item_id))
------------------------------------------------------
-- PROPIETATS SECUNDÀRIES (FILES NORMALS)
------------------------------------------------------
local propietats = {
"P144","P4970","P50","P110","P178","P58","P287","P86","P57","P162",
"P136","P400","P272","P275","P449","P123","P2360","P1433"
}
for _, pid in ipairs(propietats) do
local admetre = true
if pid == "P144" then
local qid_p144 = getClaims(item_id, "P144", true)[1]
if qid_p144 and (qid_p144 == item_id or qid_p144 == id_pare) then
admetre = false
end
end
if pid == "P136" and es_grup and te_genere_pare then
admetre = false
end
if admetre then
local label = etiquetaProp(pid)
if pid == "P123" and (mode == "videojoc" or mode == "audiovisual") then
label = etiquetaProp(qid_labels.distribuidor)
end
if pid == "P272" and (mode == "pelicula" or mode == "audiovisual") then
label = "سٕٹوٗڈیو"
end
if pid == "P2360" then
label = "قٕسٕم"
end
if pid == "P136" then
label = etiquetaProp(qid_labels.genere)
end
if pid == "P1433" and (tipus_net == "مانٛگا" or tipus_net == "مانٛگا سیٖریٖز" or tipus_net == "وَن-شاٹ") then
label = etiquetaProp(qid_labels.revista)
end
if pid == "P449" and mode == "audiovisual" then
label = "چیٚنَل"
end
--------------------------------------------------
-- GÈNERE (neteja unificada)
--------------------------------------------------
if pid == "P136" then
local valors = {}
for i, qid in ipairs(getClaims(item_id, "P136", true)) do
local label_qid = getLabelData(qid)
local text_net = netejarGenere(label_qid)
if i > 1 then
text_net = text_net:sub(1,1):lower() .. text_net:sub(2)
end
local sitelink = wikidades.getSiteLink{qid}
if sitelink and sitelink ~= "" then
table.insert(valors, "[[" .. sitelink .. "|" .. text_net .. "]]")
else
table.insert(valors, "[[d:" .. qid .. "|" .. text_net .. "]]")
end
end
if #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
--------------------------------------------------
-- EDITORIALS
--------------------------------------------------
elseif pid == "P123" then
local valors = obtenirEditorialsWikibase(item_id)
if valors then
filaEtiquetaValor(html, label, valors, true)
end
--------------------------------------------------
-- ALTRES PROP.
--------------------------------------------------
else
local valors = getClaims(item_id, pid, false)
if valors and #valors > 0 then
filaEtiquetaValor(html, label, '<span>' .. table.concat(valors, ", ") .. '</span>', true)
end
end
end
end
------------------------------------------------------
-- DATES (P580 / P577 / P582)
------------------------------------------------------
local data_inici_p580 = getClaims(item_id, "P580", false)[1]
if data_inici_p580 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local data_fi = getClaims(item_id, "P582", false)[1]
local text_data = formatarData(data_inici_p580)
if data_fi then
text_data = text_data .. " – " .. formatarData(data_fi)
end
filaEtiquetaValor(html, label_data, text_data, true)
else
--------------------------------------------------
-- CAS AMB P577 (pot tenir múltiples dates)
--------------------------------------------------
local entity = mw.wikibase.getEntity(item_id)
local claims_p577 = entity and entity.claims and entity.claims.P577 or {}
if #claims_p577 > 0 then
local label_data = _obtenirEtiquetaPeriode_local(item_id, tipus_net)
local linies = {}
for _, claim in ipairs(claims_p577) do
local dv = claim.mainsnak and claim.mainsnak.datavalue
if dv then
local iso = dv.value and dv.value.time or ""
local data_fmt = formatarData(iso)
local quals = {}
if claim.qualifiers then
if claim.qualifiers.P291 then
for _, q in ipairs(claim.qualifiers.P291) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
if claim.qualifiers.P400 then
for _, q in ipairs(claim.qualifiers.P400) do
local qid = q.datavalue and q.datavalue.value and q.datavalue.value.id
if qid then
table.insert(quals, wdLink(qid))
end
end
end
end
local linia = data_fmt
if #quals > 0 then
linia = linia .. " (" .. table.concat(quals, ", ") .. ")"
end
table.insert(linies, linia)
end
end
if #linies > 0 then
if #linies == 1 then
filaEtiquetaValor(html, label_data, linies[1], true)
else
local ocultes = {}
for i = 2, #linies do
table.insert(ocultes, linies[i])
end
local text_final =
'<table class="mw-collapsible mw-collapsed" style="width:100%; border-spacing:0;">' ..
'<tr><th colspan="2" style="text-align:left; font-weight:normal;">' .. linies[1] .. '</th></tr>' ..
'<tr><td>' .. table.concat(ocultes, "<br>") .. '</td></tr>' ..
'</table>'
filaEtiquetaValor(html, label_data, text_final, true)
end
end
end
end
------------------------------------------------------
-- RETORNAR EL RESULTAT
------------------------------------------------------
return tostring(html)
end
----------------------------------------------------------
-- p.infotaula
----------------------------------------------------------
local LIMIT_VISIBLE = 4
function p.infotaula(frame)
local args = getArgs(frame, {wrappers = "فرما:اِنفوباکس اؠنِمے مانٛگا"})
local item_id = (args.item and args.item ~= "") and args.item
or mw.wikibase.getEntityIdForCurrentPage()
if not item_id then
return "<span class='error'>غَلطی: وِکیٖڈیٹاہَس سٟتؠ مُنسَلِق کانٛہہ تہِ عُنصَر آو نہٕ لَبنہٕ۔</span>"
end
---------------------------------------------------------
-- SELECCIONATS
---------------------------------------------------------
local seleccionats_raw = args.seleccionats or ""
local seleccionats = {}
if seleccionats_raw ~= "" then
for qid in seleccionats_raw:gmatch("Q%d+") do
seleccionats[qid] = true
end
end
---------------------------------------------------------
-- DELEGACIÓ SI NO ÉS GRUP / FRANQUÍCIA
---------------------------------------------------------
local parts = getClaims(item_id, "P527", true)
local derivades = getClaims(item_id, "P4969", true)
if #parts == 0 and #derivades == 0 then
local tipus = netejarWikilink(obtenirTipusText(args.tipus, item_id))
local mode = tipus_a_mode[tipus]
if mode == "pelicula" then
return frame:expandTemplate{
title = "فِلِم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "llibre" then
return frame:expandTemplate{
title = "کِتاب اِنفوباکس",
args = { item = item_id, titol = args.nom, manga = "y" }
}
elseif mode == "videojoc" then
return frame:expandTemplate{
title = "ویٖڈیو گیم اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
elseif mode == "audiovisual" then
return frame:expandTemplate{
title = "آڈیو وِجُوَل پروگرام اِنفوباکس",
args = { item = item_id, nom = args.nom }
}
end
end
---------------------------------------------------------
-- MODE FRANQUÍCIA
---------------------------------------------------------
local res = mw.html.create("table")
:addClass("infobox")
:addClass("infotaula-animanga")
local titol = args.nom
or getLabelData(item_id)
or mw.title.getCurrentTitle().text
res:tag("caption")
:addClass(CSS.HEADER)
:wikitext(
'<div style="display:flex; align-items:center;">' ..
'<div style="flex:0 0 30px; min-width:30px;">' ..
'<span style="position:relative; left:2px;">[[File:Anime manga japanese characters icon.svg|30px|اِنفوباکس اؠنِمے مانٛگا|class=skin-invert notpageimage]]</span>' ..
'</div>' ..
'<div style="flex:1 1 auto;">' ..
'<span style="font-weight:bold; font-style:italic;">' .. titol .. '</span>' ..
obtenirTitolOriginal(item_id, titol, true) ..
'</div>' ..
'<div style="flex:0 0 30px; min-width:30px;"></div>' ..
'</div>'
)
---------------------------------------------------------
-- IMATGE PRINCIPAL (amb fallback a logo P154)
---------------------------------------------------------
local img = obtenirImatge(item_id, args, "P18", "imatge")
local logo = obtenirImatge(item_id, args, "P154", "logo")
local mostrar_logo_apart = true
if img.nom then
local mida = midaImatge(img.nom, 250, 350)
local td_img = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
td_img:wikitext("[[File:" .. img.nom .. "|" .. mida .. "|center]]")
if img.peu and img.peu ~= "" then
td_img:tag("span")
:addClass("ita-img-caption")
:wikitext(img.peu)
end
elseif logo.nom then
-- Fallback: no hi ha P18, però sí P154 → l'usem com a imatge principal
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
mostrar_logo_apart = false
else
res:wikitext("[[زٲژ:مانٛگانِمی مَضموٗن یِمَن تَصویٖرٕچ ضروٗرَتھ چھِ]]")
end
---------------------------------------------------------
-- LOGO (P154) — només si NO s'ha usat ja com a fallback
---------------------------------------------------------
if logo.nom and mostrar_logo_apart then
local mida = midaImatge(logo.nom, 250, 250)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-img-cell")
:wikitext("[[File:" .. logo.nom .. "|" .. mida .. "|center]]")
end
---------------------------------------------------------
-- NUCLI PRINCIPAL DEL PARE
---------------------------------------------------------
local pare_te_genere = (#getClaims(item_id, "P136", true) > 0)
res:wikitext(generarNucli(item_id, args, false, item_id, false))
---------------------------------------------------------
-- FORMAT PER (P527)
---------------------------------------------------------
local elements_valids = {}
local exclos_p527 = {
Q125632018=true, Q3464665=true,
Q102364578=true, Q21191270=true
}
for _, tid in ipairs(parts) do
if next(seleccionats) ~= nil and not seleccionats[tid] then
-- exclòs per selecció
else
local exclos = false
for _, p31id in ipairs(getClaims(tid, "P31", true)) do
if exclos_p527[p31id] then
exclos = true
break
end
end
if not exclos then
table.insert(elements_valids, tid)
end
end
end
table.sort(elements_valids, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (Q2620972)
---------------------------------------------------------
local arcs_narratius
arcs_narratius, elements_valids = filtrarPerP31(elements_valids, "Q2620972")
---------------------------------------------------------
-- ARTICLES DE LLISTA (Q13406463) dins P527
---------------------------------------------------------
local llistes_p527
llistes_p527, elements_valids = filtrarPerP31(elements_valids, "Q13406463")
---------------------------------------------------------
-- OBRA DERIVADA (P4969)
---------------------------------------------------------
local ids_der_raw = derivades
local ids_der_filtrats = {}
for _, tid in ipairs(ids_der_raw) do
if next(seleccionats) == nil or seleccionats[tid] then
table.insert(ids_der_filtrats, tid)
end
end
local llistes_der, ids_der = filtrarPerP31(ids_der_filtrats, "Q13406463")
table.sort(ids_der, function(a,b)
return obtenirDataOrdenacio(a) < obtenirDataOrdenacio(b)
end)
---------------------------------------------------------
-- ARCS NARRATIUS (render)
---------------------------------------------------------
if #arcs_narratius > 0 then
res:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(getLabelData("Q2620972")) .. linkEditicon(item_id))
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, q in ipairs(arcs_narratius) do
local nom = getLabelData(q)
ul:tag("li"):wikitext(wdLink(q, nom))
end
end
---------------------------------------------------------
-- FUNCIONS AUXILIARS PER LLISTES
---------------------------------------------------------
local function mostrarLlistes(llistes, contenidor)
for _, q_llista in ipairs(llistes) do
local nom_llista = getLabelData(q_llista)
contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:addClass(CSS.SUBHEADER)
:wikitext(majusculaInicial(nom_llista) .. " " .. linkEditicon(q_llista))
local membres = getClaims(q_llista, "P527", true)
if #membres > 0 then
if #membres > 5 then
-- Llista desplegable
local taula_col = contenidor:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(tostring(#membres) .. " عَناصِر")
local ul_membres = taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
else
local ul_membres = contenidor:tag("tr"):tag("td")
:attr("colspan", "2")
:tag("ul")
for _, m in ipairs(membres) do
ul_membres:tag("li"):wikitext(wdLink(m))
end
end
end
end
end
---------------------------------------------------------
-- MOSTRAR FORMAT PER + OBRA DERIVADA (amb límit)
---------------------------------------------------------
local total = #elements_valids + #ids_der
if total > LIMIT_VISIBLE then
local visibles_p527 = math.min(#elements_valids, LIMIT_VISIBLE)
local visibles_der = math.min(#ids_der, math.max(0, LIMIT_VISIBLE - visibles_p527))
-----------------------------------------------------
-- PRIMERA PART: ELEMENTS VISIBLES NORMALS
-----------------------------------------------------
if visibles_p527 > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for i = 1, visibles_p527 do
res:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if visibles_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
for i = 1, visibles_der do
res:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
---------------------------------------------------------
-- BLOC PLEGABLE "MÉS" (contenidor taula necessari)
---------------------------------------------------------
local taula_col = res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass("ita-mes-td")
:tag("table")
:addClass("mw-collapsible mw-collapsed ita-mes-collapsible")
-- capçalera "Més"
taula_col:tag("tr"):tag("th")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext('<span class="ita-mes-text">مزیٖد</span>')
local resta_p527 = visibles_p527 < #elements_valids
local resta_der = visibles_der < #ids_der
local ambdues = resta_p527 and resta_der
---------------------------------------------------------
-- CONTINGUT PLEGABLE: P527
---------------------------------------------------------
if resta_p527 then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
end
for i = visibles_p527 + 1, #elements_valids do
taula_col:wikitext(generarNucli(elements_valids[i], {}, true, item_id, pare_te_genere))
end
end
---------------------------------------------------------
-- CONTINGUT PLEGABLE: OBRES DERIVADES
---------------------------------------------------------
if resta_der then
if ambdues then
taula_col:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
end
for i = visibles_der + 1, #ids_der do
taula_col:wikitext(generarNucli(ids_der[i], {}, true, item_id, pare_te_genere))
end
end
else
-----------------------------------------------------
-- CAS SENSE PLEGABLE
-----------------------------------------------------
if #elements_valids > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext(etiquetaProp("P527"))
for _, tid in ipairs(elements_valids) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_p527, res)
if #ids_der > 0 then
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("درمدار کٲم")
for _, tid in ipairs(ids_der) do
res:wikitext(generarNucli(tid, {}, true, item_id, pare_te_genere))
end
end
mostrarLlistes(llistes_der, res)
end
---------------------------------------------------------
-- ALTRES (P5940)
---------------------------------------------------------
local ids_p5940 = getClaims(item_id, "P5940", true)
if #ids_p5940 > 0 then
-- Capçalera "Altres"
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:wikitext("باقی")
-- Obtenim l'entitat UNA sola vegada
local entity = mw.wikibase.getEntity(item_id)
local claims_p5940 = entity and entity.claims and entity.claims.P5940 or {}
-- Indexem els claims per QID per evitar bucles interns
local claims_index = {}
for _, claim in ipairs(claims_p5940) do
local snak = claim.mainsnak
local q = snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id
if q then
claims_index[q] = claim
end
end
-- Construïm la llista i la mostrem en punts
local td_llista = res:tag("tr"):tag("td")
:attr("colspan", "2")
local ul = td_llista:tag("ul")
for _, qid in ipairs(ids_p5940) do
local text = wdLink(qid)
local claim = claims_index[qid]
if claim and claim.qualifiers and claim.qualifiers.P3831 then
local qual = claim.qualifiers.P3831[1]
local q_val = qual.datavalue and qual.datavalue.value and qual.datavalue.value.id
if q_val then
text = text .. " (" .. wdLink(q_val) .. ")"
end
end
ul:tag("li"):wikitext(text)
end
end
---------------------------------------------------------
-- PORTAL
---------------------------------------------------------
local portal_val = args.portal or ""
if portal_val ~= "" and portal_val:lower() ~= "no" then
local portal_expandit = frame:preprocess(
"[[File:Wikipe-tan face.svg|16px||class=notpageimage|link=Portal:Anime i Manga|اؠنِمے تہٕ مانٛگا پورٹَل]] " ..
"[[Portal:Anime i Manga|اؠنِمے تہٕ مانٛگا پورٹَل]]"
)
res:tag("tr"):tag("td")
:attr("colspan","2")
:addClass(CSS.SUBHEADER)
:addClass(CSS.CELL_FULL)
:wikitext(portal_expandit)
end
---------------------------------------------------------
-- ESTILS
---------------------------------------------------------
local styles = frame:extensionTag("templatestyles", "", {src="Module: Infotaula animanga/estils.css"})
return styles .. tostring(res)
end
return p
jk0cosiqunvchq1i52rjzh71e0655ww
Module:Infotaula animanga/estils.css
828
32165
148884
148878
2026-08-10T12:26:56Z
آیات محراج
11062
148884
sanitized-css
text/css
/*************************************************
* INFOTAULA ANIMANGA — AJUSTOS GENERALS
*************************************************/
.infotaula-animanga {
border-collapse: separate;
border-spacing: 0 2px;
width: 25em;
font-size: 88%;
line-height: 1.5em;
}
.infotaula-animanga ~ .infotaula-animanga {
margin-top: -7px;
border-top: none;
}
/* Botons de plegat més petits */
.infotaula-animanga .mw-collapsible-toggle {
font-size: 80%;
}
/*************************************************
* ESTILS BASE DE LA INFOTAULA (ESCRIPTORI)
*************************************************/
.ita-header {
background: #E6E6FA;
text-align: center;
font-size: 120%;
padding: 2px 2px !important;
}
.ita-subheader {
background: #E6E6FA;
text-align: center;
font-weight: bold;
}
.ita-tipus {
background: #ffeccb;
font-weight: bold;
max-width: 12em;
white-space: normal;
word-break: break-word;
}
.ita-tipus + .ita-cell-r {
background: #ffeccb;
}
.ita-cell-l {
background: #eeeeee;
font-weight: bold;
width: 40%;
}
/*************************************************
* IMATGE PRINCIPAL / LOGO
*************************************************/
.ita-img-cell {
text-align: center;
}
.ita-img-caption {
font-size: 90%;
}
/*************************************************
* ESCRIPTORI — ICONES I ALÇADA CORRECTA
*************************************************/
.ita-cell-r.ita-icons-flex {
padding: 0;
width: 100%;
}
.ita-icons-wrapper {
display: flex;
align-items: center;
height: 100%;
width: 100%;
}
.ita-icons-left {
display: flex;
align-items: center;
gap: 4px;
flex: 1 1 auto;
}
.ita-icons-right {
display: flex;
align-items: center;
gap: 4px;
margin-left: auto;
flex: 0 0 auto;
}
.ita-icons-left img,
.ita-icons-right img {
height: 1.2em !important;
width: auto !important;
vertical-align: middle;
}
.ita-edit-icon img {
height: 0.8em !important;
width: auto !important;
vertical-align: middle;
}
/*************************************************
* BLOC "MÉS" — IDÈNTIC A LA INFOTAULA PRINCIPAL
*************************************************/
.ita-mes-td {
padding: 0;
}
.ita-mes-collapsible {
display: table;
width: 100%;
border: 0;
margin: 0;
}
.ita-mes-collapsible .ita-cell-l {
background: #eeeeee !important;
font-weight: bold;
}
.ita-mes-collapsible .ita-row-tipus .ita-cell-r {
background: #ffeccb !important;
}
.ita-mes-collapsible .ita-subheader {
background: #E6E6FA !important;
font-weight: bold;
text-align: center;
}
.ita-mes-collapsible th .mw-collapsible-toggle {
float: right !important;
font-size: 80% !important;
}
.ita-mes-text {
display: inline-block;
font-weight: bold;
}
/* Quan està tancada: sense espaiat addicional */
.ita-mes-collapsible.mw-collapsed {
border-spacing: 0 0;
}
/* Quan està oberta: recupera l'espaiat entre files */
.ita-mes-collapsible:not(.mw-collapsed) {
border-spacing: 0 2px;
}
/*************************************************
* MÒBIL REAL (MobileFrontend / VectorMobile)
*************************************************/
/* Fila del bloc Més → flex */
html[class*="mf-"] .ita-mes-collapsible > tbody > tr {
display: flex !important;
flex-flow: row nowrap !important;
width: 100% !important;
min-width: 100% !important;
}
/* MÒBIL: cel·les esquerres (ita-cell-l i ita-tipus) → 40%, dins i fora del Més */
html[class*="mf-"] .infotaula-animanga .ita-cell-l,
html[class*="mf-"] .ita-mes-collapsible .ita-cell-l,
html[class*="mf-"] .infotaula-animanga .ita-tipus,
html[class*="mf-"] .ita-mes-collapsible .ita-tipus {
flex: 0 0 40% !important;
}
/* Vora inferior només a ita-cell-l dins del Més i a ita-tipus (dins i fora del Més) */
html[class*="mf-"] .ita-mes-collapsible .ita-cell-l,
html[class*="mf-"] .infotaula-animanga .ita-tipus,
html[class*="mf-"] .ita-mes-collapsible .ita-tipus {
border-bottom: 1px solid var(--border-color-muted,#dadde3) !important;
}
/* Cel·la dreta DINS del Més → 60% + vora + wrap + padding */
html[class*="mf-"] .ita-mes-collapsible .ita-cell-r {
display: flex !important;
flex: 1 0 !important;
align-items: center !important;
border-bottom: 1px solid var(--border-color-muted,#dadde3) !important;
padding: 7px 10px !important;
white-space: normal !important;
flex-wrap: wrap !important;
}
/* Cel·la dreta FORA del Més — quan VectorMobile converteix files en flex */
html[class*="mf-"] .infotaula-animanga .ita-cell-r {
flex: 1 0 !important;
}
/*************************************************
* TRANSLITERACIÓ
*************************************************/
.ita-translit-wrap {
position: relative;
display: inline-block;
cursor: pointer;
outline: none;
}
.ita-translit-icon {
font-size: 0.85em;
margin-left: 2px;
color: #555;
}
.ita-translit-tip {
display: none;
position: absolute;
bottom: 125%;
left: 50%;
transform: translateX(-50%);
background: #222;
color: #fff;
padding: 4px 8px;
border-radius: 4px;
font-size: 0.8em;
white-space: nowrap;
z-index: 10;
box-shadow: 0 1px 4px rgba(0,0,0,0.3);
}
.ita-translit-wrap:hover .ita-translit-tip,
.ita-translit-wrap:focus .ita-translit-tip,
.ita-translit-wrap:active .ita-translit-tip {
display: block;
}
3s8fvlwgnwikezi1e7m21420lyhy3dz
148889
148884
2026-08-10T12:53:07Z
آیات محراج
11062
148889
sanitized-css
text/css
/*************************************************
* INFOTAULA ANIMANGA — AJUSTOS GENERALS
*************************************************/
.infotaula-animanga {
border-collapse: separate;
border-spacing: 0 2px;
width: 25em;
font-size: 88%;
line-height: 1.5em;
}
.infotaula-animanga ~ .infotaula-animanga {
margin-top: -7px;
border-top: none;
}
/* Botons de plegat més petits */
.infotaula-animanga .mw-collapsible-toggle {
font-size: 80%;
}
/*************************************************
* ESTILS BASE DE LA INFOTAULA (ESCRIPTORI)
*************************************************/
.ita-header {
background: #E6E6FA;
text-align: center;
font-size: 120%;
padding: 2px 2px !important;
}
.ita-subheader {
background: #E6E6FA;
text-align: center;
font-weight: bold;
}
.ita-tipus {
background: #F0F0FD;
font-weight: bold;
max-width: 12em;
white-space: normal;
word-break: break-word;
}
.ita-tipus + .ita-cell-r {
background: #F0F0FD;
}
.ita-cell-l {
background: #eeeeee;
font-weight: bold;
width: 40%;
}
/*************************************************
* IMATGE PRINCIPAL / LOGO
*************************************************/
.ita-img-cell {
text-align: center;
}
.ita-img-caption {
font-size: 90%;
}
/*************************************************
* ESCRIPTORI — ICONES I ALÇADA CORRECTA
*************************************************/
.ita-cell-r.ita-icons-flex {
padding: 0;
width: 100%;
}
.ita-icons-wrapper {
display: flex;
align-items: center;
height: 100%;
width: 100%;
}
.ita-icons-left {
display: flex;
align-items: center;
gap: 4px;
flex: 1 1 auto;
}
.ita-icons-right {
display: flex;
align-items: center;
gap: 4px;
margin-left: auto;
flex: 0 0 auto;
}
.ita-icons-left img,
.ita-icons-right img {
height: 1.2em !important;
width: auto !important;
vertical-align: middle;
}
.ita-edit-icon img {
height: 0.8em !important;
width: auto !important;
vertical-align: middle;
}
/*************************************************
* BLOC "MÉS" — IDÈNTIC A LA INFOTAULA PRINCIPAL
*************************************************/
.ita-mes-td {
padding: 0;
}
.ita-mes-collapsible {
display: table;
width: 100%;
border: 0;
margin: 0;
}
.ita-mes-collapsible .ita-cell-l {
background: #eeeeee !important;
font-weight: bold;
}
.ita-mes-collapsible .ita-row-tipus .ita-cell-r {
background: #F0F0FD !important;
}
.ita-mes-collapsible .ita-subheader {
background: #E6E6FA !important;
font-weight: bold;
text-align: center;
}
.ita-mes-collapsible th .mw-collapsible-toggle {
float: right !important;
font-size: 80% !important;
}
.ita-mes-text {
display: inline-block;
font-weight: bold;
}
/* Quan està tancada: sense espaiat addicional */
.ita-mes-collapsible.mw-collapsed {
border-spacing: 0 0;
}
/* Quan està oberta: recupera l'espaiat entre files */
.ita-mes-collapsible:not(.mw-collapsed) {
border-spacing: 0 2px;
}
/*************************************************
* MÒBIL REAL (MobileFrontend / VectorMobile)
*************************************************/
/* Fila del bloc Més → flex */
html[class*="mf-"] .ita-mes-collapsible > tbody > tr {
display: flex !important;
flex-flow: row nowrap !important;
width: 100% !important;
min-width: 100% !important;
}
/* MÒBIL: cel·les esquerres (ita-cell-l i ita-tipus) → 40%, dins i fora del Més */
html[class*="mf-"] .infotaula-animanga .ita-cell-l,
html[class*="mf-"] .ita-mes-collapsible .ita-cell-l,
html[class*="mf-"] .infotaula-animanga .ita-tipus,
html[class*="mf-"] .ita-mes-collapsible .ita-tipus {
flex: 0 0 40% !important;
}
/* Vora inferior només a ita-cell-l dins del Més i a ita-tipus (dins i fora del Més) */
html[class*="mf-"] .ita-mes-collapsible .ita-cell-l,
html[class*="mf-"] .infotaula-animanga .ita-tipus,
html[class*="mf-"] .ita-mes-collapsible .ita-tipus {
border-bottom: 1px solid var(--border-color-muted,#dadde3) !important;
}
/* Cel·la dreta DINS del Més → 60% + vora + wrap + padding */
html[class*="mf-"] .ita-mes-collapsible .ita-cell-r {
display: flex !important;
flex: 1 0 !important;
align-items: center !important;
border-bottom: 1px solid var(--border-color-muted,#dadde3) !important;
padding: 7px 10px !important;
white-space: normal !important;
flex-wrap: wrap !important;
}
/* Cel·la dreta FORA del Més — quan VectorMobile converteix files en flex */
html[class*="mf-"] .infotaula-animanga .ita-cell-r {
flex: 1 0 !important;
}
/*************************************************
* TRANSLITERACIÓ
*************************************************/
.ita-translit-wrap {
position: relative;
display: inline-block;
cursor: pointer;
outline: none;
}
.ita-translit-icon {
font-size: 0.85em;
margin-left: 2px;
color: #555;
}
.ita-translit-tip {
display: none;
position: absolute;
bottom: 125%;
left: 50%;
transform: translateX(-50%);
background: #222;
color: #fff;
padding: 4px 8px;
border-radius: 4px;
font-size: 0.8em;
white-space: nowrap;
z-index: 10;
box-shadow: 0 1px 4px rgba(0,0,0,0.3);
}
.ita-translit-wrap:hover .ita-translit-tip,
.ita-translit-wrap:focus .ita-translit-tip,
.ita-translit-wrap:active .ita-translit-tip {
display: block;
}
71t05b8gitssw481sl7no4wtzt57ebd
فرما:Infobox animaga/doc
10
32166
148887
2026-08-10T12:39:56Z
آیات محراج
11062
Created page with "== TemplateData == <templatedata> { "params": { "peu": { "label": "caption" }, "logo": { "label": "Logotip" }, "portal": { "label": "Portal animanga", "description": "És opcional, qualsevol valor fa que es mostri al peu un enllaç al Portal:Anime i Manga." }, "item": { "label": "item", "description": "És opcional i, com en altres infotaules, permet indicar quin és l'item inicial, quan no sigui l'assignat a l'article." }, "nom": {..."
148887
wikitext
text/x-wiki
== TemplateData ==
<templatedata>
{
"params": {
"peu": {
"label": "caption"
},
"logo": {
"label": "Logotip"
},
"portal": {
"label": "Portal animanga",
"description": "És opcional, qualsevol valor fa que es mostri al peu un enllaç al Portal:Anime i Manga."
},
"item": {
"label": "item",
"description": "És opcional i, com en altres infotaules, permet indicar quin és l'item inicial, quan no sigui l'assignat a l'article."
},
"nom": {
"label": "name"
},
"imatge": {
"label": "Image"
},
"tipus": {
"label": "type"
},
"seleccionats": {
"label": "Selection",
"description": "Permet indicar la llista de Qids –separat per comes– que volem que apareguin, d'entre els existents als blocs d'informació."
}
},
"description": "Aquesta infotaula està concebuda per mostrar un conjunt d'elements del món manga-anime que estan relacionats o depenen a un element agrupador, com per exemple, un manga i les obres derivades; una sèrie anime i les seves parts o altres derivats en diferent format, com ara una pel·lícula o videojocs. "
}
</templatedata>
bt4hne9nrtuf34com955tf5u55du30y
148888
148887
2026-08-10T12:43:09Z
آیات محراج
11062
/* */
148888
wikitext
text/x-wiki
یہِ چھُ [[کاتالان وِکیٖپیٖڈیا]] پؠٹھ کاپی کٔرِتھ تہٕ ڈانٛچہٕ چھُنہٕ اَنٛگریٖزی وکیٖپیٖڈیا کِس templateٹس سٕتؠ میلان. امہِ عَلاوٕ چھِ یہِ پوٗرٕ پٲٹھؠ Wikidata ہس پؠٹھ خۄدکار پٲٹھؠ کٲم کران.
== TemplateData ==
<templatedata>
{
"params": {
"peu": {
"label": "caption"
},
"logo": {
"label": "Logotip"
},
"portal": {
"label": "Portal animanga",
"description": "És opcional, qualsevol valor fa que es mostri al peu un enllaç al Portal:Anime i Manga."
},
"item": {
"label": "item",
"description": "És opcional i, com en altres infotaules, permet indicar quin és l'item inicial, quan no sigui l'assignat a l'article."
},
"nom": {
"label": "name"
},
"imatge": {
"label": "Image"
},
"tipus": {
"label": "type"
},
"seleccionats": {
"label": "Selection",
"description": "Permet indicar la llista de Qids –separat per comes– que volem que apareguin, d'entre els existents als blocs d'informació."
}
},
"description": "Aquesta infotaula està concebuda per mostrar un conjunt d'elements del món manga-anime que estan relacionats o depenen a un element agrupador, com per exemple, un manga i les obres derivades; una sèrie anime i les seves parts o altres derivats en diferent format, com ara una pel·lícula o videojocs. "
}
</templatedata>
m938bvyb6yfsj3l2nisksfyq63erjy9
زٲژ:اؠنِمے
14
32167
148891
2026-08-10T13:58:35Z
آیات محراج
11062
Created blank page
148891
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
کریئون شِن چین
0
32168
148898
2026-08-10T14:21:45Z
آیات محراج
11062
[[کریئون شِن چین]] صَفہٕ آو پَکناونہٕ [[کرٛیٚیون شِن چین]] جاے، پَکناوَن وول صٲرف آیات محراج
148898
wikitext
text/x-wiki
#REDIRECT [[کرٛیٚیون شِن چین]]
oe013jxpvlrhyu99krg1h8ui2pbzdh1
فرما:External media
10
32169
148904
2026-08-10T14:37:05Z
آیات محراج
11062
Content copied from English wiki
148904
wikitext
text/x-wiki
{{ infobox
| decat = yes <!-- track empty rows through a separate process -->
| bodystyle = {{#if:{{{width|}}}|width: {{{width}}};}} clear: {{#switch:{{{float|}}}|none=both|#default={{{float|right}}} }}; {{#switch:{{{float|}}}|left=float:left;margin:0 1.5em 1.5em 0;|center=float:none;margin:auto|none=float:none;margin:0 1.5em 1.5em 0 |right|#default=float:right;margin:0 0 4px 1.5em}}
| above = {{{title|{{#if:{{{image1|}}}{{{images|}}}|{{#if:{{{audio1|}}}{{{video1|}}}{{{model1|}}}|External media|External {{#if:{{{image2|}}}{{{images|}}}|images|image}} }}|{{#if:{{{audio1|}}}|{{#if:{{{video1|}}}{{{model1|}}}|External media|External audio}}|{{#if:{{{video1|}}}|{{#if:{{{model1|}}}|External media|External {{#if:{{{video1|}}}|videos|video}}}}|{{#if:{{{model1|}}}|External 3D {{#if:{{{model2|}}}|models|model}} }} }} }} }} }}}
| abovestyle = font-size:115%
| subheader = {{{topic|}}}
| subheaderstyle = font-style: italic
| datastyle = text-align: left
| image = {{{headerimage|}}}
| caption = {{{caption|}}}
| header1 = {{#if:{{{image1|}}}{{{images|}}}|{{#if:{{{audio1|}}}{{{video1|}}}{{{model1|}}}|Images}} }}
| data2 = {{#if:{{{image1|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image1}}} }}
| data3 = {{#if:{{{image2|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image2}}} }}
| data4 = {{#if:{{{image3|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image3}}} }}
| data5 = {{#if:{{{image4|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image4}}} }}
| data6 = {{#if:{{{image5|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image5}}} }}
| data7 = {{#if:{{{image6|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image6}}} }}
| data8 = {{#if:{{{image7|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image7}}} }}
| data9 = {{#if:{{{image8|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image8}}} }}
| data10 = {{#if:{{{image9|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image9}}} }}
| data11 = {{#if:{{{image10|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image10}}} }}
| data12 = {{#if:{{{image11|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image11}}} }}
| data13 = {{#if:{{{image12|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image12}}} }}
| data14 = {{#if:{{{image13|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image13}}} }}
| data15 = {{#if:{{{image14|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image14}}} }}
| data16 = {{#if:{{{image15|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image15}}} }}
| data17 = {{#if:{{{image16|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image16}}} }}
| data18 = {{#if:{{{image17|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image17}}} }}
| data19 = {{#if:{{{image18|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image18}}} }}
| data20 = {{#if:{{{image19|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image19}}} }}
| data21 = {{#if:{{{image20|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image20}}} }}
| data22 = {{{images|}}}
| header31 = {{#if:{{{audio1|}}}|{{#if:{{{image1|}}}{{{images|}}}{{{video1|}}}{{{model1|}}}|Audio}} }}
| data32 = {{#if:{{{audio1|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio1}}} }}
| data33 = {{#if:{{{audio2|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio2}}} }}
| data34 = {{#if:{{{audio3|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio3}}} }}
| data35 = {{#if:{{{audio4|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio4}}} }}
| data36 = {{#if:{{{audio5|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio5}}} }}
| data37 = {{#if:{{{audio6|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio6}}} }}
| data38 = {{#if:{{{audio7|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio7}}} }}
| data39 = {{#if:{{{audio8|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio8}}} }}
| data40 = {{#if:{{{audio9|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio9}}} }}
| data41 = {{#if:{{{audio10|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio10}}} }}
| data42 = {{#if:{{{audio11|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio11}}} }}
| data43 = {{#if:{{{audio12|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio12}}} }}
| data44 = {{#if:{{{audio13|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio13}}} }}
| data45 = {{#if:{{{audio14|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio14}}} }}
| data46 = {{#if:{{{audio15|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio15}}} }}
| data47 = {{#if:{{{audio16|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio16}}} }}
| data48 = {{#if:{{{audio17|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio17}}} }}
| data49 = {{#if:{{{audio18|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio18}}} }}
| data50 = {{#if:{{{audio19|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio19}}} }}
| data51 = {{#if:{{{audio20|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio20}}} }}
| header61 = {{#if:{{{video1|}}}|{{#if:{{{audio1|}}}{{{model1|}}}{{{image1|}}}{{{images|}}}|Video}} }}
| data62 = {{#if:{{{video1|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video1}}} }}
| data63 = {{#if:{{{video2|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video2}}} }}
| data64 = {{#if:{{{video3|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video3}}} }}
| data65 = {{#if:{{{video4|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video4}}} }}
| data66 = {{#if:{{{video5|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video5}}} }}
| data67 = {{#if:{{{video6|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video6}}} }}
| data68 = {{#if:{{{video7|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video7}}} }}
| data69 = {{#if:{{{video8|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video8}}} }}
| data70 = {{#if:{{{video9|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video9}}} }}
| data71 = {{#if:{{{video10|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video10}}} }}
| data72 = {{#if:{{{video11|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video11}}} }}
| data73 = {{#if:{{{video12|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video12}}} }}
| data74 = {{#if:{{{video13|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video13}}} }}
| data75 = {{#if:{{{video14|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video14}}} }}
| data76 = {{#if:{{{video15|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video15}}} }}
| data77 = {{#if:{{{video16|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video16}}} }}
| data78 = {{#if:{{{video17|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video17}}} }}
| data79 = {{#if:{{{video18|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video18}}} }}
| data80 = {{#if:{{{video19|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video19}}} }}
| data81 = {{#if:{{{video20|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video20}}} }}
| header91 = {{#if:{{{model1|}}}|{{#if:{{{audio1|}}}{{{video1|}}}{{{image1|}}}{{{images|}}}|3D Models}} }}
| data92 = {{#if:{{{model1|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model1}}} }}
| data93 = {{#if:{{{model2|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model2}}} }}
| data94 = {{#if:{{{model3|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model3}}} }}
| data95 = {{#if:{{{model4|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model4}}} }}
| data96 = {{#if:{{{model5|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model5}}} }}
| data97 = {{#if:{{{model6|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model6}}} }}
| data98 = {{#if:{{{model7|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model7}}} }}
| data99 = {{#if:{{{model8|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model8}}} }}
| data100 = {{#if:{{{model9|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model9}}} }}
| data101 = {{#if:{{{model10|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model10}}} }}
| data102 = {{#if:{{{model11|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model11}}} }}
| data103 = {{#if:{{{model12|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model12}}} }}
| data104 = {{#if:{{{model13|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model13}}} }}
| data105 = {{#if:{{{model14|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model14}}} }}
| data106 = {{#if:{{{model15|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model15}}} }}
| data107 = {{#if:{{{model16|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model16}}} }}
| data108 = {{#if:{{{model17|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model17}}} }}
| data109 = {{#if:{{{model18|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model18}}} }}
| data110 = {{#if:{{{model19|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model19}}} }}
| data111 = {{#if:{{{model20|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model20}}} }}
}}{{main other|{{#if:{{{image1|}}}{{{images|}}}{{{audio1|}}}{{{video1|}}}{{{model1|}}}||[[Category:Pages using the external media template with no first item]]}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using external media with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:External media]] with unknown parameter "_VALUE_"|ignoreblank=y| audio1 | audio2 | audio3 | audio4 | audio5 | audio6 | audio7 | audio8 | audio9 | audio10 | audio11 | audio12 | audio13 | audio14 | audio15 | audio16 | audio17 | audio18 | audio19 | audio20 | caption | float | headerimage | image1 | image2 | image3 | image4 | image5 | image6 | image7 | image8 | image9 | image10 | image11 | image12 | image13 | image14 | image15 | image16 | image17 | image18 | image19 | image20 | images | model1 | model2 | model3 | model4 | model5 | model6 | model7 | model8 | model9 | model10 | model11 | model12 | model13 | model14 | model15 | model16 | model17 | model18 | model19 | model20 | title | topic | video1 | video2 | video3 | video4 | video5 | video6 | video7 | video8 | video9 | video10 | video11 | video12 | video13 | video14 | video15 | video16 | video17 | video18 | video19 | video20 | width }}{{main other|
{{#ifeq:{{{float|}}}|none|[[Category:Pages using external media with float equal none]]}}
}}<noinclude>{{documentation}}</noinclude>
bgzwwwj8rkwo9lvdqjnmk1zfvoo6ajg
148907
148904
2026-08-10T15:04:53Z
آیات محراج
11062
/* */
148907
wikitext
text/x-wiki
{{ infobox
| decat = yes <!-- track empty rows through a separate process -->
| bodystyle = {{#if:{{{width|}}}|width: {{{width}}};}} clear: {{#switch:{{{float|}}}|none=both|#default={{{float|right}}} }}; {{#switch:{{{float|}}}|left=float:left;margin:0 1.5em 1.5em 0;|center=float:none;margin:auto|none=float:none;margin:0 1.5em 1.5em 0 |right|#default=float:right;margin:0 0 4px 1.5em}}
| above = {{{title|{{#if:{{{image1|}}}{{{images|}}}|{{#if:{{{audio1|}}}{{{video1|}}}{{{model1|}}}|نؠبرِم میٖڈیا|نؠبرِم {{#if:{{{image2|}}}{{{images|}}}|images|image}} }}|{{#if:{{{audio1|}}}|{{#if:{{{video1|}}}{{{model1|}}}|External media|External audio}}|{{#if:{{{video1|}}}|{{#if:{{{model1|}}}|External media|External {{#if:{{{video1|}}}|videos|video}}}}|{{#if:{{{model1|}}}|External 3D {{#if:{{{model2|}}}|models|model}} }} }} }} }} }}}
| abovestyle = font-size:115%
| subheader = {{{topic|}}}
| subheaderstyle = font-style: italic
| datastyle = text-align: left
| image = {{{headerimage|}}}
| caption = {{{caption|}}}
| header1 = {{#if:{{{image1|}}}{{{images|}}}|{{#if:{{{audio1|}}}{{{video1|}}}{{{model1|}}}|Images}} }}
| data2 = {{#if:{{{image1|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image1}}} }}
| data3 = {{#if:{{{image2|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image2}}} }}
| data4 = {{#if:{{{image3|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image3}}} }}
| data5 = {{#if:{{{image4|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image4}}} }}
| data6 = {{#if:{{{image5|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image5}}} }}
| data7 = {{#if:{{{image6|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image6}}} }}
| data8 = {{#if:{{{image7|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image7}}} }}
| data9 = {{#if:{{{image8|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image8}}} }}
| data10 = {{#if:{{{image9|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image9}}} }}
| data11 = {{#if:{{{image10|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image10}}} }}
| data12 = {{#if:{{{image11|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image11}}} }}
| data13 = {{#if:{{{image12|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image12}}} }}
| data14 = {{#if:{{{image13|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image13}}} }}
| data15 = {{#if:{{{image14|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image14}}} }}
| data16 = {{#if:{{{image15|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image15}}} }}
| data17 = {{#if:{{{image16|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image16}}} }}
| data18 = {{#if:{{{image17|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image17}}} }}
| data19 = {{#if:{{{image18|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image18}}} }}
| data20 = {{#if:{{{image19|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image19}}} }}
| data21 = {{#if:{{{image20|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image20}}} }}
| data22 = {{{images|}}}
| header31 = {{#if:{{{audio1|}}}|{{#if:{{{image1|}}}{{{images|}}}{{{video1|}}}{{{model1|}}}|Audio}} }}
| data32 = {{#if:{{{audio1|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio1}}} }}
| data33 = {{#if:{{{audio2|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio2}}} }}
| data34 = {{#if:{{{audio3|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio3}}} }}
| data35 = {{#if:{{{audio4|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio4}}} }}
| data36 = {{#if:{{{audio5|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio5}}} }}
| data37 = {{#if:{{{audio6|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio6}}} }}
| data38 = {{#if:{{{audio7|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio7}}} }}
| data39 = {{#if:{{{audio8|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio8}}} }}
| data40 = {{#if:{{{audio9|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio9}}} }}
| data41 = {{#if:{{{audio10|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio10}}} }}
| data42 = {{#if:{{{audio11|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio11}}} }}
| data43 = {{#if:{{{audio12|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio12}}} }}
| data44 = {{#if:{{{audio13|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio13}}} }}
| data45 = {{#if:{{{audio14|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio14}}} }}
| data46 = {{#if:{{{audio15|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio15}}} }}
| data47 = {{#if:{{{audio16|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio16}}} }}
| data48 = {{#if:{{{audio17|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio17}}} }}
| data49 = {{#if:{{{audio18|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio18}}} }}
| data50 = {{#if:{{{audio19|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio19}}} }}
| data51 = {{#if:{{{audio20|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio20}}} }}
| header61 = {{#if:{{{video1|}}}|{{#if:{{{audio1|}}}{{{model1|}}}{{{image1|}}}{{{images|}}}|Video}} }}
| data62 = {{#if:{{{video1|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video1}}} }}
| data63 = {{#if:{{{video2|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video2}}} }}
| data64 = {{#if:{{{video3|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video3}}} }}
| data65 = {{#if:{{{video4|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video4}}} }}
| data66 = {{#if:{{{video5|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video5}}} }}
| data67 = {{#if:{{{video6|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video6}}} }}
| data68 = {{#if:{{{video7|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video7}}} }}
| data69 = {{#if:{{{video8|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video8}}} }}
| data70 = {{#if:{{{video9|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video9}}} }}
| data71 = {{#if:{{{video10|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video10}}} }}
| data72 = {{#if:{{{video11|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video11}}} }}
| data73 = {{#if:{{{video12|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video12}}} }}
| data74 = {{#if:{{{video13|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video13}}} }}
| data75 = {{#if:{{{video14|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video14}}} }}
| data76 = {{#if:{{{video15|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video15}}} }}
| data77 = {{#if:{{{video16|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video16}}} }}
| data78 = {{#if:{{{video17|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video17}}} }}
| data79 = {{#if:{{{video18|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video18}}} }}
| data80 = {{#if:{{{video19|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video19}}} }}
| data81 = {{#if:{{{video20|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video20}}} }}
| header91 = {{#if:{{{model1|}}}|{{#if:{{{audio1|}}}{{{video1|}}}{{{image1|}}}{{{images|}}}|3D Models}} }}
| data92 = {{#if:{{{model1|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model1}}} }}
| data93 = {{#if:{{{model2|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model2}}} }}
| data94 = {{#if:{{{model3|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model3}}} }}
| data95 = {{#if:{{{model4|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model4}}} }}
| data96 = {{#if:{{{model5|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model5}}} }}
| data97 = {{#if:{{{model6|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model6}}} }}
| data98 = {{#if:{{{model7|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model7}}} }}
| data99 = {{#if:{{{model8|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model8}}} }}
| data100 = {{#if:{{{model9|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model9}}} }}
| data101 = {{#if:{{{model10|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model10}}} }}
| data102 = {{#if:{{{model11|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model11}}} }}
| data103 = {{#if:{{{model12|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model12}}} }}
| data104 = {{#if:{{{model13|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model13}}} }}
| data105 = {{#if:{{{model14|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model14}}} }}
| data106 = {{#if:{{{model15|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model15}}} }}
| data107 = {{#if:{{{model16|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model16}}} }}
| data108 = {{#if:{{{model17|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model17}}} }}
| data109 = {{#if:{{{model18|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model18}}} }}
| data110 = {{#if:{{{model19|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model19}}} }}
| data111 = {{#if:{{{model20|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model20}}} }}
}}{{main other|{{#if:{{{image1|}}}{{{images|}}}{{{audio1|}}}{{{video1|}}}{{{model1|}}}||[[Category:Pages using the external media template with no first item]]}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using external media with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:External media]] with unknown parameter "_VALUE_"|ignoreblank=y| audio1 | audio2 | audio3 | audio4 | audio5 | audio6 | audio7 | audio8 | audio9 | audio10 | audio11 | audio12 | audio13 | audio14 | audio15 | audio16 | audio17 | audio18 | audio19 | audio20 | caption | float | headerimage | image1 | image2 | image3 | image4 | image5 | image6 | image7 | image8 | image9 | image10 | image11 | image12 | image13 | image14 | image15 | image16 | image17 | image18 | image19 | image20 | images | model1 | model2 | model3 | model4 | model5 | model6 | model7 | model8 | model9 | model10 | model11 | model12 | model13 | model14 | model15 | model16 | model17 | model18 | model19 | model20 | title | topic | video1 | video2 | video3 | video4 | video5 | video6 | video7 | video8 | video9 | video10 | video11 | video12 | video13 | video14 | video15 | video16 | video17 | video18 | video19 | video20 | width }}{{main other|
{{#ifeq:{{{float|}}}|none|[[Category:Pages using external media with float equal none]]}}
}}<noinclude>{{documentation}}</noinclude>
n4bj3jr3svej77cvoi1ldfaj1ift8xl
148908
148907
2026-08-10T15:06:08Z
آیات محراج
11062
/* */
148908
wikitext
text/x-wiki
{{ infobox
| decat = yes <!-- track empty rows through a separate process -->
| bodystyle = {{#if:{{{width|}}}|width: {{{width}}};}} clear: {{#switch:{{{float|}}}|none=both|#default={{{float|right}}} }}; {{#switch:{{{float|}}}|left=float:left;margin:0 1.5em 1.5em 0;|center=float:none;margin:auto|none=float:none;margin:0 1.5em 1.5em 0 |right|#default=float:right;margin:0 0 4px 1.5em}}
| above = {{{title|{{#if:{{{image1|}}}{{{images|}}}|{{#if:{{{audio1|}}}{{{video1|}}}{{{model1|}}}|نؠبرِم میٖڈیا|نؠبرِم {{#if:{{{image2|}}}{{{images|}}}|تَصویٖرٕ|تَصویٖر}} }}|{{#if:{{{audio1|}}}|{{#if:{{{video1|}}}{{{model1|}}}|External media|External audio}}|{{#if:{{{video1|}}}|{{#if:{{{model1|}}}|External media|External {{#if:{{{video1|}}}|videos|video}}}}|{{#if:{{{model1|}}}|External 3D {{#if:{{{model2|}}}|models|model}} }} }} }} }} }}}
| abovestyle = font-size:115%
| subheader = {{{topic|}}}
| subheaderstyle = font-style: italic
| datastyle = text-align: left
| image = {{{headerimage|}}}
| caption = {{{caption|}}}
| header1 = {{#if:{{{image1|}}}{{{images|}}}|{{#if:{{{audio1|}}}{{{video1|}}}{{{model1|}}}|Images}} }}
| data2 = {{#if:{{{image1|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image1}}} }}
| data3 = {{#if:{{{image2|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image2}}} }}
| data4 = {{#if:{{{image3|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image3}}} }}
| data5 = {{#if:{{{image4|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image4}}} }}
| data6 = {{#if:{{{image5|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image5}}} }}
| data7 = {{#if:{{{image6|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image6}}} }}
| data8 = {{#if:{{{image7|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image7}}} }}
| data9 = {{#if:{{{image8|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image8}}} }}
| data10 = {{#if:{{{image9|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image9}}} }}
| data11 = {{#if:{{{image10|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image10}}} }}
| data12 = {{#if:{{{image11|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image11}}} }}
| data13 = {{#if:{{{image12|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image12}}} }}
| data14 = {{#if:{{{image13|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image13}}} }}
| data15 = {{#if:{{{image14|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image14}}} }}
| data16 = {{#if:{{{image15|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image15}}} }}
| data17 = {{#if:{{{image16|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image16}}} }}
| data18 = {{#if:{{{image17|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image17}}} }}
| data19 = {{#if:{{{image18|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image18}}} }}
| data20 = {{#if:{{{image19|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image19}}} }}
| data21 = {{#if:{{{image20|}}}|[[file:Searchtool.svg|16px|alt=image icon|class=noviewer]] {{{image20}}} }}
| data22 = {{{images|}}}
| header31 = {{#if:{{{audio1|}}}|{{#if:{{{image1|}}}{{{images|}}}{{{video1|}}}{{{model1|}}}|Audio}} }}
| data32 = {{#if:{{{audio1|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio1}}} }}
| data33 = {{#if:{{{audio2|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio2}}} }}
| data34 = {{#if:{{{audio3|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio3}}} }}
| data35 = {{#if:{{{audio4|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio4}}} }}
| data36 = {{#if:{{{audio5|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio5}}} }}
| data37 = {{#if:{{{audio6|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio6}}} }}
| data38 = {{#if:{{{audio7|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio7}}} }}
| data39 = {{#if:{{{audio8|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio8}}} }}
| data40 = {{#if:{{{audio9|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio9}}} }}
| data41 = {{#if:{{{audio10|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio10}}} }}
| data42 = {{#if:{{{audio11|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio11}}} }}
| data43 = {{#if:{{{audio12|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio12}}} }}
| data44 = {{#if:{{{audio13|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio13}}} }}
| data45 = {{#if:{{{audio14|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio14}}} }}
| data46 = {{#if:{{{audio15|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio15}}} }}
| data47 = {{#if:{{{audio16|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio16}}} }}
| data48 = {{#if:{{{audio17|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio17}}} }}
| data49 = {{#if:{{{audio18|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio18}}} }}
| data50 = {{#if:{{{audio19|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio19}}} }}
| data51 = {{#if:{{{audio20|}}}|[[file:Nuvola apps arts.svg|16px|alt=audio icon|class=noviewer]] {{{audio20}}} }}
| header61 = {{#if:{{{video1|}}}|{{#if:{{{audio1|}}}{{{model1|}}}{{{image1|}}}{{{images|}}}|Video}} }}
| data62 = {{#if:{{{video1|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video1}}} }}
| data63 = {{#if:{{{video2|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video2}}} }}
| data64 = {{#if:{{{video3|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video3}}} }}
| data65 = {{#if:{{{video4|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video4}}} }}
| data66 = {{#if:{{{video5|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video5}}} }}
| data67 = {{#if:{{{video6|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video6}}} }}
| data68 = {{#if:{{{video7|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video7}}} }}
| data69 = {{#if:{{{video8|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video8}}} }}
| data70 = {{#if:{{{video9|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video9}}} }}
| data71 = {{#if:{{{video10|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video10}}} }}
| data72 = {{#if:{{{video11|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video11}}} }}
| data73 = {{#if:{{{video12|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video12}}} }}
| data74 = {{#if:{{{video13|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video13}}} }}
| data75 = {{#if:{{{video14|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video14}}} }}
| data76 = {{#if:{{{video15|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video15}}} }}
| data77 = {{#if:{{{video16|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video16}}} }}
| data78 = {{#if:{{{video17|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video17}}} }}
| data79 = {{#if:{{{video18|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video18}}} }}
| data80 = {{#if:{{{video19|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video19}}} }}
| data81 = {{#if:{{{video20|}}}|[[file:Nuvola apps kaboodle.svg|16px|alt=video icon|class=noviewer]] {{{video20}}} }}
| header91 = {{#if:{{{model1|}}}|{{#if:{{{audio1|}}}{{{video1|}}}{{{image1|}}}{{{images|}}}|3D Models}} }}
| data92 = {{#if:{{{model1|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model1}}} }}
| data93 = {{#if:{{{model2|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model2}}} }}
| data94 = {{#if:{{{model3|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model3}}} }}
| data95 = {{#if:{{{model4|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model4}}} }}
| data96 = {{#if:{{{model5|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model5}}} }}
| data97 = {{#if:{{{model6|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model6}}} }}
| data98 = {{#if:{{{model7|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model7}}} }}
| data99 = {{#if:{{{model8|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model8}}} }}
| data100 = {{#if:{{{model9|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model9}}} }}
| data101 = {{#if:{{{model10|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model10}}} }}
| data102 = {{#if:{{{model11|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model11}}} }}
| data103 = {{#if:{{{model12|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model12}}} }}
| data104 = {{#if:{{{model13|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model13}}} }}
| data105 = {{#if:{{{model14|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model14}}} }}
| data106 = {{#if:{{{model15|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model15}}} }}
| data107 = {{#if:{{{model16|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model16}}} }}
| data108 = {{#if:{{{model17|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model17}}} }}
| data109 = {{#if:{{{model18|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model18}}} }}
| data110 = {{#if:{{{model19|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model19}}} }}
| data111 = {{#if:{{{model20|}}}|[[file:Cube NoEdges RGBfaces 64px.png|16px|alt=3D model icon|class=noviewer]] {{{model20}}} }}
}}{{main other|{{#if:{{{image1|}}}{{{images|}}}{{{audio1|}}}{{{video1|}}}{{{model1|}}}||[[Category:Pages using the external media template with no first item]]}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using external media with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:External media]] with unknown parameter "_VALUE_"|ignoreblank=y| audio1 | audio2 | audio3 | audio4 | audio5 | audio6 | audio7 | audio8 | audio9 | audio10 | audio11 | audio12 | audio13 | audio14 | audio15 | audio16 | audio17 | audio18 | audio19 | audio20 | caption | float | headerimage | image1 | image2 | image3 | image4 | image5 | image6 | image7 | image8 | image9 | image10 | image11 | image12 | image13 | image14 | image15 | image16 | image17 | image18 | image19 | image20 | images | model1 | model2 | model3 | model4 | model5 | model6 | model7 | model8 | model9 | model10 | model11 | model12 | model13 | model14 | model15 | model16 | model17 | model18 | model19 | model20 | title | topic | video1 | video2 | video3 | video4 | video5 | video6 | video7 | video8 | video9 | video10 | video11 | video12 | video13 | video14 | video15 | video16 | video17 | video18 | video19 | video20 | width }}{{main other|
{{#ifeq:{{{float|}}}|none|[[Category:Pages using external media with float equal none]]}}
}}<noinclude>{{documentation}}</noinclude>
1m3k9s07o7wgjby9osr3tpkprgg69ln
فرما:External media/doc
10
32170
148905
2026-08-10T14:43:25Z
آیات محراج
11062
Created page with "{{Documentation subpage}} {{High-use}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[</nowiki>[[Wikipedia:Wikidata]]<nowiki>]]) --> == When to use == If an image, 3D model, audio or video clip: # is currently available online, # cannot be uploaded to Wikipedia, even under [[WP:NFCC|non-free use]] rules, ''and'' # readers will expect this type of media in the article, then it may be appropriate to use {{tl|ex..."
148905
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[</nowiki>[[Wikipedia:Wikidata]]<nowiki>]]) -->
== When to use ==
If an image, 3D model, audio or video clip:
# is currently available online,
# cannot be uploaded to Wikipedia, even under [[WP:NFCC|non-free use]] rules, ''and''
# readers will expect this type of media in the article,
then it may be appropriate to use {{tl|external media}} to provide a direct link to the media file along with a description of the media.
The {{tl|external media}} template should be removed as soon as a replacement of adequate quality and accuracy is available in [[WP:COMMONS]]. At that time, the link included in this template may be considered for inclusion as a regular [[WP:External link]] in the ==External links== section.
=== Copyright ===
According to [[WP:ELNEVER]] and [[WP:COPYLINK]], editors must '''never''' link to content that violates copyright or is otherwise illegal. If you are uncertain of the copyright status (for example, with [[WP:YT|links to YouTube]]), ask for help at [[Wikipedia:Media copyright questions]]. If you're certain that the copyright status is acceptable, but others might wonder later, make it clear in the template or in the reference that you link to material from a rightful distributor (examples can be found at [[grindcore]]).
== Where to use ==
This template is normally placed in the main body of the article, in the same place that you would normally have placed the image, 3D model, audio, or video clip if it had been available on Wikimedia Commons.
When placing links in the ==External links== section, please use the normal formatting for external links, as explained at [[WP:External links#Rich media]] and [[WP:External links#How to link]], rather than this template.
== Usage ==
Paste this into the article, removing the parameters that are left blank:
<syntaxhighlight lang="wikitext">
{{external media
| float =
| width =
| topic = <!--centered italic text--->
| caption = <!-- text placed left or right of headerimage --->
| headerimage= <!--search commons please include "|alt= text" and x-height in px "|x20px" example [[File:YouTube 2024.svg|alt=YouTube logo|x20px|left]] or ...|right]] --->
| title =
| image1 =
| image2 =
| image3 =
| audio1 =
| audio2 =
| audio3 =
| video1 =
| video2 =
| video3 =
| model1 =
| model2 =
| model3 =
}}</syntaxhighlight>
The {{tl|external media}} template can be used multiple times in an article, and each instance can be used to link to more than one file.
=== Parameters ===
; float: Valid options are "left" or "right". The template defaults to displaying on the right-hand-side. (Note: This template's documentation previously, and erroneously, listed {{para|align}} as a valid parameter, but it was not valid. Instances of {{para|align}}, if found, should usually be replaced with {{para|float}}.)
; width: This should be a complete width measurement including units. Examples: <code>300px</code>, <code>22em</code>, <code>30%</code>. The template defaults to 258px wide.
; topic: Optional text field that will appear above the media links.
; title: Optional text to replace the automatically calculated title.
; headerimage: Optional image to display at the top of the template. Use full image syntax, for example <nowiki>[[File:example.png|200px]]</nowiki>.
; caption: Optional caption text to put underneath the header image.
; media links: Each file to be linked should specify its type and have a different number, starting from 1. For example, a template containing four images and one video would label them as <code>image1</code>, <code>image2</code>, <code>image3</code>, <code>image4</code> and <code>video1</code>. The attribute has a free format, so any amount of detail may be added. The first part of the entry should be formatted as a normal external link, i.e. {{code|[http://example.com/image.jpg Image description]|moin}} for [http://example.com/image.jpg Image description]. After that, any additional detail can be given on the same line. See the examples for details.
: '''Note:''' when adding a link to an external media source like this, it is essential that the source page be linked too with the date of retrieval, both to satisfy Wikipedia's sourcing criteria for the statement about the presented media and to ensure that the link can quickly be corrected should the source URL be changed. Reference tags can be used for this purpose.
{{collapse top|header=TemplateData}}
<templatedata>
{
"params": {
"width": {
"description": "Width of the box",
"example": "300px, 22em, 30%",
"default": "258px"
},
"float": {
"type": "string",
"suggestedvalues": [
"left",
"right",
"center"
],
"description": "Alignment of the box on the page",
"suggested": true,
"default": "right"
},
"title": {
"description": "Optional text to replace the automatically calculated title"
},
"image1": {},
"audio1": {},
"video1": {},
"model1": {},
"image2": {},
"model2": {},
"topic": {
"description": "Optional text field that will appear above the media links"
},
"headerimage": {
"description": "Optional image to display at the top of the template. Use full image syntax, for example [[File:example.png|200px]].",
"type": "unbalanced-wikitext"
},
"caption": {
"description": "Optional caption text to put underneath the header image"
},
"image3": {},
"image4": {},
"image5": {},
"image6": {},
"image7": {},
"image8": {},
"image9": {},
"image10": {},
"image11": {},
"image12": {},
"image13": {},
"image14": {},
"image15": {},
"image16": {},
"image17": {},
"image18": {},
"image19": {},
"image20": {},
"audio2": {},
"audio3": {},
"audio4": {},
"audio5": {},
"audio6": {},
"audio7": {},
"audio8": {},
"audio9": {},
"audio10": {},
"audio11": {},
"audio12": {},
"audio13": {},
"audio14": {},
"audio15": {},
"audio16": {},
"audio17": {},
"audio18": {},
"audio19": {},
"audio20": {},
"video2": {},
"video3": {},
"video4": {},
"video5": {},
"video6": {},
"video7": {},
"video8": {},
"video9": {},
"video10": {},
"video11": {},
"video12": {},
"video13": {},
"video14": {},
"video15": {},
"video16": {},
"video17": {},
"video18": {},
"video19": {},
"video20": {},
"model3": {},
"model4": {},
"model5": {},
"model6": {},
"model7": {},
"model8": {},
"model9": {},
"model10": {},
"model11": {},
"model12": {},
"model13": {},
"model14": {},
"model15": {},
"model16": {},
"model17": {},
"model18": {},
"model19": {},
"model20": {}
},
"description": "Provides a box with a direct link to media hosted off of Wikipedia",
"paramOrder": [
"title",
"topic",
"caption",
"image1",
"audio1",
"video1",
"model1",
"width",
"float",
"headerimage",
"image2",
"model2",
"image3",
"image4",
"image5",
"image6",
"image7",
"image8",
"image9",
"image10",
"image11",
"image12",
"image13",
"image14",
"image15",
"image16",
"image17",
"image18",
"image19",
"image20",
"audio2",
"audio3",
"audio4",
"audio5",
"audio6",
"audio7",
"audio8",
"audio9",
"audio10",
"audio11",
"audio12",
"audio13",
"audio14",
"audio15",
"audio16",
"audio17",
"audio18",
"audio19",
"audio20",
"video2",
"video3",
"video4",
"video5",
"video6",
"video7",
"video8",
"video9",
"video10",
"video11",
"video12",
"video13",
"video14",
"video15",
"video16",
"video17",
"video18",
"video19",
"video20",
"model3",
"model4",
"model5",
"model6",
"model7",
"model8",
"model9",
"model10",
"model11",
"model12",
"model13",
"model14",
"model15",
"model16",
"model17",
"model18",
"model19",
"model20"
]
}
</templatedata>
{{collapse bottom}}
== Examples ==
==== Just an image ====
Image taken from the [[War against Nabis]] Featured Article. This example gives full contextual information along with references.
{{external media
| float = right
| image1 = [https://web.archive.org/web/20120211124946id_/http://www.ancientmesopotamia.net/sitebuildercontent/sitebuilderpictures/macedonianphalanx.jpg Fighting style of Greek phalangites with long lances during the Roman-Spartan War] (Note the late Greek hoplite helmets with open visors made of several parts and not from one like in earlier times. The leg protection was often leather to allow for faster movement. This fighting style was not in use during the [[Battle of Marathon]]; at that time the lances were shorter and held with one hand. Longer lances, held with both hands, were adopted with the introduction of lighter hoplites and later [[phalangite]]s. As a result of their long and heavy lance which was handled with both arms they needed a lighter shield than the old hoplites.<ref>''Warfare in the Classical World'',p. 34f (Greek Hoplite (c.480BC)) p. 67 (Iphicrates reforms)</ref><ref>{{cite web |url=http://www.ancientmesopotamia.net/id27.html |title=Battle of Marathon |accessdate=2006-12-26 |work=Ancient Mesopotamia|archiveurl = https://web.archive.org/web/20060224052909/http://www.ancientmesopotamia.net/id27.html |archivedate = February 24, 2006|url-status=dead}}</ref>)
}}
<syntaxhighlight lang="wikitext" highlight="4" style="width:50%; overflow: auto">
{{external media
| float = right
| width = 258px
| image1 = [https://web.archive.org/web/20120211124946id_/http://www.ancientmesopotamia.net/sitebuildercontent/sitebuilderpictures/macedonianphalanx.jpg Fighting style of Greek phalangites with long lances during the Roman-Spartan War] (Note the late Greek hoplite helmets with open visors made of several parts and not from one like in earlier times. The leg protection was often leather to allow for faster movement. This fighting style was not in use during the [[Battle of Marathon]]; at that time the lances were shorter and held with one hand. Longer lances, held with both hands, were adopted with the introduction of lighter hoplites and later [[phalangite]]s. As a result of their long and heavy lance which was handled with both arms they needed a lighter shield than the old hoplites.<ref>''Warfare in the Classical World'',p. 34f (Greek Hoplite (c.480BC)) p. 67 (Iphicrates reforms)</ref><ref>{{cite web |url=http://www.ancientmesopotamia.net/id27.html |title=Battle of Marathon |accessdate=2006-12-26 |work=Ancient Mesopotamia|archiveurl = https://web.archive.org/web/20060224052909/http://www.ancientmesopotamia.net/id27.html |archivedate = February 24, 2006|url-status=dead}}</ref>)
}}
</syntaxhighlight>
{{clear}}
==== Image, using descriptive text with accompanying reference: ====
{{external media
| float = right
| width = 300px
| image1 = [http://fcit.usf.edu/florida/photos/historic/dsmem/dsarmor/dsarmo2/photos/dsarmo232.jpg Metal vambrace with integrated elbow and upper arm protection] (reenactment)<ref>http://fcit.usf.edu/florida/photos/historic/dsmem/dsarmor/dsarmo2/dsarmo232.htm</ref>
}}
<syntaxhighlight lang="wikitext" highlight="4" style="width:50%; overflow: auto">
{{external media
| float = right
| width = 300px
| image1 = [http://fcit.usf.edu/florida/photos/historic/dsmem/dsarmor/dsarmo2/photos/dsarmo232.jpg Metal vambrace with integrated elbow and upper arm protection] (reenactment)<ref>http://fcit.usf.edu/florida/photos/historic/dsmem/dsarmor/dsarmo2/dsarmo232.htm</ref>
}}
</syntaxhighlight>
{{clear}}
==== Two images with rich accompanying text, floated left: ====
{{external media
| float = left
| headerimage= [[File:Internet Archive logo and wordmark.svg|85px|right]]
| caption = via [https://archive.org The Internet Archive]
| topic = The Siege of Leningrad
| image1 = [https://web.archive.org/web/20090226113208/http://www.ido.edu.ru/ffec/hist/images/H_4.jpg Russian map of the operations around Leningrad in 1943]. Blue are the German and allied Finnish troops. The Soviets are red.<ref>{{cite web|url=http://www.ido.edu.ru/ffec/hist/h8.html |title=ОТЕЧЕСТВЕННАЯ ИСТОРИЯ. Тема 8 |publisher=Ido.edu.ru |date= |accessdate=2008-10-26 |archiveurl=https://web.archive.org/web/20041223033320/http://ido.edu.ru/ffec/hist/h8.html |archivedate=December 23, 2004}}</ref>
| image2 = [https://web.archive.org/web/20090226113208/http://victory.tass-online.ru/data/Photos/Photo/175.JPEG map of the advance on Leningrad and relief]. Blue are the German and allied Finnish troops. The Soviets are red.<ref>{{cite web|url=http://victory.tass-online.ru/?page=gallery&gcid=9 |script-title=ru:ИТАР-ТАСС :: 60 ЛЕТ ВЕЛИКОЙ ПОБЕДЕ :: |publisher=Victory.tass-online.ru |date= |accessdate=2008-10-26|language=ru}} {{dead link}}</ref>
}}
{{clear}}
<syntaxhighlight lang="wikitext" highlight="2,6,7" style="width:95%; overflow: auto">
{{external media
| float = left
| headerimage= [[File:Internet Archive logo and wordmark.svg|85px|right]]
| caption = via [https://archive.org The Internet Archive]
| topic = The Siege of Leningrad
| image1 = [https://web.archive.org/web/20090226113208/http://www.ido.edu.ru/ffec/hist/images/H_4.jpg Russian map of the operations around Leningrad in 1943]. Blue are the German and allied Finnish troops. The Soviets are red.<ref>{{cite web|url=http://www.ido.edu.ru/ffec/hist/h8.html |title=ОТЕЧЕСТВЕННАЯ ИСТОРИЯ. Тема 8 |publisher=Ido.edu.ru |date= |accessdate=2008-10-26 |archiveurl=https://web.archive.org/web/20041223033320/http://ido.edu.ru/ffec/hist/h8.html |archivedate=December 23, 2004}}</ref>
| image2 = [https://web.archive.org/web/20090226113208/http://victory.tass-online.ru/data/Photos/Photo/175.JPEG map of the advance on Leningrad and relief]. Blue are the German and allied Finnish troops. The Soviets are red.<ref>{{cite web|url=http://victory.tass-online.ru/?page=gallery&gcid=9 |script-title=ru:ИТАР-ТАСС :: 60 ЛЕТ ВЕЛИКОЙ ПОБЕДЕ :: |publisher=Victory.tass-online.ru |date= |accessdate=2008-10-26|language=ru}} {{dead link}}</ref>
}}
</syntaxhighlight>
==== Audio with topic text and accompanying link to the home page: ====
{{external media
| topic = Dog Bark
| audio1 = [https://web.archive.org/web/20101130033309/http://www.wav-sounds.com/various/bark.wav the sound of a dog barking], from [https://web.archive.org/web/20100723141525/http://www.wav-sounds.com/various_wav_sounds.htm Wav-Sounds.com], ''retrieved 13.09.2009''
}}
<syntaxhighlight lang="wikitext" style="width:50%; overflow: auto">
{{external media
| topic = Dog Bark
| audio1 = [https://web.archive.org/web/20101130033309/http://www.wav-sounds.com/various/bark.wav the sound of a dog barking], from [https://web.archive.org/web/20100723141525/http://www.wav-sounds.com/various_wav_sounds.htm Wav-Sounds.com], ''retrieved 13.09.2009''
}}
</syntaxhighlight>
{{clear}}
==== Single video, floated left: ====
{{external media
| width = 210px
| float = left
| video1 = [http://www.arkive.org/scripts/php/force-download.php?file=BEE7098E-088F-4BB4-B6F0-D2E190E5623C/Presentation.Streams/Presentation_QT_DOWNLOAD.mov&saveas=/data/root/Live/www.arkive.org/htdocs/species/peppery-furrow-shell/scrobicularia-plana/video-00.xml&type=mov Movie clip of siphon feeding], QuickTime format<ref>[http://www.arkive.org/species/ARK/invertebrates_marine/Scrobicularia_plana/Scrobicularia_plana_00.html?movietype=qtSmall Peppery furrow shell]</ref>
}}
<syntaxhighlight lang="wikitext" highlight="3,4" style="width:50%; overflow: auto">
{{external media
| width = 210px
| float = left
| video1 = [http://www.arkive.org/scripts/php/force-download.php?file=BEE7098E-088F-4BB4-B6F0-D2E190E5623C/Presentation.Streams/Presentation_QT_DOWNLOAD.mov&saveas=/data/root/Live/www.arkive.org/htdocs/species/peppery-furrow-shell/scrobicularia-plana/video-00.xml&type=mov Movie clip of siphon feeding], QuickTime format<ref>[http://www.arkive.org/species/ARK/invertebrates_marine/Scrobicularia_plana/Scrobicularia_plana_00.html?movietype=qtSmall Peppery furrow shell]</ref>
}}
</syntaxhighlight>
{{clear}}
==== Two CNN videos from YouTube, floated right: ====
{{external media
| float = right
| caption = Two YouTube videos
| headerimage= [[File:YouTube 2024.svg|alt=YouTube logo|x20px|left]]
| video1 = [https://www.youtube.com/watch?v=WBgwuFM92i4 CNN's exclusive Obama interview]
| video2 = [https://www.youtube.com/watch?v=-EGLzcQj9RY Pres. Obama makes first visit to Kenya as president]
}}
{{clear}}
<syntaxhighlight lang="wikitext" highlight="2" style="width95%; overflow: auto">
{{external media
| float = right
| caption = Two YouTube videos <!-- text placed left or right of headerimage --->
| headerimage= [[File:YouTube 2024.svg|alt=YouTube logo|x20px|left]]
| video1 = [https://www.youtube.com/watch?v=WBgwuFM92i4 CNN's exclusive Obama interview]
| video2 = [https://www.youtube.com/watch?v=-EGLzcQj9RY Pres. Obama makes first visit to Kenya as president]
}}
</syntaxhighlight>
{{clear}}
==== Mixed content: ====
{{external media
| width = 300px
| float = right
| image1 = [https://web.archive.org/web/20110719022448/http://www.ido.edu.ru/ffec/hist/images/H_4.jpg Russian map of the operations around Leningrad in 1943]. Blue are the German and allied Finnish troops. The Soviets are red.<ref>{{cite web|url=http://www.ido.edu.ru/ffec/hist/h8.html |title=ОТЕЧЕСТВЕННАЯ ИСТОРИЯ. Тема 8 | publisher=Ido.edu.ru |date= |accessdate=2008-10-26}}</ref>
| audio1 = [https://web.archive.org/web/20101130033309/http://www.wav-sounds.com/various/bark.wav the sound of a dog barking], from [https://web.archive.org/web/20100723141525/http://www.wav-sounds.com/various_wav_sounds.htm Wav-Sounds.com], ''retrieved 13.09.2009''
| video1 = [http://www.arkive.org/scripts/php/force-download.php?file=BEE7098E-088F-4BB4-B6F0-D2E190E5623C/Presentation.Streams/Presentation_QT_DOWNLOAD.mov&saveas=/data/root/Live/www.arkive.org/htdocs/species/peppery-furrow-shell/scrobicularia-plana/video-00.xml&type=mov Movie clip of siphon feeding], QuickTime format.<ref>[http://www.arkive.org/species/ARK/invertebrates_marine/Scrobicularia_plana/Scrobicularia_plana_00.html?movietype=qtSmall Peppery furrow shell]</ref>
| model1 = [https://sketchfab.com/models/bb0b6ee82c7b477db4b01a14bd793409 3D model of Hoa Hakananai'a moai statue], linked from Sketchfab.<ref>https://sketchfab.com/models/bb0b6ee82c7b477db4b01a14bd793409</ref>
}}
<syntaxhighlight lang="wikitext" style="width:50%; overflow: auto">
{{external media
| float = right
| width = 300px
| image1 = [http://www.ido.edu.ru/ffec/hist/images/H_4.jpg Russian map of the operations around Leningrad in 1943]. Blue are the German and allied Finnish troops. The Soviets are red.<ref>{{cite web|url=http://www.ido.edu.ru/ffec/hist/h8.html |title=ОТЕЧЕСТВЕННАЯ ИСТОРИЯ. Тема 8 |publisher=Ido.edu.ru |date= |accessdate=2008-10-26}}</ref>
| audio1 = [http://www.wav-sounds.com/various/bark.wav the sound of a dog barking], from [http://www.wav-sounds.com/various_wav_sounds.htm here], ''retrieved 13.09.2009''
| video1 = [http://www.arkive.org/scripts/php/force-download.php?file=BEE7098E-088F-4BB4-B6F0-D2E190E5623C/Presentation.Streams/Presentation_QT_DOWNLOAD.mov&saveas=/data/root/Live/www.arkive.org/htdocs/species/peppery-furrow-shell/scrobicularia-plana/video-00.xml&type=mov Movie clip of siphon feeding], QuickTime format.<ref>[http://www.arkive.org/species/ARK/invertebrates_marine/Scrobicularia_plana/Scrobicularia_plana_00.html?movietype=qtSmall Peppery furrow shell]</ref>
| model1 = [https://sketchfab.com/models/bb0b6ee82c7b477db4b01a14bd793409 3D model of Hoa Hakananai'a moai statue], linked from Sketchfab.<ref>https://sketchfab.com/models/bb0b6ee82c7b477db4b01a14bd793409</ref>
}}
</syntaxhighlight>
<div style="display: none"><references /></div>
==Tracking categories==
* {{clc|Pages using external media with unknown parameters}}
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:External link templates]]
}}</includeonly>
5tap6kpxs2lwi8fea5jih55mtdylljh
نِنٛجا ہَتوڑی
0
32171
148910
2026-08-10T15:21:22Z
آیات محراج
11062
"[[:en:Special:Redirect/revision/1368527422|Ninja Hattori-kun]]" ضفُک اِنتدٲیی حِصُک تَرجَمہٕ طور تَخلیق کَرنہٕ آمُت
148910
wikitext
text/x-wiki
'''نِنٛجا ہَتوڑی''' چھُ اکھ جاپٲنؠ اؠنِمے کارٹوٗن شو.
fakn8fa5cx0sgcpe6z7dwr7twgz1isw
148911
148910
2026-08-10T15:22:57Z
آیات محراج
11062
/* */
148911
wikitext
text/x-wiki
{{External media|image1=[https://pics.filmaffinity.com/ninja_hattori_kun-963535909-mmed.jpg وٕچھِو]}}
'''نِنٛجا ہَتوڑی''' چھُ اکھ جاپٲنؠ اؠنِمے کارٹوٗن شو.
4911rcm182nmkya50m0qnbl2vhpx6le
148912
148911
2026-08-10T15:24:08Z
آیات محراج
11062
/* */
148912
wikitext
text/x-wiki
{{Infobox animaga}}{{External media|image1=[https://pics.filmaffinity.com/ninja_hattori_kun-963535909-mmed.jpg وٕچھِو]}}
'''نِنٛجا ہَتوڑی''' چھُ اکھ جاپٲنؠ اؠنِمے کارٹوٗن شو.
gjcefiloj0vv2mwr0jd51uiux1u3rpo
148913
148912
2026-08-10T15:27:01Z
آیات محراج
11062
/* */
148913
wikitext
text/x-wiki
{{Infobox animaga}}{{External media|image1=[https://pics.filmaffinity.com/ninja_hattori_kun-963535909-mmed.jpg وٕچھِو]}}
'''نِنٛجا ہَتوڑی''' چھُ اکھ جاپٲنؠ اؠنِمے کارٹوٗن شو. کارٹون آو 2013 منٛز بحال کرنہٕ۔
03ghf6p9ju1qauama07bad44vw90q6r
148914
148913
2026-08-10T15:27:27Z
آیات محراج
11062
مِلاوُن [[زٲژ:اؠنِمے]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148914
wikitext
text/x-wiki
{{Infobox animaga}}{{External media|image1=[https://pics.filmaffinity.com/ninja_hattori_kun-963535909-mmed.jpg وٕچھِو]}}
'''نِنٛجا ہَتوڑی''' چھُ اکھ جاپٲنؠ اؠنِمے کارٹوٗن شو. کارٹون آو 2013 منٛز بحال کرنہٕ۔
==حَوالہٕ==
[[زٲژ:اؠنِمے]]
99086ep3k2frad7y6alo5o4plg54c1y
148915
148914
2026-08-10T15:28:43Z
آیات محراج
11062
/* */
148915
wikitext
text/x-wiki
{{Infobox animaga}}{{External media|image1=[https://pics.filmaffinity.com/ninja_hattori_kun-963535909-mmed.jpg وٕچھِو]}}
'''نِنٛجا ہَتوڑی''' چھُ اکھ جاپٲنؠ اؠنِمے کارٹوٗن شو. کارٹون آو 2013 منٛز بحال کرنہٕ۔<ref name="Netflix">{{cite web|author=Ressler, Karen|date=December 24, 2018|title=Netflix Streams English-Dubbed Ninja Hattori Anime|url=https://www.animenewsnetwork.com/news/2018-12-24/netflix-streams-english-dubbed-ninja-hattori-anime/.141121|access-date=December 27, 2018|website=[[Anime News Network]]}}</ref>
==حَوالہٕ==
[[زٲژ:اؠنِمے]]
5fjg1lijeh8djwf6i18obpn2ukza1p3
148939
148915
2026-08-10T18:00:46Z
Nadeemulhaqmir-bot
9480
باٹ چھُ غَلطی ٹھیٖکھ کَران [[وِکیٖپیٖڈیا:AutoWikiBrowser/Typos|غَلطی فِہرِست مُطٲبِق]]
148939
wikitext
text/x-wiki
{{Infobox animaga}}{{External media|image1=[https://pics.filmaffinity.com/ninja_hattori_kun-963535909-mmed.jpg وٕچھِو]}}
'''نِنٛجا ہَتوڑی''' چھُ اَکھ جاپٲنؠ اؠنِمے کارٹوٗن شو۔ کارٹون آو 2013 مَنٛز بحال کرنہٕ۔<ref name="Netflix">{{cite web|author=Ressler, Karen|date=December 24, 2018|title=Netflix Streams English-Dubbed Ninja Hattori Anime|url=https://www.animenewsnetwork.com/news/2018-12-24/netflix-streams-english-dubbed-ninja-hattori-anime/.141121|access-date=December 27, 2018|website=[[Anime News Network]]}}</ref>
==حَوالہٕ==
[[زٲژ:اؠنِمے]]
pd84qekxim3vzs1k86s5m9fx30gkquh
زٲژ:مانٛگانِمی مَضموٗن یِمَن تَصویٖرٕچ ضروٗرَتھ چھِ
14
32172
148916
2026-08-10T15:28:55Z
آیات محراج
11062
Created blank page
148916
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
148917
148916
2026-08-10T15:29:15Z
آیات محراج
11062
مِلاوُن [[زٲژ:اؠنِمے]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148917
wikitext
text/x-wiki
[[زٲژ:اؠنِمے]]
dbi9w9jpw5qfewxv7j2vg5wf7el6izq
عَلا دیٖن
0
32173
148918
2026-08-10T15:46:29Z
آیات محراج
11062
"[[:ur:Special:Redirect/revision/8969158|علاء الدین]]" ضفُک اِنتدٲیی حِصُک تَرجَمہٕ طور تَخلیق کَرنہٕ آمُت
148918
wikitext
text/x-wiki
علا دیٖن چھُ [[مٔنٛزیُٛم مَشرِق|مشرق وسطیٰ]] ہُک اکھ لُکہٕ دٔلیٖلہٕ ہُنٛد کردار۔ َکھساس اَکھ رٲژ چھِ "عرب نائٹس" دٔلیلن منٛز اکھ، حالانٛکہِ یہٕ دلیل ٲس 18 مہٕ صدی منٛز فرانسیسی اینٹونی گیلینڈن سٕنٛدس مجموعس منٛز شٲمل کرنہٕ آمٕژ۔
علا دیٖن اوس چیٖنُک روزن وول یُس عرب نسلُک اوس۔ أمہِ سٕنٛدِس مٲلؠ سُنٛد ناو اوس مصطفیٰ دارزی۔ افسانس منز کوٚر تمس علا دین سُند اکھ چراغ حٲصل، یمہِ منز اکھ [[جِن]] یُس اتھہٕ سٕتؠ پھَش دِتھ درٛاو تہٕ پھَش دِنہٕ وٲلؠ سُنٛد حاجتھ دوٗر کران اوس۔ قیامت جِن ناو اوس أکِس چیٖنی جادوگرَن ازبکستان کِس پہاڑی سلسلس منٛز کُنہِ جایہِ أکِس خوفناک گۄپھِ منٛز ژوٗرِ تھوومُت۔ اکھ افریقی جادوگر، زانزنگلا چُھ پننہٕ جود سۭتۍ ہیٚچھان زِ دنیاہس منٛز چُھ اکھ چراغ یتھ منٛز اکھ دؠو جِن قٲد چُھ کرنہٕ آمُت تہٕ سُہ چُھ جِن چھُ چراغ وٲلؠ سُنٛد تٲبیَدار۔ ٲخٕرکار چھُ أمِس جِنس علا دیٖن آزاد کران۔
aj7sypvqlw0aja3xerv2gumfh4upgwe
148919
148918
2026-08-10T15:48:13Z
آیات محراج
11062
/* */
148919
wikitext
text/x-wiki
{{مولوٗماتھ}}
'''علا دیٖن''' چھُ [[مٔنٛزیُٛم مَشرِق|مشرق وسطیٰ]] ہُک اکھ لُکہٕ دٔلیٖلہٕ ہُنٛد کردار۔ َکھساس اَکھ رٲژ چھِ "عرب نائٹس" دٔلیلن منٛز اکھ، حالانٛکہِ یہٕ دلیل ٲس 18 مہٕ صدی منٛز فرانسیسی اینٹونی گیلینڈن سٕنٛدس مجموعس منٛز شٲمل کرنہٕ آمٕژ۔
علا دیٖن اوس چیٖنُک روزن وول یُس عرب نسلُک اوس۔ أمہِ سٕنٛدِس مٲلؠ سُنٛد ناو اوس مصطفیٰ دارزی۔ افسانس منز کوٚر تمس علا دین سُند اکھ چراغ حٲصل، یمہِ منز اکھ [[جِن]] یُس اتھہٕ سٕتؠ پھَش دِتھ درٛاو تہٕ پھَش دِنہٕ وٲلؠ سُنٛد حاجتھ دوٗر کران اوس۔ قیامت جِن ناو اوس أکِس چیٖنی جادوگرَن ازبکستان کِس پہاڑی سلسلس منٛز کُنہِ جایہِ أکِس خوفناک گۄپھِ منٛز ژوٗرِ تھوومُت۔ اکھ افریقی جادوگر، زانزنگلا چُھ پننہٕ جود سۭتۍ ہیٚچھان زِ دنیاہس منٛز چُھ اکھ چراغ یتھ منٛز اکھ دؠو جِن قٲد چُھ کرنہٕ آمُت تہٕ سُہ چُھ جِن چھُ چراغ وٲلؠ سُنٛد تٲبیَدار۔ ٲخٕرکار چھُ أمِس جِنس علا دیٖن آزاد کران۔
11pf3mvkkau823qo45wzxiojy8dawrt
148921
148919
2026-08-10T15:56:05Z
آیات محراج
11062
/* */
148921
wikitext
text/x-wiki
{{مولوٗماتھ}}
'''علا دیٖن''' چھُ [[مٔنٛزیُٛم مَشرِق|مشرق وسطیٰ]] ہُک اکھ لُکہٕ دٔلیٖلہٕ ہُنٛد کردار۔ [[اَکھ ساس تہٕ اَکھ رٲژ]] چھِ "عرب نائٹس" دٔلیلن منٛز اکھ، حالانٛکہِ یہٕ دلیل ٲس 18 مہٕ صدی منٛز فرانسیسی اینٹونی گیلینڈن سٕنٛدس مجموعس منٛز شٲمل کرنہٕ آمٕژ۔<ref name="razzaque">Razzaque (2017)</ref>
علا دیٖن اوس چیٖنُک روزن وول یُس عرب نسلُک اوس۔ أمہِ سٕنٛدِس مٲلؠ سُنٛد ناو اوس مصطفیٰ دارزی۔ افسانس منز کوٚر تمس علا دین سُند اکھ چراغ حٲصل، یمہِ منز اکھ [[جِن]] یُس اتھہٕ سٕتؠ پھَش دِتھ درٛاو تہٕ پھَش دِنہٕ وٲلؠ سُنٛد حاجتھ دوٗر کران اوس۔ قیامت جِن ناو اوس أکِس چیٖنی جادوگرَن ازبکستان کِس پہاڑی سلسلس منٛز کُنہِ جایہِ أکِس خوفناک گۄپھِ منٛز ژوٗرِ تھوومُت۔ اکھ افریقی جادوگر، زانزنگلا چُھ پننہٕ جود سۭتۍ ہیٚچھان زِ دنیاہس منٛز چُھ اکھ چراغ یتھ منٛز اکھ دؠو جِن قٲد چُھ کرنہٕ آمُت تہٕ سُہ چُھ جِن چھُ چراغ وٲلؠ سُنٛد تٲبیَدار۔ ٲخٕرکار چھُ أمِس جِنس علا دیٖن آزاد کران۔
k0z5yk0jabmhz8k2r5rldu6dj2sw9tb
148923
148921
2026-08-10T15:57:40Z
آیات محراج
11062
مِلاوُن [[زٲژ:لُکہٕ دٔلیٖل]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148923
wikitext
text/x-wiki
{{مولوٗماتھ}}
'''علا دیٖن''' چھُ [[مٔنٛزیُٛم مَشرِق|مشرق وسطیٰ]] ہُک اکھ لُکہٕ دٔلیٖلہٕ ہُنٛد کردار۔ [[اَکھ ساس تہٕ اَکھ رٲژ]] چھِ "عرب نائٹس" دٔلیلن منٛز اکھ، حالانٛکہِ یہٕ دلیل ٲس 18 مہٕ صدی منٛز فرانسیسی اینٹونی گیلینڈن سٕنٛدس مجموعس منٛز شٲمل کرنہٕ آمٕژ۔<ref name="razzaque">Razzaque (2017)</ref>
علا دیٖن اوس چیٖنُک روزن وول یُس عرب نسلُک اوس۔ أمہِ سٕنٛدِس مٲلؠ سُنٛد ناو اوس مصطفیٰ دارزی۔ افسانس منز کوٚر تمس علا دین سُند اکھ چراغ حٲصل، یمہِ منز اکھ [[جِن]] یُس اتھہٕ سٕتؠ پھَش دِتھ درٛاو تہٕ پھَش دِنہٕ وٲلؠ سُنٛد حاجتھ دوٗر کران اوس۔ قیامت جِن ناو اوس أکِس چیٖنی جادوگرَن ازبکستان کِس پہاڑی سلسلس منٛز کُنہِ جایہِ أکِس خوفناک گۄپھِ منٛز ژوٗرِ تھوومُت۔ اکھ افریقی جادوگر، زانزنگلا چُھ پننہٕ جود سۭتۍ ہیٚچھان زِ دنیاہس منٛز چُھ اکھ چراغ یتھ منٛز اکھ دؠو جِن قٲد چُھ کرنہٕ آمُت تہٕ سُہ چُھ جِن چھُ چراغ وٲلؠ سُنٛد تٲبیَدار۔ ٲخٕرکار چھُ أمِس جِنس علا دیٖن آزاد کران۔
==حَوالہٕ==
[[زٲژ:لُکہٕ دٔلیٖل]]
dvgtihw4f1gabm2yt6yqdrq1pkml6mc
148938
148923
2026-08-10T18:00:41Z
Nadeemulhaqmir-bot
9480
باٹ چھُ غَلطی ٹھیٖکھ کَران [[وِکیٖپیٖڈیا:AutoWikiBrowser/Typos|غَلطی فِہرِست مُطٲبِق]]
148938
wikitext
text/x-wiki
{{مولوٗماتھ}}
'''علا دیٖن''' چھُ [[مٔنٛزیُٛم مَشرِق|مشرق وسطیٰ]] ہُک اَکھ لُکہٕ دٔلیٖلہٕ ہُنٛد کردار۔ [[اَکھ ساس تہٕ اَکھ رٲژ]] چھِ "عرب نایٹس" دٔلیلن مَنٛز اَکھ، حالانٛکہِ یہٕ دلیل ٲس 18 مہٕ صدی مَنٛز فرانسیسی اینٹونی گیلینڈن سٕنٛدس سۆمبرُنس مَنٛز شٲمل کرنہٕ آمٕژ۔<ref name="razzaque">Razzaque (2017)</ref>
علا دیٖن اوس چیٖنُک روزن وول یُس عرب نسلُک اوس۔ أمہِ سٕنٛدِس مٲلؠ سُنٛد ناو اوس مصطفیٰ دارزی۔ افسانس مَنٛز کوٚر تمس علا دین سُنٛد اَکھ چراغ حٲصل، یمہِ مَنٛز اَکھ [[جِن]] یُس اتھہٕ سٟتؠ پھَش دِتھ درٛاو تہٕ پھَش دِنہٕ وٲلؠ سُنٛد حاجتھ دوٗر کران اوس۔ قیامت جِن ناو اوس أکِس چیٖنی جادوگرَن ازبکستان کِس پہاڑی سلسلس مَنٛز کُنہِ جایہِ أکِس خوفناک گۄپھِ مَنٛز ژوٗرِ تھوومُت۔ اَکھ افریقی جادوگر، زانزنگلا چھُ پننہٕ جود سٟتؠ ہیٚچھان زِ دُنؠیاہس مَنٛز چھُ اَکھ چراغ یَتھ مَنٛز اَکھ دؠو جِن قٲد چھُ کرنہٕ آمُت تہٕ سُہ چھُ جِن چھُ چراغ وٲلؠ سُنٛد تٲبیَدار۔ ٲخٕرکار چھُ أمِس جِنس علا دیٖن آزاد کران۔
==حَوالہٕ==
[[زٲژ:لُکہٕ دٔلیٖل]]
cbwu6fe8cswdf26qczv3m7aztfs8p0d
اَکھ ساس تہٕ اَکھ رٲژ
0
32174
148922
2026-08-10T15:56:31Z
آیات محراج
11062
[[اَلِف لیلہ]] پؠٹھ رجوٗع مُکَرر
148922
wikitext
text/x-wiki
#REDIRECT [[اَلِف لیلہ]]
7aos198o6jx6azkvs5k7s340l2dbkmi
وَن پیٖس
0
32175
148924
2026-08-10T17:20:48Z
آیات محراج
11062
"[[:en:Special:Redirect/revision/1368144537|One Piece]]" ضفُک اِنتدٲیی حِصُک تَرجَمہٕ طور تَخلیق کَرنہٕ آمُت
148924
wikitext
text/x-wiki
'''وَن پیٖس''' چھُ جاپٲنؠ [[مانٛگا]] تہٕ [[اؠنِمے]] ہٕنٛدِس دُنیاہَس منٛز ساروٕے کھۄتہٕ مشہوٗر تہٕ کامیاب کامؠن منٛز اکھ، یُس جاپٲنۍ مانٛگا فنکار اِچیرو اوڈاہَن بنوومُت چھُ۔ یہٕ چُھ جاپٲنؠ ہفتہٕ وار مانگا میگزیٖن ویٖکلی شونن جمپس منٛز 22 جولائی 1997 پیٹھ شائع گومُت۔ تَمہِ پتہٕ آو یہِ أکِس اؠنِمے سیریٖز، فلمَن، ویٖڈیو گیمز، ناولن تہٕ باقٕے میڈیاہَن منٛز ورتاونہٕ۔
ck9p8shwhkh1fl44m0x9mauiimnreix
148925
148924
2026-08-10T17:21:53Z
آیات محراج
11062
/* */
148925
wikitext
text/x-wiki
{{Infobox animaga}}
'''وَن پیٖس''' چھُ جاپٲنؠ [[مانٛگا]] تہٕ [[اؠنِمے]] ہٕنٛدِس دُنیاہَس منٛز ساروٕے کھۄتہٕ مشہوٗر تہٕ کامیاب کامؠن منٛز اکھ، یُس جاپٲنۍ مانٛگا فنکار اِچیرو اوڈاہَن بنوومُت چھُ۔ یہٕ چُھ جاپٲنؠ ہفتہٕ وار مانگا میگزیٖن ویٖکلی شونن جمپس منٛز 22 جولائی 1997 پیٹھ شائع گومُت۔ تَمہِ پتہٕ آو یہِ أکِس اؠنِمے سیریٖز، فلمَن، ویٖڈیو گیمز، ناولن تہٕ باقٕے میڈیاہَن منٛز ورتاونہٕ۔
c6d077bqqwiwd8xvpi7wvyr7thbuban
148926
148925
2026-08-10T17:25:23Z
آیات محراج
11062
/* */
148926
wikitext
text/x-wiki
{{Infobox animaga}}{{external media|image1=[https://pics.filmaffinity.com/one_piece-647985949-mmed.jpg ؤچھِو]}}
'''وَن پیٖس''' چھُ جاپٲنؠ [[مانٛگا]] تہٕ [[اؠنِمے]] ہٕنٛدِس دُنیاہَس منٛز ساروٕے کھۄتہٕ مشہوٗر تہٕ کامیاب کامؠن منٛز اکھ، یُس جاپٲنۍ مانٛگا فنکار اِچیرو اوڈاہَن بنوومُت چھُ۔ یہٕ چُھ جاپٲنؠ ہفتہٕ وار مانگا میگزیٖن ویٖکلی شونن جمپس منٛز 22 جولائی 1997 پیٹھ شائع گومُت۔ تَمہِ پتہٕ آو یہِ أکِس اؠنِمے سیریٖز، فلمَن، ویٖڈیو گیمز، ناولن تہٕ باقٕے میڈیاہَن منٛز ورتاونہٕ۔
e885wprftd5on60g7ag77f5m42k1cca
148928
148926
2026-08-10T17:31:09Z
آیات محراج
11062
/* */
148928
wikitext
text/x-wiki
{{Infobox animaga}}{{external media|image1=[https://pics.filmaffinity.com/one_piece-647985949-mmed.jpg ؤچھِو]}}
'''وَن پیٖس''' چھُ جاپٲنؠ [[مانٛگا]] تہٕ [[اؠنِمے]] ہٕنٛدِس دُنیاہَس منٛز ساروٕے کھۄتہٕ مشہوٗر تہٕ کامیاب کامؠن منٛز اکھ، یُس جاپٲنۍ مانٛگا فنکار اِچیرو اوڈاہَن بنوومُت چھُ۔ یہٕ چُھ جاپٲنؠ ہفتہٕ وار مانگا میگزیٖن ویٖکلی شونن جمپس منٛز 22 جولائی 1997 پیٹھ شائع گومُت۔ تَمہِ پتہٕ آو یہِ أکِس اؠنِمے سیریٖز، فلمَن، ویٖڈیو گیمز، ناولن تہٕ باقٕے میڈیاہَن منٛز ورتاونہٕ۔<ref>https://en.wikipedia.org/wiki/One_Piece</ref>
lppoor6id7iuq2prnuwmrtpkwu7303x
148929
148928
2026-08-10T17:31:42Z
آیات محراج
11062
مِلاوُن [[زٲژ:اؠنِمے]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148929
wikitext
text/x-wiki
{{Infobox animaga}}{{external media|image1=[https://pics.filmaffinity.com/one_piece-647985949-mmed.jpg ؤچھِو]}}
'''وَن پیٖس''' چھُ جاپٲنؠ [[مانٛگا]] تہٕ [[اؠنِمے]] ہٕنٛدِس دُنیاہَس منٛز ساروٕے کھۄتہٕ مشہوٗر تہٕ کامیاب کامؠن منٛز اکھ، یُس جاپٲنۍ مانٛگا فنکار اِچیرو اوڈاہَن بنوومُت چھُ۔ یہٕ چُھ جاپٲنؠ ہفتہٕ وار مانگا میگزیٖن ویٖکلی شونن جمپس منٛز 22 جولائی 1997 پیٹھ شائع گومُت۔ تَمہِ پتہٕ آو یہِ أکِس اؠنِمے سیریٖز، فلمَن، ویٖڈیو گیمز، ناولن تہٕ باقٕے میڈیاہَن منٛز ورتاونہٕ۔<ref>https://en.wikipedia.org/wiki/One_Piece</ref>
==حَوالہٕ==
[[زٲژ:اؠنِمے]]
gam6ih834yxnt8bw0d0ry3nzehhu1ii
148937
148929
2026-08-10T18:00:36Z
Nadeemulhaqmir-bot
9480
باٹ چھُ غَلطی ٹھیٖکھ کَران [[وِکیٖپیٖڈیا:AutoWikiBrowser/Typos|غَلطی فِہرِست مُطٲبِق]]
148937
wikitext
text/x-wiki
{{Infobox animaga}}{{external media|image1=[https://pics.filmaffinity.com/one_piece-647985949-mmed.jpg ؤچھِو]}}
'''وَن پیٖس''' چھُ جاپٲنؠ [[مانٛگا]] تہٕ [[اؠنِمے]] ہٕنٛدِس دُنؠیاہَس مَنٛز ساروٕے کھۄتہٕ مشہوٗر تہٕ کامیاب کامؠن مَنٛز اَکھ، یُس جاپٲنؠ مانٛگا فنکار اِچیرو اوڈاہَن بنوومُت چھُ۔ یہٕ چھُ جاپٲنؠ ہفتہٕ وار مانگا میگزیٖن ویٖکلی شونن جمپس مَنٛز 22 جُلَے 1997 پؠٹھ شایَع گومُت۔ تَمہِ پتہٕ آو یہِ أکِس اؠنِمے سیریٖز، فلمَن، ویٖڈیو گیمز، ناولن تہٕ باقٕے میڈیاہَن مَنٛز ورتاونہٕ۔<ref>https://en.wikipedia.org/wiki/One_Piece</ref>
==حَوالہٕ==
[[زٲژ:اؠنِمے]]
nedhrd4wdag8wubk82agn1odcopdqbr
ون پیس
0
32176
148927
2026-08-10T17:26:38Z
آیات محراج
11062
رَجوٗع مُکَرر تَخلیٖق کَران
148927
wikitext
text/x-wiki
#REDIRECT [[وَن_پیٖس]]
10x3mpwt5kdefoi8co3dl66lzliyard
انیتا ژوے
0
32177
148930
2026-08-10T17:38:02Z
آیات محراج
11062
"[[:en:Special:Redirect/revision/1368360024|Anita Tsoy]]" ضفُک اِنتدٲیی حِصُک تَرجَمہٕ طور تَخلیق کَرنہٕ آمُت
148930
wikitext
text/x-wiki
'''اینا سرگیونا "انیتا" ژوے''' چھِ کوریائی نسلٕچ اکھ روٗسی گلوکار تہٕ بٲتھ لِکھٲرؠ۔<ref name="NI">{{cite news|script-title=ru:Анита Цой: "Под мой гимн люди танцуют"|last=Morozov|first=Andrey|date=27 May 2005|accessdate=21 June 2006|work=Nov'ie Izvestiya|url=http://www.newizv.ru/news/2005-05-27/25072/|language=Russian|archive-date=5 June 2011|archive-url=https://web.archive.org/web/20110605021150/http://www.newizv.ru/news/2005-05-27/25072/|url-status=dead}}</ref>سۄ چھےٚ پیپلز آرٹسٹ آف روٗس (2021) ۔
7zd6xugjgs4rykjd64tad87uxyoxq1n
148931
148930
2026-08-10T17:43:15Z
آیات محراج
11062
/* */
148931
wikitext
text/x-wiki
{{مولوٗماتھ}}
'''اینا سرگیونا "انیتا" ژوے''' چھِ کوریائی نسلٕچ اکھ روٗسی گلوکار تہٕ بٲتھ لِکھٲرؠ۔<ref name="NI">{{cite news|script-title=ru:Анита Цой: "Под мой гимн люди танцуют"|last=Morozov|first=Andrey|date=27 May 2005|accessdate=21 June 2006|work=Nov'ie Izvestiya|url=http://www.newizv.ru/news/2005-05-27/25072/|language=Russian|archive-date=5 June 2011|archive-url=https://web.archive.org/web/20110605021150/http://www.newizv.ru/news/2005-05-27/25072/|url-status=dead}}</ref>سۄ چھےٚ پیپلز آرٹسٹ آف روٗس (2021) ۔
== نَسٕل ==
تٔمۍ سُنٛد بٕڑِبب گوٚو کوریا پیٹھٕ روٗسی مشرق بعید ہجرت، تہٕ پتہٕ گوٚو تٔمۍ سُنٛد خاندان 1937 منٛز سوویت کوریا سارم [[مَرکَزی ایشیا|مرکزی ایشیا]] جلاے وطنی سۭتۍ متٲثر۔
== موٗسیٖقی ==
پنٕنۍ موٗسیٖقی ہٕنٛز صنف مسلسل بدلاونہٕ خٲطرٕ زاننہٕ یِوان، تٔمۍ کٔر 1997 منٛز راک پیٹھ مبنی ایٚلبم پولیوٹ (فلائٹ) سۭتۍ شروعات۔ تم کر پتہٕ پاپ راک، الیکٹرانک ڈانس میوزک، بلیوز تہٕ آر اینٛڈ بی منٛز مُنتقل۔
== حَوالہٕ ==
ipd2rwozub05kzbkcp29nsrxrm41gkm
148932
148931
2026-08-10T17:43:56Z
آیات محراج
11062
مِلاوُن [[زٲژ:روٗسی لوٗکھ]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148932
wikitext
text/x-wiki
{{مولوٗماتھ}}
'''اینا سرگیونا "انیتا" ژوے''' چھِ کوریائی نسلٕچ اکھ روٗسی گلوکار تہٕ بٲتھ لِکھٲرؠ۔<ref name="NI">{{cite news|script-title=ru:Анита Цой: "Под мой гимн люди танцуют"|last=Morozov|first=Andrey|date=27 May 2005|accessdate=21 June 2006|work=Nov'ie Izvestiya|url=http://www.newizv.ru/news/2005-05-27/25072/|language=Russian|archive-date=5 June 2011|archive-url=https://web.archive.org/web/20110605021150/http://www.newizv.ru/news/2005-05-27/25072/|url-status=dead}}</ref>سۄ چھےٚ پیپلز آرٹسٹ آف روٗس (2021) ۔
== نَسٕل ==
تٔمۍ سُنٛد بٕڑِبب گوٚو کوریا پیٹھٕ روٗسی مشرق بعید ہجرت، تہٕ پتہٕ گوٚو تٔمۍ سُنٛد خاندان 1937 منٛز سوویت کوریا سارم [[مَرکَزی ایشیا|مرکزی ایشیا]] جلاے وطنی سۭتۍ متٲثر۔
== موٗسیٖقی ==
پنٕنۍ موٗسیٖقی ہٕنٛز صنف مسلسل بدلاونہٕ خٲطرٕ زاننہٕ یِوان، تٔمۍ کٔر 1997 منٛز راک پیٹھ مبنی ایٚلبم پولیوٹ (فلائٹ) سۭتۍ شروعات۔ تم کر پتہٕ پاپ راک، الیکٹرانک ڈانس میوزک، بلیوز تہٕ آر اینٛڈ بی منٛز مُنتقل۔
== حَوالہٕ ==
[[زٲژ:روٗسی لوٗکھ]]
q3e4ii4bfw4b5uk94u3z5s1f4srkeea
148936
148932
2026-08-10T18:00:31Z
Nadeemulhaqmir-bot
9480
باٹ چھُ غَلطی ٹھیٖکھ کَران [[وِکیٖپیٖڈیا:AutoWikiBrowser/Typos|غَلطی فِہرِست مُطٲبِق]]
148936
wikitext
text/x-wiki
{{مولوٗماتھ}}
'''اینا سرگیونا "انیتا" ژوے''' چھِ کوریایی نسلٕچ اَکھ روٗسی گلوکار تہٕ بٲتھ لِکھٲرؠ۔<ref name="NI">{{cite news|script-title=ru:Анита Цой: "Под мой гимн люди танцуют"|last=Morozov|first=Andrey|date=27 May 2005|accessdate=21 June 2006|work=Nov'ie Izvestiya|url=http://www.newizv.ru/news/2005-05-27/25072/|language=Russian|archive-date=5 June 2011|archive-url=https://web.archive.org/web/20110605021150/http://www.newizv.ru/news/2005-05-27/25072/|url-status=dead}}</ref>سۄ چھےٚ پیپلز آرٹسٹ آف روٗس (2021) ۔
== نَسٕل ==
تٔمؠ سُنٛد بٕڑِبب گوٚو کوریا پیٹھٕ روٗسی مشرق بعید ہجرت، تہٕ پتہٕ گوٚو تٔمؠ سُنٛد خاندان 1937 مَنٛز سوویت کوریا سارم [[مَرکَزی ایشیا|مرکزی ایشیا]] جلاے وطنی سٟتؠ متٲثر۔
== موٗسیٖقی ==
پنٕنؠ موٗسیٖقی ہٕنٛز صنف مسلسل بدلاونہٕ خٲطرٕ زاننہٕ یِوان، تٔمؠ کٔر 1997 مَنٛز راک پؠٹھ مبنی ایٚلبم پولیوٹ (فلایٹ) سٟتؠ شروعات۔ تم کر پتہٕ پاپ راک، الیکٹرانک ڈانس میوزک، بلیوز تہٕ آر اینٛڈ بی مَنٛز مُنتقل۔
== حَوالہٕ ==
[[زٲژ:روٗسی لوٗکھ]]
pl4ihez846noshh4g0jepxl0tc9hbed
وایلِن
0
32178
148933
2026-08-10T17:50:06Z
آیات محراج
11062
"[[:en:Special:Redirect/revision/1366434192|Violin]]" ضفُک اِنتدٲیی حِصُک تَرجَمہٕ طور تَخلیق کَرنہٕ آمُت
148933
wikitext
text/x-wiki
وایلِن چُھ لٔکرِ ہُنٛد اکھ تارُک ساز یَتھ ژور تار چھِ G، D، A تہٕ E یَس منٛز ٹیٛوٗن کرنہٕ آمٕتۍ۔ یہٕ چُھ آرکیسٹرا سٹرِنٛگ خاندانُک ساروی کھوتہٕ لۄکُٹ تہٕ تھدِ پچ رکن۔ کھلٲڑۍ چھِ یہِ ٹھۄنٛگہِ تَل رَٹان تہٕ تارَن اَپارٕ کمان کھٔنِتھ یا تُلِتھ آواز پٲدٕ کران۔
وایلِن اوس ساروی کھوتہٕ گۄڈِنِتھ 16مہٕ صدی کس اٹلیس منٛز بناونہٕ آمُت، 18 مہٕ تہٕ 19مہ صدی منٛز آیہٕ کینٛہہ مٔزیٖد تبدیلیہٕ تاکہِ سازس زیادٕ طاقتور آواز تہٕ پروجیکشن دنہٕ۔ یورپس منٛز، کوٚر ام مغربی کلاسیکی موسیقی منٛز استعمال گژھن وٲلؠ باقی تار وٲلؠ آلات، یتھ کٔنۍ زِ [[وایلا]]۔<ref>{{cite web|last1=Singh|first1=Jhujhar|title=Interview: Kala Ramnath|url=https://www.youtube.com/watch?v=l1SoZSosu6Y|archive-url=https://web.archive.org/web/20140603030520/http://www.youtube.com/watch?v=l1SoZSosu6Y|archive-date=2014-06-03|access-date=5 September 2015|website=News X|publisher=YouTube}}</ref>
3i5yj5yt24ruhs2x9co7qj0cwwww4nd
148934
148933
2026-08-10T17:52:24Z
آیات محراج
11062
مِلاوُن [[زٲژ:گؠونٕکؠ چیٖز]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148934
wikitext
text/x-wiki
{{Infobox instrument}}
'''وایلِن''' چُھ لٔکرِ ہُنٛد اکھ تارُک ساز یَتھ ژور تار چھِ G، D، A تہٕ E یَس منٛز ٹیٛوٗن کرنہٕ آمٕتۍ۔ یہٕ چُھ آرکیسٹرا سٹرِنٛگ خاندانُک ساروی کھوتہٕ لۄکُٹ تہٕ تھدِ پچ رکن۔ کھلٲڑۍ چھِ یہِ ٹھۄنٛگہِ تَل رَٹان تہٕ تارَن اَپارٕ کمان کھٔنِتھ یا تُلِتھ آواز پٲدٕ کران۔
وایلِن اوس ساروی کھوتہٕ گۄڈِنِتھ 16مہٕ صدی کس اٹلیس منٛز بناونہٕ آمُت، 18 مہٕ تہٕ 19مہ صدی منٛز آیہٕ کینٛہہ مٔزیٖد تبدیلیہٕ تاکہِ سازس زیادٕ طاقتور آواز تہٕ پروجیکشن دنہٕ۔ یورپس منٛز، کوٚر ام مغربی کلاسیکی موسیقی منٛز استعمال گژھن وٲلؠ باقی تار وٲلؠ آلات، یتھ کٔنۍ زِ [[وایلا]]۔<ref>{{cite web|last1=Singh|first1=Jhujhar|title=Interview: Kala Ramnath|url=https://www.youtube.com/watch?v=l1SoZSosu6Y|archive-url=https://web.archive.org/web/20140603030520/http://www.youtube.com/watch?v=l1SoZSosu6Y|archive-date=2014-06-03|access-date=5 September 2015|website=News X|publisher=YouTube}}</ref>
==حَوالہٕ==
[[زٲژ:گؠونٕکؠ چیٖز]]
2ohc30vubbf5sm6l2i52o2q6shktwvd
148935
148934
2026-08-10T18:00:26Z
Nadeemulhaqmir-bot
9480
باٹ چھُ غَلطی ٹھیٖکھ کَران [[وِکیٖپیٖڈیا:AutoWikiBrowser/Typos|غَلطی فِہرِست مُطٲبِق]]
148935
wikitext
text/x-wiki
{{Infobox instrument}}
'''وایلِن''' چھُ لٔکرِ ہُنٛد اَکھ تارُک ساز یَتھ ژور تار چھِ G، D، A تہٕ E یَس مَنٛز ٹیٛوٗن کرنہٕ آمٕتؠ۔ یہٕ چھُ آرکیسٹرا سٹرِنٛگ خاندانُک سارِوٕے کھۄتہٕ لۄکُٹ تہٕ تھدِ پچ رکن۔ کھلٲڑؠ چھِ یہِ ٹھۄنٛگہِ تَل رَٹان تہٕ تارَن اَپارٕ کمان کھٔنِتھ یا تُلِتھ آواز پٲدٕ کران۔
وایلِن اوس سارِوٕے کھۄتہٕ گۄڈِنِتھ 16مہٕ صدی کس اٹلیس مَنٛز بناونہٕ آمُت، 18 مہٕ تہٕ 19مہ صدی مَنٛز آیہٕ کینٛہہ مٔزیٖد تبدیلیہٕ تاکہِ سازس زیٛادٕ طاقتور آواز تہٕ پروجیکشن دنہٕ۔ یورپس مَنٛز، کوٚر ام مغربی کلاسیکی موٗسیٖقی مَنٛز اِستِمال گژھن وٲلؠ باقی تار وٲلؠ آلات، یَتھ کٔنؠ زِ [[وایلا]]۔<ref>{{cite web|last1=Singh|first1=Jhujhar|title=Interview: Kala Ramnath|url=https://www.youtube.com/watch?v=l1SoZSosu6Y|archive-url=https://web.archive.org/web/20140603030520/http://www.youtube.com/watch?v=l1SoZSosu6Y|archive-date=2014-06-03|access-date=5 September 2015|website=News X|publisher=YouTube}}</ref>
==حَوالہٕ==
[[زٲژ:گؠونٕکؠ چیٖز]]
6htarwlwlkzszmlb7yf3yzw3mpzfnnk
روبلوکس
0
32179
148951
2026-08-11T06:19:24Z
آیات محراج
11062
"[[:en:Special:Redirect/revision/1367879435|Roblox]]" ضفُک اِنتدٲیی حِصُک تَرجَمہٕ طور تَخلیق کَرنہٕ آمُت
148951
wikitext
text/x-wiki
روبلوکس چھُ اکھ آن لائن گیم پلیٹ فارم تہٕ گیم بناونُک نظام یُس صارفینَن پانہٕ یا باقی صارفینَن ہٕنٛدِ طرفہٕ بناونہٕ آمٕتۍ گیم پروگرام تہٕ گِنٛدنُک اجازت چھُ دِوان۔ یہٕ اوس ڈیوڈ باسکی تہٕ ایرک کیسلن 2004 منٛز تیار کورمُت، تہٕ 2006 منٛز آو عوامس خٲطرٕ جٲری کرنہٕ۔ فروری 2025 تام، پلیٹ فارمَن چھِ اوسطاً 85.3 ملین روزانہٕ سرگرم صارفینَن ہٕنٛز اطلاع دِژمٕژ۔ کمپٔنی مُطٲبِق چھِ امِکۍ رٮ۪تہٕ وار کھلٲڑین ہِنٛدِس بنیادَس منٛز 16 ؤری کھۄتہٕ کم وٲنٛسہِ ہٕنٛدۍ تمام امریکی شُرۍ شٲمِل۔
یہِ پلیٹ فارم چھُ لچھَن صارفَن ہٕنٛدِ دٔسۍ بناونہٕ آمٕتۍ کھیلَن ہٕنٛز میزبٲنی کران، یِم [[لُواو|لُواوُک]] استعمال کٔرِتھ بناونہٕ آمٕتۍ چھِ، یُس پرٛوگرامِنٛگ زبان [[لُوا]] تہٕ پلیٹ فارمُک گیم انجن، روبلوکس سٹوڈیوُک اکھ ترمیم شُدٕ بولہِ استعمال کٔرِتھ بناونہٕ آمُت چھُ۔ ییٚلہِ زن روبلوکس گِنٛدنہٕ خٲطرٕ مُفت چھُ، اَتھ منٛز چھِ گیمَس منٛز خٔریٖدٲری شٲمِل یِم پننہِ ورچوئل کرنسی ذٔریعہٕ کرنہٕ یِوان چھِ یِم روبکس ونان چھِ، تہٕ پلیٹ فارمَس پیٹھ گیم ڈویلپرز چھِ تِم چیٖز بناونَس قٲبِل آسان یِمَن ہُنٛد قٕمتھ روبکس۔ پلیٹ فارم چھُ أکِس بٔڑِس ورچوئل اکانومی ہٕنٛز میزبٲنی کران یُس یِمَن چیٖزَن تہٕ روبکسَس أنٛدۍ پٔکھۍ مرکوز۔ پلیٹ فارمُک ڈویلپر ایکسچینج پروگرامُک استعمال کٔرِتھ، تخلیق کار چھِ پنٕنۍ کماونہٕ آمٕتۍ روبکس حقیقی دنیا کرنسی خٲطرٕ تبادلہٕ کٔرِتھ۔ یہِ پلیٹ فارم چھُ ورچوئل کنسرٹَن تہٕ تقریبن سۭتۍ سۭتۍ اشتہاری گیمَن ہٕنٛز میزبٲنی باپتھ استعمال کرنہٕ آمُت۔
ییٚلہِ زَن روبلوکسَن لۄکٕٹ شروٗعات کٔرۍ- پلیئر بیس تہٕ أکِس کمپنی ہٕنٛدِ پٲٹھۍ - أمۍ ہیوٚت 2010 کِس دٔیمِس نؠصفَس منٛز تیزی سان ترقی کرُن۔ یہِ ترقی گٔیہِ [[کووِڈ-19 عالمی وبا|کووِڈ 19 وباہَن]] مٔزیٖد تیز ۔ 2020 ہَس تام ٲسِکھ روبلوکسَس پٮ۪ٹھ 5,000 کھۄتہٕ زِیٛادٕ گیمہٕ دَہ لَچھ کھۄتہٕ زِیٛادٕ لَٹہِ گِنٛدنہٕ آمٕتۍ، تہٕ 20 کھۄتہٕ زِیٛادٕ گیم ٲسِکھ اَکھ ارب کھۄتہٕ زِیٛادٕ لَٹہِ گِنٛدنہٕ آمٕتۍ۔ حالانٛکہِ روبلوکسَس خٲطرٕ چھِ تنقیدی جٲیزٕ مثبت رودمٕتۍ، مگر اتھ چھُ شُرؠن ہٕنٛز حفاظت تہٕ امِکۍ موادٕچ اعتدال پسندی مُتعلِق تنقیدُک سامنہٕ کرُن، موادٕچ فحش یا سیٲسی طور انتہا پسندی ہٕنٛدِ وجہہ سۭتۍ۔ شُرین تہٕ مائیکرو ٹرانزیکشنَن خٲطرٕ چھِ أمِس مبینہ استحصالی عملَن پٮ۪ٹھ تنقیٖد کرنہٕ آمٕژ۔ یہِ پلیٹ فارم چھُ چیٖن، مِصر، تُرکی تہٕ عِراق ہؠتھ واریاہن مُلکن منٛز پابٔنٛدی یا پوٗرٕ پٲٹھۍ بَنٛد کرنہٕ آمت۔
glx0ih2vw9v6162vug01l4g4tkercoz
148952
148951
2026-08-11T06:22:53Z
آیات محراج
11062
/* */
148952
wikitext
text/x-wiki
{{مولوٗماتھ}}
'''روبلوکس''' چھُ اکھ آن لائن گیم پلیٹ فارم تہٕ گیم بناونُک نظام یُس صارفینَن پانہٕ یا باقی صارفینَن ہٕنٛدِ طرفہٕ بناونہٕ آمٕتۍ گیم پروگرام تہٕ گِنٛدنُک اجازت چھُ دِوان۔ یہٕ اوس ڈیوڈ باسکی تہٕ ایرک کیسلن 2004 منٛز تیار کورمُت، تہٕ 2006 منٛز آو عوامس خٲطرٕ جٲری کرنہٕ۔ فروری 2025 تام، پلیٹ فارمَن چھِ اوسطاً 85.3 ملین روزانہٕ سرگرم صارفینَن ہٕنٛز اطلاع دِژمٕژ۔ کمپٔنی مُطٲبِق چھِ امِکۍ رٮ۪تہٕ وار کھلٲڑین ہِنٛدِس بنیادَس منٛز 16 ؤری کھۄتہٕ کم وٲنٛسہِ ہٕنٛدۍ تمام امریکی شُرۍ شٲمِل۔
یہِ پلیٹ فارم چھُ لچھَن صارفَن ہٕنٛدِ دٔسۍ بناونہٕ آمٕتۍ کھیلَن ہٕنٛز میزبٲنی کران، یِم [[لُواو|لُواوُک]] استعمال کٔرِتھ بناونہٕ آمٕتۍ چھِ، یُس پرٛوگرامِنٛگ زبان [[لُوا]] تہٕ پلیٹ فارمُک گیم انجن، روبلوکس سٹوڈیوُک اکھ ترمیم شُدٕ بولہِ استعمال کٔرِتھ بناونہٕ آمُت چھُ۔ ییٚلہِ زن روبلوکس گِنٛدنہٕ خٲطرٕ مُفت چھُ، اَتھ منٛز چھِ گیمَس منٛز خٔریٖدٲری شٲمِل یِم پننہِ ورچوئل کرنسی ذٔریعہٕ کرنہٕ یِوان چھِ یِم روبکس ونان چھِ، تہٕ پلیٹ فارمَس پیٹھ گیم ڈویلپرز چھِ تِم چیٖز بناونَس قٲبِل آسان یِمَن ہُنٛد قٕمتھ روبکس۔ پلیٹ فارم چھُ أکِس بٔڑِس ورچوئل اکانومی ہٕنٛز میزبٲنی کران یُس یِمَن چیٖزَن تہٕ روبکسَس أنٛدۍ پٔکھۍ مرکوز۔ پلیٹ فارمُک ڈویلپر ایکسچینج پروگرامُک استعمال کٔرِتھ، تخلیق کار چھِ پنٕنۍ کماونہٕ آمٕتۍ روبکس حقیقی دنیا کرنسی خٲطرٕ تبادلہٕ کٔرِتھ۔ یہِ پلیٹ فارم چھُ ورچوئل کنسرٹَن تہٕ تقریبن سۭتۍ سۭتۍ اشتہاری گیمَن ہٕنٛز میزبٲنی باپتھ استعمال کرنہٕ آمُت۔
ییٚلہِ زَن روبلوکسَن لۄکٕٹ شروٗعات کٔرۍ- پلیئر بیس تہٕ أکِس کمپنی ہٕنٛدِ پٲٹھۍ - أمۍ ہیوٚت 2010 کِس دٔیمِس نؠصفَس منٛز تیزی سان ترقی کرُن۔ یہِ ترقی گٔیہِ [[کووِڈ-19 عالمی وبا|کووِڈ 19 وباہَن]] مٔزیٖد تیز ۔ 2020 ہَس تام ٲسِکھ روبلوکسَس پٮ۪ٹھ 5,000 کھۄتہٕ زِیٛادٕ گیمہٕ دَہ لَچھ کھۄتہٕ زِیٛادٕ لَٹہِ گِنٛدنہٕ آمٕتۍ، تہٕ 20 کھۄتہٕ زِیٛادٕ گیم ٲسِکھ اَکھ ارب کھۄتہٕ زِیٛادٕ لَٹہِ گِنٛدنہٕ آمٕتۍ۔ حالانٛکہِ روبلوکسَس خٲطرٕ چھِ تنقیدی جٲیزٕ مثبت رودمٕتۍ، مگر اتھ چھُ شُرؠن ہٕنٛز حفاظت تہٕ امِکۍ موادٕچ اعتدال پسندی مُتعلِق تنقیدُک سامنہٕ کرُن، موادٕچ فحش یا سیٲسی طور انتہا پسندی ہٕنٛدِ وجہہ سۭتۍ۔ شُرین تہٕ مائیکرو ٹرانزیکشنَن خٲطرٕ چھِ أمِس مبینہ استحصالی عملَن پٮ۪ٹھ تنقیٖد کرنہٕ آمٕژ۔ یہِ پلیٹ فارم چھُ چیٖن، مِصر، تُرکی تہٕ عِراق ہؠتھ واریاہن مُلکن منٛز پابٔنٛدی یا پوٗرٕ پٲٹھۍ بَنٛد کرنہٕ آمت۔
alibf04udm0d94zrxnq5r0895ja5fqe
148953
148952
2026-08-11T06:24:24Z
آیات محراج
11062
مِلاوُن [[زٲژ:ویٖڈیو گیم]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148953
wikitext
text/x-wiki
{{مولوٗماتھ
| صِرِف کٲشُر = آ
}}
'''روبلوکس''' چھُ اکھ آن لائن گیم پلیٹ فارم تہٕ گیم بناونُک نظام یُس صارفینَن پانہٕ یا باقی صارفینَن ہٕنٛدِ طرفہٕ بناونہٕ آمٕتۍ گیم پروگرام تہٕ گِنٛدنُک اجازت چھُ دِوان۔ یہٕ اوس ڈیوڈ باسکی تہٕ ایرک کیسلن 2004 منٛز تیار کورمُت، تہٕ 2006 منٛز آو عوامس خٲطرٕ جٲری کرنہٕ۔ فروری 2025 تام، پلیٹ فارمَن چھِ اوسطاً 85.3 ملین روزانہٕ سرگرم صارفینَن ہٕنٛز اطلاع دِژمٕژ۔ کمپٔنی مُطٲبِق چھِ امِکۍ رٮ۪تہٕ وار کھلٲڑین ہِنٛدِس بنیادَس منٛز 16 ؤری کھۄتہٕ کم وٲنٛسہِ ہٕنٛدۍ تمام امریکی شُرۍ شٲمِل۔<ref name=":17">{{Cite web |last=Yaden |first=Joseph |date=May 3, 2020 |title=What is Roblox? |url=https://www.digitaltrends.com/gaming/what-is-roblox/ |url-status=live |archive-url=https://web.archive.org/web/20200530125358/https://www.digitaltrends.com/gaming/what-is-roblox/ |archive-date=May 30, 2020 |access-date=February 4, 2025 |website=[[Digital Trends]] |language=en}}</ref>
یہِ پلیٹ فارم چھُ لچھَن صارفَن ہٕنٛدِ دٔسۍ بناونہٕ آمٕتۍ کھیلَن ہٕنٛز میزبٲنی کران، یِم [[لُواو|لُواوُک]] استعمال کٔرِتھ بناونہٕ آمٕتۍ چھِ، یُس پرٛوگرامِنٛگ زبان [[لُوا]] تہٕ پلیٹ فارمُک گیم انجن، روبلوکس سٹوڈیوُک اکھ ترمیم شُدٕ بولہِ استعمال کٔرِتھ بناونہٕ آمُت چھُ۔ ییٚلہِ زن روبلوکس گِنٛدنہٕ خٲطرٕ مُفت چھُ، اَتھ منٛز چھِ گیمَس منٛز خٔریٖدٲری شٲمِل یِم پننہِ ورچوئل کرنسی ذٔریعہٕ کرنہٕ یِوان چھِ یِم روبکس ونان چھِ، تہٕ پلیٹ فارمَس پیٹھ گیم ڈویلپرز چھِ تِم چیٖز بناونَس قٲبِل آسان یِمَن ہُنٛد قٕمتھ روبکس۔ پلیٹ فارم چھُ أکِس بٔڑِس ورچوئل اکانومی ہٕنٛز میزبٲنی کران یُس یِمَن چیٖزَن تہٕ روبکسَس أنٛدۍ پٔکھۍ مرکوز۔ پلیٹ فارمُک ڈویلپر ایکسچینج پروگرامُک استعمال کٔرِتھ، تخلیق کار چھِ پنٕنۍ کماونہٕ آمٕتۍ روبکس حقیقی دنیا کرنسی خٲطرٕ تبادلہٕ کٔرِتھ۔ یہِ پلیٹ فارم چھُ ورچوئل کنسرٹَن تہٕ تقریبن سۭتۍ سۭتۍ اشتہاری گیمَن ہٕنٛز میزبٲنی باپتھ استعمال کرنہٕ آمُت۔
ییٚلہِ زَن روبلوکسَن لۄکٕٹ شروٗعات کٔرۍ- پلیئر بیس تہٕ أکِس کمپنی ہٕنٛدِ پٲٹھۍ - أمۍ ہیوٚت 2010 کِس دٔیمِس نؠصفَس منٛز تیزی سان ترقی کرُن۔ یہِ ترقی گٔیہِ [[کووِڈ-19 عالمی وبا|کووِڈ 19 وباہَن]] مٔزیٖد تیز ۔ 2020 ہَس تام ٲسِکھ روبلوکسَس پٮ۪ٹھ 5,000 کھۄتہٕ زِیٛادٕ گیمہٕ دَہ لَچھ کھۄتہٕ زِیٛادٕ لَٹہِ گِنٛدنہٕ آمٕتۍ، تہٕ 20 کھۄتہٕ زِیٛادٕ گیم ٲسِکھ اَکھ ارب کھۄتہٕ زِیٛادٕ لَٹہِ گِنٛدنہٕ آمٕتۍ۔ حالانٛکہِ روبلوکسَس خٲطرٕ چھِ تنقیدی جٲیزٕ مثبت رودمٕتۍ، مگر اتھ چھُ شُرؠن ہٕنٛز حفاظت تہٕ امِکۍ موادٕچ اعتدال پسندی مُتعلِق تنقیدُک سامنہٕ کرُن، موادٕچ فحش یا سیٲسی طور انتہا پسندی ہٕنٛدِ وجہہ سۭتۍ۔ شُرین تہٕ مائیکرو ٹرانزیکشنَن خٲطرٕ چھِ أمِس مبینہ استحصالی عملَن پٮ۪ٹھ تنقیٖد کرنہٕ آمٕژ۔ یہِ پلیٹ فارم چھُ چیٖن، مِصر، تُرکی تہٕ عِراق ہؠتھ واریاہن مُلکن منٛز پابٔنٛدی یا پوٗرٕ پٲٹھۍ بَنٛد کرنہٕ آمت۔
==حَوالہٕ==
[[زٲژ:ویٖڈیو گیم]]
merj377c95j485a1fr9kuj2stqbmrkr
مایِنکرٛافٹ
0
32180
148955
2026-08-11T06:51:57Z
آیات محراج
11062
"[[:en:Special:Redirect/revision/1368639635|Minecraft]]" ضفُک اِنتدٲیی حِصُک تَرجَمہٕ طور تَخلیق کَرنہٕ آمُت
148955
wikitext
text/x-wiki
'''مایِنکرٛافٹ''' یا '''مایِن کرٛافٹ''' چھُ اکھ سینڈ باکس گیم یُس سویڈش کمپنی موجنگ سٹوڈیوَن تیار تہٕ شایع کوٚرمُت چھُ۔ 2009 منٛز ابتدٲیی رسائی عنوانہٕ کس طورس پیٹھ امکہٕ ابتدٲئی عوٲمی الفا ریلیز پتہٕ، یہٕ آو نومبر 2011 منٛز پرسنل کمپیوٹرن خٲطرٕ باضٲبطہٕ طور جٲری کرنہٕ۔ اَمہِ پتہٕ چھُ یہِ گیم واریاہَن پلیٹ فارمَن پٮ۪ٹھ پورٹ کرنہٕ آمُت، یَتھ منٛز موبائل آلہٕ تہٕ مُختٔلِف ویڈیو گیم کنسول شٲمِل چھِ۔
مایِن کرٛافٹَس منٛز، کھلٲڑۍ چھِ طریقہٕ کار لحاظٕ پٲدٕ کرنہٕ آمٕتۍ دنیاہٕچ تلاش کران یَتھ منٛز عملی طور لامحدود علاقہٕ چھُ ترٛےٚ جہتی بلاکَن سۭتۍ بنیمُت یِم ووکسلز پٲٹھۍ نمایندگی کران چھِ۔ تِم ہیکن خام مال، دستکٲری ہٕنٛدۍ اوزار تہٕ چیٖز دریافت کٔرِتھ تہٕ کڑِتھ، ڈھانچہٕ بنٲوِتھ، دُشمن ہجومن سۭتۍ لڑِتھ، تہٕ ملٹی پلیئرس منٛز باقی کھلاڑین سۭتۍ تعاون یا مقابلہٕ کٔرِتھ۔ اَمہِ علاوٕ چھِ کھیلٕچ بٔڑ کمیونٹی صارفَن ہٕنٛدِ طرفہٕ تیار کٔرمٕتۍ موادُک اکھ وسیع قٕسم پیش کران، یِتھ کٔنۍ زَن ترمیم، سرور، پلیئر سکن، ٹیکسچر پیک، تہٕ پننہِ مرضی مطٲبِق نقشہٕ، یِم گیم میکانِکس تہٕ امکاناتَن ہُنٛد نٔو شٲمِل چھِ کران۔
''مایِن کرٛافٹ'' چھُ 400 ملین کھۄتہٕ زیٛادٕ کاپیہٕ کٕننہٕ سۭتۍ ہمہ وقتک ساروٕے کھۄتہٕ زیادٕ کٕنن وول ویٖڈیو گیم۔{{Efn|Some sources consider ''[[Tetris]]'' to be the best-selling video game by combining the sales of all of its different versions while others exclude it because they consider it a video game series rather than a stand-alone video game;<ref>{{Cite web |last=Gerken |first=Tom |date=2023-10-16 |title=Minecraft becomes first video game to hit 300m sales |url=https://www.bbc.com/news/technology-67105983 |access-date=2026-03-24 |publisher=[[BBC]] |language=en-GB |quote=For this reason, Tetris is usually considered a series, whereas Minecraft is the same game whether it is played on Nintendo Switch or mobile.}}</ref><ref>{{Cite news |last=Nguyen |first=Britney |date=2023-10-16 |title=Minecraft Just Surpassed 300 Million Sales—Here's The Only Video Game Still Beating It |url=https://www.forbes.com/sites/britneynguyen/2023/10/16/minecraft-just-surpassed-300-million-sales-heres-the-only-video-game-still-beating-it/ |archive-url=https://web.archive.org/web/20251222090913/https://www.forbes.com/sites/britneynguyen/2023/10/16/minecraft-just-surpassed-300-million-sales-heres-the-only-video-game-still-beating-it/ |archive-date=22 December 2025 |access-date=2026-03-24 |work=[[Forbes]] |language=en |quote=Because there have been several versions of Tetris since it was released in 1984, it is considered by some to be a series instead of one video game like Minecraft. |url-status=live }}</ref> see [[List of best-selling video games]] for more information.}}
36fiky97y0itnptcar4yg3ns225667s
148957
148955
2026-08-11T06:53:50Z
آیات محراج
11062
مِلاوُن [[زٲژ:ویٖڈیو گیم]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148957
wikitext
text/x-wiki
{{مولوٗماتھ}}
'''مایِنکرٛافٹ''' یا '''مایِن کرٛافٹ''' چھُ اکھ سینڈ باکس گیم یُس سویڈش کمپنی موجنگ سٹوڈیوَن تیار تہٕ شایع کوٚرمُت چھُ۔ 2009 منٛز ابتدٲیی رسائی عنوانہٕ کس طورس پیٹھ امکہٕ ابتدٲئی عوٲمی الفا ریلیز پتہٕ، یہٕ آو نومبر 2011 منٛز پرسنل کمپیوٹرن خٲطرٕ باضٲبطہٕ طور جٲری کرنہٕ۔ اَمہِ پتہٕ چھُ یہِ گیم واریاہَن پلیٹ فارمَن پٮ۪ٹھ پورٹ کرنہٕ آمُت، یَتھ منٛز موبائل آلہٕ تہٕ مُختٔلِف ویڈیو گیم کنسول شٲمِل چھِ۔
مایِن کرٛافٹَس منٛز، کھلٲڑۍ چھِ طریقہٕ کار لحاظٕ پٲدٕ کرنہٕ آمٕتۍ دنیاہٕچ تلاش کران یَتھ منٛز عملی طور لامحدود علاقہٕ چھُ ترٛےٚ جہتی بلاکَن سۭتۍ بنیمُت یِم ووکسلز پٲٹھۍ نمایندگی کران چھِ۔ تِم ہیکن خام مال، دستکٲری ہٕنٛدۍ اوزار تہٕ چیٖز دریافت کٔرِتھ تہٕ کڑِتھ، ڈھانچہٕ بنٲوِتھ، دُشمن ہجومن سۭتۍ لڑِتھ، تہٕ ملٹی پلیئرس منٛز باقی کھلاڑین سۭتۍ تعاون یا مقابلہٕ کٔرِتھ۔ اَمہِ علاوٕ چھِ کھیلٕچ بٔڑ کمیونٹی صارفَن ہٕنٛدِ طرفہٕ تیار کٔرمٕتۍ موادُک اکھ وسیع قٕسم پیش کران، یِتھ کٔنۍ زَن ترمیم، سرور، پلیئر سکن، ٹیکسچر پیک، تہٕ پننہِ مرضی مطٲبِق نقشہٕ، یِم گیم میکانِکس تہٕ امکاناتَن ہُنٛد نٔو شٲمِل چھِ کران۔
''مایِن کرٛافٹ'' چھُ 400 ملین کھۄتہٕ زیٛادٕ کاپیہٕ کٕننہٕ سۭتۍ ہمہ وقتک ساروٕے کھۄتہٕ زیادٕ کٕنن وول ویٖڈیو گیم۔{{Efn|Some sources consider ''[[Tetris]]'' to be the best-selling video game by combining the sales of all of its different versions while others exclude it because they consider it a video game series rather than a stand-alone video game;<ref>{{Cite web |last=Gerken |first=Tom |date=2023-10-16 |title=Minecraft becomes first video game to hit 300m sales |url=https://www.bbc.com/news/technology-67105983 |access-date=2026-03-24 |publisher=[[BBC]] |language=en-GB |quote=For this reason, Tetris is usually considered a series, whereas Minecraft is the same game whether it is played on Nintendo Switch or mobile.}}</ref><ref>{{Cite news |last=Nguyen |first=Britney |date=2023-10-16 |title=Minecraft Just Surpassed 300 Million Sales—Here's The Only Video Game Still Beating It |url=https://www.forbes.com/sites/britneynguyen/2023/10/16/minecraft-just-surpassed-300-million-sales-heres-the-only-video-game-still-beating-it/ |archive-url=https://web.archive.org/web/20251222090913/https://www.forbes.com/sites/britneynguyen/2023/10/16/minecraft-just-surpassed-300-million-sales-heres-the-only-video-game-still-beating-it/ |archive-date=22 December 2025 |access-date=2026-03-24 |work=[[Forbes]] |language=en |quote=Because there have been several versions of Tetris since it was released in 1984, it is considered by some to be a series instead of one video game like Minecraft. |url-status=live }}</ref> see [[List of best-selling video games]] for more information.}}
==حَوالہٕ==
{{حَوالہٕ}}
[[زٲژ:ویٖڈیو گیم]]
cva6mk6ow0kph6c2stiyn68fslovlhl
148958
148957
2026-08-11T06:55:14Z
آیات محراج
11062
/* */
148958
wikitext
text/x-wiki
{{مولوٗماتھ
| صِرِف کٲشُر = آ
}}
'''مایِنکرٛافٹ''' یا '''مایِن کرٛافٹ''' چھُ اکھ سینڈ باکس گیم یُس سویڈش کمپنی موجنگ سٹوڈیوَن تیار تہٕ شایع کوٚرمُت چھُ۔ 2009 منٛز ابتدٲیی رسائی عنوانہٕ کس طورس پیٹھ امکہٕ ابتدٲئی عوٲمی الفا ریلیز پتہٕ، یہٕ آو نومبر 2011 منٛز پرسنل کمپیوٹرن خٲطرٕ باضٲبطہٕ طور جٲری کرنہٕ۔ اَمہِ پتہٕ چھُ یہِ گیم واریاہَن پلیٹ فارمَن پٮ۪ٹھ پورٹ کرنہٕ آمُت، یَتھ منٛز موبائل آلہٕ تہٕ مُختٔلِف ویڈیو گیم کنسول شٲمِل چھِ۔
مایِن کرٛافٹَس منٛز، کھلٲڑۍ چھِ طریقہٕ کار لحاظٕ پٲدٕ کرنہٕ آمٕتۍ دنیاہٕچ تلاش کران یَتھ منٛز عملی طور لامحدود علاقہٕ چھُ ترٛےٚ جہتی بلاکَن سۭتۍ بنیمُت یِم ووکسلز پٲٹھۍ نمایندگی کران چھِ۔ تِم ہیکن خام مال، دستکٲری ہٕنٛدۍ اوزار تہٕ چیٖز دریافت کٔرِتھ تہٕ کڑِتھ، ڈھانچہٕ بنٲوِتھ، دُشمن ہجومن سۭتۍ لڑِتھ، تہٕ ملٹی پلیئرس منٛز باقی کھلاڑین سۭتۍ تعاون یا مقابلہٕ کٔرِتھ۔ اَمہِ علاوٕ چھِ کھیلٕچ بٔڑ کمیونٹی صارفَن ہٕنٛدِ طرفہٕ تیار کٔرمٕتۍ موادُک اکھ وسیع قٕسم پیش کران، یِتھ کٔنۍ زَن ترمیم، سرور، پلیئر سکن، ٹیکسچر پیک، تہٕ پننہِ مرضی مطٲبِق نقشہٕ، یِم گیم میکانِکس تہٕ امکاناتَن ہُنٛد نٔو شٲمِل چھِ کران۔
''مایِن کرٛافٹ'' چھُ 400 ملین کھۄتہٕ زیٛادٕ کاپیہٕ کٕننہٕ سۭتۍ ہمہ وقتک ساروٕے کھۄتہٕ زیادٕ کٕنن وول ویٖڈیو گیم۔{{Efn|Some sources consider ''[[Tetris]]'' to be the best-selling video game by combining the sales of all of its different versions while others exclude it because they consider it a video game series rather than a stand-alone video game;<ref>{{Cite web |last=Gerken |first=Tom |date=2023-10-16 |title=Minecraft becomes first video game to hit 300m sales |url=https://www.bbc.com/news/technology-67105983 |access-date=2026-03-24 |publisher=[[BBC]] |language=en-GB |quote=For this reason, Tetris is usually considered a series, whereas Minecraft is the same game whether it is played on Nintendo Switch or mobile.}}</ref><ref>{{Cite news |last=Nguyen |first=Britney |date=2023-10-16 |title=Minecraft Just Surpassed 300 Million Sales—Here's The Only Video Game Still Beating It |url=https://www.forbes.com/sites/britneynguyen/2023/10/16/minecraft-just-surpassed-300-million-sales-heres-the-only-video-game-still-beating-it/ |archive-url=https://web.archive.org/web/20251222090913/https://www.forbes.com/sites/britneynguyen/2023/10/16/minecraft-just-surpassed-300-million-sales-heres-the-only-video-game-still-beating-it/ |archive-date=22 December 2025 |access-date=2026-03-24 |work=[[Forbes]] |language=en |quote=Because there have been several versions of Tetris since it was released in 1984, it is considered by some to be a series instead of one video game like Minecraft. |url-status=live }}</ref> see [[List of best-selling video games]] for more information.}}
==حَوالہٕ==
{{حَوالہٕ}}
[[زٲژ:ویٖڈیو گیم]]
i1wlo9lfgajnbl69whmf7txe74kxkdj
مایِن کرٛافٹ
0
32181
148956
2026-08-11T06:52:13Z
آیات محراج
11062
رَجوٗع مُکَرر تَخلیٖق کَران
148956
wikitext
text/x-wiki
#REDIRECT [[مایِنکرٛافٹ]]
tb0j81f7ngw4t3879lgixejc4fcf7uq
صوفیہ (روبوٹ)
0
32182
148960
2026-08-11T07:43:07Z
آیات محراج
11062
"[[:en:Special:Redirect/revision/1355871628|Sophia (robot)]]" ضفُک اِنتدٲیی حِصُک تَرجَمہٕ طور تَخلیق کَرنہٕ آمُت
148960
wikitext
text/x-wiki
'''صوفیہ''' چھِ اکھ زنانہٕ پیش کرن وول سمٲجی [[اِنسان نما روبوٹ]] یُس 2016 منٛز [[ہونٛگ کونٛگ|ہانگ کانگس]] منٛز مقیم کمپنی ہینسن روبوٹکس اوس تیار کوٚرمت۔ صوفیہ آیہ 14 فروری 2016 منٛز چالوٗ کرنہٕ، تہٕ کٔرٕن پنٕنۍ گۄڈٕنِچہِ لٹہِ مارچ 2016 کِس مَنٛزس منٛز آسٹن، ٹیکساس، ریاستہائے متحدَس منٛز ساؤتھ بائی ساؤتھ ویسٹ (SXSW) منٛز پیش۔ صوفیہ ٲس أکس "سوشل روبوٹ" کس طورس پیٹھ مارکیٹِنٛگ کرنہٕ آمٕژ یُس سمٲجی رویچ نقل ہیکہٕ کٔرتھ تہٕ انسانن منٛز لولُک احساس پٲدٕ ہیکہٕ کٔرتھ۔
صوفیہ چھُ پوٗرٕ دُنیاہَس منٛز میڈیاہَن کور کوٚرمُت، تہٕ أمۍ چھِ واریاہَن ہائی پروفائل اِنٹرویوَن منٛز حصہٕ نِمُت۔ اکتوبر 2017 ہَس منٛز آیہِ صوفیہَس [[سوٗدی عرب|سعودی عربٕچ]] شہریت دِنہٕ، یُس کُنہِ تہِ مُلکَس منٛز قونوٗنی شخصیت حٲصِل کرن وول گۄڈنیُک روبوٹ بنیوو۔<ref name="Reynolds">{{cite magazine|first=Emily|last=Reynolds|date=January 6, 2018|title=The agony of Sophia, the world's first robot citizen condemned to a lifeless career in marketing|magazine=Wired|url=https://www.wired.co.uk/article/sophia-robot-citizen-womens-rights-detriot-become-human-hanson-robotics|access-date=2023-03-06}}</ref> نومبر 2017 ہس منٛز آو صوفیہ [[اقوامہٕ متحدٕ|اقوام متحدٕک]] ترقیاتی پروگرامُک گۄڈٕنیُک انوویشن چیمپئن نامزد کرنہٕ، تہٕ یہِ چھِ اقوام متحدُک خطاب دِنہٕ آمٕژ گۄڈٕنِچ غٲر انسانی ۔
j0jbplwg4ryfkxijrzjh8glzjrihti3
148962
148960
2026-08-11T07:51:11Z
آیات محراج
11062
مِلاوُن [[زٲژ:روبوٹ]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148962
wikitext
text/x-wiki
{{مولوٗماتھ}}
'''صوفیہ''' چھِ اکھ زنانہٕ پیش کرن وول سمٲجی [[اِنسان نما روبوٹ]] یُس 2016 منٛز [[ہونٛگ کونٛگ|ہانگ کانگس]] منٛز مقیم کمپنی ہینسن روبوٹکس اوس تیار کوٚرمت۔ صوفیہ آیہ 14 فروری 2016 منٛز چالوٗ کرنہٕ، تہٕ کٔرٕن پنٕنۍ گۄڈٕنِچہِ لٹہِ مارچ 2016 کِس مَنٛزس منٛز آسٹن، ٹیکساس، ریاستہائے متحدَس منٛز ساؤتھ بائی ساؤتھ ویسٹ (SXSW) منٛز پیش۔ صوفیہ ٲس أکس "سوشل روبوٹ" کس طورس پیٹھ مارکیٹِنٛگ کرنہٕ آمٕژ یُس سمٲجی رویچ نقل ہیکہٕ کٔرتھ تہٕ انسانن منٛز لولُک احساس پٲدٕ ہیکہٕ کٔرتھ۔
صوفیہ چھُ پوٗرٕ دُنیاہَس منٛز میڈیاہَن کور کوٚرمُت، تہٕ أمۍ چھِ واریاہَن ہائی پروفائل اِنٹرویوَن منٛز حصہٕ نِمُت۔ اکتوبر 2017 ہَس منٛز آیہِ صوفیہَس [[سوٗدی عرب|سعودی عربٕچ]] شہریت دِنہٕ، یُس کُنہِ تہِ مُلکَس منٛز قونوٗنی شخصیت حٲصِل کرن وول گۄڈنیُک روبوٹ بنیوو۔<ref name="Reynolds">{{cite magazine|first=Emily|last=Reynolds|date=January 6, 2018|title=The agony of Sophia, the world's first robot citizen condemned to a lifeless career in marketing|magazine=Wired|url=https://www.wired.co.uk/article/sophia-robot-citizen-womens-rights-detriot-become-human-hanson-robotics|access-date=2023-03-06}}</ref> نومبر 2017 ہس منٛز آو صوفیہ [[اقوامہٕ متحدٕ|اقوام متحدٕک]] ترقیاتی پروگرامُک گۄڈٕنیُک انوویشن چیمپئن نامزد کرنہٕ، تہٕ یہِ چھِ اقوام متحدُک خطاب دِنہٕ آمٕژ گۄڈٕنِچ غٲر انسانی ۔
==حَوالہٕ==
[[زٲژ:روبوٹ]]
gcsh4ogv0tnwl67bqtfzhpwayldvjx9
زٲژ:روبوٹ
14
32183
148963
2026-08-11T07:56:39Z
آیات محراج
11062
Created blank page
148963
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
کیپٹن ژُباسا
0
32184
148964
2026-08-11T08:32:29Z
آیات محراج
11062
"[[:en:Special:Redirect/revision/1362059303|Captain Tsubasa]]" ضفُک اِنتدٲیی حِصُک تَرجَمہٕ طور تَخلیق کَرنہٕ آمُت
148964
wikitext
text/x-wiki
'''کیپٹن ژُباسا''' (جاپٲنؠ: キャプテン翼) چھُ اکھ جاپٲنۍ [[مانٛگا]] سیریز یۄس یوٗچی تاکاہاشی ین لیٚچھمٕژ تہٕ تصویر کشی کٔرمٕژ۔ یہِ سیریز چھِ بنیٲدی طور ایسوسی ایشن فٹ بال کِس کھیلَس أنٛدۍ پٔکۍ نژان یَتھ منٛز ژُباسا اوزورا تہٕ پننٮ۪ن دوستن سۭتۍ تٔمۍ سٕنٛدِس تعلقات، پننٮ۪ن مُخٲلِفَن سۭتۍ دُشمنِی، تربیت، مُقابلہٕ، تہٕ پرٮ۪تھ فٹ بال میچٕچ عمل تہٕ نٔتیٖجَس پٮ۪ٹھ توجہ چھِ دِوان۔
2023 تام آسہٕ مجموعی مانگا ہٕنٛز 90 ملین کھۄتہٕ زِیٛادٕ کاپیہِ پوٗرٕ دنیاہَس منٛز پرناونہٕ یِوان، ییٚمہِ سۭتۍ یہِ وُنیُک تامٕچ ساروٕے کھۄتہٕ زیادٕ کٕننہٕ یِنہٕ واجیٚنۍ مانٛگا سیریٖز منٛز اکھ بنٛیوٚو۔ کیپٹن ژُباسا بنیوو دنیاہس منٛز سارِوٕے کھۄتہٕ مشہوٗر مانٛگا تہٕ اؠنِمے سیریزو منٛز اکھ، خاص طور جاپانس منٛز امہ وجہ سۭتۍ زِ أمۍ کِتھ کٔنۍ کوٚر ایسوسی ایشن فٹ بال مشہوٗر۔ سیریز وُچھنہٕ پتہٕ چھِ واریاہ حقیٖقی زندگی ہٕنٛدۍ کھلٲڑۍ پیشہٕ ور بننٕچ ترغیب دِنہٕ آمٕتۍ۔ 2005 منٛز ٹی وی آساہی کہ طرفہٕ کرنہٕ آمتس أکس پولس منٛز، کیپٹن ژُباسا اؠنِمے سیریٖز ٲس ٹاپ 100 اؠنِمے سیریزن ہٕنٛدس فہرستس منٛز 41 ہمس نمبرس پیٹھ۔
01oonojgndc7rlr6zbhcs1t2xmefk9f
148965
148964
2026-08-11T08:32:51Z
آیات محراج
11062
[[کپٹین ژُباسا]] صَفہٕ آو پَکناونہٕ [[کیپٹن ژُباسا]] جاے، پَکناوَن وول صٲرف آیات محراج
148964
wikitext
text/x-wiki
'''کیپٹن ژُباسا''' (جاپٲنؠ: キャプテン翼) چھُ اکھ جاپٲنۍ [[مانٛگا]] سیریز یۄس یوٗچی تاکاہاشی ین لیٚچھمٕژ تہٕ تصویر کشی کٔرمٕژ۔ یہِ سیریز چھِ بنیٲدی طور ایسوسی ایشن فٹ بال کِس کھیلَس أنٛدۍ پٔکۍ نژان یَتھ منٛز ژُباسا اوزورا تہٕ پننٮ۪ن دوستن سۭتۍ تٔمۍ سٕنٛدِس تعلقات، پننٮ۪ن مُخٲلِفَن سۭتۍ دُشمنِی، تربیت، مُقابلہٕ، تہٕ پرٮ۪تھ فٹ بال میچٕچ عمل تہٕ نٔتیٖجَس پٮ۪ٹھ توجہ چھِ دِوان۔
2023 تام آسہٕ مجموعی مانگا ہٕنٛز 90 ملین کھۄتہٕ زِیٛادٕ کاپیہِ پوٗرٕ دنیاہَس منٛز پرناونہٕ یِوان، ییٚمہِ سۭتۍ یہِ وُنیُک تامٕچ ساروٕے کھۄتہٕ زیادٕ کٕننہٕ یِنہٕ واجیٚنۍ مانٛگا سیریٖز منٛز اکھ بنٛیوٚو۔ کیپٹن ژُباسا بنیوو دنیاہس منٛز سارِوٕے کھۄتہٕ مشہوٗر مانٛگا تہٕ اؠنِمے سیریزو منٛز اکھ، خاص طور جاپانس منٛز امہ وجہ سۭتۍ زِ أمۍ کِتھ کٔنۍ کوٚر ایسوسی ایشن فٹ بال مشہوٗر۔ سیریز وُچھنہٕ پتہٕ چھِ واریاہ حقیٖقی زندگی ہٕنٛدۍ کھلٲڑۍ پیشہٕ ور بننٕچ ترغیب دِنہٕ آمٕتۍ۔ 2005 منٛز ٹی وی آساہی کہ طرفہٕ کرنہٕ آمتس أکس پولس منٛز، کیپٹن ژُباسا اؠنِمے سیریٖز ٲس ٹاپ 100 اؠنِمے سیریزن ہٕنٛدس فہرستس منٛز 41 ہمس نمبرس پیٹھ۔
01oonojgndc7rlr6zbhcs1t2xmefk9f
148967
148965
2026-08-11T08:34:40Z
آیات محراج
11062
/* */
148967
wikitext
text/x-wiki
{{Infobox animaga}}
'''کیپٹن ژُباسا''' (جاپٲنؠ: キャプテン翼) چھُ اکھ جاپٲنۍ [[مانٛگا]] سیریز یۄس یوٗچی تاکاہاشی ین لیٚچھمٕژ تہٕ تصویر کشی کٔرمٕژ۔ یہِ سیریز چھِ بنیٲدی طور ایسوسی ایشن [[فٹ بال]] کِس کھیلَس أنٛدۍ پٔکۍ نژان یَتھ منٛز ژُباسا اوزورا تہٕ پننٮ۪ن دوستن سۭتۍ تٔمۍ سٕنٛدِس تعلقات، پننٮ۪ن مُخٲلِفَن سۭتۍ دُشمنِی، تربیت، مُقابلہٕ، تہٕ پرٮ۪تھ فٹ بال میچٕچ عمل تہٕ نٔتیٖجَس پٮ۪ٹھ توجہ چھِ دِوان۔
2023 تام آسہٕ مجموعی مانگا ہٕنٛز 90 ملین کھۄتہٕ زِیٛادٕ کاپیہِ پوٗرٕ دنیاہَس منٛز پرناونہٕ یِوان، ییٚمہِ سۭتۍ یہِ وُنیُک تامٕچ ساروٕے کھۄتہٕ زیادٕ کٕننہٕ یِنہٕ واجیٚنۍ مانٛگا سیریٖز منٛز اکھ بنٛیوٚو۔ کیپٹن ژُباسا بنیوو دنیاہس منٛز سارِوٕے کھۄتہٕ مشہوٗر مانٛگا تہٕ اؠنِمے سیریزو منٛز اکھ، خاص طور جاپانس منٛز امہ وجہ سۭتۍ زِ أمۍ کِتھ کٔنۍ کوٚر ایسوسی ایشن فٹ بال مشہوٗر۔ سیریز وُچھنہٕ پتہٕ چھِ واریاہ حقیٖقی زندگی ہٕنٛدۍ کھلٲڑۍ پیشہٕ ور بننٕچ ترغیب دِنہٕ آمٕتۍ۔ 2005 منٛز ٹی وی آساہی کہ طرفہٕ کرنہٕ آمتس أکس پولس منٛز، کیپٹن ژُباسا اؠنِمے سیریٖز ٲس ٹاپ 100 اؠنِمے سیریزن ہٕنٛدس فہرستس منٛز 41 ہمس نمبرس پیٹھ۔
== حَوالہٕ ==
7fg2imgceulecaetf6q9d0wyyd5ie3j
148968
148967
2026-08-11T08:38:27Z
آیات محراج
11062
/* */
148968
wikitext
text/x-wiki
{{Infobox animaga}}
'''کیپٹن ژُباسا''' (جاپٲنؠ: キャプテン翼) چھُ اکھ جاپٲنۍ [[مانٛگا]] سیریز یۄس یوٗچی تاکاہاشی ین لیٚچھمٕژ تہٕ تصویر کشی کٔرمٕژ۔ یہِ سیریز چھِ بنیٲدی طور ایسوسی ایشن [[فٹ بال]] کِس کھیلَس أنٛدۍ پٔکۍ نژان یَتھ منٛز ژُباسا اوزورا تہٕ پننٮ۪ن دوستن سۭتۍ تٔمۍ سٕنٛدِس تعلقات، پننٮ۪ن مُخٲلِفَن سۭتۍ دُشمنِی، تربیت، مُقابلہٕ، تہٕ پرٮ۪تھ فٹ بال میچٕچ عمل تہٕ نٔتیٖجَس پٮ۪ٹھ توجہ چھِ دِوان۔
2023 تام آسہٕ مجموعی مانگا ہٕنٛز 90 ملین کھۄتہٕ زِیٛادٕ کاپیہِ پوٗرٕ دنیاہَس منٛز پرناونہٕ یِوان، ییٚمہِ سۭتۍ یہِ وُنیُک تامٕچ ساروٕے کھۄتہٕ زیادٕ کٕننہٕ یِنہٕ واجیٚنۍ مانٛگا سیریٖز منٛز اکھ بنٛیوٚو۔ کیپٹن ژُباسا بنیوو دنیاہس منٛز سارِوٕے کھۄتہٕ مشہوٗر مانٛگا تہٕ اؠنِمے سیریزو منٛز اکھ، خاص طور جاپانس منٛز امہ وجہ سۭتۍ زِ أمۍ کِتھ کٔنۍ کوٚر ایسوسی ایشن فٹ بال مشہوٗر۔ سیریز وُچھنہٕ پتہٕ چھِ واریاہ حقیٖقی زندگی ہٕنٛدۍ کھلٲڑۍ پیشہٕ ور بننٕچ ترغیب دِنہٕ آمٕتۍ۔ 2005 منٛز ٹی وی آساہی کہ طرفہٕ کرنہٕ آمتس أکس پولس منٛز، کیپٹن ژُباسا اؠنِمے سیریٖز ٲس ٹاپ 100 اؠنِمے سیریزن ہٕنٛدس فہرستس منٛز 41 ہمس نمبرس پیٹھ۔<ref name="interview">{{cite news|url=https://elcomercio.pe/mundo/actualidad/supercampeones-yoichi-takahashi-oliver-hospital-leyenda-real-noticia-460340|title=Eso de Oliver en un hospital es una leyenda, no es real|trans-title="The story about Oliver in the hospital is a legend, it's not real."|date=September 23, 2017|newspaper=[[El Comercio (Peru)|El Comercio]]|language=es|access-date=April 23, 2018|archive-date=March 6, 2018|archive-url=https://web.archive.org/web/20180306084417/https://elcomercio.pe/mundo/actualidad/supercampeones-yoichi-takahashi-oliver-hospital-leyenda-real-noticia-460340|url-status=live|last1=Bermeo Ocaña|first1=Óscar}}</ref>
== حَوالہٕ ==
hqp9f5pbfrrqqeiwipp08yzdzonacis
148969
148968
2026-08-11T08:38:55Z
آیات محراج
11062
مِلاوُن [[زٲژ:اؠنِمے]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148969
wikitext
text/x-wiki
{{Infobox animaga}}
'''کیپٹن ژُباسا''' (جاپٲنؠ: キャプテン翼) چھُ اکھ جاپٲنۍ [[مانٛگا]] سیریز یۄس یوٗچی تاکاہاشی ین لیٚچھمٕژ تہٕ تصویر کشی کٔرمٕژ۔ یہِ سیریز چھِ بنیٲدی طور ایسوسی ایشن [[فٹ بال]] کِس کھیلَس أنٛدۍ پٔکۍ نژان یَتھ منٛز ژُباسا اوزورا تہٕ پننٮ۪ن دوستن سۭتۍ تٔمۍ سٕنٛدِس تعلقات، پننٮ۪ن مُخٲلِفَن سۭتۍ دُشمنِی، تربیت، مُقابلہٕ، تہٕ پرٮ۪تھ فٹ بال میچٕچ عمل تہٕ نٔتیٖجَس پٮ۪ٹھ توجہ چھِ دِوان۔
2023 تام آسہٕ مجموعی مانگا ہٕنٛز 90 ملین کھۄتہٕ زِیٛادٕ کاپیہِ پوٗرٕ دنیاہَس منٛز پرناونہٕ یِوان، ییٚمہِ سۭتۍ یہِ وُنیُک تامٕچ ساروٕے کھۄتہٕ زیادٕ کٕننہٕ یِنہٕ واجیٚنۍ مانٛگا سیریٖز منٛز اکھ بنٛیوٚو۔ کیپٹن ژُباسا بنیوو دنیاہس منٛز سارِوٕے کھۄتہٕ مشہوٗر مانٛگا تہٕ اؠنِمے سیریزو منٛز اکھ، خاص طور جاپانس منٛز امہ وجہ سۭتۍ زِ أمۍ کِتھ کٔنۍ کوٚر ایسوسی ایشن فٹ بال مشہوٗر۔ سیریز وُچھنہٕ پتہٕ چھِ واریاہ حقیٖقی زندگی ہٕنٛدۍ کھلٲڑۍ پیشہٕ ور بننٕچ ترغیب دِنہٕ آمٕتۍ۔ 2005 منٛز ٹی وی آساہی کہ طرفہٕ کرنہٕ آمتس أکس پولس منٛز، کیپٹن ژُباسا اؠنِمے سیریٖز ٲس ٹاپ 100 اؠنِمے سیریزن ہٕنٛدس فہرستس منٛز 41 ہمس نمبرس پیٹھ۔<ref name="interview">{{cite news|url=https://elcomercio.pe/mundo/actualidad/supercampeones-yoichi-takahashi-oliver-hospital-leyenda-real-noticia-460340|title=Eso de Oliver en un hospital es una leyenda, no es real|trans-title="The story about Oliver in the hospital is a legend, it's not real."|date=September 23, 2017|newspaper=[[El Comercio (Peru)|El Comercio]]|language=es|access-date=April 23, 2018|archive-date=March 6, 2018|archive-url=https://web.archive.org/web/20180306084417/https://elcomercio.pe/mundo/actualidad/supercampeones-yoichi-takahashi-oliver-hospital-leyenda-real-noticia-460340|url-status=live|last1=Bermeo Ocaña|first1=Óscar}}</ref>
== حَوالہٕ ==
[[زٲژ:اؠنِمے]]
68p7vi0yf39t0xidlyko63numh5tdez
کپٹین ژُباسا
0
32185
148966
2026-08-11T08:32:51Z
آیات محراج
11062
[[کپٹین ژُباسا]] صَفہٕ آو پَکناونہٕ [[کیپٹن ژُباسا]] جاے، پَکناوَن وول صٲرف آیات محراج
148966
wikitext
text/x-wiki
#REDIRECT [[کیپٹن ژُباسا]]
bi5mbi7mshta9mkj55k7l61s3l3pdaa
جماد عثمان
0
32186
148970
2026-08-11T08:56:36Z
~2026-44057-68
14674
[[جماد عثمان ]]
148970
wikitext
text/x-wiki
{{Infobox person
| name = جماد عثمان
| native_name = Jamad Usman
| birth_date = {{Birth date and age|1982|11|26}}
| birth_place = [[کالیکٹ]], [[کیرلا]], [[ہِندوستان]]
| alma_mater = [[کالیکٹ یونیورسٹی]] (بی کام)
| occupation = [[کاروبار|کاروباری]]
| organization = ایٚمِریٹس فرسٹ گروپ (Emirates First Group)
| title = سی ای او (CEO)
| website = {{URL|jamadusman.com}}
}}
'''جماد عثمان''' (زاے۔ ۲۶ نومبر ۱۹۸۲) چھُ اَکھ [[ہِندوستان|ہِندوستٲنی]] کاروباری تہٕ ایٚمِریٹس فرسٹ گروپُک (Emirates First Group) بانی تہٕ سی ای او (CEO)۔ سہُ چھُ [[متحدہ عرب امارات|یُو اے ای]] (UAE) مَنٛز نوؠو کاروبارَن خٲطرہِّ لایِسنَس تہٕ بٔزیوٗنِس سَیٹ اَپٕچ خِدمات فرٲہم کران۔<ref>{{ویب حَوالہٕ|title=Entrepreneurs name Jamad Usman as 'Freezone Man' during Emirates First Group's expanding success|url=https://www.khaleejtimes.com/business/entrepreneurs-name-jamad-usman-as-mr-freezone-man-during-emirates-first-groups-expanding-success|access-date=2026-08-11|website=Khaleej Times|language=en}}</ref>
== اِبتدٲیی زِندگی تہٕ تٲلیم ==
جماد عثمانَن زاو کالیکٹ، کیرلا مَنٛز۔ تٔمؠ کٔر کالیکٹ یونیورسٹی مَنٛز بی کام (B.Com) ڈِگری حٲصِل۔<ref>{{ویب حَوالہٕ|last=Report|first=A. GN Focus|date=2026-07-07|title=Startup Works appoints Asif Ali as brand ambassador, unveils new growth plans in Dubai|url=https://gulfnews.com/gn-focus/company-news/startup-works-appoints-asif-ali-as-brand-ambassador-unveils-new-growth-plans-in-dubai-1.500599821|access-date=2026-08-11|website=Gulf News: Latest UAE news, Dubai news, Business, travel news, Dubai Gold rate, prayer time, cinema|language=en}}</ref>
== پِیشہٕ وارانہٕ زِندگی ==
عثمانَن کٔر پنِنی پِیشہٕ وارانہٕ زِندگی اَکھ سیٚلزمین پٲٹھؠ شُروٗع۔ ۲۰۱۷ مَنٛز کٔر تٔمؠ [[دبئی]]، یُو اے ای مَنٛز 'ایٚمِریٹس فرسٹ' (Emirates First) نامی کَمپَنی ہٕنز بُنیاد تراوٕنؠ، یۄس کاروباری راہنُمٲیی تہٕ لایِسنَس فرٲہم کران چھِ۔<ref>{{ویب حَوالہٕ|title=Malayalee-owned Emirates First recognised as 'Top Business Consultant in UAE'|url=https://www.khaleejtimes.com/kt-network/malayalee-owned-emirates-first-recognised-as-top-business-consultant-in-uae|access-date=2026-08-11|website=Khaleej Times|language=en}}</ref><ref>{{ویب حَوالہٕ|title=Emirates First Group launches e-First Global to support foreign investors|url=https://www.khaleejtimes.com/business/emirates-first-group-launches-e-first-global-to-support-foreign-investors|access-date=2026-08-11|website=Khaleej Times|language=en}}</ref>
== اِنام تہٕ اعزاز ==
* '''۲۰۲۱''': این آر آئی اِنتپریٚنِیور اِنام (NRI Entrepreneur Award) – یہِ اِنام آو تٔمِس [[کیرلا]]کؠ چیف مِنسٹَر پِنائَرائی وِجَین تہٕ اَداکار مَمُوٹی سٕنٛدِ دٔستہٕ دِنہٕ۔<ref>{{ویب حَوالہٕ|last=Report|first=Gulf News|date=2020-11-01|title=Emirates First strategically scales up services for benefit of entrepreneurs|url=https://gulfnews.com/business/corporate-news/emirates-first-strategically-scales-up-services-for-benefit-of-entrepreneurs-1.1604215560421|access-date=2026-08-11|website=Gulf News: Latest UAE news, Dubai news, Business, travel news, Dubai Gold rate, prayer time, cinema|language=en}}</ref><ref>{{ویب حَوالہٕ|title=Malayali-founded Startup Works brings brand ambassador to the UAE business setup sector with Asif Ali|url=https://www.khaleejtimes.com/kt-network/malayali-founded-startup-works-brings-brand-ambassador-to-the-uae-business-setup-sector-with-asif-ali|access-date=2026-08-11|website=Khaleej Times|language=en}}</ref>
== بیٚروٗنی لنکہٕ ==
* [https://jamadusman.com سرکاری وؠب سایِٹ]
* [https://www.instagram.com/jamadusman اِنسٹاگرام]
== حَوالہٕ ==
{{reflist}}
5kzdme1cw18eraopq5oqmx5kcv3xyzc
2026 کولمبیا بُنیُل
0
32187
148971
2026-08-11T09:42:13Z
آیات محراج
11062
"[[:en:Special:Redirect/revision/1368825816|2026 Colombia earthquake]]" ضفُک اِنتدٲیی حِصُک تَرجَمہٕ طور تَخلیق کَرنہٕ آمُت
148971
wikitext
text/x-wiki
{{بٕنیُل معلوٗمات ڈَبہٕ|image=|pushpin_map=Colombia|alt=|caption=|map=|map_alt=|map_caption=|timestamp=2026-08-10 12:34:28|duration=2 minutes|magnitude={{M|w|link=y|7.4}}|depth={{cvt|110.3|km|mi|0}}|coordinates={{coord|4.844|N|76.242|W|display=inline,title}}|type=[[Strike-slip fault|Strike-slip]]|pga=<!-- ''[[Peak ground acceleration|g]]'' -->|damage=|tsunami=|fault=|landslide=|foreshocks=|aftershocks=33+, largest {{M|b|5.0}}|casualties=164+ dead, 885+ injured, 3,238+ missing|citations=}}
10 اگست 2026 ہس منٛز آو [[کولومبیٛا|کولمبیاہَس]] منٛز [[چوکو محکمہٕ|چوکو محکمَس]] منٛز Mw 7.4 [[بٕنیُل|بُنیُل]]، یَتھ منٛز کم از کم 164 لُکھ ہلاک تہٕ 880 کھۄتہٕ زیٛادٕ زخمی گٔیہِ، 3,000 کھۄتہٕ زیٛادٕ لاپتہ گٔیہِ تہٕ پوٗرٕ مُلکَس منٛز گوٚو بٔڑِس پیمانَس پٮ۪ٹھ نۄقصان۔ یہِ بُنیُل آو کولمبیا کٮ۪ن زیادٕ تر حِصَن تہٕ ہمسایہِ ایکواڈور تہٕ [[پَنامَہ|پاناما]] کٮ۪ن حصن منٛز محسوٗس کرنہٕ، تہٕ کالی، پریرا، کیوبڈو، مانیزالیس تہٕ باقٕے علاقَن منٛز گوٚو بٔڑِس پیمانَس پٮ۪ٹھ نۄقصان۔ کولمبیا ہٕکۍ حکوٗمتَن کوٚر قومی ہنگٲمی حالتُک اعلان تہٕ کٔرٕکھ مُتٲثِر علاقَن منٛز تلاش تہٕ بچاو کاروٲیی شُروٗع۔
7n5odsrlajxu37dc9kg2l5gmdh19m0k
148972
148971
2026-08-11T09:43:10Z
آیات محراج
11062
/* */
148972
wikitext
text/x-wiki
{{مولوٗماتھ}}
10 اگست 2026 ہس منٛز آو [[کولومبیٛا|کولمبیاہَس]] منٛز [[چوکو محکمہٕ|چوکو محکمَس]] منٛز Mw 7.4 [[بٕنیُل|بُنیُل]]، یَتھ منٛز کم از کم 164 لُکھ ہلاک تہٕ 880 کھۄتہٕ زیٛادٕ زخمی گٔیہِ، 3,000 کھۄتہٕ زیٛادٕ لاپتہ گٔیہِ تہٕ پوٗرٕ مُلکَس منٛز گوٚو بٔڑِس پیمانَس پٮ۪ٹھ نۄقصان۔ یہِ بُنیُل آو کولمبیا کٮ۪ن زیادٕ تر حِصَن تہٕ ہمسایہِ ایکواڈور تہٕ [[پَنامَہ|پاناما]] کٮ۪ن حصن منٛز محسوٗس کرنہٕ، تہٕ کالی، پریرا، کیوبڈو، مانیزالیس تہٕ باقٕے علاقَن منٛز گوٚو بٔڑِس پیمانَس پٮ۪ٹھ نۄقصان۔ کولمبیا ہٕکۍ حکوٗمتَن کوٚر قومی ہنگٲمی حالتُک اعلان تہٕ کٔرٕکھ مُتٲثِر علاقَن منٛز تلاش تہٕ بچاو کاروٲیی شُروٗع۔
iuhizexdrj7ute7p505d9ooej331qxv
148974
148972
2026-08-11T09:49:24Z
آیات محراج
11062
/* */
148974
wikitext
text/x-wiki
{{مولوٗماتھ
| label1 = زیٛادٕ شِدَت
| data1 = {{MMI|7}}
}}
10 اگست 2026 ہس منٛز آو [[کولومبیٛا|کولمبیاہَس]] منٛز [[چوکو محکمہٕ|چوکو محکمَس]] منٛز Mw 7.4 [[بٕنیُل|بُنیُل]]، یَتھ منٛز کم از کم 164 لُکھ ہلاک تہٕ 880 کھۄتہٕ زیٛادٕ زخمی گٔیہِ، 3,000 کھۄتہٕ زیٛادٕ لاپتہ گٔیہِ تہٕ پوٗرٕ مُلکَس منٛز گوٚو بٔڑِس پیمانَس پٮ۪ٹھ نۄقصان۔ یہِ بُنیُل آو کولمبیا کٮ۪ن زیادٕ تر حِصَن تہٕ ہمسایہِ ایکواڈور تہٕ [[پَنامَہ|پاناما]] کٮ۪ن حصن منٛز محسوٗس کرنہٕ، تہٕ کالی، پریرا، کیوبڈو، مانیزالیس تہٕ باقٕے علاقَن منٛز گوٚو بٔڑِس پیمانَس پٮ۪ٹھ نۄقصان۔ کولمبیا ہٕکۍ حکوٗمتَن کوٚر قومی ہنگٲمی حالتُک اعلان تہٕ کٔرٕکھ مُتٲثِر علاقَن منٛز تلاش تہٕ بچاو کاروٲیی شُروٗع۔
iagnumn7qsi6n54mp3zn44dwyn1qdiw
148979
148974
2026-08-11T10:39:37Z
آیات محراج
11062
/* */
148979
wikitext
text/x-wiki
{{مولوٗماتھ
| label1 = زیٛادٕ شِدَت
| data1 = {{MMI|7}}
}}
10 اگست 2026 ہس منٛز آو [[کولومبیٛا|کولمبیاہَس]] منٛز [[چوکو محکمہٕ|چوکو محکمَس]] منٛز Mw 7.4 [[بٕنیُل|بُنیُل]]،<ref name="anss1">{{cite anss|M 7.4 – 5 km E of San José del Palmar, Colombia|2026|us6000tjl2}}</ref> یَتھ منٛز کم از کم 164 لُکھ ہلاک تہٕ 880 کھۄتہٕ زیٛادٕ زخمی گٔیہِ، 3,000 کھۄتہٕ زیٛادٕ لاپتہ گٔیہِ تہٕ پوٗرٕ مُلکَس منٛز گوٚو بٔڑِس پیمانَس پٮ۪ٹھ نۄقصان۔ یہِ بُنیُل آو کولمبیا کٮ۪ن زیادٕ تر حِصَن تہٕ ہمسایہِ ایکواڈور تہٕ [[پَنامَہ|پاناما]] کٮ۪ن حصن منٛز محسوٗس کرنہٕ، تہٕ کالی، پریرا، کیوبڈو، مانیزالیس تہٕ باقٕے علاقَن منٛز گوٚو بٔڑِس پیمانَس پٮ۪ٹھ نۄقصان۔ کولمبیا ہٕکۍ حکوٗمتَن کوٚر قومی ہنگٲمی حالتُک اعلان تہٕ کٔرٕکھ مُتٲثِر علاقَن منٛز تلاش تہٕ بچاو کاروٲیی شُروٗع۔
== حَوالہٕ ==
ooa9ne3mgi1ob5cydivgkof2bggr2h6
148980
148979
2026-08-11T10:40:06Z
آیات محراج
11062
مِلاوُن [[زٲژ:2026 واقعات]] تٔژ زٲژ کِہ مَرَتھہٕ سٲتؠ
148980
wikitext
text/x-wiki
{{مولوٗماتھ
| label1 = زیٛادٕ شِدَت
| data1 = {{MMI|7}}
}}
10 اگست 2026 ہس منٛز آو [[کولومبیٛا|کولمبیاہَس]] منٛز [[چوکو محکمہٕ|چوکو محکمَس]] منٛز Mw 7.4 [[بٕنیُل|بُنیُل]]،<ref name="anss1">{{cite anss|M 7.4 – 5 km E of San José del Palmar, Colombia|2026|us6000tjl2}}</ref> یَتھ منٛز کم از کم 164 لُکھ ہلاک تہٕ 880 کھۄتہٕ زیٛادٕ زخمی گٔیہِ، 3,000 کھۄتہٕ زیٛادٕ لاپتہ گٔیہِ تہٕ پوٗرٕ مُلکَس منٛز گوٚو بٔڑِس پیمانَس پٮ۪ٹھ نۄقصان۔ یہِ بُنیُل آو کولمبیا کٮ۪ن زیادٕ تر حِصَن تہٕ ہمسایہِ ایکواڈور تہٕ [[پَنامَہ|پاناما]] کٮ۪ن حصن منٛز محسوٗس کرنہٕ، تہٕ کالی، پریرا، کیوبڈو، مانیزالیس تہٕ باقٕے علاقَن منٛز گوٚو بٔڑِس پیمانَس پٮ۪ٹھ نۄقصان۔ کولمبیا ہٕکۍ حکوٗمتَن کوٚر قومی ہنگٲمی حالتُک اعلان تہٕ کٔرٕکھ مُتٲثِر علاقَن منٛز تلاش تہٕ بچاو کاروٲیی شُروٗع۔
== حَوالہٕ ==
[[زٲژ:2026 واقعات]]
f7z3ar9ed9tawquii99a8p491pmq5au
Module:Databox/qualifiers
828
32188
148975
2026-08-11T10:08:59Z
آیات محراج
11062
Manually created
148975
Scribunto
text/plain
local p = {}
-- Define the exact qualifiers you want to show, in the exact order you want them
local allowedQualifiers = {
'P518', -- Applies to part
'P421', -- Time zone
'P459', -- Determination method
'P1013' -- Criterion used
-- Add future qualifiers here!
}
-- Safe renderer for qualifier snaks (accepts the number converter from the main module)
local function renderSnakSafe(snak, numberConverter)
if not snak or snak.snaktype ~= 'value' then return nil end
local success, res = pcall(mw.wikibase.renderSnak, snak)
if success and res and res ~= '' then
-- If a converter function was passed, use it; otherwise just return the text
return numberConverter and numberConverter(res) or res
end
return nil
end
-- Helper to extract date qualifiers
local function getDateQualifier(stmt, numberConverter)
if not stmt or not stmt.qualifiers then return nil end
local q = stmt.qualifiers
local p585 = q.P585 and renderSnakSafe(q.P585[1], numberConverter)
if p585 then return p585 end
local p580 = q.P580 and renderSnakSafe(q.P580[1], numberConverter)
local p582 = q.P582 and renderSnakSafe(q.P582[1], numberConverter)
if p580 and p582 then
return p580 .. ' – ' .. p582
elseif p580 then
return p580 .. ' –'
elseif p582 then
return '– ' .. p582
end
return nil
end
-- Generic helper to fetch any specific qualifier by its Property ID
local function getGenericQualifier(stmt, propertyId, numberConverter)
if not stmt or not stmt.qualifiers or not stmt.qualifiers[propertyId] then
return nil
end
local results = {}
for _, snak in ipairs(stmt.qualifiers[propertyId]) do
local val = renderSnakSafe(snak, numberConverter)
if val then
table.insert(results, val)
end
end
if #results > 0 then
return table.concat(results, '، ')
end
return nil
end
-- EXPORTED FUNCTION: The final formatting function that the main module will call
function p.formatStatement(stmt, mainValue, numberConverter)
local dateQual = getDateQualifier(stmt, numberConverter)
local extraInfo = {}
for _, propId in ipairs(allowedQualifiers) do
local qualValue = getGenericQualifier(stmt, propId, numberConverter)
if qualValue then
table.insert(extraInfo, qualValue)
end
end
if dateQual then
table.insert(extraInfo, dateQual)
end
if #extraInfo > 0 then
return mainValue .. ' (' .. table.concat(extraInfo, '، ') .. ')'
end
return mainValue
end
return p
dt5ql6ckanyvylqdzahk9yw20fy37sv
148977
148975
2026-08-11T10:25:47Z
آیات محراج
11062
148977
Scribunto
text/plain
local p = {}
-- Define the exact qualifiers you want to show, in the exact order you want them
local allowedQualifiers = {
'P518', -- Applies to part
'P421', -- Time zone
'P459', -- Determination method
'P1013', -- Criterion used
'P4241' -- refine time
-- Add future qualifiers here!
}
-- Safe renderer for qualifier snaks (accepts the number converter from the main module)
local function renderSnakSafe(snak, numberConverter)
if not snak or snak.snaktype ~= 'value' then return nil end
local success, res = pcall(mw.wikibase.renderSnak, snak)
if success and res and res ~= '' then
-- If a converter function was passed, use it; otherwise just return the text
return numberConverter and numberConverter(res) or res
end
return nil
end
-- Helper to extract date qualifiers
local function getDateQualifier(stmt, numberConverter)
if not stmt or not stmt.qualifiers then return nil end
local q = stmt.qualifiers
local p585 = q.P585 and renderSnakSafe(q.P585[1], numberConverter)
if p585 then return p585 end
local p580 = q.P580 and renderSnakSafe(q.P580[1], numberConverter)
local p582 = q.P582 and renderSnakSafe(q.P582[1], numberConverter)
if p580 and p582 then
return p580 .. ' – ' .. p582
elseif p580 then
return p580 .. ' –'
elseif p582 then
return '– ' .. p582
end
return nil
end
-- Generic helper to fetch any specific qualifier by its Property ID
local function getGenericQualifier(stmt, propertyId, numberConverter)
if not stmt or not stmt.qualifiers or not stmt.qualifiers[propertyId] then
return nil
end
local results = {}
for _, snak in ipairs(stmt.qualifiers[propertyId]) do
local val = renderSnakSafe(snak, numberConverter)
if val then
table.insert(results, val)
end
end
if #results > 0 then
return table.concat(results, '، ')
end
return nil
end
-- EXPORTED FUNCTION: The final formatting function that the main module will call
function p.formatStatement(stmt, mainValue, numberConverter)
local dateQual = getDateQualifier(stmt, numberConverter)
local extraInfo = {}
for _, propId in ipairs(allowedQualifiers) do
local qualValue = getGenericQualifier(stmt, propId, numberConverter)
if qualValue then
table.insert(extraInfo, qualValue)
end
end
if dateQual then
table.insert(extraInfo, dateQual)
end
if #extraInfo > 0 then
return mainValue .. ' (' .. table.concat(extraInfo, '، ') .. ')'
end
return mainValue
end
return p
27jx0lrwgj3bniirs6h7pat9ax3dw5l
148978
148977
2026-08-11T10:37:25Z
آیات محراج
11062
148978
Scribunto
text/plain
local p = {}
-- Define the exact qualifiers you want to show, in the exact order you want them
local allowedQualifiers = {
'P518', -- Applies to part
'P421', -- Time zone
'P459', -- Determination method
'P1013', -- Criterion used
'P4241' -- refine time
-- Add future qualifiers here!
}
-- Safe renderer for qualifier snaks (now with smart label fallback for Kashmiri)
local function renderSnakSafe(snak, numberConverter)
if not snak or snak.snaktype ~= 'value' then return nil end
local success, res = pcall(mw.wikibase.renderSnak, snak)
-- SMART FALLBACK: If renderSnak fails or returns an empty string (due to missing Kashmiri label)
if not success or not res or res == '' then
-- If the data is another Wikidata item (like a Time Zone item)
if snak.datavalue and snak.datavalue.type == 'wikibase-entityid' then
local id = snak.datavalue.value.id
-- Try Kashmiri label, then English label, then fallback to Q-number
res = mw.wikibase.getLabel(id) or mw.wikibase.getLabelByLang(id, 'en') or id
elseif snak.datavalue and snak.datavalue.value then
-- For standard strings or numbers that somehow failed
if type(snak.datavalue.value) == 'table' and snak.datavalue.value.text then
res = snak.datavalue.value.text -- Handles monolingual text
else
res = tostring(snak.datavalue.value)
end
end
end
if res and res ~= '' then
-- Pass it through the Kashmiri number converter
return numberConverter and numberConverter(res) or res
end
return nil
end
-- Helper to extract date qualifiers
local function getDateQualifier(stmt, numberConverter)
if not stmt or not stmt.qualifiers then return nil end
local q = stmt.qualifiers
local p585 = q.P585 and renderSnakSafe(q.P585[1], numberConverter)
if p585 then return p585 end
local p580 = q.P580 and renderSnakSafe(q.P580[1], numberConverter)
local p582 = q.P582 and renderSnakSafe(q.P582[1], numberConverter)
if p580 and p582 then
return p580 .. ' – ' .. p582
elseif p580 then
return p580 .. ' –'
elseif p582 then
return '– ' .. p582
end
return nil
end
-- Generic helper to fetch any specific qualifier by its Property ID
local function getGenericQualifier(stmt, propertyId, numberConverter)
if not stmt or not stmt.qualifiers or not stmt.qualifiers[propertyId] then
return nil
end
local results = {}
for _, snak in ipairs(stmt.qualifiers[propertyId]) do
local val = renderSnakSafe(snak, numberConverter)
if val then
table.insert(results, val)
end
end
if #results > 0 then
return table.concat(results, '، ')
end
return nil
end
-- EXPORTED FUNCTION: The final formatting function that the main module will call
function p.formatStatement(stmt, mainValue, numberConverter)
local dateQual = getDateQualifier(stmt, numberConverter)
local extraInfo = {}
for _, propId in ipairs(allowedQualifiers) do
local qualValue = getGenericQualifier(stmt, propId, numberConverter)
if qualValue then
table.insert(extraInfo, qualValue)
end
end
if dateQual then
table.insert(extraInfo, dateQual)
end
if #extraInfo > 0 then
return mainValue .. ' (' .. table.concat(extraInfo, '، ') .. ')'
end
return mainValue
end
return p
9h1ekrxjpb6q7tpams55927q4jqs2k7
148981
148978
2026-08-11T10:43:36Z
آیات محراج
11062
148981
Scribunto
text/plain
local p = {}
-- Define the exact qualifiers you want to show, in the exact order you want them
local allowedQualifiers = {
'P518', -- Applies to part
'P421', -- Time zone
'P459', -- Determination method
'P1268', -- represents
'P1013', -- Criterion used
'P4241' -- refine time
-- Add future qualifiers here!
}
-- Safe renderer for qualifier snaks (now with smart label fallback for Kashmiri)
local function renderSnakSafe(snak, numberConverter)
if not snak or snak.snaktype ~= 'value' then return nil end
local success, res = pcall(mw.wikibase.renderSnak, snak)
-- SMART FALLBACK: If renderSnak fails or returns an empty string (due to missing Kashmiri label)
if not success or not res or res == '' then
-- If the data is another Wikidata item (like a Time Zone item)
if snak.datavalue and snak.datavalue.type == 'wikibase-entityid' then
local id = snak.datavalue.value.id
-- Try Kashmiri label, then English label, then fallback to Q-number
res = mw.wikibase.getLabel(id) or mw.wikibase.getLabelByLang(id, 'en') or id
elseif snak.datavalue and snak.datavalue.value then
-- For standard strings or numbers that somehow failed
if type(snak.datavalue.value) == 'table' and snak.datavalue.value.text then
res = snak.datavalue.value.text -- Handles monolingual text
else
res = tostring(snak.datavalue.value)
end
end
end
if res and res ~= '' then
-- Pass it through the Kashmiri number converter
return numberConverter and numberConverter(res) or res
end
return nil
end
-- Helper to extract date qualifiers
local function getDateQualifier(stmt, numberConverter)
if not stmt or not stmt.qualifiers then return nil end
local q = stmt.qualifiers
local p585 = q.P585 and renderSnakSafe(q.P585[1], numberConverter)
if p585 then return p585 end
local p580 = q.P580 and renderSnakSafe(q.P580[1], numberConverter)
local p582 = q.P582 and renderSnakSafe(q.P582[1], numberConverter)
if p580 and p582 then
return p580 .. ' – ' .. p582
elseif p580 then
return p580 .. ' –'
elseif p582 then
return '– ' .. p582
end
return nil
end
-- Generic helper to fetch any specific qualifier by its Property ID
local function getGenericQualifier(stmt, propertyId, numberConverter)
if not stmt or not stmt.qualifiers or not stmt.qualifiers[propertyId] then
return nil
end
local results = {}
for _, snak in ipairs(stmt.qualifiers[propertyId]) do
local val = renderSnakSafe(snak, numberConverter)
if val then
table.insert(results, val)
end
end
if #results > 0 then
return table.concat(results, '، ')
end
return nil
end
-- EXPORTED FUNCTION: The final formatting function that the main module will call
function p.formatStatement(stmt, mainValue, numberConverter)
local dateQual = getDateQualifier(stmt, numberConverter)
local extraInfo = {}
for _, propId in ipairs(allowedQualifiers) do
local qualValue = getGenericQualifier(stmt, propId, numberConverter)
if qualValue then
table.insert(extraInfo, qualValue)
end
end
if dateQual then
table.insert(extraInfo, dateQual)
end
if #extraInfo > 0 then
return mainValue .. ' (' .. table.concat(extraInfo, '، ') .. ')'
end
return mainValue
end
return p
4n1w7h5tm2jtazl2qjjvb99v1eq71zs
148982
148981
2026-08-11T10:49:23Z
آیات محراج
11062
148982
Scribunto
text/plain
local p = {}
-- Define the exact qualifiers you want to show, in the exact order you want them
local allowedQualifiers = {
'P518', -- Applies to part
'P421', -- Time zone
'P459', -- Determination method
'P1268', -- represents
'P1013', -- Criterion used
'P4241' -- refine time
-- Add future qualifiers here!
}
-- Safe renderer for qualifier snaks (Blue links ONLY, no red links)
local function renderSnakSafe(snak, numberConverter)
if not snak or snak.snaktype ~= 'value' then return nil end
-- 1. Check if the qualifier is a Wikidata Item (Q-ID)
if snak.datavalue and snak.datavalue.type == 'wikibase-entityid' then
local id = snak.datavalue.value.id
-- Try Kashmiri label, then English, then Q-number
local label = mw.wikibase.getLabel(id) or mw.wikibase.getLabelByLang(id, 'en') or id
local sitelink = mw.wikibase.getSitelink(id) -- Get local Kashmiri article link
-- Only link if the Kashmiri article actually exists
if sitelink then
return '[[' .. sitelink .. '|' .. label .. ']]'
else
return label -- Plain text! No red link.
end
end
-- 2. For everything else (numbers, strings, dates)
local success, res = pcall(mw.wikibase.renderSnak, snak)
-- Fallback if MediaWiki's renderer fails
if not success or not res or res == '' then
if snak.datavalue and snak.datavalue.value then
if type(snak.datavalue.value) == 'table' and snak.datavalue.value.text then
res = snak.datavalue.value.text
else
res = tostring(snak.datavalue.value)
end
end
end
if res and res ~= '' then
return numberConverter and numberConverter(res) or res
end
return nil
end
-- Helper to extract date qualifiers
local function getDateQualifier(stmt, numberConverter)
if not stmt or not stmt.qualifiers then return nil end
local q = stmt.qualifiers
local p585 = q.P585 and renderSnakSafe(q.P585[1], numberConverter)
if p585 then return p585 end
local p580 = q.P580 and renderSnakSafe(q.P580[1], numberConverter)
local p582 = q.P582 and renderSnakSafe(q.P582[1], numberConverter)
if p580 and p582 then
return p580 .. ' – ' .. p582
elseif p580 then
return p580 .. ' –'
elseif p582 then
return '– ' .. p582
end
return nil
end
-- Generic helper to fetch any specific qualifier by its Property ID
local function getGenericQualifier(stmt, propertyId, numberConverter)
if not stmt or not stmt.qualifiers or not stmt.qualifiers[propertyId] then
return nil
end
local results = {}
for _, snak in ipairs(stmt.qualifiers[propertyId]) do
local val = renderSnakSafe(snak, numberConverter)
if val then
table.insert(results, val)
end
end
if #results > 0 then
return table.concat(results, '، ')
end
return nil
end
-- EXPORTED FUNCTION: The final formatting function that the main module will call
function p.formatStatement(stmt, mainValue, numberConverter)
local dateQual = getDateQualifier(stmt, numberConverter)
local extraInfo = {}
for _, propId in ipairs(allowedQualifiers) do
local qualValue = getGenericQualifier(stmt, propId, numberConverter)
if qualValue then
table.insert(extraInfo, qualValue)
end
end
if dateQual then
table.insert(extraInfo, dateQual)
end
if #extraInfo > 0 then
return mainValue .. ' (' .. table.concat(extraInfo, '، ') .. ')'
end
return mainValue
end
return p
omlyygip5mpuw8zp8igwj4xl3wnkvjx
148983
148982
2026-08-11T11:07:24Z
آیات محراج
11062
148983
Scribunto
text/plain
local p = {}
-- Define the exact qualifiers you want to show, in the exact order you want them
local allowedQualifiers = {
'P518', -- Applies to part
'P421', -- Time zone
'P27', -- citizenship
'P459', -- Determination method
'P1268', -- represents
'P1013', -- Criterion used
'P4241' -- refine time
-- Add future qualifiers here!
}
-- Safe renderer for qualifier snaks (Blue links ONLY, no red links)
local function renderSnakSafe(snak, numberConverter)
if not snak or snak.snaktype ~= 'value' then return nil end
-- 1. Check if the qualifier is a Wikidata Item (Q-ID)
if snak.datavalue and snak.datavalue.type == 'wikibase-entityid' then
local id = snak.datavalue.value.id
-- Try Kashmiri label, then English, then Q-number
local label = mw.wikibase.getLabel(id) or mw.wikibase.getLabelByLang(id, 'en') or id
local sitelink = mw.wikibase.getSitelink(id) -- Get local Kashmiri article link
-- Only link if the Kashmiri article actually exists
if sitelink then
return '[[' .. sitelink .. '|' .. label .. ']]'
else
return label -- Plain text! No red link.
end
end
-- 2. For everything else (numbers, strings, dates)
local success, res = pcall(mw.wikibase.renderSnak, snak)
-- Fallback if MediaWiki's renderer fails
if not success or not res or res == '' then
if snak.datavalue and snak.datavalue.value then
if type(snak.datavalue.value) == 'table' and snak.datavalue.value.text then
res = snak.datavalue.value.text
else
res = tostring(snak.datavalue.value)
end
end
end
if res and res ~= '' then
return numberConverter and numberConverter(res) or res
end
return nil
end
-- Helper to extract date qualifiers
local function getDateQualifier(stmt, numberConverter)
if not stmt or not stmt.qualifiers then return nil end
local q = stmt.qualifiers
local p585 = q.P585 and renderSnakSafe(q.P585[1], numberConverter)
if p585 then return p585 end
local p580 = q.P580 and renderSnakSafe(q.P580[1], numberConverter)
local p582 = q.P582 and renderSnakSafe(q.P582[1], numberConverter)
if p580 and p582 then
return p580 .. ' – ' .. p582
elseif p580 then
return p580 .. ' –'
elseif p582 then
return '– ' .. p582
end
return nil
end
-- Generic helper to fetch any specific qualifier by its Property ID
local function getGenericQualifier(stmt, propertyId, numberConverter)
if not stmt or not stmt.qualifiers or not stmt.qualifiers[propertyId] then
return nil
end
local results = {}
for _, snak in ipairs(stmt.qualifiers[propertyId]) do
local val = renderSnakSafe(snak, numberConverter)
if val then
table.insert(results, val)
end
end
if #results > 0 then
return table.concat(results, '، ')
end
return nil
end
-- EXPORTED FUNCTION: The final formatting function that the main module will call
function p.formatStatement(stmt, mainValue, numberConverter)
local dateQual = getDateQualifier(stmt, numberConverter)
local extraInfo = {}
for _, propId in ipairs(allowedQualifiers) do
local qualValue = getGenericQualifier(stmt, propId, numberConverter)
if qualValue then
table.insert(extraInfo, qualValue)
end
end
if dateQual then
table.insert(extraInfo, dateQual)
end
if #extraInfo > 0 then
return mainValue .. ' (' .. table.concat(extraInfo, '، ') .. ')'
end
return mainValue
end
return p
es8dqwg98zkfgmjfrm3pqwa9sy1y1ku