উইকিঅভিধান bnwiktionary https://bn.wiktionary.org/wiki/%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A6%A7%E0%A6%BE%E0%A6%A8_%E0%A6%AA%E0%A6%BE%E0%A6%A4%E0%A6%BE MediaWiki 1.47.0-wmf.5 case-sensitive মিডিয়া বিশেষ আলাপ ব্যবহারকারী ব্যবহারকারী আলাপ উইকিঅভিধান উইকিঅভিধান আলোচনা চিত্র চিত্র আলোচনা মিডিয়াউইকি মিডিয়াউইকি আলোচনা টেমপ্লেট টেমপ্লেট আলোচনা সাহায্য সাহায্য আলোচনা বিষয়শ্রেণী বিষয়শ্রেণী আলোচনা পরিশিষ্ট পরিশিষ্ট আলোচনা ছন্দ ছন্দ আলোচনা থিসরাস থিসরাস আলোচনা উদ্ধৃতি উদ্ধৃতি আলোচনা TimedText TimedText talk মডিউল মডিউল আলাপ ইভেন্ট ইভেন্ট আলোচনা ব্যবহারকারী আলাপ:Redmin 3 24780 510500 509482 2026-06-08T11:10:31Z MediaWiki message delivery 2534 /* Wikidata Platform Newsletter - June 2026 */ নতুন অনুচ্ছেদ 510500 wikitext text/x-wiki == I seen your RedminBot Tamil entries Creations == I seen your RedminBot Tamil entries Creations . That's was really nice. I hope you are interested in Tamil entries creations. Thanks for your continuous support! i created a spreadsheet file for Creating Tamil entries in bnwikt [https://docs.google.com/spreadsheets/d/1KDnIFSo8mCgN5Cb4GVxMv_gcgecZxjdFzQso9l-VhWg/edit#gid=0 See this]. This maybe useful for your bot Tamil entries. Thanks Again. [[ব্যবহারকারী:Sriveenkat|Sriveenkat]] ([[ব্যবহারকারী আলাপ:Sriveenkat|আলাপ]]) ০৭:৩৩, ৫ অক্টোবর ২০২৩ (ইউটিসি) :Thank you for this! I will make entries manually as this is too complex for the bot but this really helps. :D [[ব্যবহারকারী:Redmin|Redmin]] ([[ব্যবহারকারী আলাপ:Redmin#top|আলাপ]]) ০৯:৩৭, ৫ অক্টোবর ২০২৩ (ইউটিসি) ::Ok Redmin Thanks. We will do manually Thanks Again. [[ব্যবহারকারী:Sriveenkat|Sriveenkat]] ([[ব্যবহারকারী আলাপ:Sriveenkat|আলাপ]]) ০৯:৫৭, ৫ অক্টোবর ২০২৩ (ইউটিসি) == পর্যালোচনা == [[နာမ်]] এর বিশেষ্যের জন্য মডিউল তৈরি করেছি: [[মডিউল:my-headword]]। ইংরেজিতে [[https://en.m.wiktionary.org/wiki/Module:my-headword Module:my-headword]] কিন্তু কাজ হচ্ছে না কেন? [[ব্যবহারকারী:খালিদ জে. হোসেইন|哈立德]] ১৮:২৩, ২৮ ডিসেম্বর ২০২৩ (ইউটিসি) :@[[ব্যবহারকারী:খালিদ জে. হোসেইন|খালিদ জে. হোসেইন]], এখনও কি একই অবস্থা? [[ব্যবহারকারী:Redmin|Redmin]] ([[ব্যবহারকারী আলাপ:Redmin#top|আলাপ]]) ১৪:০৪, ৩ জানুয়ারি ২০২৪ (ইউটিসি) ::জ্বি, এখন ঠিক আছে। ধন্যবাদ। [[ব্যবহারকারী:খালিদ জে. হোসেইন|哈立德]] ০১:৩১, ৫ জানুয়ারি ২০২৪ (ইউটিসি) == <span lang="en" dir="ltr" class="mw-content-ltr">Reminder to vote now to select members of the first U4C</span> == <div lang="en" dir="ltr" class="mw-content-ltr"> <section begin="announcement-content" /> :''[[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Election/2024/Announcement – vote reminder|You can find this message translated into additional languages on Meta-wiki.]] [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Universal Code of Conduct/Coordinating Committee/Election/2024/Announcement – vote reminder}}&language=&action=page&filter= {{int:please-translate}}]'' Dear Wikimedian, You are receiving this message because you previously participated in the UCoC process. This is a reminder that the voting period for the Universal Code of Conduct Coordinating Committee (U4C) ends on May 9, 2024. Read the information on the [[m:Universal Code of Conduct/Coordinating Committee/Election/2024|voting page on Meta-wiki]] to learn more about voting and voter eligibility. The Universal Code of Conduct Coordinating Committee (U4C) is a global group dedicated to providing an equitable and consistent implementation of the UCoC. Community members were invited to submit their applications for the U4C. For more information and the responsibilities of the U4C, please [[m:Universal Code of Conduct/Coordinating Committee/Charter|review the U4C Charter]]. Please share this message with members of your community so they can participate as well. On behalf of the UCoC project team,<section end="announcement-content" /> </div> [[m:User:RamzyM (WMF)|RamzyM (WMF)]] ২৩:১৬, ২ মে ২০২৪ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Universal_Code_of_Conduct/Coordinating_Committee/Election/2024/Previous_voters_list&oldid=26721206-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:RamzyM (WMF)@metawiki পাঠিয়েছেন --> == <span lang="en" dir="ltr">Tech News: 2026-09</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W09"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/09|Translations]] are available. '''Weekly highlight''' * [[mw:Special:MyLanguage/Edit check/Reference Check|Reference Check]] has been deployed to English Wikipedia, completing its rollout across all Wikipedias. The feature prompts newcomers to add a citation before publishing new content, helping reduce common citation-related reverts and improve verifiability. In A/B testing, the impact was substantial: newcomers shown Reference Check were approximately 2.2 times more likely to include a reference on desktop and about 17.5 times more likely on mobile web. [https://analytics.wikimedia.org/published/reports/editing/reference_check_ab_test_report_final_2025.html] '''Updates for editors''' * The [[mw:Special:MyLanguage/Extension:InterwikiSorting|InterwikiSorting extension]], which allowed for the [[m:Special:MyLanguage/Interwiki sorting order|sorting of interwiki links]], has been undeployed from Wikipedia. As a result, editors who had enabled interwiki link sorting in non-compact mode (full list format) will now see links reordered. The links moving forward will be listed in the alphabetical order of language code. [https://phabricator.wikimedia.org/T253764] * Later this week, people who are editing a page-section using the mobile visual editor, will notice a new "Edit full page" button. When tapped, you will be able to edit the entire article. This helps when the change you want to make is outside the section you initially opened. [https://phabricator.wikimedia.org/T387175][https://phabricator.wikimedia.org/T409112] * [[mw:Special:MyLanguage/Readers/Reader Experience|The Reader Experience team]] is inviting editors to assess whether dark mode should still be considered "beta" on their wiki, based on their experience of how well it functions on desktop and mobile. If the feature is deemed mature, editors can update the interface messages in <code dir=ltr>MediaWiki:skin-theme-description</code> and <code dir=ltr>MediaWiki:Vector-night-mode-beta-tag</code> to indicate that dark mode is ready and no longer considered beta. * The improved [[mw:Wikimedia_Apps/Team/iOS/Activity_Tab|Activity tab]] which displays user-insights is now available to all users of the Wikipedia iOS app (version 7.9.0 and later). Following earlier A/B testing that showed higher account creation among users with access to the feature, it has been rolled out to 100% of users along with some updates. The Activity tab now shows your edited articles in the timeline, offers editing impact insights like contribution counts and article view trends, and customization options to improve in-app experience for users. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:21}} community-submitted {{PLURAL:21|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, a bug that prevented [[mw:Special:MyLanguage/Extension:DiscussionTools|DiscussionTools]] from working on mobile has now been fixed, restoring full functionality. [https://phabricator.wikimedia.org/T415303] '''Updates for technical contributors''' * The [[m:Special:GlobalWatchlist|Global Watchlist]] lets you view your watchlists from multiple wikis on one page. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] that makes this possible continues to improve. The latest upgrade is the inclusion of a [[mw:Extension:GlobalWatchlist#hook|new hook]], <code dir=ltr>ext.globalwatchlist.rebuild</code>, which fires after each watchlist rebuild. This allows you to run gadgets and user scripts for the Special page. [https://phabricator.wikimedia.org/T275159] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.17|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/09|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W09"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৯:০৪, ২৩ ফেব্রুয়ারি ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30119102-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <span lang="en" dir="ltr">Tech News: 2026-10</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W10"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/10|Translations]] are available. '''Weekly highlight''' * Wikipedia 25 [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments|Birthday mode]] is now live on Betawi, Breton, Chinese, Czech, Dutch, English, French, Gorontalo, Indonesian, Italian, Luxembourgish, Madurese, Sicilian, Spanish, Thai, and Vietnamese Wikipedias! This limited-time campaign feature celebrates 25 years of Wikipedia with a birthday mascot, Baby Globe. When turned on, Baby Globe is shown on [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments/article configuration|~2,500 articles]], waiting to be discovered by readers. Communities can choose to turn Birthday mode on by getting consensus from their community and asking an admin to enable the feature and customize it via [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments#Community Configuration Demo|community configuration]] on the local wiki. '''Updates for editors''' * [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Sub-referencing]], a new feature to re-use references with different details has been released to Swedish Wikipedia, Polish Wikipedia and [[:phab:T418209|a couple of other wikis]]. You can [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing#test|try the feature]] on these projects or on testwiki and [https://en.wikipedia.beta.wmcloud.org/wiki/Sub-referencing betawiki]. Learnings from the first pilot wiki German Wikipedia have been [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing/Learnings|published in a report]]. Reach out to the Wikimedia Deutschland team if you are [[:m:Talk:WMDE Technical Wishes/Sub-referencing#Pilot wikis|interested in becoming a pilot wiki]]. * [[mw:Special:MyLanguage/Help:Edit check#Paste check|Paste Check]] will become available at all Wikipedias this week. The feature prompts newcomers who are pasting text they are not likely to have written into VisualEditor to consider whether doing so risks a copyright violation. Paste Check [[mw:Special:MyLanguage/Edit check/Tags|tags]] all edits where it is shown for potential review. Local administrators can configure various aspects of the feature via [[{{#special:EditChecks}}]]. [[mw:Special:MyLanguage/Edit check/Paste Check#A/B Experiment|Research]] across 22 wikis found that Paste Check resulted in an 18% decrease in relative reverted-edits compared to the control group. Translators can [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-visualeditor-ve-mw-editcheck&filter=&optional=1&action=translate help to localize] this and related features. * The [[mw:Special:MyLanguage/Readers/Reader Experience|Reader Experience team]] will be standardizing the user menu in the top right for all mobile users so that it is closer to the desktop experience. Currently this user menu is only visible to users with Advanced Mobile Controls (AMC) turned on. The only change is that a couple buttons previously in the left-side menu will move to the top right for users who do not have AMC turned on. This change is expected to go out March 9 and seeks to improve the user interface. [https://phabricator.wikimedia.org/T413912] * Starting in the week of March 2, the emails sent out when an email address was added, removed, or changed for an account will switch to a substantially nicer and clearer HTML email from the prior plaintext one. [https://phabricator.wikimedia.org/T410807] * Notifications are currently limited to 2,000 historic entries per user, and extend back to 2013 when the feature was released. This is going to be changed to only store Notifications from the last 5 years, but up to 10,000 of them. This will help with long-term infrastructure health and help to prevent more recent notifications from disappearing too soon. [https://phabricator.wikimedia.org/T383948] * The [[m:Special:GlobalWatchlist|Global Watchlist]] which lets you view your watchlists from multiple wikis on a single page continues to see improvements. The latest update improves label usage experience. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] now allows activating the [[mw:Special:MyLanguage/Manual:Language#Fallback languages|language fallback system]] for Wikidata items without labels in the viewed language, and showing those labels in the user’s preferred Wikidata language if no <code dir=ltr>uselang=</code> URL parameter is provided. [https://phabricator.wikimedia.org/T373686][https://phabricator.wikimedia.org/T416111] * The Wikipedia Android team has started a beta test of [[mw:Special:MyLanguage/Readers/Information Retrieval/Phase 1|hybrid search]] on Greek Wikipedia. Hybrid search capabilities can handle both semantic and keyword queries enabling readers to find what they’re looking for directly on Wikipedia more easily. * For security reasons, members of certain user groups are [[m:Special:MyLanguage/Mandatory two-factor authentication for users with some extended rights|required to have two-factor authentication]] (2FA) enabled. Currently, 2FA is required to use the group, but not to be a member of it. Given that this model still has some vulnerabilities, the situation will [[phab:T418580|gradually change in March]]. Members of these groups will be unable to disable last 2FA method on their account, and it will be impossible to add users without 2FA to these groups. Users will still be able to add new authentication methods or remove them, as long as at least one method is continuously enabled. In the second half of March, users without 2FA will be removed from these groups. This applies to: CentralNotice administrators, checkusers, interface administrators, suppressors, Wikidata staff, Wikifunctions staff, WMF Office IT and WMF Trust & Safety. Nothing will change for other users. See the linked task for deployment schedule. [https://phabricator.wikimedia.org/T418580] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:27}} community-submitted {{PLURAL:27|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue preventing users from creating an instance in [https://www.wikibase.cloud/ Wikibase.cloud] has now been fixed. [https://phabricator.wikimedia.org/T416807] '''Updates for technical contributors''' * To help ensure [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]], over the next month the Wikimedia Foundation will implement global API rate limits across our APIs. In early March, stricter limits will be applied to unidentified requests from outside Toolforge/WMCS and API requests that are made from web browsers. In April, higher limits will be applied to identified traffic. These limits are intentionally set as high as possible to minimise impact on the community. Bots running in Toolforge/WMCS or with the bot user right on any wiki should not be affected for now. However, all developers are advised to follow updated best practices. For more information, see [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]]. * The Wikidata Query Service Linked Data Fragment (LDF) endpoint will be decommissioned in February. This endpoint served limited traffic, which was successfully migrated to other data access methods that were better suited to support existing use cases. The hardware used to support the LDF endpoint will be reallocated to support the ongoing backend migration efforts. [https://phabricator.wikimedia.org/T415696] * The new Parsoid parser [[mw:Special:MyLanguage/Parsoid/Parser Unification/Updates|continues to be deployed to additional wikis]], improving platform sustainability and making it easier to introduce new reading and editing features. Parsoid is now the default parser on 488 WMF wikis (268 Wikipedias), now covering more than 10% of all Wikipedia page views. * The process and criteria for [[Special:MyLanguage/Wikimedia Enterprise#Access|requesting exceptional access]] to the high volume feed of the ''Wikimedia Enterprise'' APIs (at no cost for mission-aligned usecases), [[m:Talk:Wikimedia Enterprise#Exceptional access criteria|have now been published]]. This is to provide more thorough and clearer documentation for users. * [https://techblog.wikimedia.org/ Tech Blog], the blog dedicated to the Wikimedia technical community [https://techblog.wikimedia.org/2026/02/24/a-tech-blog-diff/ will be migrating] to [[diffblog:|Diff]], the community news and event blog. The migration should be complete in April 2026, after which new posts will be accepted for publishing. Readers will be able to access posts – old and new – on the landing page at https://diff.wikimedia.org/techblog. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.18|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/10|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W10"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৭:৫২, ২ মার্চ ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30137798-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <span lang="en" dir="ltr">Tech News: 2026-11</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W11"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/11|Translations]] are available. '''Weekly highlight''' * [[m:Special:MyLanguage/Tech/Server switch|All wikis will be read-only]] for a few minutes on Wednesday, 25 March 2026 at [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. This is for the datacenter server switchover backup tests, [[wikitech:Deployments/Yearly calendar|which happen twice a year]]. During the switchover, all Wikimedia website traffic is shifted from one primary data center to the backup data center to test availability and prevent service disruption even in emergencies. * Last week, all wikis had 2 hours of read-only time, and extended unavailability for user-scripts and gadgets. This was due to a security incident which has since been resolved. Work is ongoing to prevent re-occurrences. For current information please see the [[m:Steward's noticeboard#Statement on Meta about today's user script security incident|post on the Stewards' noticeboard]] ([[m:Special:MyLanguage/Wikimedia Foundation/Product and Technology/Product Safety and Integrity/March 2026 User Script Incident|translations]]). '''Updates for editors''' * Users facing multiple blocks on mobile will now see the reasons for each block separately, instead of a generic message. This helps them understand why they are blocked and what steps they can take to resolve the issue. For example, users affected for using common VPNs (such as [[Special:MyLanguage/Apple iCloud Private Relay|iCloud Private Relay]]) will receive clearer guidance on what they need to do to start editing again. [https://phabricator.wikimedia.org/T357118] * Later this week, [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|Suggestion Mode]] will become available as a beta feature within the visual editor at all Wikipedias. This feature proactively suggests various types of actions that people can consider taking to improve Wikipedia articles, and learn about related guidelines. The feature is locally configurable, and can also be locally expanded with custom Suggestions. Current settings can be seen at [[Special:EditChecks]] and there are [[mw:Special:MyLanguage/Help:Suggestion mode#For administrators %E2%80%93 local customization|instructions for how administrators can customize]] the links to point to local guidelines. The feature is connected to [[mw:Special:MyLanguage/Help:Edit check|Edit check]] which suggests improvements while someone is writing new content. In the future, the Editing team plans to evaluate the feature's impact with newcomers through a controlled experiment. [https://phabricator.wikimedia.org/T404600] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:23}} community-submitted {{PLURAL:23|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue where the cursor became misaligned during the use of CodeMirror’s syntax highlighting, which makes wikitext and code easier to read, has now been fixed. This problem specifically affected users who defined a font rule in a custom stylesheet while creating a new topic with DiscussionTools. [https://phabricator.wikimedia.org/T418793] '''Updates for technical contributors''' * API rate limiting update: To help ensure [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]], global API rate limits will be applied this week to requests without a compliant User-Agent that originate from outside Toolforge/WMCS and to unauthenticated requests made from web browsers. Higher limits will be applied to identified traffic in April. Bots running in Toolforge/WMCS or with the bot user right on any wiki should not be affected for now. However, all developers are advised to follow updated best practices. For more information, see [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]]. * The new GraphQL API has been released. The API was developed as a flexible alternative to select features of the Wikidata Query Service (WDQS), to improve developer experience and foster adaptability, and efficient data access. Try it out and [[d:Wikidata:Wikibase GraphQL#Feedback and development|give feedback]]. You can also [https://greatquestion.co/wikimediadeutschland/GraphQLAPI/apply sign up for usability tests]. * The [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group|PTAC Unsupported Tools Working Group]] continued improvements to [[commons:Special:MyLanguage/Commons:Video2commons#|Video2Commons]] in February, with fixes addressing authentication errors, large-file handling, task queue visibility, and clearer upload behavior. Work is still ongoing in some areas, including changes related to deprecated server-side uploads. Read [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group#February 2026|this update]] to learn more. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.19|MediaWiki]] '''In depth''' * The Article Guidance team invites experienced Wikipedia editors from selected [[mw:Special:MyLanguage/Article guidance/Pilot wikis and collaborators#Collaborators|pilot wikis]] and interested contributors from other Wikipedias to fill out this questionnaire which is available in [https://docs.google.com/forms/d/e/1FAIpQLSfmLeVWnxmsCbPoI_UF2jyRcn73WRGWCVPHzerXb4Cz97X_Ag/viewform English], [https://docs.google.com/forms/d/e/1FAIpQLSd6rzr4XXQw8r4024fE3geTPFe13M_6w7Mitj-YJi0sOlWTAw/viewform?usp=header Arabic], [https://docs.google.com/forms/d/e/1FAIpQLSdok3-RfB18lcugYTUMGkpwmqG_8p760Wv4dCXitOXOszjUDw/viewform?usp=header Bengali], [https://docs.google.com/forms/d/e/1FAIpQLSfjTfYp4jEo0akA4B1e-Nfg3QZPCudUjhJzHzzDi6AHyAaMGA/viewform?usp=header Japanese], [https://docs.google.com/forms/d/e/1FAIpQLScteVoI29Aue4xc72dekk-6RYtvmMgQxzMI900UOawrFrSTWg/viewform?usp=header Portuguese], [https://docs.google.com/forms/d/e/1FAIpQLSetdxnYwL3ub2vqA7awCg5hJZPMIYcDPaiTe12rY9h0GYnVlw/viewform?usp=header Persian], and [https://docs.google.com/forms/d/e/1FAIpQLScNvfJF-Ot-4pzA4qAN771_0QDJ4Li19YcUsaTgSKW8Nc7U_Q/viewform?usp=header Turkish]. Your answers will help the team customize guidance for less experienced editors and help them learn community policies and practices while creating an article. Learn more [[mw:Special:MyLanguage/Article guidance|on the project page]]. '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/11|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W11"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৮:৫৩, ৯ মার্চ ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30213008-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <span lang="en" dir="ltr">Tech News: 2026-12</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W12"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/12|Translations]] are available. '''Updates for editors''' * The [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature, also known as [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror 6]], has been used for wikitext syntax highlighting since November 2024. It will be promoted out of beta by May 2026 in order to bring improvements and new [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Features|features]] to all editors who use the standard syntax highlighter. If you have any questions or concerns about promoting the feature out of beta, [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|please share]]. [https://phabricator.wikimedia.org/T259059] * Some changes to local user groups are performed by stewards on Meta-Wiki and logged there only. Now, interwiki rights changes will be logged both on Meta-Wiki and the wiki of the target user to make it easier to access a full record of user's rights changes on a local wiki. Past log entries for such changes will be backfilled in the coming weeks. [https://phabricator.wikimedia.org/T6055] * On wikis using [[m:Special:MyLanguage/Flagged Revisions|Flagged Revisions]], the number of pending changes shown on [[{{#Special:PendingChanges}}]] previously counted pages which were no longer pending review, because they have been removed from the system without being reviewed, e.g. due to being deleted, moved to a different namespace, or due to wiki configuration changes. The count will be correct now. On some wikis the number shown will be much smaller than before. There should be no change to the list of pages itself. [https://phabricator.wikimedia.org/T413016] * Wikifunctions composition language has been rewritten, resulting in a new version of the language. This change aims to increase service stability by reducing the orchestrator's memory consumption. This rewrite also enables substantial latency reduction, code simplification, and better abstractions, which will open the door to later feature additions. Read more about [[f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-11|the changes]]. * Users can now sort search results alphabetically by page title. The update gives an additional option to finding pages more easily and quickly. Previously, results could be sorted by Edit date, Creation date, or Relevance. To use the new option, open 'Advanced Search' on the search results page and select 'Alphabetically' under 'Sorting Order'. [https://phabricator.wikimedia.org/T403775] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:28}} community-submitted {{PLURAL:28|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the bug that prevented UploadWizard on Wikimedia Commons from importing files from Flickr has now been fixed. [https://phabricator.wikimedia.org/T419263] '''Updates for technical contributors''' * A new special page, [[{{#special:LintTemplateErrors}}]], has been created to list transcluded pages that are flagged as containing lint errors to help users discover them easily. The list is sorted by the number of transclusions with errors. For example: [[{{#special:LintTemplateErrors}}/night-mode-unaware-background-color]]. [https://phabricator.wikimedia.org/T170874] * Users of the [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature have been using [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] instead of [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] for syntax highlighting when editing JavaScript, CSS, JSON, Vue and Lua content pages, for some time now. Along with promoting CodeMirror 6 out of beta, the plan is to replace CodeEditor as the standard editor for these content models by May 2026. [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|Feedback or concerns are welcome]]. [https://phabricator.wikimedia.org/T419332] * The [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] JavaScript modules will soon be upgraded to CodeMirror 6. Leading up to the upgrade, loading the <code dir=ltr>ext.CodeMirror</code> or <code dir=ltr>ext.CodeMirror.lib</code> modules from gadgets and user scripts was deprecated in July 2025. The use of the <code dir=ltr>ext.CodeMirror.switch</code> hook was also deprecated in March 2025. Contributors can now make their scripts or gadgets compatible with CodeMirror 6. See the [[mw:Special:MyLanguage/Extension:CodeMirror#Gadgets and user scripts|migration guide]] for more information. [https://phabricator.wikimedia.org/T373720] * The MediaWiki Interfaces team is expanding coverage of REST API module definitions to include [[mw:Special:MyLanguage/API:REST API/Extensions|extension APIs]]. REST API modules are groups of related endpoints that can be independently managed and versioned. Modules now exist for [https://phabricator.wikimedia.org/T414470 GrowthExperiments] and [https://phabricator.wikimedia.org/T419053 Wikifunctions] APIs. As we migrate extension APIs to this structure, documentation will move out of the main MediaWiki OpenAPI spec and REST Sandbox view, and will instead be accessible via module-specific options in the dropdown on the [https://test.wikipedia.org/wiki/Special:RestSandbox REST Sandbox] (i.e., [[{{#Special:RestSandbox}}]], available on all wiki projects). * The [[mw:Special:MyLanguage/Extension:Scribunto|Scribunto]] extension provides different pieces of information about the wiki where the module is being used via the [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual|mw.site]] library. Starting last week, the library also provides a [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual#mw.site.wikiId|way]] of accessing the [[mw:Special:MyLanguage/Manual:Wiki ID|wiki ID]] that can be used to facilitate cross-wiki module maintenance. [https://phabricator.wikimedia.org/T146616] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.20|MediaWiki]] '''In depth''' * The [[m:Special:MyLanguage/Coolest Tool Award|2026 Coolest Tool Award]] celebrating outstanding community tools, is now open for nominations! Nominate your favorite tool using the [https://wikimediafoundation.limesurvey.net/435684?lang=en nomination survey] form by 23 March 2026. For more information on privacy and data handling, please see the [[foundation:Special:MyLanguage/Legal:Coolest_Tool_Award_2026_Survey_Privacy_Statement|survey privacy statement]]. '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/12|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W12"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৯:৩৬, ১৬ মার্চ ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30260505-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <span lang="en" dir="ltr">Tech News: 2026-13</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W13"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/13|Translations]] are available. '''Weekly highlight''' * Wikimedia site users can now log in without a password using passkeys. This is a secure method supported by fingerprint, facial recognition, or PIN. With this change, all users who opt for passwordless login will find it easier, faster, and more secure to log in to their accounts using any device. The new passkey login option currently appears as an autofill suggestion in the username field. An additional [[phab:T417120|"Log in with passkey" button]] will soon be available for users who have already registered a passkey. This update will improve security and user experience. The [[c:File:Passwordless_login_screencast.webm|screen recording]] demonstrates the passwordless login process step by step. * [[m:Special:MyLanguage/Tech/Server switch|All wikis will be read-only]] for a few minutes on Wednesday, 25 March 2026 at [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. This is for the datacenter server switchover backup tests, [[wikitech:Deployments/Yearly calendar|which happen twice a year]]. During the switchover, all Wikimedia website traffic is shifted from one primary data center to the backup data center to test availability and prevent service disruption even in emergencies. '''Updates for editors''' * Wikimedia site users can now export their notifications older than 5 years using a [[toolforge:echo-chamber|new Toolforge tool]]. This will ensure that users retain their important notifications and avoid them being lost based on the planned change to delete notifications older than 5 years, as previously announced. [https://phabricator.wikimedia.org/T383948] * Wikipedia editors in Indonesian, Thai, Turkish, and Simple English now have access to Special:PersonalDashboard. This is an [[mw:Special:MyLanguage/Moderator Tools/Dashboard|early version of an experience]] that introduces newer editors to patrolling workflows, making it easier for them to move from making edits to participating in more advanced moderation work on their project. [https://phabricator.wikimedia.org/T402647] * The [[Special:Block]] now has two minor interface changes. Administrators can now easily perform indefinite blocks through a dedicated radio button in the expiry section. Also, choosing an indefinite expiry provides a different set of common reasons to select from, which can be changed at: [[MediaWiki:Ipbreason-indef-dropdown]]. [https://phabricator.wikimedia.org/T401823] * Mobile editors [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#Logged-out|at several wikis]] can now see an improved logged-out edit warning, thanks to the recent updates from the Growth team. These changes released last week are part of ongoing efforts and tests to enhance [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|account creation experience on mobile]] and then increase participation. [https://phabricator.wikimedia.org/T408484] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:36}} community-submitted {{PLURAL:36|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the bug that prevented mobile web users from seeing the block information when affected by multiple blocks has been fixed. They can now see messages of all the blocks currently affecting them when they access Wikipedia. '''Updates for technical contributors''' * Images built using Toolforge will soon get the upgraded buildpacks version, bringing support for newer language versions and other upstream improvements and fixes. If you use Toolforge Build Service, review the recent [https://lists.wikimedia.org/hyperkitty/list/cloud-announce@lists.wikimedia.org/thread/EMYTA32EV2V5SQ2JIEOD2CL66YFIZEKV/ cloud-announce email] and update your build configuration as necessary to ensure your tools are compatible. [https://wikitech.wikimedia.org/w/index.php?title=Help:Toolforge/Building_container_images&oldid=2392097#Buildpack_environment_upgrade_process][https://phabricator.wikimedia.org/T380127] * The [https://api.wikimedia.org/wiki/Main_Page API Portal] documentation wiki will shut down in June 2026. API keys created on the API Portal will continue to work normally. api.wikimedia.org endpoints will be deprecated gradually starting in July 2026. Documentation on the API Portal is moving to [[mw:Wikimedia APIs|mediawiki.org]]. Learn more on the [[wikitech:API Portal/Deprecation|project page]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.21|MediaWiki]] '''In depth''' * [[m:Special:MyLanguage/WMDE Technical Wishes|WMDE Technical Wishes]] is considering improvements to [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names|automatically generated reference names in VisualEditor]]. Please check out the [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names#Proposed solutions|proposed solutions]] and participate in the [[m:Talk:WMDE Technical Wishes/References/VisualEditor automatic reference names#Request for comment|request for comment]]. '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/13|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W13"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৬:৫১, ২৩ মার্চ ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30268305-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:UOzurumba (WMF)@metawiki পাঠিয়েছেন --> == <span lang="en" dir="ltr">Tech News: 2026-14</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W14"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/14|Translations]] are available. '''Weekly highlight''' * The Beta version of [[abstract:|Abstract Wikipedia]] a new Wikimedia project which is language-independent, was launched last week. The project allows communities to build Wikipedia articles in their native language, which can be readily accessed by other users in their own languages. The wiki is powered by instructions from Wikifunctions and also based on structured content from Wikidata. [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-26|Read more]]. '''Updates for editors''' * The Growth team is running an A/B test to evaluate a clearer, more user-friendly message that promotes account creation on wikis. Currently when logged-out mobile users begin editing, they see a jarring warning message that can feel abrupt and discouraging. This also presents temporary account editing as the default rather than encouraging account creation. The test is running on ten Wikipedias, including Arabic, French, Spanish and German. [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#2. Improve logged-out warning message (T415160)|Read more]]. * The Wikimedia Apps team is inviting feedback on [[mw:Special:MyLanguage/Wikimedia Apps/Team/Future of Editing on the Mobile Apps|how editing should work on the Wikipedia mobile apps]]. The discussion focuses on improving how users access editing tools when they tap "Edit". This is part of a broader effort to convert readers who develop an interest in editing, to access a more user-friendly pathway to start contributing. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:45}} community-submitted {{PLURAL:45|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where citation fetching from the large newspaper archive [https://www.newspapers.com Newspapers.com] was no longer working, due to a block in [[mw:Special:MyLanguage/Citoid|Citoid]] requests, has now been fixed. [https://phabricator.wikimedia.org/T419903] '''Updates for technical contributors''' * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.22|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/14|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W14"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৯:২৬, ৩০ মার্চ ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30329462-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/15|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W15"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৬:১৯, ৬ এপ্রিল ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30362761-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/16|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W16"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৫:১৯, ১৩ এপ্রিল ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30380527-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/17|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W17"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৫:০১, ২০ এপ্রিল ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30432763-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/18|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W18"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৮:০৬, ২৭ এপ্রিল ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30458046-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:UOzurumba (WMF)@metawiki পাঠিয়েছেন --> == <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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/19|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W19"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ২০:৪৩, ৪ মে ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30498077-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/20|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W20"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৯:২০, ১১ মে ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30524429-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/21|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W21"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ২০:২২, ১৮ মে ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30539262-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/22|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W22"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ২১:৫২, ২৫ মে ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30584502-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:Quiddity (WMF)@metawiki পাঠিয়েছেন --> == <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]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/23|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W23"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ২১:০৯, ১ জুন ২০২৬ (ইউটিসি) <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30613639-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন --> == <span lang="en" dir="ltr"> Wikidata Platform Newsletter - June 2026</span> == <div lang="en" dir="ltr"> <section begin="message"/> This is the 7th issue of our [[D:Wikidata:Wikidata_Platform_team/Newsletter|monthly newsletter]]! The next issue will be published in July 2026. * '''QLever as the New Backend System for WDQS:''' After reviewing feedback from the community on our architectural proposals shared last month (see [[D:Wikidata:SPARQL_query_service/WDQS_backend_update/Backend_Replacement|Backend Replacement]] and [[wikitech:Wikidata_Query_Service/WDQS_Architecture_re-design|WDQS Architecture Re-Design]]), we have decided to migrate to '''QLever''' as the new backend for the Wikidata Query Service. This decision has been aligned upon across partners in WMF, WMDE, and the QLever team. We are very excited about the improvements to performance and sustainability that this choice unlocks for WDQS users. We will continue to share details on the user-facing impacts of this decision, in future [[D:Wikidata:Wikidata_Platform_team/Newsletter|newsletters]] and on our [[D:Wikidata:SPARQL_query_service/WDQS_backend_update|migration project page]], as the work progresses. : We encourage all members of the community to continue helping us identify higher-risk areas by reporting use cases on our [[D:Wikidata:SPARQL_query_service/WDQS_backend_update/High-Impact_Use_Cases|high-impact use cases and tools page]]. This page is not intended to catalogue all WDQS usage, but to highlight complex or critical cases that may require additional attention. * '''Migration Timeline:''' Following the decision to use QLever, we would like to share some key milestones for our migration. More details will be shared as we approach full implementation. Please note that all dates are targets and may change in the event of unforeseen challenges. Refer to the [[D:Wikidata:SPARQL_query_service/WDQS_backend_update|migration project page]] for up to date information. *# '''Exploration:''' ('''COMPLETED''') From September through March, the team conducted traffic and benchmarking analyses to understand the needs of WDQS users and alternatives to our current system. This culminated in our final recommendations for a new backend and platform architecture, which have been reviewed and aligned upon across stakeholders. *# '''Installation:''' ('''IN-PROGRESS''') In April, the team began building. The development of new QLever endpoints (ie. WDQS v2) is underway, as is the refactoring of our platform architecture. This includes work on indexing, update pipelines, and rewriting observed production traffic into the SPARQL 1.1 standard. We are on track to complete our build of the new endpoints by '''July 1st''' and transition into initial implementation. The query service will continue to be available in its current state through implementation phases. *# '''Initial Implementation:''' ('''NOT STARTED''') WDQS v2, a new endpoint built on QLever, will be first available to a small number of pilot users. The team will work closely with this group to learn where improvements are needed and how we can best support users in independently migrating their use cases. A self-service hub will be published by '''October 1st'''. This will include learnings from our pilot group, guidance on how all users of WDQS can migrate their work flows, and documentation on best practices for adapting all Blazegraph dependencies to our new system or alternative endpoints where needed. *# '''Full Implementation:''' ('''NOT STARTED''') The new endpoints will be scaled to meet the needs of the broader community and will be generally accessible to all. The original Blazegraph endpoints will still be available, but may experience service degradation beginning in '''February, 2027''' as we reallocate resources to the new infrastructure and begin slowly winding down the legacy service. We aim to have all WDQS traffic migrated by '''June 30, 2027''', at which time the Blazegraph endpoint will be decommissioned. * '''Query Categorization and Testing:''' We have begun evaluating WDQS queries to identify Blazegraph-specific features and functionality. All bespoke query aspects need to be rewritten into the SPARQL 1.1 standard in order to work with the new QLever backend. We have documented our process for this work in two Wikitech publications on [[wikitech:SPARQL_Query_Characterization|SPARQL Query Characterization]] and [[Wikitech:Test_Architecture_for_QLever|Test Architecture for QLever]]. These documents provide more detail on methodology and testing used to validate the correctness and performance across the new and old backends. They are intended as supporting technical references for contributors interested in the migration validation and benchmarking approach. * '''2026-05-08 incident report:''' On May 7, 2026, aggressive web scrapers began overwhelming the Wikidata Query Service (WDQS), triggering a multi-day service degradation that impacted both availability and lag SLOs. The excessive load caused Blazegraph to timeout for over half of users at peak, while also throttling the streaming updater, which blocked index updates and cascaded into edit throttling on wikidata.org itself. Initial mitigation on May 7-8 included depooling the eqiad datacenter WDQS deployment and applying rate limits based on sampled request data, but the outage persisted through the weekend. Full resolution came on Monday, May 11, when deeper analysis of WDQS logs revealed a scraper that had evaded sampled webrequest data used for initial rate limiting. Once a targeted rate limiting rule was applied to the scraper's signatures, timeout rates returned to normal. ''[[wikitech:Incidents/2026-05-13_wdqs|See the full incident report]]'' * '''[[D:Event:Blazegraph_Migration_Office_Hours_-_June_2026|Blazegraph Migration Office Hour (June session)]]:''' Our next Blazegraph Migration Office Hour will take place on Tuesday, 9 June 2026 (Tomorrow) at {{zonestamp|2026-05-12 16:00|16:00 UTC}}. This session is focused on supporting the migration away from Blazegraph as the backend of WDQS. Whether you have questions, need clarification, or want to discuss how your use case may be affected. You can register for the session via [[D:Event:Blazegraph_Migration_Office_Hours_-_May_2026|the event page]]. : In preparation, we encourage you to add questions, feedback, or migration-related support needs to [https://etherpad.wikimedia.org/p/Blazegraph_Migration_Office_Hours this etherpad]. This helps us shape the agenda and focus on the most relevant topics during the session. <section end="message"/> </div> <bdi lang="en" dir="ltr">[[User:Udehb-WMF|Udehb-WMF]] ([[User talk:Udehb-WMF|আলোচনা]]) ১১:১০, ৮ জুন ২০২৬ (ইউটিসি)</bdi> <!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/WDP_team_updates&oldid=30635883-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:Udehb-WMF@metawiki পাঠিয়েছেন --> avvwzytc18jhxl2as9jfh9eg9vzhqkz islam 0 30436 510467 131121 2026-06-07T12:58:41Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L62285-এর সাথে সংযোগ তৈরি করছি 510467 wikitext text/x-wiki {{লে|L62285}} 5ibox3s0hik08wqvkuewqr5vgaatijv 510470 510467 2026-06-07T12:59:28Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1358655-এর সাথে সংযোগ তৈরি করছি 510470 wikitext text/x-wiki {{লে|L62285}} {{লে|L1358655}} sklklw3oku68yryxmxgn0i2ynzrb3ly 510471 510470 2026-06-07T12:59:52Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1463754-এর সাথে সংযোগ তৈরি করছি 510471 wikitext text/x-wiki {{লে|L62285}} {{লে|L1358655}} {{লে|L1463754}} c51fd2qu1h987vmsbvao5obo2ez1gkb 510472 510471 2026-06-07T13:00:10Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L449366-এর সাথে সংযোগ তৈরি করছি 510472 wikitext text/x-wiki {{লে|L62285}} {{লে|L1358655}} {{লে|L1463754}} {{লে|L449366}} ce2m0l90dfw0yznjkuymhfoc36zxl54 510473 510472 2026-06-07T13:00:22Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L593565-এর সাথে সংযোগ তৈরি করছি 510473 wikitext text/x-wiki {{লে|L62285}} {{লে|L1358655}} {{লে|L1463754}} {{লে|L449366}} {{লে|L593565}} 2c9qme5ggs723lfdmnsd1rufw5cgj9v 510474 510473 2026-06-07T13:00:34Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1142565-এর সাথে সংযোগ তৈরি করছি 510474 wikitext text/x-wiki {{লে|L62285}} {{লে|L1358655}} {{লে|L1463754}} {{লে|L449366}} {{লে|L593565}} {{লে|L1142565}} rn32wxnig1ady2zfuc74b1o2yqblvn7 510476 510474 2026-06-07T13:00:46Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1211400-এর সাথে সংযোগ তৈরি করছি 510476 wikitext text/x-wiki {{লে|L62285}} {{লে|L1358655}} {{লে|L1463754}} {{লে|L449366}} {{লে|L593565}} {{লে|L1142565}} {{লে|L1211400}} 6lm0syv9xbqg5nwysgfnalxu5dv1i8t 510477 510476 2026-06-07T13:00:56Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L358349-এর সাথে সংযোগ তৈরি করছি 510477 wikitext text/x-wiki {{লে|L62285}} {{লে|L1358655}} {{লে|L1463754}} {{লে|L449366}} {{লে|L593565}} {{লে|L1142565}} {{লে|L1211400}} {{লে|L358349}} rnvbi02lz1o8k5gw0tm284t8anyb3dn 510478 510477 2026-06-07T13:01:06Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L50202-এর সাথে সংযোগ তৈরি করছি 510478 wikitext text/x-wiki {{লে|L62285}} {{লে|L1358655}} {{লে|L1463754}} {{লে|L449366}} {{লে|L593565}} {{লে|L1142565}} {{লে|L1211400}} {{লে|L358349}} {{লে|L50202}} qg5xlvw0yispj8s51jb496yxm7tbdw0 510481 510478 2026-06-07T13:03:05Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1284367-এর সাথে সংযোগ তৈরি করছি 510481 wikitext text/x-wiki {{লে|L62285}} {{লে|L1358655}} {{লে|L1463754}} {{লে|L449366}} {{লে|L593565}} {{লে|L1142565}} {{লে|L1211400}} {{লে|L358349}} {{লে|L50202}} {{লে|L1284367}} lalkassw6a0k8pq21ilipscswa1elsg 510482 510481 2026-06-07T13:03:19Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L26392-এর সাথে সংযোগ তৈরি করছি 510482 wikitext text/x-wiki {{লে|L62285}} {{লে|L1358655}} {{লে|L1463754}} {{লে|L449366}} {{লে|L593565}} {{লে|L1142565}} {{লে|L1211400}} {{লে|L358349}} {{লে|L50202}} {{লে|L1284367}} {{লে|L26392}} mz9niq1q9ospry8lfwh6xmfdl10iwx8 ব্যবহারকারী আলাপ:Arafat Rahman Tamim 3 48140 510495 110915 2026-06-07T18:32:54Z ~2026-33656-20 14776 /* আল আরাফাত রহমান তামিম */ নতুন অনুচ্ছেদ 510495 wikitext text/x-wiki == বাংলা উইকিঅভিধানে স্বাগতম == {| class="plainlinks" style="width: 100%; padding: 10px; border: 2px solid #909999; background: #F6FFFF; margin-bottom: 3px; color: #000; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; box-shadow: 0 0 0.25em #829595; -moz-box-shadow: 0 0 0.25em #829595; -webkit-box-shadow: 0 0 0.25em #829595;" |- | সুপ্রিয় Arafat Rahman Tamim! <br /> উইকিঅভিধানে, বাংলা ভাষায় এই মুক্ত অভিধান গড়ার এই প্রকল্পে [[বিশেষ:অবদান/Arafat Rahman Tamim|আপনার প্রচেষ্টাকে]]&nbsp;স্বাগত জানাচ্ছি। আশা করছি এই প্রচেষ্টাকে সফল করতে আপনার সাহায্য অব্যাহত থাকবে, এবং এই সম্প্রদায়ে আপনার অবস্থান আনন্দপূর্ণ হবে। যেকোনো প্রকার প্রশ্নে নিঃসঙ্কোচে [[ব্যবহারকারী আলাপ:অভ্যর্থনা কমিটি বট|আমার আলাপ পাতায়]]&nbsp;বার্তা রাখার অনুরোধ করছি। উইকিঅভিধানে লেখার ক্ষেত্রে কিছু বিষয় মনে রাখা উত্তম: * [[উইকিঅভিধান:নীতিমালা ও নির্দেশাবলী|নীতিমালা ও নির্দেশাবলী]] &mdash; উইকিঅভিধানের মূল নীতিমালাগুলোতে একবার চোখ বুলিয়ে নিন, ও মেনে চলার চেষ্টা করুন। * [[উইকিঅভিধান:ভুক্তির কাঠামো ব্যাখ্যা|ভুক্তির কাঠামো ব্যাখ্যা]] &mdash; অর্থাৎ একটি ভুক্তিতে যে বিষয়গুলো যোগ করার মাধ্যমে আপনি ভুক্তিটির উন্নয়ন ঘটাতে পারেন। * [[উইকিঅভিধান:কপিরাইট|কপিরাইট নীতিমালা]] &mdash; উইকিঅভিধান আইনের প্রতি শ্রদ্ধাশীল। তাই কপিরাইটের মূল বিষয়গুলো অনুগ্রহপূর্বক দেখে নিন। * [[উইকিঅভিধান:নতুন শব্দ যোগ|নতুন শব্দ যোগ]] &mdash; বাংলা ও ইংরেজীতে নতুন শব্দ যোগ করতে অনুগ্রহপূর্বক [[উইকিঅভিধান:নতুন শব্দ যোগ]] পাতার প্রণালীটি অনুসরণ করুন। নিজের সম্পর্কে তথ্য আপনি আপনার [[ব্যবহারকারী:Arafat Rahman Tamim|ব্যবহারকারী পাতায়]] রাখতে পারেন। এর মাধ্যমে অন্যরা আপনার সম্পর্কে জানতে পারবে। সাহায্য চাইতে এবং মতামত রাখতে অনুগ্রহপূর্বক সম্পর্কিত পাতার আলাপ পাতা ব্যবহার করুন। <br /><br /> অনুগ্রহপূর্বক আলাপের পাতায় বার্তা রাখার পর সম্পাদনা সরঞ্জামদণ্ডের [[চিত্র:OOjs UI icon signature-ltr.svg|22px|link=|alt=স্বাক্ষর আইকন]] চিহ্নে ক্লিক করার মাধ্যমে অথবা চারটি টিল্ডা (<code><nowiki>~~~~</nowiki></code>) চিহ্ন দিয়ে নাম স্বাক্ষর করুন। এটি স্বয়ংক্রিয় ভাবে আপনার নাম এবং তারিখ যোগ করবে। <br /> আশা করি আপনি বাংলা উইকিঅভিধান সম্প্রদায়ের একজন হয়ে সম্পাদনা করে আনন্দ পাবেন! আবারও স্বাগতম এবং শুভেচ্ছা! [[উইকিঅভিধান:অভ্যর্থনা কমিটি|উইকিঅভিধান অভ্যর্থনা কমিটি]], [[ব্যবহারকারী:অভ্যর্থনা কমিটি বট|অভ্যর্থনা কমিটি বট]] ([[ব্যবহারকারী আলাপ:অভ্যর্থনা কমিটি বট|আলাপ]]) ১২:৪৫, ২০ আগস্ট ২০২১ (ইউটিসি) |} == আল আরাফাত রহমান তামিম == আল আরাফাত রহমান তামিম একজন সমাজকর্মী, ঢাকা বিশ্ববিদ্যালয়ের কর্মজীবী। [[বিশেষ:অবদান/&#126;2026-33656-20|&#126;2026-33656-20]] ([[ব্যবহারকারী আলাপ:&#126;2026-33656-20|আলাপ]]) ১৮:৩২, ৭ জুন ২০২৬ (ইউটিসি) a4k14r6b6fgu4aeklnb04zkbmsk2sqw মডিউল:আভিধানিক উপাত্ত 828 50158 510496 510110 2026-06-07T23:46:24Z Redmin 6857 510496 Scribunto text/plain local p = {} local i18n = require('মডিউল:আভিধানিক উপাত্ত/i18n') local references = require('মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ').format local getArgs = require('Module:Arguments').getArgs local wb = mw.wikibase local ustring = mw.ustring local html = mw.html local mw_lang = mw.language local entity_cache = {} local reference_cache = {} local forms local lang_code local lex_cat local matched_lemma local function wrapStringInWikilinks(str) local exceptions = i18n.nolinks local result = str:gsub('(%S+)', function(token) local word, trailing_char = token:match('^(.-)([;,]*)$') local wrapped = word:gsub('[^(-/]+', function(part) if exceptions[part] then return part else return '[[' .. part .. '#' .. i18n['content_lang_name'] .. '|' .. part .. ']]' end end) return wrapped .. trailing_char end) return result end local function serializeTable(val, name, skipnewlines, depth) -- https://stackoverflow.com/a/6081639 skipnewlines = skipnewlines or false depth = depth or 0 local tmp = string.rep(" ", depth) if name then tmp = tmp .. name .. " = " end if type(val) == "table" then tmp = tmp .. "{" .. (not skipnewlines and "\n" or "") for k, v in pairs(val) do tmp = tmp .. serializeTable(v, k, skipnewlines, depth + 1) .. "," .. (not skipnewlines and "\n" or "") end tmp = tmp .. string.rep(" ", depth) .. "}" elseif type(val) == "number" then tmp = tmp .. tostring(val) elseif type(val) == "string" then tmp = tmp .. string.format("%q", val) elseif type(val) == "boolean" then tmp = tmp .. (val and "true" or "false") else tmp = tmp .. "\"[inserializeable datatype:" .. type(val) .. "]\"" end return tmp end -- Use this to safely expand templates when you are not sure that they exist. local function safeExpand(frame, title, args) local _, result = pcall(function() return frame:expandTemplate{ title = title, args = args } end) if result:find('does not exist') then -- expandTemplate{} doesn't seem to throw any error that can be handled with pcall() so string search is the only viable option. return nil end return result end -- Use this function to get the label of an item even if that item does not have any label in the wiki's content language or English. local function getLabel(id) if id == 'Q11051hi' then return 'হিন্দি' elseif id == 'Q11051ur' then return 'উর্দু' elseif id == 'Q56356571fa' then return 'নয়া ফার্সি' elseif id == 'Q56356571tg' then return 'তাজিক' elseif id == 'Q58635pa' or id == 'Q58635pnb' then return 'পাঞ্জাবি' end local label = wb.getLabel(id) if label then return label end local labels = wb.getEntity(id).labels if not labels then return id end for _, v in pairs(labels) do if v and v.value then return v.value end end end local function getReference( id, reference ) local out_id = nil local url_value if reference_cache[id] == nil then local ref_text = references(reference, wb, mw_lang, i18n['content_lang_code'], i18n['wikipedia']) if reference.snaks then if reference.snaks['P248'] then for _, snak in pairs(reference.snaks['P248']) do if snak.datavalue and snak.datavalue.value.id == 'Q428' then -- কুরআন ref_text = ustring.gsub(ref_text, 'নামক অনুচ্ছেদ', 'নং আয়াত') break end end end if reference.snaks['P854'] then local snak = reference.snaks['P854'][1] if snak.datavalue then url_value = snak.datavalue.value end end end if url_value then ref_text = ref_text .. ', [' .. url_value .. ' সংযোগ]' end reference_cache[id] = ref_text else out_id = id end return {out_id, reference_cache[id]} end local function getEntity( id ) if entity_cache[id] == nil then entity_cache[id] = wb.getEntity(id) end return entity_cache[id] ~= false and entity_cache[id] or nil end -- Returns the Wiktionary language code for a lexeme entity local function getLexemeLanguageCode(current_lexeme) local lang_item_id = current_lexeme:getLanguage() if lang_item_id == nil then return nil end local lang_entity = getEntity(lang_item_id) if lang_entity == nil then return nil end for i, statement_property in ipairs({'P305','P424', 'P220'}) do -- আইইটিএফ ভাষা ট্যাগ, উইকিমিডিয়া ভাষা কোড, আইএসও ৬৩৯-৩ local statements = lang_entity:getBestStatements(statement_property) if statements[1] then local code = statements[1].mainsnak.datavalue.value if code == 'hr' then return 'sh' elseif code == 'pan' then return 'pa' else return statements[1].mainsnak.datavalue.value end end end -- error(current_lexeme:getId() .. '-এর ভাষার কোড পাওয়া যায়নি') end -- Return the first form of the lexeme which has exactly the given grammatical feature. local function formWithSingleGrammaticalFeature( item_id ) for i = 1, #forms do local grammaticalFeatures = forms[i]:getGrammaticalFeatures() if #grammaticalFeatures == 1 and grammaticalFeatures[1] == item_id then return forms[i] end end return nil end local function getArticleLinkTemplate(frame, stmt_value) local template = '' local sitelink = getEntity(stmt_value):getSitelink(i18n['wikipedia']) if sitelink then template = frame:expandTemplate{ title=i18n['template_wikipedia'], args={sitelink} } end return template end local function getArticleLinks (frame, sense ) local article_links = '' for i, stmt in pairs(sense:getAllStatements('P5137')) do -- এই অর্থের জন্য আইটেম article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end for i, stmt in pairs(sense:getAllStatements('P9970')) do -- এই অর্থের জন্য বিধেয় article_links = article_links .. getArticleLinkTemplate(frame, stmt.mainsnak.datavalue.value.id) end return article_links end -- @TODO: Generalise local function expandTemplateForProperty(frame, object, property, template) local lemmas = {} local n = 0 for _, stmt in pairs(object:getAllStatements(property)) do local lex = wb.lexeme.splitLexemeId(stmt.mainsnak.datavalue.value.id) if lex then lex = getEntity(lex) n = n + 1 lemmas[n] = lex:getLemma(lang_code) end end if not lang_code or n == 0 then return '' end -- Build args: first lang_code, then lemmas local args = {lang_code} for i = 1, n do args[#args + 1] = lemmas[i] end return frame:expandTemplate{ title = template, args = args } end local function getExternalLinks( entity ) -- T418639 local external_links = {} if entity.claims == nil then return external_links end local formatter_urls = require('মডিউল:আভিধানিক উপাত্ত/urls').formatter_urls for property_id, statements in pairs(entity.claims) do local formatter_url = formatter_urls[property_id] if formatter_url then local property_source = wb.getBestStatements(property_id, 'P9073') local source_name if next(property_source) then source_name = getLabel(property_source[1].mainsnak.datavalue.value.id) or property_source[1].mainsnak.datavalue.value.id else source_name = getLabel(property_id) or property_id end for i = 1, #statements do local stmt = statements[i] if stmt.mainsnak.datavalue then local formatted_link = ustring.gsub( ustring.gsub(formatter_url, '$1', stmt.mainsnak.datavalue.value), ' ', '+' ) table.insert(external_links, '[' .. formatted_link .. ' ' .. source_name .. ']') end end end end return external_links end p.getExternalLinks = getExternalLinks -- রেখে দিন যাতে ডিবাগিং সম্ভব হয় local function termSpan( term ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( text ) return tostring( span ) end local function termLink( term, lang_qid ) local text = term[1] local lang = term[2] local dir = mw_lang.new( lang ):getDir() local span = html.create( 'span' ) span:attr( 'lang', lang ) :attr( 'dir', dir ) :wikitext( '[[' .. text .. '#' .. getLabel(lang_qid) .. '|' .. text .. ']]' ) return tostring( span ) end local function getLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termSpan(rep) else lemma_string = lemma_string .. '/' .. termSpan(rep) end end return lemma_string end local function getLinkedLemmata( current_lexeme ) local lemma_string = '' for i, rep in pairs(current_lexeme:getLemmas()) do if lemma_string == '' then lemma_string = termLink(rep, current_lexeme:getLanguage()) else lemma_string = lemma_string .. '/' .. termLink(rep, current_lexeme:getLanguage()) end end return lemma_string end local function getExamples( current_lexeme, sense_id, references_seen ) local examples = html.create('dl') local example_text, example_lang, example_form, example_str for i, stmt in pairs(current_lexeme:getAllStatements('P5831')) do -- ব্যবহারের উদাহরণ if stmt.qualifiers and stmt.qualifiers['P6072'] and stmt.qualifiers['P6072'][1].datavalue.value.id == sense_id then -- বিষয়ে লেক্সিমের অর্থ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_strs = {} if stmt.qualifiers['P1810'] then table.insert(example_form_strs, stmt.qualifiers['P1810'][1].datavalue.value) elseif stmt.qualifiers['P5830'] then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ for _, rep in pairs(example_form:getRepresentations()) do table.insert(example_form_strs, rep[1]) end end for i, example_form_str in pairs(example_form_strs) do new_example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") if new_example_text ~= example_text then example_str = termSpan({new_example_text, example_lang}) break end new_example_text = example_text end if example_str == nil then example_str = termSpan({example_text, example_lang}) end local reference_text = '' if stmt.references then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end end for i, stmt in pairs(wb.getAllStatements(sense_id, 'P5831')) do -- ব্যবহারের উদাহরণ example_text = ustring.gsub(stmt.mainsnak.datavalue.value.text, ' / ','<br/>') example_lang = stmt.mainsnak.datavalue.value.language local example_form_str = nil if stmt.qualifers then example_form = getEntity(stmt.qualifiers['P5830'][1].datavalue.value.id) -- বিষয়ে লেক্সিমের রূপ if stmt.qualifiers['P1810'] then example_form_str = stmt.qualifiers['P1810'][1].datavalue.value end end if example_form and example_form_str == nil then example_form_str = example_form:getRepresentation(i18n['content_lang_code']) end if example_form and example_form_str == nil then example_form_str = example_form:getRepresentations()[1][1] end if example_form_str then example_text = ustring.gsub(example_text, example_form_str, "'''" .. example_form_str .. "'''") end example_str = termSpan({example_text, example_lang}) local reference_text = '' if stmt.references then for j, reference in pairs(stmt.references) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. got_reference[2] end end if example_str then examples:tag('dd'):wikitext("''" .. example_str .. "''") if reference_text ~= '' then examples:done():tag('dd'):css('text-indent', '2em'):wikitext(reference_text) end end end return { tostring(examples) , references_seen } end -- This calls frame:preprocess() instead of :callParserFunction() because the latter does not work for Wikifunctions function calls yet (see https://www.wikifunctions.org/wiki/Wikifunctions:Embedded_function_calls). local function callWikifunctionsFunction(args, frame) return frame:preprocess('{{#function:' .. args .. '}}') end local function checkTitleCodePointInRange(title, start_point, end_point) return ustring.find( title, '[' ..ustring.char(start_point) .. '-' .. ustring.char(end_point) .. ']' ) end local function getLanguageForCategories( lang_id, current_page_title ) -- বিশেষ ভাষার জন্য if lang_id == 'Q11051' then -- হিন্দি/উর্দু if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- উর্দু lang_id = 'Q11051ur' elseif checkTitleCodePointInRange(current_page_title, 0x0900, 0x097f) then -- হিন্দি lang_id = 'Q11051hi' end elseif lang_id == 'Q58635' then -- পাঞ্জাবি if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- শাহমুখী lang_id = 'Q58635pnb' elseif checkTitleCodePointInRange(current_page_title, 0x0a00, 0x0a7f) then -- গুরুমুখী lang_id = 'Q58635pa' end elseif lang_id == 'Q56356571' then -- নয়া ফার্সি ভাষা if checkTitleCodePointInRange(current_page_title, 0x0600, 0x06ff) then -- ফার্সি (ইরান/আফগানিস্তান) lang_id = 'Q56356571fa' elseif checkTitleCodePointInRange(current_page_title, 0x0400, 0x04ff) then -- তাজিক lang_id = 'Q56356571tg' end end return lang_id end local function getOneStringForProperty(object, property) local val local stmts = object:getAllStatements(property) if #stmts ~= 0 then val = stmts[1].mainsnak.datavalue.value end return val end local function getItemForSense(sense) for k, stmt in pairs(sense:getAllStatements('P5137')) do -- যদি 'এই অর্থের জন্য আইটেম' মানের বাংলা লেবেল থাকে local qid = stmt.mainsnak.datavalue.value.id return qid, getLabel(qid) end end local function getTranslations(frame, senses) if #senses == 0 then return nil end local all_translations = {} local wmlang for _, sense in pairs(senses) do local translation_set = {} local gloss = sense:getGloss('bn') local item, label = getItemForSense(sense) if item then wmlang = require("Module:wikimedia languages") end for _, stmt in pairs(sense:getAllStatements('P5972')) do local translation = stmt.mainsnak.datavalue.value.id local lexeme_id = wb.lexeme.splitLexemeId(translation) local trans_lexeme = getEntity(lexeme_id) local lang_name = getLabel(trans_lexeme:getLanguage()) local trans_code = getLexemeLanguageCode(trans_lexeme) if trans_code then table.insert(translation_set, lang_name .. ': ' .. frame:expandTemplate{title=i18n['template_t'], args={trans_code, getLemmata(trans_lexeme) .. '<br/>'}}) else table.insert(translation_set, lang_name .. ': ' .. getLinkedLemmata(trans_lexeme) .. '<br/>' .. i18n.trans_category(lang_name)) end end if item then for _, v in pairs(getEntity(item).labels) do if string.find(v.language, '-') == nil then -- @TODO: Implement deduplication of translation and get rid of this check local lang = wmlang.getByCode(v.language) local wikt = lang:getWiktionaryLanguage() if wikt:hasType('regular') then table.insert(translation_set, getLabel(wikt:getWikidataItem()) .. ': ' .. frame:expandTemplate{title=i18n['template_t'], args={wikt:getCode(), v.value .. '<br/>'}}) end end end end if #translation_set > 0 then local block = frame:expandTemplate{ title = i18n['template_trans-top'], args = { gloss or label } } block = block .. table.concat(translation_set, '\n') .. frame:expandTemplate{ title = i18n['template_trans-bottom'] } table.insert(all_translations, block) end end if #all_translations == 0 then return nil end return '====' .. i18n['heading_translation'] .. '==== \n' .. table.concat(all_translations, '\n') end local createicon = function(langcode, entityID, propertyID) langcode = langcode or "" propertyID = propertyID or "" local icon = "&nbsp;<span class='penicon autoconfirmed-show'>[[" -- "&nbsp;<span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge .. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=" .. i18n['edit_wikidata'] .. "|link=https://www.wikidata.org/entity/" .. entityID if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end if propertyID ~= "" then icon = icon .. "#" .. propertyID end icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>" return icon end local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name) if #senses == 0 then return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. i18n.tocatlink(i18n['category_rfdef']), references_seen} end local meanings = html.create( 'ol' ) local item_label_gloss_parts = {} local idlinkset = {} for i, sense in pairs(senses) do local gloss_text_parts = {} local main_gloss_text = frame:expandTemplate{ title=i18n['template_anchor'], args={sense:getId()} } local specifiers = {} for k, property_id in ipairs({'P6084', 'P6191', 'P9488'}) do -- অবস্থান যেখানে শব্দার্থ ব্যবহৃত, যে রীতিতে শব্দার্থ ব্যবহৃত হয়, যে ক্ষেত্রে ব্যবহৃত for _, stmt in pairs(sense:getAllStatements(property_id)) do local stmt_value = stmt.mainsnak.datavalue.value.id local reference_text = '' local refs = stmt.references if refs then for j, reference in pairs(refs) do table.insert(references_seen, reference.hash) local got_reference = getReference(reference.hash, reference) reference_text = reference_text .. '\n\n' .. frame:extensionTag('ref', got_reference[2]) end end local val = getLabel(stmt_value) table.insert(specifiers, val .. reference_text) if property_id == 'P9488' then table.insert(item_label_gloss_parts, i18n.tocatlink(lang_code .. ':' .. val)) end end if #specifiers > 0 then main_gloss_text = main_gloss_text .. "(''" .. table.concat(specifiers, "'', ''") .. "'') " end end local gloss = sense:getGloss( i18n['content_lang_code'] ) if gloss then main_gloss_text = main_gloss_text .. wrapStringInWikilinks(gloss) if gloss:match('^প্রদত্ত%s*(%S-)%s*নাম$') then -- given names main_gloss_text = main_gloss_text .. i18n.tocatlink(language_name .. ' ' .. i18n['category_given_names']) end else local other_gloss_text = nil local other_gloss_lang = nil local stmt_value, item_label = getItemForSense(sense) if item_label then table.insert(item_label_gloss_parts, '[[:d:' .. stmt_value .. '|' .. item_label .. ']]') end if #item_label_gloss_parts > 0 then other_gloss_text = table.concat(item_label_gloss_parts, '; ') end if other_gloss_text == nil then for _, fallback_lang in ipairs(mw_lang.getFallbacksFor( i18n['content_lang_code'] )) do if sense:getGloss( fallback_lang ) then other_gloss_text, other_gloss_lang = sense:getGloss( fallback_lang ) end end if other_gloss_lang == nil then local glosses = sense:getGlosses() for _, gloss in pairs(glosses) do other_gloss_text = gloss[1] other_gloss_lang = gloss[2] break end end main_gloss_text = main_gloss_text .. other_gloss_text .. "<sup><em>" .. mw_lang.fetchLanguageName(other_gloss_lang, i18n['content_lang_code']) .. "</em></sup>" else main_gloss_text = main_gloss_text .. "''" .. other_gloss_text .. "''" end main_gloss_text = main_gloss_text .. i18n.tocatlink(i18n['category_rfdef_equivalent']) end local synonym = expandTemplateForProperty(frame, sense, 'P5973', i18n['template_synonym']) if synonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. synonym end local antonym = expandTemplateForProperty(frame, sense, 'P5974', i18n['template_antonym']) if antonym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. antonym end local hypernym = expandTemplateForProperty(frame, sense, 'P6593', i18n['template_hypernym']) if hypernym ~= '' then main_gloss_text = main_gloss_text .. ' <br/> ' .. hypernym end if lex_cat == 'Q1084' or lex_cat == 'Q147276' then -- noun or proper noun local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-noun']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym elseif lex_cat == 'Q34698' then local demonym = expandTemplateForProperty(frame, sense, 'P6271', i18n['template_demonym-adj']) main_gloss_text = main_gloss_text .. ' <br/> ' .. demonym end table.insert(gloss_text_parts, main_gloss_text .. createicon(i18n['content_lang_code'], sense:getId())) for i, stmt in pairs(sense:getAllStatements('P8394')) do -- টিপ্পনীর উদ্ধৃতি local gloss_quote = termSpan({stmt.mainsnak.datavalue.value.text, stmt.mainsnak.datavalue.value.language}) if stmt.references[1] then local got_reference = getReference ( stmt.references[1].hash, stmt.references[1] ) gloss_quote = '"' .. gloss_quote .. '" ' .. got_reference[2] end table.insert(references_seen, stmt.references[1].hash) table.insert(gloss_text_parts, frame:extensionTag('ref', gloss_quote)) end for i, stmt in pairs(sense:getAllStatements('P1343')) do -- বর্ণিত উৎস -- TODO: do away with making fake reference objects local fake_reference = { ['snaks'] = {} } fake_reference.snaks['P248'] = { [1] = stmt.mainsnak } qualifiers_order = stmt['qualifiers-order'] if qualifiers_order then for i, k in ipairs(qualifiers_order) do fake_reference.snaks[k] = stmt.qualifiers[k] end end fake_reference.hash = mw.hash.hashValue('sha3-512', serializeTable(fake_reference)) table.insert(references_seen, fake_reference.hash) local got_reference = getReference(fake_reference.hash, fake_reference) if got_reference[1] == nil then table.insert(gloss_text_parts, frame:extensionTag('ref', got_reference[2], {name = fake_reference.hash})) else table.insert(gloss_text_parts, frame:extensionTag{name = 'ref', content='', args = {name = got_reference[1]}}) end end local first_sense_image = '' local sense_images = sense:getAllStatements('P18') if next(sense_images) then first_sense_image = sense_images[1].mainsnak.datavalue.value end if first_sense_image ~= '' then table.insert(gloss_text_parts, '[[চিত্র:' .. first_sense_image .. "|thumb|'''" .. getLemmata(current_lexeme) .. "'''—" .. main_gloss_text .. ']]') end local idlinks = getExternalLinks(sense) if #idlinks > 0 then local idlinktext = '<small>(' for _, idlink in pairs(idlinks) do idlinktext = idlinktext .. idlink .. '\n' end idlinktext = idlinktext .. ')</small>' table.insert(gloss_text_parts, idlinktext) table.insert(idlinkset, idlinks) end local externallinks = getArticleLinks(frame, sense) if externallinks ~= '' then table.insert(gloss_text_parts, externallinks) end local new_notes = {} local sense_keys = { sense:getId(), string.sub(sense:getId(), string.find(sense:getId(), '-')+1) } for _, v in ipairs(sense_keys) do if args[v] then table.insert(new_notes, args[v]) end end if #new_notes > 0 then for _, v in ipairs(new_notes) do if i == 1 then table.insert(gloss_text_parts, '<br/>' .. v) else table.insert(gloss_text_parts, v) end end end local examples, references_seen = unpack(getExamples( current_lexeme, sense:getId(), references_seen )) local gloss_text = table.concat(gloss_text_parts, '\n') meanings:tag('li'):wikitext(gloss_text):wikitext(examples) end return {meanings, references_seen, idlinkset} end local function getPronunciationBaseForm( lang_name, lex_cat) local base_form = nil -- (!) অন্য ভাষার শব্দের যদি অন্য রকম মূল ফর্ম থাকে সেগুলো এখানে নতুন if বিবৃতি দিয়ে যোগ করা যায়। if lang_name == 'বাংলা' then if lex_cat == 'Q1084' then -- বিশেষ্য base_form = formWithSingleGrammaticalFeature( 'Q131105' ) -- কর্তৃকারক elseif lex_cat == 'Q24905' then -- ক্রিয়া base_form = formWithSingleGrammaticalFeature( 'Q1350145' ) -- ক্রিয়া বিশেষ্য end end if base_form == nil then for i, form in pairs(forms) do base_form = form break end end return base_form end local function getCombines( current_lexeme, frame ) local combines = '' local index_mappings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P5238')) do if stmt.qualifiers and stmt.qualifiers['P1545'] then -- ক্রম local current_index = tonumber(stmt.qualifiers['P1545'][1].datavalue.value) index_mappings[current_index] = stmt end end if #index_mappings ~= 0 then for i, stmt in ipairs(index_mappings) do if stmt.mainsnak.datavalue then local part_lexeme_id = stmt.mainsnak.datavalue.value.id local part_lexeme = getEntity(part_lexeme_id) local current_substring = getLinkedLemmata(part_lexeme) local part_etymology = getEtymology(part_lexeme, frame, 'partial') if part_etymology ~= '' and part_etymology then current_substring = current_substring .. ' (← ' .. part_etymology .. ')' end if combines == '' then combines = current_substring else -- @TODO: This shoukd use the 'affix' and 'compound' templates instead. combines = combines .. ' + ' .. current_substring end end end end return combines end function getRoots( current_lexeme ) local stmts = current_lexeme:getAllStatements('P5920') if #stmts == 0 then return '', '', '' end local root_lexeme = getEntity(stmts[1].mainsnak.datavalue.value.id) return getLexemeLanguageCode(root_lexeme), '√' .. getLinkedLemmata(root_lexeme), root_lexeme:getLemma('ar') end function getEtymology( current_lexeme, frame, mode ) -- @TODO: Fix the etymology chains that are not possible to render local etymology = '' local current_combines = getCombines(current_lexeme, frame) local root_lang, current_roots, root_str = getRoots(current_lexeme) if mode ~= 'partial' and root_str then --frame:expandTemplate{title=i18n['template_root'], args={lang_code, root_lang, root_str}} end local stmts = current_lexeme:getAllStatements('P5191') local new_etymology_string if #stmts == 0 then if current_roots ~= '' and current_combines ~= '' and current_roots then return current_roots .. '<br/>(' .. current_combines .. ')' elseif current_roots ~= '' then if lang_code == 'ar' and mode ~= 'partial' and root_str ~= matched_lemma then return frame:expandTemplate{title=i18n['template_ar-rootbox'], args={root_str}} else return current_roots end else return current_combines end end local origin_lexeme_string for i, stmt in pairs(stmts) do local origin_lexeme_dv = stmt.mainsnak.datavalue -- If this is nil, the origin lexeme is not known. if origin_lexeme_dv then local origin_lexeme = getEntity(origin_lexeme_dv.value.id) local origin_lexeme_lang = getLabel(origin_lexeme:getLanguage()) local sitelink = i18n.wplink(origin_lexeme:getLanguage(), origin_lexeme_lang, wb) if sitelink ~= '' then origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. sitelink .. ')' else origin_lexeme_string = getLinkedLemmata(origin_lexeme) .. ' (' .. origin_lexeme_lang .. ')' end if stmt.qualifiers and stmt.qualifiers['P5886'] then local mode_of_derivation = stmt.qualifiers['P5886'][1].datavalue.value.id if mode_of_derivation == 'Q1345001' then -- @TODO: Add support for showing gender origin_lexeme_string = frame:expandTemplate{title=i18n['template_borrowed'], args={lang_code, getLexemeLanguageCode(origin_lexeme), getLemmata(origin_lexeme), pos=getLabel(lex_cat)}} .. ' ' .. i18n['etymology_borrowing'] elseif mode_of_derivation == 'Q845079' then origin_lexeme_string = ustring.gsub(i18n['etymology_learned_borrowing'], '$1', origin_lexeme_string) elseif mode_of_derivation == 'Q56611986' then origin_lexeme_string = frame:expandTemplate{title=i18n['template_inherited'], args={lang_code, getLexemeLanguageCode(origin_lexeme), getLemmata(origin_lexeme), pos=getLabel(lex_cat)}} .. ' ' .. i18n['etymology_inheritance'] elseif mode_of_derivation == 'Q189743' then origin_lexeme_string = frame:expandTemplate{title=i18n['template_ellipsis'], args={lang_code, getLemmata(origin_lexeme)}} .. ' ' .. i18n['etymology_ellipsis'] end end local origin_origin = getEtymology(origin_lexeme, frame) if origin_origin ~= '' and origin_origin then new_etymology_string = origin_lexeme_string .. ' ← ' .. origin_origin else new_etymology_string = origin_lexeme_string end end if etymology == '' then etymology = new_etymology_string elseif origin_lexeme_string and etymology then etymology = etymology .. ' ' .. origin_lexeme_string elseif origin_lexeme_string and etymology == nil then etymology = origin_lexeme_string end end if current_roots ~= '' and etymology and current_roots then etymology = etymology .. ' ' .. current_roots elseif current_roots ~= '' and etymology == nil then etymology = current_roots end if current_combines ~= '' and etymology then etymology = etymology .. '<br/>(' .. current_combines .. ')' end return etymology end local function pronunciationBlock(block, value) return '* ' .. i18n['text_' .. block] .. ' ' .. value end local function getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pronunciations = {} local base_form = getPronunciationBaseForm(lang_name, lex_cat ) if base_form then for i, stmt in pairs(base_form:getAllStatements('P443')) do -- উচ্চারণের অডিও local pronunciation_file = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন local qual = stmt.qualifiers[property_id] if qual then for _, qual in pairs(qual) do local stmt_value = qual.datavalue.value.id table.insert(specifiers, getLabel(stmt_value)) end end end end if #specifiers > 0 then specifier_text = table.concat(specifiers, "'', ''") end local audio_text if specifier_text ~= '' then audio_text = i18n['text_audio'] .. ' (' .. specifier_text .. ')' else audio_text = i18n['text_audio'] end table.insert(pronunciations, '* ' .. frame:expandTemplate{ title= i18n['template_audio'], args = {lang_name, pronunciation_file, audio_text} }) end local ipa_transcription = base_form:getAllStatements('P898') -- - আধ্বব প্রতিলিপিকরণ local iso15919_transcription = getOneStringForProperty(base_form, 'P5825') -- আইএসও ১৫৯১৯ প্রতিলিপিকরণ local itrans = getOneStringForProperty(base_form, 'P8881') -- ITRANS local iast = getOneStringForProperty(base_form, 'P7581') -- আইএএসটি প্রতিলিপিকরণ local xsampa = getOneStringForProperty(base_form, 'P2859') -- @TODO: অডিও ও প্রতিলিপিকরণ দুটোই থাকলে সেই ক্ষেত্রে একটার ঠিক পরেই আরেকটা দেখানো উচিত if #ipa_transcription ~= 0 then for i, stmt in pairs(ipa_transcription) do local ipa_text = stmt.mainsnak.datavalue.value local specifier_text = '' local specifiers = {} if stmt.qualifiers then for k, property_id in ipairs({'P5237'}) do -- উচ্চারণের ধরন for l, qual in ipairs(stmt.qualifiers[property_id]) do table.insert(specifiers, getLabel( qual.datavalue.value.id )) end end end if #specifiers > 0 then specifier_text = "(''" .. table.concat(specifiers, "'', ''") .. "'') " end local syllable_count if lang_code == 'tr' then syllable_count = i18n['text_syllable_count'] .. ' ' .. callWikifunctionsFunction('Z10029|' .. ipa_text, frame) else syllable_count = i18n['text_syllable_count'] .. ' ' .. callWikifunctionsFunction('Z30837|' .. ipa_text, frame) end table.insert(pronunciations, '* ' .. specifier_text .. frame:expandTemplate{ title= i18n['template_ipa'], args = {lang_name, ipa_text} } .. '\n* ' .. syllable_count) end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. elseif lang_code == 'bn' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='bn-IPA', }) elseif lang_code == 'ar' then local lemma = current_lexeme:getLemma('ar') table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ar-IPA', args={lemma} }) elseif lang_code == 'fax' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fax-pron', }) elseif lang_code == 'fi' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='fi-IPA', }) elseif lang_code == 'ko' then table.insert(pronunciations, '* ' .. frame:expandTemplate{ title='ko-IPA', }) end if iso15919_transcription then table.insert(pronunciations, pronunciationBlock('iso15919', iso15919_transcription)) end if itrans then table.insert(pronunciations, pronunciationBlock('itrans', itrans)) end if iast then table.insert(pronunciations, pronunciationBlock('iast', iast)) end if xsampa then table.insert(pronunciations, pronunciationBlock('xsampa', xsampa)) end end -- {{আধ্বব|en|/ˈɪntəvjuː/}} return table.concat(pronunciations, '\n') end local function getAlternativeSpellings( current_lexeme ) local alt_spellings = {} for i, stmt in pairs(current_lexeme:getAllStatements('P11577')) do -- বিকল্প বানান if stmt.mainsnak.datavalue then table.insert(alt_spellings, '* ' .. getLinkedLemmata(getEntity(stmt.mainsnak.datavalue.value.id))) end end return table.concat(alt_spellings, '\n') end local function heading_level(text, level) local heading_delimiter = string.rep('=', level) return heading_delimiter .. ' ' .. text .. ' ' .. heading_delimiter end function get_any_notes(sections, args, keys) local notes = {} for i, v in ipairs(keys) do if args[v] then table.insert(notes, args[v]) end end return notes end function add_specific_notes(sections, notes) for i, v in ipairs(notes) do table.insert(sections, v) end end local function add_any_notes(sections, args, keys, heading) for i, v in ipairs(keys) do if args[v] then if heading then table.insert(sections, heading) table.insert(sections, args[v]) end end end end local function getMatchingLemmaForPageTitle(lexeme, title) local lemmas = lexeme:getLemmas() local matched_lemma for _, lemma_entry in ipairs(lemmas) do local lemma = lemma_entry[1] if lemma == title then matched_lemma = lemma break end end if matched_lemma == nil then if lang_code == 'ar' then -- Arabic lemmas do not match the title of the entry because those are written with different characters stripped out on Wiktionary. matched_lemma = lexeme:getLemma('ar') elseif lang_code == 'rhg' then matched_lemma = lexeme:getLemma('rhg-arab') end end return matched_lemma end local function buildLanguageAgnosticInflectionTable() local has_image = false local form_images = {} for i, form in ipairs(forms) do local form_image = form:getAllStatements('P7407') if next(form_image) then form_images[i] = form_image[1].mainsnak.datavalue.value has_image = true end end local table_class = "wikitable mw-collapsible sortable" if not has_image then table_class = table_class .. " mw-collapsed" end local text = "{| class='" .. table_class .. "' style='border:solid 1px rgb(80%,80%,100%); text-align:center;'\n" text = text .. "|+ " .. i18n['heading_inflection_table'] .. "\n" text = text .. "|- \n" text = text .. "! " .. i18n['heading_form'] .. " !! " .. i18n['heading_grammatical_features'] if has_image then text = text .. " !! " .. (i18n['heading_image']) end text = text .. " \n" for i, form in ipairs(forms) do local rep = form:getRepresentations() local feat = form:getGrammaticalFeatures() local rep_text = "" for j, r in pairs(rep) do if rep_text == "" then rep_text = r[1] else rep_text = rep_text .. " / " .. r[1] end end local feat_text = "" if feat then for j, f in ipairs(feat) do local label = getLabel(f) or f if feat_text == "" then feat_text = label else feat_text = feat_text .. ", " .. label end end end text = text .. "|-\n" text = text .. "| " .. (rep_text ~= "" and rep_text or "—") text = text .. " || " .. (feat_text ~= "" and feat_text or "—") if has_image then local image_cell = "—" if form_images[i] then image_cell = "[[চিত্র:" .. form_images[i] .. "|50px]]" end text = text .. " || " .. image_cell end text = text .. "\n" end text = text .. "|}" return text end function p.all( frame ) local args = getArgs(frame) local lexeme_id = args[1] local current_lexeme = getEntity(lexeme_id) local current_language = current_lexeme:getLanguage() local senses = current_lexeme:getSenses() local add_heading = true forms = current_lexeme:getForms() if args[2] then local val = mw.text.trim(tostring(args[2])) if val == "false" or val == "0" or val == "না" then add_heading = false end end local references_seen = {} local sections = {} local title = mw.title.getCurrentTitle().text local lang_category = getLanguageForCategories(current_language, title) local lang_name = getLabel(lang_category) if add_heading == true then local lang_heading = "== " .. lang_name .. " ==" table.insert(sections, lang_heading) end lang_code = getLexemeLanguageCode(current_lexeme) matched_lemma = getMatchingLemmaForPageTitle(current_lexeme, title) lex_cat = current_lexeme:getLexicalCategory() local cat = i18n.lang_category(getLabel(lex_cat), lang_name) local lex_cat_template if cat then table.insert(sections, '===' .. getLabel(lex_cat) .. cat .. frame:expandTemplate{ title = i18n['template_anchor'], args = { lexeme_id } } .. '===') table.insert(sections, frame:expandTemplate{ title= i18n['template_lexeme'], args = {lexeme_id} }) add_any_notes(sections, args, i18n['manual_category']) local etymology = getEtymology( current_lexeme, frame ) local ety_added if etymology ~= '' and etymology then table.insert(sections, heading_level(i18n['heading_etymology'], 4)) table.insert(sections, tostring(etymology)) ety_added = true end if ety_added then add_any_notes(sections, args, i18n['manual_etymology']) else add_any_notes(sections, args, i18n['manual_etymology'], heading_level(i18n['heading_etymology'], 4)) end local pronunciation = getPronunciation( frame, current_lexeme, lang_name, lex_cat ) local pron_added if pronunciation ~= '' then table.insert(sections, heading_level(i18n['heading_pronunciation'], 4)) table.insert(sections, tostring(pronunciation)) end if pron_added then add_any_notes(sections, args, i18n['manual_pronunciation']) else add_any_notes(sections, args, i18n['manual_pronunciation'], heading_level(i18n['heading_pronunciation'], 4)) end local alternative_spellings = getAlternativeSpellings( current_lexeme ) if alternative_spellings ~= '' then table.insert(sections, heading_level(i18n['heading_alternative_spellings'], 4)) table.insert(sections, alternative_spellings) end if lang_code and lang_code ~= 'ksy' and lang_code ~= 'rkt' then -- Skip for Kharia Thar, Rangpuri if lex_cat == 'Q34698' then -- বিশেষণ if lang_code == 'en' or lang_code == 'bn' then if #forms <= 1 then lex_cat_template = frame:expandTemplate{title= lang_code .. '-বিশেষণ'} end else lex_cat_template = safeExpand(frame, lang_code .. '-adj') if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. '-বিশেষণ') end end elseif lex_cat == 'Q1084' then -- @TODO: Also check for plural forms local gender local stmts = current_lexeme:getAllStatements('P5185') -- ব্যাকরণগত লিঙ্গ if #stmts ~= 0 then if #stmts == 1 then local gender_qid = stmts[1].mainsnak.datavalue.value.id if gender_qid == 'Q499327' then gender = 'm' elseif gender_qid == 'Q1775415' then gender = 'f' elseif gender_qid == 'Q1775461' then gender = 'n' elseif gender_qid == 'Q1305037' then gender = 'c' end end else for i, stmt in pairs(stmts) do local qid = stmts[i].mainsnak.datavalue.value.id if qid == 'Q499327' then gender = gender .. 'm' elseif qid == 'Q1775415' then gender = gender .. 'f' end end end -- The following checks are ordered based on which one is expected to be true in a higher number of cases. if current_language == 'Q13955' then if matched_lemma then lex_cat_template = safeExpand(frame, {title='ar-noun', args={matched_lemma,gender}}) else lex_cat_template = frame:expandTemplate{title='ar-noun', args={nil,gender}} end elseif current_language == 'Q29919' then lex_cat_template = frame:expandTemplate{title='arz-noun', args={g=gender}} elseif current_language == 'Q397' then if matched_lemma then lex_cat_template = frame:expandTemplate{title='la-noun', args={matched_lemma,g=gender}} end elseif current_language == 'Q11059' then lex_cat_template = frame:expandTemplate{title='sa-noun', args={g=gender}} elseif current_language ~= 'Q1860' then -- These templates require the gender to be passed as the 1st argument. lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix'], {gender}) if not lex_cat_template then lex_cat_template = safeExpand(frame, lang_code .. i18n['noun_template_suffix_fallback'], {gender}) end end end end -- elseif lex_cat == 'Q147276' then -- lex_cat_template = safeExpand(frame, lang_code .. '-proper noun', {gender}) -- if not lex_cat_template then -- lex_cat_template = safeExpand(frame, lang_code .. '-নামবাচক বিশেষ্য', {gender}) -- end end if lex_cat_template then table.insert(sections, lex_cat_template) else if matched_lemma then table.insert(sections, heading_level(matched_lemma, 4)) else table.insert(sections, i18n.tocatlink(i18n['category_no_matching_lemma'])) end end local meanings, references_seen, sense_extlinks = unpack(getMeanings( frame, args, current_lexeme, senses, references_seen, lang_name)) table.insert(sections, tostring(meanings)) add_any_notes(sections, args, i18n['manual_meaning']) local instance_of = current_lexeme:getAllStatements('P31') -- সত্ত্বার ধরন if #instance_of ~= 0 then local instance_of_entity = instance_of[1].mainsnak.datavalue.value.id if instance_of_entity == 'Q40437546' or instance_of_entity == 'Q120831827' or instance_of_entity == 'Q120717979' or instance_of_entity == 'Q124476844' then -- @TODO: generalise this so all types of roots are shown table.insert(sections, i18n['text_instance_of'] .. ' ' .. getLabel(instance_of_entity)) elseif instance_of_entity == 'Q376431' then -- বর্ণের নাম table.insert(sections, i18n.tocatlink(lang_code .. ':রং')) end end local translations = getTranslations(frame, senses) if translations then table.insert(sections, translations) end -- (!) বিশেষ ভাষার বিভক্তির সারণি যদি থাকে সেগুলো এখানে নতুন if বিবৃতি যোগ করা যায়। if next(forms) then if current_language == 'Q9610' then -- বাংলা if lex_cat == 'Q24905' then local conjTable = require('মডিউল:আভিধানিক উপাত্ত/Q9610').getConjTable(frame, forms) table.insert(sections, conjTable) elseif lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z33243|' .. lexeme_id .. '|', frame)) elseif lex_cat == 'Q34698' then if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end --elseif current_language == 'Q13955' then -- আরবি -- if lex_cat == 'Q1084' then -- table.insert(sections, frame:expandTemplate{title='ar-decl-noun', args={lemma}}) -- end elseif current_language == 'Q188' then -- জার্মান if lex_cat == 'Q1084' then table.insert(sections, callWikifunctionsFunction('Z28602|' .. lexeme_id .. '|', frame)) end else if #forms > 1 then table.insert(sections, buildLanguageAgnosticInflectionTable()) end end end if lex_cat == 'Q134830' then table.insert(sections, frame:expandTemplate{title='prefixsee', args={lang_code}}) elseif lex_cat == 'Q102047' then table.insert(sections, frame:expandTemplate{title='suffixsee', args={lang_code}}) -- elseif lex_cat == 'Q111029' then -- table.insert(sections, frame:expandTemplate{title='rootsee', args={'+', lang_code, matched_lemma}}) end local reference_notes = get_any_notes(sections, args, i18n['manual_reference']) if #references_seen > 0 or #reference_notes > 0 then table.insert(sections, heading_level(i18n['heading_references'], 4)) table.insert(sections, frame:extensionTag('references')) add_specific_notes(sections, reference_notes) end local external_link_table = getExternalLinks ( current_lexeme ) if #external_link_table > 0 then local external_links = '* ' .. table.concat(external_link_table, '\n* ') table.insert(sections, heading_level(i18n['heading_external_links'], 4)) table.insert(sections, external_links) end add_any_notes(sections, args, i18n['manual_external_link']) if #references_seen == 0 and #reference_notes == 0 and sense_extlinks and #sense_extlinks == 0 and #external_link_table == 0 and #get_any_notes(sections, args, i18n['manual_external_link']) == 0 then table.insert(sections, i18n.rfref_category(lang_name)) end return table.concat(sections,"\n\n") end return p hkoqgn7jqp0as6wc4v7gfwb311zxxjb ব্যবহারকারী:Redmin/খেলাঘর 2 66884 510490 510090 2026-06-07T15:32:25Z Redmin 6857 + 510490 wikitext text/x-wiki [[:বিষয়শ্রেণী:IPA pronunciations with invalid IPA characters]] [[চলা]] P9295, P5186, P5187, P11053, P11054, P9488, P5972, P9971, P6072 with P5831, P9970, P2288, P8881, P1552, P5975 (needs T185313), P8471, P5976, P10822, P282, P5978, P6719, P7219, P7220, P7221, P10339, P10927, P12027, P12028, P12410, P13045, P7481, P13504, P5548, P5401, P5426, P2440, P9021, P10822, P1249, P7243 ([[উএক্ষ]])<br /> Z29940, Z17866, Z32787, Z32793, Z11795, Z31772, Z33644, Z30837 (templates), Z33814, Z32347, Z32340, Z32343, Z26333 Combine Z22853 and Z23489 to make a translation table function<br /> Etymology failing to render: [[আদর্শ]] [[d:Lexeme:L3441]], [[throw]], [[গোলাকার]], [[:বিষয়শ্রেণী:উইকিউপাত্ত আভিধানিক উপাত্ত থেকে আমদানিকৃত]] Pronunciation of forms [[d:User:Rua/Wikidata for Wiktionarians]] [[-গুলি]] =p.all( mw.getCurrentFrame():newChild{ title="Module: আভিধানিক উপাত্ত", args={"L143"} } ) {{লে|L1422918}} {{#invoke:আভিধানিক উপাত্ত/sandbox|all|L34813}} {{#function:Z28602|L300026|}} {{#function:Z27861|<div style="text-align: center;">Test</div>}} {{#function:Z28602|L1425972|Z1011}} {{#function:Z28602|L14259|Z1011}} {{#function:Z30837|/ɡolakaɾ/}} {{#function:Z33837|L511-S1}} {{#function:Z33243|L348189|}} Copied from [[জাড়]]: {{লে|L1566713|etymology={{inh+|bn|sa|जाड्य|জাড্য}}।|meaning={{tlb|bn|chiefly|বঙ্গ|and|বরেন্দ্র}}|উচ্চারণ=* {{IPA|bn|/dʒaɽ/}} *: {{a|বঙ্গ}} {{IPA|bn|/zaɾ/}} *: {{a|বরেন্দ্র}} {{IPA|bn|/d͡zaɾ/}}}} #: {{ux|bn|বাহিরত মেলা '''জাড়''' পড়িছে|}} ===বিশেষণ=== {{bn-adj}} {{tlb|bn|বরেন্দ্র}} # [[ঠান্ডা]] #: {{ux|bn|হামাক এনা পিয়ালা '''জাড়''' পানি দিবার পারবিন?}} ===তথ্যসূত্র=== * অভিগম্য অভিধান, [https://web.archive.org/web/20221009005533/https://accessibledictionary.gov.bd/bengali-to-bengali.php?q=%E0%A6%9C%E0%A6%BE%E0%A6%A1%E0%A6%BC] বাংলাদেশ সরকার * অভিগম্য অভিধান, [https://accessibledictionary.gov.bd/bengali-to-english/?q=জাড়] বাংলাদেশ সরকার [[বিষয়শ্রেণী:বরেন্দ্রী বাংলা]] obsfougff353zbpfyoi633xd2wkmb0f 510491 510490 2026-06-07T15:33:37Z Redmin 6857 510491 wikitext text/x-wiki [[:বিষয়শ্রেণী:IPA pronunciations with invalid IPA characters]] [[চলা]] P9295, P5186, P5187, P11053, P11054, P9488, P5972, P9971, P6072 with P5831, P9970, P2288, P8881, P1552, P5975 (needs T185313), P8471, P5976, P10822, P282, P5978, P6719, P7219, P7220, P7221, P10339, P10927, P12027, P12028, P12410, P13045, P7481, P13504, P5548, P5401, P5426, P2440, P9021, P10822, P1249, P7243 ([[উএক্ষ]])<br /> Z29940, Z17866, Z32787, Z32793, Z11795, Z31772, Z33644, Z30837 (templates), Z33814, Z32347, Z32340, Z32343, Z26333 Combine Z22853 and Z23489 to make a translation table function<br /> Etymology failing to render: [[আদর্শ]] [[d:Lexeme:L3441]], [[throw]], [[গোলাকার]], [[:বিষয়শ্রেণী:উইকিউপাত্ত আভিধানিক উপাত্ত থেকে আমদানিকৃত]] Pronunciation of forms [[d:User:Rua/Wikidata for Wiktionarians]] [[-গুলি]] =p.all( mw.getCurrentFrame():newChild{ title="Module: আভিধানিক উপাত্ত", args={"L143"} } ) {{লে|L1422918}} {{#invoke:আভিধানিক উপাত্ত/sandbox|all|L34813}} {{#function:Z28602|L300026|}} {{#function:Z27861|<div style="text-align: center;">Test</div>}} {{#function:Z28602|L1425972|Z1011}} {{#function:Z28602|L14259|Z1011}} {{#function:Z30837|/ɡolakaɾ/}} {{#function:Z33837|L511-S1}} {{#function:Z33243|L348189|}} ed0vmtl3ukks0cr4knt0vjh68hncfrv إسلام 0 72171 510468 349487 2026-06-07T12:59:00Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L479970-এর সাথে সংযোগ তৈরি করছি 510468 wikitext text/x-wiki {{আরও দেখুন|اسلام}} =={{langname|ar}}== {{উইকিপিডিয়া|lang=ar}} ===ব্যুৎপত্তি=== {{ar-verbal noun}} of {{m|ar|أَسْلَمَ}}, from the root {{ar-root|س|ل|م}}. ===উচ্চারণ=== * {{ar-IPA|إِسْلَام}} ===বিশেষ্য=== {{ar-noun|إِسْلَام|m}} # {{ar-verbal noun of|أَسْلَمَ|form=IV}} # [[submission]], [[resignation]], [[reconciliation]] # religious submission to God, [[piety]] #: {{uxi|ar|الْإِسْلَام|ইসলাম (religion of Muslims)}} ====Declension==== {{ar-decl-noun|إِسْلَام}} ====উদ্ভূত শব্দ==== * {{l|ar|الْإِسْلَام}} ====উত্তরসূরি==== * {{উত্তরসূরী|aa|isláam|bor=1}} * {{উত্তরসূরী|af|ইসলাম|bor=1}} * {{উত্তরসূরী|sq|ইসলাম|bor=1}} * {{উত্তরসূরী|ba|ислам|bor=1}} * {{উত্তরসূরী|en|ইসলাম|bor=1}} * {{উত্তরসূরী|fa-cls|اسلام|tr=islām|bor=1}} ** {{উত্তরসূরী|prs|اسلام|tr=islām}} ** {{উত্তরসূরী|fa-ira|اسلام|tr=eslâm}} ** {{উত্তরসূরী|tg|Ислом}} ** {{উত্তরসূরী|bn|ইসলাম|bor=1}} ** {{উত্তরসূরী|ps|اسلام|tr=islām|sc=ps-Arab|bor=1}} ** {{উত্তরসূরী|ur|اسلام|tr=islām|bor=1}} * {{উত্তরসূরী|pl|islam|bor=1}} * {{উত্তরসূরী|bor=1|pt|islã|islão|islame}} ===নামবাচক বিশেষ্য=== {{ar-proper noun|إِسْلَام|m}} # {{প্রদত্ত নাম|ar|পুরুষ}} ====Declension==== {{ar-decl-noun|إِسْلَامٌ|state=ind-def}} ===তথ্যসূত্র=== * {{R:ar:Wehr-4|سلم}} {{topicsar|ইসলাম}} ==দক্ষিণ Levantine আরবি== {{ajp-root|س ل م}} ===বিকল্প বানান=== * {{alter|ajp|أسلام|tr=ʔaslām|t=Muslims}} ===ব্যুৎপত্তি=== {{lbor|ajp|ar|إِسْلَام}}. ===উচ্চারণ=== * {{ajp-IPA|ʔislām<p:ʔisˈlæːm>}} * {{অডিও|ajp|LL-Q55633582 (ajp)-Khalil.rantissi-إسلام.wav|অডিও (al-Lidd)}} ===বিশেষ্য=== {{ajp-noun|g=m|tr=ʔislām}} # [[ইসলাম]] # [[Muslim]]s {{q|collective}} #: {{উদা|ajp|[[إسلام|الإسلام]] [[صام|بصومو]] [[في]] [[شهر]] [[رمضان]].|tr='''il-ʔislām''' biṣūmu fi šahr ramaḍān.|t='''Muslims''' fast in the month of Ramadan.}} ====আরো দেখুন==== * {{l|ajp|مسلم|tr=muslim|t=Muslim}} {{c|ajp|ইসলাম}} {{লে|L479970}} r597jnr2k74wvobzaqhjs2nzmbrxlw1 Γιώργος 0 75616 510499 461149 2026-06-08T00:06:06Z Redmin 6857 /* নামবাচক বিশেষ্য */ 510499 wikitext text/x-wiki ==গ্রিক== ===উচ্চারণ=== * {{আধ্বব|el|/ˈʝoɾ.ɣos/}} * {{যোজকচিহ্নের ব্যবহার|el|Γιώρ|γος}} ===নামবাচক বিশেষ্য=== {{el-noun-proper|m|Γιώργηδες}} # {{lb|el|সাধারণ|but standard}} {{form of|el|প্রচলিত form|Γεώργιος}} {{qualifier|[[George]]}}, {{প্রদত্ত নাম|el|পুরুষ}} ====Declension==== {{el-n-gen|Γιώργος|Γιώργου|Γιώργο|Γιώργο|Γιώργηδες|Γιώργηδων|Γιώργηδες|Γιώργηδες}} ====উদ্ভূত শব্দ==== * {{l|el|Γιώργαινα|g=f|t=the wife of Γιώργος}} * {{l|el|Γιωργάκης|g=m|pos=diminutive}} * {{l|el|Γιωργάρα|g=f|pos=augmentative, addressing a পুরুষ}} * {{l|el|Γιωργία|g=f}} ====সম্পর্কিত পদ==== {{see|el|Γεώργιος|g=m|t=George}} {{catlangname|el|পুরুষবাচক মূল নামs}} ng93nvwzdcyyxa7kpa5smsc0nmj91lv সৈকত 0 116912 510484 499150 2026-06-07T13:04:15Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1567601-এর সাথে সংযোগ তৈরি করছি 510484 wikitext text/x-wiki {{লে|L1567601}} === বিশেষ্য === {{bn-বিশেষ্য}} # সমুদ্র [[নদী]] প্রভৃতির বালুকাময় [[বিস্তৃত]] তীরভূমি, [[পুলিন]], [[তট]]। 50v51cixert9p8rucoko7psx2bx4y6g 510485 510484 2026-06-07T13:36:05Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1567600-এর সাথে সংযোগ তৈরি করছি 510485 wikitext text/x-wiki {{লে|L1567601}} {{লে|L1567600|না|meaning=# সমুদ্র [[নদী]] প্রভৃতির বালুকাময় [[বিস্তৃত]] তীরভূমি।}} o4pqiu26ltw9r3b56tonpnzrcgsxbk1 মডিউল:languages/data/3/r 828 123320 510492 323715 2026-06-07T15:36:36Z Redmin 6857 +rwr 510492 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared local m = {} m["raa"] = { "Dungmali", 56871, "sit-kic", } m["rab"] = { "Chamling", 3436664, "sit-kic", "Deva", } m["rac"] = { "Rasawa", 56443, "paa-lkp", "Latn", } m["rad"] = { "Rade", 3429088, "cmc", "Latn", } m["raf"] = { "Western Meohang", 17442461, "sit-kie", } m["rag"] = { "Logooli", 6667767, "bnt-lok", "Latn", } m["rah"] = { "Rabha", 7278686, "tbq-bdg", "Beng, Latn", } m["rai"] = { "Ramoaaina", 3418509, "poz-ocw", "Latn", } m["rak"] = { "Tulu-Bohuai", 2908807, "poz-aay", "Latn", } m["ral"] = { "Ralte", 7288392, "tbq-kuk", "Latn", } m["ram"] = { "Canela", 2936334, "sai-nje", "Latn", } m["ran"] = { "Riantana", 7322169, "ngf", "Latn", } m["rao"] = { "Rao", 11732596, "paa", "Latn", } m["rap"] = { "Rapa Nui", 36746, "poz-pep", "Latn", } m["raq"] = { "Saam", 7395644, "sit-kic", } m["rar"] = { "Rarotongan", 36745, "poz-pep", "Latn", } m["ras"] = { "Tegali", 36522, "nic-ras", "Latn", } m["rat"] = { "Razajerdi", 7299461, "xme-ttc", ancestors = "xme-ttc-eas", } m["rau"] = { "Raute", 7296262, "sit-gma", "Deva, Latn", } m["rav"] = { "Sampang", 3449115, "sit-kic", } m["raw"] = { "Rawang", 542564, "sit-nng", "Latn", sort_key = {remove_diacritics = c.grave .. c.acute .. c.macron}, } m["rax"] = { "Rang", 3913345, "alv-mum", } m["ray"] = { "Rapa", 36417, "poz-pep", } m["raz"] = { "Rahambuu", 3417555, "poz-btk", } m["rbb"] = { "Rumai Palaung", 12953797, "mkh-pal", "Mymr", } m["rbk"] = { "Northern Bontoc", 63311016, "phi", "Latn", } m["rbl"] = { "Miraya Bikol", 18664557, "phi", "Latn", } m["rcf"] = { "Réunion Creole French", 13198, "crp", "Latn", ancestors = "fr", sort_key = s["roa-oil-sortkey"], } m["rdb"] = { "Rudbari", 12953072, "xme", ancestors = "xme-mid", } m["rea"] = { "Rerau", 7314883, "ngf-mad", } m["reb"] = { "Rembong", 7311570, "poz-cet", "Latn", } m["ree"] = { "Rejang Kayan", 3423957, "poz", "Latn", } m["reg"] = { "Kara (Tanzania)", 6367567, "bnt-haj", } m["rei"] = { "Reli", 7310982, } m["rej"] = { "Rejang", 3056339, "poz", "Rjng, Latn", } m["rel"] = { "Rendille", 3447297, "cus-som", "Latn", } m["rem"] = { "Remo", 3501825, "sai-pan", "Latn", } m["ren"] = { "Rengao", 6583692, "mkh", } m["rer"] = { "Rer Bare", 12953857, } m["res"] = { "Reshe", 36258, "nic-knj", } m["ret"] = { "Retta", 7317113, "ngf", } m["rey"] = { "Reyesano", 3111857, "sai-tac", "Latn", } m["rga"] = { "Roria", 7366825, "poz-vnn", "Latn", } m["rge"] = { "Romano-Greek", 3915435, "qfa-mix", "Latn", -- and/or Grek? ancestors = "rom, el", } m["rgk"] = { "Rangkas", 7292645, "sit-alm", } m["rgn"] = { "Romagnol", 1641543, "roa-emr", "Latn", wikimedia_codes = "eml", } m["rgr"] = { "Resígaro", 3450504, "awd", "Latn", } m["rgs"] = { "Southern Roglai", 12953069, } m["rgu"] = { "Ringgou", 7334886, "poz-tim", } m["rhg"] = { "Rohingya", 3241177, "inc-bas", "Rohg, Arab, Mymr, Latn, Beng", ancestors = "inc-obn", translit = { Rohg = "Rohg-translit", }, } m["rhp"] = { "Yahang", 8046792, "qfa-tor", } m["ria"] = { "Reang", 12953063, "tbq-bdg", } m["rif"] = { "Tarifit", 34174, "ber", "Latn, Tfng, Arab", translit = { Tfng = "Tfng-translit" }, standardChars = { Latn = "AaBbCcDdḌḍEeƐɛFfGgƔɣĞğHhḤḥIiJjKkLlMmNnPpQqRrŘřSsṢṣTtṬṭUuWwXxYyZzẒẓʷ", Tfng = "ⴰⴳⴷⴹⴼⵖⵉⴽⵍⵎⵏⵓⵔⵙⵛⵜⵡⵢⵣⵥⴱⵀⵅⵊⴳⵯⵕⵚⵟⵇⵃⵄⴻⴽⵯ", c.punc }, } m["ril"] = { "Riang", 2741615, "mkh-pal", } m["rim"] = { "Nyaturu", 7193418, "bnt-tkm", "Latn", } m["rin"] = { "Nungu", 3913350, "nic-nin", "Latn", } m["rir"] = { "Ribun", 7322443, "day", "Latn", } m["rit"] = { "Ritarungo", 7336730, "aus-yol", "Latn", } m["riu"] = { "Riung", 7336938, "poz-cet", "Latn", } m["rjg"] = { "Rajong", 7286370, "poz-cet", "Latn", } m["rji"] = { "Raji", 7286138, "sit-gma", } m["rjs"] = { "Rajbanshi", 12640969, "inc-krd", "Deva", } m["rka"] = { "Kraol", 3199593, "mkh-ban", "Khmr", -- also Latn? } m["rkb"] = { "Rikbaktsa", 2585357, "sai-mje", "Latn", } m["rkh"] = { "Rakahanga-Manihiki", 3119695, "poz-pep", "Latn", } m["rki"] = { "Rakhine", 3450749, "tbq-brm", "Mymr", ancestors = "obr", } m["rkm"] = { "Marka", 36030, "dmn-wmn", "Latn", } m["rkt"] = { "Kamta", 3241618, "inc-krd", "as-Beng, Latn", translit = "as-translit", } m["rkw"] = { "Arakwal", 34295800, "aus-pam", "Latn", } m["rma"] = { "Rama", 3444486, "cba", } m["rmb"] = { "Rembarunga", 7311553, "aus-gun", "Latn", } m["rmc"] = { "Carpathian Romani", 5045611, "inc-rom", "Latn", } m["rmd"] = { "Traveller Danish", 12640779, "qfa-mix", "Latn", ancestors = "rom, da", } m["rme"] = { "Angloromani", 541279, "qfa-mix", "Latn", ancestors = "rom, en", } m["rmf"] = { "Kalo Finnish Romani", 2093214, "inc-rom", "Latn", } m["rmg"] = { "Traveller Norwegian", 3177352, "qfa-mix", "Latn", ancestors = "rom, no", } m["rmh"] = { "Murkim", 4308074, "paa-pau", } m["rmi"] = { "Lomavren", 2495696, "qfa-mix", "Latn, Armn", ancestors = "pra-sau, hy", translit = { Armn = "Armn-translit" }, override_translit = true, } m["rmk"] = { "Romkun", 7363236, "paa", "Latn", } m["rml"] = { "Baltic Romani", 513736, "inc-rom", "Latn", } m["rmm"] = { "Roma", 4414831, } m["rmn"] = { "Balkan Romani", 1256701, "inc-rom", "Latn", } m["rmo"] = { "Sinte Romani", 1793299, "inc-rom", "Latn", } m["rmp"] = { "Rempi", 7312214, "ngf-mad", } m["rmq"] = { "Caló", 35466, "qfa-mix", "Latn", ancestors = "rom, osp, roa-opt", } m["rms"] = { "Romanian Sign Language", 7362575, "sgn", } m["rmt"] = { "Domari", 35394, "inc-cen", "Latn, Arab, Hebr", } m["rmu"] = { "Tavringer Romani", 27808413, "qfa-mix", "Latn", ancestors = "rom, sv", } m["rmv"] = { "Romanova", 1298715, "art", type = "appendix-constructed", } m["rmw"] = { "Welsh Romani", 2097387, "inc-rom", "Latn", } m["rmx"] = { "Romam", 22694600, "mkh", } m["rmy"] = { "Vlax Romani", 2669199, "inc-rom", "Latn", } m["rmz"] = { "Marma", 21403256, "tbq-brm", "Mymr", ancestors = "obr", } m["rnd"] = { "Ruwund", 7383564, "bnt-lun", } m["rng"] = { "Ronga", 2520717, "bnt-tsr", "Latn", } m["rnl"] = { "Ranglong", 7292878, } m["rnn"] = { "Roon", 7366335, "poz-hce", "Latn", } m["rnp"] = { "Rongpo", 7365672, "sit-whm", } m["rnw"] = { "Rungwa", 7379873, "bnt-mwi", "Latn", } m["rob"] = { "Tae'", 12473476, "poz-ssw", "Latn", } m["roc"] = { "Cacgia Roglai", 2932485, "cmc", "Latn", } m["rod"] = { "Rogo", 3914894, "nic-kmk", } m["roe"] = { "Ronji", 3441763, "poz-ocw", } m["rof"] = { "Rombo", 33330, "bnt-chg", "Latn", } m["rog"] = { "Northern Roglai", 3439680, "cmc", "Latn", } m["rol"] = { "Romblomanon", 13202, "phi", "Latn", } m["rom"] = { "Romani", 13201, "inc-rom", "Latn, Cyrl", } m["roo"] = { "Rotokas", 13203, "paa-nbo", "Latn", } m["rop"] = { "Australian Kriol", 35671, "crp", "Latn", ancestors = "en", } m["ror"] = { "Rongga", 12473464, } m["rou"] = { "Runga", 56793, } m["row"] = { "Dela-Oenale", 5253046, "poz-tim", } m["rpn"] = { "Repanbitip", 7313900, "poz-vnc", "Latn", } m["rpt"] = { "Rapting", 7294362, "ngf-mad", } m["rri"] = { "Ririo", 2404190, "poz-ocw", } m["rro"] = { "Roro", 34197, "poz-ocw", "Latn", } m["rrt"] = { "Arritinngithigh", 4796002, nil, "Latn", } m["rsb"] = { "Romano-Serbian", 1268244, "qfa-mix", "Latn", -- and Cyrl? ancestors = "rom, sh", } m["rsl"] = { "Russian Sign Language", 13210, "sgn", } m["rsk"] = { "Pannonian Rusyn", 35660, "zlw", "Cyrl", ancestors = "zlw-osk", translit = "rsk-translit", sort_key = { Cyrl = { from = {"ґ", "є", "ї", "ь"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "я" .. p[1]} } }, standardChars = "АаБбВвГ㥴ДдЕеЄєЖжЗзИиІіЇїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЬьЮюЯя" .. c.punc:gsub("'", ""), -- Exclude apostrophe. } m["rsm"] = { "Miriwoong Sign Language", 24090240, "sgn", } m["rtc"] = { "Rungtu", 7379867, "tbq-kuk", } m["rth"] = { "Ratahan", 3420026, "phi", "Latn", } m["rtm"] = { "Rotuman", 36754, "poz-pcc", "Latn", } m["rtw"] = { "Rathawi", 12953854, "inc-bhi", } m["rub"] = { "Gungu", 11165235, "bnt-glb", "Latn", } m["ruc"] = { "Ruuli", 7383562, "bnt-nyg", } m["rue"] = { "Carpathian Rusyn", 26245, "zle", "Cyrl", ancestors = "zle-ort", translit = "rue-translit", entry_name = {remove_diacritics = c.grave .. c.acute}, sort_key = "rue-sortkey", } m["ruf"] = { "Luguru", 3437661, "bnt-ruv", "Latn", } m["rug"] = { "Roviana", 3445546, "poz-ocw", "Latn", } m["ruh"] = { "Ruga", 7378127, } m["rui"] = { "Rufiji", 7377946, "bnt-mbi", } m["ruk"] = { "Che", 3915445, "nic-nin", "Latn", } m["ruo"] = { "Istro-Romanian", 33622, "roa-eas", "Latn", } m["rup"] = { "Aromanian", 29316, "roa-eas", "Latn, Polyt", display_text = { Polyt = s["Polyt-displaytext"], }, entry_name = { Polyt = s["Polyt-entryname"], }, sort_key = { Polyt = s["Polyt-sortkey"], }, wikimedia_codes = "roa-rup", } m["ruq"] = { "Megleno-Romanian", 13358, "roa-eas", "Latn", } m["rut"] = { "Rutul", 36757, "cau-wsm", "Cyrl, Latn", translit = "rut-translit", override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, entry_name = { Cyrl = s["cau-Cyrl-entryname"], Latn = s["cau-Latn-entryname"], }, } m["ruu"] = { "Lanas Lobu", 12953676, } m["ruy"] = { "Mala (Nigeria)", 3913381, "nic-kau", } m["ruz"] = { "Ruma", 3913326, "nic-kau", } m["rwa"] = { "Rawo", 3504269, } m["rwk"] = { "Rwa", 7985624, "bnt-chg", } m["rwm"] = { "Amba", 788423, "bnt-kbi", "Latn", } m["rwr"] = { "Marwari", 65455884, } m["rwo"] = { "Rawa", 11732598, "ngf-fin", "Latn", } m["rxd"] = { "Ngardi", 7022063, } m["rxw"] = { "Karuwali", 6881575, } m["ryn"] = { "Northern Amami Ōshima", 2840988, "jpx-nry", "Jpan", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], entry_name = s["jpx-entryname"], sort_key = s["jpx-sortkey"], } m["rys"] = { "Yaeyama", 34203, "jpx-sry", "Jpan", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], entry_name = s["jpx-entryname"], sort_key = s["jpx-sortkey"], } m["ryu"] = { "Okinawan", 34233, "jpx-nry", "Jpan", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], entry_name = s["jpx-entryname"], sort_key = s["jpx-sortkey"], } m["rzh"] = { "Razihi", 16911222, "sem-osa", "Arab", ancestors = "sem-srb", } return require("Module:languages").finalizeData(m, "language") jvpw4iwqp29h3aj0grvx24ytkx1eyf4 thanatology 0 153930 510497 320290 2026-06-08T00:03:04Z Redmin 6857 /* বিশেষ্য */ 510497 wikitext text/x-wiki =={{ভাষা|en}}== {{wikipedia}} ===ব্যুৎপত্তি=== {{af|en|thanato-|-logy}}, যা {{der|en|grc|θάνατος||মৃত্যু}} থেকে উদ্ভূত। ===উচ্চারণ=== * {{IPA|en|/θan.əˈtɒl.əd͡ʒ.i/|a=RP}} * {{IPA|en|/ˌθæ.nəˈtɑl.əd͡ʒ.i/|a=GA}} * {{rhymes|en|ɒlədʒi|s=5}} ===বিশেষ্য=== {{en-noun|-|+}} # [[মৃত্যু]] এবং এর সাথে সম্পর্কিত প্রথা নিয়ে বৈজ্ঞানিক অধ্যয়ন, যার মধ্যে রয়েছে মৃত্যুপ্রায় রোগী ও তাদের পরিবারের প্রয়োজন সম্পর্কিত অধ্যয়ন। #: {{mer|en|mortuary science}} #* {{quote-journal|en|author=এলিজাবেথ প্রেস্টন|title=Elephants in Mourning Spotted on YouTube by Scientists|work=The New York Times|date=May 17, 2022|url=https://www.nytimes.com/2022/05/17/science/elephants-mourning-grief.html|issn=0362-4331|passage=The work is part of a growing field called comparative '''thanatology''' — the study of how different animals react to death. |t=এই কাজটি একটি ক্রমবর্ধমান শাখার অংশ, যার নাম তুলনামূলক '''থানাটোলজি''' — যা বিভিন্ন প্রাণী মৃত্যুর প্রতি কীভাবে প্রতিক্রিয়া জানায় তা নিয়ে গবেষণা করে।}} ====অনুবাদ==== {{trans-top|মৃত্যু বিষয়ক বৈজ্ঞানিক অধ্যয়ন}} * বেলারুশীয়: {{t|be|танаталогія|sc=Cyrl}} * চীনা: *: মান্দারিন: {{t|cmn|死亡學|tr=sǐwángxué}} * চেক: {{t|cs|thanatologie}} * এস্তোনীয়: {{t|et|tanatoloogia}} * ফিনিশ: {{t|fi|tanatologia}} * ফরাসি: {{t+|fr|thanatologie}} * জার্মান: {{t|de|Sterbensforschung}} * গুজরাটি: {{t|gu|મૃત્યુવિજ્ઞાન}} * হিন্দি: {{t|hi|मृत्युविज्ञान}} * হাঙ্গেরিয়ান: {{t|hu|haláltan}} * আইসল্যান্ডীয়: {{t|is|dauðafræði|f}} * আইরিশ: {{t|ga|báseolaíocht|f}} * ইতালীয়: {{t+|it|tanatologia|f}} * জাপানি: {{t|ja|死生学|tr=しせいがく, shiseigaku|sc=Jpan}} * কাজাখ: {{t|kk|танатология|sc=Cyrl}} * কোরিয়ান: {{t|ko|사망학(死亡學)}} * মালয়: {{t|ms|kaji kematian}}, {{t|ms|tanatologi}} * মারাঠি: {{t|mr|मृत्युविज्ञान}} * ফারসি: {{t|fa|مرگشناسی|s|tr=margšenāsī}} * পোলিশ: {{t+|pl|tanatologia}} * পর্তুগিজ: {{t+|pt|tanatologia|f}} * রুশ: {{t+|ru|танатология}} * স্লোভাক: {{t|sk|tanatológia}} * স্প্যানিশ: {{t+|es|tanatología}} * তামিল: {{t|ta|மரணவியல்}} * তুর্কি: {{t|tr|tanatoloji}} * ভিয়েতনামি: {{t|vi|tử vong học}} {{trans-bottom}} ====আরও দেখুন==== * {{lb|en|health care specifically}} {{w|end-of-life care}}, {{l|en|palliative care}} ptoiw1leujw3rywxe6m3fueedcwfczh toplessness 0 162553 510498 509490 2026-06-08T00:04:29Z Redmin 6857 /* বিশেষণ */ 510498 wikitext text/x-wiki ==ইংরেজি== ===উৎপত্তি=== {{af|en|top|-less}} — ‘top’ (উপরের পোশাক) + ‘-less’ (অভাব বোঝানো প্রত্যয়)। ===উচ্চারণ=== * {{audio|en|en-us-topless.ogg|a=US}} ===বিশেষণ=== {{en-adj}} # [[top]] (উপরের পোশাক) ব্যতিরেকে; উপরের অংশের পোশাকবিহীন। #: {{ux|en|The sight-seeing bus is '''topless''' to allow tourists a better view of the sights.}} # {{lb|en|কাব্যিক}} অত্যন্ত [[উচ্চ]]; [[দিগন্তস্পর্শী]]। #* '''১৬শ শতাব্দীর শেষ ভাগে''', ক্রিস্টোফার মার্লো, ''ডক্টর ফাউস্টাস'': #*: Was this the face that launch'd a thousand ships, #*: And burnt the '''topless''' towers of Ilium? # {{lb|en|chiefly|নারী সম্পর্কিত}} শরীরের উপরের অর্ধাংশে কোনো [[পোশাক]] না থাকা; কেবল স্তনাবরণহীন। #: {{syn|en|bare-breasted|q1=নারীর জন্য|barechested|q2=পুরুষের জন্য|half-naked|semi-nude|shirtless|topfree}} #: {{ux|en|The council voted to allow '''topless''' swimmers on the beach.}} # {{lb|en|স্থানীয় অর্থে}} এমন স্থান যেখানে [[নারী]]রা শরীরের উপরের অংশে [[নগ্ন]] থাকে; যেমন [[নৃত্যশিল্পী]], [[বার]] ইত্যাদি। #: {{ux|en|Only her closest friends knew that Jenny was working at a '''topless''' bar to help with college expenses.}} ====উৎপন্ন শব্দসমূহ==== {{col4|en |toplessly |toplessness |topless dress |topless radio }} ====অনুবাদ==== {{trans-top|top না থাকা অর্থে}} * বুলগেরীয়: {{t|bg|без покрив}} * চীনা (ম্যান্ডারিন): {{t|cmn|无顶}}, {{t|cmn|無頂}} * ফিনিশ: {{t+|fi|yläosaton}}, {{t+|fi|avonainen}} * হাঙ্গেরিয়ান: {{t|hu|[[tető]] [[nélküli]]}} * রুশ: {{t|ru|без ве́рха}} * সিসিলিয়ান: {{t|scn|â nuda}}, {{t|scn|a l'ariò}}, {{t|scn|a l'ària}}, {{t|scn|a l'àriu}} * তুর্কি: {{t|tr|üstsüz}} * ওয়েলশ: {{t|cy|di-dop}} {{trans-bottom}} {{trans-top|কবিতামূলক অর্থে 'উচ্চ'}} * ফিনিশ: {{t|fi|[[korkeana]] [[siintävä]]}} * হাঙ্গেরিয়ান: {{t|hu|[[égbe]] [[nyúló]]}}, {{t|hu|[[végtelen]]/[[irdatlan]]/[[mérhetetlen]] [[magasságú]]}} {{trans-bottom}} {{trans-top|স্তনের উপর পোশাক না থাকা অর্থে}} * বুলগেরীয়: {{t|bg|гол до кръста}} * চীনা (ম্যান্ডারিন): {{t+|cmn|無上裝}}, {{t+|cmn|上空}} * চেক: {{t+|cs|nahoře bez}} * ডেনিশ: {{t|da|topløs}} * ফরাসি: {{t+|fr|topless}}, {{t|fr|seins nus}} * জার্মান: {{t+|de|barbusig}}, {{t+|de|oben ohne}} * গ্রিক: {{t+|el|γυμνόστηθος}} * হাঙ্গেরিয়ান: {{t+|hu|félmeztelen}} * আইসল্যান্ডীয়: {{t|is|topplaus}}, {{t|is|berbrjósta}} * জাপানি: {{t+|ja|トップレス}} * পর্তুগিজ: {{t+|pt|topless}} * রুশ: {{t+|ru|с обнажённой гру́дью}}, {{t+|ru|то́плес}} * নরওয়েজীয়: {{t|nb|toppløs}} * পোলিশ: {{t+|pl|toples}}, {{t+|pl|topless}} * ভিয়েতনামি: {{t+|vi|trần}} * তুর্কি: {{t|tr|üstsüz}} {{trans-bottom}} {{trans-top|যে স্থান নারীদের উপরের অংশে নগ্ন অবস্থায় উপস্থাপন করে}} * বুলগেরীয়: {{t|bg|без горнище на банския}} * ফিনিশ: {{t+|fi|topless}}, {{t+|fi|tissi|alt=tissi-}} {{q|সাধারণ}} * ফরাসি: {{t+|fr|topless}} * জার্মান: {{t+|de|barbusig}} * হাঙ্গেরিয়ান: {{t+|hu|topless}} * জাপানি: {{t+|ja|トップレス}} * রুশ: {{t+|ru|то́плес}} {{trans-bottom}} ===ক্রিয়া বিশেষণ=== {{en-adv}} # শরীরের উপরের অংশে কোনো পোশাক না পরে। #* {{quote-book|en|author=Joan Morrison|title=Share House Blues|publisher=Boolarong Publications|year=1985|page=43|passage='I saw her,' said Neptune, 'sunbaking '''topless'''.'}} #* {{quote-journal|en|author=Pete Williams|title=Topless women win big as Colorado city drops ban|magazine=w:NBC News|url=https://www.nbcnews.com/politics/politics-news/topless-women-win-big-colorado-city-drops-ban-n1056701|date=2019-09-19|passage=Fort Collins, Colorado has decided it's not worth the money to fight for its ordinance banning women from appearing '''topless''' in public.}} ====অনুবাদ==== {{trans-top|উপরের পোশাক না পরে (ক্রিয়া বিশেষণ অর্থে)}} * ফিনিশ: {{t|fi|yläosattomana}} * পোলিশ: {{t+|pl|toples}}, {{t+|pl|topless}} {{trans-bottom}} ===বিশেষ্য=== {{en-noun}} # {{lb|en|গাড়ি}} একটি [[কনভার্টেবল]] গাড়ি যার ছাদ খোলা বা সরানো যায়। 8ris38cybrhe28bmd27vcw5kffa28uf বিষয়শ্রেণী:শব্দার্থের বাংলা মানের অনুরোধ 14 164497 510493 502129 2026-06-07T17:58:20Z Redmin 6857 /* */ 510493 wikitext text/x-wiki [[বিষয়শ্রেণী:উইকিঅভিধান রক্ষণাবেক্ষণ]] __HIDDENCAT__ ilwiwe6m5dnxc8kdagcox6qasufelcv মডিউল:Ahom-translit/testcases 828 168559 510111 2026-06-07T12:45:03Z RedminBot 9553 [[en:Module:Ahom-translit/testcases]] থেকে আনা হলো 510111 Scribunto text/plain local tests = require("Module:UnitTests") local transliterate = require("Module:Ahom-translit").tr local function tag(text) return '<span class="Ahom">' .. text .. '</span>' end function tests:check(example, expected) return self:equals( tag(example), expected, transliterate(example) ) end function tests:test_translit() local examples = { { "𑜁𑜨𑜧", "khow" }, { "𑜁𑜦𑜡", "khoo" }, } tests:iterate(examples, "check") end return tests g4n4czy30mqh5f5dm89v7dfi0bn90bw মডিউল:Altai-translit/testcases 828 168560 510112 2026-06-07T12:45:04Z RedminBot 9553 [[en:Module:Altai-translit/testcases]] থেকে আনা হলো 510112 Scribunto text/plain local tests = require("Module:UnitTests") local transliterate = require("Module:Altai-translit").tr local normalize = mw.ustring.toNFC local gsub = string.gsub local function tag(text) return '<span class="Cyrl">' .. text .. '</span>' end local function remove_categories(text) return gsub(text, "%[%[Category:[^%]]+%]%]", "") end function tests:check(example, expected) self:equals( tag(example), remove_categories(normalize(transliterate(example))), normalize(expected), { show_difference = true } ) end function tests:test_translit() local examples = { { "кöндӱрe", "köndüre" }, { "мында", "mında" }, { "кичӱ", "kïčü" }, { "тартыжар", "tartıžar" }, { "сегизинчи", "sägïzïnčï" }, } tests:iterate(examples, "check") end return tests 8p4qdrjmpadp261ku5zfob0x3ztf9gi মডিউল:Avst-translit/testcases 828 168561 510113 2026-06-07T12:45:05Z RedminBot 9553 [[en:Module:Avst-translit/testcases]] থেকে আনা হলো 510113 Scribunto text/plain --[=[ Unit tests for [[Module:Avst-translit]]. ]=] return require("Module:transliteration module testcases") { module = 'Avst-translit', examples = { { '𐬥𐬆𐬨𐬀𐬜𐬐𐬁', 'nəmaδkā' }, { '𐬯𐬭𐬀𐬎𐬎𐬀𐬵', 'srauuah' }, { '𐬯𐬙𐬆𐬨𐬠𐬀', 'stəmba' }, { '𐬛𐬎𐬭𐬎𐬎𐬀𐬧𐬙', 'd<sup><small>u</small></sup>ruuaṇt' }, { '𐬯𐬎𐬭𐬎𐬥𐬀𐬊𐬌𐬙𐬌', 's<sup><small>u</small></sup>runao<sup><small>i</small></sup>ti' }, { '𐬎𐬭𐬎𐬎𐬀𐬘', '<sup><small>u</small></sup>ruuaj' }, { '𐬎𐬭𐬎𐬎𐬀𐬭𐬁', 'uruuarā' }, 'r > r<sup><small>ə</small></sup> /V_{C<sub><small>[-š,-ž]</small></sub>,#}', { '𐬞𐬆𐬭𐬆𐬥𐬀', 'pər<sup><small>ə</small></sup>na' }, { '𐬚𐬡𐬋𐬭𐬆𐬱𐬙𐬀𐬭', 'θβōr<sup><small>ə</small></sup>štar' }, { '𐬬𐬀𐬭𐬆𐬱𐬥𐬀', 'var<sup><small>ə</small></sup>šna' }, { '𐬀𐬭𐬆𐬱𐬀𐬥', 'ar<sup><small>ə</small></sup>šan' }, { '𐬠𐬀𐬉𐬎𐬎𐬀𐬭𐬆', 'baēuuar<sup><small>ə</small></sup>' }, 'm > <sup><small>ə</small></sup>m /_C<sub><small>[+obstruent]</small></sub>', { '𐬛𐬀𐬯𐬆𐬨𐬀', 'das<sup><small>ə</small></sup>ma' }, { '𐬛𐬆𐬨𐬀𐬥𐬀', 'd<sup><small>ə</small></sup>mana' }, { '𐬖𐬆𐬨𐬀𐬙𐬀', 'γ<sup><small>ə</small></sup>mata' }, { '𐬬𐬀𐬛𐬆𐬨𐬀𐬥', 'vad<sup><small>ə</small></sup>man' }, { '𐬫𐬋𐬌𐬚𐬆𐬨𐬁', 'yōiθ<sup><small>ə</small></sup>mā' }, { '𐬬𐬀𐬊𐬑𐬆𐬨𐬁', 'vaox<sup><small>ə</small></sup>mā' }, { '𐬎𐬰𐬆𐬨𐬆𐬨', 'uz<sup><small>ə</small></sup>məm' }, { '𐬀𐬉𐬱𐬆𐬨𐬀', 'aēš<sup><small>ə</small></sup>ma' }, { '𐬵𐬀𐬑𐬇𐬨𐬄𐬨', 'hax<sup><small>ə</small></sup>̄mąm' }, 'n > <sup><small>ə</small></sup>n /_C<sub><small>[+obstruent,-š,-ž]</small></sub>', { '𐬔𐬆𐬥𐬁', 'g<sup><small>ə</small></sup>nā' }, { '𐬗𐬌𐬚𐬆𐬥𐬁', 'ciθ<sup><small>ə</small></sup>nā' }, { '𐬭𐬀𐬉𐬑𐬆𐬥𐬀𐬵', 'raēx<sup><small>ə</small></sup>nah' }, { '𐬭𐬀𐬟𐬆𐬥𐬀𐬵', 'raf<sup><small>ə</small></sup>nah' }, 'i-epenthesis', { '𐬀𐬉𐬌𐬠𐬌𐬌𐬋', 'aē<sup><small>i</small></sup>biiō' }, { '𐬀𐬌𐬡𐬌𐬔𐬁𐬨𐬀', 'a<sup><small>i</small></sup>βigāma' }, { '𐬠𐬀𐬊𐬌𐬜𐬌', 'bao<sup><small>i</small></sup>δi' }, { '𐬨𐬀𐬌𐬜𐬌𐬌𐬁𐬥𐬀', 'ma<sup><small>i</small></sup>δiiāna' }, { '𐬥𐬀𐬌𐬭𐬈⸱𐬨𐬀𐬥𐬀𐬵', 'na<sup><small>i</small></sup>re.manah' }, { '𐬥𐬀𐬎𐬎𐬁𐬌𐬙𐬌', 'nauuā<sup><small>i</small></sup>ti' }, { '𐬙𐬏𐬌𐬭𐬌𐬌𐬀', 'tū<sup><small>i</small></sup>riia' }, { '𐬑𐬱𐬎𐬎𐬌𐬞𐬙𐬀𐬎𐬎𐬀𐬌𐬙𐬍', 'xšuuiptauua<sup><small>i</small></sup>tī' }, { '𐬘𐬎𐬎𐬀𐬌𐬧𐬙𐬌', 'juua<sup><small>i</small></sup>ṇti' }, { '𐬌𐬚𐬌𐬌𐬈𐬘𐬀𐬵', '<sup><small>i</small></sup>θiiejah' }, { '𐬌𐬭𐬌𐬱𐬙𐬀', '<sup><small>i</small></sup>rišta' }, 'u-epenthesis', { '𐬛𐬁𐬎𐬭𐬎', 'dā<sup><small>u</small></sup>ru' }, { '𐬞𐬊𐬎𐬭𐬎𐬎𐬀', 'po<sup><small>u</small></sup>ruua' }, { '𐬙𐬀𐬎𐬭𐬎𐬥𐬀', 'ta<sup><small>u</small></sup>runa' }, }, sc = 'Avst', lang = 'ae', nolink = false, } 811416k9sofd3j671y86t4duwwbnz6c মডিউল:Beng-Deva-translit/testcases 828 168562 510114 2026-06-07T12:45:06Z RedminBot 9553 [[en:Module:Beng-Deva-translit/testcases]] থেকে আনা হলো 510114 Scribunto text/plain local tests = require("Module:UnitTests") local m_translit = require("Module:Beng-Deva-translit") local sc = require("Module:scripts").getByCode("Beng") local lang = require("Module:languages").getByCode("bn") function link(term) return require("Module:links").full_link {term = term, lang = lang, tr = "-", sc = sc} end function tests:check_translit(term, expected) tests:equals(link(term), m_translit.tr(term), expected) end function tests:test_translit() local examples = { {"করা", "करा"}, } tests:iterate(examples, "check_translit") end return tests 7vyo2i0k56dhdl89z4jexej3zgdkxvb মডিউল:Brah-translit/testcases 828 168563 510115 2026-06-07T12:45:06Z RedminBot 9553 [[en:Module:Brah-translit/testcases]] থেকে আনা হলো 510115 Scribunto text/plain local scdef, langdef = 'Brah', 'pra' local canonical_def local ti = table.insert return require("Module:transliteration module testcases"){ module = "Brah-translit", examples = { { "𑀧𑀁𑀟𑀺𑀅", "paṃḍia" }, { "𑀕𑀅", "gaa" }, { "𑀢𑀑", "tao" }, { "𑀯𑀁𑀰", "vaṃśa", "Brah", "sa" }, { "𑀯𑀺𑀱𑁆𑀡𑀼", "viṣṇu", "Brah", "pra" }, { "𑀕𑁅𑀂", "gauḥ", "Brah", "sa" }, { "𑀚𑁃𑀦", "jaina", "Brah", "pra" }, { "𑀋𑀱𑁀𑀫𑀿𑀡𑀻", "ṛṣḷmṝṇī", "Brah", "sa" }, { "𑀋𑀱𑁀𑀫𑀿𑀡𑀻", "ṛṣl̥mṝṇī", "Brah", "pra" }, { "𑀌𑀓𑁆𑀱𑀽𑀧𑁁𑀢", "ṝkṣūpḹta", "Brah", "sa" }, { "𑀌𑀓𑁆𑀱𑀽𑀧𑁁𑀢", "ṝkṣūpl̥̄ta" }, { "𑀍𑀧𑀾", "l̥pṛ" }, { "𑀍𑀧𑀾", "ḷpṛ", "Brah", "sa"}, { "𑀍𑀧𑀾", "ḷpṛ", "Brah", "pi"}, -- Unlikely, but conceivable as a leakage in from Sanskrit { "𑀎𑀦𑀸", "ḹnā", "Brah", "sa"}, { "𑀎𑀦𑀸", "l̥̄nā", "Brah", "pra"}, { "𑀐𑀰𑁆𑀯𑀭𑁆𑀬", "aiśvarya", "Brah", "pi"}, { "𑀒𑀱𑀥", "auṣadha"}, { "𑀓𑀼𑀔𑀻𑀕𑀗𑁆𑀖𑀸", "kukhīgaṅghā" }, { "𑀝𑀝𑁆𑀞𑁄𑀟𑁆𑀠𑀡𑁆𑀟𑀻𑀠𑀦𑁆𑀢𑁆", "ṭaṭṭhŏḍḍhaṇḍīḍhant" }, { "𑀚𑀘𑁆𑀙𑀼𑀁𑀲𑀚𑁆𑀛𑁂𑀚𑁆𑀜", "jacchuṃsajjhĕjña" }, { "𑀇𑀧𑀡𑁆𑀞𑀫𑁆𑀩𑀺𑀨𑀪𑁄", "ipaṇṭhambiphabho" }, { "𑀯𑁆𑀬𑀩𑁆𑀩𑁄𑀭𑀴𑁆𑀳𑀴𑀺𑀦𑀸", "vyabboraḷhaḷinā" }, { "𑀧𑀼𑀁𑀮𑀺𑀗𑁆𑀕", "puṃliṅga"}, { "𑀆𑀲𑁆𑀦𑁄𑀓𑁆𑀮𑀢𑁆𑀯𑀸𑀬𑁆𑀳𑀮𑁄", "āsnŏklatvāyhalo" }, { "𑀆𑀲𑁆𑀦𑁄𑀓𑁆𑀮𑀢𑁆𑀯𑀸𑀬𑁆𑀳𑀮𑁄", "āsnoklatvāyhalo", "Brah", "sa" }, -- { "𑀆𑀲𑁆𑀦𑁄𑀓𑁆𑀮𑀢𑁆𑀯𑀸𑀬𑁆𑀳𑀮𑁄", "āsnoklatvāyhalo", "Brah", "inc-pmh" }, { "𑀉𑀕𑀬𑁆𑀳𑁄", "ugayho", "Brah", "pi" }, { "𑀦𑀺𑀕𑁆𑀭𑁄𑀥", "nigrodha", "Brah", "sa"}, { "𑀧𑀘𑀯𑁆𑀳𑁄", "pacavho", "Brah", "pi" }, { "𑀅𑀕𑀁𑀙𑀺𑀁", "agaṃchiṃ", "Brah", "pi" }, { "𑀧𑀸𑀧𑁄", "pāpo", "Brah", "sa" }, { "𑀦𑀺𑀩𑁆𑀩𑀸𑀦", "nibbāna", "Brah", "sa" }, { "𑀊𑀓𑀢𑀩𑁆𑀩𑁄", "ūkatabbo", "Brah", "pi" }, { "𑀑𑀓𑀸𑀲𑀫𑁆𑀳𑀺", "okāsamhi", "Brah", "pi" }, { "𑀏𑀳𑀺", "ehi", "Brah", "sa" }, { "𑀈𑀢𑁆𑀭𑁂𑀤𑁆𑀥𑁄𑀣𑀽𑀦𑀺𑀫𑁆", "ītreddhothūnim", "Brah", "pi" }, { "𑀴𑁆𑀳𑀸𑀲𑀸𑀴𑀽𑀁", "ḷhāsāḷūṃ", "Brah", "pi" }, { "𑀲𑁂𑀝𑁆𑀞𑀺", "sĕṭṭhi", "Brah", "pra"}, { "𑀏𑀓𑁆𑀓", "ĕkka", "Brah", "pra"}, { "𑀩𑁄𑀮𑁆𑀮𑀇", "bŏllaï", "Brah", "pra"}, { "𑀑𑀓𑁆𑀓𑀺𑀅", "ŏkkia", "Brah", "pra"}, { "𑀢𑁂𑀮", "tela", "Brah", "pra"}, { "𑀏𑀲𑀚𑁆𑀚", "esajja", "Brah", "pra"}, { "𑀢𑁄𑀲", "tosa", "Brah", "pra"}, { "𑀑𑀳𑀺", "ohi", "Brah", "pra"}, { "𑀅𑀉𑀅", "aüa", "Brah", "pra"}, { "𑀧𑀸𑀲𑀇", "pāsaï", "Brah", "pra"}; { "𑀫𑀻𑀷𑁆", "mīṉ", "Brah", "oty" }, -- 13.0 { "𑀫𑀻𑀷𑁰", "mīṉ", "Brah", "oty" }, -- 14.0 { "𑀆𑀶𑀼", "āṟu", "Brah", "oty" }, { "𑀢𑀫𑀺𑀵𑁰", "tamiḻ", "Brah", "oty" }, { "𑀧𑁂𑁆𑀬𑀭𑁆", "peyar", "Brah", "oty" }, -- 13.0 { "𑀧𑁳𑀬𑀭𑁰", "peyar", "Brah", "oty" }, -- 14.0 { "𑀉𑀭𑁄𑀫𑀫𑁆", "urōmam", "Brah", "oty"}, -- 13.0 { "𑀉𑀭𑁄𑀫𑀫𑁰", "urōmam", "Brah", "oty"}, -- 14.0 { "𑀘𑁂𑀷𑁃", "cēṉai", "Brah", "oty" }, { "𑀘𑁄𑁆𑀮𑁆", "col", "Brah", "oty" }, -- 13.0 { "𑀘𑁴𑀮𑁰", "col", "Brah", "oty" }, -- 14.0 --[[ { "", "", "", "" }, --]] }, sc = scdef, lang = langdef, func_with_link = function(text, should, sc, lang) local canonical_name if not canonical_def then local lang_object = require('Module:languages').getByCode(langdef) or error('The language code ' .. langdef .. ' is not valid.') canonical_def = lang_object:getCanonicalName() end local label = {} if lang and lang ~= langdef then local lang_object = require('Module:languages').getByCode(lang) or error('The language code ' .. lang .. ' is not valid.') canonical_name = lang_object:getCanonicalName() ti(label, lang); ti(label, ': ') else canonical_name = canonical_def end ti(label, '<span class="'); ti(label, sc or scdef); ti(label, '" lang="'); ti(label, lang or langdef); ti(label, '">[['); ti(label, text) ti(label, '#') ti(label, canonical_name) ti(label, '|') ti(label, text) ti(label, ']]</span>') return table.concat(label) end } 8l1frvsi142i6yco1bdblavlaq7yge0 মডিউল:Cakm-translit/testcases 828 168564 510116 2026-06-07T12:45:07Z RedminBot 9553 [[en:Module:Cakm-translit/testcases]] থেকে আনা হলো 510116 Scribunto text/plain local scdef, langdef = 'Cakm', 'ccp' local canonical_def local ti = table.insert return require("Module:transliteration module testcases"){ module = "Cakm-translit", examples = { -- The 59 lemmas as at 19 October 2021: (the two mere letters are excluded, -- as is the one untransliterated lemmas 𑄌𑄖𑄴) { "𑄃𑄘𑄢", "ādārā"}, { "𑄇𑄋𑄢", "kāṅārā"}, { "𑄇𑄧", "ka"}, { "𑄇𑄧𑄙𑄖𑄢", "kadhātārā"}, { "𑄇𑄧𑄙𑄗𑄪𑄛𑄴", "kadhāthup"}, { "𑄇𑄨𑄠𑄮𑄁", "kiẏoṅ"}, { "𑄈𑄧𑄢𑄴𑄉𑄧𑄌𑄴", "hôrgôc"}, { "𑄉", "gā"}, { "𑄉𑄧𑄋", "gaṅā"}, { "𑄉𑄧𑄖𑄴", "gat"}, { "𑄉𑄧𑄙", "gadhā"}, { "𑄉𑄧𑄢𑄴𑄝", "garbā"}, { "𑄊𑄧𑄢𑄴", "ghar"}, { "𑄌𑄘𑄨", "cādi"}, { "𑄌𑄚𑄴", "cān"}, { "𑄌𑄟𑄴", "cām"}, { "𑄌𑄧𑄉𑄧𑄘", "cagadā"}, { "𑄌𑄧𑄉𑄧𑄣", "cagalā"}, { "𑄍𑄮𑄣𑄉𑄧𑄢𑄴", "solagôr"}, { "𑄎𑄧𑄘", "jadā"}, { "𑄏𑄧𑄢𑄴", "jhar"}, { "𑄒𑄉𑄪𑄢𑄴", "ṭhāgur"}, { "𑄒𑄙𑄢𑄴", "ṭādhār"}, { "𑄖𑄣", "tālā"}, { "𑄗𑄉", "thāgā"}, { "𑄗𑄣𑄴", "thāl"}, { "𑄗𑄧𑄟𑄴", "tham"}, { "𑄗𑄧𑄢𑄴", "thar"}, { "𑄘𑄧𑄉𑄚𑄴", "dagān"}, { "𑄛𑄚𑄨", "pāni"}, { "𑄛𑄪𑄚𑄨", "puni"}, { "𑄛𑄬𑄇𑄴", "pek"}, { "𑄝𑄬𑄋𑄴", "beṅ"}, { "𑄞𑄌𑄴", "bhāc"}, { "𑄞𑄌𑄴𑄟𑄖𑄴", "bhāc-māt"}, { "𑄞𑄖𑄴", "bhāt"}, { "𑄞𑄪𑄖𑄴", "bhut"}, { "𑄟𑄌𑄴", "māc"}, { "𑄟𑄪𑄎𑄴𑄏𑄬𑄁", "mujjheṅ"}, { "𑄢𑄖𑄴", "rāt"}, { "𑄢𑄧", "ra"}, { "𑄢𑄧𑄖𑄴", "rat"}, { "𑄣𑄋𑄧𑄚𑄨", "lāṅoni"}, { "𑄣𑄋𑄳𑄡𑄴", "lāṅyā"}, { "𑄣𑄋𑄴", "lāṅ"}, { "𑄣𑄪𑄢𑄨", "luri"}, { "𑄤𑄇𑄴", "wāk"}, { "𑄥𑄟𑄪𑄇𑄴", "sāmuk"}, { "𑄥𑄧𑄁𑄥𑄧𑄞", "saṃsabhā"}, { "𑄥𑄧𑄚", "sanā"}, { "𑄥𑄪𑄟𑄪𑄣𑄁", "sumulāṅ"}, { "𑄦𑄌𑄴", "hāc"}, { "𑄦𑄖𑄴", "hāt"}, { "𑄦𑄝", "hābā"}, { "𑄦𑄢𑄉", "hārāgā"}, { "𑄦𑄧𑄙", "hadhā"}, { "𑄦𑄨𑄠𑄧𑄁", "hiẏoṅ"}, { "𑄦𑄨𑄢𑄴𑄝𑄬", "hirbe"}, { "𑄦𑄮𑄢𑄮𑄋", "horoṅā"}, -- Pali stuff { "𑄇𑄪𑄈𑄩𑄉𑄋𑄴𑄊𑄂", "kukhīgaṅghā", "Cakm", "pi"}, { "𑄑𑄑𑄴𑄒𑄮𑄓𑄴𑄔𑄕𑄴𑄓𑄩𑄔𑄚𑄴𑄖𑄴", "ṭaṭṭhoḍḍhaṇḍīḍhant", "Cakm", "pi" }, { "𑄎𑄌𑄴𑄍𑄪𑄁𑄥𑄎𑄴𑄏𑄬𑄎𑄳𑄐", "jacchuṃsajjhejña", "Cakm", "pi" }, { "𑄃𑄨𑄛𑄕𑄴𑄒𑄟𑄴𑄝𑄨𑄜𑄞𑄮", "ipaṇṭhambiphabho", "Cakm", "pi" }, { "𑅇𑄳𑄠𑄝𑄴𑄝𑄮𑄢𑅄𑄳𑄦𑅄𑄨𑄚𑄂", "vyabboraḷhaḷinā", "Cakm", "pi" }, { "𑄛𑄪𑄁𑄣𑄨𑄋𑄴𑄉", "puṃliṅga", "Cakm", "pi"}, { "𑄃𑄂𑄥𑄳𑄚𑄮𑄇𑄳𑄣𑄖𑄳𑄤𑄂𑄠𑄴𑄦𑄣𑄮", "āsnoklatvāyhalo", "Cakm", "pi" }, { "𑄅𑄉𑄠𑄴𑄦𑄮", "ugayho", "Cakm", "pi" }, { "𑄚𑄨𑄉𑄳𑄢𑄮𑄙", "nigrodha", "Cakm", "pi"}, { "𑄛𑄌𑅇𑄴𑄦𑄮", "pacavho", "Cakm", "pi" }, { "𑄃𑄉𑄁𑄍𑄨𑄁", "agaṃchiṃ", "Cakm", "pi" }, { "𑄛𑄂𑄛𑄮", "pāpo", "Cakm", "pi" }, { "𑄚𑄨𑄝𑄴𑄝𑄂𑄚", "nibbāna", "Cakm", "pi" }, { "𑄃𑄫𑄇𑄖𑄝𑄴𑄝𑄮", "ūkatabbo", "Cakm", "pi" }, { "𑄃𑄮𑄇𑄂𑄥𑄟𑄳𑄦𑄨", "okāsamhi", "Cakm", "pi" }, { "𑄆𑄦𑄨", "ehi", "Cakm", "pi" }, { "𑄃𑄩𑄖𑄳𑄢𑄬𑄘𑄴𑄙𑄮𑄗𑄫𑄚𑄨𑄟𑄴", "ītreddhothūnim", "Cakm", "pi" }, { "𑅄𑄴𑄦𑄂𑄥𑄂𑅄𑄫𑄁", "ḷhāsāḷūṃ", "Cakm", "pi" }, --[[ { "", "" }, --]] }, sc = scdef, lang = langdef, func_with_link = function(text, should, sc, lang) local canonical_name if not canonical_def then local lang_object = require('Module:languages').getByCode(langdef) or error('The language code ' .. langdef .. ' is not valid.') canonical_def = lang_object:getCanonicalName() end local label = {} if lang and lang ~= langdef then local lang_object = require('Module:languages').getByCode(lang) or error('The language code ' .. lang .. ' is not valid.') canonical_name = lang_object:getCanonicalName() ti(label, lang); ti(label, ': ') else canonical_name = canonical_def end ti(label, '<span class="'); ti(label, sc or scdef); ti(label, '" lang="'); ti(label, lang or langdef); ti(label, '">[['); ti(label, text) ti(label, '#') ti(label, canonical_name) ti(label, '|') ti(label, text) ti(label, ']]</span>') return table.concat(label) end } s64qtnx2n84anwxomaro11g3kjelx0l মডিউল:Cher-translit/testcases 828 168565 510117 2026-06-07T12:45:08Z RedminBot 9553 [[en:Module:Cher-translit/testcases]] থেকে আনা হলো 510117 Scribunto text/plain -- Unit tests for [[Module:Cher-translit]]. Refresh page to run tests. return require("Module:transliteration module testcases")( require('Module:Cher-translit').tr, { "test_translit_to_lat", { 'ᏀᎾ', 'nah\'na' }, { 'ᎾᎿ', 'nahna' }, { 'ᏣᎳᎩ', 'tsalagi' }, { 'ᎠᏎᏃ', 'aseno' }, { 'ᎠᏍᎡᏃ', 'as\'eno' }, { 'Ꭰꮒꮝꮖꮒ', 'anisquani' }, { 'ᎨᏒᎢ', 'gesvi' }, { 'ᎨᏍᎥᎢ', 'ges\'vi' }, { 'ᎾᏍᎢᏯ', 'nas\'iya' }, { 'ᎤᏂᏰᏍᎢᏱ', 'uniyes\'iyi' }, { 'ᎢᏣᎵᏍᎠᏁᏗ', 'itsalis\'anedi' }, { 'ᎤᎵᎩᏳᏍᎠᏅᏁ', 'uligiyus\'anvne' }, { 'ᎠᎸᏇᏂᏯ', 'alvqueniya' }, { 'ᎠᎾᎳᏍᎩᏍᎬ', 'analasgisgv' }, { 'ᎦᎸᏉᏗᎠᏓᏅᏙ', 'galvquodiadanvdo' }, }, "Cher", "chr" ) nau5vkuuxh39vq1g396vl1ctv3fbeg9 মডিউল:Cyrs-translit/testcases 828 168566 510118 2026-06-07T12:45:09Z RedminBot 9553 [[en:Module:Cyrs-translit/testcases]] থেকে আনা হলো 510118 Scribunto text/plain local tests = require('Module:UnitTests') local m_tr = require('Module:Cyrs-translit') local full_link = require('Module:links').full_link local lang_cu = require('Module:languages').getByCode('cu') local lang_ono = require('Module:languages').getByCode('zle-ono') local lang_orv = require('Module:languages').getByCode('orv') local function link(word, lang) return full_link{ term = word, lang = lang, tr = "-" } end function tests:do_test_translit_cu(word, tr) self:equals(link(word, lang_cu), m_tr.tr(word, "cu"), tr) end function tests:do_test_translit_ono(word, tr) self:equals(link(word, lang_ono), m_tr.tr(word, "zle-ono"), tr) end function tests:do_test_translit_orv(word, tr) self:equals(link(word, lang_orv), m_tr.tr(word, "orv"), tr) end function tests:test_translit_cu() local examples = { { "оу", "u" }, { "сꙑнъ", "synŭ" }, { "ѣхати", "ěxati" }, { "бѣлъ", "bělŭ" }, { "-ъѣ-", "-ŭě-" }, { "аѵ", "av" }, { "щенѧ", "štenę" }, { "четꙑре", "četyre" }, { "заѧць", "zaęcĭ" }, } self:iterate(examples, "do_test_translit_cu") end function tests:test_translit_ono() local examples = { { "оу", "u" }, { "стръи", "strŷi" }, { "ѣхати", "jěxati" }, { "бѣлъ", "bělŭ" }, { "-ъѣ-", "-ŭjě-" }, { "аѵ", "av" }, { "щенѧ", "śćenę" }, { "четꙑре", "ćetyre" }, { "ꙁаѧць", "zajęćĭ" }, } self:iterate(examples, "do_test_translit_ono") end function tests:test_translit_orv() local examples = { { "оу", "u" }, { "стръи", "strŷi" }, { "ѣхати", "jěxati" }, { "бѣле", "běle" }, { "-ъѣ-", "-ŭjě-" }, { "аѵ", "av" }, { "щенѧ", "ščenę" }, { "четꙑре", "četyre" }, { "заѧць", "zajęcĭ" }, } self:iterate(examples, "do_test_translit_orv") end return tests hzfvin8meu5iir8ki2fo42g740coxq9 মডিউল:Deva-Beng-translit/testcases 828 168567 510119 2026-06-07T12:45:10Z RedminBot 9553 [[en:Module:Deva-Beng-translit/testcases]] থেকে আনা হলো 510119 Scribunto text/plain local tests = require("Module:UnitTests") local m_translit = require("Module:Deva-Beng-translit") local sc = require("Module:scripts").getByCode("Deva") local lang = require("Module:languages").getByCode("bn") function link(term) return require("Module:links").full_link {term = term, lang = lang, tr = "-", sc = sc} end function tests:check_translit(term, expected) tests:equals(link(term), m_translit.tr(term), expected) end function tests:test_translit() local examples = { {"कर", "কর"}, {"यन्त्र", "যন্ত্র"}, {"वायु", "বায়ু"}, {"सूर्य", "সূর্য"}, } tests:iterate(examples, "check_translit") end return tests b3gox4nrj3dwmng3srh7th8gg9ubb0f মডিউল:Deva-Kthi-translit/testcases 828 168568 510120 2026-06-07T12:45:12Z RedminBot 9553 [[en:Module:Deva-Kthi-translit/testcases]] থেকে আনা হলো 510120 Scribunto text/plain -- Unit tests for [[Module:Deva-Kthi-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local transliterate = require('Module:Deva-Kthi-translit').tr local function tag(text) return '<span class="Kthi" lang="bho">' .. text .. '</span>' end local options = { display = tag } --TO DO function tests:do_test_translit(deva, kthi, xlit) self:equals('<span class="Deva" lang="bho">[[' .. deva .. '#Bhojpuri|' .. deva .. ']]</span>', transliterate(deva, 'bho', 'Deva'), kthi, options) end function tests:test_translit_kaithi() local examples = { { 'ठाँव', '𑂘𑂰𑂀𑂫' }, { 'ठाँ', '𑂘𑂰𑂀' }, { 'सुग्गा', '𑂮𑂳𑂏𑂹𑂏𑂰' }, { 'लिंगानुपात', '𑂪𑂱𑂁𑂏𑂰𑂢𑂳𑂣𑂰𑂞' }, { 'गईल', '𑂏𑂆𑂪' }, } self:iterate(examples, 'do_test_translit') end return tests 4d9lmqcytt15fxd8mn6m8u94k47s0fu মডিউল:Deva-Limb-translit/testcases 828 168569 510121 2026-06-07T12:45:12Z RedminBot 9553 [[en:Module:Deva-Limb-translit/testcases]] থেকে আনা হলো 510121 Scribunto text/plain -- Unit tests for [[Module:Deva-Limb-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local transliterate = require('Module:Deva-Limb-translit').tr local function tag(text) return '<span class="Limb" lang="lif">' .. text .. '</span>' end local options = { display = tag } --TO DO function tests:do_test_translit(deva, limb, xlit) self:equals('<span class="Deva" lang="lif">[[' .. deva .. '#Limbu|' .. deva .. ']]</span>', transliterate(deva, 'lif', 'Deva'), limb, options) end function tests:test_translit_limb() local examples = { {'निङ्घुम्', 'ᤏᤡᤱᤄᤢᤶ'}, {'पोःङ्ल', 'ᤐᤥ᤺ᤱᤗ'}, {'ये़सुमाङ्ओ', 'ᤕᤧᤛᤢᤔᤠᤱᤀᤥ'}, {'याक्थुङ्', 'ᤕᤠᤰᤌᤢᤱ'}, } self:iterate(examples, 'do_test_translit') end return tests mcjslkh5y3659aoi2jagnmyl5cmq3m5 মডিউল:Deva-Mlym-translit 828 168570 510122 2026-06-07T12:45:13Z RedminBot 9553 [[en:Module:Deva-Mlym-translit]] থেকে আনা হলো 510122 Scribunto text/plain local export = {} local twoChars = { ["त़"] = "ഺ", ["ऩ"] = "ഩ", ["ऱ"] = "റ", ["ऴ"] = "ഴ" } local oneChar = { ["क"] = "ക", ["ख"] = "ഖ", ["ग"] = "ഗ", ["घ"] = "ഘ", ["ङ"] = "ങ", ["च"] = "ച", ["छ"] = "ഛ", ["ज"] = "ജ", ["झ"] = "ഝ", ["ञ"] = "ഞ", ["ट"] = "ട", ["ठ"] = "ഠ", ["ड"] = "ഡ", ["ढ"] = "ഢ", ["ण"] = "ണ", ["त"] = "ത", ["थ"] = "ഥ", ["द"] = "ദ", ["ध"] = "ധ", ["न"] = "ന", ["प"] = "പ", ["फ"] = "ഫ", ["ब"] = "ബ", ["भ"] = "ഭ", ["म"] = "മ", ["य"] = "യ", ["र"] = "ര", ["ल"] = "ല", ["ळ"] = "ള", ["व"] = "വ", ["श"] = "ശ", ["ष"] = "ഷ", ["स"] = "സ", ["ह"] = "ഹ", ["अ"] = "അ", ["आ"] = "ആ", ["इ"] = "ഇ", ["ई"] = "ഈ", ["उ"] = "ഉ", ["ऊ"] = "ഊ", ["ऋ"] = "ഋ", ["ॠ"] = "ൠ", ["ऌ"] = "ഌ", ["ॡ"] = "ൡ", ["ऎ"] = "എ", ["ए"] = "ഏ", ["ऐ"] = "ഐ", ["ऒ"] = "ഒ", ["ओ"] = "ഓ", ["औ"] = "ഔ", ["ा"] = "ാ", ["ि"] = "ി", ["ी"] = "ീ", ["ु"] = "ു", ["ू"] = "ൂ", ["ृ"] = "ൃ", ["ॄ"] = "ൄ", ["ॢ"] = "ൢ", ["ॣ"] = "ൣ", ["ॆ"] = "െ", ["े"] = "േ", ["ै"] = "ൈ", ["ॊ"] = "ൊ", ["ो"] = "ോ", ["ौ"] = "ൗ", ["्"] = "്", ["ं"] = "ം", ["ः"] = "ഃ", ["ँ"] = "ഁ", ["ऽ"] = "ഽ", ["ॐ"] = "ഓം", ["०"] = "൦", ["१"] = "൧", ["२"] = "൨", ["३"] = "൩", ["४"] = "൪", ["५"] = "൫", ["६"] = "൬", ["७"] = "൭", ["८"] = "൮", ["९"] = "൯" } -- Override returns text even if some characters cannot be transliterated. function export.tr(text, lang, sc, override) local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*" local Mlym = require("Module:scripts").getByCode("Mlym") text = mw.ustring.toNFD(text) for digraph, replacement in pairs(twoChars) do text = string.gsub(text, digraph, replacement) end text = string.gsub(text, UTF8_char, oneChar) text = mw.ustring.toNFC(text) local reducedText = mw.ustring.gsub(mw.ustring.gsub(text, "<.->", ""), "[%s%p\n]+", "") if mw.ustring.len(reducedText) == Mlym:countCharacters(reducedText) or override then return text else return nil end end return export snujif316v8sg55eaq5cydvh5ywnv1r মডিউল:Deva-Newa-translit/testcases 828 168571 510123 2026-06-07T12:45:13Z RedminBot 9553 [[en:Module:Deva-Newa-translit/testcases]] থেকে আনা হলো 510123 Scribunto text/plain -- Unit tests for [[Module:Deva-Newa-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local transliterate = require('Module:Deva-Newa-translit').tr local function tag(text) return '<span class="Newa" lang="new">' .. text .. '</span>' end local options = { display = tag } --TO DO function tests:do_test_translit(deva, newa, xlit) self:equals('<span class="Deva" lang="new">[[' .. deva .. '#Newar|' .. deva .. ']]</span>', transliterate(deva, 'new', 'Deva'), newa, options) end function tests:test_translit_newa() local examples = { { 'न्ह', '𑐤' }, { 'ङ्ह', '𑐓' }, { 'र्ह', '𑐭' }, { 'ल्ह', '𑐯' }, { 'म्ह', '𑐪' }, { 'ञ्ह', '𑐙' }, } self:iterate(examples, 'do_test_translit') end return tests 2kx9i015df5rs1hxfb6uf8cdyzewp6s মডিউল:Deva-Sind-translit/testcases 828 168572 510124 2026-06-07T12:45:14Z RedminBot 9553 [[en:Module:Deva-Sind-translit/testcases]] থেকে আনা হলো 510124 Scribunto text/plain local tests = require('Module:UnitTests') local transliterate = require('Module:Deva-Sind-translit').tr local function tag(text) return '<span class="Sind" lang="snd">' .. text .. '</span>' end local options = { display = tag } --TO DO function tests:do_test_translit(deva, sind, xlit) self:equals('<span class="Deva" lang="snd">[[' .. deva .. '#Sindhi|' .. deva .. ']]</span>', transliterate(deva, 'snd', 'Deva'), sind, options) end function tests:test_translit_khudawadi() local examples = { { 'ऐं', '𑊷𑋟' }, { 'छेड़', '𑋁𑋥𑋊' }, { 'भाङो', '𑋖𑋠𑊿𑋧' }, { 'मालु', '𑋗𑋠𑋚𑋣' }, { 'सिंधी', '𑋝𑋡𑋟𑋐𑋢' }, } self:iterate(examples, 'do_test_translit') end return tests o3rqq82vaei7lxo0vkjbg6ulq6l67f8 মডিউল:Deva-Tibt-translit/testcases 828 168573 510125 2026-06-07T12:45:15Z RedminBot 9553 [[en:Module:Deva-Tibt-translit/testcases]] থেকে আনা হলো 510125 Scribunto text/plain -- Unit tests for [[Module:Deva-Tibt-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local transliterate = require('Module:Deva-Tibt-translit').tr local function tag(text) return '<span class="Tibt" lang="xsr">' .. text .. '</span>' end local options = { display = tag } --TO DO function tests:do_test_translit(deva, tibt, xlit) self:equals('<span class="Deva" lang="xsr">[[' .. deva .. '#Sherpa|' .. deva .. ']]</span>', transliterate(deva, 'xsr', 'Deva'), tibt, options) end function tests:test_translit_tibetan() local examples = { { 'ख्योरो', 'ཁྱོརོ' }, } self:iterate(examples, 'do_test_translit') end return tests ad1yayvd01lt4629qpelb5xnwpj6nyz মডিউল:Deva-Tirh-translit/testcases 828 168574 510126 2026-06-07T12:45:15Z RedminBot 9553 [[en:Module:Deva-Tirh-translit/testcases]] থেকে আনা হলো 510126 Scribunto text/plain -- Unit tests for [[Module:Deva-Tirh-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local transliterate = require('Module:Deva-Tirh-translit').tr local function tag(text) return '<span class="Tirh" lang="mai">' .. text .. '</span>' end local options = { display = tag } --TO DO function tests:do_test_translit(deva, tirh, xlit) self:equals('<span class="Deva" lang="mai">[[' .. deva .. '#Maithili|' .. deva .. ']]</span>', transliterate(deva, 'mai', 'Deva'), tirh, options) end function tests:test_translit_tirhuta() local examples = { { 'अनुच्छेद १:सभ मानव जन्मतः स्वतन्त्र अछि तथा गरिमा आ अधिकारमे समान अछि। सभकेँ अपन–अपन बुद्धि आ विवेक छैक आओर सभकेँ एक दोसरक प्रति सौहार्दपूर्ण व्यवहार करबाक चाही।', '𑒁𑒢𑒳𑒔𑓂𑒕𑒹𑒠 𑓑:𑒮𑒦 𑒧𑒰𑒢𑒫 𑒖𑒢𑓂𑒧𑒞𑓁 𑒮𑓂𑒫𑒞𑒢𑓂𑒞𑓂𑒩 𑒁𑒕𑒱 𑒞𑒟𑒰 𑒑𑒩𑒱𑒧𑒰 𑒂 𑒁𑒡𑒱𑒏𑒰𑒩𑒧𑒹 𑒮𑒧𑒰𑒢 𑒁𑒕𑒱। 𑒮𑒦𑒏𑒹𑒿 𑒁𑒣𑒢–𑒁𑒣𑒢 𑒥𑒳𑒠𑓂𑒡𑒱 𑒂 𑒫𑒱𑒫𑒹𑒏 𑒕𑒻𑒏 𑒂𑒍𑒩 𑒮𑒦𑒏𑒹𑒿 𑒋𑒏 𑒠𑒼𑒮𑒩𑒏 𑒣𑓂𑒩𑒞𑒱 𑒮𑒾𑒯𑒰𑒩𑓂𑒠𑒣𑒴𑒩𑓂𑒝 𑒫𑓂𑒨𑒫𑒯𑒰𑒩 𑒏𑒩𑒥𑒰𑒏 𑒔𑒰𑒯𑒲।' }, } self:iterate(examples, 'do_test_translit') end return tests ekk8oo2lj57h9crchq3mje7sxvaj016 মডিউল:Diak-translit 828 168575 510127 2026-06-07T12:45:16Z RedminBot 9553 [[en:Module:Diak-translit]] থেকে আনা হলো 510127 Scribunto text/plain local export = {} local u = mw.ustring.char local consonants = { --consonants ['𑤌']='k', ['𑤍']='kh', ['𑤎']='g', ['𑤏']='gh', ['𑤏']='ṅ', ['𑤑']='c', ['𑤒']='ch', ['𑤓']='j', ['𑤕']='ñ', ['𑤖']='ṭ', ['𑤘']='ḍ', ['𑤙']='ḍh', ['𑤚']='ṇ', ['𑤛']='t', ['𑤜']='th', ['𑤝']='d', ['𑤞']='dh', ['𑤟']='n', ['𑤠']='p', ['𑤡']='ph', ['𑤢']='b', ['𑤣']='bh', ['𑤤']='m', ['𑤥']='y', ['𑤦']='ẏ', ['𑤧']='r', ['𑤨']='l', ['𑤩']='v', ['𑤮']='ḷ', ['𑤪']='ś', ['𑤫']='ṣ', ['𑤬']='s', ['𑤭']='h', ['𑤯']='z', ['𑥀']='y', ['𑥂']='r', ['f']='f' } local diacritics = { --matras ['𑤰']='ā', ['𑤱']='i', ['𑤲']='ī', ['𑤳']='u', ['𑤴']='ū', ['𑤵']='e', ['𑤷']='ai', ['𑤸']='o', --virama ['𑤾'] = '', --halant ['𑤽'] = 'ᵘ', } local tt = { --vowels ['𑤀']='a', ['𑤁']='ā', ['𑤂']='i', ['𑤃']='ī', ['𑤄']='u', ['𑤅']='ū', ['𑤆']='e', ['𑤉']='o', ['𑤿']='ⁿ', ['𑥁']='r', -- chandrabindu ['𑤼']='m̐', --until a better method is found -- anusvara ['𑤻']='ṃ', --until a better method is found --numerals ['𑥐']='0', ['𑥑']='1', ['𑥒']='2', ['𑥓']='3', ['𑥔']='4', ['𑥕']='5', ['𑥖']='6', ['𑥗']='7', ['𑥘']='8', ['𑥙']='9', --punctuation ['𑥄']='.', --double danda ['𑥅']='.', --gap filler ['𑥆']='.' --end of text mark } function export.tr(text, lang, sc) if sc ~= "Diak" then return nil end text = mw.ustring.gsub(text,'𑥀','𑤾𑥀') text = mw.ustring.gsub(text,'𑥂','𑤾𑥂') text = mw.ustring.gsub(text,'𑤠𑥃','f') text = mw.ustring.gsub( text, '([f𑤌-𑤯𑥀𑥂])'.. '([𑤰𑤱𑤲𑤳𑤴𑤵𑤷𑤸𑤽𑤾]?)', function(c, d) if d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.[𑤾𑤽]?', tt) text = mw.ustring.gsub(text," ?[𑥄𑥅𑥆]",".") text = mw.ustring.gsub(text,"ⁿb","ᵐb") return text end return export fe67vn5k24sqtq3gavitqnogfhvsv6r মডিউল:Elba-translit 828 168576 510128 2026-06-07T12:45:17Z RedminBot 9553 [[en:Module:Elba-translit]] থেকে আনা হলো 510128 Scribunto text/plain local export = {} local tt = { ["𐔀"] = "a", ["𐔁"] = "b", ["𐔂"] = "c", ["𐔃"] = "ç", ["𐔄"] = "d", ["𐔅"] = "nd", ["𐔆"] = "dh", ["𐔇"] = "e", ["𐔈"] = "ë", ["𐔉"] = "f", ["𐔊"] = "g", ["𐔋"] = "gj", ["𐔌"] = "h", ["𐔍"] = "i", ["𐔎"] = "j", ["𐔏"] = "k", ["𐔐"] = "l", ["𐔑"] = "ll", ["𐔒"] = "m", ["𐔓"] = "n", ["𐔔"] = "ñ", ["𐔕"] = "nj", ["𐔖"] = "o", ["𐔗"] = "p", ["𐔘"] = "q", ["𐔙"] = "r", ["𐔚"] = "rr", ["𐔛"] = "s", ["𐔜"] = "sh", ["𐔝"] = "t", ["𐔞"] = "th", ["𐔟"] = "u", ["𐔠"] = "v", ["𐔡"] = "x", ["𐔢"] = "y", ["𐔣"] = "z", ["𐔤"] = "zh", ["𐔥"] = "ɣ", ["𐔦"] = "ɣ²", ["𐔧"] = "ꭓ", -- TODO: clarify when the two ghayns are used. }; function export.tr(text, lang, sc) return (mw.ustring.gsub(text, '[𐔀-𐔧]', tt)) end return export pee975r3xry4wuevtkufajgnxxmq6sd মডিউল:Ethi-translit/testcases 828 168577 510129 2026-06-07T12:45:17Z RedminBot 9553 [[en:Module:Ethi-translit/testcases]] থেকে আনা হলো 510129 Scribunto text/plain -- Unit tests for [[Module:Ethi-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ethi_translit = require('Module:Ethi-translit') --TO DO function tests:do_test_translit(ethi, roman, xlit) self:equals('<span class="Ethi" lang="am">[[' .. ethi .. '#Ethi|' .. ethi .. ']]</span>', ethi_translit.tr(ethi, 'am', 'Ethi'), roman) end function tests:test_translit_ethi() local examples = { { 'ስም', 'səm' }, { 'እንሽላሊት', 'ʾənšəlalit' }, { 'ፎርማጆ', 'formaǧo' }, { 'ግንደ፡ቆርቁር', 'gəndä ḳorḳur' }, { 'ኢትዮጵያ', 'ʾityop̣ya' }, { 'አዲስ፡አበባ', 'ʾädis ʾäbäba' }, { 'ዩክሬን', 'yukren' }, { 'አፍጋኒስታን', 'ʾäfganistan' }, { 'አውራ፡ዶሮ', 'ʾäwra doro' }, -- it's geminated "birrabirro" but it's not expressed graphically { 'ቢራቢሮ', 'birabiro' }, { 'አንትሙ', 'ʾäntəmu'}, { 'የውሃ፡ድብ', "yäwha dəb"}, --geminated but not expressed { 'ልብን', "ləbn"}, { 'ቁጥር፡ጋር', 'ḳuṭr gar' }, { 'አናቅይ', 'ʾänaḳəy' }, } self:iterate(examples, 'do_test_translit') end return tests fs5rlpqy7l1k3lhpuwt2ej62g1cq0rs মডিউল:Geok-translit 828 168578 510130 2026-06-07T12:45:18Z RedminBot 9553 [[en:Module:Geok-translit]] থেকে আনা হলো 510130 Scribunto text/plain local export = {} -- Keep synchronized with [[Module:Geor-translit]] and [[Module:sva-translit]] local gsub = mw.ustring.gsub local mapping = { -- Nuskhuri ["ⴀ"]="a", ["ⴁ"]="b", ["ⴂ"]="g", ["ⴃ"]="d", ["ⴄ"]="e", ["ⴅ"]="v", ["ⴆ"]="z", ["ⴡ"]="ē", ["ⴇ"]="t", ["ⴈ"]="i", ["ⴉ"]="ḳ", ["ⴊ"]="l", ["ⴋ"]="m", ["ⴌ"]="n", ["ⴢ"]="y", ["ⴍ"]="o", ["ⴎ"]="ṗ", ["ⴏ"]="ž", ["ⴐ"]="r", ["ⴑ"]="s", ["ⴒ"]="ṭ", ["ⴣ"]="wi", ["ⴓ"]="u", ["ⴔ"]="p", ["ⴕ"]="k", ["ⴖ"]="ɣ", ["ⴗ"]="q̇", ["ⴘ"]="š", ["ⴙ"]="č", ["ⴚ"]="c", ["ⴛ"]="ʒ", ["ⴜ"]="c̣", ["ⴝ"]="č̣", ["ⴞ"]="x", ["ⴤ"]="q", ["ⴟ"]="ǯ", ["ⴠ"]="h", ["ⴥ"]="ō", ["ⴧ"]="ə", ["ⴭ"]="ə", -- Asomtavruli ["Ⴀ"]="a", ["Ⴁ"]="b", ["Ⴂ"]="g", ["Ⴃ"]="d", ["Ⴄ"]="e", ["Ⴅ"]="v", ["Ⴆ"]="z", ["Ⴡ"]="ē", ["Ⴇ"]="t", ["Ⴈ"]="i", ["Ⴉ"]="ḳ", ["Ⴊ"]="l", ["Ⴋ"]="m", ["Ⴌ"]="n", ["Ⴢ"]="y", ["Ⴍ"]="o", ["Ⴎ"]="ṗ", ["Ⴏ"]="ž", ["Ⴐ"]="r", ["Ⴑ"]="s", ["Ⴒ"]="ṭ", ["Ⴣ"]="wi", ["Ⴓ"]="u", ["Ⴔ"]="p", ["Ⴕ"]="k", ["Ⴖ"]="ɣ", ["Ⴗ"]="q̇", ["Ⴘ"]="š", ["Ⴙ"]="č", ["Ⴚ"]="c", ["Ⴛ"]="ʒ", ["Ⴜ"]="c̣", ["Ⴝ"]="č̣", ["Ⴞ"]="x", ["Ⴤ"]="q", ["Ⴟ"]="ǯ", ["Ⴠ"]="h", ["Ⴥ"]="ō", ["Ⴧ"]="ə", ["Ⴭ"]="ə", } local replacements = { ['ႭჃ'] = 'u', } function export.tr(text, lang, sc) if sc and sc ~= "Geok" then return nil end for regex, replacement in pairs(replacements) do text = mw.ustring.gsub(text, regex, replacement) end text = gsub(text, '.', mapping) return text end return export m7xwmilns67wl28pi7th4a3s1sdcxpt মডিউল:Geor-translit/testcases 828 168579 510131 2026-06-07T12:45:18Z RedminBot 9553 [[en:Module:Geor-translit/testcases]] থেকে আনা হলো 510131 Scribunto text/plain return require("Module:transliteration module testcases") { module = "Geor-translit", examples = { { "მხედრული ნუსხური", "mxedruli nusxuri" }, { "ᲛᲮᲔᲓᲠᲣᲚᲘ ᲛᲗᲐᲕᲠᲣᲚᲘ", "MXEDRULI MTAVRULI" }, }, sc = "Geor", lang = "ka", } 66ply7r6g9n9esqbr5kgudyimtc26r3 মডিউল:Glag-translit 828 168580 510132 2026-06-07T12:45:19Z RedminBot 9553 [[en:Module:Glag-translit]] থেকে আনা হলো 510132 Scribunto text/plain local export = {} local U = mw.ustring.char local letters = { ["common"] = { ["Ⰰ"] = 'A', ["ⰰ"] = 'a', ["Ⱝ"] = 'A', ["ⱝ"] = 'a', ["Ⰱ"] = 'B', ["ⰱ"] = 'b', ["Ⰲ"] = 'V', ["ⰲ"] = 'v', ["Ⰳ"] = 'G', ["ⰳ"] = 'g', ["Ⰴ"] = 'D', ["ⰴ"] = 'd', ["Ⰵ"] = 'E', ["ⰵ"] = 'e', ["Ⰶ"] = 'Ž', ["ⰶ"] = 'ž', ["Ⰷ"] = 'Dz', ["ⰷ"] = 'dz', ["Ⰸ"] = 'Z', ["ⰸ"] = 'z', ["Ⰹ"] = 'I', ["ⰹ"] = 'i', ["Ⰺ"] = 'I', ["ⰺ"] = 'i', ["Ⰻ"] = 'I', ["ⰻ"] = 'i', ["Ⰼ"] = 'Đ', ["ⰼ"] = 'đ', ["Ⰽ"] = 'K', ["ⰽ"] = 'k', ["Ⰾ"] = 'L', ["ⰾ"] = 'l', ["Ⰿ"] = 'M', ["ⰿ"] = 'm', ["Ⱞ"] = 'M', ["ⱞ"] = 'm', ["Ⱀ"] = 'N', ["ⱀ"] = 'n', ["Ⱁ"] = 'O', ["ⱁ"] = 'o', ["Ⱉ"] = 'O', ["ⱉ"] = 'o', ["Ⱂ"] = 'P', ["ⱂ"] = 'p', ["Ⱃ"] = 'R', ["ⱃ"] = 'r', ["Ⱄ"] = 'S', ["ⱄ"] = 's', ["Ⱅ"] = 'T', ["ⱅ"] = 't', ["Ⱆ"] = 'U', ["ⱆ"] = 'u', ["Ⱇ"] = 'F', ["ⱇ"] = 'f', ["Ⱈ"] = 'X', ["ⱈ"] = 'x', ["Ⱒ"] = 'X', ["ⱒ"] = 'x', ["Ⱌ"] = 'C', ["ⱌ"] = 'c', ["Ⱍ"] = 'Č', ["ⱍ"] = 'č', ["Ⱎ"] = 'Š', ["ⱎ"] = 'š', ["Ⱏ"] = 'Ŭ', ["ⱏ"] = 'ŭ', ["Ⱐ"] = 'Ĭ', ["ⱐ"] = 'ĭ', ["Ⱜ"] = 'Ĭ', ["ⱜ"] = 'ĭ', ["Ⱑ"] = 'Ě', ["ⱑ"] = 'ě', ["Ⱓ"] = 'Ju', ["ⱓ"] = 'ju', ["Ⱔ"] = 'Ę', ["ⱔ"] = 'ę', ["Ⱕ"] = 'Y̨', ["ⱕ"] = 'y̨', ["Ⱗ"] = 'Ję', ["ⱗ"] = 'ję', ["Ⱘ"] = 'Ǫ', ["ⱘ"] = 'ǫ', ["Ⱖ"] = 'Ǫ', ["ⱖ"] = 'ǫ', ["Ⱙ"] = 'Jǫ', ["ⱙ"] = 'jǫ', ["Ⱚ"] = 'Θ', ["ⱚ"] = 'θ', ["Ⱛ"] = 'Ü', ["ⱛ"] = 'ü', ["Ⱋ"] = 'Št', ["ⱋ"] = 'št' }, ["zle-ono"] = { ["Ⱌ"] = 'Ć', ["ⱌ"] = 'ć', ["Ⱍ"] = 'Ć', ["ⱍ"] = 'ć', ["Ⱋ"] = 'Ść', ["ⱋ"] = 'ść' } } local digraphs = { ["common"] = { ["Ⱏ[ⰉⰊⰋⰹⰺⰻ]"] = "Y", ["ⱏ[ⰹⰺⰻ]"] = "y", }, ["zle-ono"] = { ["ⱏ[ⰹⰺⰻ]"] = 'ŷi', } } function export.tr(text, lang, sc) if not sc then sc = require("Module:languages").getByCode(lang):findBestScript(text):getCode() end local function digraph_subst(digraphs) for key, repl in pairs(digraphs) do text = mw.ustring.gsub(text, key, repl) end end if sc ~= "Glag" then text = nil else -- Transliterate the kamora as prime text = mw.ustring.gsub(text, U(0x0484), "ʹ") if digraphs[lang] then digraph_subst(digraphs[lang]) end digraph_subst(digraphs["common"]) if letters[lang] then text = mw.ustring.gsub(text, '.', letters[lang]) end text = mw.ustring.gsub(text, '.', letters["common"]) -- Transliterate the titlo and vzmet as colon. text = mw.ustring.gsub(text, "[" .. U(0x0483) .. U(0xA66F) .. "]", ":") end return text end return export 1x7ffbwugu4d88axvwlk1lcu9394755 মডিউল:Guru-translit/testcases 828 168581 510133 2026-06-07T12:45:20Z RedminBot 9553 [[en:Module:Guru-translit/testcases]] থেকে আনা হলো 510133 Scribunto text/plain return require("Module:transliteration module testcases") { module = "Guru-translit", examples = { { "ਉਦਾਹਰਨ", "udāhran" }, { "ਯਕੀਨ", "yakīn"}, { "ਯੱਕਾ", "yakā"}, { "ਯੱਕਦਮ", "yakdam"}, { "ਯਾਰੀ", "yārī"}, { "ਯੂਸਫ਼", "yūsaf"}, { "ਯੂਨੀਵਰਸਟੀ", "yūnīvarasṭī"}, { "ਵੇਪਰਵਾਹ", "veparvāh"}, { "ਸਿੱਖਣਾ", "sikhṇā" }, { "ਲਿਖਣਾ", "likhṇā" }, { "ਜ਼ਿੰਦਗੀ", "zindagī" }, { "ਦੋਸਤ", "dost" }, { "ਹਸਤੀ", "hastī" }, { "ਦੋਸਤੀ", "dostī" }, { "ਫ਼੍ਰਾਂਸੀਸੀ", "frānsīsī" }, { "ਕਈ", "kaī" }, { "ਧੰਨਵਾਦ", "dhannvād" }, { "ਨੱਠਣਾ", "naṭhṇā" }, { "ਪੜ੍ਹਣਾ", "paṛhṇā" }, { "ਪਾਰਦਰਸ਼ੀ", "pārdarshī" }, { "ਮਨੁੱਖਤਾ", "manukhtā" }, { "ਮੰਗਲਵਾਰ", "maṅgalvār" }, { "ਸ਼ੁੱਕਰਵਾਰ", "shukarvār" }, { "ਸਿੱਖਣਾ", "sikhṇā" }, { "ਦਿਲ", "dil" }, { "ਕਬੂਤਰ", "kabūtar" }, { "ਅਲਮਾਰੀ", "almārī" }, { "ਭਰ", "bhar" }, { "ਅਦਬ", "adab" }, { "ਕਦਰ", "kadar" }, { "ਕੁਦਰਤ", "kudrat" }, { "ਇਕਰਾਰ", "ekrār" }, { "ਅਫ਼ਸਰ", "afsar" }, { "ਫ਼ਰਿਸ਼ਤਾ", "farishtā" }, { "ਜਿਸਮ", "jisam" }, { "ਅਧਿਆਪਕ", "adhiāpak" }, { "ਸਤਿਗੁਰੂ", "satigurū" }, { "ਮਗਰਮੱਛ", "magarmacḥ" }, { "ਰਾਜਧਾਨੀ", "rājdhānī" }, { "ਰਿਆਸਤ", "riāsat" }, { "ਰੇਲਗੱਡੀ", "relgaḍī" }, { "ਸਾਈਕਲ", "sāēkal" }, { "ਦਰਵਾਜ਼ਾ", "darvāzā" }, { "ਉਸਤਰਾ", "ustrā" }, { "ਚਿਹਰਾ", "chihrā" }, { "ਕ਼ਲਮ", "qalam" }, }, sc = "Guru", lang = "pa", } rapg2unt1kc0wy3ip5m09pbdhv2sbdw মডিউল:Hebr-Arab-translit/testcases 828 168582 510134 2026-06-07T12:45:20Z RedminBot 9553 [[en:Module:Hebr-Arab-translit/testcases]] থেকে আনা হলো 510134 Scribunto text/plain local tests = require('Module:UnitTests') local transliterate = require('Module:Hebr-Arab-translit').tr local function tag(text) return '<span class="Hebr" lang="he">' .. text .. '</span>' end local options = { display = tag } --TO DO function tests:do_test_translit(arab, hebr, xlit) self:equals('<span class="Arab" lang="ar">[[' .. arab .. '#Hebrew|' .. arab .. ']]</span>', transliterate(arab, 'he', 'Hebr'), hebr, -- expected script options) end function tests:test_translit_hebrew() local examples = { { "בַּיִת", "بَيِت" }, --j { "בֵּית", "" }, { "עַכּוֹ", ""}, { "בָּתִּים", "بּٰتِيم" }, { "מַחֲנֶה", "maḥăne" }, { "בָּרָא", "بּٰرٰء" }, { "רֶגֶל", "reḡel" }, { "כֹּהֵן", "kōhēn" }, { "מֶלֶךְ", "meleḵ" }, { "מַמְלָכָה", "مَمْلٰكٰه" }, { "הַמַּמְלָכָה", "هَمּَمْلٰكٰه" }, { "הַלְּלוּיָהּ", "هَلּْلُويٰهּ" }, { "הַלְלוּיָהּ", "هَلْلُويٰهּ" }, { "יָדַע", "يٰذَع" }, { "שָׁבוּעַ", "شٰبُوعَ" }, { "רוּחַ", "رُوحَ" }, { "גָּבֹהַּ", "جٰبوهּَ" }, { "מָשִׁיחַ", "مٰشِيحَ" }, { "רֵיחַ", "rēaḥ" }, { "שָׂדֶה", "śāḏe" }, { "שְׂדֵה", "śəḏē" }, { "בָּנַי", "bānay" }, { "בְּנֵי", "bənē" }, { "צָרְכִּי", "صٰرْكِي" }, { "חָכְמָה", "حٰكْمٰه",}, { "שִׁפְרָה", "شِفْرٰه" }, { "שָׁכְבְּךָ", "šoḵbəḵā" }, { "נִשְׂרְפָה", "نِسْرْفٰه" }, { "בָּנָיו", "bānāw" }, { "בָּנֶיהָ", "bānehā" }, { "מִצְוֹת", "مِصْوث" }, { "זִוּוּג", "زُِوُوج" }, { "רֹאשׁ", "rōš" }, { "רֵאשִׁית", "rēšīṯ" }, { "רִאשׁוֹן", "rīšōn" }, { "מְלָאכָה", "مْلٰأكٰه" }, { "מְלֶאכֶת", "məleḵeṯ" }, { "חֵטְא", "ḥēṭ" }, { "בָּרָאתָ", "bārāṯā" }, { "חַטֹּאות", "ḥaṭṭōṯ" }, { "יְראוּ", "yərū" }, { "וַיֶּאְסֹר", "wayyeʾsōr" }, { "הָחְלַט", "hoḥlaṭ" }, { "וַיֵּבְךְּ", "wayyēḇk" }, { "אַרְאֶךָּ", "ʾarʾekkā" }, { "וַיַּשְׁקְ", "wayyašq" }, { "אַתְּ", "ʾatt" }, { "וּוָווֹ", "ūwāwō" }, { "וָו", "wāw" }, { "תָּו", "tāw" }, { "קַו", "qaw" }, { "לָאו", "lāw" }, { "חַי", "حَي" }, { "חָי", "حٰي", "pausal" }, { "פִּיו", "فِيو" }, { "כִּסְלֵו", "kislēw" }, { 'קדמוני', "قذموني"}, { 'אלרגיה', "ألرجية"}, } self:iterate(examples, 'do_test_translit') end return tests 7c9y0kcx5lcojmj39yi3pqcde3s0jm7 মডিউল:Hgul-translit 828 168583 510135 2026-06-07T12:45:21Z RedminBot 9553 [[en:Module:Hgul-translit]] থেকে আনা হলো 510135 Scribunto text/plain -- Module:Ko-translit.lua -- Hangul -> Revised Romanization (RR) -- Usage: export.tr(text, lang, sc, options) -- Options: -- phonetic = true -- apply simple liaison/voicing before vowel-starting syllables local export = {} local concat = table.concat local insert = table.insert local u = mw.ustring local load_data = mw.loadData -- Basic RR data (choseong, jungseong, jongseong indices) -- Indices follow Hangul syllable decomposition formula: -- syllable_index = (choseong_index * 588) + (jungseong_index * 28) + jongseong_index -- choseong: 0..18, jungseong: 0..20, jongseong: 0..27 local data = { choseong = { [0] = "g", "kk", "n", "d", "tt", "r", "m", "b", "pp", "s", "ss", "", "j", "jj", "ch", "k", "t", "p", "h" }, jungseong = { [0] = "a", "ae", "ya", "yae", "eo", "e", "yeo", "ye", "o", "wa", "wae", "oe", "yo", "u", "wo", "we", "wi", "yu", "eu", "ui", "i" }, -- Jongseong mapping uses common RR orthographic representations. -- Compound finals are mapped to the orthographic-final sound used in RR -- (this generally matches the widely used mapping in romanizers). jongseong = { [0] = "", "k", -- ㄱ "k", -- ㄲ "k", -- ㄳ -> usually written as k (practically "ks" pronounced, but RR uses k) "n", -- ㄴ "n", -- ㄵ "n", -- ㄶ "t", -- ㄷ "l", -- ㄹ "k", -- ㄺ "m", -- ㄻ "p", -- ㄼ "l", -- ㄽ "t", -- ㄾ "p", -- ㄿ "l", -- ㅀ "m", -- ㅁ "p", -- ㅂ "p", -- ㅄ "t", -- ㅅ "t", -- ㅆ "ng",-- ㅇ "t", -- ㅈ "t", -- ㅊ "k", -- ㅋ "t", -- ㅌ "p", -- ㅍ "t" -- ㅎ } } -- Helper: return codepoint of UTF-8 character local function cp(ch) return u.codepoint(ch) end -- Returns choseong, jungseong, jongseong indices for a Hangul syllable. -- Returns nil if char is not a modern Hangul syllable block. local function split_syllable(s) local code = cp(s) if not code then return nil end -- modern Hangul syllables: AC00..D7A3 if code < 0xAC00 or code > 0xD7A3 then return nil end local offset = code - 0xAC00 local choseong = math.floor(offset / 588) local jungseong = math.floor((offset % 588) / 28) local jongseong = offset % 28 return choseong, jungseong, jongseong end -- Simple phonetic liaison mapping for final consonants when next syllable starts with vowel (ㅇ onset) -- This is intentionally conservative: only k/t/p → g/d/b (the most salient voicing before vowels). local liaison_voicing = { ["k"] = "g", ["t"] = "d", ["p"] = "b" } -- Transliterate one Hangul syllable block according to RR (optionally applying liaison with context) -- ctx = { next_is_vowel = bool, prev_final = string or nil, phonetic = bool } local function translit_syllable_block(ch, ctx) local c, v, f = split_syllable(ch) if not c then -- Not a Hangul syllable block: return char unchanged return ch, false, nil end local initial = data.choseong[c] or "" local medial = data.jungseong[v] or "" local final = data.jongseong[f] or "" -- Handle ㅇ initial (null onset) — RR omits an initial for vowel-starting syllables if initial == "" then initial = "" end -- If phonetic liaison is requested and next syllable is vowel-starting (i.e., next initial is empty string), -- apply simple voicing to finals k/t/p -> g/d/b in the romanization. if ctx and ctx.next_is_vowel and ctx.phonetic and final and liaison_voicing[final] then final = liaison_voicing[final] end -- Return transliteration of this block and whether this block begins with a vowel (for next-block context) local begins_with_vowel = (initial == "" and medial ~= "") return initial .. medial .. final, begins_with_vowel, final end -- Main export.tr function, matching the Hrkt module signature -- text: UTF-8 string to transliterate -- lang, sc: ignored (kept for API compatibility) -- options: -- phonetic = true|false (simple liaison) function export.tr(text, lang, sc, options) options = options or {} local phonetic = options.phonetic or false local out = {} local chars = {} -- Split text into unicode characters (safe UTF-8 iterator) for ch in text:gmatch(".[\128-\191]*") do insert(chars, ch) end -- Precompute whether next block is vowel-starting (initial == ㅇ or not a Hangul block) local next_is_vowel = {} for i = 1, #chars do local nxt = chars[i + 1] if not nxt then next_is_vowel[i] = false else local c2 = split_syllable(nxt) -- next_is_vowel true if nxt is a Hangul syllable that has null initial (i.e., choseong index 11 -> ㅇ) if c2 then local choseong_index = c2 -- choseong index 11 corresponds to ㅇ null-initial in our choseong table (table index 11 -> "") -- But our data.choseong uses [0] = "g" ... so 11 -> "" indeed. next_is_vowel[i] = (c2 == 11) else -- If next char isn't Hangul syllable, treat as not vowel-starting next_is_vowel[i] = false end end end -- Iterate and transliterate each character/block for i, ch in ipairs(chars) do local ctx = { next_is_vowel = next_is_vowel[i], phonetic = phonetic } local outchunk, begins_with_vowel, final = translit_syllable_block(ch, ctx) -- For non-Hangul characters, translit_syllable_block returns the char unchanged insert(out, outchunk) end return concat(out) end return export 27g27agnwby96y0ze97z081x0cwq6et মডিউল:Hrkt-translit/data/ain 828 168584 510136 2026-06-07T12:45:21Z RedminBot 9553 [[en:Module:Hrkt-translit/data/ain]] থেকে আনা হলো 510136 Scribunto text/plain -- [[Ainu]] transliteration data return require("Module:Hrkt-translit").process_data{ rom = { ["ぃ"] = "y", ["ぅ"] = "w", ["し"] = "si", ["ち"] = "ci", ["つ"] = "cu", ["ㇱ"] = "s", ["っ"] = "t", ["ふ"] = "hu", ["ゐ"] = "wi", ["ゑ"] = "we", }, digraph = { ["゚"] = { ["se"] = "ce", ["cu"] = "tu", ["to"] = "tu", }, }, tr_long = {}, flag_specialconsonant = { ["ci"] = true, }, } 8rp3ycyt8ad5xpawd6hh5jl1i8iv7rk মডিউল:Hrkt-translit/data/ams 828 168585 510137 2026-06-07T12:45:22Z RedminBot 9553 [[en:Module:Hrkt-translit/data/ams]] থেকে আনা হলো 510137 Scribunto text/plain -- [[Southern Amami Ōshima]] transliteration data local glottal = "\1" return require("Module:Hrkt-translit").process_data{ rom = { ["ぃ"] = "i:", ["し"] = "si", ["つ"] = "cu", ["ふ"] = "hu", }, digraph = { ["ん"] = { [glottal] = glottal .. "n" }, ["ぃ"] = { ["ke"] = "ki:", ["xe"] = "xi:", ["ge"] = "gi:", ["he"] = "hi:", ["pu"] = "pi:", ["bu"] = "bi:", ["te"] = "ti:", ["θe"] = "θi:", ["de"] = "di:", ["cu"] = "ci:", ["zu"] = "zi:", ["mu"] = "mi:", ["µu"] = "µi:", ["nu"] = "ni:", ["su"] = "si:", ["ru"] = "ri:", ["u"] = "wi:", ["pu"] = "hwi:", [glottal .. "u"] = glottal .. "wi:" }, ["ぇ"] = { ["ke"] = "kye", ["pe"] = "pye", ["chi"] = "cye", ["he"] = "he", }, ["ぉ"] = { ["cu"] = "co" }, --["ま"] = { [glottal] = "µa" }, ["む"] = { [glottal] = "µu" }, --["な"] = { [glottal] = "νa"}, ["に"] = { [glottal] = "νi"}, }, tr_gem = { ["ch"] = "t", [glottal .. "ch"] = "t", ["y"] = glottal, [glottal .. "y"] = glottal, ["w"] = glottal, [glottal .. "w"] = glottal, }, tr_voicing = { ["u"] = glottal .. "u", ["k"] = "g", ["s"] = "z", ["t"] = "d", ["c"] = "z", ["ch"] = glottal .. "ch", ["n"] = glottal .. "n", ["h"] = "b", ["m"] = glottal .. "m", ["y"] = glottal .. "y", ["r"] = glottal .. "r", ["w"] = glottal .. "w", }, tr_semivoicing = { ["u"] = "u~", ["k"] = "x", ["t"] = "θ", ["ch"] = "θ", ["c"] = "ç", ["h"] = "p", ["r"] = "l", }, tr_long = { ["aa"] = "ā", ["ii"] = "ī", ["uu"] = "ū", ["ee"] = "ē", ["oo"] = "ō", ["i:"] = "ï", ["i:i"] = "ï̄", ["ou"] = "ō", ["u~"] = "ũ", ["u~u~"] = "ũ̄", } } arbgv5cplubcpv8pf9yot4t35giamxd মডিউল:Hrkt-translit/data/ja 828 168586 510138 2026-06-07T12:45:22Z RedminBot 9553 [[en:Module:Hrkt-translit/data/ja]] থেকে আনা হলো 510138 Scribunto text/plain -- [[Japanese]] transliteration data return require("Module:Hrkt-translit").process_data{ digraph = { ["゚"] = { ["to"] = "tu", } }, } nf29igi2f7wuu7ohreq7qhysi1eklge মডিউল:Hrkt-translit/data/mvi 828 168587 510139 2026-06-07T12:45:23Z RedminBot 9553 [[en:Module:Hrkt-translit/data/mvi]] থেকে আনা হলো 510139 Scribunto text/plain -- [[Miyako]] transliteration data return require("Module:Hrkt-translit").process_data{ rom = { ["つ"] = "ts", ["ㇼ"] = "l", ["ㇽ"] = "l", }, digraph = { ["゚"] = { ["mu"] = "m", ["ru"] = "l", ["ri"] = "l", }, ["ㇲ"] = { ["ku"] = "ks", ["gu"] = "gz", ["pu"] = "ps", ["bu"] = "bz", ["mu"] = "mz", }, ["ㇽ"] = { ["mu"] = "ml", ["pu"] = "pl", ["bu"] = "bl", }, ["ㇷ"] = { ["ku"] = "kf" }, ["ぁ"] = { ["ts"] = "tsa", ["v"] = "va", }, ["ぃ"] = { ["v"] = "vi", ["i"] = "i:", ["ki"] = "ksi:", ["gi"] = "gzi:", ["ts"] = "tsi:", ["chi"] = "chi:", ["ni"] = "ni:", ["fu"] = "fi:", ["pi"] = "psi:", ["bi"] = "bzi:", ["mi"] = "mzi:", ["ri"] = "ri:", ["dzu"] = "dzi:", }, ["ぅ"] = { ["ts"] = "tsu", ["v"] = "vu", ["su"] = "su", ["dzu"] = "dzu", ["zu"] = "zu", }, ["ぇ"] = { ["ts"] = "tse", ["v"] = "ve", ["ke"] = "ke:", ["pe"] = "pe:" }, ["ぉ"] = { ["ts"] = "tso", ["v"] = "vo", }, }, tr_long = { ["aa"] = "ā", ["ii"] = "ī", ["uu"] = "ū", ["ee"] = "ē", ["oo"] = "ō", ["e:"] = "ë", ["e:e:"] = "ë̄", ["i:"] = "ï", ["i:i:"] = "ï̄", ["ou"] = "ō", ["u~"] = "ũ", ["u~u~"] = "ũ̄" }, tr_voicing = { ["u"] = "v", ["k"] = "g", ["s"] = "dz", ["sh"] = "j", ["t"] = "d", ["ch"] = "j", ["ts"] = "z", ["h"] = "b", ["f"] = "b", ["w"] = "v", }, tr_semivoicing = { ["i"] = "z", ["u"] = "u~", ["k"] = "ng", ["s"] = "z", ["sh"] = "gh", ["ch"] = "t", ["ts"] = "t", ["h"] = "p", ["f"] = "p", ["r"] = "l", }, flag_specialconsonant = { ["dzu"] = true }, } r0a3pvktmdbqbt2hx2pq2wae739ulmb মডিউল:Hrkt-translit/data/ryn 828 168588 510140 2026-06-07T12:45:23Z RedminBot 9553 [[en:Module:Hrkt-translit/data/ryn]] থেকে আনা হলো 510140 Scribunto text/plain -- [[Northern Amami Ōshima]] transliteration data local glottal = "\1" return require("Module:Hrkt-translit").process_data{ rom = { ["ぃ"] = "i:", ["し"] = "si", ["つ"] = "cu", ["ふ"] = "hu", }, digraph = { ["ん"] = { [glottal] = glottal .. "n" }, ["ぃ"] = { ["ke"] = "ki:", ["xe"] = "xi:", ["ge"] = "gi:", ["he"] = "hi:", ["pu"] = "pi:", ["bu"] = "bi:", ["te"] = "ti:", ["θe"] = "θi:", ["de"] = "di:", ["cu"] = "ci:", ["zu"] = "zi:", ["mu"] = "mi:", ["µu"] = "µi:", ["nu"] = "ni:", ["su"] = "si:", ["ru"] = "ri:", ["u"] = "wi:", ["pu"] = "hwi:", [glottal .. "u"] = glottal .. "wi:" }, ["ぇ"] = { ["ke"] = "kye", ["pe"] = "pye", ["chi"] = "cye", ["he"] = "he", }, ["ぉ"] = { ["cu"] = "co" }, --["ま"] = { [glottal] = "µa" }, ["む"] = { [glottal] = "µu" }, --["な"] = { [glottal] = "νa"}, ["に"] = { [glottal] = "νi"}, }, tr_gem = { ["ch"] = "t", [glottal .. "ch"] = "t", ["y"] = glottal, [glottal .. "y"] = glottal, ["w"] = glottal, [glottal .. "w"] = glottal, }, tr_voicing = { ["u"] = glottal .. "u", ["k"] = "g", ["s"] = "z", ["t"] = "d", ["c"] = "z", ["ch"] = glottal .. "ch", ["n"] = glottal .. "n", ["h"] = "b", ["m"] = glottal .. "m", ["y"] = glottal .. "y", ["r"] = glottal .. "r", ["w"] = glottal .. "w", }, tr_semivoicing = { ["u"] = "u~", ["k"] = "x", ["t"] = "θ", ["ch"] = "θ", ["c"] = "ç", ["h"] = "p", ["r"] = "l", }, tr_long = { ["aa"] = "ā", ["ii"] = "ī", ["uu"] = "ū", ["ee"] = "ē", ["oo"] = "ō", ["i:"] = "ï", ["i:i"] = "ï̄", ["ou"] = "ō", ["u~"] = "ũ", ["u~u~"] = "ũ̄", } } 65w0n8oyus81g9725j26wi100ftj2ab মডিউল:Hrkt-translit/data/rys 828 168589 510141 2026-06-07T12:45:23Z RedminBot 9553 [[en:Module:Hrkt-translit/data/rys]] থেকে আনা হলো 510141 Scribunto text/plain -- [[Yaeyama]] transliteration data return require("Module:Hrkt-translit").process_data{ digraph = { ["゚"] = { ["i"] = "i:", ["e"] = "e:", ["ru"] = "r", }, ["ぃ"] = { ["ki"] = "ki:", ["gi"] = "gi:", ["shi"] = "si:", ["ji"] = "zi:", ["tsu"] = "tsi:", ["ni"] = "ni:", ["pi"] = "pi:", ["bi"] = "bi:", ["mi"] = "mi:", ["ri"] = "ri:", }, ["ぇ"] = { ["ke"] = "ke:", ["ge"] = "ge:", ["ne"] = "ne:", ["pe"] = "pe:", ["be"] = "be:", ["me"] = "me:", ["re"] = "re:", }, }, tr_long = { ["aa"] = "ā", ["ii"] = "ī", ["uu"] = "ū", ["ee"] = "ē", ["oo"] = "ō", ["e:"] = "ë", ["e:e:"] = "ë̄", ["i:"] = "ï", ["i:i:"] = "ï̄", ["ou"] = "ō", ["u~"] = "ũ", ["u~u~"] = "ũ̄" }, } 7eptudh89t8uoxmzhnzpzwo3tjb7kd6 মডিউল:Hrkt-translit/data/ryu 828 168590 510142 2026-06-07T12:45:24Z RedminBot 9553 [[en:Module:Hrkt-translit/data/ryu]] থেকে আনা হলো 510142 Scribunto text/plain -- [[Okinawan]] transliteration data local glottal = "\1" return require("Module:Hrkt-translit").process_data{ rom = { ["ゐ"] = "wi", ["ゑ"] = "we", ["を"] = "wo" }, digraph = { ["ぃ"] = { ["i"] = "yi" }, ["ん"] = { [glottal] = glottal .. "n" }, }, tr_gem = { ["ch"] = "t", ["y"] = glottal, ["w"] = glottal, }, } jy5gf9srj1is352hn1xeyf0vavahnur মডিউল:Hrkt-translit/data/xug 828 168591 510143 2026-06-07T12:45:24Z RedminBot 9553 [[en:Module:Hrkt-translit/data/xug]] থেকে আনা হলো 510143 Scribunto text/plain -- [[Kunigami]] transliteration data local glottal = "\1" return require("Module:Hrkt-translit").process_data{ rom = { ["’か"] = "k'a", ["’き"] = "k'i", ["’く"] = "k'u", ["’け"] = "k'e", ["’こ"] = "k'o", ["’た"] = "t'a", ["’て"] = "te", ["’と"] = "t'o", }, digraph = { ["ん"] = { [glottal] = glottal .. "n" } }, tr_gem = { ["ch"] = "t", [glottal .. "ch"] = "t", ["y"] = glottal, [glottal .. "y"] = glottal, ["w"] = glottal, [glottal .. "w"] = glottal, }, } 2twrq7aapzqwjj7opwur4zmpha2xz7v মডিউল:Hrkt-translit/testcases 828 168592 510144 2026-06-07T12:45:24Z RedminBot 9553 [[en:Module:Hrkt-translit/testcases]] থেকে আনা হলো 510144 Scribunto text/plain local m = require("Module:Hrkt-translit") local t = require("Module:UnitTests") local options local function e(k, r, lang) return t:equals(k, m.tr(k, lang or "ja", nil, options), r) end function t:test_transliterate_kana() options = nil e("あ", "a") e("あぁ", "ā") e("ああ", "ā") e("あー", "ā") e("い", "i") e("いぃ", "yi") e("いい", "ī") e("いー", "ī") e("いぇ", "ye") e("う", "u") e("ゔ", "vu") e("うぁ", "wa") e("ゔぁ", "va") e("うぃ", "wi") e("ゔぃ", "vi") e("うぃぇ", "wye") e("ゔぃぇ", "vye") e("うぅ", "wu") e("うう", "ū") e("うー", "ū") e("うぇ", "we") e("ゔぇ", "ve") e("うぉ", "wo") e("ゔぉ", "vo") e("うゃ", "wya") e("ゔゃ", "vya") e("うゅ", "wyu") e("ゔゅ", "vyu") e("うょ", "wyo") e("ゔょ", "vyo") e("え", "e") e("えぃ", "ei") e("えい", "ei") e("えぇ", "ē") e("ええ", "ē") e("えー", "ē") e("お", "o") e("おぅ", "ou") e("おう", "ō") e("おぉ", "ō") e("おお", "ō") e("おー", "ō") e("か", "ka") e("が", "ga") e("かぁ", "kā") e("かあ", "kā") e("かー", "kā") e("がぁ", "gā") e("があ", "gā") e("がー", "gā") e("き", "ki") e("ぎ", "gi") e("きぃ", "kyi") e("きい", "kī") e("きー", "kī") e("ぎぃ", "gyi") e("ぎい", "gī") e("ぎー", "gī") e("きゃ", "kya") e("ぎゃ", "gya") e("きゃぁ", "kyā") e("きゃー", "kyā") e("きゃあ", "kyā") e("ぎゃぁ", "gyā") e("ぎゃー", "gyā") e("ぎゃあ", "gyā") e("きゅ", "kyu") e("ぎゅ", "gyu") e("きゅぅ", "kyū") e("きゅー", "kyū") e("きゅう", "kyū") e("ぎゅぅ", "gyū") e("ぎゅー", "gyū") e("ぎゅう", "gyū") e("きょ", "kyo") e("ぎょ", "gyo") e("きょぅ", "kyō") e("きょう", "kyō") e("ぎょぅ", "gyō") e("ぎょう", "gyō") e("きょぉ", "kyō") e("きょー", "kyō") e("きょお", "kyō") e("ぎょぉ", "gyō") e("ぎょー", "gyō") e("ぎょお", "gyō") e("く", "ku") e("ぐ", "gu") e("くぁ", "kwa") e("ぐぁ", "gwa") e("くぃ", "kwi") e("ぐぃ", "gwi") e("くぅ", "kwu") e("くう", "kū") e("くー", "kū") e("ぐぅ", "gwu") e("ぐう", "gū") e("ぐー", "gū") e("くぇ", "kwe") e("ぐぇ", "gwe") e("くぉ", "kwo") e("ぐぉ", "gwo") e("くゎ", "kwa") e("ぐゎ", "gwa") e("け", "ke") e("げ", "ge") e("けぃ", "kei") e("けい", "kei") e("げぃ", "gei") e("げい", "gei") e("けぇ", "kē") e("けえ", "kē") e("けー", "kē") e("げぇ", "gē") e("げえ", "gē") e("げー", "gē") e("こ", "ko") e("ご", "go") e("こぅ", "kō") e("こう", "kō") e("ごぅ", "gō") e("ごう", "gō") e("こぉ", "kō") e("こお", "kō") e("こー", "kō") e("ごぉ", "gō") e("ごお", "gō") e("ごー", "gō") e("さ", "sa") e("ざ", "za") e("さぁ", "sā") e("さあ", "sā") e("さー", "sā") e("ざぁ", "zā") e("ざあ", "zā") e("ざー", "zā") e("し", "shi") e("じ", "ji") e("しぃ", "shyi") e("しい", "shī") e("しー", "shī") e("じぃ", "jyi") e("じい", "jī") e("じー", "jī") e("しゃ", "sha") e("じゃ", "ja") e("しゃぁ", "shā") e("しゃー", "shā") e("しゃあ", "shā") e("じゃぁ", "jā") e("じゃー", "jā") e("じゃあ", "jā") e("しゅ", "shu") e("じゅ", "ju") e("しゅぅ", "shwu") e("しゅー", "shū") e("しゅう", "shū") e("じゅぅ", "jwu") e("じゅー", "jū") e("じゅう", "jū") e("しょ", "sho") e("じょ", "jo") e("しょぅ", "shō") e("しょう", "shō") e("じょぅ", "jō") e("じょう", "jō") e("しょぉ", "shō") e("しょー", "shō") e("しょお", "shō") e("じょぉ", "jō") e("じょー", "jō") e("じょお", "jō") e("す", "su") e("ず", "zu") e("すぁ", "swa") e("ずぁ", "zwa") e("すぃ", "si") e("ずぃ", "zi") e("すぃぇ", "sye") e("ずぃぇ", "zye") e("すぅ", "swu") e("すう", "sū") e("すー", "sū") e("ずぅ", "zwu") e("ずう", "zū") e("ずー", "zū") e("すぇ", "swe") e("ずぇ", "zwe") e("すぉ", "swo") e("ずぉ", "zwo") e("すゃ", "sya") e("ずゃ", "zya") e("すゅ", "syu") e("ずゅ", "zyu") e("すょ", "syo") e("ずょ", "zyo") e("すゎ", "swa") e("ずゎ", "zwa") e("せ", "se") e("ぜ", "ze") e("せぃ", "sei") e("せい", "sei") e("ぜぃ", "zei") e("ぜい", "zei") e("せぇ", "sē") e("せえ", "sē") e("せー", "sē") e("ぜぇ", "zē") e("ぜえ", "zē") e("ぜー", "zē") e("そ", "so") e("ぞ", "zo") e("そぅ", "sō") e("そう", "sō") e("ぞぅ", "zō") e("ぞう", "zō") e("そぉ", "sō") e("そお", "sō") e("そー", "sō") e("ぞぉ", "zō") e("ぞお", "zō") e("ぞー", "zō") e("た", "ta") e("だ", "da") e("たぁ", "tā") e("たあ", "tā") e("たー", "tā") e("だぁ", "dā") e("だあ", "dā") e("だー", "dā") e("ち", "chi") e("ぢ", "ji") e("ちぃ", "chyi") e("ちい", "chī") e("ちー", "chī") e("ぢぃ", "jyi") e("ぢい", "jī") e("ぢー", "jī") e("ちゃ", "cha") e("ぢゃ", "ja") e("ちゃぁ", "chā") e("ちゃー", "chā") e("ちゃあ", "chā") e("ぢゃぁ", "jā") e("ぢゃー", "jā") e("ぢゃあ", "jā") e("ちゅ", "chu") e("ぢゅ", "ju") e("ちゅぅ", "chwu") e("ちゅー", "chū") e("ちゅう", "chū") e("ぢゅぅ", "jwu") e("ぢゅー", "jū") e("ぢゅう", "jū") e("ちょ", "cho") e("ぢょ", "jo") e("ちょぅ", "chō") e("ちょう", "chō") e("ぢょぅ", "jō") e("ぢょう", "jō") e("ちょぉ", "chō") e("ちょー", "chō") e("ちょお", "chō") e("ぢょぉ", "jō") e("ぢょー", "jō") e("ぢょお", "jō") e("て", "te") e("で", "de") e("てぃ", "ti") e("てい", "tei") e("でぃ", "di") e("でい", "dei") e("てぃぇ", "tye") e("でぃぇ", "dye") e("てぇ", "tē") e("てえ", "tē") e("てー", "tē") e("でぇ", "dē") e("でえ", "dē") e("でー", "dē") e("てゃ", "tya") e("でゃ", "dya") e("てゅ", "tyu") e("でゅ", "dyu") e("てょ", "tyo") e("でょ", "dyo") e("と", "to") e("ど", "do") e("とぁ", "twa") e("どぁ", "dwa") e("とぃ", "twi") e("どぃ", "dwi") e("とぅ", "tu") e("とう", "tō") e("どぅ", "du") e("どう", "dō") e("とぅぉ", "two") e("どぅぉ", "dwo") e("とぇ", "twe") e("どぇ", "dwe") e("とぉ", "tō") e("とお", "tō") e("とー", "tō") e("どぉ", "dō") e("どお", "dō") e("どー", "dō") e("とゎ", "twa") e("どゎ", "dwa") e("と゚", "tu") e("ト゚ゥ", "twu") e("ト゚ー", "tū") end function t:test_transliterate_normal() options = nil e("アイェキキェ ヴィェウィフエ", "ayekikye vyewifue") e("かいしょないしぎょうしょで ひょうげんされる しゃくじとしての かんじを、きょくどに そうたいかした ものである", "kaishonaishigyōshode hyōgensareru shakujitoshiteno kanjio, kyokudoni sōtaikashita monodearu") e("しんかんせん", "shinkansen") e("ぴなーるん", "phinārun", "xug") -- ==== e("こううん", "kōun") e("きんえん", "kin'en") e("きんねん", "kinnen") e("きねん", "kinen") e("きんゆう", "kin'yū") e("きにゅう", "kinyū") e("おんわ", "onwa") e("^コンウィ", "Konwi") e("^コーンウォール", "Kōnwōru") e("^ルブヌィ", "Rubu'nwi") e("^ヴィーンヌィツャ", "Vīnnwitsya") e("^ロヴァニエミ", "Rovaniemi") e("オヴム", "ovumu") e("クヴァルク", "kuvaruku") e("^リッヴィ", "Rivvi") e("^プロッヴィデンティ", "Purovvidenti") e("ウヌカㇻアン", "unukar'an", "ain") e("アㇺアㇺ", "am'am", "ain") e("ばーㇲ゙ア", "bādz'a", "mvi") e("わ ゐ 𛄟 ゑ を ワ ヰ 𛄢 ヱ ヲ", "wa i wu e o wa i wu e o") e("わ゙ ゐ゙ ゔ ゑ゙ を゙ ヷ ヸ ヴ ヹ ヺ", "va vi vu ve vo va vi vu ve vo") e("これはテストです。", "korehatesutodesu.") e("これ は テスト です。それ は。それ は", "kore wa tesuto desu. sore wa. sore wa") e("'''^ウィキペディア''' へ ^ようこそ", "'''Wikipedia''' e Yōkoso") e("^'''ウィキペディア''' へ ^ようこそ", "'''Wikipedia''' e Yōkoso") -- ==== e("は うはう う は う は", "wa uhau u wa u wa") e("へ うへう う へ う へ", "e uheu u e u e") e(".は うはう う .は う .は", "ha uhau u ha u ha") e("は. うはう う は. う は.", "ha uhau u ha u ha") e("^これ ^は ^テスト ^です。^へ へ", "Kore Wa Tesuto Desu. E e") -- but what kind of sick monster capitalizes particles e("^ちょ% ^はっ%かい", "Cho Hakkai") e("てにをは", "tenioha") e("をぅとーてぃ", "wutōti", "ryu") e("ぎゃく-ハーレム", "gyaku-hāremu") e("ねこ-は", "neko-ha") e("ねこ-'''は'''", "neko-'''ha'''") e("ねこ-は の", "neko-ha no") e("ねこ-'''は''' の", "neko-'''ha''' no") e("は", "ha") e("'''は'''", "'''ha'''") e("<u>は</u>", "<u>ha</u>") e("それ は ね", "sore wa ne") e("'''こんにち は'''", "'''konnichi wa'''") e("それ '''は''' ね", "sore '''wa''' ne") e("^へ へ。", "E e.") e("^へ へ。", "E e.") e("^へ へ x", "E e x") e("^へ へ x", "E e x") e("うぉ", "wo") e("は は", "wa wa") e("では", "deha") e("はー", "hā") e("は〜", "ha~") e("は〰", "ha~") e("は゠は", "ha-ha") e("ハッ", "ha'") e("はっけん", "hakken") e("^はっけん", "Hakken") e("「はっけん」", "“hakken”") e("'''はっけん'''", "'''hakken'''") e("^〇〇 と も よばれます。", "◯◯ to mo yobaremasu.") -- [https://web.archive.org/web/20230204053800/https://en.wiktionary.org/wiki/こと] -- ==== e("ぎゃ ぎぃ ぎゅ ぎぇ ぎょ。くぁ くぃ くぅ くぇ くぉ", "gya gī gyu gye gyo. kwa kwi kū kwe kwo") e("うぁ うぃ うぅ うぇ うぉ。ヴぁ ヴぃ ヴ ヴぇ ヴぉ", "wa wi wu we wo. va vi vu ve vo") e("ふぁ ふぃ ふ ふぇ ふぉ", "fa fi fu fe fo") e("てぃ でぃ とぅ どぅ すぁ すぃ しぃ しぇ しょ ちぃ ぢぃ つぉ てぇ てゅ とぁ とぃ ふょ てょ", "ti di tu du sa si shī she sho chī jī tso tē tyu twa twi fyo tyo") e("ねぃ ぬゃ", "ni nya") -- ¯\_(ツ)_/¯ e("ねぇ、", "nē,") e("シークヮーサー", "shīkwāsā") -- ==== e("りゃくしょう じょうず つみき ツァーリ ちゅうか つづけて そっち がっしょう マッツァーリ", "ryakushō jōzu tsumiki tsāri chūka tsuzukete sotchi gasshō mattsāri") e("こー やって。ばっさり", "kō yatte. bassari") e("し を ぼっ.す", "shi o bo'su") e("が がー がーー がーーー がーーーー がーーーーー", "ga gā gaaa gaaaa gaaaaa gaaaaaa") e("じと じっと じっっと じっっっと じっっっっと じっっっっっと", "jito jitto jittto jitttto jittttto jitttttto") e("めっちゃ めっっちゃ めっっっちゃ", "metcha mettcha metttcha") e("あっ あーっ あぁーっ あああっっっ", "a' ā' aaa' āa'''") e("はええ", "haē") e("まてぇぇぇ", "mateeee") e("あっ と いう ま に", "a' to iu ma ni") e("あっ、まちがえた", "a', machigaeta") e("あっ. まちがえた", "a' machigaeta") e("あっ と いう ま に", "a' to iu ma ni") e("ボン・キュッ・ボン", "bon kyub bon") e("アッ・^シャルキーヤ", "as Sharukīya") e("アッ゠^リヤード", "ar-Riyādo") e("アッ.゠^リヤード", "a'-Riyādo") e("アッ゠.^リヤード", "a'-Riyādo") e("アッ.^リヤード", "a'Riyādo") e("^ハガッニャ", "Haga'nya") e("トッモ", "to'mo") e("'''だまっ'''て", "'''damat'''te") e("いっ'''ぱつ''' の じゅうだん", "ip'''patsu''' no jūdan") e("'''ノン'''アポ", "'''non''''apo") e("んんと", "nnto") e("んーと", "nnto") e("っんーと", "'nnto") -- ==== e("せきヶはら", "sekigahara") e("せき'''ヶ'''はら", "seki'''ga'''hara") e("けんいち にちようび こんや", "ken'ichi nichiyōbi kon'ya") e("すゞき あゝ", "suzuki ā") e("ところゞゝゝ", "tokorodokoro") e("じゝ", "jishi") e("バナヽ", "banana") e("イタベイトホヾニタリ", "itabeitohobonitari") e("ボヽ゚モフォ", "bopomofo") e("しゅゞ", "shuju") e("キ^ュンヽ^ヽ", "kYunkyuN") e("フィヽ", "fifi") e("<u>ほっ</u>する", "<u>hos</u>suru") e("<u>みっ</u>つ", "<u>mit</u>tsu") e("<u>ち</u>", "<u>chi</u>") e("<u>めっ</u>ちゃ", "<u>met</u>cha") -- ==== e("あ~ あ〜 あ〰", "a~ a~ a~") e("あ!!!!", "a!!!!") e("200%", "200%") -- ==== e("jyouzu じょうず", "jyouzu jōzu") e("^トゥットゥルー♪ ^まゆしぃ☆です", "Tutturū♪ Mayushī☆desu") e("「^だって、すてき な まち です し、それ に なんと いって も この じょうひん な ふいんき!^'''ザ'''・お-じょう-さま!^くうき も バラ の かおり が する と いう かっ!」", "“Datte, suteki na machi desu shi, sore ni nanto itte mo kono jōhin na fuinki! '''Za''' o-jō-sama! Kūki mo bara no kaori ga suru to iu ka'!”") e("あっあ", "a'a") e("ウッーウッーウマウマ", "u'uu'uumauma") e("あ゙ あ゛", "'a 'a") e("さあ゙", "sa'a") e("ウ゚", "ũ") e("ん゙ ん゛", "'n 'n") e("[[よる|よっ]]て", "yotte") e("^'''って''' なんで おまえ が ここ に!", "'''Tte''' nande omae ga koko ni!") -- [https://en.wiktionary.org/w/index.php?title=って&oldid=76847684] e("あいうえお<br>おえういあ", "aiueo<br>oeuia") -- [https://en.wiktionary.org/w/index.php?title=裏垢&oldid=64163569] e("あいうえお<br>'''おえ'''ういあ", "aiueo<br>'''oe'''uia") -- [https://en.wiktionary.org/w/index.php?title=裏垢&oldid=64163569] e("これ は<br>テスト です", "kore wa<br>tesuto desu") -- [https://en.wiktionary.org/w/index.php?title=電子計算機&oldid=80107202] e("はこ%おし", "hakooshi") -- [https://en.wiktionary.org/w/index.php?title=Module:ja&diff=prev&oldid=41701081] e("ごん%べ%え", "gonbee") -- [https://en.wiktionary.org/w/index.php?title=Module:ja&diff=prev&oldid=41701081] e("っっ^っって", "ttTtte") e("てんごく ちゅう とこ は<br>", "tengoku chū toko wa<br>") -- [[おます]] e("てんごく ちゅう とこ は<br>そんな に", "tengoku chū toko wa<br>sonna ni") -- [[おます]] e("しんい", "shin'i") e("し.んい", "shin'i") e("しん.い", "shin'i") e("し・んい", "shi n'i") e("しん・い", "shin i") e("し.ん.い", "shin'i") e("し.ん・い", "shin i") e("し・ん.い", "shi n'i") e("し・ん・い", "shi n i") e("しんうぃ", "shinwi") e("し.んうぃ", "shinwi") e("しん.うぃ", "shinwi") e("し・んうぃ", "shi nwi") e("しん・うぃ", "shin wi") e("し.ん.うぃ", "shinwi") e("し.ん・うぃ", "shin wi") e("し・ん.うぃ", "shi nwi") e("し・ん・うぃ", "shi n wi") e("しぬぃん", "shi'nwin") e("し.ぬぃん", "shi'nwin") e("しぬぃ.ん", "shi'nwin") e("し・ぬぃん", "shi nwin") e("しぬぃ・ん", "shi'nwi n") e("し.ぬぃ.ん", "shi'nwin") e("し.ぬぃ・ん", "shi'nwi n") e("し・ぬぃ.ん", "shi nwin") e("し・ぬぃ・ん", "shi nwi n") e("しぬ𛅐ん", "shi'nwin") e("し.ぬ𛅐ん", "shi'nwin") e("しぬ𛅐.ん", "shi'nwin") e("し・ぬ𛅐ん", "shi nwin") e("しぬ𛅐・ん", "shi'nwi n") e("し.ぬ𛅐.ん", "shi'nwin") e("し.ぬ𛅐・ん", "shi'nwi n") e("し・ぬ𛅐.ん", "shi nwin") e("し・ぬ𛅐・ん", "shi nwi n") e("うんぐ", "ungu") e("う.んぐ", "ungu") e("うん.ぐ", "ungu") e("う・んぐ", "u ngu") e("うん・ぐ", "un gu") e("う.ん.ぐ", "ungu") e("う.ん・ぐ", "un gu") e("う・ん.ぐ", "u ngu") e("う・ん・ぐ", "u n gu") e("うく゚ん", "u'ngun") e("う.く゚ん", "u'ngun") e("うく゚.ん", "u'ngun") e("う・く゚ん", "u ngun") e("うく゚・ん", "u'ngu n") e("う.く゚.ん", "u'ngun") e("う.く゚・ん", "u'ngu n") e("う・く゚.ん", "u ngun") e("う・く゚・ん", "u ngu n") e("んく゚", "n'ngu") e("ん.く゚", "n'ngu") e("ん・く゚", "n ngu") e("っな゙", "'nna", "ryn") e("っん゙", "'nn", "ryu") e("エック゚", "e'nngu") e("んぬ", "nnu") e("んぬぁ", "nnwa") e("ん゙ぬ", "'nnu") e("ん゙ぬぁ", "'nnwa") e("ふづぁ", "fuza", "mvi") end function t:test_transliterate_historical() options = {hist = true} e("づ", "du") e("ず", "zu") e("ぢ", "di") e("じ", "zi") e("つ", "tu") e("ち", "ti") e("おお", "oo") -- [[Talk:公]] e("おう", "ou") e("はん", "fan") -- === e("しよう", "syou") e("きやう", "kyau") e("し.よう", "siyou") e("いゆ", "iyu") e("きよ", "kyo") e("きよう", "kyou") e("ちや", "tya") e("くわ", "kwa") -- only before く / ぐ e("くゑ", "kwe") e("く.わ", "kuwa") e("すゑ", "suwe") e("にうわ", "niuwa") e("つ.ゑ", "tuwe") e("くゐよく", "kwyoku") e("かんわ", "kan'wa") e("くわんゐん", "kwan'win") end function t:test_transliterate_no_diacritics() options = {no_diacritics = true} e("かいしょないしぎょうしょで ひょうげんされる しゃくじとしての かんじを、きょくどに そうたいかした ものである", "kaishonaishigyoushode hyougensareru shakujitoshiteno kanjio, kyokudoni soutaikashita monodearu") end return t 8ahqe2p8dajuksvp3xxhaw6kzhd36vk মডিউল:Ital-translit/testcases 828 168593 510145 2026-06-07T12:45:25Z RedminBot 9553 [[en:Module:Ital-translit/testcases]] থেকে আনা হলো 510145 Scribunto text/plain -- Unit tests for [[Module:Ital-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local module = require('Module:Ital-translit') local m_lang = require('Module:languages') function tests:check_translit(lang, text, translit) local langname = m_lang.getByCode(lang):getCanonicalName() self:equals(langname .. ': <span class="Ital" lang="' .. lang .. '">[[' .. text .. '#' .. langname .. '|' .. text .. ']]</span>', module.tr(text, lang, 'Ital'), translit) end function tests:test_translits() self:check_translit('spx', '𐌌𐌄⁚𐌉𐌑𐌍', 'mefiín') end return tests 2fuabifp5srr1nypgpgs9w29x442hhd মডিউল:Jpan-translit 828 168594 510146 2026-06-07T12:45:25Z RedminBot 9553 [[en:Module:Jpan-translit]] থেকে আনা হলো 510146 Scribunto text/plain local find = mw.ustring.find local gsub = mw.ustring.gsub local kana_to_romaji = require("Module:Hrkt-translit") local match = mw.ustring.match local upper = string.uupper local export = {} local function is_good_romaji(str) str = gsub(str, "%A", "") return match(str, "[^A-za-zĀĪŪĒŌāīūēō]") == nil end local function format_pos_romaji(rom, pos) if pos == "proper" then if find(rom, "%u") then return rom end return (gsub(rom, "%f[%a]%a", upper)) elseif pos == "prefix" then return (rom:gsub("%-?$", "-")) elseif pos == "suffix" or pos == "counter" or pos == "classifier" then return (rom:gsub("^%-?", "-")) else return rom end end function export.tr(text, lang, sc, options) local rom_result local rom_title = kana_to_romaji(text, lang, sc, options) if not is_good_romaji(rom_title) then rom_title = nil end local pagetext = mw.title.new(text):getContent() if pagetext then for _, tn in ipairs{"noun", "verb", "verb%-suru", "adj", "phrase", "combining form", "verb form", "see"} do if rom_title and pagetext:match("{{ja%-" .. tn .. "}}") then if rom_result and rom_result ~= rom_title then return rom_title end rom_result = rom_title end for t in pagetext:gmatch("{{ja%-" .. tn .. "(|..-})}") do local no_kana = true for tt in t:gmatch"%f[^|]..-%f[|}]" do if not tt:match"%D.*=" and not tt:match"%[%[" and not tt:match"]]" then local rom = kana_to_romaji(tt, lang, sc, options) if is_good_romaji(rom) then no_kana = false if rom_result and rom_result ~= rom then return rom_title end rom_result = rom end end end if rom_title and no_kana then if rom_result and rom_result ~= rom_title then return rom_title end rom_result = rom_title end end end for t in pagetext:gmatch"{{ja%-pos|(..-})}" do local pos, ta = t:match"^(..-)(|..-})$" if ta then local no_kana = true for tt in ta:gmatch"%f[^|]..-%f[|}]" do if not tt:match"%D.*=" and not tt:match"%[%[" and not tt:match"]]" then local rom = kana_to_romaji(tt, lang, sc, options) if is_good_romaji(rom) then no_kana = false rom = format_pos_romaji(rom, pos) if rom_result and rom_result ~= rom then return rom_title end rom_result = rom end end end if rom_title and no_kana then local rom = format_pos_romaji(rom_title, pos) if rom_result and rom_result ~= rom then return rom_title end rom_result = rom end elseif rom_title then local rom = format_pos_romaji(rom_title, t:sub(1, -2)) if rom_result and rom_result ~= rom then return rom_title end rom_result = rom end end return rom_result or rom_title else return rom_title end end -- A hack to bypass [[mod:languages]] bug [[special:diff/72585061]] local f_tr = export.tr function export.tr(...) local rom = f_tr(...) if rom then return (rom:gsub("'", mw.getCurrentFrame():extensionTag("nowiki", "'"))) end end return export dknbchd2pe7h95e5w9qads48ib4vbzc মডিউল:Khar-translit/testcases 828 168595 510147 2026-06-07T12:45:26Z RedminBot 9553 [[en:Module:Khar-translit/testcases]] থেকে আনা হলো 510147 Scribunto text/plain -- Unit tests for [[Module:Khar-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local Khar_translit = require('Module:Khar-translit') --TO DO function tests:do_test_translit(khar, roman, xlit) self:equals('<span class="Khar" lang="und">[[' .. khar .. ']]</span>', Khar_translit.tr(khar, 'und', 'Khar'), roman) end function tests:test_translit_kharoshthi() self:do_test_translit('𐨯𐨿𐨤𐨒𐨿𐨪', 'spagra') self:do_test_translit('𐨯𐨿𐨤𐨌', 'spā') self:do_test_translit('𐨀𐨁𐨩𐨎', 'iyaṃ') self:do_test_translit('𐨀𐨂𐨡𐨒𐨹', 'udaǵa') self:do_test_translit('𐨀𐨂𐨬𐨗𐨸𐨩', 'uvaj̄aya') self:do_test_translit('𐨕𐨂𐨫𐨒𐨹', 'culaǵa') self:do_test_translit('𐨒𐨍𐨸', 'ḡa͚') -- Needs AAT to render! Lone syllable, attestation desirable. self:do_test_translit('𐨀𐨂𐨤𐨫𐨍𐨧𐨁', 'upala͚bhi') self:do_test_translit('𐨀𐨂𐨍𐨟𐨨', 'u͚tama') self:do_test_translit('𐨀𐨅𐨬 𐨨𐨅 𐨭𐨂𐨡𐨹', 'eva me śud́a') -- with space characters self:do_test_translit('𐨪𐨂𐨖', 'rucha') self:do_test_translit('𐨦𐨿𐨪𐨨𐨞', 'bramaṇa') self:do_test_translit('𐨤𐨿𐨪𐨁𐨟𐨁', 'priti') self:do_test_translit('𐨤𐨂𐨟𐨿𐨪', 'putra') self:do_test_translit('𐨀𐨒𐨁', 'agi') self:do_test_translit('𐨣𐨀𐨫𐨂𐨡𐨆', 'naaludo') -- personal name in Mathura lion inscription self:do_test_translit('𐨨𐨙𐨯𐨹𐨁', 'mañas̱i') -- S with under-macron followed by vowel end return tests ba0yko62bylhvx5m1o2gqyxb10djd6u মডিউল:Limb-Deva-translit/testcases 828 168596 510148 2026-06-07T12:45:27Z RedminBot 9553 [[en:Module:Limb-Deva-translit/testcases]] থেকে আনা হলো 510148 Scribunto text/plain -- Unit tests for [[Module:Limb-Deva-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local transliterate = require('Module:Limb-Deva-translit').tr local function tag(text) return '<span class="Deva" lang="lif">' .. text .. '</span>' end local options = { display = tag } --TO DO function tests:do_test_translit(limb, deva, xlit) self:equals('<span class="Limb" lang="lif">[[' .. limb .. '#Limbu|' .. limb .. ']]</span>', transliterate(limb, 'deva', 'Limb'), deva, options) end function tests:test_translit_deva() local examples = { {'ᤏᤡᤱᤄᤢᤶ', 'निङ्घुम्'}, {'ᤐᤠ᤺ᤣᤱᤗ', 'पोःङ्ल'}, {'ᤐᤥ᤺ᤱᤗ', 'पोःङ्ल'}, {'ᤕᤧᤛᤢᤔᤠᤱᤀᤥ', 'ये़सुमाङ्ओ'}, {'ᤕᤧᤛᤢᤔᤠᤱᤀᤠᤣ', 'ये़सुमाङ्ओ'}, {'ᤕᤠᤰᤌᤢᤱ', 'याक्थुङ्'}, } self:iterate(examples, 'do_test_translit') end return tests jcn49vwt4e8argmc53duom8yk2ofswh মডিউল:Linb-translit/testcases 828 168597 510149 2026-06-07T12:45:28Z RedminBot 9553 [[en:Module:Linb-translit/testcases]] থেকে আনা হলো 510149 Scribunto text/plain return require("Module:transliteration module testcases") ( require("Module:Linb-translit").tr, { { "𐀷𐀙𐀏", "wa-na-ka" }, { "𐀂𐀦", "i-qo" }, { "𐀣𐀯𐀩𐀄", "qa-si-re-u" }, { "𐀇𐀺𐀝𐀰", "di-wo-nu-so" }, { "𐀀𐀳𐀖𐀵", "a-te-mi-to" }, { "𐀏𐀅𐀖𐀊", "ka-da-mi-ja" }, { "𐁁𐀴𐀍𐀦", "a3-ti-jo-qo" }, { "𐀗𐀪𐀺𐀈", "mo-ri-wo-do" }, }, "Linb", "gmy" ) 2lo60janho8mix7g2gokbxsq3x0sf9z মডিউল:Lisu-translit 828 168598 510150 2026-06-07T12:45:28Z RedminBot 9553 [[en:Module:Lisu-translit]] থেকে আনা হলো 510150 Scribunto text/plain --[==[ Transliteration scheme is that used in David Bradley's Southern Lisu Dictionary (2006): https://stedt.berkeley.edu/pubs_and_prods/STEDT_Monograph4_Southern-Lisu-Dict.pdf ]==] local export = {} local gsub = mw.ustring.gsub local oneChar = { ["ꓐ"] = "b", ["ꓑ"] = "p", ["ꓒ"] = "pʰ", ["ꓓ"] = "d", ["ꓔ"] = "t", ["ꓕ"] = "tʰ", ["ꓖ"] = "g", ["ꓗ"] = "k", ["ꓘ"] = "kʰ", ["ꓙ"] = "dʒ", ["ꓚ"] = "tʃ", ["ꓛ"] = "tʃʰ", ["ꓜ"] = "dz", ["ꓝ"] = "ts", ["ꓞ"] = "tsʰ", ["ꓟ"] = "m", ["ꓠ"] = "n", ["ꓡ"] = "l", ["ꓢ"] = "s", ["ꓣ"] = "ʐ", ["ꓤ"] = "z", ["ꓥ"] = "ŋ", ["ꓦ"] = "h̃", ["ꓧ"] = "x", ["ꓨ"] = "h", ["ꓩ"] = "f", ["ꓪ"] = "w", ["ꓫ"] = "ʃ", ["ꓬ"] = "j", ["𑾰"] = "jʰ", ["ꓭ"] = "ɣ", ["ꓮ"] = "ɑ", ["ꓯ"] = "æ", ["ꓰ"] = "e", ["ꓱ"] = "ø", ["ꓲ"] = "i", ["ꓳ"] = "o", ["ꓴ"] = "u", ["ꓵ"] = "y", ["ꓶ"] = "ɯ", ["ꓷ"] = "ɤ", ["ꓸ"] = "́", ["ꓹ"] = "̌", ["ꓺ"] = "̱", ["ꓻ"] = "", ["ꓼ"] = "̱̀", ["ꓽ"] = "̀", ["ʼ"] = "̃", ["ˍ"] = "ɑ", ["꓾"] = ",", ["꓿"] = ".", } local twoChars = { ["ꓠꓬ"] = "ɲ", } local threeChars = { ["ꓙ\1ꓮ"] = "dʐɑ", ["ꓚ\1ꓮ"] = "tʂɑ", ["ꓛ\1ꓮ"] = "tʂʰɑ", ["ꓫ\1ꓮ"] = "ʂɑ", ["ꓙꓬꓮ"] = "dʒɑ", ["ꓚꓬꓮ"] = "tʃɑ", ["ꓛꓬꓮ"] = "tʃʰɑ", ["ꓫꓬꓮ"] = "ʃɑ", ["ꓺꓽ꓿"] = "ꓺꓽ?" } function export.tr(text, lang, sc) local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*" text = gsub(text, "([ꓮ-ꓷ])([ꓐ-ꓭ𑾰])([ꓸ-ꓽ]+)", "%1%3%2") text = gsub(text, "([ꓮ-ꓷ])([ꓮ-ꓷ])([ꓸ-ꓽ])", "%1%3%2") text = gsub(text, "%f[^%z%s%-꓾꓿][ꓐ-ꓭ𑾰]+%f[%z%s%-ꓸ-꓿ʼˍ]", "%0ꓮ") text = gsub(text, "ˍ%f[%z%s%-꓾꓿ʼ]", "%0ꓺ") text = gsub(text, "([ꓮ-ꓷˍ])([ꓸ-ꓽ])([ꓸ-ꓽ])", "%1%2%1%3") text = gsub(text, "%f[^%z%s꓾꓿]([ꓶꓷ])", "ɣ%1") text = gsub(text, "ꓮ([ꓸ-ꓽ]+)([ꓶꓷ])", "%2%1") text = gsub(text, "([ꓜꓝꓞꓢꓣꓤ])ꓲ", "%1ɨ") text = gsub(text, "([ꓙꓚꓛꓫ])ꓵ", "%1ɨ") text = gsub(text, "([ꓜꓝꓞꓢꓣꓤ])ꓬ(ꓲ)", "%1%2") text = gsub(text, "([ꓙꓚꓛꓫ])ꓬ(ꓵ)", "%1%2") text = gsub(text, "([ꓮ-ꓷ][ꓸ-ꓽ]?)ꓲ%f[%z%s]", "%1j") text = gsub(text, "([ꓮ-ꓷ][ꓸ-ꓽ]?)ꓳ%f[%z%s]", "%1w") text = gsub(text, "([ꓙꓚꓛꓫ])(ꓮ[ꓸ-ꓽ]?)%f[^ꓮ-ꓷjwɨꓸ-ꓽ]", "%1\1%2") for trigraph, replacement in pairs(threeChars) do text = text:gsub(trigraph, replacement) end for digraph, replacement in pairs(twoChars) do text = text:gsub(digraph, replacement) end return (text:gsub(UTF8_char, oneChar)) end return export 864ile8bzjtvngwxf06b13i9feg6ad4 মডিউল:Lisu-translit/testcases 828 168599 510151 2026-06-07T12:45:29Z RedminBot 9553 [[en:Module:Lisu-translit/testcases]] থেকে আনা হলো 510151 Scribunto text/plain local tests = require('Module:UnitTests') local tr = require('Module:Lisu-translit').tr local lang = require("Module:languages").getByCode("lis") local sc = require("Module:scripts").getByCode("Lisu") local function link(term, item_lang) if item_lang then lang_obj = require("Module:languages").getByCode(item_lang) else lang_obj = lang end return require("Module:links").full_link{term = term, lang = lang_obj, tr = "-", sc = sc} end function tests:check_tr(term, expected, item_lang) tests:equals(link(term, item_lang), mw.ustring.toNFC(tr(term, item_lang or "lis", "Lisu")), expected) end function tests:test_translit() -- For languages other than Lisu, language is the third item. local examples = { {"ꓐꓹ", "bɑ̌"}, {"ꓐꓹ ꓐꓽ", "bɑ̌ bɑ̀"}, {"ꓐꓺ", "bɑ̱"}, {"ꓐꓺ ꓡꓱꓺ ꓡꓱꓺ", "bɑ̱ lø̱ lø̱"}, {"ꓐꓻ", "bɑ"}, {"ꓐꓻ ꓟꓳꓻ", "bɑ mo"}, {"ꓐꓻ ꓡꓻ", "bɑ lɑ"}, {"ꓐꓽ", "bɑ̀"}, {"ꓐꓽ ꓓꓱꓽ", "bɑ̀ dø̀"}, {"ꓐꓽ ꓝꓲꓺ", "bɑ̀ tsɨ̱"}, {"ꓐꓽ ꓡꓻ", "bɑ̀ lɑ"}, {"ꓐꓽ ꓡꓽ ꓡꓽ", "bɑ̀ lɑ̀ lɑ̀"}, {"ꓐꓽ ꓡꓯꓼ ꓞꓺ", "bɑ̀ læ̱̀ tsʰɑ̱"}, {"ꓐꓽ ꓡꓰꓻ", "bɑ̀ le"}, {"ꓐꓽ ꓥꓷꓹ", "bɑ̀ ŋɤ̌"}, {"ꓐꓽ ꓧꓶꓼ", "bɑ̀ xɯ̱̀"}, {"ꓐꓼ", "bɑ̱̀"}, {"ꓐꓸꓽ", "bɑ́ɑ̀"}, {"ꓐꓹꓽ", "bɑ̌ɑ̀"}, {"ꓐꓮꓲꓹ ꓒꓬ", "bɑ̌j pʰjɑ"}, {"ꓐꓯꓹ", "bæ̌"}, {"ꓐꓯꓺ", "bæ̱"}, {"ꓐꓯꓻ", "bæ"}, {"ꓐꓯꓼ", "bæ̱̀"}, {"ꓐꓯꓼ ꓛꓬꓺ", "bæ̱̀ tʃʰɑ̱"}, {"ꓐꓯꓻ ꓫꓵꓺ", "bæ ʃɨ̱"}, {"ꓐꓰꓸ", "bé"}, {"ꓐꓰꓺ", "be̱"}, {"ꓐꓰꓻ", "be"}, {"ꓐꓰꓻ ꓐꓰꓻ", "be be"}, {"ꓐꓰꓻ ꓞꓲꓽ", "be tsʰɨ̀"}, {"ꓐꓰꓻ ꓡꓵꓸ", "be lý"}, {"ꓐꓰꓽ", "bè"}, {"ꓐꓰꓽ ꓛꓵꓽ ꓕꓴꓽ ꓜꓲꓻ", "bè tʃʰɨ̀ tʰù dzɨ"}, {"ꓐꓰꓽ ꓡꓰꓽ", "bè lè"}, {"ꓐꓰꓼ", "bè̱"}, {"ꓐꓰꓼ ꓠꓬꓲꓸ", "bè̱ ɲí"}, {"ꓐꓱꓺ", "bø̱"}, {"ꓐꓱꓻ", "bø"}, {"ꓐꓱꓻ ꓞꓲꓽ", "bø tsʰɨ̀"}, {"ꓐꓱꓻ ꓶꓽ", "bø ɣɯ̀"}, {"ꓐꓱꓽ", "bø̀"}, {"ꓐꓱꓼ ꓙꓱꓼ", "bø̱̀ dʒø̱̀"}, {"ꓐꓱꓽ ꓡꓰꓺ ꓐꓱꓽ ꓡꓰꓺ", "bø̀ le̱ bø̀ le̱"}, {"ꓐꓲꓺ", "bi̱"}, {"ꓐꓲꓻ", "bi"}, {"ꓐꓲꓽ", "bì"}, {"ꓐꓲꓽ ꓓꓲꓻ", "bì di"}, {"ꓐꓲꓼ", "bì̱"}, {"ꓐꓲꓼ ꓐꓲꓹ", "bì̱ bǐ"}, {"ꓐꓲꓼ ꓠꓬꓲꓸ", "bì̱ ɲí"}, {"ꓐꓳꓹ", "bǒ"}, {"ꓐꓳꓺ", "bo̱"}, {"ꓐꓳꓺ ꓟꓳꓺ", "bo̱ mo̱"}, {"ꓐꓳꓽ", "bò"}, {"ꓐꓳꓽ ꓐꓳꓽ", "bò bò"}, {"ꓐꓳꓼ", "bò̱"}, {"ꓐꓳꓼ ꓡꓳꓺ", "bò̱ lo̱"}, {"ꓐꓴꓺ", "bu̱"}, {"ꓐꓴꓻ", "bu"}, {"ꓐꓴꓻ ꓐꓴꓻ", "bu bu"}, {"ꓐꓴꓻ ꓐꓴꓽ", "bu bù"}, {"ꓐꓵꓺ", "by̱"}, {"ꓐꓵꓻ", "by"}, {"ꓐꓵꓻ ꓡꓵꓸ", "by lý"}, {"ꓐꓵꓽ", "bỳ"}, {"ꓐꓵꓽ ꓡꓵꓽ", "bỳ lỳ"}, {"ꓐꓵꓼ", "bỳ̱"}, {"ꓐꓵꓼ ꓐꓵꓼ", "bỳ̱ bỳ̱"}, {"ꓐꓵꓼ ꓟꓵꓺ", "bỳ̱ my̱"}, {"ꓐꓶꓸ", "bɯ́"}, {"ꓐꓶꓺ", "bɯ̱"}, {"ꓐꓶꓺ-ꓤꓲꓺ", "bɯ̱-zɨ̱"}, {"ꓐꓶꓻ", "bɯ"}, {"ꓐꓶꓻ ꓞꓲꓽ", "bɯ tsʰɨ̀"}, {"ꓐꓶꓻ ꓠꓻ", "bɯ nɑ"}, {"ꓐꓶꓽ", "bɯ̀"}, {"ꓐꓶꓽ ꓓꓲꓻ", "bɯ̀ di"}, {"ꓐꓶꓽ ꓡꓶꓽ ꓡꓶꓽ", "bɯ̀ lɯ̀ lɯ̀"}, {"ꓐꓶꓽ ꓢꓸ ꓟꓺ", "bɯ̀ sɑ́ mɑ̱"}, {"ꓐꓶꓼ ꓠꓶꓼ", "bɯ̱̀ nɯ̱̀"}, {"ꓐꓷꓹ", "bɤ̌"}, {"ꓐꓷꓼ ꓡꓶꓸˍꓽ", "bɤ̱̀ lɯ́ɑ̀"}, {"ꓐꓬꓹ ꓡꓯꓽ", "bjɑ̌ læ̀"}, {"ꓐꓬꓺ", "bjɑ̱"}, {"ꓐꓬꓻ", "bjɑ"}, {"ꓐꓬꓻ ꓩꓴꓺ", "bjɑ fu̱"}, {"ꓐꓬꓽ", "bjɑ̀"}, {"ꓐꓬꓼ", "bjɑ̱̀"}, {"ꓐꓬꓼ ꓐꓬꓹ", "bjɑ̱̀ bjɑ̌"}, {"ꓐꓬꓱꓺ", "bjø̱"}, {"ꓐꓬꓱꓺ ꓚꓱꓺ", "bjø̱ tʃø̱"}, {"ꓐꓬꓱꓻ", "bjø"}, {"ꓐꓬꓱꓽ", "bjø̀"}, {"ꓐꓬꓱꓽ ꓤꓽ", "bjø̀ zɑ̀"}, {"ꓐꓬꓱꓼ", "bjø̱̀"}, {"ꓐꓬꓱꓼ ꓡꓱꓼ ꓡꓱꓼ", "bjø̱̀ lø̱̀ lø̱̀"}, {"ꓑꓸ", "pɑ́"}, {"ꓑꓸ ꓔꓺ", "pɑ́ tɑ̱"}, {"ꓑꓸ ꓔꓲꓸ", "pɑ́ tí"}, {"ꓑꓸ ꓗꓸ", "pɑ́ kɑ́"}, {"ꓑꓸ ꓝꓲꓺ", "pɑ́ tsɨ̱"}, {"ꓑꓸ ꓡꓼ", "pɑ́ lɑ̱̀"}, {"ꓑꓸ ꓬꓲꓸ", "pɑ́ jí"}, {"ꓑꓸ ꓬꓲꓼ", "pɑ́ jì̱"}, {"ꓑꓹ", "pɑ̌"}, {"ꓑꓹ ꓑꓹ", "pɑ̌ pɑ̌"}, {"ꓑꓹ ꓒꓶꓽ", "pɑ̌ pʰɯ̀"}, {"ꓑꓹ ꓓꓲꓽ ꓓꓲꓽ", "pɑ̌ dì dì"}, {"ꓑꓹ ꓓꓴꓽ", "pɑ̌ dù"}, {"ꓑꓹ ꓖꓴꓻ", "pɑ̌ gu"}, {"ꓑꓹ ꓗꓳꓹ", "pɑ̌ kǒ"}, {"ꓑꓺ", "pɑ̱"}, {"ꓑꓺ ꓑꓺ", "pɑ̱ pɑ̱"}, {"ꓑꓺ ꓒꓲꓼ", "pɑ̱ pʰì̱"}, {"ꓑꓺ ꓒꓴꓽ", "pɑ̱ pʰù"}, {"ꓑꓺ ꓕꓴꓽ", "pɑ̱ tʰù"}, {"ꓑꓺ ꓛꓱꓹ", "pɑ̱ tʃʰø̌"}, {"ꓑꓺ ꓜꓽ", "pɑ̱ dzɑ̀"}, {"ꓑꓺ ꓦꓯꓹ", "pɑ̱ h̃æ̌"}, {"ꓑꓺ ꓫꓬꓼ", "pɑ̱ ʃɑ̱̀"}, {"ꓑꓽ ꓑꓹ", "pɑ̀ pɑ̌"}, {"ꓑꓽ ꓑꓽ", "pɑ̀ pɑ̀"}, {"ꓑꓽ ꓗꓽ ꓟꓰꓹ", "pɑ̀ kɑ̀ mě"}, {"ꓑꓽ ꓡꓰꓻ", "pɑ̀ le"}, {"ꓑꓽ ꓡꓲꓸ", "pɑ̀ lí"}, {"ꓑꓽ ꓦꓰꓽ", "pɑ̀ h̃è"}, {"ꓑꓽ ꓩꓺ", "pɑ̀ fɑ̱"}, {"ꓑꓼ", "pɑ̱̀"}, {"ꓑꓼ ꓔꓷꓹ", "pɑ̱̀ tɤ̌"}, {"ꓑꓼ ꓗꓺ", "pɑ̱̀ kɑ̱"}, {"ꓑꓼ ꓡꓰꓻ", "pɑ̱̀ le"}, {"ꓑꓼ ꓡꓲꓹ ꓢꓶꓽ", "pɑ̱̀ lǐ sɯ̀"}, {"ꓑꓮꓲꓸ", "pɑ́j"}, {"ꓑꓮꓲꓸ ꓞꓳꓽ", "pɑ́j tsʰò"}, {"ꓑꓮꓲꓹ ꓢꓲꓻ", "pɑ̌j sɨ"}, {"ꓑꓮꓲꓽ", "pɑ̀j"}, {"ꓑꓮꓳꓸ", "pɑ́w"}, {"ꓑꓮꓳꓺ", "pɑ̱w"}, {"ꓑꓮꓳꓼ", "pɑ̱̀w"}, {"ꓑꓯꓸ", "pǽ"}, {"ꓑꓯꓸ ꓔꓺ", "pǽ tɑ̱"}, {"ꓑꓯꓹ", "pæ̌"}, {"ꓑꓯꓹ ꓑꓯꓹ ꓟꓺ", "pæ̌ pæ̌ mɑ̱"}, {"ꓑꓯꓹ ꓧꓳꓹ", "pæ̌ xǒ"}, {"ꓑꓰꓸ", "pé"}, {"ꓑꓰꓸ ꓛꓵꓽ", "pé tʃʰɨ̀"}, {"ꓑꓰꓹ", "pě"}, {"ꓑꓰꓹ ꓘꓽ", "pě kʰɑ̀"}, {"ꓑꓰꓺ", "pe̱"}, {"ꓑꓰꓺ ꓒꓽ", "pe̱ pʰɑ̀"}, {"ꓑꓰꓺ ꓘꓶꓽ", "pe̱ kʰɯ̀"}, {"ꓑꓰꓽ", "pè"}, {"ꓑꓰꓽ ꓔꓽ", "pè tɑ̀"}, {"ꓑꓰꓼ", "pè̱"}, {"ꓑꓰꓼ ꓫꓵꓼ ꓟꓺ", "pè̱ ʃɨ̱̀ mɑ̱"}, {"ꓑꓱꓸ", "pǿ"}, {"ꓑꓰꓸ ꓗꓸ ꓕꓴꓻ", "pé kɑ́ tʰu"}, {"ꓑꓱꓸ ꓡꓱꓼ ꓡꓱꓼ", "pǿ lø̱̀ lø̱̀"}, {"ꓑꓱꓹ", "pø̌"}, {"ꓑꓱꓺ", "pø̱"}, {"ꓑꓱꓽ", "pø̀"}, {"ꓑꓲꓸ", "pí"}, {"ꓑꓲꓸ ꓑꓲꓸ", "pí pí"}, {"ꓑꓲꓸ ꓗꓸ ꓕꓴꓻ", "pí kɑ́ tʰu"}, {"ꓑꓲꓸ ꓗꓳꓽ ꓡꓰꓹ", "pí kò lě"}, {"ꓑꓲꓸ ꓡꓲꓼ", "pí lì̱"}, {"ꓑꓲꓸ ꓡꓲꓸˍꓼ", "pí líɑ̱̀"}, {"ꓑꓲꓹ", "pǐ"}, {"ꓑꓲꓹ ꓠꓯꓺ ꓜꓲꓻ", "pǐ næ̱ dzɨ"}, {"ꓑꓲꓹ ꓡꓲꓹ", "pǐ lǐ"}, {"ꓑꓲꓹ ꓢꓲꓹ", "pǐ sɨ̌"}, {"ꓑꓲꓺ", "pi̱"}, {"ꓑꓲꓺ ꓑꓲꓺ ꓑꓳꓽ ꓔꓳꓽ", "pi̱ pi̱ pò tò"}, {"ꓑꓲꓽ", "pì"}, {"ꓑꓲꓼ ꓡꓲꓸˍꓼ", "pì̱ líɑ̱̀"}, {"ꓑꓲꓼ ꓫꓵꓼ ꓟꓺ", "pì̱ ʃɨ̱̀ mɑ̱"}, {"ꓑꓳꓸ", "pó"}, {"ꓑꓳꓥꓸ", "póŋ"}, {"ꓑꓳꓹ ꓒꓲꓼ ꓜꓲꓻ", "pǒ pʰì̱ dzɨ"}, {"ꓑꓳꓹ ꓓꓴꓽ", "pǒ dù"}, {"ꓑꓳꓹ ꓧꓪꓺ", "pǒ xwɑ̱"}, {"ꓑꓳꓺ", "po̱"}, {"ꓑꓳꓺ ꓦꓳꓹ", "po̱ h̃ǒ"}, {"ꓑꓳꓺ ꓡꓯꓺ", "po̱ læ̱"}, {"ꓑꓳꓽ", "pò"}, {"ꓑꓳꓽ ꓧꓪꓹ", "pò xwɑ̌"}, {"ꓑꓳꓼ", "pò̱"}, {"ꓑꓳꓲꓽ", "pòj"}, {"ꓑꓳꓥꓽ", "pòŋ"}, {"ꓑꓴꓸ", "pú"}, {"ꓑꓴꓸ ꓚꓳꓹ", "pú tʃǒ"}, {"ꓑꓴꓸ ꓧꓳꓺ", "pú xo̱"}, {"ꓑꓴꓸ ꓩꓴꓽ", "pú fù"}, {"ꓑꓴꓸ ꓫꓵꓽ ꓢꓴꓸ", "pú ʃɨ̀ sú"}, {"ꓑꓴꓹ ꓑꓴꓹ", "pǔ pǔ"}, {"ꓑꓴꓺ", "pu̱"}, {"ꓑꓴꓽ", "pù"}, {"ꓑꓴꓼ ꓔꓶꓺ ꓟꓺ", "pù̱ tɯ̱ mɑ̱"}, {"ꓑꓵꓸ", "pý"}, {"ꓑꓵꓹ", "py̌"}, {"ꓑꓵꓺ", "py̱"}, {"ꓑꓵꓼ ꓫꓵꓼ ꓟꓺ", "pỳ̱ ʃɨ̱̀ mɑ̱"}, {"ꓑꓶꓸ", "pɯ́"}, {"ꓑꓶꓸ ꓘꓳꓹ", "pɯ́ kʰǒ"}, {"ꓑꓶꓸ ꓫꓵꓽ", "pɯ́ ʃɨ̀"}, {"ꓑꓶꓹ", "pɯ̌"}, {"ꓑꓶꓹ ꓑꓶꓹ", "pɯ̌ pɯ̌"}, {"ꓑꓶꓹ ꓓꓴꓽ", "pɯ̌ dù"}, {"ꓑꓶꓹ ꓔꓺ ꓔꓺ", "pɯ̌ tɑ̱ tɑ̱"}, {"ꓑꓶꓹ ꓗꓴꓸ", "pɯ̌ kú"}, {"ꓑꓶꓹ ꓩꓴꓽ", "pɯ̌ fù"}, {"ꓑꓶꓺ", "pɯ̱"}, {"ꓑꓶꓻ", "pɯ"}, {"ꓑꓶꓽ", "pɯ̀"}, {"ꓑꓶꓽ ꓕꓽ", "pɯ̀ tʰɑ̀"}, {"ꓑꓶꓽ ꓢꓲꓸ", "pɯ̀ sɨ́"}, {"ꓑꓶꓽ ꓢꓶꓸ", "pɯ̀ sɯ́"}, {"ꓑꓶꓽ ꓫꓵꓸ", "pɯ̀ ʃɨ́"}, {"ꓑꓶꓼ ꓫꓵꓽ ꓟꓺ", "pɯ̱̀ ʃɨ̀ mɑ̱"}, {"ꓑꓷꓹ ꓔꓺ", "pɤ̌ tɑ̱"}, {"ꓑꓷꓺ", "pɤ̱"}, {"ꓑꓷꓽ ꓚꓬꓺ", "pɤ̀ tʃɑ̱"}, {"ꓑꓷꓼ ꓕꓶꓸ", "pɤ̱̀ tʰɯ́"}, {"ꓑꓷꓼ ꓝꓷꓼ ꓝꓷꓼ", "pɤ̱̀ tsɤ̱̀ tsɤ̱̀"}, {"ꓑꓷꓼ ꓡꓷꓼ", "pɤ̱̀ lɤ̱̀"}, {"ꓑꓷꓠꓽ", "pɤ̀n"}, {"ꓑꓬꓸ ꓘꓶꓽ", "pjɑ́ kʰɯ̀"}, {"ꓑꓬꓹ", "pjɑ̌"}, {"ꓑꓬꓹ ꓑꓬꓹ ꓞꓪꓽ", "pjɑ̌ pjɑ̌ tsʰwɑ̀"}, {"ꓑꓬꓹ ꓖꓴꓺ", "pjɑ̌ gu̱"}, {"ꓑꓬꓹ ꓘꓶꓽ", "pjɑ̌ kʰɯ̀"}, {"ꓑꓬꓹ ꓭꓼ", "pjɑ̌ ɣɑ̱̀"}, {"ꓑꓬꓺ", "pjɑ̱"}, {"ꓑꓬꓼ", "pjɑ̱̀"}, {"ꓑꓬꓼ ꓑꓬꓼ", "pjɑ̱̀ pjɑ̱̀"}, {"ꓑꓬꓮꓥꓸ", "pjɑ́ŋ"}, {"ꓑꓬꓱꓸ", "pjǿ"}, {"ꓑꓬꓱꓹ", "pjø̌"}, {"ꓑꓬꓱꓺ", "pjø̱"}, {"ꓑꓬꓱꓻ ꓞꓶꓻ", "pjø tsʰɯ"}, {"ꓑꓬꓱꓽ", "pjø̀"}, {"ꓒꓸ", "pʰɑ́"}, {"ꓒꓸ ꓑꓰꓺ", "pʰɑ́ pe̱"}, {"ꓒꓸ ꓒꓴꓸ", "pʰɑ́ pʰú"}, {"ꓒꓸ ꓗꓳꓸ", "pʰɑ́ kó"}, {"ꓒꓸ ꓝꓲꓸ", "pʰɑ́ tsɨ́"}, {"ꓒꓸ ꓦꓹ", "pʰɑ́ h̃ɑ̌"}, {"ꓒꓸ ꓦꓹ ꓐꓰꓽ", "pʰɑ́ h̃ɑ̌ bè"}, {"ꓒꓸ ꓦꓽ", "pʰɑ́ h̃ɑ̀"}, {"ꓒꓺ", "pʰɑ̱"}, {"ꓒꓻ", "pʰɑ"}, {"ꓒꓻ ꓕꓲꓸˍꓽ", "pʰɑ tʰíɑ̀"}, {"ꓒꓽ", "pʰɑ̀"}, {"ꓒꓽ ꓔꓲꓸ", "pʰɑ̀ tí"}, {"ꓒꓽ ꓕꓽ", "pʰɑ̀ tʰɑ̀"}, {"ꓒꓽ ꓟꓶꓸ ꓓꓴꓽ", "pʰɑ̀ mɯ́ dù"}, {"ꓒꓽ ꓡꓽ ꓡꓽ", "pʰɑ̀ lɑ̀ lɑ̀"}, {"ꓒꓼ", "pʰɑ̱̀"}, {"ꓒꓸꓽ", "pʰɑ́ɑ̀"}, {"ꓒꓮꓲꓽ", "pʰɑ̀j"}, {"ꓒꓮꓳꓸ", "pʰɑ́w"}, {"ꓒꓮꓳꓻ", "pʰɑw"}, {"ꓒꓯꓸ", "pʰǽ"}, {"ꓒꓯꓹ", "pʰæ̌"}, {"ꓒꓯꓼ", "pʰæ̱̀"}, {"ꓒꓯꓼ ꓠꓬꓲꓻ", "pʰæ̱̀ ɲi"}, {"ꓒꓯꓼ ꓜꓲꓻ", "pʰæ̱̀ dzɨ"}, {"ꓒꓰꓸ", "pʰé"}, {"ꓒꓰꓸ ꓩꓴꓻ", "pʰé fu"}, {"ꓒꓰꓹ", "pʰě"}, {"ꓒꓰꓹ ꓡꓰꓺ", "pʰě le̱"}, {"ꓒꓰꓽ", "pʰè"}, {"ꓒꓰꓽ ꓝꓮꓲꓸ", "pʰè tsɑ́j"}, {"ꓒꓰꓽ ꓫꓰꓺ", "pʰè ʃe̱"}, {"ꓒꓰꓼ", "pʰè̱"}, {"ꓒꓱꓺ", "pʰø̱"}, {"ꓒꓱꓻ", "pʰø"}, {"ꓒꓱꓼ", "pʰø̱̀"}, {"ꓒꓲꓸ", "pʰí"}, {"ꓒꓲꓸ ꓔꓺ ꓗꓴꓺ", "pʰí tɑ̱ ku̱"}, {"ꓒꓲꓸ ꓫꓲꓸ", "pʰí ʃí"}, {"ꓒꓲꓹ", "pʰǐ"}, {"ꓒꓲꓸ ꓒꓶꓽ", "pʰí pʰɯ̀"}, {"ꓒꓲꓻ", "pʰi"}, {"ꓒꓲꓻ ꓟꓶꓸ", "pʰi mɯ́"}, {"ꓒꓲꓻ ꓢꓲꓺ", "pʰi sɨ̱"}, {"ꓒꓲꓽ", "pʰì"}, {"ꓒꓲꓽ ꓘꓶꓽ", "pʰì kʰɯ̀"}, {"ꓒꓲꓽ ꓞꓲꓸ", "pʰì tsʰɨ́"}, {"ꓒꓲꓽ ꓟꓬꓺ", "pʰì mjɑ̱"}, {"ꓒꓲꓽ ꓫꓰꓺ", "pʰì ʃe̱"}, {"ꓒꓲꓽ ꓫꓵꓺ", "pʰì ʃɨ̱"}, {"ꓒꓲꓼ", "pʰì̱"}, {"ꓒꓳꓸ ꓒꓶꓸ", "pʰó pʰɯ́"}, {"ꓒꓳꓸ ꓞꓽ", "pʰó tsʰɑ̀"}, {"ꓒꓳꓹ", "pʰǒ"}, {"ꓒꓳꓹ ꓡꓳꓺ", "pʰǒ lo̱"}, {"ꓒꓳꓺ ꓒꓶꓽ", "pʰo̱ pʰɯ̀"}, {"ꓒꓳꓽ", "pʰò"}, {"ꓒꓴꓸ", "pʰú"}, {"ꓒꓴꓺ", "pʰu̱"}, {"ꓒꓴꓻ", "pʰu"}, {"ꓒꓴꓻ ꓗꓹ", "pʰu kɑ̌"}, {"ꓒꓴꓽ ꓢꓲꓺ", "pʰù sɨ̱"}, {"ꓒꓴꓽ", "pʰù"}, {"ꓒꓴꓽ ꓡꓯꓻ", "pʰù læ"}, {"ꓒꓴꓽ ꓡꓳꓽ", "pʰù lò"}, {"ꓒꓴꓽ ꓡꓴꓹ", "pʰù lǔ"}, {"ꓒꓴꓽ ꓢꓴꓸ", "pʰù sú"}, {"ꓒꓵꓹ", "pʰy̌"}, {"ꓒꓵꓺ", "pʰy̱"}, {"ꓒꓵꓻ", "pʰy"}, {"ꓒꓵꓽ", "pʰỳ"}, {"ꓒꓶꓸ ꓧꓶꓸ", "pʰɯ́ xɯ́"}, {"ꓒꓶꓻ", "pʰɯ"}, {"ꓒꓶꓽ", "pʰɯ̀"}, {"ꓒꓷꓼ", "pʰɤ̱̀"}, {"ꓒꓬꓸ", "pʰjɑ́"}, {"ꓒꓬꓸ ꓘꓶꓽ", "pʰjɑ́ kʰɯ̀"}, {"ꓒꓬꓸ ꓡꓳꓻ", "pʰjɑ́ lo"}, {"ꓒꓬꓸ ꓦꓯꓽ", "pʰjɑ́ h̃æ̀"}, {"ꓒꓬꓹ", "pʰjɑ̌"}, {"ꓒꓬꓺ", "pʰjɑ̱"}, {"ꓒꓬꓻ", "pʰjɑ"}, {"ꓒꓬꓻ ꓡꓯꓼ ꓡꓯꓼ", "pʰjɑ læ̱̀ læ̱̀"}, {"ꓒꓬꓽ", "pʰjɑ̀"}, {"ꓒꓬꓽ ꓘꓪꓽ ꓡꓽ", "pʰjɑ̀ kʰwɑ̀ lɑ̀"}, {"ꓒꓬꓽ ꓟꓶꓽ", "pʰjɑ̀ mɯ̀"}, {"ꓒꓬꓽ ꓟꓬꓺ", "pʰjɑ̀ mjɑ̱"}, {"ꓒꓬꓽ ꓢꓲ ꓤꓽ", "pʰjɑ̀ sɨ zɑ̀"}, {"ꓒꓬꓼ", "pʰjɑ̱̀"}, {"ꓒꓬꓱꓸ", "pʰjǿ"}, {"ꓒꓬꓱꓺ", "pʰjø̱"}, {"ꓒꓬꓱꓺ ꓛꓬꓹ", "pʰjø̱ tʃʰɑ̌"}, {"ꓒꓬꓱꓽ", "pʰjø̀"}, {"ꓒꓬꓱꓼ", "pʰjø̱̀"}, {"ꓓꓸ ꓖꓶꓸ", "dɑ́ gɯ́"}, {"ꓓꓹ", "dɑ̌"}, {"ꓓꓹ ꓟꓻ", "dɑ̌ mɑ"}, {"ꓓꓻ", "dɑ"}, {"ꓓꓻ ꓪꓳꓽ", "dɑ wò"}, {"ꓓꓽ", "dɑ̀"}, {"ꓓꓽ ꓓꓹ", "dɑ̀ dɑ̌"}, {"ꓓꓽ ꓔꓳꓹ", "dɑ̀ tǒ"}, {"ꓓꓽ ꓘꓴꓻ ꓠꓴꓺ", "dɑ̀ kʰu nu̱"}, {"ꓓꓽ ꓟꓻ", "dɑ̀ mɑ"}, {"ꓓꓼ ꓡꓸ", "dɑ̱̀ lɑ́"}, {"ꓓꓽ ꓥꓳꓽ", "dɑ̀ ŋò"}, {"ꓓꓼ ꓪꓵꓽ", "dɑ̱̀ wỳ"}, {"ꓓꓯꓹ", "dæ̌"}, {"ꓓꓯꓹ ꓓꓯꓼ", "dæ̌ dæ̱̀"}, {"ꓓꓯꓺ", "dæ̱"}, {"ꓓꓯꓻ", "dæ"}, {"ꓓꓯꓼ", "dæ̱̀"}, {"ꓓꓯꓽ ꓓꓯꓹ", "dæ̀ dæ̌"}, {"ꓓꓰꓺ", "de̱"}, {"ꓓꓰꓺ ꓡꓰꓺ", "de̱ le̱"}, {"ꓓꓰꓽ", "dè"}, {"ꓓꓰꓽ ꓓꓰꓽ", "dè dè"}, {"ꓓꓰꓽ ꓖꓶꓽ", "dè gɯ̀"}, {"ꓓꓰꓽ ꓟꓬꓺ", "dè mjɑ̱"}, {"ꓓꓰꓼ", "dè̱"}, {"ꓓꓱꓺ", "dø̱"}, {"ꓓꓱꓺ ꓡꓱꓽ ꓡꓱꓽ", "dø̱ lø̀ lø̀"}, {"ꓓꓱꓽ", "dø̀"}, {"ꓓꓱꓽ ꓑꓬꓹ ꓟꓲꓺ", "dø̀ pjɑ̌ mi̱"}, {"ꓓꓱꓼ", "dø̱̀"}, {"ꓓꓲꓹ", "dǐ"}, {"ꓓꓲꓻ", "di"}, {"ꓓꓲꓽ", "dì"}, {"ꓓꓲꓽ ꓓꓲꓹ", "dì dǐ"}, {"ꓓꓲꓽ ꓓꓲꓽ", "dì dì"}, {"ꓓꓳꓹ", "dǒ"}, {"ꓓꓳꓹ ꓓꓳꓹ", "dǒ dǒ"}, {"ꓓꓳꓺ", "do̱"}, {"ꓓꓳꓻ", "do"}, {"ꓓꓳꓻ ꓖꓳꓼ", "do gò̱"}, {"ꓓꓳꓻ ꓖꓺ", "do gɑ̱"}, {"ꓓꓳꓽ", "dò"}, {"ꓓꓳꓽ ꓟꓽ ꓓꓻ", "dò mɑ̀ dɑ"}, {"ꓓꓳꓼ", "dò̱"}, {"ꓓꓴꓸ", "dú"}, {"ꓓꓴꓸ ꓓꓴꓸ", "dú dú"}, {"ꓓꓴꓹ ꓓꓴꓸ", "dǔ dú"}, {"ꓓꓴꓺ", "du̱"}, {"ꓓꓴꓻ", "du"}, {"ꓓꓴꓻ ꓔꓶꓸ", "du tɯ́"}, {"ꓓꓴꓻ ꓡꓯꓼ", "du læ̱̀"}, {"ꓓꓴꓽ", "dù"}, {"ꓓꓴꓽ ꓡꓽ", "dù lɑ̀"}, {"ꓓꓵꓹ", "dy̌"}, {"ꓓꓵꓺ", "dy̱"}, {"ꓓꓵꓽ", "dỳ"}, {"ꓓꓵꓽ ꓜꓽ", "dỳ dzɑ̀"}, {"ꓓꓵꓼ", "dỳ̱"}, {"ꓓꓶꓸ", "dɯ́"}, {"ꓓꓶꓺ", "dɯ̱"}, {"ꓓꓶꓽ", "dɯ̀"}, {"ꓓꓶꓽ ꓓꓶꓽ", "dɯ̀ dɯ̀"}, {"ꓓꓶꓼ", "dɯ̱̀"}, {"ꓓꓶꓼ ꓓꓶꓼ", "dɯ̱̀ dɯ̱̀"}, {"ꓔꓸ", "tɑ́"}, {"ꓔꓸ ꓔꓸ", "tɑ́ tɑ́"}, {"ꓔꓸ ꓖꓳꓽ", "tɑ́ gò"}, {"ꓔꓸ ꓞꓮꓳꓽ", "tɑ́ tsʰɑ̀w"}, {"ꓔꓸ ꓟꓲꓼ ꓔꓸ ꓑꓮꓲꓽ", "tɑ́ mì̱ tɑ́ pɑ̀j"}, {"ꓔꓸ ꓡꓬꓮꓳꓼ", "tɑ́ ljɑ̱̀w"}, {"ꓔꓸ ꓪꓰꓻ", "tɑ́ we"}, {"ꓔꓸ ꓫꓲꓹ", "tɑ́ ʃǐ"}, {"ꓔꓸ ꓬꓰꓸ", "tɑ́ jé"}, {"ꓔꓹ", "tɑ̌"}, {"ꓔꓹ ꓐꓬꓼ", "tɑ̌ bjɑ̱̀"}, {"ꓔꓹ ꓕꓳꓽ", "tɑ̌ tʰò"}, {"ꓔꓹ ꓗꓳꓹ ꓖꓴ", "tɑ̌ kǒ gu"}, {"ꓔꓹ ꓡꓴꓽ", "tɑ̌ lù"}, {"ꓔꓺ", "tɑ̱"}, {"ꓔꓺ ꓒꓰꓹ", "tɑ̱ pʰě"}, {"ꓔꓺ ꓔꓷꓹ", "tɑ̱ tɤ̌"}, {"ꓔꓺ ꓖꓽ", "tɑ̱ gɑ̀"}, {"ꓔꓺ ꓗꓴꓲꓸ", "tɑ̱ kúj"}, {"ꓔꓺ ꓡꓴꓸ", "tɑ̱ lú"}, {"ꓔꓺ ꓥꓺ", "tɑ̱ ŋɑ̱"}, {"ꓔꓺ ꓥꓺ ꓥꓺ", "tɑ̱ ŋɑ̱ ŋɑ̱"}, {"ꓔꓺ ꓬꓽ", "tɑ̱ jɑ̀"}, {"ꓔꓻ", "tɑ"}, {"ꓔꓽ", "tɑ̀"}, {"ꓔꓽ ꓔꓳꓸ ꓒꓬꓽ ꓛꓵꓻ", "tɑ̀ tó pʰjɑ̀ tʃʰɨ"}, {"ꓔꓽ ꓗꓪꓰꓽ", "tɑ̀ kwè"}, {"ꓔꓽ ꓠꓴꓽ", "tɑ̀ nù"}, {"ꓔꓽ ꓧꓳꓽ", "tɑ̀ xò"}, {"ꓔꓼ ꓑꓳꓼ", "tɑ̱̀ pò̱"}, {"ꓔꓼ ꓗꓪꓼ", "tɑ̱̀ kwɑ̱̀"}, {"ꓔꓮꓲꓸ", "tɑ́j"}, {"ꓔꓮꓲꓼ", "tɑ̱̀j"}, {"ꓔꓮꓳꓸ", "tɑ́w"}, {"ꓔꓮꓳꓸ ꓞꓲꓸ", "tɑ́w tsʰɨ́"}, {"ꓔꓮꓳꓺ", "tɑ̱w"}, {"ꓔꓯꓸ", "tǽ"}, {"ꓔꓯꓹ", "tæ̌"}, {"ꓔꓯꓹ ꓐꓬꓼ", "tæ̌ bjɑ̱̀"}, {"ꓔꓯꓹ ꓗꓪꓽ", "tæ̌ kwɑ̀"}, {"ꓔꓯꓹ ꓪꓵꓼ", "tæ̌ wỳ̱"}, {"ꓔꓯꓺ", "tæ̱"}, {"ꓔꓯꓽ", "tæ̀"}, {"ꓔꓰꓸ", "té"}, {"ꓔꓰꓸ ꓔꓰꓸ ꓔꓰꓸ", "té té té"}, {"ꓔꓰꓸ ꓔꓳꓹ", "té tǒ"}, {"ꓔꓰꓹ", "tě"}, {"ꓔꓰꓹ ꓔꓰꓹ", "tě tě"}, {"ꓔꓰꓹ ꓝꓲꓺ", "tě tsɨ̱"}, {"ꓔꓰꓺ", "te̱"}, {"ꓔꓰꓺ ꓝꓼ ꓔꓰꓺ ꓧꓳꓽ", "te̱ tsɑ̱̀ te̱ xò"}, {"ꓔꓰꓺ ꓝꓲꓼ", "te̱ tsɨ̱̀"}, {"ꓔꓰꓽ", "tè"}, {"ꓔꓰꓼ", "tè̱"}, {"ꓔꓱꓸ", "tǿ"}, {"ꓔꓱꓹ", "tø̌"}, {"ꓔꓱꓺ", "tø̱"}, {"ꓔꓱꓻ ꓦꓲꓻ", "tø h̃i"}, {"ꓔꓲꓸ", "tí"}, {"ꓔꓲꓸ ꓟꓶꓹ", "tí mɯ̌"}, {"ꓔꓲꓸ ꓡꓽ ꓑꓴꓸ", "tí lɑ̀ pú"}, {"ꓔꓲꓸ ꓡꓽ ꓝꓴꓸ", "tí lɑ̀ tsú"}, {"ꓔꓲꓸ ꓡꓲꓺ", "tí li̱"}, {"ꓔꓲꓸ ꓡꓲꓼ", "tí lì̱"}, {"ꓔꓲꓸ ꓤꓼ ꓑꓺ ꓤꓼ", "tí zɑ̱̀ pɑ̱ zɑ̱̀"}, {"ꓔꓲꓹ", "tǐ"}, {"ꓔꓲꓺ", "ti̱"}, {"ꓔꓲꓺ ꓔꓲꓺ", "ti̱ ti̱"}, {"ꓔꓲꓺ ꓝꓼ ꓔꓲꓺ ꓧꓳꓽ", "ti̱ tsɑ̱̀ ti̱ xò"}, {"ꓔꓲꓼ", "tì̱"}, {"ꓔꓳꓸ", "tó"}, {"ꓔꓳꓸ ꓔꓳꓸ", "tó tó"}, {"ꓔꓳꓸ ꓗꓯꓸ", "tó kǽ"}, {"ꓔꓳꓹ", "tǒ"}, {"ꓔꓳꓹ ꓛꓬꓽ ꓟꓺ", "tǒ tʃʰɑ̀ mɑ̱"}, {"ꓔꓳꓹ ꓞꓽ", "tǒ tsʰɑ̀"}, {"ꓔꓳꓹ ꓡꓳꓺ", "tǒ lo̱"}, {"ꓔꓳꓺ", "to̱"}, {"ꓔꓳꓺ ꓛꓬꓯꓳꓼ ꓟꓺ", "to̱ tʃʰjæ̱̀w mɑ̱"}, {"ꓔꓳꓺ ꓔꓮꓲꓸ", "to̱ tɑ́j"}, {"ꓔꓳꓺ ꓗꓳꓹ ꓒꓬꓽ", "to̱ kǒ pʰjɑ̀"}, {"ꓔꓳꓺ ꓡꓳꓺ", "to̱ lo̱"}, {"ꓔꓳꓽ", "tò"}, {"ꓔꓳꓽ ꓛꓱꓹ", "tò tʃʰø̌"}, {"ꓔꓳꓽ ꓝꓱꓸ", "tò tsǿ"}, {"ꓔꓳꓽ ꓡꓲꓸ", "tò lí"}, {"ꓔꓳꓽ ꓡꓳꓽ", "tò lò"}, {"ꓔꓳꓽ ꓢꓳꓽ", "tò sò"}, {"ꓔꓳꓽ ꓧꓳꓹ", "tò xǒ"}, {"ꓔꓳꓽ ꓡꓬꓼ", "tò ljɑ̱̀"}, {"ꓔꓳꓼ", "tò̱"}, {"ꓔꓴꓸ", "tú"}, {"ꓔꓴꓹ", "tǔ"}, {"ꓔꓴꓺ", "tu̱"}, {"ꓔꓴꓺ ꓔꓮꓲꓸ", "tu̱ tɑ́j"}, {"ꓔꓴꓺ ꓔꓼ", "tu̱ tɑ̱̀"}, {"ꓔꓴꓻ ꓔꓴꓻ ꓪꓯꓻ", "tu tu wæ"}, {"ꓔꓴꓽ", "tù"}, {"ꓔꓴꓽ ꓔꓴꓽ", "tù tù"}, {"ꓔꓴꓲꓸ", "túj"}, {"ꓔꓵꓸ", "tý"}, {"ꓔꓵꓹ", "ty̌"}, {"ꓔꓵꓹ ꓛꓬꓹ", "ty̌ tʃʰɑ̌"}, {"ꓔꓵꓺ", "ty̱"}, {"ꓔꓶꓸ", "tɯ́"}, {"ꓔꓶꓺ", "tɯ̱"}, {"ꓔꓷꓹ", "tɤ̌"}, {"ꓔꓷꓼ", "tɤ̱̀"}, {"ꓔꓬꓹ", "tjɑ̌"}, {"ꓔꓬꓳꓸ", "tjó"}, {"ꓕꓸ", "tʰɑ́"}, {"ꓕꓹ ꓟꓳꓼ", "tʰɑ̌ mò̱"}, {"ꓕꓺ", "tʰɑ̱"}, {"ꓕꓺ ꓡꓺ", "tʰɑ̱ lɑ̱"}, {"ꓕꓻ", "tʰɑ"}, {"ꓕꓽ", "tʰɑ̀"}, {"ꓕꓽ ꓒꓸ", "tʰɑ̀ pʰɑ́"}, {"ꓕꓽ ꓒꓳꓸ", "tʰɑ̀ pʰó"}, {"ꓕꓽ ꓕꓸ ꓢꓶꓽ", "tʰɑ̀ tʰɑ́ sɯ̀"}, {"ꓕꓽ ꓕꓸ", "tʰɑ̀ tʰɑ́"}, {"ꓕꓽ ꓟꓳꓼ", "tʰɑ̀ mò̱"}, {"ꓕꓽ ꓡꓽ", "tʰɑ̀ lɑ̀"}, {"ꓕꓽ ꓦꓻꓽ", "tʰɑ̀ h̃ɑɑ̀"}, {"ꓕꓽ ꓧꓳꓽ", "tʰɑ̀ xò"}, {"ꓕꓽ ꓪꓺ", "tʰɑ̀ wɑ̱"}, {"ꓕꓽ ꓪꓳꓻ", "tʰɑ̀ wo"}, {"ꓕꓮꓥꓹ ꓠꓮꓟꓸ", "tʰɑ̌ŋ nɑ́m"}, {"ꓕꓮꓥꓺ ꓝꓲꓼ", "tʰɑ̱ŋ tsɨ̱̀"}, {"ꓕꓮꓲꓸ", "tʰɑ́j"}, {"ꓕꓮꓲꓽ", "tʰɑ̀j"}, {"ꓕꓮꓳꓺ", "tʰɑ̱w"}, {"ꓕꓮꓳꓽ ꓒꓮꓳꓸ", "tʰɑ̀w pʰɑ́w"}, {"ꓕꓮꓳꓽ ꓞꓲꓸ", "tʰɑ̀w tsʰɨ́"}, {"ꓕꓯꓸ", "tʰǽ"}, {"ꓕꓯꓹ", "tʰæ̌"}, {"ꓕꓯꓽ", "tʰæ̀"}, {"ꓕꓯꓽ ꓫꓵꓺ", "tʰæ̀ ʃɨ̱"}, {"ꓕꓯꓼ", "tʰæ̱̀"}, {"ꓕꓯꓸꓽ", "tʰǽæ̀"}, {"ꓕꓰꓹ", "tʰě"}, {"ꓕꓰꓺ", "tʰe̱"}, {"ꓕꓰꓻ", "tʰe"}, {"ꓕꓰꓠꓸ ꓔꓲꓸ ꓒꓴꓽ ꓢꓸ", "tʰén tí pʰù sɑ́"}, {"ꓕꓰꓽ ꓡꓯꓼ", "tʰè læ̱̀"}, {"ꓕꓱꓹ", "tʰø̌"}, {"ꓕꓱꓺ", "tʰø̱"}, {"ꓕꓱꓻ", "tʰø"}, {"ꓕꓱꓽ", "tʰø̀"}, {"ꓕꓱꓼ", "tʰø̱̀"}, {"ꓕꓱꓻꓽ", "tʰøø̀"}, {"ꓕꓲꓺ", "tʰi̱"}, {"ꓕꓲꓻ ꓫꓲꓺ", "tʰi ʃi̱"}, {"ꓕꓲꓽ", "tʰì"}, {"ꓕꓲꓥꓺ", "tʰi̱ŋ"}, {"ꓕꓳꓸ", "tʰó"}, {"ꓕꓳꓹ", "tʰǒ"}, {"ꓕꓳꓹ ꓬꓺ", "tʰǒ jɑ̱"}, {"ꓕꓳꓺ", "tʰo̱"}, {"ꓕꓳꓽ", "tʰò"}, {"ꓕꓳꓽ ꓒꓽ ꓓꓰꓺ", "tʰò pʰɑ̀ de̱"}, {"ꓕꓳꓽ ꓒꓳꓸ", "tʰò pʰó"}, {"ꓕꓳꓽ ꓕꓳꓽ", "tʰò tʰò"}, {"ꓕꓳꓽ ꓘꓴꓽ", "tʰò kʰù"}, {"ꓕꓳꓽ ꓛꓱꓹ", "tʰò tʃʰø̌"}, {"ꓕꓳꓽ ꓟꓷꓹ", "tʰò mɤ̌"}, {"ꓕꓳꓽ ꓡꓻ", "tʰò lɑ"}, {"ꓕꓳꓽ ꓡꓽ", "tʰò lɑ̀"}, {"ꓕꓳꓽ ꓧꓳꓻ", "tʰò xo"}, {"ꓕꓳꓽ ꓶꓽ", "tʰò ɣɯ̀"}, {"ꓕꓳꓼ", "tʰò̱"}, {"ꓕꓳꓥꓺ", "tʰo̱ŋ"}, {"ꓕꓳꓥꓽ", "tʰòŋ"}, {"ꓕꓴꓸ", "tʰú"}, {"ꓕꓴꓺ", "tʰu̱"}, {"ꓕꓴꓻ", "tʰu"}, {"ꓕꓴꓽ", "tʰù"}, {"ꓕꓴꓽ ꓘꓴꓼ", "tʰù kʰù̱"}, {"ꓕꓴꓽ ꓛꓰꓺ ꓘꓪꓸ", "tʰù tʃʰe̱ kʰwɑ́"}, {"ꓕꓴꓽ ꓞꓲꓺ ꓘꓪꓸ", "tʰù tsʰɨ̱ kʰwɑ́"}, {"ꓕꓵꓺ", "tʰy̱"}, {"ꓕꓵꓼ", "tʰỳ̱"}, {"ꓕꓶꓸ", "tʰɯ́"}, {"ꓕꓶꓸ ꓡꓶꓸ ꓤꓽ", "tʰɯ́ lɯ́ zɑ̀"}, {"ꓕꓶꓻ", "tʰɯ"}, {"ꓕꓶꓽ ꓡꓶꓽ ꓡꓶꓽ", "tʰɯ̀ lɯ̀ lɯ̀"}, {"ꓕꓷꓹ", "tʰɤ̌"}, {"ꓕꓷꓻ", "tʰɤ"}, {"ꓕꓷꓼ", "tʰɤ̱̀"}, {"ꓖꓸ ꓖꓸ", "gɑ́ gɑ́"}, {"ꓖꓹ ꓳꓺ", "gɑ̌ o̱"}, {"ꓖꓺ", "gɑ̱"}, {"ꓖꓻ", "gɑ"}, {"ꓖꓻ ꓖꓻ", "gɑ gɑ"}, {"ꓖꓽ", "gɑ̀"}, {"ꓖꓽ ꓖꓶꓽ", "gɑ̀ gɯ̀"}, {"ꓖꓽ ꓖꓽ", "gɑ̀ gɑ̀"}, {"ꓖꓽ ꓡꓽ", "gɑ̀ lɑ̀"}, {"ꓖꓽ ꓡꓯꓻ", "gɑ̀ læ"}, {"ꓖꓼ", "gɑ̱̀"}, {"ꓖꓼ ꓐꓰꓺ", "gɑ̱̀ be̱"}, {"ꓖꓼ ꓖꓼ ꓜꓲ", "gɑ̱̀ gɑ̱̀ dzɨ"}, {"ꓖꓼ ꓙꓬꓺ", "gɑ̱̀ dʒɑ̱"}, {"ꓖꓼ ꓡꓼ ꓜꓲꓻ", "gɑ̱̀ lɑ̱̀ dzɨ"}, {"ꓖꓼ ꓡꓯꓼ ꓖꓼ ꓜꓲꓻ", "gɑ̱̀ læ̱̀ gɑ̱̀ dzɨ"}, {"ꓖꓼ ꓢꓲꓸ ꓢꓲꓸ", "gɑ̱̀ sɨ́ sɨ́"}, {"ꓖꓰꓸ", "gé"}, {"ꓖꓳꓹ", "gǒ"}, {"ꓖꓳꓺ", "go̱"}, {"ꓖꓳꓺ ꓓꓱꓽ", "go̱ dø̀"}, {"ꓖꓳꓻ", "go"}, {"ꓖꓳꓻ ꓖꓳꓻ", "go go"}, {"ꓖꓳꓻ ꓥꓳꓽ", "go ŋò"}, {"ꓖꓳꓽ", "gò"}, {"ꓖꓳꓽ ꓑꓰꓸ ꓔꓲꓻ ꓧꓶꓽ", "gò pé ti xɯ̀"}, {"ꓖꓳꓽ ꓙꓱꓻ", "gò dʒø"}, {"ꓖꓳꓽ ꓡꓱꓹ", "gò lø̌"}, {"ꓖꓳꓽ ꓦꓱꓽ", "gò h̃ø̀"}, {"ꓖꓳꓼ", "gò̱"}, {"ꓖꓳꓼ ꓖꓳꓼ", "gò̱ gò̱"}, {"ꓖꓳꓻ ꓠꓬꓲꓻ", "go ɲi"}, {"ꓖꓴꓹ ꓖꓴꓻ", "gǔ gu"}, {"ꓖꓴꓺ", "gu̱"}, {"ꓖꓴꓻ", "gu"}, {"ꓖꓴꓻˍꓼ", "guɑ̱̀"}, {"ꓖꓴꓽ", "gù"}, {"ꓖꓴꓽ ꓜꓴꓽ", "gù dzù"}, {"ꓖꓴꓼ", "gù̱"}, {"ꓖꓶꓸ", "gɯ́"}, {"ꓖꓶꓺ", "gɯ̱"}, {"ꓖꓶꓺ ꓬꓲꓽ", "gɯ̱ jì"}, {"ꓖꓶꓻ", "gɯ"}, {"ꓖꓶꓽ ꓖꓶꓽ", "gɯ̀ gɯ̀"}, {"ꓖꓶꓽ", "gɯ̀"}, {"ꓖꓶꓽ ꓐꓻ", "gɯ̀ bɑ"}, {"ꓐꓶꓽ ꓜꓲꓻ", "bɯ̀ dzɨ"}, {"ꓖꓶꓽ ꓡꓶꓽ", "gɯ̀ lɯ̀"}, {"ꓖꓪꓸ", "gwɑ́"}, {"ꓖꓪꓸ ꓖꓪꓸ", "gwɑ́ gwɑ́"}, {"ꓖꓪꓺ", "gwɑ̱"}, {"ꓖꓪꓺ ꓖꓪꓺ", "gwɑ̱ gwɑ̱"}, {"ꓖꓪꓺ ꓛꓳꓽ", "gwɑ̱ tʃʰò"}, {"ꓖꓪꓺ ꓜꓲꓺ", "gwɑ̱ dzɨ̱"}, {"ꓖꓪꓻ", "gwɑ"}, {"ꓖꓪꓻ ꓙꓱꓻ", "gwɑ dʒø"}, {"ꓖꓪꓻ ꓢꓶꓽ", "gwɑ sɯ̀"}, {"ꓖꓪꓽ", "gwɑ̀"}, {"ꓖꓪꓽ-ꓚꓬꓺ-ꓢꓺ", "gwɑ̀-tʃɑ̱-sɑ̱"}, {"ꓖꓪꓽ ꓡꓽ ꓡꓽ", "gwɑ̀ lɑ̀ lɑ̀"}, {"ꓗꓸ", "kɑ́"}, {"ꓗꓸ ꓚꓵꓺ", "kɑ́ tʃɨ̱"}, {"ꓗꓸ ꓞꓲꓺ ꓗꓸ ꓡꓯꓼ", "kɑ́ tsʰɨ̱ kɑ́ læ̱̀"}, {"ꓗꓸ ꓠꓯꓸ", "kɑ́ nǽ"}, {"ꓗꓸ ꓠꓬꓸ", "kɑ́ ɲɑ́"}, {"ꓗꓸ ꓡꓸ ꓐꓳꓼ ꓡꓳꓺ", "kɑ́ lɑ́ bò̱ lo̱"}, {"ꓗꓸ ꓡꓯꓼ", "kɑ́ læ̱̀"}, {"ꓗꓹ", "kɑ̌"}, {"ꓗꓹ ꓐꓽ", "kɑ̌ bɑ̀"}, {"ꓗꓹ ꓑꓽ", "kɑ̌ pɑ̀"}, {"ꓗꓹ ꓕꓽ", "kɑ̌ tʰɑ̀"}, {"ꓗꓹ ꓕꓴꓺ", "kɑ̌ tʰu̱"}, {"ꓗꓹ ꓛꓬꓼ", "kɑ̌ tʃʰɑ̱̀"}, {"ꓗꓹ ꓚꓰꓽ", "kɑ̌ tʃè"}, {"ꓗꓹ ꓡꓸ ꓡꓸ", "kɑ̌ lɑ́ lɑ́"}, {"ꓗꓹ ꓡꓹ", "kɑ̌ lɑ̌"}, {"ꓗꓹ ꓧꓳꓽ ꓧꓳꓽ", "kɑ̌ xò xò"}, {"ꓗꓺ", "kɑ̱"}, {"ꓗꓺ ꓗꓴꓺ", "kɑ̱ ku̱"}, {"ꓗꓺ ꓘꓶꓽ", "kɑ̱ kʰɯ̀"}, {"ꓗꓺ ꓐꓶꓸ", "kɑ̱ bɯ́"}, {"ꓗꓺ ꓑꓰꓸˍꓽ", "kɑ̱ péɑ̀"}, {"ꓗꓺ ꓡꓺ ꓗꓳꓸ ꓡꓳꓸ", "kɑ̱ lɑ̱ kó ló"}, {"ꓗꓺ ꓡꓯꓺ ꓡꓯꓺ", "kɑ̱ læ̱ læ̱"}, {"ꓗꓻ", "kɑ"}, {"ꓗꓽ", "kɑ̀"}, {"ꓗꓽ-ꓡꓽ", "kɑ̀-lɑ̀"}, {"ꓗꓽ ꓢꓳꓹ", "kɑ̀ sǒ"}, {"ꓗꓼ ꓡꓼ", "kɑ̱̀ lɑ̱̀"}, {"ꓗꓮꓲꓸ", "kɑ́j"}, {"ꓗꓮꓲꓺ ꓗꓮꓲꓺ ꓒꓽ", "kɑ̱j kɑ̱j pʰɑ̀"}, {"ꓗꓮꓲꓺ ꓝꓲꓼ", "kɑ̱j tsɨ̱̀"}, {"ꓗꓮꓲꓽ ꓔꓸ", "kɑ̀j tɑ́"}, {"ꓗꓮꓲꓼ", "kɑ̱̀j"}, {"ꓗꓮꓳꓺ", "kɑ̱w"}, {"ꓗꓮꓳꓼ", "kɑ̱̀w"}, {"ꓗꓯꓸꓳꓽ", "kǽò"}, {"ꓗꓲꓸ ꓡꓴꓸ", "kí lú"}, {"ꓗꓳꓸ", "kó"}, {"ꓗꓳꓸ ꓑꓼ", "kó pɑ̱̀"}, {"ꓗꓳꓸ ꓔꓳꓸ", "kó tó"}, {"ꓗꓳꓸ ꓔꓳꓸ ꓡꓳꓸ", "kó tó ló"}, {"ꓗꓳꓸ ꓖꓳꓽ", "kó gò"}, {"ꓗꓳꓸ ꓗꓳꓸ ꓔꓯꓽ ꓔꓯꓽ", "kó kó tæ̀ tæ̀"}, {"ꓗꓳꓸ ꓗꓳꓺ", "kó ko̱"}, {"ꓗꓳꓸ ꓡꓱꓸ", "kó lǿ"}, {"ꓗꓳꓸ-ꓡꓳꓸ", "kó-ló"}, {"ꓗꓳꓹ", "kǒ"}, {"ꓗꓳꓹ ꓒꓽ", "kǒ pʰɑ̀"}, {"ꓗꓳꓹ ꓗꓳꓸ ꓗꓳꓸ", "kǒ kó kó"}, {"ꓗꓳꓺ", "ko̱"}, {"ꓗꓳꓺ ꓑꓲꓺ", "ko̱ pi̱"}, {"ꓗꓳꓺ ꓓꓱꓽ", "ko̱ dø̀"}, {"ꓗꓳꓺ ꓝꓲꓺ ꓤꓽ", "ko̱ tsɨ̱ zɑ̀"}, {"ꓗꓳꓽ ꓔꓳꓹ ꓡꓳꓺ", "kò tǒ lo̱"}, {"ꓗꓳꓽ ꓔꓯꓸ", "kò tǽ"}, {"ꓗꓳꓽ ꓗꓮꓲꓹ", "kò kɑ̌j"}, {"ꓗꓳꓼ ꓗꓳꓼ", "kò̱ kò̱"}, {"ꓗꓳꓥꓺ", "ko̱ŋ"}, {"ꓗꓴꓸ", "kú"}, {"ꓗꓴꓹ", "kǔ"}, {"ꓗꓴꓹ ꓞꓽ", "kǔ tsʰɑ̀"}, {"ꓗꓴꓺ", "ku̱"}, {"ꓗꓴꓺ ꓕꓴꓽ", "ku̱ tʰù"}, {"ꓗꓴꓺ ꓗꓴꓺ", "ku̱ ku̱"}, {"ꓗꓴꓺ ꓘꓶꓽ", "ku̱ kʰɯ̀"}, {"ꓗꓴꓺ ꓝꓴꓺ", "ku̱ tsu̱"}, {"ꓗꓴꓺ ꓤꓼ", "ku̱ zɑ̱̀"}, {"ꓗꓴꓽ", "kù"}, {"ꓗꓴꓽ ꓑꓲꓹ ꓟꓺ", "kù pǐ mɑ̱"}, {"ꓗꓴꓽ ꓟꓶꓽ ꓜꓲꓻ", "kù mɯ̀ dzɨ"}, {"ꓗꓴꓽ ꓠꓬꓮꓳ", "kù ɲɑw"}, {"ꓗꓴꓽ ꓠꓬꓲꓺ ꓚꓬꓺ ꓠꓬꓲꓺ", "kù ɲi̱ tʃɑ̱ ɲi̱"}, {"ꓗꓴꓽ ꓡꓲꓸ ꓗꓸ", "kù lí kɑ́"}, {"ꓗꓴꓽ ꓡꓲꓸ ꓗꓽ ꓗꓽ", "kù lí kɑ̀ kɑ̀"}, {"ꓗꓴꓲꓸ", "kúj"}, {"ꓗꓶꓸ", "kɯ́"}, {"ꓗꓶꓸ ꓡꓲꓸ", "kɯ́ lí"}, {"ꓗꓶꓹ", "kɯ̌"}, {"ꓗꓶꓺ", "kɯ̱"}, {"ꓗꓶꓽ", "kɯ̀"}, {"ꓗꓶꓽ ꓔꓶꓽ", "kɯ̀ tɯ̀"}, {"ꓗꓶꓼ ꓔꓶꓼ", "kɯ̱̀ tɯ̱̀"}, {"ꓗꓷꓹ", "kɤ̌"}, {"ꓗꓷꓹ ꓔꓸ", "kɤ̌ tɑ́"}, {"ꓗꓷꓺ", "kɤ̱"}, {"ꓗꓷꓺ ꓡꓰꓺ", "kɤ̱ le̱"}, {"ꓗꓷꓽ ꓔꓷꓹ", "kɤ̀ tɤ̌"}, {"ꓗꓷꓽ ꓝꓲꓺ", "kɤ̀ tsɨ̱"}, {"ꓗꓪꓸ", "kwɑ́"}, {"ꓗꓪꓸ ꓗꓪꓸ", "kwɑ́ kwɑ́"}, {"ꓗꓪꓸ ꓛꓬꓸ ꓛꓬꓸ", "kwɑ́ tʃʰɑ́ tʃʰɑ́"}, {"ꓗꓪꓸ ꓑꓵꓺ", "kwɑ́ py̱"}, {"ꓗꓪꓸ ꓡꓲꓸ ꓗꓽ ꓗꓽ", "kwɑ́ lí kɑ̀ kɑ̀"}, {"ꓗꓪꓸ ꓫꓵꓹ", "kwɑ́ ʃɨ̌"}, {"ꓗꓪꓹ", "kwɑ̌"}, {"ꓗꓪꓹ-ꓜꓴꓺ", "kwɑ̌-dzu̱"}, {"ꓗꓪꓹ ꓡꓳꓺ", "kwɑ̌ lo̱"}, {"ꓗꓪꓺ", "kwɑ̱"}, {"ꓗꓪꓺ ꓛꓰꓹ", "kwɑ̱ tʃʰě"}, {"ꓗꓪꓺ ꓛꓳꓽ", "kwɑ̱ tʃʰò"}, {"ꓗꓪꓺ ꓑꓰꓹ", "kwɑ̱ pě"}, {"ꓗꓪꓽ ꓑꓬꓹ ꓡꓳꓽ ꓟꓺ", "kwɑ̀ pjɑ̌ lò mɑ̱"}, {"ꓗꓪꓽ ꓔꓸ ꓡꓸ", "kwɑ̀ tɑ́ lɑ́"}, {"ꓗꓪꓼ", "kwɑ̱̀"}, {"ꓗꓪꓼ ꓝꓲꓺ", "kwɑ̱̀ tsɨ̱"}, {"ꓗꓪꓮꓲꓸ ꓢꓲꓸ", "kwɑ́j sɨ́"}, {"ꓗꓪꓰꓺ", "kwe̱"}, {"ꓗꓪꓰꓽ", "kwè"}, {"ꓗꓪꓮꓥꓽ ꓔꓸ ꓡꓸ", "kwɑ̀ŋ tɑ́ lɑ́"}, {"ꓘꓸ", "kʰɑ́"}, {"ꓘꓹ", "kʰɑ̌"}, {"ꓘꓹ ꓐꓰꓽ", "kʰɑ̌ bè"}, {"ꓘꓹ ꓞꓽ", "kʰɑ̌ tsʰɑ̀"}, {"ꓘꓹ ꓟꓳꓻ ꓡꓳꓺ ꓟꓳꓻ", "kʰɑ̌ mo lo̱ mo"}, {"ꓘꓹ ꓡꓰ", "kʰɑ̌ le"}, {"ꓘꓹ-ꓡꓼ", "kʰɑ̌-lɑ̱̀"}, {"ꓘꓹ ꓡꓼ ꓡꓼ", "kʰɑ̌ lɑ̱̀ lɑ̱̀"}, {"ꓘꓺ", "kʰɑ̱"}, {"ꓘꓽ", "kʰɑ̀"}, {"ꓘꓽ ꓡꓹ", "kʰɑ̀ lɑ̌"}, {"ꓘꓽ ꓡꓲꓸ ꓡꓳꓺ", "kʰɑ̀ lí lo̱"}, {"ꓘꓼ", "kʰɑ̱̀"}, {"ꓘꓼ ꓐꓰꓽ", "kʰɑ̱̀ bè"}, {"ꓘꓼ ꓘꓼ", "kʰɑ̱̀ kʰɑ̱̀"}, {"ꓘꓼ ꓡꓼ", "kʰɑ̱̀ lɑ̱̀"}, {"ꓘꓮꓲꓺ ꓘꓶꓽ", "kʰɑ̱j kʰɯ̀"}, {"ꓘꓮꓳꓹ", "kʰɑ̌w"}, {"ꓘꓱꓽ", "kʰø̀"}, {"ꓘꓲꓺ", "kʰi̱"}, {"ꓘꓳꓸ", "kʰó"}, {"ꓘꓳꓹ", "kʰǒ"}, {"ꓘꓳꓹ ꓗꓹ", "kʰǒ kɑ̌"}, {"ꓘꓳꓻ", "kʰo"}, {"ꓘꓳꓻ ꓡꓰꓺ", "kʰo le̱"}, {"ꓘꓳꓻ ꓫꓱꓺ ꓫꓱꓺ", "kʰo ʃø̱ ʃø̱"}, {"ꓘꓳꓽ", "kʰò"}, {"ꓘꓳꓽ ꓝꓳꓸ", "kʰò tsó"}, {"ꓘꓳꓽ ꓡꓯꓼ ꓑꓴꓺ", "kʰò læ̱̀ pu̱"}, {"ꓘꓳꓽ ꓫꓱꓹ", "kʰò ʃø̌"}, {"ꓘꓳꓼ", "kʰò̱"}, {"ꓘꓳꓼ ꓓꓳꓼ", "kʰò̱ dò̱"}, {"ꓘꓳꓼ ꓡꓳꓼ", "kʰò̱ lò̱"}, {"ꓘꓳꓸꓽ", "kʰóò"}, {"ꓘꓴꓸ", "kʰú"}, {"ꓘꓴꓺ", "kʰu̱"}, {"ꓘꓴꓻ", "kʰu"}, {"ꓘꓴꓽ", "kʰù"}, {"ꓘꓴꓽ ꓘꓴꓽ", "kʰù kʰù"}, {"ꓘꓴꓽ ꓝꓳꓸ", "kʰù tsó"}, {"ꓘꓴꓽ ꓞꓽ", "kʰù tsʰɑ̀"}, {"ꓘꓴꓽ ꓟꓶꓽ", "kʰù mɯ̀"}, {"ꓘꓴꓽ ꓠꓶꓽ ꓜꓲꓻ", "kʰù nɯ̀ dzɨ"}, {"ꓘꓴꓽ ꓦꓻ", "kʰù h̃ɑ"}, {"ꓘꓴꓼ", "kʰù̱"}, {"ꓘꓶꓸ", "kʰɯ́"}, {"ꓘꓶꓸ ꓡꓶꓽ ꓡꓶꓽ", "kʰɯ́ lɯ̀ lɯ̀"}, {"ꓘꓶꓹ", "kʰɯ̌"}, {"ꓘꓶꓻ", "kʰɯ"}, {"ꓘꓶꓻ ꓡꓶꓽ", "kʰɯ lɯ̀"}, {"ꓘꓶꓽ", "kʰɯ̀"}, {"ꓘꓶꓽ ꓕꓶꓽ", "kʰɯ̀ tʰɯ̀"}, {"ꓘꓶꓽ ꓘꓹ", "kʰɯ̀ kʰɑ̌"}, {"ꓘꓶꓽ ꓛꓵꓽ", "kʰɯ̀ tʃʰɨ̀"}, {"ꓘꓶꓽ ꓢꓶꓽ", "kʰɯ̀ sɯ̀"}, {"ꓘꓶꓽ ꓢꓺ", "kʰɯ̀ sɑ̱"}, {"ꓘꓶꓽ ꓩꓴꓽ", "kʰɯ̀ fù"}, {"ꓘꓶꓼ", "kʰɯ̱̀"}, {"ꓘꓪꓸ", "kʰwɑ́"}, {"ꓘꓪꓸ ꓘꓪꓸ ꓟꓺ", "kʰwɑ́ kʰwɑ́ mɑ̱"}, {"ꓘꓪꓺ", "kʰwɑ̱"}, {"ꓘꓪꓽ", "kʰwɑ̀"}, {"ꓘꓪꓽ ꓕꓳꓽ", "kʰwɑ̀ tʰò"}, {"ꓘꓪꓽ ꓞꓳꓽ", "kʰwɑ̀ tsʰò"}, {"ꓘꓪꓽ ꓟꓶꓽ ꓒꓴꓻ", "kʰwɑ̀ mɯ̀ pʰu"}, {"ꓘꓪꓽ ꓫꓵꓺ", "kʰwɑ̀ ʃɨ̱"}, {"ꓘꓪꓼ", "kʰwɑ̱̀"}, {"ꓘꓪꓼ-ꓝꓺ-ꓢꓺ", "kʰwɑ̱̀-tsɑ̱-sɑ̱"}, {"ꓘꓪꓼ ꓡꓳꓼ", "kʰwɑ̱̀ lò̱"}, {"ꓘꓪꓮꓲꓽ ꓫꓰꓺ", "kʰwɑ̀j ʃe̱"}, {"ꓘꓪꓮꓥꓺ", "kʰwɑ̱ŋ"}, {"ꓘꓪꓮꓥꓽ", "kʰwɑ̀ŋ"}, {"ꓘꓪꓯꓼ", "kʰwæ̱̀"}, {"ꓙ", "dʐɑ"}, {"ꓙꓯꓼ ꓡꓯꓼ", "dʒæ̱̀ læ̱̀"}, {"ꓙꓰꓻ", "dʒe"}, {"ꓙꓰꓻ ꓓꓰꓹ", "dʒe dě"}, {"ꓙꓰꓽ", "dʒè"}, {"ꓙꓰꓼ", "dʒè̱"}, {"ꓙꓱꓸ ꓙꓱꓻ", "dʒǿ dʒø"}, {"ꓙꓱꓺ", "dʒø̱"}, {"ꓙꓱꓻ", "dʒø"}, {"ꓙꓱꓽ", "dʒø̀"}, {"ꓙꓱꓼ", "dʒø̱̀"}, {"ꓙꓲ", "dʒi"}, {"ꓙꓲꓺ", "dʒi̱"}, {"ꓙꓲꓻ", "dʒi"}, {"ꓙꓲꓽ", "dʒì"}, {"ꓙꓲꓽ ꓧꓶꓹ", "dʒì xɯ̌"}, {"ꓙꓲꓽ ꓡꓲꓽ ꓡꓲꓽ", "dʒì lì lì"}, {"ꓙꓲꓼ", "dʒì̱"}, {"ꓙꓲꓥꓺ", "dʒi̱ŋ"}, {"ꓙꓳꓺ", "dʒo̱"}, {"ꓙꓳꓻ", "dʒo"}, {"ꓙꓳꓽ", "dʒò"}, {"ꓙꓳꓽ ꓡꓯꓽ ꓡꓯꓽ", "dʒò læ̀ læ̀"}, {"ꓙꓳꓽ ꓡꓳꓽ ꓡꓳꓽ", "dʒò lò lò"}, {"ꓙꓳꓼ", "dʒò̱"}, {"ꓙꓴꓹ ꓙꓴꓻ", "dʒǔ dʒu"}, {"ꓙꓴꓺ", "dʒu̱"}, {"ꓙꓴꓻ", "dʒu"}, {"ꓙꓴꓽ", "dʒù"}, {"ꓙꓴꓽ ꓑꓲꓸ ꓗꓴꓺ ꓗꓴꓺ", "dʒù pí ku̱ ku̱"}, {"ꓙꓴꓽ ꓝꓲꓸ", "dʒù tsɨ́"}, {"ꓙꓵꓹ", "dʒɨ̌"}, {"ꓙꓵꓺ", "dʒɨ̱"}, {"ꓙꓵꓻ", "dʒɨ"}, {"ꓙꓵꓻˍꓼ", "dʒɨɑ̱̀"}, {"ꓙꓵꓽ", "dʒɨ̀"}, {"ꓙꓵꓽ ꓡꓵꓽ", "dʒɨ̀ lỳ"}, {"ꓙꓵꓼ", "dʒɨ̱̀"}, {"ꓙꓪꓸ", "dʒwɑ́"}, {"ꓙꓪꓺ ꓐꓰꓻ", "dʒwɑ̱ be"}, {"ꓙꓪꓻ", "dʒwɑ"}, {"ꓙꓬꓺ", "dʒɑ̱"}, {"ꓙꓬꓽ ꓧꓶꓹ", "dʒɑ̀ xɯ̌"}, {"ꓙꓬꓽ ꓡꓯꓽ", "dʒɑ̀ læ̀"}, {"ꓙꓬꓼ ꓡꓯꓼ", "dʒɑ̱̀ læ̱̀"}, {"ꓚ", "tʂɑ"}, {"ꓚꓰꓸ", "tʃé"}, {"ꓚꓰꓸ ꓚꓰꓸ", "tʃé tʃé"}, {"ꓚꓰꓸ ꓚꓰꓺ", "tʃé tʃe̱"}, {"ꓚꓰꓸ ꓡꓰꓸ", "tʃé lé"}, {"ꓚꓰꓹ", "tʃě"}, {"ꓚꓰꓺ", "tʃe̱"}, {"ꓚꓰꓺ ꓗꓸ", "tʃe̱ kɑ́"}, {"ꓚꓰꓽ", "tʃè"}, {"ꓚꓰꓼ", "tʃè̱"}, {"ꓚꓰꓥꓸ ꓚꓪꓮꓥꓺ", "tʃéŋ tʃwɑ̱ŋ"}, {"ꓚꓱꓸ", "tʃǿ"}, {"ꓚꓱꓸ ꓚꓱꓸ", "tʃǿ tʃǿ"}, {"ꓚꓱꓸ ꓝꓲꓺ", "tʃǿ tsɨ̱"}, {"ꓚꓱꓸ ꓝꓳꓹ", "tʃǿ tsǒ"}, {"ꓚꓱꓹ", "tʃø̌"}, {"ꓚꓱꓺ", "tʃø̱"}, {"ꓚꓱꓺ ꓠꓯꓺ ꓜꓲꓻ", "tʃø̱ næ̱ dzɨ"}, {"ꓚꓱꓺ ꓡꓱꓺ ꓠꓯꓺ ꓜꓲꓻ", "tʃø̱ lø̱ næ̱ dzɨ"}, {"ꓚꓱꓼ ꓚꓱꓼ", "tʃø̱̀ tʃø̱̀"}, {"ꓚꓱꓼ ꓞꓲꓸ", "tʃø̱̀ tsʰɨ́"}, {"ꓚꓲ", "tʃi"}, {"ꓚꓲꓸ", "tʃí"}, {"ꓚꓲꓸ ꓑꓷꓺ", "tʃí pɤ̱"}, {"ꓚꓲꓸ ꓛꓬꓽ", "tʃí tʃʰɑ̀"}, {"ꓚꓲꓹ ꓡꓰꓺ", "tʃǐ le̱"}, {"ꓚꓲꓺ", "tʃi̱"}, {"ꓚꓲꓺ ꓚꓬꓮꓳꓽ", "tʃi̱ tʃɑ̀w"}, {"ꓚꓲꓽ", "tʃì"}, {"ꓚꓲꓽ ꓗꓴꓽ", "tʃì kù"}, {"ꓚꓲꓼ", "tʃì̱"}, {"ꓚꓲꓥꓺ", "tʃi̱ŋ"}, {"ꓚꓳ", "tʃo"}, {"ꓚꓳꓸ", "tʃó"}, {"ꓚꓳꓹ", "tʃǒ"}, {"ꓚꓳꓹ ꓘꓴꓻ", "tʃǒ kʰu"}, {"ꓚꓳꓹ ꓟꓶꓺ", "tʃǒ mɯ̱"}, {"ꓚꓳꓺ", "tʃo̱"}, {"ꓚꓳꓺ ꓡꓳꓺ", "tʃo̱ lo̱"}, {"ꓚꓳꓽ", "tʃò"}, {"ꓚꓴꓸ", "tʃú"}, {"ꓚꓴꓹ", "tʃǔ"}, {"ꓚꓴꓺ", "tʃu̱"}, {"ꓚꓴꓽ ꓬꓲꓹ", "tʃù jǐ"}, {"ꓚꓵꓸ", "tʃɨ́"}, {"ꓚꓵꓸ ꓚꓵꓺ", "tʃɨ́ tʃɨ̱"}, {"ꓚꓵꓸ ꓡꓲꓼ", "tʃɨ́ lì̱"}, {"ꓚꓵꓹ", "tʃɨ̌"}, {"ꓚꓵꓹ ꓘꓶꓽ", "tʃɨ̌ kʰɯ̀"}, {"ꓚꓵꓹ ꓡꓻ", "tʃɨ̌ lɑ"}, {"ꓚꓵꓺ", "tʃɨ̱"}, {"ꓚꓵꓼ ꓚꓵꓼ", "tʃɨ̱̀ tʃɨ̱̀"}, {"ꓚꓪꓸ", "tʃwɑ́"}, {"ꓚꓪꓸ ꓐꓰꓻ", "tʃwɑ́ be"}, {"ꓚꓪꓸ ꓒꓳꓽ", "tʃwɑ́ pʰò"}, {"ꓚꓪꓹ", "tʃwɑ̌"}, {"ꓚꓪꓹ ꓘꓮꓲꓽ", "tʃwɑ̌ kʰɑ̀j"}, {"ꓚꓪꓯꓸ", "tʃwǽ"}, {"ꓚꓪꓳꓺ", "tʃwo̱"}, {"ꓚꓬꓸ", "tʃɑ́"}, {"ꓚꓬꓸ ꓑꓶꓺ", "tʃɑ́ pɯ̱"}, {"ꓚꓬꓸ ꓑꓷꓺ", "tʃɑ́ pɤ̱"}, {"ꓚꓬꓸ ꓝꓲꓺ", "tʃɑ́ tsɨ̱"}, {"ꓚꓬꓸ ꓡꓳꓻ", "tʃɑ́ lo"}, {"ꓚꓬꓸ ꓬꓱꓼ", "tʃɑ́ jø̱̀"}, {"ꓚꓬꓹ", "tʃɑ̌"}, {"ꓚꓬꓹ ꓑꓺ", "tʃɑ̌ pɑ̱"}, {"ꓚꓬꓹ ꓓꓲꓽ", "tʃɑ̌ dì"}, {"ꓚꓬꓹ ꓘꓳꓹ", "tʃɑ̌ kʰǒ"}, {"ꓚꓬꓹ ꓟꓲꓼ", "tʃɑ̌ mì̱"}, {"ꓚꓬꓹ ꓟꓬꓱꓼ", "tʃɑ̌ mjø̱̀"}, {"ꓚꓬꓺ", "tʃɑ̱"}, {"ꓚꓬꓺ ꓑꓴꓺ", "tʃɑ̱ pu̱"}, {"ꓚꓬꓺ ꓗꓶꓹ ꓔꓺ", "tʃɑ̱ kɯ̌ tɑ̱"}, {"ꓚꓬꓺ ꓚꓱꓹ", "tʃɑ̱ tʃø̌"}, {"ꓚꓬꓺ ꓛꓱꓹ", "tʃɑ̱ tʃʰø̌"}, {"ꓚꓬꓺ ꓟꓬꓸ ꓪꓳꓺ ꓡꓳꓺ", "tʃɑ̱ mjɑ́ wo̱ lo̱"}, {"ꓚꓬꓺ ꓢꓲꓸ", "tʃɑ̱ sɨ́"}, {"ꓚꓬꓽ", "tʃɑ̀"}, {"ꓚꓬꓽ ꓑꓲꓽ", "tʃɑ̀ pì"}, {"ꓚꓬꓽ ꓓꓲꓺ ꓓꓲꓺˍꓼ", "tʃɑ̀ di̱ di̱ɑ̱̀"}, {"ꓚꓬꓽ ꓧꓽ", "tʃɑ̀ xɑ̀"}, {"ꓚꓬꓼ", "tʃɑ̱̀"}, {"ꓚꓬꓼ ꓑꓲꓸ ꓗꓴꓽ ꓡꓲꓹ", "tʃɑ̱̀ pí kù lǐ"}, {"ꓚꓬꓼ ꓡꓯꓼ", "tʃɑ̱̀ læ̱̀"}, {"ꓚꓬꓮꓳꓺ", "tʃɑ̱w"}, {"ꓚꓬꓴꓸ", "tʃjú"}, {"ꓚꓬꓴꓽ", "tʃjù"}, {"ꓛ", "tʂʰɑ"}, {"ꓛꓰꓸ", "tʃʰé"}, {"ꓛꓰꓹ", "tʃʰě"}, {"ꓛꓰꓹ ꓡꓰꓺ ꓡꓰꓺ", "tʃʰě le̱ le̱"}, {"ꓛꓰꓺ", "tʃʰe̱"}, {"ꓛꓰꓻ", "tʃʰe"}, {"ꓛꓰꓻ ꓓꓰꓹ", "tʃʰe dě"}, {"ꓛꓰꓽ", "tʃʰè"}, {"ꓛꓰꓼ", "tʃʰè̱"}, {"ꓛꓱꓹ", "tʃʰø̌"}, {"ꓛꓱꓹ ꓛꓱꓹ ꓡꓱꓺ", "tʃʰø̌ tʃʰø̌ lø̱"}, {"ꓛꓱꓹ ꓡꓱꓼ", "tʃʰø̌ lø̱̀"}, {"ꓛꓱꓺ", "tʃʰø̱"}, {"ꓛꓱꓻ", "tʃʰø"}, {"ꓛꓱꓻ ꓑꓱꓸ", "tʃʰø pǿ"}, {"ꓛꓱꓽ", "tʃʰø̀"}, {"ꓛꓱꓽ ꓒꓯꓹ", "tʃʰø̀ pʰæ̌"}, {"ꓛꓱꓽ ꓠꓱꓽ", "tʃʰø̀ nø̀"}, {"ꓛꓱꓼ", "tʃʰø̱̀"}, {"ꓛꓱꓼ ꓛꓱꓼ", "tʃʰø̱̀ tʃʰø̱̀"}, {"ꓛꓱꓼ ꓡꓱꓼ", "tʃʰø̱̀ lø̱̀"}, {"ꓛꓲ", "tʃʰi"}, {"ꓛꓲꓺ", "tʃʰi̱"}, {"ꓛꓲꓺ ꓐꓶꓺ", "tʃʰi̱ bɯ̱"}, {"ꓛꓲꓺ ꓠꓲꓹ", "tʃʰi̱ nǐ"}, {"ꓛꓲꓽ", "tʃʰì"}, {"ꓛꓳꓸ", "tʃʰó"}, {"ꓛꓳꓹ", "tʃʰǒ"}, {"ꓛꓳꓹ ꓛꓳꓽ", "tʃʰǒ tʃʰò"}, {"ꓛꓳꓺ", "tʃʰo̱"}, {"ꓛꓳꓻ", "tʃʰo"}, {"ꓛꓳꓽ", "tʃʰò"}, {"ꓛꓳꓽ ꓒꓯꓹ", "tʃʰò pʰæ̌"}, {"ꓛꓳꓽ ꓒꓽ", "tʃʰò pʰɑ̀"}, {"ꓛꓳꓽ ꓞꓲꓸ", "tʃʰò tsʰɨ́"}, {"ꓛꓳꓽ ꓠꓬꓲꓺ", "tʃʰò ɲi̱"}, {"ꓛꓳꓥꓸ", "tʃʰóŋ"}, {"ꓛꓳꓥꓺ", "tʃʰo̱ŋ"}, {"ꓛꓳꓼ", "tʃʰò̱"}, {"ꓛꓴꓸ ꓡꓳꓸ", "tʃʰú ló"}, {"ꓛꓴꓹ", "tʃʰǔ"}, {"ꓛꓴꓹ ꓢꓲꓺ", "tʃʰǔ sɨ̱"}, {"ꓛꓴꓻ", "tʃʰu"}, {"ꓛꓴꓻ ꓛꓰꓹ", "tʃʰu tʃʰě"}, {"ꓛꓴꓽ", "tʃʰù"}, {"ꓛꓴꓲꓽ", "tʃʰùj"}, {"ꓛꓵꓸ", "tʃʰɨ́"}, {"ꓛꓵꓹ", "tʃʰɨ̌"}, {"ꓛꓵꓹ ꓘꓶꓽ", "tʃʰɨ̌ kʰɯ̀"}, {"ꓛꓵꓹ ꓡꓵꓺ ꓡꓵꓺ", "tʃʰɨ̌ ly̱ ly̱"}, {"ꓛꓵꓺ", "tʃʰɨ̱"}, {"ꓛꓵꓻ", "tʃʰɨ"}, {"ꓛꓵꓽ", "tʃʰɨ̀"}, {"ꓛꓵꓽ ꓚꓱꓸ", "tʃʰɨ̀ tʃǿ"}, {"ꓛꓵꓽ ꓚꓪꓸ", "tʃʰɨ̀ tʃwɑ́"}, {"ꓛꓵꓽ ꓛꓵꓽˍꓼ", "tʃʰɨ̀ tʃʰɨ̀ɑ̱̀"}, {"ꓛꓵꓽ ꓝꓮꓳꓸ", "tʃʰɨ̀ tsɑ́w"}, {"ꓛꓵꓼ", "tʃʰɨ̱̀"}, {"ꓛꓵꓼ ꓛꓵꓼ", "tʃʰɨ̱̀ tʃʰɨ̱̀"}, {"ꓛꓪꓸ", "tʃʰwɑ́"}, {"ꓛꓪꓸ ꓕꓸ", "tʃʰwɑ́ tʰɑ́"}, {"ꓛꓪꓺ", "tʃʰwɑ̱"}, {"ꓛꓪꓺ ꓕꓺ", "tʃʰwɑ̱ tʰɑ̱"}, {"ꓛꓪꓽ", "tʃʰwɑ̀"}, {"ꓛꓪꓽ ꓛꓪꓽ", "tʃʰwɑ̀ tʃʰwɑ̀"}, {"ꓛꓪꓼ ꓟꓲꓼ ꓪꓸ ꓟꓲꓼ", "tʃʰwɑ̱̀ mì̱ wɑ́ mì̱"}, {"ꓛꓪꓮꓲꓽ", "tʃʰwɑ̀j"}, {"ꓛꓬꓸ", "tʃʰɑ́"}, {"ꓛꓬꓹ", "tʃʰɑ̌"}, {"ꓛꓬꓹ ꓛꓬꓹ", "tʃʰɑ̌ tʃʰɑ̌"}, {"ꓛꓬꓹ ꓓꓴꓽ", "tʃʰɑ̌ dù"}, {"ꓛꓬꓹ ꓙꓱꓼ", "tʃʰɑ̌ dʒø̱̀"}, {"ꓛꓬꓹ ꓪꓵꓺ", "tʃʰɑ̌ wy̱"}, {"ꓛꓬꓹ ꓡꓯꓺ ꓡꓯꓺ", "tʃʰɑ̌ læ̱ læ̱"}, {"ꓛꓬꓹ ꓥꓼ", "tʃʰɑ̌ ŋɑ̱̀"}, {"ꓛꓬꓻ", "tʃʰɑ"}, {"ꓛꓬꓽ", "tʃʰɑ̀"}, {"ꓛꓬꓽ ꓛꓬꓽ", "tʃʰɑ̀ tʃʰɑ̀"}, {"ꓛꓬꓽ ꓟꓬꓱꓹ", "tʃʰɑ̀ mjø̌"}, {"ꓛꓬꓽ ꓡꓯꓽ", "tʃʰɑ̀ læ̀"}, {"ꓛꓬꓼ", "tʃʰɑ̱̀"}, {"ꓛꓬꓼ ꓡꓯꓼ", "tʃʰɑ̱̀ læ̱̀"}, {"ꓛꓬꓮꓳꓺ", "tʃʰɑ̱w"}, {"ꓜꓺ", "dzɑ̱"}, {"ꓜꓻ", "dzɑ"}, {"ꓜꓻ ꓑꓲꓹ ꓡꓲꓹ", "dzɑ pǐ lǐ"}, {"ꓜꓻ ꓠꓼ ꓟꓺ", "dzɑ nɑ̱̀ mɑ̱"}, {"ꓜꓻ ꓡꓽ ꓟꓺ", "dzɑ lɑ̀ mɑ̱"}, {"ꓜꓻ ꓟꓶꓽˍꓼ", "dzɑ mɯ̀ɑ̱̀"}, {"ꓜꓽ", "dzɑ̀"}, {"ꓜꓽ ꓔꓳꓹ", "dzɑ̀ tǒ"}, {"ꓜꓽ ꓖꓳꓼ", "dzɑ̀ gò̱"}, {"ꓜꓽ ꓘꓴꓻ", "dzɑ̀ kʰu"}, {"ꓜꓽ ꓘꓶꓽ", "dzɑ̀ kʰɯ̀"}, {"ꓜꓽ ꓥꓳꓽ", "dzɑ̀ ŋò"}, {"ꓜꓽ ꓬꓳꓺ", "dzɑ̀ jo̱"}, {"ꓜꓼ ꓟꓺ", "dzɑ̱̀ mɑ̱"}, {"ꓜꓰꓺ", "dze̱"}, {"ꓜꓰꓼ", "dzè̱"}, {"ꓜꓲ", "dzɨ"}, {"ꓜꓲꓺ", "dzɨ̱"}, {"ꓜꓲꓺ ꓡꓲꓺ", "dzɨ̱ li̱"}, {"ꓜꓲꓺ ꓤꓼ", "dzɨ̱ zɑ̱̀"}, {"ꓜꓲꓻ", "dzɨ"}, {"ꓜꓲꓻ ꓤꓴꓽ", "dzɨ zù"}, {"ꓜꓲꓽ", "dzɨ̀"}, {"ꓜꓲꓽ ꓑꓲꓸ", "dzɨ̀ pí"}, {"ꓜꓲꓽ ꓐꓰꓻ", "dzɨ̀ be"}, {"ꓜꓲꓽ ꓗꓶꓹ", "dzɨ̀ kɯ̌"}, {"ꓜꓲꓽ ꓝꓲꓸ", "dzɨ̀ tsɨ́"}, {"ꓜꓲꓽ ꓜꓲꓽ", "dzɨ̀ dzɨ̀"}, {"ꓜꓲꓽ ꓟꓺ", "dzɨ̀ mɑ̱"}, {"ꓜꓲꓽ ꓟꓳꓽ", "dzɨ̀ mò"}, {"ꓜꓲꓽ ꓧꓶꓹ", "dzɨ̀ xɯ̌"}, {"ꓜꓲꓼ", "dzɨ̱̀"}, {"ꓜꓲꓼ ꓡꓶꓼ ꓡꓶꓼ", "dzɨ̱̀ lɯ̱̀ lɯ̱̀"}, {"ꓜꓲꓼ ꓤꓽ", "dzɨ̱̀ zɑ̀"}, {"ꓜꓲꓼ ꓫꓰꓺ", "dzɨ̱̀ ʃe̱"}, {"ꓜꓳꓺ", "dzo̱"}, {"ꓜꓳꓻ", "dzo"}, {"ꓜꓳꓽ", "dzò"}, {"ꓜꓳꓼ", "dzò̱"}, {"ꓜꓳꓼ ꓝꓳꓸꓽ", "dzò̱ tsóò"}, {"ꓜꓴꓹ ꓜꓴꓻ", "dzǔ dzu"}, {"ꓜꓴꓺ", "dzu̱"}, {"ꓜꓴꓻ", "dzu"}, {"ꓜꓴꓽ", "dzù"}, {"ꓜꓶ", "dzɯ"}, {"ꓜꓷ", "dzɤ"}, {"ꓜꓶꓺ", "dzɯ̱"}, {"ꓜꓶꓻ", "dzɯ"}, {"ꓜꓶꓽ", "dzɯ̀"}, {"ꓜꓶꓼ", "dzɯ̱̀"}, {"ꓜꓷꓼ", "dzɤ̱̀"}, {"ꓜꓷꓼ ꓡꓷꓼ ꓡꓷꓼ", "dzɤ̱̀ lɤ̱̀ lɤ̱̀"}, {"ꓜꓪꓸ", "dzwɑ́"}, {"ꓜꓪꓺ", "dzwɑ̱"}, {"ꓜꓪꓺ ꓐꓰꓻ", "dzwɑ̱ be"}, {"ꓜꓪꓻ", "dzwɑ"}, {"ꓜꓪꓽ", "dzwɑ̀"}, {"ꓝꓸ", "tsɑ́"}, {"ꓝꓸ ꓒꓳꓽ", "tsɑ́ pʰò"}, {"ꓝꓸ ꓝꓲꓼ", "tsɑ́ tsɨ̱̀"}, {"ꓝꓹ", "tsɑ̌"}, {"ꓝꓺ", "tsɑ̱"}, {"ꓝꓺ ꓑꓴꓺ", "tsɑ̱ pu̱"}, {"ꓝꓺ ꓒꓶꓽ", "tsɑ̱ pʰɯ̀"}, {"ꓝꓺ ꓚꓱꓹ", "tsɑ̱ tʃø̌"}, {"ꓝꓺ ꓔꓼ", "tsɑ̱ tɑ̱̀"}, {"ꓝꓽ", "tsɑ̀"}, {"ꓝꓽ ꓗꓽ ꓚꓵꓹ", "tsɑ̀ kɑ̀ tʃɨ̌"}, {"ꓝꓼ ꓑꓳꓼ", "tsɑ̱̀ pò̱"}, {"ꓝꓸꓽ", "tsɑ́ɑ̀"}, {"ꓝꓸꓼ", "tsɑ́ɑ̱̀"}, {"ꓝꓯꓸ ꓡꓯꓼ ꓡꓯꓼ", "tsǽ læ̱̀ læ̱̀"}, {"ꓝꓮꓲꓸ", "tsɑ́j"}, {"ꓝꓮꓲꓸ ꓝꓲꓺ", "tsɑ́j tsɨ̱"}, {"ꓝꓮꓲꓹ", "tsɑ̌j"}, {"ꓝꓮꓳꓸ ꓒꓳꓽ", "tsɑ́w pʰò"}, {"ꓝꓱꓸ", "tsǿ"}, {"ꓝꓱꓽ", "tsø̀"}, {"ꓝꓲ", "tsɨ"}, {"ꓝꓲꓸ", "tsɨ́"}, {"ꓝꓲꓸ ꓑꓷꓺ", "tsɨ́ pɤ̱"}, {"ꓝꓲꓸ ꓛꓬꓽ", "tsɨ́ tʃʰɑ̀"}, {"ꓝꓲꓸ ꓝꓲꓸ", "tsɨ́ tsɨ́"}, {"ꓝꓲꓹ", "tsɨ̌"}, {"ꓝꓲꓹ ꓥꓼ ꓥꓼ", "tsɨ̌ ŋɑ̱̀ ŋɑ̱̀"}, {"ꓝꓲꓺ", "tsɨ̱"}, {"ꓝꓲꓺ ꓔꓳꓹ", "tsɨ̱ tǒ"}, {"ꓝꓲꓻ", "tsɨ"}, {"ꓝꓲꓻ ꓝꓲꓻ", "tsɨ tsɨ"}, {"ꓝꓲꓽ", "tsɨ̀"}, {"ꓝꓲꓼ", "tsɨ̱̀"}, {"ꓝꓲꓼ ꓡꓰꓺ", "tsɨ̱̀ le̱"}, {"ꓝꓳ", "tso"}, {"ꓝꓳꓸ", "tsó"}, {"ꓝꓳꓸ ꓝꓳꓸ", "tsó tsó"}, {"ꓝꓳꓸ ꓟꓳꓸ", "tsó mó"}, {"ꓝꓳꓹ", "tsǒ"}, {"ꓝꓳꓹ ꓘꓴꓻ", "tsǒ kʰu"}, {"ꓝꓳꓹ ꓝꓲꓺ", "tsǒ tsɨ̱"}, {"ꓝꓳꓹ ꓟꓶꓺ", "tsǒ mɯ̱"}, {"ꓝꓳꓺ", "tso̱"}, {"ꓝꓳꓺ ꓡꓳꓺ", "tso̱ lo̱"}, {"ꓝꓳꓽ", "tsò"}, {"ꓝꓳꓽ ꓝꓳꓸ", "tsò tsó"}, {"ꓝꓴꓸ", "tsú"}, {"ꓝꓴꓸ ꓡꓲꓺ", "tsú li̱"}, {"ꓝꓴꓹ", "tsǔ"}, {"ꓝꓴꓺ ꓝꓴꓸ ꓤꓲꓻ ꓘꓴꓻ", "tsu̱ tsú zɨ kʰu"}, {"ꓝꓴꓽ ꓬꓲꓹ", "tsù jǐ"}, {"ꓝꓴꓲꓸ", "tsúj"}, {"ꓝꓴꓲꓽ", "tsùj"}, {"ꓝꓶ", "tsɯ"}, {"ꓝꓷ", "tsɤ"}, {"ꓝꓶꓸ", "tsɯ́"}, {"ꓝꓶꓽ ꓡꓶꓽ ꓡꓶꓽ", "tsɯ̀ lɯ̀ lɯ̀"}, {"ꓝꓶꓼ", "tsɯ̱̀"}, {"ꓝꓶꓼ ꓗꓶꓼ", "tsɯ̱̀ kɯ̱̀"}, {"ꓝꓶꓼ ꓝꓶꓼ", "tsɯ̱̀ tsɯ̱̀"}, {"ꓝꓷꓹ", "tsɤ̌"}, {"ꓝꓷꓼ", "tsɤ̱̀"}, {"ꓝꓪꓸ", "tswɑ́"}, {"ꓝꓪꓸ ꓐꓰꓻ", "tswɑ́ be"}, {"ꓝꓪꓹ", "tswɑ̌"}, {"ꓝꓪꓽ ꓫꓲꓺ", "tswɑ̀ ʃi̱"}, {"ꓝꓪꓼ", "tswɑ̱̀"}, {"ꓞꓸ", "tsʰɑ́"}, {"ꓞꓹ", "tsʰɑ̌"}, {"ꓞꓹ ꓞꓹ", "tsʰɑ̌ tsʰɑ̌"}, {"ꓞꓺ", "tsʰɑ̱"}, {"ꓞꓻ", "tsʰɑ"}, {"ꓞꓺ ꓫꓵꓹ", "tsʰɑ̱ ʃɨ̌"}, {"ꓞꓻ ꓠꓻ", "tsʰɑ nɑ"}, {"ꓞꓽ", "tsʰɑ̀"}, {"ꓞꓽ ꓒꓲꓸ", "tsʰɑ̀ pʰí"}, {"ꓞꓽ ꓑꓬꓺ", "tsʰɑ̀ pjɑ̱"}, {"ꓞꓽ ꓐꓯꓺ ꓪꓳꓽ", "tsʰɑ̀ bæ̱ wò"}, {"ꓞꓽ ꓐꓳꓺ", "tsʰɑ̀ bo̱"}, {"ꓞꓽ ꓕꓱꓹ", "tsʰɑ̀ tʰø̌"}, {"ꓞꓽ ꓕꓳꓸ", "tsʰɑ̀ tʰó"}, {"ꓞꓽ ꓗꓳꓼ", "tsʰɑ̀ kò̱"}, {"ꓞꓽ ꓛꓵꓻ", "tsʰɑ̀ tʃʰɨ"}, {"ꓞꓽ ꓟꓬꓱꓹ", "tsʰɑ̀ mjø̌"}, {"ꓞꓽ ꓢꓴꓲꓸ", "tsʰɑ̀ súj"}, {"ꓞꓽ ꓫꓲꓺ", "tsʰɑ̀ ʃi̱"}, {"ꓞꓼ", "tsʰɑ̱̀"}, {"ꓞꓼ ꓐꓳꓺ", "tsʰɑ̱̀ bo̱"}, {"ꓞꓮꓲꓺ", "tsʰɑ̱j"}, {"ꓞꓮꓳꓽ", "tsʰɑ̀w"}, {"ꓞꓮꓳꓽ ꓒꓲꓸ", "tsʰɑ̀w pʰí"}, {"ꓞꓰꓹ", "tsʰě"}, {"ꓞꓰꓺ", "tsʰe̱"}, {"ꓞꓰꓻ", "tsʰe"}, {"ꓞꓲ", "tsʰɨ"}, {"ꓞꓲꓸ", "tsʰɨ́"}, {"ꓞꓲꓸ ꓞꓲꓽ", "tsʰɨ́ tsʰɨ̀"}, {"ꓞꓲꓸ ꓤꓽ", "tsʰɨ́ zɑ̀"}, {"ꓞꓲꓸˍꓽ", "tsʰɨ́ɑ̀"}, {"ꓞꓲꓹ", "tsʰɨ̌"}, {"ꓞꓲꓹ ꓞꓲꓹ", "tsʰɨ̌ tsʰɨ̌"}, {"ꓞꓲꓺ", "tsʰɨ̱"}, {"ꓞꓲꓺ ꓐꓶꓺ", "tsʰɨ̱ bɯ̱"}, {"ꓞꓲꓺ ꓞꓲꓽ", "tsʰɨ̱ tsʰɨ̀"}, {"ꓞꓲꓺ ꓠꓬꓲꓹ", "tsʰɨ̱ ɲǐ"}, {"ꓞꓲꓺ ꓤꓽ", "tsʰɨ̱ zɑ̀"}, {"ꓞꓲꓻ", "tsʰɨ"}, {"ꓞꓲꓽ", "tsʰɨ̀"}, {"ꓞꓲꓽ ꓞꓲꓻ", "tsʰɨ̀ tsʰɨ"}, {"ꓞꓲꓽ ꓞꓲꓹ ꓒꓬꓸ", "tsʰɨ̀ tsʰɨ̌ pʰjɑ́"}, {"ꓞꓲꓽ ꓫꓲꓺ", "tsʰɨ̀ ʃi̱"}, {"ꓞꓲꓽ ꓫꓵꓺ ꓤꓽ", "tsʰɨ̀ ʃɨ̱ zɑ̀"}, {"ꓞꓲꓼ", "tsʰɨ̱̀"}, {"ꓞꓲꓼ ꓬꓰꓸ", "tsʰɨ̱̀ jé"}, {"ꓞꓲꓼ ꓟꓺ", "tsʰɨ̱̀ mɑ̱"}, {"ꓞꓳꓸ", "tsʰó"}, {"ꓞꓳꓹ", "tsʰǒ"}, {"ꓞꓳꓺ", "tsʰo̱"}, {"ꓞꓳꓻ", "tsʰo"}, {"ꓞꓳꓠꓸ", "tsʰón"}, {"ꓞꓳꓥꓺ", "tsʰo̱ŋ"}, {"ꓞꓳꓽ", "tsʰò"}, {"ꓞꓳꓽ ꓒꓽ", "tsʰò pʰɑ̀"}, {"ꓞꓳꓼ", "tsʰò̱"}, {"ꓞꓴꓻ", "tsʰu"}, {"ꓞꓴꓽ ꓠꓮꓳꓸ", "tsʰù nɑ́w"}, {"ꓞꓴꓲꓽ", "tsʰùj"}, {"ꓞꓶ", "tsʰɯ"}, {"ꓞꓷ", "tsʰɤ"}, {"ꓞꓶꓹ", "tsʰɯ̌"}, {"ꓞꓶꓺ", "tsʰɯ̱"}, {"ꓞꓶꓺ ꓗꓶꓺ", "tsʰɯ̱ kɯ̱"}, {"ꓞꓶꓻ", "tsʰɯ"}, {"ꓞꓶꓽ", "tsʰɯ̀"}, {"ꓞꓶꓼ", "tsʰɯ̱̀"}, {"ꓞꓶꓼ ꓓꓰꓽ", "tsʰɯ̱̀ dè"}, {"ꓞꓷꓹ", "tsʰɤ̌"}, {"ꓞꓪꓸ", "tsʰwɑ́"}, {"ꓞꓪꓸ ꓕꓸ", "tsʰwɑ́ tʰɑ́"}, {"ꓞꓪꓸ ꓢꓲꓸ", "tsʰwɑ́ sɨ́"}, {"ꓞꓪꓺ", "tsʰwɑ̱"}, {"ꓞꓪꓺ ꓕꓺ", "tsʰwɑ̱ tʰɑ̱"}, {"ꓞꓪꓽ", "tsʰwɑ̀"}, {"ꓞꓪꓮꓲꓽ", "tsʰwɑ̀j"}, {"ꓟꓸ", "mɑ́"}, {"ꓟꓸ ꓐꓬꓽ", "mɑ́ bjɑ̀"}, {"ꓟꓸ ꓗꓹ", "mɑ́ kɑ̌"}, {"ꓟꓸ ꓟꓸ", "mɑ́ mɑ́"}, {"ꓟꓸ ꓟꓺ", "mɑ́ mɑ̱"}, {"ꓟꓸ ꓟꓳꓺ", "mɑ́ mo̱"}, {"ꓟꓸ ꓡꓰꓥꓸ", "mɑ́ léŋ"}, {"ꓟꓸ ꓡꓼ", "mɑ́ lɑ̱̀"}, {"ꓟꓸ ꓠꓬꓴꓸꓽ ꓜꓲꓻ", "mɑ́ ɲúù dzɨ"}, {"ꓟꓸ ꓢꓳꓼ ꓜꓲꓻ", "mɑ́ sò̱ dzɨ"}, {"ꓟꓹ", "mɑ̌"}, {"ꓟꓹ ꓟꓺ", "mɑ̌ mɑ̱"}, {"ꓟꓺ", "mɑ̱"}, {"ꓟꓺ ꓒꓲꓽ", "mɑ̱ pʰì"}, {"ꓟꓺ ꓗꓺ", "mɑ̱ kɑ̱"}, {"ꓟꓺ ꓗꓳꓺ ꓡꓳꓻ ꓓꓲꓸ", "mɑ̱ ko̱ lo dí"}, {"ꓟꓺ ꓡꓽ", "mɑ̱ lɑ̀"}, {"ꓟꓺ-ꓡꓲꓹ ꓢꓳꓺ", "mɑ̱-lǐ so̱"}, {"ꓟꓺ ꓡꓲꓺ ꓡꓲꓺ", "mɑ̱ li̱ li̱"}, {"ꓟꓺ ꓢꓶꓽ", "mɑ̱ sɯ̀"}, {"ꓟꓺʼ", "mɑ̱̃"}, {"ꓟꓻ", "mɑ"}, {"ꓟꓻ ꓠꓬꓴꓹ", "mɑ ɲǔ"}, {"ꓟꓽ", "mɑ̀"}, {"ꓟꓽ ꓕꓺ ꓢꓶꓽ", "mɑ̀ tʰɑ̱ sɯ̀"}, {"ꓟꓽ ꓗꓳꓻ ꓠꓸ ꓟꓶꓽ ꓒꓲꓸ ꓜꓲꓻ", "mɑ̀ ko nɑ́ mɯ̀ pʰí dzɨ"}, {"ꓟꓽ ꓟꓹ", "mɑ̀ mɑ̌"}, {"ꓟꓽ ꓟꓽ", "mɑ̀ mɑ̀"}, {"ꓟꓽ ꓠꓮꓳꓽ", "mɑ̀ nɑ̀w"}, {"ꓟꓽ ꓠꓲꓸ", "mɑ̀ ní"}, {"ꓟꓽ ꓢꓸ ꓒꓳꓸ", "mɑ̀ sɑ́ pʰó"}, {"ꓟꓽ ꓢꓼ ꓰꓸ ꓜꓲꓻ", "mɑ̀ sɑ̱̀ é dzɨ"}, {"ꓟꓽ ꓪꓸ ꓢꓶꓽ", "mɑ̀ wɑ́ sɯ̀"}, {"ꓟꓽ ꓦꓹ ꓑꓬꓱꓺ", "mɑ̀ h̃ɑ̌ pjø̱"}, {"ꓟꓽ ꓪꓳꓹ", "mɑ̀ wǒ"}, {"ꓟꓼ ꓕꓺ ꓢꓲꓹ", "mɑ̱̀ tʰɑ̱ sɨ̌"}, {"ꓟꓼ ꓝꓼ", "mɑ̱̀ tsɑ̱̀"}, {"ꓟꓼ ꓞꓺ ꓫꓵꓹ", "mɑ̱̀ tsʰɑ̱ ʃɨ̌"}, {"ꓟꓼ ꓠꓬꓲꓸ", "mɑ̱̀ ɲí"}, {"ꓟꓼ ꓢꓸ ꓜꓲꓻ", "mɑ̱̀ sɑ́ dzɨ"}, {"ꓟꓼ ꓢꓸ ꓰꓹ ꓜꓲꓻ", "mɑ̱̀ sɑ́ ě dzɨ"}, {"ꓟꓸꓽ", "mɑ́ɑ̀"}, {"ꓟꓮꓲꓽ ꓢꓳꓼ ꓜꓲꓻ", "mɑ̀j sò̱ dzɨ"}, {"ꓟꓮꓥꓺ", "mɑ̱ŋ"}, {"ꓟꓯꓸ", "mǽ"}, {"ꓟꓯꓸ ꓤꓲꓽ", "mǽ zɨ̀"}, {"ꓟꓯꓹ", "mæ̌"}, {"ꓟꓯꓹ ꓜꓲꓻ", "mæ̌ dzɨ"}, {"ꓟꓯꓺ", "mæ̱"}, {"ꓟꓯꓻ", "mæ"}, {"ꓟꓯꓽ", "mæ̀"}, {"ꓟꓯꓽ ꓢꓽ ꓜꓲꓻ", "mæ̀ sɑ̀ dzɨ"}, {"ꓟꓯꓼ", "mæ̱̀"}, {"ꓟꓰꓸ", "mé"}, {"ꓟꓰꓸ ꓢꓸ", "mé sɑ́"}, {"ꓟꓰꓹ", "mě"}, {"ꓟꓰꓹ ꓘꓳꓻ", "mě kʰo"}, {"ꓟꓰꓹ ꓟꓰꓹ ꓫꓵꓺ", "mě mě ʃɨ̱"}, {"ꓟꓰꓺ", "me̱"}, {"ꓟꓰꓻ", "me"}, {"ꓟꓰꓺ ꓓꓰꓺ", "me̱ de̱"}, {"ꓟꓰꓺ ꓞꓻ ꓘꓴꓽ", "me̱ tsʰɑ kʰù"}, {"ꓟꓰꓻ", "me"}, {"ꓟꓰꓻ ꓙꓱꓻ", "me dʒø"}, {"ꓟꓰꓻ ꓚꓱꓺ ꓜꓲꓻ", "me tʃø̱ dzɨ"}, {"ꓟꓰꓻ ꓚꓳꓺ", "me tʃo̱"}, {"ꓟꓰꓻ ꓛꓵꓽ", "me tʃʰɨ̀"}, {"ꓟꓰꓻ ꓜꓲꓻ", "me dzɨ"}, {"ꓟꓰꓻ ꓠꓺ ꓥꓶꓽ ꓘꓴꓽ", "me nɑ̱ ŋɯ̀ kʰù"}, {"ꓟꓰꓻ ꓢꓴꓻ ꓢꓶꓽ", "me su sɯ̀"}, {"ꓟꓰꓽ", "mè"}, {"ꓟꓰꓽ ꓓꓳꓻ", "mè do"}, {"ꓟꓰꓽ ꓝꓲꓺ", "mè tsɨ̱"}, {"ꓟꓰꓽ ꓦꓲꓻ", "mè h̃i"}, {"ꓟꓰꓽ ꓫꓲꓺ", "mè ʃi̱"}, {"ꓟꓰꓼ", "mè̱"}, {"ꓟꓰꓼ ꓜꓲꓼ", "mè̱ dzɨ̱̀"}, {"ꓟꓰꓼ ꓠꓰꓼ", "mè̱ nè̱"}, {"ꓟꓱꓸ", "mǿ"}, {"ꓟꓱꓻ", "mø"}, {"ꓟꓱꓻ ꓛꓵꓽ", "mø tʃʰɨ̀"}, {"ꓟꓱꓽ", "mø̀"}, {"ꓟꓲꓸ", "mí"}, {"ꓟꓲꓸ ꓡꓲꓼ", "mí lì̱"}, {"ꓟꓲꓸ ꓫꓲꓺ", "mí ʃi̱"}, {"ꓟꓲꓹ ꓚꓳꓺ", "mǐ tʃo̱"}, {"ꓟꓲꓺ", "mi̱"}, {"ˍꓽ ꓟꓲꓺ", "ɑ̀ mi̱"}, {"ꓟꓲꓺ ꓓꓳꓽ", "mi̱ dò"}, {"ꓟꓲꓺ ꓞꓲꓺ", "mi̱ tsʰɨ̱"}, {"ꓟꓲꓺ ꓡꓰꓺ", "mi̱ le̱"}, {"ꓟꓲꓻ", "mi"}, {"ꓟꓲꓻ ꓞꓲꓸ", "mi tsʰɨ́"}, {"ꓟꓲꓻ ꓖꓳꓽ", "mi gò"}, {"ꓟꓲꓻ ꓗꓴꓸ", "mi kú"}, {"ꓟꓲꓽ ꓕꓯꓽ", "mì tʰæ̀"}, {"ꓟꓲꓽ ꓟꓲꓻ", "mì mi"}, {"ꓟꓲꓽ", "mì"}, {"ꓟꓲꓽ ꓦꓲꓻ", "mì h̃i"}, {"ꓟꓲꓼ", "mì̱"}, {"ꓟꓲꓼ ꓜꓲꓼ", "mì̱ dzɨ̱̀"}, {"ꓟꓲꓼ ꓢꓸ ꓟꓺ", "mì̱ sɑ́ mɑ̱"}, {"ꓟꓲꓼ ꓫꓯꓼ", "mì̱ ʃæ̱̀"}, {"ꓟꓳꓸ", "mó"}, {"ꓟꓳꓸ ꓐꓵꓽ", "mó bỳ"}, {"ꓟꓳꓸ ꓟꓳꓸ", "mó mó"}, {"ꓟꓳꓸ ꓟꓳꓺ", "mó mo̱"}, {"ꓟꓳꓹ", "mǒ"}, {"ꓟꓳꓹ ꓔꓻ ꓝꓲꓼ", "mǒ tɑ tsɨ̱̀"}, {"ꓟꓳꓹ ꓜꓲꓻ", "mǒ dzɨ"}, {"ꓟꓳꓹ ꓝꓲꓼ", "mǒ tsɨ̱̀"}, {"ꓟꓳꓹ ꓟꓷꓹ", "mǒ mɤ̌"}, {"ꓟꓳꓹ ꓩꓴꓹ ꓟꓳꓹ ꓔꓶꓽ", "mǒ fǔ mǒ tɯ̀"}, {"ꓟꓳꓺ", "mo̱"}, {"ꓟꓳꓻ", "mo"}, {"ꓟꓳꓻ ꓔꓳꓺ", "mo to̱"}, {"ꓟꓳꓻ ꓠꓳꓻ", "mo no"}, {"ꓟꓳꓽ", "mò"}, {"ꓟꓳꓽ ꓖꓪꓽ", "mò gwɑ̀"}, {"ꓟꓳꓽ ꓟꓰꓽ ꓜꓲꓻ", "mò mè dzɨ"}, {"ꓟꓳꓽ ꓠꓳꓽ", "mò nò"}, {"ꓟꓳꓼ", "mò̱"}, {"ꓟꓳꓼ ꓡꓳꓺ", "mò̱ lo̱"}, {"ꓟꓳꓼ ꓤꓳꓺ", "mò̱ zo̱"}, {"ꓟꓳꓼ ꓟꓳꓼ", "mò̱ mò̱"}, {"ꓟꓴꓺ ꓠꓴꓺ", "mu̱ nu̱"}, {"ꓟꓴꓺ", "mu̱"}, {"ꓟꓴꓽ ꓖꓴꓽ", "mù gù"}, {"ꓟꓴꓻ ꓗꓴꓸ", "mu kú"}, {"ꓟꓴꓽ ꓘꓴꓽ", "mù kʰù"}, {"ꓟꓵꓸ", "mý"}, {"ꓟꓵꓸ ꓡꓵꓼ", "mý lỳ̱"}, {"ꓟꓵꓺ", "my̱"}, {"ꓟꓵꓻ", "my"}, {"ꓟꓵꓻ ꓛꓵꓽ", "my tʃʰɨ̀"}, {"ꓟꓵꓻ ꓟꓵꓻ ꓤꓽ", "my my zɑ̀"}, {"ꓟꓵꓽ", "mỳ"}, {"ꓟꓵꓽ ꓕꓯꓽ", "mỳ tʰæ̀"}, {"ꓟꓵꓽ ꓪꓴꓽ", "mỳ wù"}, {"ꓟꓵꓼ", "mỳ̱"}, {"ꓟꓶꓸ", "mɯ́"}, {"ꓟꓶꓹ ꓟꓶꓼ", "mɯ̌ mɯ̱̀"}, {"ꓟꓶꓺ", "mɯ̱"}, {"ꓟꓶꓺ ꓫꓵꓺ", "mɯ̱ ʃɨ̱"}, {"ꓟꓶꓻ", "mɯ"}, {"ꓟꓶꓺ ꓛꓲꓺ", "mɯ̱ tʃʰi̱"}, {"ꓟꓶꓺ ꓛꓵꓺ", "mɯ̱ tʃʰɨ̱"}, {"ꓟꓶꓺ ꓞꓲꓺ", "mɯ̱ tsʰɨ̱"}, {"ꓟꓶꓻ ꓗꓴꓸ", "mɯ kú"}, {"ꓟꓶꓻ", "mɯ"}, {"ꓟꓶꓽ", "mɯ̀"}, {"ꓟꓶꓽ ꓐꓬꓱꓼ", "mɯ̀ bjø̱̀"}, {"ꓟꓶꓽ ꓑꓷꓺ", "mɯ̀ pɤ̱"}, {"ꓟꓶꓽ ꓕꓯꓽ", "mɯ̀ tʰæ̀"}, {"ꓟꓶꓽ ꓖꓴꓽ", "mɯ̀ gù"}, {"ꓟꓶꓽ ꓗꓪꓻ", "mɯ̀ kwɑ"}, {"ꓟꓶꓽ ꓘꓴꓽ", "mɯ̀ kʰù"}, {"ꓟꓶꓽ ꓛꓴꓺ", "mɯ̀ tʃʰu̱"}, {"ꓟꓶꓽ ꓛꓵꓽ", "mɯ̀ tʃʰɨ̀"}, {"ꓟꓶꓽ ꓞꓻ", "mɯ̀ tsʰɑ"}, {"ꓟꓶꓽ ꓞꓽ", "mɯ̀ tsʰɑ̀"}, {"ꓟꓶꓽ ꓝꓲꓺ", "mɯ̀ tsɨ̱"}, {"ꓟꓶꓽ ꓟꓺ", "mɯ̀ mɑ̱"}, {"ꓟꓶꓽ ꓦꓻ", "mɯ̀ h̃ɑ"}, {"ꓟꓶꓽ ꓦꓶꓸ", "mɯ̀ h̃ɯ́"}, {"ꓟꓶꓽ ꓩꓴꓸ", "mɯ̀ fú"}, {"ꓟꓶꓽ ꓶꓸ", "mɯ̀ ɣɯ́"}, {"ꓟꓶꓼ ꓘꓶꓼ", "mɯ̱̀ kʰɯ̱̀"}, {"ꓟꓷꓸ", "mɤ́"}, {"ꓟꓷꓹ ꓟꓷꓹ", "mɤ̌ mɤ̌"}, {"ꓟꓷꓹ ꓝꓲꓺ", "mɤ̌ tsɨ̱"}, {"ꓟꓷꓺ", "mɤ̱"}, {"ꓟꓷꓽ ꓠꓷꓹ", "mɤ̀ nɤ̌"}, {"ꓠꓷꓽ ꓢꓸ ꓟꓺ", "nɤ̀ sɑ́ mɑ̱"}, {"ꓟꓷꓼ", "mɤ̱̀"}, {"ꓟꓬꓸ", "mjɑ́"}, {"ꓟꓬꓹ", "mjɑ̌"}, {"ꓟꓬꓺ", "mjɑ̱"}, {"ꓟꓬꓺ ꓗꓳꓺ", "mjɑ̱ ko̱"}, {"ꓟꓬꓺ ꓖꓺ ꓤꓽ", "mjɑ̱ gɑ̱ zɑ̀"}, {"ꓟꓬꓺ ꓡꓴꓻ", "mjɑ̱ lu"}, {"ꓟꓬꓽ", "mjɑ̀"}, {"ꓟꓬꓼ", "mjɑ̱̀"}, {"ꓟꓬꓼ ꓑꓴꓸ ꓜꓲꓻ", "mjɑ̱̀ pú dzɨ"}, {"ꓟꓬꓼ ꓡꓯꓼ ꓡꓯꓼ", "mjɑ̱̀ læ̱̀ læ̱̀"}, {"ꓟꓬꓮꓳꓼ ꓝꓲꓺ", "mjɑ̱̀w tsɨ̱"}, {"ꓟꓬꓱꓹ", "mjø̌"}, {"ꓟꓬꓱꓺ", "mjø̱"}, {"ꓟꓬꓱꓻ", "mjø"}, {"ꓟꓬꓱꓽ", "mjø̀"}, {"ꓟꓬꓱꓼ", "mjø̱̀"}, {"ꓟꓬꓱꓼ ꓜꓻ ꓜꓴꓺ ꓤꓽ", "mjø̱̀ dzɑ dzu̱ zɑ̀"}, {"ꓟꓬꓱꓼ ꓐꓬꓱꓼ", "mjø̱̀ bjø̱̀"}, {"ꓟꓬꓱꓼ ꓟꓬꓱꓼ", "mjø̱̀ mjø̱̀"}, {"ꓠꓸ", "nɑ́"}, {"ꓠꓸ ꓑꓼ ꓟꓺ", "nɑ́ pɑ̱̀ mɑ̱"}, {"ꓠꓸ ꓘꓪꓽ", "nɑ́ kʰwɑ̀"}, {"ꓠꓸ ꓚꓬꓹ", "nɑ́ tʃɑ̌"}, {"ꓠꓸ ꓟꓲꓽ ꓔꓳꓼ ꓡꓳꓼ", "nɑ́ mì tò̱ lò̱"}, {"ꓠꓸ ꓟꓶꓽ ꓑꓴꓺ", "nɑ́ mɯ̀ pu̱"}, {"ꓠꓸ ꓠꓴꓽ", "nɑ́ nù"}, {"ꓠꓸ ꓠꓶꓽ ꓚꓲꓸ", "nɑ́ nɯ̀ tʃí"}, {"ꓠꓸ ꓠꓸꓼ", "nɑ́ nɑ́ɑ̱̀"}, {"ꓠꓸ ꓦꓳꓺ", "nɑ́ h̃o̱"}, {"ꓠꓸ ꓦꓬꓼ", "nɑ́ h̃jɑ̱̀"}, {"ꓠꓸꓼ ꓗꓹ", "nɑ́ɑ̱̀ kɑ̌"}, {"ꓠꓹ", "nɑ̌"}, {"ꓠꓺ", "nɑ̱"}, {"ꓠꓺ ꓗꓺ", "nɑ̱ kɑ̱"}, {"ꓠꓺ ꓠꓹ", "nɑ̱ nɑ̌"}, {"ꓠꓺ ꓡꓲꓺ", "nɑ̱ li̱"}, {"ꓠꓺ ꓠꓬꓲꓺ", "nɑ̱ ɲi̱"}, {"ꓠꓻ", "nɑ"}, {"ꓠꓻ ꓞꓲꓺ", "nɑ tsʰɨ̱"}, {"ꓠꓻ ꓭꓽ", "nɑ ɣɑ̀"}, {"ꓠˍꓽ", "nɑɑ̀"}, {"ꓠꓻ ꓠꓶꓽ ꓔꓮꓳꓺ", "nɑ nɯ̀ tɑ̱w"}, {"ꓠꓺ ꓠꓬꓲꓺ", "nɑ̱ ɲi̱"}, {"ꓠꓽ", "nɑ̀"}, {"ꓠꓽ ꓔꓮꓳꓼ", "nɑ̀ tɑ̱̀w"}, {"ꓠꓽ ꓡꓲꓸ ꓗꓺ", "nɑ̀ lí kɑ̱"}, {"ꓠꓽ ꓦꓳꓹ", "nɑ̀ h̃ǒ"}, {"ꓠꓮꓟꓸ", "nɑ́m"}, {"ꓠꓮꓲꓻ", "nɑj"}, {"ꓠꓮꓳꓸ", "nɑ́w"}, {"ꓠꓮꓳꓻ", "nɑw"}, {"ꓠꓯꓸ", "nǽ"}, {"ꓠꓯꓸ ꓦꓯꓼ", "nǽ h̃æ̱̀"}, {"ꓠꓯꓸ ꓦꓬꓼ", "nǽ h̃jɑ̱̀"}, {"ꓠꓯꓸꓼ", "nǽæ̱̀"}, {"ꓠꓯꓹ", "næ̌"}, {"ꓠꓯꓺ", "næ̱"}, {"ꓠꓯꓺ ꓞꓲꓼ", "næ̱ tsʰɨ̱̀"}, {"ꓠꓯꓻ", "næ"}, {"ꓠꓯꓽ", "næ̀"}, {"ꓠꓯꓼ", "næ̱̀"}, {"ꓠꓰꓸ", "né"}, {"ꓠꓰꓸ ꓐꓯꓼ", "né bæ̱̀"}, {"ꓠꓰꓹ", "ně"}, {"ꓠꓰꓺ", "ne̱"}, {"ꓠꓰꓺ ꓫꓵꓸ", "ne̱ ʃɨ́"}, {"ꓠꓰꓻ ꓖꓴꓽ", "ne gù"}, {"ꓠꓰꓻ ꓠꓰꓽ", "ne nè"}, {"ꓠꓰꓽ", "nè"}, {"ꓠꓰꓽ ꓝꓶꓹ", "nè tsɯ̌"}, {"ꓠꓰꓽ ꓝꓶꓹ ꓤꓽ", "nè tsɯ̌ zɑ̀"}, {"ꓠꓰꓼ", "nè̱"}, {"ꓠꓱꓸ", "nǿ"}, {"ꓠꓱꓸ ꓐꓯꓼ", "nǿ bæ̱̀"}, {"ꓠꓱꓸ ꓒꓱꓹ", "nǿ pʰø̌"}, {"ꓠꓱꓸ ꓜꓲꓽ ꓥꓪꓸ", "nǿ dzɨ̀ ŋwɑ́"}, {"ꓠꓱꓸ ꓦꓱꓽ", "nǿ h̃ø̀"}, {"ꓠꓱꓺ", "nø̱"}, {"ꓠꓱꓺ ꓫꓱꓸ", "nø̱ ʃǿ"}, {"ꓠꓱꓺ ꓫꓵꓸ", "nø̱ ʃɨ́"}, {"ꓠꓱꓻ", "nø"}, {"ꓠꓱꓻ ꓖꓴꓽ", "nø gù"}, {"ꓠꓱꓽ", "nø̀"}, {"ꓠꓲꓸ", "ní"}, {"ꓠꓲꓸ ꓠꓯꓺ", "ní næ̱"}, {"ꓠꓲꓹ", "nǐ"}, {"ꓠꓲꓺ", "ni̱"}, {"ꓠꓲꓻ ꓖꓴꓽ", "ni gù"}, {"ꓠꓲꓽ", "nì"}, {"ꓠꓲꓽ ꓝꓲꓻ", "nì tsɨ"}, {"ꓠꓲꓽ ꓝꓶꓹ", "nì tsɯ̌"}, {"ꓠꓲꓽ ꓞꓲꓼ", "nì tsʰɨ̱̀"}, {"ꓠꓳꓸ", "nó"}, {"ꓠꓳꓸ ꓘꓴꓽ", "nó kʰù"}, {"ꓠꓳꓹ", "nǒ"}, {"ꓠꓳꓺ", "no̱"}, {"ꓠꓳꓻ ꓠꓬꓲꓹ", "no ɲǐ"}, {"ꓠꓳꓽ", "nò"}, {"ꓠꓳꓽ ꓗꓳꓽ", "nò kò"}, {"ꓠꓳꓼ", "nò̱"}, {"ꓠꓳꓼ ꓠꓳꓼ", "nò̱ nò̱"}, {"ꓠꓴꓸ ꓙꓴꓽ", "nú dʒù"}, {"ꓠꓴꓹ", "nǔ"}, {"ꓠꓴꓻ", "nu"}, {"ꓠꓴꓽ", "nù"}, {"ꓠꓵꓸ", "ný"}, {"ꓠꓵꓹ", "ny̌"}, {"ꓠꓵꓻ", "ny"}, {"ꓠꓵꓽ", "nỳ"}, {"ꓠꓶꓸ", "nɯ́"}, {"ꓠꓶꓸ ꓒꓵꓺ", "nɯ́ pʰy̱"}, {"ꓠꓶꓸ ꓖꓴꓽ ꓝꓺ", "nɯ́ gù tsɑ̱"}, {"ꓠꓶꓸ ꓟꓺ", "nɯ́ mɑ̱"}, {"ꓠꓶꓹ", "nɯ̌"}, {"ꓠꓶꓻ", "nɯ"}, {"ꓠꓶꓽ", "nɯ̀"}, {"ꓠꓶꓽ ꓞꓻ", "nɯ̀ tsʰɑ"}, {"ꓠꓶꓼ", "nɯ̱̀"}, {"ꓠꓶꓼ ꓠꓶꓼ", "nɯ̱̀ nɯ̱̀"}, {"ꓠꓶꓼ ꓡꓻ ꓠꓶꓼ ꓡꓻ", "nɯ̱̀ lɑ nɯ̱̀ lɑ"}, {"ꓠꓶꓥꓽ", "nɯ̀ŋ"}, {"ꓠꓷꓹ", "nɤ̌"}, {"ꓠꓪꓸ", "nwɑ́"}, {"ꓠꓪꓻ", "nwɑ"}, {"ꓠꓬꓸ", "ɲɑ́"}, {"ꓠꓬꓸ ꓠꓬꓺ", "ɲɑ́ ɲɑ̱"}, {"ꓠꓬꓹ", "ɲɑ̌"}, {"ꓠꓬꓺ", "ɲɑ̱"}, {"ꓠꓬꓺ ꓐꓺ", "ɲɑ̱ bɑ̱"}, {"ꓠꓬꓼ ꓡꓯꓼ", "ɲɑ̱̀ læ̱̀"}, {"ꓠꓬꓱꓸ", "ɲǿ"}, {"ꓠꓬꓱꓹ", "ɲø̌"}, {"ꓠꓬꓲꓸ", "ɲí"}, {"ꓠꓬꓲꓸ ꓔꓸ", "ɲí tɑ́"}, {"ꓠꓬꓲꓸ ꓠꓬꓺ", "ɲí ɲɑ̱"}, {"ꓠꓬꓲꓸ ꓥꓻ ꓡꓯꓽ", "ɲí ŋɑ læ̀"}, {"ꓠꓬꓲꓹ", "ɲǐ"}, {"ꓠꓬꓲꓹ ꓛꓵꓼ", "ɲǐ tʃʰɨ̱̀"}, {"ꓠꓬꓲꓺ", "ɲi̱"}, {"ꓠꓬꓲꓺ ꓟꓵꓺ", "ɲi̱ my̱"}, {"ꓟꓬꓽ ꓠꓬꓲꓺ", "mjɑ̀ ɲi̱"}, {"ꓠꓬꓲꓻ", "ɲi"}, {"ꓠꓬꓲꓻ ꓖꓴꓽ", "ɲi gù"}, {"ꓠꓬꓲꓻ ꓠꓬꓮꓳꓼ ꓠꓬꓲꓻ ꓠꓬꓮꓳꓼ", "ɲi ɲɑ̱̀w ɲi ɲɑ̱̀w"}, {"ꓠꓬꓲꓽ", "ɲì"}, {"ꓠꓬꓲꓽ ꓗꓴꓺ ꓝꓲꓸ", "ɲì ku̱ tsɨ́"}, {"ꓠꓬꓲꓽ ꓞꓻ", "ɲì tsʰɑ"}, {"ꓠꓬꓲꓼ", "ɲì̱"}, {"ꓠꓬꓲꓼ ꓞꓲꓼ", "ɲì̱ tsʰɨ̱̀"}, {"ꓠꓬꓲꓽ ꓝꓲꓻ", "ɲì tsɨ"}, {"ꓠꓬꓲꓽ ꓝꓶꓹ ꓤꓽ", "ɲì tsɯ̌ zɑ̀"}, {"ꓠꓬꓴꓹ", "ɲǔ"}, {"ꓠꓬꓴꓽ ꓝꓲꓻ", "ɲù tsɨ"}, {"ꓠꓬꓴꓸꓽ", "ɲúù"}, {"ꓡꓸ", "lɑ́"}, {"ꓡꓸ ꓑꓸ", "lɑ́ pɑ́"}, {"ꓡꓸ ꓒꓬꓸ", "lɑ́ pʰjɑ́"}, {"ꓡꓸ ꓕꓹ", "lɑ́ tʰɑ̌"}, {"ꓡꓸ ꓗꓪꓽ ꓗꓪꓸ", "lɑ́ kwɑ̀ kwɑ́"}, {"ꓡꓸ ꓛꓴꓸ", "lɑ́ tʃʰú"}, {"ꓡꓸ ꓞꓲꓺ ꓑꓸ", "lɑ́ tsʰɨ̱ pɑ́"}, {"ꓡꓸ ꓢꓲꓸ", "lɑ́ sɨ́"}, {"ꓡꓸ ꓧꓳꓹ", "lɑ́ xǒ"}, {"ꓡꓸ ꓡꓰꓺ", "lɑ́ le̱"}, {"ꓡꓹ", "lɑ̌"}, {"ꓡꓹ ꓒꓬꓼ ꓒꓬꓼ", "lɑ̌ pʰjɑ̱̀ pʰjɑ̱̀"}, {"ꓡꓹ ꓝꓲꓼ", "lɑ̌ tsɨ̱̀"}, {"ꓡꓹ ꓤꓴꓹ", "lɑ̌ zǔ"}, {"ꓡꓹ ꓬꓲꓸ", "lɑ̌ jí"}, {"ꓡꓺ ꓧꓳꓹ", "lɑ̱ xǒ"}, {"ꓡꓺ", "lɑ̱"}, {"ꓡꓺ ꓔꓲꓺ", "lɑ̱ ti̱"}, {"ꓡꓺ ꓕꓼ", "lɑ̱ tʰɑ̱̀"}, {"ꓡꓻ", "lɑ"}, {"ꓡꓻ ꓔꓲꓺ", "lɑ ti̱"}, {"ꓡꓽ", "lɑ̀"}, {"ꓡꓽ ꓐꓶꓽ", "lɑ̀ bɯ̀"}, {"ꓡꓽ ꓐꓽ", "lɑ̀ bɑ̀"}, {"ꓡꓽ ꓐꓬꓻ", "lɑ̀ bjɑ"}, {"ꓐꓽ ꓒꓲꓸ", "bɑ̀ pʰí"}, {"ꓡꓽ ꓒꓲꓽ", "lɑ̀ pʰì"}, {"ꓡꓽ ꓔꓹ", "lɑ̀ tɑ̌"}, {"ꓡꓽ ꓔꓲꓸ ꓢꓳꓺ", "lɑ̀ tí so̱"}, {"ꓡꓽ ꓕꓸ", "lɑ̀ tʰɑ́"}, {"ꓡꓽ ꓕꓰꓻ", "lɑ̀ tʰe"}, {"ꓡꓽ ꓗꓺ", "lɑ̀ kɑ̱"}, {"ꓡꓽ ꓘꓶꓽ", "lɑ̀ kʰɯ̀"}, {"ꓡꓽ ꓖꓽ", "lɑ̀ gɑ̀"}, {"ꓡꓽ ꓞꓳꓻ", "lɑ̀ tsʰo"}, {"ꓡꓽ ꓟꓰꓹ", "lɑ̀ mě"}, {"ꓡꓽ ꓢꓪꓸ", "lɑ̀ swɑ́"}, {"ꓡꓽ ꓧꓶꓹ", "lɑ̀ xɯ̌"}, {"ꓡꓽ ꓫꓰꓺ", "lɑ̀ ʃe̱"}, {"ꓡꓽ ꓫꓲꓺ", "lɑ̀ ʃi̱"}, {"ꓡꓽ ꓫꓬꓸ", "lɑ̀ ʃɑ́"}, {"ꓡꓼ", "lɑ̱̀"}, {"ꓡꓼ ꓐꓬꓻ", "lɑ̱̀ bjɑ"}, {"ꓡꓼ ꓫꓬꓸ", "lɑ̱̀ ʃɑ́"}, {"ꓡꓮꓟꓺ ꓬꓮꓲꓺ", "lɑ̱m jɑ̱j"}, {"ꓡꓮꓲꓹ", "lɑ̌j"}, {"ꓡꓮꓲꓽ", "lɑ̀j"}, {"ꓡꓮꓳꓸ", "lɑ́w"}, {"ꓡꓮꓳꓸ ꓢꓶꓸ ꓗꓪꓽ", "lɑ́w sɯ́ kwɑ̀"}, {"ꓡꓮꓳꓽ ꓝꓪꓺ", "lɑ̀w tswɑ̱"}, {"ꓡꓮꓳꓼ", "lɑ̱̀w"}, {"ꓡꓯꓸ", "lǽ"}, {"ꓡꓯꓸ ꓪꓽ", "lǽ wɑ̀"}, {"ꓡꓯꓹ", "læ̌"}, {"ꓡꓯꓹ ꓓꓲꓽ ꓓꓲꓼ", "læ̌ dì dì̱"}, {"ꓡꓯꓹ ꓜꓲꓻ", "læ̌ dzɨ"}, {"ꓡꓯꓹ ꓘꓪꓽ", "læ̌ kʰwɑ̀"}, {"ꓡꓯꓹ ꓡꓯꓹ", "læ̌ læ̌"}, {"ꓡꓯꓻ", "læ"}, {"ꓡꓯꓽ", "læ̀"}, {"ꓡꓯꓽ ꓐꓬꓻ", "læ̀ bjɑ"}, {"ꓡꓯꓽ ꓑꓬꓺ ꓢꓳꓸ", "læ̀ pjɑ̱ só"}, {"ꓡꓯꓽ ꓟꓯꓽ", "læ̀ mæ̀"}, {"ꓡꓯꓽ ꓠꓬꓳꓸ ꓳꓸ", "læ̀ ɲó ó"}, {"ꓡꓯꓽ ꓫꓬꓸ", "læ̀ ʃɑ́"}, {"ꓡꓯꓽ ꓡꓯꓽ", "læ̀ læ̀"}, {"ꓡꓯꓼ", "læ̱̀"}, {"ꓡꓯꓼ ꓐꓬꓻ", "læ̱̀ bjɑ"}, {"ꓡꓯꓼ ꓖꓳꓼ", "læ̱̀ gò̱"}, {"ꓡꓯꓼ ꓧꓳꓻ", "læ̱̀ xo"}, {"ꓡꓯꓼ ꓟꓯꓸ", "læ̱̀ mǽ"}, {"ꓡꓯꓼ ꓟꓰꓹ", "læ̱̀ mě"}, {"ꓡꓯꓼ ꓟꓰꓻ ꓔꓳꓺ", "læ̱̀ me to̱"}, {"ꓡꓯꓼ ꓟꓰꓹ ꓥꓳꓽ", "læ̱̀ mě ŋò"}, {"ꓡꓯꓼ ꓧꓳꓹ", "læ̱̀ xǒ"}, {"ꓡꓯꓼ ꓧꓳꓻ", "læ̱̀ xo"}, {"ꓡꓯꓼ ꓫꓬꓸ", "læ̱̀ ʃɑ́"}, {"ꓡꓯꓸꓽ", "lǽæ̀"}, {"ꓡꓰꓸ", "lé"}, {"ꓡꓰꓹ", "lě"}, {"ꓡꓰꓹ ꓘꓪꓽ", "lě kʰwɑ̀"}, {"ꓡꓰꓺ", "le̱"}, {"ꓡꓰꓺ ꓐꓰꓻ", "le̱ be"}, {"ˍꓽ ꓡꓰꓺ", "ɑ̀ le̱"}, {"ꓡꓰꓺ ꓡꓰꓺ", "le̱ le̱"}, {"ꓡꓰꓻ", "le"}, {"ꓡꓰꓻ ꓐꓰꓻ", "le be"}, {"ꓡꓰꓽ", "lè"}, {"ꓡꓰꓽ ꓐꓳꓺ", "lè bo̱"}, {"ꓡꓰꓽ ꓗꓪꓸ", "lè kwɑ́"}, {"ꓡꓰꓽ ꓕꓰꓹ", "lè tʰě"}, {"ꓡꓰꓽ ꓢꓱꓸ", "lè sǿ"}, {"ꓡꓰꓼ", "lè̱"}, {"ꓡꓰꓼ ꓗꓪꓸ", "lè̱ kwɑ́"}, {"ꓡꓰꓼ ꓖꓴꓺ ꓒꓳꓹ ˍ", "lè̱ gu̱ pʰǒ ɑ̱"}, {"ꓡꓰꓼ ꓡꓰꓼ", "lè̱ lè̱"}, {"ꓡꓰꓼ ꓭꓺ", "lè̱ ɣɑ̱"}, {"ꓡꓰꓸꓽ", "léè"}, {"ꓡꓱꓸ", "lǿ"}, {"ꓡꓱꓸˍꓼ", "lǿɑ̱̀"}, {"ꓡꓱꓹ", "lø̌"}, {"ꓡꓱꓺ", "lø̱"}, {"ꓡꓱꓻ", "lø"}, {"ꓡꓱꓽ", "lø̀"}, {"ꓡꓱꓽ ꓟꓰꓹ", "lø̀ mě"}, {"ꓡꓱꓽ ꓡꓱꓽˍ", "lø̀ lø̀ɑ̱"}, {"ꓡꓱꓽ ꓢꓱꓸ", "lø̀ sǿ"}, {"ꓡꓱꓼ", "lø̱̀"}, {"ꓡꓲꓸ", "lí"}, {"ꓡꓲꓸ ꓗꓶꓺ", "lí kɯ̱"}, {"ꓡꓲꓸ ꓛꓲꓹ", "lí tʃʰǐ"}, {"ꓡꓲꓸ ꓝꓲꓺ", "lí tsɨ̱"}, {"ꓡꓲꓸ ꓤꓽ", "lí zɑ̀"}, {"ꓡꓲꓹ ꓘꓪꓽ", "lǐ kʰwɑ̀"}, {"ꓡꓲꓺ", "li̱"}, {"ꓡꓲꓺ ꓛꓵꓺ", "li̱ tʃʰɨ̱"}, {"ꓡꓲꓺ ꓡꓲꓺ", "li̱ li̱"}, {"ꓡꓲꓺ-ꓢꓴꓺ", "li̱-su̱"}, {"ꓡꓲꓺ", "li̱"}, {"ꓡꓲꓽ", "lì"}, {"ꓡꓲꓽ ꓛꓵꓽ", "lì tʃʰɨ̀"}, {"ꓡꓲꓽ ꓝꓶꓹ", "lì tsɯ̌"}, {"ꓡꓲꓽ ꓩꓴꓺ", "lì fu̱"}, {"ꓡꓲꓽ ꓡꓲꓽ", "lì lì"}, {"ꓡꓲꓽ ꓢꓱꓸ", "lì sǿ"}, {"ꓡꓲꓽ ꓢꓴꓲꓸ", "lì súj"}, {"ꓡꓲꓼ", "lì̱"}, {"ꓡꓲꓼ ꓖꓴꓺ", "lì̱ gu̱"}, {"ꓡꓳꓸ", "ló"}, {"ꓡꓳꓸ ꓒꓸꓼ", "ló pʰɑ́ɑ̱̀"}, {"ꓡꓳꓸ ꓐꓰꓻ", "ló be"}, {"ꓡꓳꓸ ꓢꓱꓽ", "ló sø̀"}, {"ꓡꓳꓸ ꓢꓴꓽ", "ló sù"}, {"ꓡꓳꓸ ꓢꓶꓽ", "ló sɯ̀"}, {"ꓡꓳꓸ ꓡꓰꓸ ꓦꓲꓻ", "ló lé h̃i"}, {"ꓡꓳꓸˍꓸ", "lóɑ́"}, {"ꓡꓳꓹ", "lǒ"}, {"ꓡꓳꓹ ꓗꓴꓹ", "lǒ kǔ"}, {"ꓡꓳꓹ ꓘꓪꓽ", "lǒ kʰwɑ̀"}, {"ꓡꓳꓹ ꓛꓵꓽ", "lǒ tʃʰɨ̀"}, {"ꓡꓳꓹ ꓝꓲꓻ", "lǒ tsɨ"}, {"ꓡꓳꓺ", "lo̱"}, {"ꓡꓳꓺ ꓑꓬꓱꓺ", "lo̱ pjø̱"}, {"ꓡꓳꓺ ꓒꓱꓺ", "lo̱ pʰø̱"}, {"ꓡꓳꓺ ꓓꓳꓺ", "lo̱ do̱"}, {"ꓡꓳꓻ", "lo"}, {"ꓡꓳꓻ ꓗꓶꓸ", "lo kɯ́"}, {"ꓡꓳꓻ ꓦꓻ", "lo h̃ɑ"}, {"ꓡꓳꓽ", "lò"}, {"ꓡꓳꓽ ꓐꓱꓺ", "lò bø̱"}, {"ꓡꓳꓽ ꓑꓶꓽ", "lò pɯ̀"}, {"ꓡꓳꓽ ꓑꓮꓳꓻ ꓑꓮꓳꓻ", "lò pɑw pɑw"}, {"ꓡꓳꓽ ꓕꓳꓺ", "lò tʰo̱"}, {"ꓡꓳꓽ ꓕꓽ", "lò tʰɑ̀"}, {"ꓡꓳꓽ ꓗꓳꓺ", "lò ko̱"}, {"ꓡꓳꓽ ꓢꓲꓺ", "lò sɨ̱"}, {"ꓡꓳꓽ-ꓟꓬꓱꓽ", "lò-mjø̀"}, {"ꓡꓳꓼ", "lò̱"}, {"ꓡꓳꓼ ꓑꓬꓮꓳꓼ", "lò̱ pjɑ̱̀w"}, {"ꓡꓳꓼ ꓓꓳꓻ", "lò̱ do"}, {"ꓡꓳꓻꓽ", "loò"}, {"ꓡꓴꓸ", "lú"}, {"ꓡꓴꓸ ꓜꓲꓽ ꓧꓶꓹ", "lú dzɨ̀ xɯ̌"}, {"ꓡꓴꓸ ꓡꓴꓸꓽ", "lú lúù"}, {"ꓡꓴꓹ", "lǔ"}, {"ꓡꓴꓹ ꓐꓰꓻ", "lǔ be"}, {"ꓡꓴꓹ ꓗꓴꓹ", "lǔ kǔ"}, {"ꓡꓴꓹ ꓘꓪꓽ", "lǔ kʰwɑ̀"}, {"ꓡꓴꓹ ꓚꓱꓼ", "lǔ tʃø̱̀"}, {"ꓡꓴꓹ ꓚꓵꓼ", "lǔ tʃɨ̱̀"}, {"ꓡꓴꓹ ꓝꓲꓼ", "lǔ tsɨ̱̀"}, {"ꓡꓴꓺ", "lu̱"}, {"ꓡꓴꓻ", "lu"}, {"ꓡꓴꓻ ꓕꓴꓻ", "lu tʰu"}, {"ꓡꓴꓻ ꓗꓶꓸ", "lu kɯ́"}, {"ꓡꓴꓽ", "lù"}, {"ꓡꓴꓲꓸ", "lúj"}, {"ꓡꓴꓲꓽ", "lùj"}, {"ꓡꓵꓸ", "lý"}, {"ꓡꓵꓹ", "ly̌"}, {"ꓡꓵꓺ", "ly̱"}, {"ꓡꓵꓽ ꓫꓵꓸ", "lỳ ʃɨ́"}, {"ꓡꓵꓼ", "lỳ̱"}, {"ꓡꓶꓸ", "lɯ́"}, {"ꓡꓶꓸ ꓖꓪꓺ", "lɯ́ gwɑ̱"}, {"ꓡꓶꓸ ꓦꓻ ꓑꓺ", "lɯ́ h̃ɑ pɑ̱"}, {"ꓡꓶꓹ", "lɯ̌"}, {"ꓡꓶꓹ ꓚꓱꓼ", "lɯ̌ tʃø̱̀"}, {"ꓡꓶꓹ ꓚꓵꓼ", "lɯ̌ tʃɨ̱̀"}, {"ꓡꓶꓹ ꓝꓲꓼ", "lɯ̌ tsɨ̱̀"}, {"ꓡꓶꓺ", "lɯ̱"}, {"ꓡꓶꓺ ꓪꓳꓽ", "lɯ̱ wò"}, {"ꓡꓶꓻ ꓗꓶꓸ", "lɯ kɯ́"}, {"ꓡꓶꓽ", "lɯ̀"}, {"ꓡꓶꓽ ꓫꓱꓸ", "lɯ̀ ʃǿ"}, {"ꓡꓶꓼ", "lɯ̱̀"}, {"ꓡꓷꓼ", "lɤ̱̀"}, {"ꓡꓷꓰꓹ", "lɤ̌e"}, {"ꓡꓪꓸ", "lwɑ́"}, {"ꓡꓪꓼ", "lwɑ̱̀"}, {"ꓡꓬꓸ", "ljɑ́"}, {"ꓡꓬꓽ ꓓꓻ", "ljɑ̀ dɑ"}, {"ꓡꓬꓼ", "ljɑ̱̀"}, {"ꓡꓬꓯꓳꓺ ꓩꓷꓠꓽ", "ljæ̱w fɤ̀n"}, {"ꓢꓸ", "sɑ́"}, {"ꓢꓸ ꓑꓳꓸ", "sɑ́ pó"}, {"ꓢꓸ ꓔꓳꓺ", "sɑ́ to̱"}, {"ꓢꓸ ꓕꓱꓺ", "sɑ́ tʰø̱"}, {"ꓢꓸ ꓝꓲꓸ", "sɑ́ tsɨ́"}, {"ꓢꓸ ꓞꓲꓽ", "sɑ́ tsʰɨ̀"}, {"ꓢꓸ ꓡꓸ", "sɑ́ lɑ́"}, {"ꓢꓸ ꓩꓴꓸ", "sɑ́ fú"}, {"ꓢꓹ ꓚꓰꓼ", "sɑ̌ tʃè̱"}, {"ꓢꓹ ꓛꓰꓽ", "sɑ̌ tʃʰè"}, {"ꓢꓹ ꓘꓳꓼ ꓕꓳꓽ ꓜꓲꓻ", "sɑ̌ kʰò̱ tʰò dzɨ"}, {"ꓢꓹ ꓪꓼ", "sɑ̌ wɑ̱̀"}, {"ꓢꓺ", "sɑ̱"}, {"ꓢꓺ ꓘꓴꓺ", "sɑ̱ kʰu̱"}, {"ꓢꓺ ꓘꓪꓺ", "sɑ̱ kʰwɑ̱"}, {"ꓢꓺ ꓛꓬꓹ", "sɑ̱ tʃʰɑ̌"}, {"ꓢꓺ ꓝꓲꓼ ꓧꓶꓽ", "sɑ̱ tsɨ̱̀ xɯ̀"}, {"ꓢꓺ ꓝꓳꓹ", "sɑ̱ tsǒ"}, {"ꓢꓺ ꓡꓽ", "sɑ̱ lɑ̀"}, {"ꓢꓺ ꓡꓲꓺ ꓑꓳꓺ", "sɑ̱ li̱ po̱"}, {"ꓢꓽ ꓡꓽ ꓡꓽ", "sɑ̀ lɑ̀ lɑ̀"}, {"ꓢꓺ ꓢꓳꓽ", "sɑ̱ sò"}, {"ꓢꓺ ꓫꓲꓺ", "sɑ̱ ʃi̱"}, {"ꓢꓻ", "sɑ"}, {"ꓢꓻ ꓟꓶꓸ ꓘꓳꓸ", "sɑ mɯ́ kʰó"}, {"ꓢꓻ ꓡꓲꓻ ꓑꓴꓹ", "sɑ li pǔ"}, {"ꓢꓽ", "sɑ̀"}, {"ꓢꓽ ꓘꓪꓽ", "sɑ̀ kʰwɑ̀"}, {"ꓢꓽ ꓫꓲꓽ", "sɑ̀ ʃì"}, {"ꓢꓽ ꓡꓻ", "sɑ̀ lɑ"}, {"ꓢꓽ ꓡꓽ ꓡꓽ", "sɑ̀ lɑ̀ lɑ̀"}, {"ꓢꓼ", "sɑ̱̀"}, {"ꓢꓼ ꓓꓰꓼ ꓟꓲꓺ", "sɑ̱̀ dè̱ mi̱"}, {"ꓢꓼ ꓔꓯꓺ ꓓꓳꓼ", "sɑ̱̀ tæ̱ dò̱"}, {"ꓢꓼ ꓝꓼ", "sɑ̱̀ tsɑ̱̀"}, {"ꓢꓮꓲꓸ", "sɑ́j"}, {"ꓢꓯ", "sæ"}, {"ꓢꓰ", "se"}, {"ꓢꓰꓽ", "sè"}, {"ꓢꓱꓸ", "sǿ"}, {"ꓢꓱꓺ", "sø̱"}, {"ꓢꓱꓽ", "sø̀"}, {"ꓢꓲꓸ", "sɨ́"}, {"ꓢꓲꓸ ꓚꓬꓳꓸ ꓢꓲꓼ", "sɨ́ tʃjó sɨ̱̀"}, {"ꓢꓲꓸ ꓟꓽ ꓞꓲꓺ", "sɨ́ mɑ̀ tsʰɨ̱"}, {"ꓢꓲꓸ ꓩꓺ", "sɨ́ fɑ̱"}, {"ꓢꓲꓹ", "sɨ̌"}, {"ꓢꓲꓺ", "sɨ̱"}, {"ꓢꓲꓺ ꓡꓲꓺ", "sɨ̱ li̱"}, {"ꓢꓲꓺ ꓤꓽ ꓛꓲꓽ", "sɨ̱ zɑ̀ tʃʰì"}, {"ꓢꓲꓺ ꓩꓺ", "sɨ̱ fɑ̱"}, {"ꓢꓲꓺ ꓩꓴꓺ", "sɨ̱ fu̱"}, {"ꓢꓲꓻ", "sɨ"}, {"ꓢꓲꓽ", "sɨ̀"}, {"ꓢꓲꓽ ꓒꓽ", "sɨ̀ pʰɑ̀"}, {"ꓢꓲꓽ ꓢꓲꓽ", "sɨ̀ sɨ̀"}, {"ꓢꓲꓽ ꓫꓬꓻ", "sɨ̀ ʃɑ"}, {"ꓢꓲꓽ ꓧꓪꓺ", "sɨ̀ xwɑ̱"}, {"ꓢꓲꓼ", "sɨ̱̀"}, {"ꓢꓲꓼ ꓙꓬꓺ", "sɨ̱̀ dʒɑ̱"}, {"ꓢꓲꓼ ꓟꓸ", "sɨ̱̀ mɑ́"}, {"ꓢꓳꓸ", "só"}, {"ꓢꓳꓸ ꓝꓴꓲꓸ", "só tsúj"}, {"ꓢꓳꓸ ꓟꓳꓸ", "só mó"}, {"ꓢꓳꓺ", "so̱"}, {"ꓢꓳꓺ ꓟꓯꓹ", "so̱ mæ̌"}, {"ꓢꓳꓺ ꓟꓳꓹ", "so̱ mǒ"}, {"ꓢꓳꓻ ꓐꓳꓺ", "so bo̱"}, {"ꓢꓳꓻ", "so"}, {"ꓢꓳꓽ", "sò"}, {"ꓢꓳꓽ ꓡꓳꓽ", "sò lò"}, {"ꓢꓳꓼ", "sò̱"}, {"ꓢꓴꓸ", "sú"}, {"ꓢꓴꓸ ꓥꓼ ꓥꓼ", "sú ŋɑ̱̀ ŋɑ̱̀"}, {"ꓢꓴꓹ", "sǔ"}, {"ꓢꓴꓺ", "su̱"}, {"ꓢꓴꓻ", "su"}, {"ꓢꓴꓽ", "sù"}, {"ꓢꓴꓲꓸ ꓚꓴꓲꓸ", "súj tʃúj"}, {"ꓢꓴꓲꓸ", "súj"}, {"ꓢꓴꓲꓼ", "sù̱j"}, {"ꓢꓶꓸ", "sɯ́"}, {"ꓢꓶꓹ", "sɯ̌"}, {"ꓢꓶꓻ ꓝꓲꓺ", "sɯ tsɨ̱"}, {"ꓢꓶꓽ", "sɯ̀"}, {"ꓢꓶꓽ ꓡꓳꓽ", "sɯ̀ lò"}, {"ꓢꓶꓼ ꓡꓶꓼ ꓡꓶꓼ", "sɯ̱̀ lɯ̱̀ lɯ̱̀"}, {"ꓢꓷꓸ", "sɤ́"}, {"ꓢꓷꓺ ꓡꓷꓺ", "sɤ̱ lɤ̱"}, {"ꓢꓷꓼ ꓡꓷꓼ ꓢꓶꓽ", "sɤ̱̀ lɤ̱̀ sɯ̀"}, {"ꓢꓪꓸ", "swɑ́"}, {"ꓢꓪꓸ ꓟꓲꓸ", "swɑ́ mí"}, {"ꓢꓪꓺ", "swɑ̱"}, {"ꓢꓪꓽ ꓡꓽ ꓡꓽ", "swɑ̀ lɑ̀ lɑ̀"}, {"ꓢꓪꓮꓠꓸ", "swɑ́n"}, {"ꓢꓪꓮꓥꓻ ꓗꓴꓻ", "swɑŋ ku"}, {"ꓢꓬꓲꓹ", "sǐ"}, {"ꓣ", "ʐɑ"}, {"ꓣꓰ", "ʐe"}, {"ꓣꓱ", "ʐø"}, {"ꓣꓲ", "ʐɨ"}, {"ꓣꓳ", "ʐo"}, {"ꓣꓴ", "ʐu"}, {"ꓣꓵ", "ʐy"}, {"ꓣꓷꓠꓸ", "ʐɤ́n"}, {"ꓤꓸ", "zɑ́"}, {"ꓤꓹ ꓤꓼ", "zɑ̌ zɑ̱̀"}, {"ꓤꓺ ꓟꓳꓺ", "zɑ̱ mo̱"}, {"ꓤꓻ", "zɑ"}, {"ꓤꓼ", "zɑ̱̀"}, {"ꓤꓽ", "zɑ̀"}, {"ꓤꓽ ꓘꓹ", "zɑ̀ kʰɑ̌"}, {"ꓤꓼ ꓥꓳꓽ", "zɑ̱̀ ŋò"}, {"ꓤꓸꓽ", "zɑ́ɑ̀"}, {"ꓤꓰꓻ", "ze"}, {"ꓤꓰꓽ", "zè"}, {"ꓤꓱꓽ", "zø̀"}, {"ꓤꓱꓼ", "zø̱̀"}, {"ꓤꓲꓸ", "zɨ́"}, {"ꓤꓲꓹ ꓑꓵꓸ", "zɨ̌ pý"}, {"ꓤꓲꓹ ꓐꓵꓻ", "zɨ̌ by"}, {"ꓤꓲꓹ ꓖꓴꓺ", "zɨ̌ gu̱"}, {"ꓤꓲꓹ ꓡꓵꓼ", "zɨ̌ lỳ̱"}, {"ꓤꓲꓺ", "zɨ̱"}, {"ꓤꓲꓺ ꓟꓺ", "zɨ̱ mɑ̱"}, {"ꓤꓲꓻ", "zɨ"}, {"ꓤꓲꓻ ꓘꓴꓻ", "zɨ kʰu"}, {"ꓤꓲꓻ ꓛꓱꓹ ꓐꓰꓽ ꓓꓲꓻ", "zɨ tʃʰø̌ bè di"}, {"ꓤꓲꓻ ꓟꓵꓽ ꓟꓺ", "zɨ mỳ mɑ̱"}, {"ꓤꓲꓻ ꓪꓴꓻ", "zɨ wu"}, {"ꓤꓲꓻ ꓪꓴꓸ ꓤꓲꓻ ꓟꓶꓻ ꓟꓺ ꓤꓽ", "zɨ wú zɨ mɯ mɑ̱ zɑ̀"}, {"ꓤꓲꓽ", "zɨ̀"}, {"ꓤꓲꓽ ꓟꓺ", "zɨ̀ mɑ̱"}, {"ꓤꓲꓼ", "zɨ̱̀"}, {"ꓤꓳꓸ", "zó"}, {"ꓤꓳꓸ-ꓝꓲꓺ", "zó-tsɨ̱"}, {"ꓤꓳꓸ ꓤꓳꓺ", "zó zo̱"}, {"ꓤꓳꓹ", "zǒ"}, {"ꓤꓳꓹ ꓘꓪꓽ", "zǒ kʰwɑ̀"}, {"ꓤꓳꓺ", "zo̱"}, {"ꓤꓳꓻ", "zo"}, {"ꓤꓳꓻ-ꓟꓺ ꓢꓳꓺ", "zo-mɑ̱ so̱"}, {"ꓤꓳꓻ ꓟꓰꓸ", "zo mé"}, {"ꓤꓳꓽ", "zò"}, {"ꓤꓴꓹ", "zǔ"}, {"ꓤꓴꓺ", "zu̱"}, {"ꓤꓴꓻ", "zu"}, {"ꓤꓴꓽ", "zù"}, {"ꓤꓶꓻ", "zɯ"}, {"ꓤꓷꓠꓸ", "zɤ́n"}, {"ꓤꓪꓽ", "zwɑ̀"}, {"ꓤꓪꓽ ꓡꓶꓹ", "zwɑ̀ lɯ̌"}, {"ꓥꓸ", "ŋɑ́"}, {"ꓥꓸ ꓩꓴꓺ", "ŋɑ́ fu̱"}, {"ꓥꓸ ꓟꓺ", "ŋɑ́ mɑ̱"}, {"ꓥꓺ", "ŋɑ̱"}, {"ꓥꓺ ꓟꓺ", "ŋɑ̱ mɑ̱"}, {"ꓥꓻ", "ŋɑ"}, {"ꓥꓻ ꓕꓻ ꓑꓳꓸ", "ŋɑ tʰɑ pó"}, {"ꓥꓽ ꓡꓯꓽ", "ŋɑ̀ læ̀"}, {"ꓥꓽ ꓡꓮꓳꓼ", "ŋɑ̀ lɑ̱̀w"}, {"ꓥꓼ", "ŋɑ̱̀"}, {"ꓥꓼ ꓥꓼ", "ŋɑ̱̀ ŋɑ̱̀"}, {"ꓥꓼ ꓥꓳꓸ", "ŋɑ̱̀ ŋó"}, {"ꓥꓮꓲꓻꓽ", "ŋɑì"}, {"ꓥꓳꓸ", "ŋó"}, {"ꓥꓳꓹ", "ŋǒ"}, {"ꓥꓳꓺ", "ŋo̱"}, {"ꓥꓳꓺ ꓡꓳꓸ", "ŋo̱ ló"}, {"ꓥꓳꓻ", "ŋo"}, {"ꓥꓳꓽ", "ŋò"}, {"ꓥꓳꓼ", "ŋò̱"}, {"ꓥꓴꓻ", "ŋu"}, {"ꓥꓶꓺ", "ŋɯ̱"}, {"ꓥꓶꓼ ꓥꓶꓼ", "ŋɯ̱̀ ŋɯ̱̀"}, {"ꓥꓶꓰꓸꓽ", "ŋɯ́è"}, {"ꓥꓪꓸ", "ŋwɑ́"}, {"ꓥꓪꓻ", "ŋwɑ"}, {"ꓥꓪꓽ", "ŋwɑ̀"}, {"ꓦꓸ", "h̃ɑ́"}, {"ꓦꓹ", "h̃ɑ̌"}, {"ꓦꓹ ꓑꓱꓺ", "h̃ɑ̌ pø̱"}, {"ꓦꓺ ꓟꓶꓺ", "h̃ɑ̱ mɯ̱"}, {"ꓦꓻ", "h̃ɑ"}, {"ꓦꓻ ꓓꓴꓽ", "h̃ɑ dù"}, {"ꓦꓻ ꓟꓺ", "h̃ɑ mɑ̱"}, {"ꓦꓻ ꓟꓲꓺ", "h̃ɑ mi̱"}, {"ꓦꓻ ꓦꓸꓽ", "h̃ɑ h̃ɑ́ɑ̀"}, {"ꓦꓸꓽ", "h̃ɑ́ɑ̀"}, {"ꓦꓸꓽ ꓓꓻ ˍ", "h̃ɑ́ɑ̀ dɑ ɑ̱"}, {"ꓦꓯꓸ", "h̃ǽ"}, {"ꓦꓯꓸ ꓦꓯꓸ", "h̃ǽ h̃ǽ"}, {"ꓦꓯꓸ ꓥꓳꓽ", "h̃ǽ ŋò"}, {"ꓦꓯꓹ", "h̃æ̌"}, {"ꓦꓯꓹ ꓕꓲꓽ", "h̃æ̌ tʰì"}, {"ꓦꓯꓹ ꓝꓲꓸ", "h̃æ̌ tsɨ́"}, {"ꓦꓯꓼ", "h̃æ̱̀"}, {"ꓦꓰꓸ", "h̃é"}, {"ꓦꓰꓹ ꓚꓵꓺ", "h̃ě tʃɨ̱"}, {"ꓦꓰꓺ", "h̃e̱"}, {"ꓦꓰꓻ ꓪꓳꓽ", "h̃e wò"}, {"ꓦꓰꓽ", "h̃è"}, {"ꓦꓰꓽ ꓗꓸ", "h̃è kɑ́"}, {"ꓦꓰꓽ ꓟꓰꓹ ꓫꓵꓺ", "h̃è mě ʃɨ̱"}, {"ꓦꓰꓼ", "h̃è̱"}, {"ꓦꓱꓹ", "h̃ø̌"}, {"ꓦꓱꓺ", "h̃ø̱"}, {"ꓦꓱꓻ", "h̃ø"}, {"ꓦꓱꓽ", "h̃ø̀"}, {"ꓦꓱꓼ", "h̃ø̱̀"}, {"ꓦꓲꓸ", "h̃í"}, {"ꓦꓲꓸ ꓢꓲꓻ ꓡꓲꓸꓽ", "h̃í sɨ líì"}, {"ꓦꓲꓺ", "h̃i̱"}, {"ꓦꓲꓻ", "h̃i"}, {"ꓦꓲꓻ ꓝꓺ", "h̃i tsɑ̱"}, {"ꓦꓲꓽ", "h̃ì"}, {"ꓦꓲꓼ", "h̃ì̱"}, {"ꓦꓳꓹ", "h̃ǒ"}, {"ꓦꓳꓺ", "h̃o̱"}, {"ꓦꓴꓺ", "h̃u̱"}, {"ꓦꓴꓺ ꓠꓬꓹ", "h̃u̱ ɲɑ̌"}, {"ꓦꓴꓽ", "h̃ù"}, {"ꓦꓵꓹ", "h̃y̌"}, {"ꓦꓵꓺ", "h̃y̱"}, {"ꓦꓵꓻ", "h̃y"}, {"ꓦꓶꓸ", "h̃ɯ́"}, {"ꓦꓶꓹ", "h̃ɯ̌"}, {"ꓦꓶꓹ ꓡꓯꓼ", "h̃ɯ̌ læ̱̀"}, {"ꓦꓶꓻ", "h̃ɯ"}, {"ꓦꓶꓻ ꓡꓽ", "h̃ɯ lɑ̀"}, {"ꓦꓬꓻ", "h̃jɑ"}, {"ꓦꓬꓽ", "h̃jɑ̀"}, {"ꓦꓬꓼ", "h̃jɑ̱̀"}, {"ꓧꓸ", "xɑ́"}, {"ꓧꓹ", "xɑ̌"}, {"ꓧꓺ", "xɑ̱"}, {"ꓧꓽ", "xɑ̀"}, {"ꓧꓽ ꓡꓯꓺ", "xɑ̀ læ̱"}, {"ꓧꓼ", "xɑ̱̀"}, {"ꓧꓮꓲꓸ", "xɑ́j"}, {"ꓧꓮꓳꓸ", "xɑ́w"}, {"ꓧꓳꓸ", "xó"}, {"ꓧꓳꓸ ꓒꓬꓸ", "xó pʰjɑ́"}, {"ꓧꓳꓸ ꓡꓱꓼ", "xó lø̱̀"}, {"ꓧꓳꓹ", "xǒ"}, {"ꓧꓳꓺ", "xo̱"}, {"ꓧꓳꓺ ꓒꓬꓱꓺ", "xo̱ pʰjø̱"}, {"ꓧꓳꓺ ꓦꓲꓻ", "xo̱ h̃i"}, {"ꓧꓳꓻ", "xo"}, {"ꓧꓳꓻ ꓱꓸ", "xo ǿ"}, {"ꓧꓳꓽ", "xò"}, {"ꓧꓳꓽ ꓐꓬꓱꓻ", "xò bjø"}, {"ꓧꓳꓽ ꓑꓼ", "xò pɑ̱̀"}, {"ꓧꓳꓽ ꓒꓶꓽ", "xò pʰɯ̀"}, {"ꓧꓳꓽ ꓕꓸ", "xò tʰɑ́"}, {"ꓧꓳꓽ ꓢꓸ", "xò sɑ́"}, {"ꓧꓳꓽ ꓧꓳꓹ", "xò xǒ"}, {"ꓧꓳꓽ ꓫꓬꓺ", "xò ʃɑ̱"}, {"ꓧꓳꓽ ꓤꓳꓹ", "xò zǒ"}, {"ꓧꓳꓼ", "xò̱"}, {"ꓧꓳꓥꓸ ꓠꓮꓟꓸ", "xóŋ nɑ́m"}, {"ꓧꓴꓲꓸ", "xúj"}, {"ꓧꓴꓲꓺ", "xu̱j"}, {"ꓧꓶꓸ", "xɯ́"}, {"ꓧꓶꓹ", "xɯ̌"}, {"ꓧꓶꓹ ꓡꓼ", "xɯ̌ lɑ̱̀"}, {"ꓧꓶꓹ ꓧꓶꓹ", "xɯ̌ xɯ̌"}, {"ꓧꓶꓺ", "xɯ̱"}, {"ꓧꓶꓻ", "xɯ"}, {"ꓧꓶꓽ", "xɯ̀"}, {"ꓧꓶꓽ ꓛꓵꓽ", "xɯ̀ tʃʰɨ̀"}, {"ꓧꓶꓼ", "xɯ̱̀"}, {"ꓧꓪꓸ", "xwɑ́"}, {"ꓧꓪꓸ ꓞꓲꓽ", "xwɑ́ tsʰɨ̀"}, {"ꓧꓪꓸ ꓟꓲꓼ ꓞꓲꓻ ꓢꓸ", "xwɑ́ mì̱ tsʰɨ sɑ́"}, {"ꓧꓪꓸ ꓧꓪꓸ", "xwɑ́ xwɑ́"}, {"ꓧꓪꓹ", "xwɑ̌"}, {"ꓧꓪꓹ ꓙꓰꓼ", "xwɑ̌ dʒè̱"}, {"ꓧꓪꓺ", "xwɑ̱"}, {"ꓧꓪꓺ ꓢꓶꓹ", "xwɑ̱ sɯ̌"}, {"ꓧꓪꓽ", "xwɑ̀"}, {"ꓧꓪꓽ ꓞꓶꓻ", "xwɑ̀ tsʰɯ"}, {"ꓧꓪꓽ ꓑꓳꓺ", "xwɑ̀ po̱"}, {"ꓧꓪꓽ ꓕꓴꓻ", "xwɑ̀ tʰu"}, {"ꓧꓪꓽ ꓗꓳꓼ", "xwɑ̀ kò̱"}, {"ꓧꓪꓽ-ꓝꓺ-ꓢꓺ", "xwɑ̀-tsɑ̱-sɑ̱"}, {"ꓧꓪꓼ", "xwɑ̱̀"}, {"ꓨꓼ", "hɑ̱̀"}, {"ꓨꓳꓽ", "hò"}, {"ꓩꓸ", "fɑ́"}, {"ꓩꓸ ꓫꓲꓺ", "fɑ́ ʃi̱"}, {"ꓩꓹ", "fɑ̌"}, {"ꓩꓹ ꓡꓼ", "fɑ̌ lɑ̱̀"}, {"ꓩꓺ", "fɑ̱"}, {"ꓩꓼ", "fɑ̱̀"}, {"ꓩꓼ ꓡꓼ", "fɑ̱̀ lɑ̱̀"}, {"ꓩꓰꓸ", "fé"}, {"ꓩꓴꓸ", "fú"}, {"ꓩꓴꓹ", "fǔ"}, {"ꓩꓴꓹ ꓡꓴꓽ", "fǔ lù"}, {"ꓩꓴꓹ ꓤꓽ", "fǔ zɑ̀"}, {"ꓩꓴꓺ", "fu̱"}, {"ꓩꓴꓺ ꓞꓲꓺ", "fu̱ tsʰɨ̱"}, {"ꓩꓴꓺ ꓠꓬꓹ", "fu̱ ɲɑ̌"}, {"ꓩꓴꓻ", "fu"}, {"ꓩꓴꓽ", "fù"}, {"ꓩꓴꓽ ꓔꓰꓻ", "fù te"}, {"ꓩꓴꓽ ꓚꓬꓮꓳꓺ", "fù tʃɑ̱w"}, {"ꓩꓴꓽ ꓞꓲꓺ", "fù tsʰɨ̱"}, {"ꓩꓴꓽ ꓡꓲꓹ ꓩꓴꓽ ꓚꓳꓹ", "fù lǐ fù tʃǒ"}, {"ꓩꓴꓽ ꓡꓴꓹ", "fù lǔ"}, {"ꓩꓵꓸ", "fý"}, {"ꓩꓵꓹ", "fy̌"}, {"ꓩꓵꓽ ꓩꓵꓽ", "fỳ fỳ"}, {"ꓩꓶꓽ ꓡꓶꓼ", "fɯ̀ lɯ̱̀"}, {"ꓩꓷꓠꓸ", "fɤ́n"}, {"ꓪꓸ", "wɑ́"}, {"ꓪꓸ ꓚꓬꓺ", "wɑ́ tʃɑ̱"}, {"ꓪꓸ ꓟꓲꓼ", "wɑ́ mì̱"}, {"ꓪꓹ", "wɑ̌"}, {"ꓪꓹ ꓚꓴꓺ", "wɑ̌ tʃu̱"}, {"ꓪꓹ ꓝꓲꓺ", "wɑ̌ tsɨ̱"}, {"ꓪꓹ ꓡꓱꓻ", "wɑ̌ lø"}, {"ꓪꓹ ꓥꓶꓽ ꓘꓴꓻ", "wɑ̌ ŋɯ̀ kʰu"}, {"ꓪꓺ", "wɑ̱"}, {"ꓪꓺ ꓕꓱꓻ", "wɑ̱ tʰø"}, {"ꓪꓺ ꓫꓰꓽ", "wɑ̱ ʃè"}, {"ꓪꓺ ꓪꓺ", "wɑ̱ wɑ̱"}, {"ꓪꓻ ꓔꓲꓸ", "wɑ tí"}, {"ꓪꓻ ꓠꓬꓲꓺ", "wɑ ɲi̱"}, {"ꓪꓽ", "wɑ̀"}, {"ꓪꓽ ꓗꓳꓹ", "wɑ̀ kǒ"}, {"ꓪꓽ ꓘꓴꓻ", "wɑ̀ kʰu"}, {"ꓪꓼ ꓚꓬꓸ", "wɑ̱̀ tʃɑ́"}, {"ꓪꓽ ꓛꓴꓽ", "wɑ̀ tʃʰù"}, {"ꓪꓽ ꓪꓴꓽ ꓘꓳꓹ", "wɑ̀ wù kʰǒ"}, {"ꓪꓽ ꓫꓱꓻ", "wɑ̀ ʃø"}, {"ꓪꓽ ꓠꓬꓲꓺ", "wɑ̀ ɲi̱"}, {"ꓪꓼ", "wɑ̱̀"}, {"ꓪꓼ ꓡꓼ", "wɑ̱̀ lɑ̱̀"}, {"ꓪꓼ ꓩꓼ", "wɑ̱̀ fɑ̱̀"}, {"ꓪꓮꓲꓸ ꓚꓬꓺ", "wɑ́j tʃɑ̱"}, {"ꓪꓮꓲꓸ ꓥꓳꓽ", "wɑ́j ŋò"}, {"ꓪꓮꓲꓽ", "wɑ̀j"}, {"ꓪꓯꓹ ꓗꓸ ꓢꓶꓽ", "wæ̌ kɑ́ sɯ̀"}, {"ꓪꓯꓺ", "wæ̱"}, {"ꓪꓯꓼ", "wæ̱̀"}, {"ꓪꓰꓸ ꓚꓰꓺ", "wé tʃe̱"}, {"ꓪꓰꓸ ꓡꓰꓸ", "wé lé"}, {"ꓪꓰꓺ", "we̱"}, {"ꓪꓰꓻ ꓤꓽ", "we zɑ̀"}, {"ꓪꓰꓻ ꓕꓳꓹ", "we tʰǒ"}, {"ꓪꓰꓽ", "wè"}, {"ꓪꓰꓼ ꓡꓰꓼ", "wè̱ lè̱"}, {"ꓪꓰꓼ", "wè̱"}, {"ꓪꓳꓸ", "wó"}, {"ꓪꓳꓸ ꓖꓳꓼ ꓟꓺ", "wó gò̱ mɑ̱"}, {"ꓪꓳꓸ ꓟꓰꓽ", "wó mè"}, {"ꓪꓳꓹ", "wǒ"}, {"ꓪꓳꓺ", "wo̱"}, {"ꓪꓳꓺ ꓡꓳꓺ", "wo̱ lo̱"}, {"ꓪꓳꓻ", "wo"}, {"ꓪꓳꓻ ꓓꓳꓼ", "wo dò̱"}, {"ꓪꓳꓻ ꓗꓳꓸ", "wo kó"}, {"ꓪꓳꓻ ꓞꓲꓺ", "wo tsʰɨ̱"}, {"ꓪꓳꓽ", "wò"}, {"ꓪꓳꓽ ꓑꓶꓽ", "wò pɯ̀"}, {"ꓪꓳꓽ ꓒꓰꓽ ꓢꓸ ꓠꓬꓲꓺ", "wò pʰè sɑ́ ɲi̱"}, {"ꓪꓳꓽ ꓔꓳꓺ", "wò to̱"}, {"ꓪꓳꓽ ꓤꓻꓽ", "wò zɑɑ̀"}, {"ꓪꓳꓼ", "wò̱"}, {"ꓪꓴꓸ", "wú"}, {"ꓪꓴꓸ ꓔꓲꓸ", "wú tí"}, {"ꓪꓴꓸ ꓠꓬꓲꓺ", "wú ɲi̱"}, {"ꓪꓴꓺ ꓗꓴꓲꓺ", "wu̱ ku̱j"}, {"ꓪꓴꓺ", "wu̱"}, {"ꓪꓴꓻ", "wu"}, {"ꓪꓴꓻ ꓐꓰꓼ", "wu bè̱"}, {"ꓪꓴꓻ-ꓢꓺ", "wu-sɑ̱"}, {"ꓪꓴꓽ", "wù"}, {"ꓪꓴꓽ ꓒꓰꓽ", "wù pʰè"}, {"ꓪꓴꓽ ꓓꓲꓻ", "wù di"}, {"ꓪꓴꓽ ꓧꓶꓻ", "wù xɯ"}, {"ꓪꓴꓲꓺ", "wu̱j"}, {"ꓪꓵꓸ ꓪꓵꓺ", "wý wy̱"}, {"ꓪꓵꓺ", "wy̱"}, {"ꓪꓵꓻ", "wy"}, {"ꓪꓵꓽ", "wỳ"}, {"ꓪꓵꓼ", "wỳ̱"}, {"ꓪꓶꓸ", "wɯ́"}, {"ꓪꓶꓹ", "wɯ̌"}, {"ꓪꓶꓽ", "wɯ̀"}, {"ꓫ", "ʂɑ"}, {"ꓫꓮꓳꓼ ꓞꓲꓸ", "ʃɑ̱̀w tsʰɨ́"}, {"ꓫꓯꓸ", "ʃǽ"}, {"ꓫꓯꓸꓼ ꓟꓶꓸ", "ʃǽæ̱̀ mɯ́"}, {"ꓫꓯꓼ", "ʃæ̱̀"}, {"ꓫꓰꓸ", "ʃé"}, {"ꓫꓰꓸ ꓝꓲꓺ", "ʃé tsɨ̱"}, {"ꓫꓰꓹ", "ʃě"}, {"ꓫꓰꓺ", "ʃe̱"}, {"ꓫꓰꓠꓺ ꓚꓬꓺ", "ʃe̱n tʃɑ̱"}, {"ꓫꓰꓽ", "ʃè"}, {"ꓫꓰꓽ ꓡꓰꓽ", "ʃè lè"}, {"ꓫꓰꓽ ꓢꓺ", "ʃè sɑ̱"}, {"ꓫꓰꓽ ꓤꓳꓹ", "ʃè zǒ"}, {"ꓫꓰꓼ", "ʃè̱"}, {"ꓫꓰꓼ ꓕꓲꓹ", "ʃè̱ tʰǐ"}, {"ꓫꓱꓸ", "ʃǿ"}, {"ꓫꓱꓸ ꓚꓱꓸ", "ʃǿ tʃǿ"}, {"ꓫꓱꓸ ꓤꓼ", "ʃǿ zɑ̱̀"}, {"ꓫꓱꓹ", "ʃø̌"}, {"ꓫꓱꓺ", "ʃø̱"}, {"ꓫꓱꓻ", "ʃø"}, {"ꓫꓱꓽ", "ʃø̀"}, {"ꓫꓱꓼ ꓡꓱꓼ", "ʃø̱̀ lø̱̀"}, {"ꓫꓲꓸ", "ʃí"}, {"ꓫꓲꓸ ꓝꓲꓺ", "ʃí tsɨ̱"}, {"ꓫꓲꓹ", "ʃǐ"}, {"ꓫꓲꓹ ꓝꓲꓺ", "ʃǐ tsɨ̱"}, {"ꓫꓲꓹ ꓧꓴꓲꓺ", "ʃǐ xu̱j"}, {"ꓫꓲꓺ", "ʃi̱"}, {"ꓫꓲꓺ ꓚꓬꓺ", "ʃi̱ tʃɑ̱"}, {"ꓫꓲꓻ ꓗꓸ", "ʃi kɑ́"}, {"ꓫꓲꓻ ꓫꓲꓻ ꓧꓪꓻ ꓧꓪꓻ", "ʃi ʃi xwɑ xwɑ"}, {"ꓫꓲꓥꓺ", "ʃi̱ŋ"}, {"ꓫꓲꓽ ꓕꓳꓽ", "ʃì tʰò"}, {"ꓫꓲꓽ ꓡꓰꓽ", "ʃì lè"}, {"ꓫꓲꓽ ꓧꓪꓰꓸ", "ʃì xwé"}, {"ꓫꓲꓼ", "ʃì̱"}, {"ꓫꓳ", "ʂo"}, {"ꓫꓴ", "ʂu"}, {"ꓫꓵꓸ", "ʃɨ́"}, {"ꓫꓵꓸ ꓓꓳꓼ", "ʃɨ́ dò̱"}, {"ꓫꓵꓸ ꓠꓬꓹ ꓜꓻ ꓒꓴꓻ", "ʃɨ́ ɲɑ̌ dzɑ pʰu"}, {"ꓫꓵꓹ", "ʃɨ̌"}, {"ꓫꓵꓹ ꓡꓲꓹ", "ʃɨ̌ lǐ"}, {"ꓫꓵꓹ ꓧꓴꓲꓺ", "ʃɨ̌ xu̱j"}, {"ꓫꓵꓹ ꓫꓵꓽ", "ʃɨ̌ ʃɨ̀"}, {"ꓫꓵꓺ", "ʃɨ̱"}, {"ꓫꓵꓺ ꓟꓺ", "ʃɨ̱ mɑ̱"}, {"ꓫꓵꓺ ꓟꓰꓻ", "ʃɨ̱ me"}, {"ꓫꓵꓺ ꓫꓵꓺ", "ʃɨ̱ ʃɨ̱"}, {"ꓫꓵꓺ ꓫꓵꓺ ꓜꓲꓻ", "ʃɨ̱ ʃɨ̱ dzɨ"}, {"ꓫꓵꓻ", "ʃɨ"}, {"ꓫꓵꓻ ꓫꓬꓹ ꓢꓶꓽ", "ʃɨ ʃɑ̌ sɯ̀"}, {"ꓫꓵꓽ", "ʃɨ̀"}, {"ꓫꓵꓽ ꓒꓳꓸ", "ʃɨ̀ pʰó"}, {"ꓫꓵꓽ ꓔꓹ ꓟꓳꓽ", "ʃɨ̀ tɑ̌ mò"}, {"ꓫꓵꓽ ꓛꓵꓽ", "ʃɨ̀ tʃʰɨ̀"}, {"ꓫꓵꓽ ꓟꓲꓻ ꓝꓲꓸ", "ʃɨ̀ mi tsɨ́"}, {"ꓫꓵꓽ ꓤꓽ ꓧꓪꓸ ꓤꓽ", "ʃɨ̀ zɑ̀ xwɑ́ zɑ̀"}, {"ꓫꓵꓼ", "ʃɨ̱̀"}, {"ꓫꓵꓼ ꓙꓬꓺ", "ʃɨ̱̀ dʒɑ̱"}, {"ꓫꓵꓼ ꓡꓵꓼ ꓡꓵꓼ", "ʃɨ̱̀ lỳ̱ lỳ̱"}, {"ꓫꓷꓹ", "ʃɤ̌"}, {"ꓫꓪꓼ ꓤꓳꓹ", "ʃwɑ̱̀ zǒ"}, {"ꓫꓬꓸ", "ʃɑ́"}, {"ꓫꓬꓹ", "ʃɑ̌"}, {"ꓫꓬꓹ ꓘꓳꓹ", "ʃɑ̌ kʰǒ"}, {"ꓫꓬꓺ", "ʃɑ̱"}, {"ꓫꓬꓺ ꓚꓪꓹ", "ʃɑ̱ tʃwɑ̌"}, {"ꓫꓬꓺ ꓝꓲꓼ ꓟꓺ", "ʃɑ̱ tsɨ̱̀ mɑ̱"}, {"ꓫꓬꓺ ꓝꓳꓹ", "ʃɑ̱ tsǒ"}, {"ꓫꓬꓺ ꓡꓰꓼ", "ʃɑ̱ lè̱"}, {"ꓫꓬꓺ-ꓫꓬꓺ", "ʃɑ̱-ʃɑ̱"}, {"ꓫꓬꓻ", "ʃɑ"}, {"ꓫꓬꓽ", "ʃɑ̀"}, {"ꓫꓬꓼ", "ʃɑ̱̀"}, {"ꓫꓬꓼ ꓕꓳꓼ", "ʃɑ̱̀ tʰò̱"}, {"ꓫꓬꓼ ꓡꓳꓼ", "ʃɑ̱̀ lò̱"}, {"ꓫꓬꓳꓺ", "ʃjo̱"}, {"ꓬꓸ", "jɑ́"}, {"ꓬꓸ ꓗꓶꓸ ꓡꓶꓸ", "jɑ́ kɯ́ lɯ́"}, {"ꓬꓸ ꓗꓪꓺ", "jɑ́ kwɑ̱"}, {"ꓬꓸ ꓝꓲꓺ", "jɑ́ tsɨ̱"}, {"ꓬꓹ", "jɑ̌"}, {"ꓬꓹ ꓚꓰꓺ", "jɑ̌ tʃe̱"}, {"ꓬꓹ ꓕꓲꓳꓼ", "jɑ̌ tʰì̱w"}, {"ꓬꓺ", "jɑ̱"}, {"ꓬꓺ ꓡꓯꓺ", "jɑ̱ læ̱"}, {"ꓬꓽ", "jɑ̀"}, {"ꓬꓽ ꓑꓳꓻ", "jɑ̀ po"}, {"ꓬꓽ ꓒꓲꓸ", "jɑ̀ pʰí"}, {"ꓬꓽ ꓗꓽ ꓟꓻ ꓜꓲꓻ", "jɑ̀ kɑ̀ mɑ dzɨ"}, {"ꓬꓽ ꓗꓳꓺ", "jɑ̀ ko̱"}, {"ꓬꓽ ꓚꓳꓽ", "jɑ̀ tʃò"}, {"ꓬꓽ ꓞꓲꓽ", "jɑ̀ tsʰɨ̀"}, {"ꓬꓽ ꓧꓳꓽ", "jɑ̀ xò"}, {"ꓬꓽ ꓡꓲꓺ ꓜꓲꓻ", "jɑ̀ li̱ dzɨ"}, {"ꓬꓽ ꓬꓱꓽ", "jɑ̀ jø̀"}, {"ꓬꓼ", "jɑ̱̀"}, {"ꓬꓼ ꓔꓰꓺ", "jɑ̱̀ te̱"}, {"ꓬꓼ ꓚ", "jɑ̱̀ tʂɑ"}, {"ꓬꓼ ꓬꓲꓹ", "jɑ̱̀ jǐ"}, {"ꓬꓮꓥꓸ ꓗꓶꓸ ꓡꓶꓸ", "jɑ́ŋ kɯ́ lɯ́"}, {"ꓬꓮꓳꓹ ꓚꓰꓺ", "jɑ̌w tʃe̱"}, {"ꓬꓮꓳꓼ ꓚꓬꓺ", "jɑ̱̀w tʃɑ̱"}, {"ꓬꓯꓼ", "jæ̱̀"}, {"ꓬꓰꓸ", "jé"}, {"ꓬꓰꓸ ꓢꓴꓲꓸ", "jé súj"}, {"ꓬꓰꓺ", "je̱"}, {"ꓬꓰꓺ ꓧꓳꓹ", "je̱ xǒ"}, {"ꓬꓰꓻ", "je"}, {"ꓬꓰꓽ", "jè"}, {"ꓬꓰꓽ ꓜꓻ", "jè dzɑ"}, {"ꓬꓱꓸ", "jǿ"}, {"ꓬꓱꓸ ꓟꓽ", "jǿ mɑ̀"}, {"ꓬꓱꓹ", "jø̌"}, {"ꓬꓱꓻ", "jø"}, {"ꓬꓱꓽ", "jø̀"}, {"ꓬꓲꓸ", "jí"}, {"ꓬꓲꓸ ꓠꓱꓻ ꓬꓲꓸ ꓧꓳꓽ", "jí nø jí xò"}, {"ꓬꓲꓸ ꓬꓮꓳꓺ ꓟꓺ", "jí jɑ̱w mɑ̱"}, {"ꓬꓲꓸˍꓼ ꓡꓰꓺ", "jíɑ̱̀ le̱"}, {"ꓬꓲꓹ ꓐꓵꓺ", "jǐ by̱"}, {"ꓬꓲꓹ ꓖꓴꓺ", "jǐ gu̱"}, {"ꓬꓲꓹ ꓗꓳꓺ", "jǐ ko̱"}, {"ꓬꓲꓹ ꓘꓪꓽ", "jǐ kʰwɑ̀"}, {"ꓬꓲꓹ ꓡꓵꓼ", "jǐ lỳ̱"}, {"ꓬꓲꓹ ꓬꓯꓼ", "jǐ jæ̱̀"}, {"ꓬꓲꓻ", "ji"}, {"ꓬꓲꓻ ꓗꓳꓻ", "ji ko"}, {"ꓬꓲꓻ ꓘꓴꓻ", "ji kʰu"}, {"ꓬꓲꓻ ꓤꓲꓽ", "ji zɨ̀"}, {"ꓬꓲꓽ ꓩꓹ", "jì fɑ̌"}, {"ꓬꓲꓽ ꓢꓵꓸ", "jì sý"}, {"ꓬꓲꓽ ꓤꓳꓹ", "jì zǒ"}, {"ꓬꓲꓼ", "jì̱"}, {"ꓬꓲꓼ ꓑꓴꓸ", "jì̱ pú"}, {"ꓬꓲꓼ ꓢꓴꓲꓼ ꓕꓰꓺ", "jì̱ sù̱j tʰe̱"}, {"ꓬꓲꓼ ꓩꓮꓥꓺ", "jì̱ fɑ̱ŋ"}, {"ꓬꓲꓼ", "jì̱"}, {"ꓬꓲꓥꓺ", "ji̱ŋ"}, {"ꓬꓳꓹ ꓬꓲꓽ", "jǒ jì"}, {"ꓬꓳꓹ", "jǒ"}, {"ꓮꓸ", "ɑ́"}, {"ꓮꓸ ꓐꓽ", "ɑ́ bɑ̀"}, {"ꓮꓸ ꓐꓰꓸ", "ɑ́ bé"}, {"ꓮꓸ ꓐꓰꓽ", "ɑ́ bè"}, {"ꓮꓸ ꓐꓳꓹ", "ɑ́ bǒ"}, {"ꓮꓸ ꓐꓳꓼ", "ɑ́ bò̱"}, {"ꓮꓸ ꓐꓵꓽ", "ɑ́ bỳ"}, {"ꓮꓸ ꓑꓯꓹ", "ɑ́ pæ̌"}, {"ꓮꓸ ꓑꓱꓺ", "ɑ́ pø̱"}, {"ꓮꓸ ꓑꓲꓸ ꓠꓯꓼ", "ɑ́ pí næ̱̀"}, {"ꓮꓸ ꓑꓳꓼ", "ɑ́ pò̱"}, {"ꓮꓸ ꓑꓴꓺ", "ɑ́ pu̱"}, {"ꓮꓸ ꓑꓶꓺ", "ɑ́ pɯ̱"}, {"ꓮꓸ ꓑꓬꓺ ꓟꓺ", "ɑ́ pjɑ̱ mɑ̱"}, {"ꓮꓸ ꓑꓬꓼ", "ɑ́ pjɑ̱̀"}, {"ꓮꓸ ꓒꓲꓻ", "ɑ́ pʰi"}, {"ꓮꓸ ꓒꓲꓽ ꓚꓰꓽ ꓜꓲꓻ", "ɑ́ pʰì tʃè dzɨ"}, {"ꓮꓸ ꓒꓳꓽ", "ɑ́ pʰò"}, {"ꓮꓸ ꓒꓴꓺ", "ɑ́ pʰu̱"}, {"ꓮꓸ ꓒꓴꓻ ꓟꓰꓸ", "ɑ́ pʰu mé"}, {"ꓮꓸ ꓒꓵꓽ", "ɑ́ pʰỳ"}, {"ꓮꓸ ꓒꓶꓸ", "ɑ́ pʰɯ́"}, {"ꓮꓸ ꓒꓶꓼ", "ɑ́ pʰɯ̱̀"}, {"ꓮꓸ ꓓꓸ", "ɑ́ dɑ́"}, {"ꓮꓸ ꓓꓺ ꓫꓱꓽ", "ɑ́ dɑ̱ ʃø̀"}, {"ꓮꓸ ꓓꓯꓽꓰꓸ", "ɑ́ dæ̀é"}, {"ꓮꓸ ꓓꓽ", "ɑ́ dɑ̀"}, {"ꓮꓸ ꓓꓽ ꓟꓻ", "ɑ́ dɑ̀ mɑ"}, {"ꓮꓸ ꓓꓽ ꓫꓵꓸ", "ɑ́ dɑ̀ ʃɨ́"}, {"ꓮꓸ ꓓꓯꓽ ꓓꓵꓽ", "ɑ́ dæ̀ dỳ"}, {"ꓮꓸ ꓓꓲꓽ", "ɑ́ dì"}, {"ꓮꓸ ꓓꓳꓺ ꓓꓳꓺ ꓟꓺ", "ɑ́ do̱ do̱ mɑ̱"}, {"ꓮꓸ ꓓꓴꓸ", "ɑ́ dú"}, {"ꓮꓸ ꓓꓶꓸ", "ɑ́ dɯ́"}, {"ꓮꓸ ꓔꓺ", "ɑ́ tɑ̱"}, {"ꓮꓸ ꓔꓯꓸꓼ", "ɑ́ tǽæ̱̀"}, {"ꓮꓸ ꓔꓲꓸ", "ɑ́ tí"}, {"ꓮꓸ ꓔꓲꓼ", "ɑ́ tì̱"}, {"ꓮꓸ ꓔꓳꓸ", "ɑ́ tó"}, {"ꓮꓸ ꓕꓻ", "ɑ́ tʰɑ"}, {"ꓮꓸ ꓕꓽ", "ɑ́ tʰɑ̀"}, {"ꓮꓸ ꓕꓯꓻ", "ɑ́ tʰæ"}, {"ꓮꓸ ꓕꓯꓽ", "ɑ́ tʰæ̀"}, {"ꓮꓸ ꓕꓰꓻ", "ɑ́ tʰe"}, {"ꓮꓸ ꓖꓯꓽ", "ɑ́ gæ̀"}, {"ꓮꓸ ꓖꓽ ꓟꓺ", "ɑ́ gɑ̀ mɑ̱"}, {"ꓮꓸ ꓖꓰꓸ", "ɑ́ gé"}, {"ꓮꓸ ꓖꓳꓻ", "ɑ́ go"}, {"ꓮꓸ ꓖꓳꓽ ꓟꓲꓹ", "ɑ́ gò mǐ"}, {"ꓮꓸ ꓖꓳꓼ", "ɑ́ gò̱"}, {"ꓮꓸ ꓖꓴꓻ", "ɑ́ gu"}, {"ꓮꓸ ꓖꓴꓽ", "ɑ́ gù"}, {"ꓮꓸ ꓖꓶꓸ", "ɑ́ gɯ́"}, {"ꓮꓸ ꓖꓶꓺ", "ɑ́ gɯ̱"}, {"ꓮꓸ ꓖꓶꓺ ꓠꓶꓺ", "ɑ́ gɯ̱ nɯ̱"}, {"ꓮꓸ ꓖꓶꓺ ꓖꓶꓺ ꓢꓶꓽ", "ɑ́ gɯ̱ gɯ̱ sɯ̀"}, {"ꓮꓸ ꓖꓪꓻ", "ɑ́ gwɑ"}, {"ꓮꓸ ꓗꓸ ꓐꓳꓼ ꓡꓳꓺ", "ɑ́ kɑ́ bò̱ lo̱"}, {"ꓮꓸ ꓗꓸ ꓑꓱꓺ", "ɑ́ kɑ́ pø̱"}, {"ꓮꓸ ꓗꓳꓺ", "ɑ́ ko̱"}, {"ꓮꓸ ꓗꓪꓺ", "ɑ́ kwɑ̱"}, {"ꓮꓺ ꓘꓲꓺ", "ɑ̱ kʰi̱"}, {"ꓮꓸ ꓘꓳꓸ", "ɑ́ kʰó"}, {"ꓮꓸ ꓘꓴꓽ", "ɑ́ kʰù"}, {"ꓮꓸ ꓘꓶꓽ", "ɑ́ kʰɯ̀"}, {"ꓮꓸ ꓘꓪꓸ", "ɑ́ kʰwɑ́"}, {"ꓮꓸ ꓙꓱꓻ", "ɑ́ dʒø"}, {"ꓮꓸ ꓙꓳꓼ", "ɑ́ dʒò̱"}, {"ꓮꓸ ꓙꓴꓺ", "ɑ́ dʒu̱"}, {"ꓮꓸ ꓙꓵꓽ", "ɑ́ dʒɨ̀"}, {"ꓮꓸ ꓙꓪꓻ", "ɑ́ dʒwɑ"}, {"ꓮꓸ ꓚꓰꓺ", "ɑ́ tʃe̱"}, {"ꓮꓸ ꓚꓵꓹ", "ɑ́ tʃɨ̌"}, {"ꓮꓸ ꓛꓬꓺ", "ɑ́ tʃʰɑ̱"}, {"ꓮꓸ ꓛꓳꓹ", "ɑ́ tʃʰǒ"}, {"ꓮꓸ ꓛꓳꓽ", "ɑ́ tʃʰò"}, {"ꓮꓸ ꓛꓵꓸ", "ɑ́ tʃʰɨ́"}, {"ꓮꓸ ꓛꓵꓼ", "ɑ́ tʃʰɨ̱̀"}, {"ꓮꓸ ꓜꓴꓺ", "ɑ́ dzu̱"}, {"ꓮꓸ ꓜꓪꓻ", "ɑ́ dzwɑ"}, {"ꓮꓸ ꓝꓲꓸ", "ɑ́ tsɨ́"}, {"ꓮꓸ ꓝꓲꓸ ꓝꓲꓸ", "ɑ́ tsɨ́ tsɨ́"}, {"ꓮꓸ ꓝꓲꓺ", "ɑ́ tsɨ̱"}, {"ꓮꓸ ꓝꓲꓻ", "ɑ́ tsɨ"}, {"ꓮꓸ ꓞꓳꓹ", "ɑ́ tsʰǒ"}, {"ꓮꓸ ꓟꓺ", "ɑ́ mɑ̱"}, {"ꓮꓸ ꓟꓮꓲꓸ", "ɑ́ mɑ́j"}, {"ꓮꓸ ꓟꓲꓽ", "ɑ́ mì"}, {"ꓮꓸ ꓟꓰꓸ", "ɑ́ mé"}, {"ꓮꓸ ꓟꓳꓽ", "ɑ́ mò"}, {"ꓮꓸ ꓠꓺ", "ɑ́ nɑ̱"}, {"ꓮꓸ ꓠꓽ", "ɑ́ nɑ̀"}, {"ꓮꓸ ꓠꓯꓺ", "ɑ́ næ̱"}, {"ꓮꓸ ꓠꓱꓻ", "ɑ́ nø"}, {"ꓮꓸ ꓠꓳꓺ", "ɑ́ no̱"}, {"ꓮꓸ ꓠꓪꓻ", "ɑ́ nwɑ"}, {"ꓮꓸ ꓠꓬꓺ", "ɑ́ ɲɑ̱"}, {"ꓮꓸ ꓠꓬꓲꓺ", "ɑ́ ɲi̱"}, {"ꓮꓸ ꓠꓬꓲꓽ", "ɑ́ ɲì"}, {"ꓮꓸ ꓡꓸ", "ɑ́ lɑ́"}, {"ꓮꓸ ꓡꓰꓽ ꓥꓺ ꓢꓶꓽ", "ɑ́ lè ŋɑ̱ sɯ̀"}, {"ꓮꓸ ꓡꓳꓸ", "ɑ́ ló"}, {"ꓮꓸ ꓡꓳꓸˍ", "ɑ́ lóɑ̱"}, {"ꓮꓸ ꓡꓳꓺ", "ɑ́ lo̱"}, {"ꓮꓸ ꓡꓳꓼ", "ɑ́ lò̱"}, {"ꓮꓸ ꓡꓳꓼ ꓟꓰꓸ", "ɑ́ lò̱ mé"}, {"ꓮꓸ ꓡꓳꓼ ꓟꓰꓹ", "ɑ́ lò̱ mě"}, {"ꓮꓸ ꓡꓴꓼ", "ɑ́ lù̱"}, {"ꓮꓸ ꓡꓶꓸ", "ɑ́ lɯ́"}, {"ꓮꓺ ꓢꓺ", "ɑ̱ sɑ̱"}, {"ꓮꓸ ꓢꓳꓸ ꓟꓰꓸ", "ɑ́ só mé"}, {"ꓮꓸ ꓤꓽ", "ɑ́ zɑ̀"}, {"ꓮꓸ ꓥꓼ", "ɑ́ ŋɑ̱̀"}, {"ꓮꓸ ꓧꓳꓹ", "ɑ́ xǒ"}, {"ꓮꓸ ꓧꓶꓹ ꓮꓸ ꓡꓰꓼ", "ɑ́ xɯ̌ ɑ́ lè̱"}, {"ꓮꓸ ꓩꓴꓺ", "ɑ́ fu̱"}, {"ꓮꓸ ꓪꓼ ꓡꓲꓽ ꓢꓴꓲꓸ", "ɑ́ wɑ̱̀ lì súj"}, {"ꓮꓸ ꓪꓯꓼ", "ɑ́ wæ̱̀"}, {"ꓮꓸ ꓪꓰꓺ", "ɑ́ we̱"}, {"ꓮꓸ ꓪꓰꓲꓸ", "ɑ́ wéj"}, {"ꓮꓸ ꓪꓳꓼ", "ɑ́ wò̱"}, {"ꓮꓸ ꓪꓳꓼ ꓟꓺ", "ɑ́ wò̱ mɑ̱"}, {"ꓮꓸ ꓪꓴꓽ", "ɑ́ wù"}, {"ꓮꓸ ꓫꓬꓼ ꓓꓳꓸꓽ", "ɑ́ ʃɑ̱̀ dóò"}, {"ꓮꓸ ꓫꓵꓹ ꓫꓵꓽ", "ɑ́ ʃɨ̌ ʃɨ̀"}, {"ꓮꓸ ꓫꓵꓽ", "ɑ́ ʃɨ̀"}, {"ꓮꓸ ꓬꓸ", "ɑ́ jɑ́"}, {"ꓮꓸ ꓬꓲꓼ", "ɑ́ jì̱"}, {"ꓮꓸ ꓶꓼ", "ɑ́ ɣɯ̱̀"}, {"ꓮꓸ ꓭꓸ", "ɑ́ ɣɑ́"}, {"ꓮꓺ", "ɑ̱"}, {"ꓮꓺ ꓐꓺ", "ɑ̱ bɑ̱"}, {"ꓮꓺ ꓐꓲꓺ", "ɑ̱ bi̱"}, {"ꓮꓺ ꓐꓵꓺ", "ɑ̱ by̱"}, {"ꓮꓺ ꓑꓺ", "ɑ̱ pɑ̱"}, {"ꓮꓺ ꓑꓬꓺ", "ɑ̱ pjɑ̱"}, {"ꓮꓺ ꓓꓴꓽ", "ɑ̱ dù"}, {"ꓮꓺ ꓓꓴꓽ ꓢꓶꓽ", "ɑ̱ dù sɯ̀"}, {"ꓮꓺ ꓔꓯꓸ ꓛꓱꓽ", "ɑ̱ tǽ tʃʰø̀"}, {"ꓮꓺ ꓔꓳꓸ", "ɑ̱ tó"}, {"ꓮꓺ ꓖꓪꓺ", "ɑ̱ gwɑ̱"}, {"ꓮꓺ ꓗꓺ", "ɑ̱ kɑ̱"}, {"ꓮꓺ ꓗꓪꓺ", "ɑ̱ kwɑ̱"}, {"ꓮꓺ ꓙꓬꓺ", "ɑ̱ dʒɑ̱"}, {"ꓮꓺ ꓛꓬꓺ ꓡꓳꓺ ꓑꓷꓹ", "ɑ̱ tʃʰɑ̱ lo̱ pɤ̌"}, {"ꓮꓺ ꓟꓺ", "ɑ̱ mɑ̱"}, {"ꓮꓺ ꓟꓲꓺ", "ɑ̱ mi̱"}, {"ꓮꓺ ꓟꓶꓺ", "ɑ̱ mɯ̱"}, {"ꓮꓺ ꓠꓴꓽ", "ɑ̱ nù"}, {"ꓮꓺ ꓡꓺ", "ɑ̱ lɑ̱"}, {"ꓮꓺ ꓡꓲꓺ", "ɑ̱ li̱"}, {"ꓮꓺ ꓡꓳꓺ", "ɑ̱ lo̱"}, {"ꓮꓺ ꓤꓳꓺ", "ɑ̱ zo̱"}, {"ꓮꓺ ꓪꓺ ꓪꓺ", "ɑ̱ wɑ̱ wɑ̱"}, {"ꓮꓺ ꓪꓳꓺ", "ɑ̱ wo̱"}, {"ꓮꓺ ꓪꓵꓺ", "ɑ̱ wy̱"}, {"ꓮꓽ", "ɑ̀"}, {"-ꓮꓽ", "-ɑ̀"}, {"ꓮꓽ ꓐꓽ", "ɑ̀ bɑ̀"}, {"ꓮꓽ ꓐꓬꓻ", "ɑ̀ bjɑ"}, {"ꓮꓽ ꓐꓬꓺ", "ɑ̀ bjɑ̱"}, {"ꓮꓽ ꓐꓶꓽ", "ɑ̀ bɯ̀"}, {"ꓮꓽ ꓑꓹ", "ɑ̀ pɑ̌"}, {"ꓮꓽ ꓑꓴꓻ", "ɑ̀ pu"}, {"ꓮꓽ ꓒꓯꓹ", "ɑ̀ pʰæ̌"}, {"ꓮꓽ ꓒꓲꓽ", "ɑ̀ pʰì"}, {"ꓮꓽ ꓒꓴꓸ", "ɑ̀ pʰú"}, {"ꓮꓽ ꓒꓵꓽ ꓮꓺ ꓑꓺ", "ɑ̀ pʰỳ ɑ̱ pɑ̱"}, {"ꓮꓽ ꓓꓽ ꓡꓴꓸ", "ɑ̀ dɑ̀ lú"}, {"ꓮꓽ ꓓꓲꓻ", "ɑ̀ di"}, {"ꓮꓽ ꓔꓸ", "ɑ̀ tɑ́"}, {"ꓮꓽ ꓔꓳꓺ", "ɑ̀ to̱"}, {"ꓮꓽ ꓕꓯꓸˍꓽ", "ɑ̀ tʰǽɑ̀"}, {"ꓮꓽ ꓕꓰꓻ", "ɑ̀ tʰe"}, {"ꓮꓽ ꓖꓸ", "ɑ̀ gɑ́"}, {"ꓮꓽ ꓖꓺ", "ɑ̀ gɑ̱"}, {"ꓮꓽ ꓖꓽ", "ɑ̀ gɑ̀"}, {"ꓮꓽ ꓖꓳꓹ", "ɑ̀ gǒ"}, {"ꓮꓽ ꓖꓳꓻ", "ɑ̀ go"}, {"ꓮꓽ ꓘꓸ", "ɑ̀ kʰɑ́"}, {"ꓮꓽ ꓘꓽ", "ɑ̀ kʰɑ̀"}, {"ꓮꓽ ꓘꓶꓸ", "ɑ̀ kʰɯ́"}, {"ꓮꓽ ꓙꓵꓽ", "ɑ̀ dʒɨ̀"}, {"ꓮꓽ ꓚꓬꓴꓽ", "ɑ̀ tʃjù"}, {"ꓮꓽ ꓛꓱꓺ", "ɑ̀ tʃʰø̱"}, {"ꓮꓽ ꓛꓬꓽ", "ɑ̀ tʃʰɑ̀"}, {"ꓮꓽ ꓛꓬꓽ ꓧꓳꓽ", "ɑ̀ tʃʰɑ̀ xò"}, {"ꓮꓽ ꓝꓺ", "ɑ̀ tsɑ̱"}, {"ꓮꓽ ꓝꓸꓽ", "ɑ̀ tsɑ́ɑ̀"}, {"ꓮꓽ ꓝꓳꓸꓽ", "ɑ̀ tsóò"}, {"ꓮꓽ ꓞꓲꓸ ꓞꓲꓽ", "ɑ̀ tsʰɨ́ tsʰɨ̀"}, {"ꓮꓽ ꓞꓲꓹ", "ɑ̀ tsʰɨ̌"}, {"ꓮꓽ ꓞꓲꓻ", "ɑ̀ tsʰɨ"}, {"ꓮꓽ ꓞꓰꓺ", "ɑ̀ tsʰe̱"}, {"ꓮꓽ ꓟꓻ", "ɑ̀ mɑ"}, {"ꓮꓽ ꓟꓰꓻ", "ɑ̀ me"}, {"ꓮꓽ ꓟꓬꓸ", "ɑ̀ mjɑ́"}, {"ꓮꓽ ꓟꓬꓹ", "ɑ̀ mjɑ̌"}, {"ꓮꓽ ꓟꓬꓺ", "ɑ̀ mjɑ̱"}, {"ꓮꓽ ꓟꓬꓸꓽ", "ɑ̀ mjɑ́ɑ̀"}, {"ꓮꓽ ꓠꓯꓸ", "ɑ̀ nǽ"}, {"ꓮꓽ ꓠꓱꓻ", "ɑ̀ nø"}, {"ꓮꓽ ꓠꓬꓹ ꓝꓲꓺ", "ɑ̀ ɲɑ̌ tsɨ̱"}, {"ꓮꓽ ꓠꓬꓲꓹ", "ɑ̀ ɲǐ"}, {"ꓮꓽ ꓠꓬꓲꓻ", "ɑ̀ ɲi"}, {"ꓮꓽ ꓡꓻ", "ɑ̀ lɑ"}, {"ꓮꓽ ꓡꓯꓹ", "ɑ̀ læ̌"}, {"ꓮꓽ ꓡꓰꓹ", "ɑ̀ lě"}, {"ꓮꓽ ꓡꓰꓽ ꓜꓲꓻ", "ɑ̀ lè dzɨ"}, {"ꓮꓽ ꓡꓳꓹˍꓽ", "ɑ̀ lǒɑ̀"}, {"ꓮꓽ ꓡꓴꓹ", "ɑ̀ lǔ"}, {"ꓮꓽ ꓡꓶꓸˍꓽ", "ɑ̀ lɯ́ɑ̀"}, {"ꓮꓽ ꓡꓬꓸ", "ɑ̀ ljɑ́"}, {"ꓮꓽ ꓢꓲꓸ", "ɑ̀ sɨ́"}, {"ꓮꓽ ꓢꓳꓸ", "ɑ̀ só"}, {"ꓮꓽ ꓢꓳꓻ", "ɑ̀ so"}, {"ꓮꓽ ꓤꓹ ꓤꓼ", "ɑ̀ zɑ̌ zɑ̱̀"}, {"ꓮꓽ ꓤꓻ", "ɑ̀ zɑ"}, {"ꓮꓽ ꓤꓸꓽ", "ɑ̀ zɑ́ɑ̀"}, {"ꓮꓽ ꓤꓳꓽ", "ɑ̀ zò"}, {"ꓮꓽ ꓧꓪꓹ", "ɑ̀ xwɑ̌"}, {"ꓮꓽ ꓩꓴꓹ", "ɑ̀ fǔ"}, {"ꓮꓽ ꓪꓲꓸ", "ɑ̀ wí"}, {"ꓮꓽ ꓫꓱꓸ", "ɑ̀ ʃǿ"}, {"ꓮꓽ ꓫꓵꓸ ꓫꓵꓺ", "ɑ̀ ʃɨ́ ʃɨ̱"}, {"ꓮꓽ ꓫꓵꓹ", "ɑ̀ ʃɨ̌"}, {"ꓮꓽ ꓬꓹ ꓤꓼ", "ɑ̀ jɑ̌ zɑ̱̀"}, {"ꓮꓽ ꓬꓲꓼ ꓟꓺ", "ɑ̀ jì̱ mɑ̱"}, {"ꓮꓽ ꓬꓳꓹ", "ɑ̀ jǒ"}, {"ꓮꓽ ꓮꓹ", "ɑ̀ ɑ̌"}, {"ꓮꓼ", "ɑ̱̀"}, {"ꓮꓼ ꓝꓴꓸ ꓤꓲꓻ ꓘꓴꓻ", "ɑ̱̀ tsú zɨ kʰu"}, {"ꓮꓼ ꓮꓹ", "ɑ̱̀ ɑ̌"}, {"ꓮꓸꓽ", "ɑ́ɑ̀"}, {"ꓮꓶꓸ", "ɯ́"}, {"ꓮꓶꓼ", "ɯ̱̀"}, {"ꓮꓪꓹ ꓡꓸ ꓡꓸ", "ɑ̌w lɑ́ lɑ́"}, {"ꓯꓹ", "æ̌"}, {"ꓯꓹ ꓡꓯꓹ", "æ̌ læ̌"}, {"ꓯꓺ", "æ̱"}, {"ꓯꓻ", "æ"}, {"ꓯꓼ", "æ̱̀"}, {"ꓯꓼ ꓯꓹ", "æ̱̀ æ̌"}, {"ꓰꓸ", "é"}, {"ꓰꓹ ꓰꓽ", "ě è"}, {"ꓰꓼ ꓢꓴꓲꓼ ꓕꓰꓺ", "è̱ sù̱j tʰe̱"}, {"ꓰꓺ ꓗꓼ", "e̱ kɑ̱̀"}, {"ꓰꓼ", "è̱"}, {"ꓰꓼ ꓑꓳꓺ", "è̱ po̱"}, {"ꓰꓼ ꓰꓹ", "è̱ ě"}, {"ꓰꓸꓽ", "éè"}, {"ꓱꓸ", "ǿ"}, {"ꓱꓹ", "ø̌"}, {"ꓱꓺ", "ø̱"}, {"ꓱꓽ", "ø̀"}, {"ꓱꓽ ꓝꓲꓺ", "ø̀ tsɨ̱"}, {"ꓱꓽ ꓠꓬꓲꓺ", "ø̀ ɲi̱"}, {"ꓱꓼ", "ø̱̀"}, {"ꓱꓸꓽ", "ǿø̀"}, {"ꓲꓸ", "í"}, {"ꓲꓹ", "ǐ"}, {"ꓲꓺ", "i̱"}, {"ꓲꓽ ꓛꓵꓽ", "ì tʃʰɨ̀"}, {"ꓲꓼ", "ì̱"}, {"ꓲꓼ ꓑꓳꓺ", "ì̱ po̱"}, {"ꓳꓸ", "ó"}, {"ꓳꓹ", "ǒ"}, {"ꓳꓺ", "o̱"}, {"ꓳꓺ ꓟꓺ ꓝꓸ", "o̱ mɑ̱ tsɑ́"}, {"ꓳꓽ ꓳꓽ", "ò ò"}, {"ꓳꓼ", "ò̱"}, {"ꓳꓼ ꓳꓹ", "ò̱ ǒ"}, {"ꓳꓼ ꓳꓽ", "ò̱ ò"}, {"ꓴꓸ ꓴꓽ", "ú ù"}, {"ꓴꓸ ꓬꓳꓽ", "ú jò"}, {"ꓴꓺ ꓠꓬꓹ ꓟꓺ", "u̱ ɲɑ̌ mɑ̱"}, {"ꓴꓻ ꓴꓸ", "u ú"}, {"ꓵꓺ", "y̱"}, {"ꓶꓸ", "ɣɯ́"}, {"ꓶꓹ", "ɣɯ̌"}, {"ꓶꓹ ꓠꓶꓼ", "ɣɯ̌ nɯ̱̀"}, {"ꓶꓺ", "ɣɯ̱"}, {"ꓶꓻ", "ɣɯ"}, {"ꓶꓻ ꓦꓻ", "ɣɯ h̃ɑ"}, {"ꓶꓻ ꓡꓯꓼ", "ɣɯ læ̱̀"}, {"ꓶꓽ", "ɣɯ̀"}, {"ꓶꓽ ꓧꓶꓺ", "ɣɯ̀ xɯ̱"}, {"ꓶꓽ ꓡꓶꓽ", "ɣɯ̀ lɯ̀"}, {"ꓶꓼ", "ɣɯ̱̀"}, {"ꓶꓼ ꓡꓶꓼ", "ɣɯ̱̀ lɯ̱̀"}, {"ꓶꓼ ꓶꓹ", "ɣɯ̱̀ ɣɯ̌"}, {"ꓷꓸ ꓬꓰꓺ", "ɣɤ́ je̱"}, {"ꓷꓹ", "ɣɤ̌"}, {"ꓭꓸ", "ɣɑ́"}, {"ꓭꓹ", "ɣɑ̌"}, {"ꓭꓹ ꓡꓯꓽ ꓡꓯꓽ", "ɣɑ̌ læ̀ læ̀"}, {"ꓭꓺ ꓭꓺ", "ɣɑ̱ ɣɑ̱"}, {"ꓭꓺ ꓟꓺ", "ɣɑ̱ mɑ̱"}, {"ꓭꓽ ꓡꓯꓽ ꓡꓯꓽ", "ɣɑ̀ læ̀ læ̀"}, {"ꓭꓼ", "ɣɑ̱̀"}, {"ꓭꓳ", "ɣo"}, } self:iterate(examples, "check_tr") end return tests draa9c189wtz31jg8rwwoboxkfiqvkx মডিউল:Lydi-translit/testcases 828 168600 510152 2026-06-07T12:45:29Z RedminBot 9553 [[en:Module:Lydi-translit/testcases]] থেকে আনা হলো 510152 Scribunto text/plain return require("Module:transliteration module testcases")( require('Module:Lydi-translit').tr, { { '𐤲𐤠𐤷𐤪𐤷𐤰𐤳', 'qaλmλuš' }, { '𐤶𐤫𐤠', 'ẽna' }, { '𐤨𐤬𐤱𐤰', 'kofu' }, { '𐤡𐤭𐤥𐤵𐤮', 'prwãs' }, { '𐤡𐤠𐤯𐤯𐤬𐤳', 'pattoš' }, { '𐤠𐤩𐤰𐤮', 'alus' }, { '𐤠𐤠𐤭𐤠', 'aara' }, { '𐤡𐤦𐤭𐤠', 'pira' }, }, "Lydi", "xld" ) engb4pcv0eibdxoj3ygzo0ysq8zk3y0 মডিউল:Mahj-translit/testcases 828 168601 510153 2026-06-07T12:45:30Z RedminBot 9553 [[en:Module:Mahj-translit/testcases]] থেকে আনা হলো 510153 Scribunto text/plain -- Unit tests for [[Module:Mahj-translit]]. Refresh page to run tests return require 'Module:transliteration module testcases'( 'Mahj-translit', { { "𑅬𑅱𑅛𑅧𑅑", "mhjni" }, { "𑅬𑅒𑅕𑅧𑅬", "muknm" }, { "𑅐𑅯𑅮", "avl" }, { "𑅐𑅗𑅭", "agr" }, { "𑅒𑅨𑅬", "upm" }, { "𑅑𑅧𑅥𑅒𑅭", "indur" }, { "𑅛𑅑𑅢", "jiṇ" }, { "𑅣𑅓𑅮𑅳", "teḷ" }, { "𑅰𑅳𑅔𑅧𑅒", "ṣonau" }, }, "Mahj", "mwr" ) 7y2lbhpldbeai9986fw24l28tjm4umb মডিউল:Mand-translit 828 168602 510154 2026-06-07T12:45:30Z RedminBot 9553 [[en:Module:Mand-translit]] থেকে আনা হলো 510154 Scribunto text/plain -- Author: Saam-andar local export = {} local m_str_utils = require("Module:string utilities") local gcodepoint = m_str_utils.gcodepoint local rfind = m_str_utils.find local rsubn = m_str_utils.gsub local rmatch = m_str_utils.match local rsplit = m_str_utils.split local U = m_str_utils.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end -- Mandaic Unicode block: U+0840–U+085F local zwnj = U(0x200C) -- zero-width non-joiner local consonants = "ࡁࡂࡃࡄࡆࡇࡈࡊࡋࡌࡍࡎࡐࡑࡒࡓࡔࡕࡖࡗࡘ" local consonant_pattern = "[" .. consonants .. "]" local vowels1 = "ࡀࡅࡉ" local letters = "ࡐࡇࡏࡅࡈࡕࡓࡖࡔࡒࡋࡊࡉࡄࡂࡗࡃࡎࡀࡌࡍࡁࡘࡑࡆ" local gemination_mark = U(0x085B) -- ◌࡛ MANDAIC GEMINATION MARK local affriction_mark = U(0x0859) -- ◌࡙ MANDAIC AFFRICTION MARK local vocalization_mark = U(0x085A) -- ◌࡚ MANDAIC VOCALIZATION MARK -- mapping local tt = { -- consonants ["ࡁ"] = "b", -- MANDAIC LETTER AB (beth) ["ࡂ"] = "g", -- MANDAIC LETTER AG (gimel) ["ࡃ"] = "d", -- MANDAIC LETTER AD (daleth) ["ࡄ"] = "h", -- MANDAIC LETTER AH (he) ["ࡆ"] = "z", -- MANDAIC LETTER AZ (zayin) ["ࡈ"] = "ṭ", -- MANDAIC LETTER ATT (teth) ["ࡊ"] = "k", -- MANDAIC LETTER AK (kaph) ["ࡋ"] = "l", -- MANDAIC LETTER AL (lamedh) ["ࡌ"] = "m", -- MANDAIC LETTER AM (mem) ["ࡍ"] = "n", -- MANDAIC LETTER AN (nun) ["ࡎ"] = "s", -- MANDAIC LETTER AS (semkath) ["ࡐ"] = "p", -- MANDAIC LETTER AP (pe) ["ࡑ"] = "ṣ", -- MANDAIC LETTER ASZ (sadhe) ["ࡒ"] = "q", -- MANDAIC LETTER AQ (qoph) ["ࡓ"] = "r", -- MANDAIC LETTER AR (resh) ["ࡔ"] = "š", -- MANDAIC LETTER ASH (shin) ["ࡕ"] = "t", -- MANDAIC LETTER AT (taw) ["ࡖ"] = "ḏ-", -- MANDAIC LETTER DUSHENNA ["ࡗ"] = "kḏ", -- MANDAIC LETTER KAD ["ࡘ"] = "ʕ", -- MANDAIC LETTER AIN -- Vowels ["ࡀ"] = "a", -- MANDAIC LETTER HALQA (aleph) ["ࡅ"] = "u", -- MANDAIC LETTER USHENNA (waw) ["ࡉ"] = "i", -- MANDAIC LETTER AKSA (yodh) ["ࡏ"] = "ʿ", -- MANDAIC LETTER IN (ayin) ["ࡇ"] = "ẖ", -- MANDAIC LETTER IT (heth) -- Punctuation ["࡞"] = ".", -- MANDAIC PUNCTUATION ["ـ"] = "-", -- tatweel/kashida ["،"] = ",", ["؛"] = ";", ["؟"] = "?", ["«"] = '"', ["»"] = '"', [zwnj] = "-", } -- Main function function export.tr(text, lang, sc, options) if not text or text == "" then return nil end if type(text) == "table" then local function f(x) return (x ~= "") and x or nil end text, lang, sc = f(text.args[1]), f(text.args[2]), f(text.args[3]) options = text.args[4] and {} or nil end -- Only process if script is Mandaic if sc and sc ~= "Mand" then return nil end local preprocessing = { -- gemination {"([" .. consonants .. "])" .. gemination_mark, "%1" .. U(0x0323)}, {"([" .. consonants .. "])" .. affriction_mark, "%1" .. U(0x0324)}, {"([" .. vowels1 .. "])" .. vocalization_mark, "%1" .. U(0x0331)}, } -- Apply preprocessing for _, sub in ipairs(preprocessing) do text = rsub(text, sub[1], sub[2]) end text = rsubn(text, ".", function(char) return tt[char] or char end) return text end return export shk4obdo1meg3acgazqt2zosb6y34fl মডিউল:Mand-translit/testcases 828 168603 510155 2026-06-07T12:45:31Z RedminBot 9553 [[en:Module:Mand-translit/testcases]] থেকে আনা হলো 510155 Scribunto text/plain -- Refresh page to run tests. local tests = require('Module:UnitTests') local Mand_translit = require('Module:Mand-translit') local full_link = require('Module:links').full_link local myz = require('Module:languages').getByCode('myz') local rlm = require("Module:string/char")(0x200F) -- right-to-left mark local function link(word) return full_link{ term = word, lang = myz, tr = "-" } end function tests:do_test_translit(mandaic, expected) local actual = Mand_translit.tr(mandaic, 'myz', 'Mand') self:equals(mandaic, actual, expected) end function tests:test_translit_mandaic() local examples = { {"ࡏࡉࡍࡂࡋࡉࡆࡉࡀ", "ʿinglizia"}, {"ࡍࡀࡆࡃࡉࡊ", "nazdik"}, {"ࡏࡅࡓࡀࡔࡋࡀࡌ", "ʿurašlam"}, {"ࡊࡋࡀࡕࡀ", "klata"}, {"ࡄࡀࡈࡀࡉࡉࡀ", "haṭaiia"}, {"ࡖࡍࡐࡀ࡚ࡒࡕ","ḏ-npa̱qt"}, {"ࡑࡅ࡚ࡐ࡙ࡓࡀ", "ṣu̱p̤ra"}, } self:iterate(examples, "do_test_translit") end return tests 4rqzk3ffxhgxyud8kw5hsp69n2ggn5y মডিউল:Modi-translit/testcases 828 168604 510156 2026-06-07T12:45:32Z RedminBot 9553 [[en:Module:Modi-translit/testcases]] থেকে আনা হলো 510156 Scribunto text/plain -- Unit tests for [[Module:Modi-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local modi_translit = require('Module:Modi-translit') --TO DO function tests:do_test_translit(modi, roman, xlit) self:equals('<span class="Modi" lang="omr">[[' .. modi .. '#Modi|' .. modi .. ']]</span>', modi_translit.tr(modi, 'omr', 'Modi'), roman) end function tests:test_translit_modi() local examples = { { '𑘟𑘹𑘪𑘻', 'devo' }, { '𑘤𑘲𑘕', 'bīja' }, { '𑘤𑘲𑘕𑘰𑘽', 'bījāṃ' }, { '𑘤𑘲𑘕𑘹𑘽', 'bījeṃ'}, { '𑘠𑘳𑘽', 'dhuṃ' }, { '𑘥𑘰𑘽𑘤𑘰', 'bhāṃbā' }, { '𑘁𑘮', 'āha' }, { '𑘦𑘼', 'mau' }, { '𑘡𑘚𑘜𑘹', 'naḍaṇe' }, { '𑘕𑘿𑘗𑘰𑘡𑘹𑘫𑘿𑘪𑘨', 'jñāneśvara' }, { '𑘥𑘿𑘨𑘳𑘩𑘝𑘰𑘽 𑘦𑘰𑘐𑘱𑘩𑘲𑘎𑘚𑘹𑙁 𑘦𑘎𑘰𑘨𑘰𑘓𑘹𑘽𑘓𑘱 𑘁𑘽𑘐 𑘡𑘚𑘹𑙁', 'bhrulatāṃ māgilīkaḍe. makārāceṃci āṃga naḍe.' }, { '𑘨𑘽𑘥𑘰', 'raṃbhā' }, } self:iterate(examples, 'do_test_translit') end return tests 61y7n4p77e51etuhgh6hy6yrlrpiffx মডিউল:Mong-translit/testcases 828 168605 510157 2026-06-07T12:45:32Z RedminBot 9553 [[en:Module:Mong-translit/testcases]] থেকে আনা হলো 510157 Scribunto text/plain -- Unit tests for [[Module:Mong-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local mong_translit = require('Module:Mong-translit') --TO DO function tests:do_test_translit(mong, roman, xlit) self:equals('<span class="Mong" lang="mon">[[' .. mong .. '#Mong|' .. mong .. ']]</span>', mong_translit.tr(mong, 'mon', 'Mong'), roman) end function tests:test_translit_mong() local examples = { { 'ᠭᠼ', 'gc' }, { 'ᠭᠱᠠᠨ', 'gšan' }, { 'ᠭᠬᠢᠷ', 'gkir' }, { 'ᡀᠠᠭᠪᠠ', 'lhaɣba'}, { 'ᠥᠭᠭᠦᠭᠰᠡᠨ', 'öggügsen' }, { 'ᠴᠠᠭ', 'čaɣ' }, { 'ᠴᠡᠭ', 'čeg' }, { 'ᠢᠭ', 'ig' }, { 'ᠪᠠᠭ᠎ᠠ', 'baɣ-a' }, { 'ᠵᠠᠷᠯᠢᠭ', 'ǰarliɣ' }, { 'ᠴᠡᠷᠢᠭ', 'čerig' }, } self:iterate(examples, 'do_test_translit') end return tests 4pwjbuklsudpo7wfsqauj2b4tm8f218 মডিউল:Mult-translit/testcases 828 168606 510158 2026-06-07T12:45:33Z RedminBot 9553 [[en:Module:Mult-translit/testcases]] থেকে আনা হলো 510158 Scribunto text/plain -- Unit tests for [[Module:Mult-translit]]. Refresh page to run tests return require 'Module:transliteration module testcases'( 'Mult-translit', { { "𑊀𑊖", "at", "[[اتے]]" }, { "𑊛𑊌", "pj" }, { "𑊥𑊣𑊠𑊖", "slmt" }, { "𑊦𑊤", "hv" }, { "𑊈𑊕", "ghṇ" }, { "𑊟𑊁", "bhi" }, { "𑊐𑊄", "ṭk" }, { "𑊊𑊘", "cd" }, { "𑊋𑊝𑊢", "chbr" }, { "𑊚𑊗", "nth" }, { "𑊢𑊃𑊔", "reḍh" }, { "𑊆𑊌𑊏𑊅𑊓𑊜", "gjñkhḏph" }, { "𑊒𑊂", "ḍu" }, }, "Mult", "skr" ) 7nx8y3o0x38f5ianptygx9e32fr40sc মডিউল:Newa-Deva-translit/testcases 828 168607 510159 2026-06-07T12:45:34Z RedminBot 9553 [[en:Module:Newa-Deva-translit/testcases]] থেকে আনা হলো 510159 Scribunto text/plain -- Unit tests for [[Module:Newa-Deva-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local transliterate = require('Module:Newa-Deva-translit').tr local function tag(text) return '<span class="Deva" lang="new">' .. text .. '</span>' end local options = { display = tag } --TO DO function tests:do_test_translit(newa, deva, xlit) self:equals('<span class="Newa" lang="new">[[' .. newa .. '#Newar|' .. newa .. ']]</span>', transliterate(newa, 'deva', 'Newa'), deva, options) end function tests:test_translit_deva() local examples = { { '𑐤', 'न्ह' }, } self:iterate(examples, 'do_test_translit') end return tests hvngvq8qi2ouzjg2szja8ueya1aq186 মডিউল:Osge-translit 828 168608 510160 2026-06-07T12:45:35Z RedminBot 9553 [[en:Module:Osge-translit]] থেকে আনা হলো 510160 Scribunto text/plain local export = {} local m_str_utils = require("Module:string utilities") local m_table = require("Module:table") -- Import libraries local U = require("Module:string/char") local gsub = m_str_utils.gsub local len = m_str_utils.len local sub = m_str_utils.sub local decomp = mw.ustring.toNFD local recomp = mw.ustring.toNFC local upper = m_str_utils.upper -- Apply gsub() repeatedly until no change local function gsub_repeatedly(term, foo, bar) while true do local new_term = gsub(term, foo, bar) if new_term == term then return term end term = new_term end end -- Check if given character is uppercase local function is_upper(char) return char == upper(char) end local letters = { -- general table ["𐒰"]="A", ["𐒱"]="Ai", ["𐒲"]="Aį", ["𐒳"]="Ə", ["𐒴"]="Br", ["𐒵"]="Č", ["𐒶"]="Hč", ["𐒷"]="E", ["𐒸"]="Eį", ["𐒹"]="H", ["𐒺"]="Hy", ["𐒻"]="I", ["𐒼"]="K", ["𐒽"]="Hk", ["𐒾"]="Ky", ["𐒿"]="L", ["𐓀"]="M", ["𐓁"]="N", ["𐓂"]="O", ["𐓃"]="Oį", ["𐓄"]="P", ["𐓅"]="Hp", ["𐓆"]="S", ["𐓇"]="Š", ["𐓈"]="T", ["𐓉"]="Ht", ["𐓊"]="C", ["𐓋"]="Hc", ["𐓌"]="Ch", ["𐓍"]="Ð", ["𐓎"]="U", ["𐓏"]="W", ["𐓐"]="X", ["𐓑"]="Ɣ", ["𐓒"]="Z", ["𐓓"]="Ž", ["𐓘"]="a", ["𐓙"]="ai", ["𐓚"]="aį", ["𐓛"]="ə", ["𐓜"]="br", ["𐓝"]="č", ["𐓞"]="hč", ["𐓟"]="e", ["𐓠"]="eį", ["𐓡"]="h", ["𐓢"]="hy", ["𐓣"]="i", ["𐓤"]="k", ["𐓥"]="hk", ["𐓦"]="ky", ["𐓧"]="l", ["𐓨"]="m", ["𐓩"]="n", ["𐓪"]="o", ["𐓫"]="oį", ["𐓬"]="p", ["𐓭"]="hp", ["𐓮"]="s", ["𐓯"]="š", ["𐓰"]="t", ["𐓱"]="ht", ["𐓲"]="c", ["𐓳"]="hc", ["𐓴"]="ch", ["𐓵"]="ð", ["𐓶"]="u", ["𐓷"]="w", ["𐓸"]="x", ["𐓹"]="ɣ", ["𐓺"]="z", ["𐓻"]="ž", [U(0x0358)]=U(0x0328), -- combining dot above -> combining ogonek (nasalisation) [U(0x030B)]=U(0x0304)..U(0x0301) -- combining double acute accent -> combining macron + combining acute accent (long high tone) } local accents = U(0x0301) .. U(0x0304) .. U(0x030B) -- list of combining diacritics local letters_reversed = m_table.invert(letters) -- reverse transliteration table local digraphs = "" -- generate list of osage letters that represent digraphs (uppercase only) local digraphs_reversed = {} -- generate list of latin letters that represent digraphs for k, v in pairs(letters) do if len(v) > 1 then if is_upper(k) then digraphs = digraphs .. k end table.insert(digraphs_reversed, v) end end function export.tr(text, lang, sc) -- handle vowel and other uppercase digraphs first text = gsub(text, "([" .. digraphs .. "𐓙𐓚𐓠𐓫])([" .. accents .. "]?)(.?)", function(d, a, d_next) -- run multiple times to catch all instances if is_upper(d_next) then return upper(sub(letters[d], 1, 1) .. a .. sub(letters[d], 2)) .. d_next -- place diacritics in between for vowels end return sub(letters[d], 1, 1) .. a .. sub(letters[d], 2) .. d_next end) -- move combining dot above before other diacritics text = gsub(text, "([" .. accents .. "])" .. U(0x0358), U(0x0358) .. "%1") -- then substitute all other letters return recomp(gsub(text, ".", letters)) end function export.tr_reverse(text) -- decompose letters (excluding letters with caron) text = gsub(text, "([^ČčŠšŽž]+)", function(v) return decomp(v) end) -- handle digraphs first text = gsub(text, "([AEOaeo])([" .. accents .. "]*)[Ii](" .. U(0x0328) .. "?)", function(v, a, n) -- catch any diacritics in between vowel digraphs if n then -- for nasalised vowels return letters_reversed[v .. "į"] .. a end return letters_reversed[v .. "i"] .. a -- for other vowels end) for _, v in ipairs(digraphs_reversed) do -- change uppercase second letter to lowercase for remaining digraphs local match_pattern = sub(v, 1, 1) .. "[" .. sub(v, 2, 2) .. upper(sub(v, 2, 2)) .. "]" text = gsub_repeatedly(text, match_pattern, letters_reversed[v]) -- run multiple times to catch all instances end -- move combining ogonek after other diacritics text = gsub(text, "([" .. accents .. "]+)" .. U(0x0358), U(0x0358) .. "%1") -- macron + acute accent -> double acute accent text = gsub(text, U(0x0301) .. U(0x0304), U(0x0304) .. U(0x0301)) -- swap to catch both orders text = gsub(text, U(0x0304) .. U(0x0301), letters_reversed) -- then substitute all other letters return recomp(gsub(text, ".", letters_reversed)) end return export mlczxmd96ex67uaumw23bx3i9n7x5n7 মডিউল:Ougr-translit 828 168609 510161 2026-06-07T12:45:35Z RedminBot 9553 [[en:Module:Ougr-translit]] থেকে আনা হলো 510161 Scribunto text/plain local export = {} local m_str_utils = require("Module:string utilities") local U = m_str_utils.char local ougr_combining_dot_above = U(0x10F82) local ougr_combining_dot_below = U(0x10F83) local ougr_combining_two_dots_above = U(0x10F84) local ougr_combining_two_dots_below = U(0x10F85) local ougr_punctuation_two_dots = U(0x10F88) local combining_dot_above = U(0x0307) local combining_dot_below = U(0x0323) local combining_diaeresis_above = U(0x0308) local combining_diaeresis_below = U(0x0324) local tt = { ["𐽰"] = "ʾ", ["𐽼"] = "p", ["𐽽"] = "c", ["𐽸"] = "d", ["𐽸𐾂"] = "ḍ", ["𐾀"] = "t", ["𐽷"] = "k", ["𐽲"] = "q", ["𐽱"] = "β", ["𐽳"] = "w", ["𐽴"] = "z", ["𐽵"] = "x", ["𐽶"] = "y", ["𐽹"] = "m", ["𐽺"] = "n", ["𐽻"] = "s", ["𐽾"] = "r", ["𐽿"] = "š", ["𐾁"] = "l", [ougr_combining_dot_above] = combining_dot_above, [ougr_combining_dot_below] = combining_dot_below, [ougr_combining_two_dots_above] = combining_diaeresis_above, [ougr_combining_two_dots_below] = combining_diaeresis_below, [ougr_punctuation_two_dots] = "", } function export.tr(text, lang, sc) if not sc then sc = require("Module:languages").getByCode(lang):findBestScript(text):getCode() end if sc ~= "Ougr" then text = nil else text = mw.ustring.gsub(text, '.', tt) end return text end return export k30l5ferhsen8q31iv3bx8z2ygf39c9 মডিউল:Phli-translit/testcases 828 168610 510162 2026-06-07T12:45:36Z RedminBot 9553 [[en:Module:Phli-translit/testcases]] থেকে আনা হলো 510162 Scribunto text/plain return require "Module:transliteration module testcases"( require "Module:Phli-translit".tr, { 'Words', { "𐭮𐭯𐭠𐭧", "spʾḥ" }, 'Numbers', { "𐭾", "100" }, --[[ Copy this to add more examples: { "", "" }, --]] }, "Phli", "pal") ehmyf68afsb9dp5gphnq47iplgfg0qd মডিউল:Prti-translit/testcases 828 168611 510163 2026-06-07T12:45:37Z RedminBot 9553 [[en:Module:Prti-translit/testcases]] থেকে আনা হলো 510163 Scribunto text/plain --[=[ Unit tests for [[Module:Prti-translit]]. ]=] return require("Module:transliteration module testcases")( require('Module:Prti-translit').tr, { 'Script', { '𐭌𐭆𐭃𐭉𐭆𐭍', 'mzdyzn'}, { '𐭔𐭇𐭉𐭐𐭅𐭇𐭓', 'šḥypwḥr' }, { '𐭀𐭃𐭉𐭅𐭓𐭐𐭉', 'ʾdywrpy' }, { '𐭂𐭓𐭌𐭀𐭍𐭉𐭀 𐭇𐭔𐭕𐭓', 'grmʾnyʾ ḥštr' }, { '𐭍𐭓𐭉𐭎𐭇𐭅', 'nrysḥw' }, 'Numerals', { '𐭝𐭝𐭝𐭝𐭛', '84' }, }, 'Prti', 'xpr' ) 6rj14m3w6r9u2w0y4ql0fx1o14hy87z মডিউল:Rohg-translit/testcases 828 168612 510164 2026-06-07T12:45:37Z RedminBot 9553 [[en:Module:Rohg-translit/testcases]] থেকে আনা হলো 510164 Scribunto text/plain -- Unit tests for [[Module:Rohg-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local Rohg_translit = require('Module:Rohg-translit') function tests:do_test_translit(rohg, roman, comment) self:equals('<span class="Rohg" lang="rhg">[[' .. mw.ustring.gsub(rohg, "%+", "") .. '#Rohingya|' .. mw.ustring.gsub(rohg, "%+", "") .. ']]</span>', Rohg_translit.tr(rohg, 'rhg', 'Rohg'), roman, { comment = comment }) end function tests:test_translit_rohingya() self:do_test_translit('𐴉𐴟𐴌𐴝𐴕', 'furan') self:do_test_translit('𐴁𐴡𐴒𐴝', 'boga') self:do_test_translit('𐴇𐴞𐴥𐴘𐴝𐴓', 'híiyal') self:do_test_translit('𐴀𐴡𐴥𐴘𐴧𐴠', 'óoyye') end return tests ssnsi3xynfk166eaeelz9ca59ai1ajb মডিউল:Samr-translit/testcases 828 168613 510165 2026-06-07T12:45:38Z RedminBot 9553 [[en:Module:Samr-translit/testcases]] থেকে আনা হলো 510165 Scribunto text/plain -- Unit tests for [[Module:Samr-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local Samr_translit = require('Module:Samr-translit') local m_links = require('Module:links') local lang = require('Module:languages').getByCode('sam') --TO DO function tests:do_test_translit(samr, roman, xlit) self:equals(m_links.full_link { lang = lang, term = samr, tr = '-' }, Samr_translit.tr(samr, 'sam', 'Samr'), roman) end function tests:test_translit_samaritan() local examples = { { 'ࠔࠢࠋࠫࠌ', 'šâlom' }, { 'ࠇࠟࠅ࠘࠙ࠠࠄ', 'ḥå̂bbåh' }, { 'ࠌࠪࠚࠥࠎࠬࠐࠟࠓࠪࠉ', 'miỹăsfå̂riy' }, { 'ࠌࠪࠄࠛࠟࠇࠝࠋࠠࠊ', 'mihỹå̂ḥelåk' }, { 'ࠀࠗࠇࠉࠊ', 'ʾʿḥyk' }, { 'ࠇࠖࠣࠉࠠࠄ', 'ḥʿayåh' }, { 'ࠄࠠࠨࠍࠬࠔࠝࠌ', 'håinšem' }, { 'ࠀࠝࠦࠌࠝࠓ', 'ʾeumer' }, { 'ࠨࠍࠔࠪࠉ', 'inšiy' }, } self:iterate(examples, 'do_test_translit') end return tests mhf6rm8p59b6g8eyj5tveb85ddzqxff মডিউল:Sarb-translit/testcases 828 168614 510166 2026-06-07T12:45:39Z RedminBot 9553 [[en:Module:Sarb-translit/testcases]] থেকে আনা হলো 510166 Scribunto text/plain return require "Module:transliteration module testcases"( require "Module:Sarb-translit".tr, { { "𐩱𐩫𐩪𐩥𐩩", "ʾkswt" }, { "𐩠𐩧𐩥𐩺", "hrwy" }, { "𐩹𐩩𐩢𐩣𐩺𐩣", "ḏtḥmym" }, { "𐩣𐩡𐩫𐩩𐩪𐩨𐩱", "mlktsbʾ" }, { "𐩫𐩥𐩫𐩨", "kwkb" }, { "𐩧𐩢𐩨𐩩", "rḥbt" }, { "𐩦𐩣𐩪𐩣", "šmsm" }, { "𐩪𐩨𐩡𐩩", "sblt" }, { "𐩬𐩴𐩦", "ngš" }, }, "Sarb", "sem-srb") bpl84c62hj5975f2mccat0qhhbervve মডিউল:Shrd-translit/testcases 828 168615 510167 2026-06-07T12:45:39Z RedminBot 9553 [[en:Module:Shrd-translit/testcases]] থেকে আনা হলো 510167 Scribunto text/plain -- Unit tests for [[Module:shrd-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local shrd_translit = require('Module:Shrd-translit') local full_link = require('Module:links').full_link local sa = require('Module:languages').getByCode('sa') --TO DO function tests:do_test_translit(sharada, roman) self:equals(sharada, shrd_translit.tr(sharada, 'sa', 'Shrd'), roman) end function tests:test_translit_sharada() local examples = { {'𑆮𑆳𑆑𑇀', 'vāk'}, {'𑆮𑆳𑆑', 'vāka'}, {'𑆃𑆢𑆸𑆰𑇀𑆛', 'adṛṣṭa'}, {'𑆱𑆾𑇁𑆲𑆩𑇀', 'so’ham'}, {'𑆢𑆶𑆂𑆒', 'duḥkha' }, {'𑆃𑆑𑇀𑆒𑆅', 'akkhaï' }, } self:iterate(examples, "do_test_translit") end return tests hwr8z5uway6k8h7s3pgiodprjh6uu5m মডিউল:Sind-translit/testcases 828 168616 510168 2026-06-07T12:45:41Z RedminBot 9553 [[en:Module:Sind-translit/testcases]] থেকে আনা হলো 510168 Scribunto text/plain -- Unit tests for [[Module:Sind-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local sind_translit = require('Module:Sind-translit') --TO DO function tests:do_test_translit(sind, roman, xlit) self:equals('<span class="Sind" lang="sd">[[' .. sind .. '#Sind|' .. sind .. ']]</span>', sind_translit.tr(sind, 'sd', 'Sind'), roman) end function tests:test_translit_sind() local examples = { { '𑋝𑋡𑋟𑋐𑋢', 'sindhī' }, { '𑋝𑋡𑋑𑋪𑋐𑋢', 'sindhī' }, { '𑋖𑋠𑊿𑋧', 'bhāṅo' }, { '𑋗𑋠𑋚𑋣', 'mālu' }, { '𑋂𑋥𑊺𑋧', 'jeko' }, { '𑋗𑋥𑋟', 'mẽ' }, { '𑊷𑋟', 'a͠i' }, { '𑊻𑋩𑋔𑋙', 'xabara' }, } self:iterate(examples, 'do_test_translit') end return tests 748oh5zqdvhjcqkzlno3oxp3mckkuq6 মডিউল:Sund-translit 828 168617 510169 2026-06-07T12:45:42Z RedminBot 9553 [[en:Module:Sund-translit]] থেকে আনা হলো 510169 Scribunto text/plain local export = {} local consonants = { ['ᮊ']='k', ['ᮌ']='g', ['ᮍ']='ng', ['ᮎ']='c', ['ᮏ']='j', ['ᮑ']='ny', ['ᮒ']='t', ['ᮓ']='d', ['ᮔ']='n', ['ᮕ']='p', ['ᮘ']='b', ['ᮙ']='m', ['ᮚ']='y', ['ᮛ']='r', ['ᮜ']='l', ['ᮝ']='w', ['ᮞ']='s', ['ᮠ']='h', ['ᮖ']='f', ['ᮋ']='q', ['ᮗ']='v', ['ᮟ']='x', ['ᮐ']='z', ['ᮮ']='kh', ['ᮯ']='sy', } local diacritics = { ['ᮤ']= 'i' , ['ᮥ']='u' , ['ᮦ']='é' , ['ᮧ']='o' , ['ᮨ']='e' , ['ᮩ']='eu' , ['ᮺ']='-a' , ['᮫']='' , ['᮪']='' , } local special = { ['ᮬ']='m' , ['ᮭ']='w' , ['ᮡ']='y' , ['ᮢ']='r' , ['ᮣ']='l' , } local nonconsonants = { -- vowels ['ᮃ']='a' , ['ᮆ']='é' , ['ᮄ']='i' , ['ᮇ']='o' , ['ᮅ']='u' , ['ᮈ']='e' , ['ᮉ']='eu' , ['ᮻ']='reu' , ['ᮼ']='leu' , -- aditional characters ['|']='', -- digit pipe bar ['ᮀ']='ng', ['ᮁ']='r', ['ᮂ']='h', ['ᮾ']='k', ['ᮿ']='m', -- digits ['᮰'] = '0', ['᮱'] = '1', ['᮲'] = '2', ['᮳'] = '3', ['᮴'] = '4', ['᮵'] = '5', ['᮶'] = '6', ['᮷'] = '7', ['᮸'] = '8', ['᮹'] = '9', } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '([ᮊᮌᮍᮎᮏᮑᮒᮓᮔᮕᮘᮙᮚᮛᮜᮝᮞᮠᮖᮋᮗᮟᮐᮮᮯ])'.. '([ᮬᮭᮡᮢᮣ]?)' .. '([ᮤᮥᮦᮧᮨᮩᮺ ᮫᮪]?)', function(c, s, d) if s == "" then if d == "" then return consonants[c] .. 'a' else return consonants[c] .. (diacritics[d] or d) end else if d == "" then return consonants[c] .. (special[s] or s) .. 'a' else return consonants[c] .. (special[s] or s) .. (diacritics[d] or d) end end end) text = mw.ustring.gsub(text, '.', nonconsonants) return text end return export 8kqpl220czqpldp2dhbfjklftbb0xr5 মডিউল:Sund-translit/testcases 828 168618 510170 2026-06-07T12:45:43Z RedminBot 9553 [[en:Module:Sund-translit/testcases]] থেকে আনা হলো 510170 Scribunto text/plain -- Unit tests for [[Module:Sund-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local su_translit = require('Module:Sund-translit') function tests:check_translit(Sund, roman) self:equals('<span class="Sund" lang="su">[[' .. Sund .. '#Sundanese|' .. Sund .. ']]</span>', su_translit.tr(Sund, 'su', 'Sund'), roman) end function tests:test_translit_sundanese() self:check_translit('ᮃᮜᮥᮔᮺᮌᮥᮀ', 'alun-agung') self:check_translit('ᮞ᮪ᮝᮛ', 'swara') self:check_translit('ᮍᮜᮌᮨᮔ', 'ngalagena') self:check_translit('ᮛᮛᮀᮊᮨᮔ᮪', 'rarangken') self:check_translit('|᮲᮰᮱᮵|', '2015') self:check_translit('ᮃᮊ᮪ᮞᮛ', 'aksara') self:check_translit('ᮃᮀᮊ', 'angka') self:check_translit('ᮓᮜᮤᮀᮓᮤᮀ', 'dalingding') self:check_translit('ᮃᮍᮤᮔ᮪', 'angin') self:check_translit('ᮌᮥᮔ᮪ᮒᮤᮀ', 'gunting') self:check_translit('ᮓᮓᮝᮥᮠᮔ᮪', 'dadawuhan') self:check_translit('ᮒᮩᮊ᮪ᮒᮩᮊ᮪', 'teukteuk') self:check_translit('ᮃᮔᮾ', 'anak') self:check_translit('ᮄᮊᮣᮤᮙ᮪', 'iklim') end return tests g5gdb54l9100gtq5taz7q9617jwh5l3 মডিউল:Tibt-Deva-translit/testcases 828 168619 510171 2026-06-07T12:45:44Z RedminBot 9553 [[en:Module:Tibt-Deva-translit/testcases]] থেকে আনা হলো 510171 Scribunto text/plain -- Unit tests for [[Module:Tibt-Deva-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local transliterate = require('Module:Tibt-Deva-translit').tr local function tag(text) return '<span class="Deva" lang="xsr">' .. text .. '</span>' end local options = { display = tag } --TO DO function tests:do_test_translit(tibt, deva, xlit) self:equals('<span class="Tibt" lang="new">[[' .. tibt .. '#Sherpa|' .. tibt .. ']]</span>', transliterate(tibt, 'deva', 'Tibt'), deva, options) end function tests:test_translit_deva() local examples = { { 'བྷ', 'भ' }, } self:iterate(examples, 'do_test_translit') end return tests anuwsj6fpbsqk0vlop8hlklz757daiw মডিউল:Tibt-translit/testcases 828 168620 510172 2026-06-07T12:45:45Z RedminBot 9553 [[en:Module:Tibt-translit/testcases]] থেকে আনা হলো 510172 Scribunto text/plain local tests = require('Module:UnitTests') local tr = require('Module:Tibt-translit').tr local lang = require("Module:languages").getByCode("bo") local sc = require("Module:scripts").getByCode("Tibt") local function link(term, item_lang) if item_lang then lang_obj = require("Module:languages").getByCode(item_lang) else lang_obj = lang end return require("Module:links").full_link{term = term, lang = lang_obj, tr = "-", sc = sc} end function tests:check_tr(term, expected, item_lang) -- Transliterate and trim. (Note: [[Module:languages]] usually handles trimming.) local translit = tr(term, item_lang or "bo", "Tibt") :gsub("^%s+(%S)", "%1") :gsub("(%S)%s+$", "%1") tests:equals(link(term, item_lang), translit, expected) end function tests:test_translit() local examples = { -- For languages other than Tibetan, language is the third item. {"༳", "9.5"}, {"ཨཱ", "ā"}, {"ཨ་ཆུང", "a chung"}, {"འ་དོམ", "'a dom", "dz"}, {"ཨཱ་ཀཾ", "ā kaṃ"}, {"ཨ་ཁུ", "a khu"}, {"ཨ་མའི", "a ma'i"}, {"ཨ་མྲ", "a mra"}, {"ཨ་པ", "a pa", "dz"}, {"ཨ་ཕི་རི་ཀ", "a phi ri ka"}, {"ཨ་ཙ་ར", "a tsa ra"}, {"ཨ་ཞང", "a zhang"}, {"ཨ་ཞེ", "a zhe", "dz"}, {"ཨྸ", "aa"}, {"ཨག་ཚོམ", "ag tshom"}, {"ཨཱཿ", "āḥ"}, {"ཨཻ", "ai"}, {"ཨའི", "a'i", "dz"}, {"འལ", "'al", "dz"}, {"འམ", "'am", "dz"}, {"ཨཾ", "aṃ"}, {"འར་རི་འུར་རི", "'ar ri 'ur ri", "dz"}, {"ཨརཀྵིཏཱརཾརཱཛཱནཾགྷྣནྟིདོཥཱཿ", "arakṣitāraṃrādzānaṃghnantidoṣāḥ"}, {"ཨརཝ", "arwa", "dz"}, {"ཨཽ", "au"}, {"ཨྱཽན", "ayaun", "dz"}, {"ཨྱོན", "ayon", "dz"}, {"བ", "ba"}, {"འབའ", "'ba'"}, {"འབའ་བ", "'ba' ba"}, {"བའམ", "ba'am"}, {"འབད", "'bad", "dz"}, {"འབག་ཤོག་ཤིག", "'bag shog shig", "dz"}, {"བགས", "bags"}, {"བའི", "ba'i"}, {"བཻ་ཌཱུརྻ", "bai ḍūrya", "dz"}, {"བལ", "bal", "dz"}, {"འབལ", "'bal", "dz"}, {"བལ་ཡུལ", "bal yul"}, {"བར", "bar"}, {"བར་ན", "bar na", "dz"}, {"བཅད", "bcad"}, {"བཅར", "bcar", "dz"}, {"བཅུ", "bcu"}, {"བཅུ་ཐམ", "bcu tham", "dz"}, {"བདེ་བ", "bde ba"}, {"བདུད", "bdud"}, {"བདུན", "bdun"}, {"བདུན་ཕྲག", "bdun phrag"}, {"བེད་སྤྱོད་འབད", "bed spyod 'bad", "dz"}, {"བེའུ", "be'u"}, {"བགླ", "bgla"}, {"བགོ", "bgo"}, {"བགོད", "bgod"}, {"བགོད་པ", "bgod pa"}, {"བགོས", "bgos"}, {"བགྲོསཔ", "bgrospa", "dz"}, {"བྷཱུཏ་པུར", "bhūta pura"}, {"བི་རུ་པཱ", "bi ru pā"}, {"བིཥྚི", "biṣṭi", "dz"}, {"བཀའ་བརྒྱུད", "bka' brgyud"}, {"བཀའ་དྲིན་ཆེ", "bka' drin che", "dz"}, {"བཀག", "bkag"}, {"བཀལན", "bkaln", "dz"}, {"བཀླག", "bklag"}, {"བཀླགས", "bklags"}, {"བཀླུབ", "bklub"}, {"བཀླུབས", "bklubs"}, {"བཀོག", "bkog"}, {"བཀྲ་ཤིས", "bkra shis", "dz"}, {"བཀྲ་ཤིས་ཤོག", "bkra shis shog"}, {"བཀྲིས", "bkris"}, {"བཀྲོང", "bkrong", "dz"}, {"བཀུགཔ", "bkugpa", "dz"}, {"བཀྱིག", "bkyig", "dz"}, {"བླ", "bla"}, {"བླ་མ", "bla ma"}, {"བླ་མའང", "bla ma'ang"}, {"བླམ", "blama", "dz"}, {"བླང", "blang"}, {"བླངས", "blangs"}, {"བལྡག", "bldag"}, {"བལྡགས", "bldags"}, {"བལྡེག", "bldeg"}, {"བལྡེགས", "bldegs"}, {"བལྐལ", "blkal"}, {"བློ", "blo", "dz"}, {"བློ་གསལ", "blo gsal", "dz"}, {"བློ་རྒྱམ", "blo rgyam"}, {"བལྟ", "blta"}, {"བལྟ་ཤིག", "blta shig", "dz"}, {"བལྟབ", "bltab", "dz"}, {"བལྟམས", "bltams"}, {"བལྟམས་པ", "bltams pa"}, {"བལྟས", "bltas"}, {"བོད", "bod"}, {"བོད་ལྗོངས", "bod ljongs"}, {"བོད་རང་སྐྱོང་ལྗོངས", "bod rang skyong ljongs"}, {"བོད་སྐད", "bod skad"}, {"བོདཔ", "bodpa", "dz"}, {"བྲང", "brang"}, {"བྲའོ", "bra'o"}, {"འབྲས", "'bras"}, {"བརྡ", "brda"}, {"བརྡའ", "brda'", "otb"}, {"བརྡ་རྙིང", "brda rnying"}, {"བརྡབ", "brdab", "dz"}, {"བྲེད", "bred"}, {"བརྒད", "brgad"}, {"བརྒལ", "brgal"}, {"བརྒྱ", "brgya"}, {"བརྒྱད", "brgyad"}, {"བརྒྱང", "brgyang"}, {"བརྒྱངས", "brgyangs"}, {"བརྒྱུད", "brgyud"}, {"བརྒྱུད་བརྒྱུགས", "brgyud brgyugs"}, {"བརྒྱུགས", "brgyugs", "dz"}, {"བྲི", "bri"}, {"འབྲི", "'bri"}, {"འབྲི་བ", "'bri ba"}, {"བྲིས", "bris"}, {"བརྗེད", "brjed", "dz"}, {"བརྗོད", "brjod"}, {"བརྐྱང", "brkyang", "dz"}, {"བརྐྱངས", "brkyangs"}, {"བརླ", "brla"}, {"བརླབ", "brlab"}, {"བརླབས", "brlabs"}, {"བརླད་དོ", "brlad do", "dz"}, {"བརླག", "brlag"}, {"བརྔ", "brnga", "dz"}, {"བརྔམ་སི་སི", "brngam si si", "dz"}, {"བརྔོ", "brngo", "dz"}, {"བརྔུབ", "brngub"}, {"བརྔུབས", "brngubs"}, {"བརྙ", "brnya", "dz"}, {"བརྙན", "brnyan"}, {"འབྲོང", "'brong"}, {"བརྟག་དཔྱད", "brtag dpyad", "dz"}, {"བརྩམ", "brtsam"}, {"བརྩམས", "brtsams"}, {"བརྩེ", "brtse"}, {"བརྩེ་བ", "brtse ba"}, {"བརྩི", "brtsi"}, {"བརྩིགསཔ", "brtsigspa", "dz"}, {"བརྩིས", "brtsis"}, {"བརྩོན་འགྲུས", "brtson 'grus"}, {"བརྩོན་པ", "brtson pa"}, {"འབྲུ", "'bru"}, {"བྲེུ", "brue"}, {"འབྲུག", "'brug"}, {"འབྲུག་གཞུང", "'brug gzhung", "dz"}, {"འབྲུག་པ", "'brug pa"}, {"འབྲུག་རྒྱལ་ཁབ", "'brug rgyal khab"}, {"འབྲུག་རྒྱལ་པོ", "'brug rgyal po"}, {"འབྲུག་སྐད་རྒྱག", "'brug skad rgyag"}, {"འབྲུག་ཡུལ", "'brug yul"}, {"བསད", "bsad"}, {"བསམ", "bsam"}, {"བསམ་གཏན", "bsam gtan"}, {"བསམ་ཡས", "bsam yas"}, {"བསམས", "bsams"}, {"བསྡམ", "bsdam", "dz"}, {"བསྡམས", "bsdams"}, {"བསྒྲིབས", "bsgribs"}, {"བསྒྲིག", "bsgrig"}, {"བསྒྲིགས", "bsgrigs"}, {"བསྒྲིམས", "bsgrims", "dz"}, {"བསྒྲུབ", "bsgrub"}, {"བསྒྲུབས", "bsgrubs"}, {"བསྒུག", "bsgug", "dz"}, {"བསྒྱུར", "bsgyur"}, {"བསྒྱུརད", "bsgyurd"}, {"བཤད", "bshad"}, {"བཤད་སླབ་ནི", "bshad slab ni", "dz"}, {"བཤལ", "bshal", "dz"}, {"བཤལ་ནི", "bshal ni", "dz"}, {"བཤིག", "bshig"}, {"བསིལ", "bsil", "dz"}, {"བསྐྱབ", "bskyab", "dz"}, {"བསྐྱིས", "bskyis", "dz"}, {"བསླབ", "bslab"}, {"བསླབ་བྱ", "bslab bya", "dz"}, {"བསླབས", "bslabs"}, {"བསྔོཝ", "bsngowa", "dz"}, {"བསྣུབ", "bsnub"}, {"བསྣུབས", "bsnubs"}, {"བསྟོད་པ", "bstod pa", "dz"}, {"བཏབ", "btab"}, {"བཏག", "btag"}, {"བཏགས", "btags"}, {"བཙའ", "btsa'", "dz"}, {"བཙོགཔ", "btsogpa", "dz"}, {"བཙོན་ཁང", "btson khang", "dz"}, {"བཙོན་པ", "btson pa"}, {"བཙོནམ", "btsonma", "dz"}, {"བཙུད", "btsud"}, {"བཙུནམོ", "btsunmo", "dz"}, {"བཏུབ", "btub", "dz"}, {"བཏུམས", "btums"}, {"བཏུང", "btung"}, {"བཏུངས", "btungs"}, {"བུ", "bu"}, {"བུ་མོ", "bu mo"}, {"འབུམ", "'bum", "dz"}, {"བུམ་པ", "bum pa"}, {"བུམོ", "bumo", "dz"}, {"འབུཔ", "'bup", "dz"}, {"བྱ", "bya"}, {"འབྱཱ", "'byā", "dz"}, {"བྱ་བའི", "bya ba'i"}, {"བྱ་མོ་དང་ཁྱི་ཕྲུག", "bya mo dang khyi phrug"}, {"བྱ་ཚིག", "bya tshig"}, {"བྱག", "byag", "dz"}, {"བྱམོ", "byamo", "dz"}, {"བྱམས", "byams", "dz"}, {"བྱམས་པ", "byams pa"}, {"འབྱང", "'byang", "dz"}, {"བྱང་ཆུབ", "byang chub"}, {"བྱང་ཆུབ་སེམས་དཔའ", "byang chub sems dpa'"}, {"འབྱར", "'byar"}, {"འབྱར་བ", "'byar ba"}, {"བྱས", "byas"}, {"བྱེད", "byed"}, {"བྱེད་པ", "byed pa"}, {"བྱེམ", "byem", "dz"}, {"བྱེའུ", "bye'u"}, {"བྱི་བ", "byi ba"}, {"བྱི་ལི", "byi li", "dz"}, {"བྱི་ཙི", "byi tsi", "dz"}, {"བྱིན་གྱིས་རློབ་པ", "byin gyis rlob pa"}, {"བྱིན་མ", "byin ni", "dz"}, {"བྱིའུ", "byi'u"}, {"བྱོན", "byon", "dz"}, {"འབྱོན", "'byon", "dz"}, {"བྱོའོ", "byo'o", "dz"}, {"བྱོས", "byos"}, {"འབྱུ", "'byu", "dz"}, {"བྱུ་རུའང", "byu ru'ang"}, {"བཟའ", "bza'"}, {"བཟབས", "bzabs"}, {"བཟངམ", "bzangma", "dz"}, {"བཟས", "bzas"}, {"བཞད", "bzhad"}, {"བཞད་པ", "bzhad pa"}, {"བཞག", "bzhag", "dz"}, {"བཞི", "bzhi"}, {"བཞི་ཕོད", "bzhi phod", "dz"}, {"བཞོད", "bzhod"}, {"བཞུཌ", "bzhuḍ"}, {"བཞུགས་སོ", "bzhugs so"}, {"བཟླས", "bzlas"}, {"བཟླས་བརྗོད", "bzlas brjod"}, {"བཟློག་ཐབས", "bzlog thabs", "dz"}, {"བཟློས", "bzlos"}, {"བཟོཝ", "bzowa", "dz"}, {"བཟུམ་སྦེ", "bzum sbe", "dz"}, {"བཟུང", "bzung"}, {"ཅན", "can"}, {"ཅང་ཧྲུའུ་ཅི", "cang hru'u ci"}, {"ཅའོ་ཐུང", "ca'o thung"}, {"འཆའ་སྒམ", "'cha' sgam", "dz"}, {"ཆད", "chad"}, {"འཆད", "'chad"}, {"འཆད་པ", "'chad pa"}, {"ཆདཔ", "chadpa", "dz"}, {"འཆམ", "'cham", "dz"}, {"ཆང", "chang", "dz"}, {"ཆང་གི་ཕོའོ", "chang gi pho'o", "dz"}, {"ཆང་ནད", "chang nad"}, {"འཆར་གཞི", "'char gzhi", "dz"}, {"ཆར་པ", "char pa"}, {"ཆརཔ", "charpa", "dz"}, {"ཆེ་གེ", "che ge"}, {"ཆེན་པོ", "chen po"}, {"འཆི", "'chi"}, {"འཆི་བ", "'chi ba"}, {"ཆི་ཁྲེ", "chi khre"}, {"ཆོ", "cho"}, {"ཆོ་མེད", "cho med"}, {"ཆོད", "chod"}, {"ཆོས་འཁོར་གསུམ", "chos 'khor gsum"}, {"ཆོས་ཀྱི་འཁོར་ལོ", "chos kyi 'khor lo"}, {"ཆུ", "chu", "dz"}, {"ཆུ་རྒུན་འབྲུམ", "chu rgun 'brum"}, {"ཆུང", "chung"}, {"ཆུང་བ", "chung ba"}, {"ཅི", "ci", "dz"}, {"ཅོག་ཚེ", "cog tshe"}, {"ད་ལྟོ", "da lto", "dz"}, {"ད་རིས", "da ris", "dz"}, {"ཌ་རུ", "ḍa ru"}, {"ཌ་རུ་སྐྲོག་པ", "ḍa ru skrog pa", "dz"}, {"འདབས", "'dabs"}, {"འདམ", "'dam", "dz"}, {"དཔྤེམ", "dappem"}, {"དར་བ", "dar ba", "dz"}, {"དར་འཕྱར", "dar 'phyar", "dz"}, {"དར་ཤིང", "dar shing", "dz"}, {"འདས་པ", "'das pa"}, {"དཝ", "dawa", "dz"}, {"དབང", "dbang"}, {"དབས", "dbas"}, {"དབེན་པ", "dben pa"}, {"དབོག་ནི", "dbog ni", "dz"}, {"དབུ", "dbu"}, {"དབུས་གཙང", "dbus gtsang"}, {"དབྱངས", "dbyangs"}, {"དབྱར་ཀ", "dbyar ka"}, {"དབྱར་ཁ", "dbyar kha"}, {"དྡི", "ddi"}, {"དེ", "de"}, {"དེ་ཅིག", "de cig", "dz"}, {"དེ་སྦེ", "de sbe", "dz"}, {"འདེབས", "'debs"}, {"འདེབས་པ", "'debs pa"}, {"དེན་མག", "den mag"}, {"དགའ", "dga'", "dz"}, {"དགའ་བ", "dga' ba"}, {"དགའ་ཏོག་ཏོ", "dga' tog to", "dz"}, {"དགག", "dgag"}, {"དགས", "dgas"}, {"དགེ་བ", "dge ba"}, {"དགེ་ལུགས་པ", "dge lugs pa"}, {"དགོག", "dgog"}, {"དགོམ་པ", "dgom pa"}, {"དགོངས་རྒྱུད", "dgongs rgyud"}, {"དགྲ་བོ", "dgra bo"}, {"དགུ", "dgu"}, {"དྷརྨ་ཀཱིརྟི", "dharma kīrti"}, {"དྷཱིཿ", "dhīḥ"}, {"དཀར", "dkar"}, {"དཀར་པོ", "dkar po"}, {"དཀརཔོ", "dkarpo", "dz"}, {"དཀོན་མཆོག", "dkon mchog"}, {"དཀྲོགས", "dkrogs", "dz"}, {"དཀྲོལ", "dkrol"}, {"དཀྲོལ་བ", "dkrol ba"}, {"དཀྲོལད", "dkrold"}, {"དཀྱིལ་འཁོར", "dkyil 'khor"}, {"དཀྱིས", "dkyis", "dz"}, {"དཀྱུས་རིང", "dkyus ring", "dz"}, {"དམག་འཁྲུག", "dmag 'khrug"}, {"དམག་མི", "dmag mi", "dz"}, {"དམངས", "dmangs"}, {"དམངས་གཙོ", "dmangs gtso"}, {"དམར་པོ", "dmar po"}, {"དམར་པོའི་རིང་ལུགས", "dmar po'i ring lugs"}, {"དམརཔོ", "dmarpo", "dz"}, {"དམས", "dmas"}, {"དམེའ", "dme'", "otb"}, {"དམྱལ་བ", "dmyal ba", "dz"}, {"དངོས", "dngos", "dz"}, {"དངུལ", "dngul"}, {"དངུལ་འཇོག", "dngul 'jog"}, {"དངུལ་ཁང", "dngul khang"}, {"དངུལ་ཀྲམ", "dngul kram", "dz"}, {"དངུལ་ལོར", "dngul lor"}, {"དངུལ་རྩིས", "dngul rtsis"}, {"འདོགས་པ", "'dogs pa"}, {"དོམ", "dom"}, {"དོམ་གདོང་ཅན", "dom gdong can"}, {"དོམ་མཁྲིས", "dom mkhris"}, {"དོམ་ནག", "dom nag"}, {"དོམ་པགས", "dom pags"}, {"འདོམས་པ", "'doms pa"}, {"དོན", "don", "dz"}, {"དོང", "dong", "dz"}, {"དོརམ", "dorma", "dz"}, {"དཔའ་བོ", "dpa' bo", "dz"}, {"དཔལ་བེའུ", "dpal be'u"}, {"དཔལ་འབྱོར", "dpal 'byor", "dz"}, {"དཔར་ཆས", "dpar chas", "dz"}, {"དཔེ་ཆ", "dpe cha"}, {"དཔོན", "dpon", "dz"}, {"དཔྱ", "dpya"}, {"དཔྱ་ཁྲལ", "dpya khral"}, {"དཔྱལཝ", "dpyalwa", "dz"}, {"དཔྱི་སྨད", "dpyi smad", "dz"}, {"དཔྱིད", "dpyid"}, {"འདྲ་བཤུས", "'dra bshus", "dz"}, {"དྲག་ཤོས", "drag shos", "dz"}, {"དྲེད", "dred"}, {"དྲེད་མོ", "dred mo"}, {"དྲེལ", "drel", "dz"}, {"འདྲྀལ་ཞིང་རྣང་བ", "'dṛl zhing rnang ba", "dz"}, {"དྲོ་པ", "dro pa", "dz"}, {"དྲོད", "drod", "dz"}, {"དྲུག", "drug"}, {"དུ", "du"}, {"དུ་བ", "du ba"}, {"དུག", "dug"}, {"འདུག", "'dug", "dz"}, {"འདུག་པ", "'dug pa"}, {"དུཿ", "duḥ"}, {"དུཿཁ", "duḥkha"}, {"འདུས་མ་བྱས", "'dus ma byas"}, {"དྭགས", "dwags"}, {"ཛ་ཏི", "dza ti", "dz"}, {"འཛམ་གླིང", "'dzam gling", "dz"}, {"ཛམྦྷ", "dzambha"}, {"འཛརཝ", "'dzarwa", "dz"}, {"ཛེའུ", "dze'u"}, {"འཛིན", "'dzin"}, {"འཛིན་པ", "'dzin pa"}, {"འཛུད", "'dzud"}, {"འཛུད་པ", "'dzud pa"}, {"འཛུལ་བ", "'dzul ba"}, {"ཛྱོ་ཥྛ", "dzyo ṣṭha", "dz"}, {"ཨེ་ཝཾ", "e waṃ"}, {"ཨེར་མ", "er ma", "dz"}, {"ཨེཥཱཾཔཏིཥྛཱཿ", "eṣāṃpatiṣṭhāḥ"}, {"གཡའ", "g.ya'"}, {"གཡའ་དྲེད", "g.ya' dred"}, {"གཡག", "g.yag"}, {"གཡང", "g.yang"}, {"གཡང་ཊི", "g.yang ṭi"}, {"གཡསཔ", "g.yaspa", "dz"}, {"གཡེབ", "g.yeb", "dz"}, {"གཡེལད", "g.yeld"}, {"གཡེང", "g.yeng"}, {"གཡེར་མ", "g.yer ma"}, {"གཡོ", "g.yo"}, {"གཡོན", "g.yon", "dz"}, {"གཡོན", "g.yon"}, {"གཡུ", "g.yu"}, {"གཡུལ", "g.yul"}, {"གཡུང", "g.yung"}, {"གཡུས", "g.yus", "dz"}, {"གཱ", "gā", "dz"}, {"ག་ཅི", "ga ci", "dz"}, {"གབ་ཚིག", "gab tshig"}, {"འགན་ཁག", "'gan khag", "dz"}, {"གངྒ", "gangga"}, {"གངས", "gangs"}, {"གངས་མི", "gangs mi"}, {"གངས་རི", "gangs ri", "dz"}, {"གར", "gar"}, {"འགས་པ", "'gas pa"}, {"གཙྪགཙྪསིཙེཏྐཱནྟཔནྠཱནཿ", "gatstshagatstshasitsetkāntapanthānaḥ"}, {"གཅད", "gcad"}, {"གཅིག", "gcig"}, {"གཅོད", "gcod"}, {"གཅོད་པ", "gcod pa"}, {"གཅོད་སྒྲུབ་ཐབས", "gcod sgrub thabs"}, {"གདབས", "gdabs"}, {"གདགས", "gdags"}, {"གདམས", "gdams"}, {"གདན་ཁེབ", "gdan kheb", "dz"}, {"གདོང", "gdong", "dz"}, {"གདུག", "gdug"}, {"གླང", "glang"}, {"གླངམོ་ཆེ", "glangmo che", "dz"}, {"གླེ", "gle"}, {"གླེན་ལྐུགས", "glen lkugs", "dz"}, {"གློ", "glo", "dz"}, {"གློ་བ", "glo ba"}, {"གློག", "glog"}, {"གློག་བརྙན", "glog brnyan"}, {"གློག་ཀླད", "glog klad"}, {"གླུ", "glu", "dz"}, {"གླུད", "glud", "dz"}, {"གནགཔོ", "gnagpo", "dz"}, {"གནམ", "gnam"}, {"གནམ་བྱཱ", "gnam byā", "dz"}, {"གནམ་དགུན", "gnam dgun", "dz"}, {"གནམ་ལྕགས", "gnam lcags"}, {"གནང", "gnang", "dz"}, {"གནས", "gnas"}, {"གཉེན", "gnyen", "dz"}, {"གཉིད", "gnyid"}, {"གཉིད་ལམ", "gnyid lam", "dz"}, {"གཉིས", "gnyis"}, {"གོ་སྙོད", "go snyod"}, {"གོ་ཐལ", "go thal", "dz"}, {"གོག", "gog"}, {"འགོག", "'gog"}, {"གོག་པ", "gog pa"}, {"འགོག་པ", "'gog pa"}, {"གོན", "gon", "dz"}, {"གོན་པ", "gon pa"}, {"གོང", "gong"}, {"གྲང་མོ", "grang mo"}, {"གྲང་ནད", "grang nad", "dz"}, {"གྲཊ", "graṭ"}, {"འགྲོ", "'gro"}, {"འགྲོ་བ", "'gro ba"}, {"གྲོགས་པོ", "grogs po"}, {"གྲུ", "gru", "dz"}, {"གྲུབ", "grub"}, {"འགྲུབ", "'grub"}, {"འགྲུབ་པ", "'grub pa"}, {"འགྲུལ་བ", "'grul ba"}, {"འགྲུས", "'grus"}, {"གྲྭ་ཚང", "grwa tshang", "dz"}, {"གསད", "gsad"}, {"གསལ་བ", "gsal ba"}, {"གསང་སྔགས", "gsang sngags"}, {"གསར་པ", "gsar pa"}, {"གསརཔ", "gsarpa", "dz"}, {"གསེབ", "gseb", "dz"}, {"གསེར", "gser", "dz"}, {"གསེར་ཉ", "gser nya"}, {"གསེར་ཊཾ", "gser ṭaṃ", "dz"}, {"གཤོང", "gshong", "dz"}, {"གསིང་མ", "gsing ma"}, {"གསོབ", "gsob", "dz"}, {"གསོད", "gsod"}, {"གསོད་པ", "gsod pa"}, {"གསུམ", "gsum"}, {"གཏམ་པ", "gtam pa"}, {"གཏན", "gtan"}, {"གཏང", "gtang", "dz"}, {"གཏེར", "gter"}, {"གཏོམ་པ", "gtom pa"}, {"གཙང་ཏོག་ཏོ", "gtsang tog to", "dz"}, {"གཙོ", "gtso"}, {"གཏུམ", "gtum"}, {"གཏུམ་པ", "gtum pa"}, {"གུམ་པ", "gum pa"}, {"གུང་ཁྲན", "gung khran"}, {"གུང་ཁྲན་རིང་ལུགས", "gung khran ring lugs"}, {"གུང་ཐང་བརྟན་སྒྲོན", "gung thang brtan sgron"}, {"གུར", "gur", "dz"}, {"གུར་གུཾ", "gur guṃ"}, {"གུས་ཞབས", "gus zhabs", "dz"}, {"གྱ", "gya"}, {"གྱལ", "gyal", "dz"}, {"གྱང", "gyang"}, {"གྱངམ་མས", "gyangma mas", "dz"}, {"གྱངས་ཁ", "gyangs kha", "dz"}, {"འགྱིར", "'gyir", "dz"}, {"འགྱོ་ནི", "'gyo ni", "dz"}, {"གྱོན", "gyon"}, {"གྱོན", "gyon"}, {"གྱོན་པ", "gyon pa"}, {"འགྱུར", "'gyur"}, {"འགྱུར་བ", "'gyur ba"}, {"གཟེདམ", "gzedma", "dz"}, {"གཟེར", "gzer", "dz"}, {"གཞའ་བ", "gzha' ba"}, {"གཞས", "gzhas"}, {"གཞི", "gzhi"}, {"གཞིབ", "gzhib"}, {"གཞིབས", "gzhibs"}, {"གཞིག", "gzhig"}, {"གཞོནམ", "gzhonma", "dz"}, {"གཞུ", "gzhu", "dz"}, {"གཞུང", "gzhung"}, {"གཟི", "gzi", "dz"}, {"གཟིག", "gzig", "dz"}, {"གཟིགས", "gzigs"}, {"གཟིགས་པ", "gzigs pa"}, {"གཟིམ་པ", "gzim pa"}, {"གཟོལ་དཀྲུམ", "gzol dkrum"}, {"གཟུད", "gzud"}, {"གཟུཌ", "gzuḍ"}, {"གཟུགས", "gzugs", "dz"}, {"གཟུགས་མངས", "gzugs mangs"}, {"གཟུང", "gzung"}, {"གཟུང་ནི", "gzung ni", "dz"}, {"ཧཱ", "hā", "dz"}, {"ཧ་རི་ཊ", "ha ri ṭa", "dz"}, {"ཧ་སག", "ha sag", "dz"}, {"ཧབ", "hab", "dz"}, {"ཧད", "had", "dz"}, {"ཧང", "hang", "dz"}, {"ཧིང", "hing", "dz"}, {"ཧོང་ཀོང", "hong kong"}, {"ཧྥུན", "hphun"}, {"ཧྲ་ཧྥ", "hra hpha"}, {"ཧྲལ", "hral", "dz"}, {"ཧྲིལཔོ", "hrilpo", "dz"}, {"ཧྲུའུ", "hru'u"}, {"ཧྲུའུ་ཅི", "hru'u ci"}, {"ཧུམ", "hum", "dz"}, {"ཧཱུཾ", "hūṃ"}, {"འི", "'i"}, {"ཨཱི", "ī"}, {"ཨྀ", "ị"}, {"ཨཱྀ", "ị̄"}, {"ཨིན", "in", "dz"}, {"ཨིནྡྲ", "indra"}, {"ཇ", "ja"}, {"ཇ་ཆང", "ja chang", "dz"}, {"འཇའ་རིསམོ", "'ja' rismo", "dz"}, {"འཇའ་ཚོན", "'ja' tshon", "dz"}, {"འཇག་མ", "'jag ma"}, {"འཇམ་དབྱངས", "'jam dbyangs", "dz"}, {"འཇམ་ཏོག་ཏོ", "'jam tog to", "dz"}, {"འཇིབ", "'jib"}, {"འཇིབ་པ", "'jib pa"}, {"འཇིབས", "'jibs"}, {"འཇིག", "'jig"}, {"འཇིག་པ", "'jig pa"}, {"འཇིགས་བྱེད", "'jigs byed"}, {"ཇོ་བདག", "jo bdag", "dz"}, {"ཇོ་བོ", "jo bo"}, {"ཇོ་མོ", "jo mo"}, {"ཇོ་མོ་གླང་མ", "jo mo glang ma"}, {"འཇུག་པ", "'jug pa"}, {"ཀ་ཀྲ་ལ", "ka kra la"}, {"ཀ་ལ་པཱ", "ka la pā"}, {"ཀཱ་ཡཿ", "kā yaḥ", "dz"}, {"ཀཿཐོག", "kaḥthog", "dz"}, {"ཀཻ་ལ་ས་རྒོད", "kai la sa rgod", "dz"}, {"ཀརྨ་པ", "karma pa"}, {"ཀརྣཱ", "karnā"}, {"ཀཝ", "kawa", "dz"}, {"ཀེ་ལ", "ke la"}, {"ཁ", "kha", "dz"}, {"ཁ་བ", "kha ba"}, {"ཁ་པར", "kha par"}, {"ཁ་ཊཱཾ་ག", "kha ṭāṃ ga", "dz"}, {"ཁབ", "khab"}, {"ཁབ་ཏོག", "khab tog", "dz"}, {"ཁམ", "kham", "dz"}, {"ཁམ་བུ", "kham bu"}, {"ཁང", "khang"}, {"ཁང་པ", "khang pa"}, {"འཁརཝ", "'kharwa", "dz"}, {"ཁཝ", "khawa", "dz"}, {"ཁེ་ན་ཏྲ", "khe na tra"}, {"ཁོ", "kho", "dz"}, {"ཁོག", "khog"}, {"ཁོང", "khong", "dz"}, {"ཁོར་ལོ", "khor lo"}, {"འཁོར་ལོ", "'khor lo"}, {"ཁྲབ་ཁྲབ", "khrab khrab"}, {"ཁྲག", "khrag"}, {"ཁྲལ", "khral"}, {"ཁྲང་ཨན", "khrang an"}, {"ཁྲི", "khri"}, {"ཁྲིད", "khrid"}, {"འཁྲིད", "'khrid"}, {"འཁྲིད་པ", "'khrid pa"}, {"འཁྲོལ་བ", "'khrol ba"}, {"ཁྲོམ་ཁ", "khrom kha", "dz"}, {"འཁྲུངས", "'khrungs", "dz"}, {"ཁྲུས་ཁང", "khrus khang", "dz"}, {"ཁུ་བ", "khu ba", "dz"}, {"ཁུངས", "khungs"}, {"འཁྱགས་པ", "'khyags pa"}, {"ཁྱལ", "khyal", "dz"}, {"ཁྱི", "khyi"}, {"འཁྱིད", "'khyid", "dz"}, {"ཁྱིམ", "khyim", "dz"}, {"ཁྱོད", "khyod", "dz"}, {"ཁྱོའི", "khyo'i"}, {"ཁྱུ", "khyu", "dz"}, {"འཁྱུ", "'khyu", "dz"}, {"ཁྱུང", "khyung"}, {"ཀྐ", "kka"}, {"ཀླད", "klad"}, {"ཀླདཔ", "kladpa", "dz"}, {"ཀློག", "klog"}, {"ཀློག་པ", "klog pa"}, {"ཀློགས", "klogs"}, {"ཀླུབ", "klub"}, {"ཀླུབ་པ", "klub pa"}, {"ཀླུབས", "klubs"}, {"ཀོ་ཥ་ཋིལ་ཆེན་པོ", "ko ṣa ṭhil chen po", "dz"}, {"ཀོ་ཋ", "ko ṭha", "dz"}, {"ཀོཝ", "kowa", "dz"}, {"ཀྲེམ་ཟེ", "krem ze", "dz"}, {"ཀྲོག", "krog", "dz"}, {"ཀྲུང་གོ", "krung go"}, {"ཀྲུང་ཧྭ", "krung hwa"}, {"ཀྲུང་ཧྭ་མི་དམངས་སྤྱི་མཐུན་རྒྱལ་ཁབ", "krung hwa mi dmangs spyi mthun rgyal khab"}, {"ཀུ་ཤུ", "ku shu"}, {"ཀུམྦྷཎྜེ", "kumbhaṇḍe"}, {"ཀུན་གསལ", "kun gsal", "dz"}, {"ཀུའོ", "ku'o"}, {"ཀུཝ", "kuwa", "dz"}, {"ཀྭ་ཀྲོའུ", "kwa kro'u"}, {"ཀྭའི", "kwa'i"}, {"ཀྱྀབ་ཀྱྀབ", "kyịb kyịb", "dz"}, {"ལ", "la", "dz"}, {"ལཱ", "lā", "dz"}, {"ལཱ་ཁག", "lā khag", "dz"}, {"ལ་མགོ", "la mgo", "dz"}, {"ལ་ཕུག", "la phug"}, {"ལ་སོགས་པ", "la sogs pa"}, {"ལག", "lag"}, {"ལག་པ", "lag pa"}, {"ལགཔ", "lagpa", "dz"}, {"ལགཔ་གཡོནམ", "lagpa g.yonma", "dz"}, {"ལམ", "lam"}, {"ལནྡྷ", "landha"}, {"ལངམ", "langma", "dz"}, {"ལས", "las"}, {"ལྦ་བ", "lba ba", "dz"}, {"ལྕགས", "lcags"}, {"ལྕགས་གཟེར", "lcags gzer", "dz"}, {"ལྕགས་ཀྱུ", "lcags kyu", "dz"}, {"ལྕམ", "lcam"}, {"ལྕེ", "lce"}, {"ལྕི་བ", "lci ba"}, {"ལྕོག་ཙེ", "lcog tse"}, {"ལྡག", "ldag"}, {"ལྡག་པ", "ldag pa"}, {"ལྡེ་མིག", "lde mig", "dz"}, {"ལྡེག", "ldeg"}, {"ལྡེག་པ", "ldeg pa"}, {"ལྡིར", "ldir"}, {"ལྡིར་བ", "ldir ba"}, {"ལྡོག", "ldog"}, {"ལྡོག་པ", "ldog pa"}, {"ལྡོགས", "ldogs"}, {"ལེགས", "legs"}, {"ལེགས་པ", "legs pa"}, {"ལེགས་སྦྱར", "legs sbyar"}, {"ལེགས་སྦྱར་སྐད", "legs sbyar skad"}, {"ལེན", "len"}, {"ལེན་པ", "len pa"}, {"ལེནད", "lend"}, {"ལེཊ", "leṭ"}, {"ལེའུ", "le'u"}, {"ལེའུའིའོ", "le'u'i'o"}, {"ལྒ", "lga"}, {"ལྒང་ཕུ", "lgang phu", "dz"}, {"ལྷ", "lha"}, {"ལྷ་གཅིག", "lha gcig"}, {"ལྷ་ཁང", "lha khang", "dz"}, {"ལྷ་ས", "lha sa"}, {"ལྷབ", "lhab", "dz"}, {"ལྷག", "lhag", "dz"}, {"ལྷགཔ", "lhagpa", "dz"}, {"ལྷགས་པ", "lhags pa"}, {"ལྷོད", "lhod", "dz"}, {"ལྷྭམ་ཡ་གཅིག", "lhwam ya gcig", "dz"}, {"ལི", "li"}, {"ལིམ་བུ", "lim bu"}, {"ལིངས", "lings"}, {"ལྗགས", "ljags"}, {"ལྗིད", "ljid", "dz"}, {"ལྗིད་ཅན", "ljid can", "dz"}, {"ལྗིད་པ", "ljid pa"}, {"ལྗོངས", "ljongs"}, {"ལྐུགས་པ", "lkugs pa", "dz"}, {"ལླུམ", "llum"}, {"ལྔ", "lnga"}, {"ལོ", "lo"}, {"ལོ་མ", "lo ma"}, {"ལོ་ཙཱ་བ", "lo tsā ba"}, {"ལོངས", "longs"}, {"ལྟ", "lta"}, {"ལྟ་བ", "lta ba"}, {"ལྟ་ད", "lta da"}, {"ལྟདམོ", "ltadmo", "dz"}, {"ལྟགཔ", "ltagpa", "dz"}, {"ལྟམས་པ", "ltams pa"}, {"ལྟས", "ltas"}, {"ལྟེ་བ", "lte ba", "dz"}, {"ལྟེཝ", "ltewa", "dz"}, {"ལྟོ", "lto", "dz"}, {"ལྟོ་ཚང", "lto tshang", "dz"}, {"ལྟོས", "ltos"}, {"ལུ་གུ", "lu gu"}, {"ལཱུ་ཧཱི་པ", "lū hī pa"}, {"ལུད", "lud", "dz"}, {"ལུག", "lug"}, {"ལུག་གསུམ", "lug gsum"}, {"ལུགས", "lugs"}, {"མ", "ma"}, {"མཱ", "mā"}, {"མ་འོངས་པ", "ma 'ongs pa"}, {"མ་རྩ", "ma rtsa"}, {"མ་རྩའི་རིང་ལུགས", "ma rtsa'i ring lugs"}, {"མའིའོ", "ma'i'o"}, {"མནྜལ", "manḍala"}, {"མང", "mang"}, {"མང་ཚོགས", "mang tshogs"}, {"མངས", "mangs"}, {"མའོ་ཀྲུའུ་ཞི", "ma'o kru'u zhi"}, {"མར", "mar", "dz"}, {"མར་ཁུ", "mar khu", "dz"}, {"མས", "mas", "dz"}, {"མཆི་མ", "mchi ma"}, {"མཆིན", "mchin"}, {"མཆིན་པ", "mchin pa"}, {"མཆོད", "mchod"}, {"མཆོད་སྟེགས", "mchod stegs"}, {"མཆོངས", "mchongs", "dz"}, {"མདའ་ཕོག", "mda' phog", "dz"}, {"མདའབོ", "mda'abo", "dz"}, {"མདའི", "mda'i"}, {"མདེའུ", "mde'u", "dz"}, {"མདོ", "mdo"}, {"མདོ་དྲན", "mdo dran"}, {"མདོག", "mdog"}, {"མདྲོན", "mdron"}, {"མཛའ་བ", "mdza' ba"}, {"མཛའ་བརྩེ", "mdza' brtse"}, {"མཛའ་བཤེས", "mdza' bshes"}, {"མཛད", "mdzad"}, {"མཛད་པ", "mdzad pa"}, {"མཛེ་ནད", "mdze nad", "dz"}, {"མཛོ་མོ", "mdzo mo"}, {"མཛོ་ཕོ", "mdzo pho"}, {"མཛོ་པོ", "mdzo po"}, {"མཛོད", "mdzod"}, {"མེ", "me"}, {"མེའ", "me'"}, {"མེ་འབར", "me 'bar", "dz"}, {"མེ་ལོང", "me long"}, {"མེའའི", "me'a'i"}, {"མེད", "med"}, {"མེད་པར", "med par", "dz"}, {"མེགྷཤྱཱམ", "meghashyāma"}, {"མགརཝ", "mgarwa", "dz"}, {"མགོ", "mgo"}, {"མགོ་ཅན", "mgo can", "dz"}, {"མགྲིན་པ", "mgrin pa"}, {"མགྲོན", "mgron"}, {"མགྲོན་ཁང", "mgron khang"}, {"མགུ", "mgu", "dz"}, {"མགྱོན་ཁྱིམ", "mgyon khyim", "dz"}, {"མགྱོནམ", "mgyonma", "dz"}, {"མི", "mi"}, {"མི་དམངས", "mi dmangs"}, {"མི་རིགས", "mi rigs"}, {"མི་སྡུག", "mi sdug"}, {"མི་སྡུག་གངས་མི", "mi sdug gangs mi"}, {"མིག", "mig"}, {"མིག་ཏོ", "mig to", "dz"}, {"མིང", "ming"}, {"མིང་ཚིག", "ming tshig"}, {"མཇེ", "mje", "dz"}, {"མཇུག་མ", "mjug ma", "dz"}, {"མཁའ", "mkha'"}, {"མཁའ་འགྲོ", "mkha' 'gro", "dz"}, {"མཁའ་འགྲུལ", "mkha' 'grul"}, {"མཁལ་རིལ", "mkhal ril"}, {"མཁན", "mkhan"}, {"མཁསཔ", "mkhaspa", "dz"}, {"མཁྲིས་པ", "mkhris pa", "dz"}, {"མཁྱེན", "mkhyen"}, {"མཁྱེན་པ", "mkhyen pa"}, {"མཁྱེནད", "mkhyend"}, {"མནའམ", "mna'ama", "dz"}, {"མནལ", "mnal"}, {"མནར", "mnar", "dz"}, {"མནར་བ", "mnar ba"}, {"མངའ་རིས", "mnga' ris"}, {"མངའ་རིས་ཁམ་བུ", "mnga' ris kham bu"}, {"མངལ", "mngal"}, {"མངར་མོ", "mngar mo"}, {"མངརམོ", "mngarmo", "dz"}, {"མངུལ", "mngul"}, {"མནོ་བསམ", "mno bsam", "dz"}, {"མཉལ་བ", "mnyal ba"}, {"མཉལད་པ", "mnyald pa"}, {"མཉམ", "mnyam", "dz"}, {"མཉམ་གཅིག", "mnyam gcig", "dz"}, {"མཉེལ་བ", "mnyel ba"}, {"མོ", "mo"}, {"མོ་ཊ", "mo ṭa"}, {"མོག་མོག", "mog mog"}, {"མཐར་ཐུག་པ", "mthar thug pa"}, {"མཐེབ", "mtheb"}, {"མཐེའུ", "mthe'u"}, {"མཐོ", "mtho", "dz"}, {"མཐོང", "mthong"}, {"མཐོང་བ", "mthong ba"}, {"མཐུན་པ", "mthun pa"}, {"མཚམས", "mtshams", "dz"}, {"མཚེའུ", "mtshe'u"}, {"མཚོ", "mtsho"}, {"མུ་སྟེགས་པ", "mu stegs pa"}, {"མུག་པ", "mug pa"}, {"མུར་ཐུག", "mur thug"}, {"མུར་ཐུག་པ", "mur thug pa"}, {"ན", "na"}, {"ནཱ", "nā", "dz"}, {"ན་བ", "na ba"}, {"ན་ཧིང", "na hing", "dz"}, {"ན་ནིང", "na ning"}, {"ནད", "nad"}, {"ནདཔ", "nadpa", "dz"}, {"ནག", "nag"}, {"ནག་མོ", "nag mo"}, {"ནག་པོ", "nag po"}, {"ནམ", "nam", "dz"}, {"ནན་ཏེ", "nan te"}, {"ནངས་པ", "nangs pa", "dz"}, {"ནས", "nas", "dz"}, {"ང", "nga"}, {"ང་ར", "nga ra"}, {"ངག", "ngag"}, {"ངའི", "nga'i"}, {"ངལ་བ", "ngal ba"}, {"ངལ་འཚོ", "ngal 'tsho", "dz"}, {"ངནམ", "nganma", "dz"}, {"ངོ་ཤེས", "ngo shes", "dz"}, {"ངྲ་བ", "ngra ba"}, {"ངྲྭ", "ngrwa"}, {"ངུ", "ngu"}, {"ངུ་བ", "ngu ba"}, {"ངུབ", "ngub"}, {"ངུས", "ngus"}, {"ནཱི་ལ་ཐོ་ཋ", "nī la tho ṭha", "dz"}, {"ནྣ", "nna"}, {"ནོར", "nor"}, {"ནོར་འཁྲུལ", "nor 'khrul"}, {"ནོར་རྫིཔ", "nor rdzipa", "dz"}, {"ནོརབུ", "norbu", "dz"}, {"ནུ་མ", "nu ma"}, {"ནུབ", "nub"}, {"ནུབ་པ", "nub pa"}, {"ཉ", "nya"}, {"ཉ་རོགསཔ", "nya rogspa", "dz"}, {"ཉལ", "nyal"}, {"ཉལ་བ", "nyal ba"}, {"ཉལ་པོ", "nyal po"}, {"ཉམས", "nyams"}, {"ཉམས་མྱོང", "nyams myong", "dz"}, {"ཉར", "nyar"}, {"ཉར་བ", "nyar ba"}, {"ཉེ་བ", "nye ba"}, {"ཉེལ་བ", "nyel ba"}, {"ཉེའུ", "nye'u"}, {"ཉི་མ", "nyi ma"}, {"ཉི་མའང", "nyi ma'ang"}, {"ཉི་མའི་ལྟོ", "nyi ma'i lto", "dz"}, {"ཉི་ཤུ", "nyi shu"}, {"ཉིམ", "nyim", "dz"}, {"ཉོ་ནི", "nyo ni", "dz"}, {"ཉོལ", "nyol"}, {"ཉོར", "nyor"}, {"འོ", "'o"}, {"ཨོ་ཌི་ཡ་ན", "o ḍi ya na", "dz"}, {"འོ་མ", "'o ma"}, {"ཨོ་སི་ཀྲ་ལི་ཡ", "o si kra li ya"}, {"འོད", "'od"}, {"འོད་ཆེམ་ཆེམ", "'od chem chem", "dz"}, {"འོད་ཟེར", "'od zer", "dz"}, {"འོག", "'og"}, {"ཨོག་ཚོམ", "og tshom"}, {"ཨོལ་ལྐོག", "ol lkog", "dz"}, {"ཨོམ", "om", "dz"}, {"ཨོཾ", "oṃ"}, {"ཨོཾ་མ་ཎི་པདྨེ་ཧཱུྃ", "oṃ ma ṇi padme hūm̐"}, {"འོང", "'ong"}, {"འོང་བ", "'ong ba"}, {"འོངམ", "'ongma", "dz"}, {"འོངས", "'ongs"}, {"པ", "pa"}, {"པ་ཏྲ", "pa tra"}, {"པད་མ", "pad ma"}, {"པདྨ", "padma"}, {"པའེ", "pa'e"}, {"པགས་ཀོ", "pags ko", "dz"}, {"པན་ཆེན་བླ་མ", "pan chen bla ma"}, {"པཎ་ཌི་ཏ", "paṇ ḍi ta"}, {"པཎྜི་ཏ", "paṇḍi ta"}, {"པའོ", "pa'o"}, {"པར", "par", "dz"}, {"ཕག", "phag"}, {"ཕག་མོ", "phag mo"}, {"ཕག་པ", "phag pa"}, {"ཕགཔ", "phagpa", "dz"}, {"འཕརཝ", "'pharwa", "dz"}, {"ཕཊ", "phaṭ"}, {"ཕེབས", "phebs"}, {"ཕོ", "pho"}, {"ཕོ་བྲང", "pho brang", "dz"}, {"ཕོ་ཅུངམ", "pho cungma", "dz"}, {"ཕོ་ཉ", "pho nya"}, {"ཕོབ", "phob", "dz"}, {"ཕོརཔ", "phorpa", "dz"}, {"འཕོཝ", "'phowa", "dz"}, {"ཕྲག་གོང", "phrag gong"}, {"ཕྲག་པ", "phrag pa"}, {"འཕྲང་འཕྲང", "'phrang 'phrang", "dz"}, {"འཕྲིན", "'phrin"}, {"འཕྲོད", "'phrod", "dz"}, {"ཕྱག", "phyag"}, {"ཕྱག་འཚལ་ནི", "phyag 'tshal ni", "dz"}, {"ཕྱགམ", "phyagma", "dz"}, {"ཕྱལ", "phyal"}, {"ཕྱལ་པ", "phyal pa"}, {"ཕྱེ", "phye", "dz"}, {"ཕྱེད", "phyed", "dz"}, {"ཕྱེད་ཀྲམ", "phyed kram", "dz"}, {"ཕྱེན", "phyen", "dz"}, {"འཕྱེངམ", "'phyengma", "dz"}, {"ཕྱིན", "phyin"}, {"ཕྱུགཔོ", "phyugpo", "dz"}, {"པི་ཏྲཱ", "pi trā"}, {"པོ", "po"}, {"པྲ་ཀྲྀ་ཏ", "pra kṛ ta", "dz"}, {"པྲ་མོ", "pra mo", "dz"}, {"པུ་གུ", "pu gu"}, {"པུཾབྷཿ", "puṃbhaḥ"}, {"པུཾསོཿ", "puṃsoḥ"}, {"པུས་མོ", "pus mo"}, {"པྱི་ཝང", "pyi wang", "dz"}, {"ཪྣ", "R+na"}, {"ར", "ra"}, {"ར་མ", "ra ma"}, {"ར་མའང", "ra ma'ang"}, {"ར་མགོ", "ra mgo", "dz"}, {"ར་ཕོ", "ra pho"}, {"ར་ས", "ra sa"}, {"རཀྵ", "rakṣa"}, {"རང", "rang"}, {"རང་དབང", "rang dbang"}, {"རང་སྐྱོང", "rang skyong"}, {"རང་སྐྱོང་ལྗོངས", "rang skyong ljongs"}, {"རྦ", "rba"}, {"རྦ་རླབས", "rba rlabs"}, {"རྦད", "rbad", "dz"}, {"རྦྷྱོ", "rbhyo"}, {"རྡབས", "rdabs"}, {"རྡེའུ", "rde'u"}, {"རྡོ", "rdo"}, {"རྡོ་གྲུབ་བསྟན་མི", "rdo grub bstan mi"}, {"རྡོ་རྗེ", "rdo rje"}, {"རྡོེ", "rdoe"}, {"རྡུལ", "rdul"}, {"རྫ", "rdza"}, {"རྫམ", "rdzam", "dz"}, {"རྫས", "rdzas", "dz"}, {"རྫེའུ", "rdze'u"}, {"རྫོང", "rdzong"}, {"རྫོང་ཁ", "rdzong kha", "dz"}, {"རྫོང་ཁག", "rdzong khag", "dz"}, {"རྫོཊ", "rdzoṭ"}, {"རེ་བ", "re ba"}, {"རེད", "red"}, {"རེའུ", "re'u"}, {"རྒ", "rga"}, {"རྒལ", "rgal"}, {"རྒལ་བ", "rgal ba"}, {"རྒསཔ", "rgaspa", "dz"}, {"རྒེད་འོག", "rged 'og", "dz"}, {"རྒེདཔོ", "rgedpo", "dz"}, {"རྒོལ", "rgol"}, {"རྒུན་འབྲུམ", "rgun 'brum", "dz"}, {"རྒྱ", "rgya"}, {"རྒྱ་བྷེ", "rgya bhe"}, {"རྒྱ་བོ", "rgya bo"}, {"རྒྱ་དཀར", "rgya dkar"}, {"རྒྱ་གར", "rgya gar"}, {"རྒྱ་མོ", "rgya mo"}, {"རྒྱ་ནག", "rgya nag"}, {"རྒྱ་སྦོམ", "rgya sbom", "dz"}, {"རྒྱབ", "rgyab", "dz"}, {"རྒྱགས་པ", "rgyags pa"}, {"རྒྱལ", "rgyal"}, {"རྒྱལ་ཁབ", "rgyal khab"}, {"རྒྱལ་ཁོངས", "rgyal khongs"}, {"རྒྱལ་མཚན", "rgyal mtshan"}, {"རྒྱལ་པོ", "rgyal po"}, {"རྒྱལ་པོའི་སྲས་མོ", "rgyal po'i sras mo"}, {"རྒྱལཔོ", "rgyalpo", "dz"}, {"རྒྱམ", "rgyam"}, {"རྒྱམ་ཚྭ", "rgyam tshwa"}, {"རྒྱན", "rgyan"}, {"རྒྱན་སྤྲས", "rgyan spras"}, {"རྒྱན་ཚིག", "rgyan tshig"}, {"རྒྱང", "rgyang"}, {"རྒྱང་འཕེན་པ", "rgyang 'phen pa"}, {"རྒྱས", "rgyas"}, {"རྒྱས་པ", "rgyas pa"}, {"རྒྱུ", "rgyu", "dz"}, {"རྒྱུ་མ", "rgyu ma", "dz"}, {"རྒྱུད", "rgyud"}, {"རྒྱུག་པ", "rgyug pa"}, {"རི", "ri"}, {"རི་མགོ་ན་ཉལ་ན་དཀའ", "ri mgo na nyal na dka'"}, {"རི་ཥ་བྷ", "ri ṣa bha", "dz"}, {"རིག་པ་ཡོད་མི", "rig pa yod mi", "dz"}, {"རིགས་རྒྱུད", "rigs rgyud"}, {"རིགས་རུས", "rigs rus"}, {"རིལབུ", "rilbu", "dz"}, {"རིན་ཆེན་གདུགས", "rin chen gdugs"}, {"རིན་རྡོར", "rin rdor"}, {"རིང", "ring"}, {"རིང་ལུགས", "ring lugs"}, {"རྗེ", "rje"}, {"རྗེ་མཁན་པོ", "rje mkhan po", "dz"}, {"རྗིབུ", "rjibu", "dz"}, {"རྐདཔ", "rkadpa", "dz"}, {"རྐན", "rkan", "dz"}, {"རྐངམ", "rkangma", "dz"}, {"རྐེདཔ", "rkedpa", "dz"}, {"རྐྱབ", "rkyab", "dz"}, {"རྐྱང", "rkyang"}, {"རྐྱེན", "rkyen", "dz"}, {"རླབས", "rlabs"}, {"རླང་འཁོར", "rlang 'khor"}, {"རླིག་རིལ", "rlig ril"}, {"རློབ", "rlob"}, {"རློབ་པ", "rlob pa"}, {"རློབས", "rlobs"}, {"རློག", "rlog"}, {"རློག་པ", "rlog pa"}, {"རློགས", "rlogs"}, {"རླུང", "rlung"}, {"རླུང་ནད", "rlung nad", "dz"}, {"རླུང་རྟ", "rlung rta"}, {"རྨ", "rma", "dz"}, {"རྨགཔ", "rmagpa", "dz"}, {"རྨང", "rmang"}, {"རྨང་ལམ", "rmang lam"}, {"རྨེད", "rmed"}, {"རྨི", "rmi"}, {"རྨི་བ", "rmi ba"}, {"རྨི་ལམ", "rmi lam"}, {"རྨོང་བ", "rmong ba"}, {"རྨུ་བ", "rmu ba"}, {"རྨུགས་པ", "rmugs pa"}, {"རྨུས་པ", "rmus pa"}, {"རྣ་བ", "rna ba"}, {"རྣག", "rnag", "dz"}, {"རྣལ", "rnal"}, {"རྣམ་ཅོ", "rnam co", "dz"}, {"རྣམ་པ", "rnam pa"}, {"རྣམ་ཤེས", "rnam shes"}, {"རྔུབ", "rngub"}, {"རྙེད", "rnyed"}, {"རྙིང", "rnying"}, {"རྙིངམ", "rnyingma", "dz"}, {"རོ་ཁྱི", "ro khyi", "dz"}, {"རྟ", "rta"}, {"རྟིངམ", "rtingma", "dz"}, {"རྩ་བ", "rtsa ba"}, {"རྩ་བར", "rtsa bar", "dz"}, {"རྩང", "rtsang", "dz"}, {"རྩཝ", "rtsawa", "dz"}, {"རྩེ་བ", "rtse ba"}, {"རྩི", "rtsi"}, {"རྩི་བ", "rtsi ba"}, {"རྩིབས", "rtsibs"}, {"རྩིགཔ", "rtsigpa", "dz"}, {"རྩིས", "rtsis"}, {"རྩིསཔ", "rtsispa", "dz"}, {"རྩོམ", "rtsom"}, {"རྩོམ་པ", "rtsom pa"}, {"རྩོམ་སྒྲིག", "rtsom sgrig"}, {"རྩོམས", "rtsoms"}, {"རྩྭ", "rtswa"}, {"རུ་ཏོག", "ru tog", "dz"}, {"རུས་པ", "rus pa"}, {"རུས་སྦལ", "rus sbal"}, {"རྭཝ", "rwawa", "dz"}, {"ཪྻ", "RYa"}, {"ཪྱ", "rya"}, {"ས", "sa"}, {"ས་གོ་ལ", "sa go la"}, {"ས་ཁྲ", "sa khra", "dz"}, {"ས་མགོ", "sa mgo", "dz"}, {"སཾ་ཀྲྀ་ཏི", "saṃ kṛ ti", "dz"}, {"སང་བ", "sang ba"}, {"སངས", "sangs"}, {"སངས་རྒྱས", "sangs rgyas"}, {"སནྟུཏེཤིཝཱཿ", "santuteshiwāḥ"}, {"སརྦ་མངྒལཾ", "sarba manggalaṃ"}, {"སརྦྦ", "sarbba"}, {"སཏྟྭ", "sattwa"}, {"སྦ", "sba"}, {"སྦལ་པ", "sbal pa"}, {"སྦལཔ", "sbalpa", "dz"}, {"སྦས", "sbas"}, {"སྦེད་པ", "sbed pa"}, {"སྦོམ", "sbom", "dz"}, {"སྦྲམ་ཙི", "sbram tsi", "dz"}, {"སྦྲང་མ", "sbrang ma"}, {"སྦྲང་རྩི", "sbrang rtsi"}, {"སྦྲུལ", "sbrul"}, {"སྦུག་ལུ", "sbug lu", "dz"}, {"སྦུལ", "sbul", "dz"}, {"སྦྱང", "sbyang", "dz"}, {"སྦྱང་ནག", "sbyang nag", "dz"}, {"སྦྱངམ", "sbyangma", "dz"}, {"སྦྱར", "sbyar"}, {"སྦྱརད", "sbyard"}, {"སྦྱི་ལི", "sbyi li", "dz"}, {"སྦྱིན་བདག", "sbyin bdag", "dz"}, {"སྦྱིན་པ", "sbyin pa"}, {"སྦྱོར", "sbyor"}, {"སྦྱོར་བ", "sbyor ba"}, {"སྦྱོརད", "sbyord"}, {"སྦྱུག་པ", "sbyug pa"}, {"སྡིག་ཅན", "sdig can", "dz"}, {"སྡིག་པ", "sdig pa"}, {"སྡོད", "sdod", "dz"}, {"སྡོད་ཤིག", "sdod shig", "dz"}, {"སྡོམ", "sdom"}, {"སེ", "se"}, {"སེ་འབྲུ", "se 'bru"}, {"སེམས", "sems"}, {"སེམས་ཅན", "sems can"}, {"སེམས་པ", "sems pa"}, {"སེན་གེ", "sen ge"}, {"སེང", "seng"}, {"སེང་གེ", "seng ge"}, {"སེར་སྦྱངམ", "ser sbyangma", "dz"}, {"སེརཔོ", "serpo", "dz"}, {"སེའུ", "se'u"}, {"སྒ", "sga"}, {"སྒ་སྐྱ", "sga skya"}, {"སྒེ་ཁུང", "sge khung"}, {"སྒེའུ", "sge'u"}, {"སྒོ", "sgo"}, {"སྒོ་ལྕགས", "sgo lcags"}, {"སྒོགཔ", "sgogpa", "dz"}, {"སྒོའི", "sgo'i"}, {"སྒོམ", "sgom"}, {"སྒོང་རྡོག", "sgong rdog"}, {"སྒྲ", "sgra"}, {"སྒྲ་དྲག་པ", "sgra drag pa", "dz"}, {"སྒྲ་འཇམ་པ", "sgra 'jam pa", "dz"}, {"སྒྲ་སྐད", "sgra skad"}, {"སྒྲིག", "sgrig"}, {"སྒྲིག་པ", "sgrig pa"}, {"སྒྲིགས", "sgrigs"}, {"སྒྲོ", "sgro", "dz"}, {"སྒྲོམ", "sgrom", "dz"}, {"སྒྲུབ", "sgrub"}, {"སྒྲུབ་པ", "sgrub pa"}, {"སྒྲུབས", "sgrubs"}, {"སྒྱུ་རྩལ", "sgyu rtsal"}, {"སྒྱུར", "sgyur"}, {"སྒྱུར་བ", "sgyur ba"}, {"སྒྱུརད", "sgyurd"}, {"ཤ", "sha"}, {"ཤལཝ", "shalwa", "dz"}, {"ཤམྦྷལ", "shambhala"}, {"ཤངས", "shangs"}, {"ཤར", "shar", "dz"}, {"ཤར་བ", "shar ba"}, {"ཤཥས", "shaṣasa"}, {"ཤེར་ཕྱིན", "sher phyin"}, {"ཤེས", "shes", "dz"}, {"ཤེས་ནི", "shes ni", "dz"}, {"ཤེས་པ", "shes pa"}, {"ཤེས་སྒོ", "shes sgo"}, {"ཤི", "shi"}, {"ཤི་ནི", "shi ni", "dz"}, {"ཤིག", "shig"}, {"ཤིགས", "shigs"}, {"ཤིང", "shing"}, {"ཤིང་ཏོག", "shing tog"}, {"ཤིང་ཏོག་ཨམ", "shing tog am"}, {"ཤིང་ཚ", "shing tsha"}, {"ཤླཽ་ཀ", "shlau ka", "dz"}, {"ཤོ", "sho", "dz"}, {"ཤོད", "shod"}, {"ཤོག", "shog"}, {"ཤོག་བུ", "shog bu"}, {"ཤྲ་བ་ཎ", "shra ba ṇa", "dz"}, {"ཤྲཱི", "shrī", "dz"}, {"ཤྴ", "shsha"}, {"ཤུགས་ཆེན་པོ", "shugs chen po"}, {"ཤྭཝ", "shwawa", "dz"}, {"སྐད", "skad"}, {"སྐད་རྒྱག་པ", "skad rgyag pa"}, {"སྐམ", "skam", "dz"}, {"སྐར་མ་རྀ་ཥྀ", "skar ma ṛ ṣị", "dz"}, {"སྐུ", "sku"}, {"སྐུདཔ", "skudpa", "dz"}, {"སྐུལ་ཚིགས", "skul tshigs"}, {"སྐྱ", "skya", "dz"}, {"སྐྱབས་འགྲོ", "skyabs 'gro"}, {"སྐྱིད", "skyid", "dz"}, {"སྐྱིན", "skyin"}, {"སྐྱོན", "skyon", "dz"}, {"སྐྱོང་བ", "skyong ba"}, {"སྐྱུརཔོ", "skyurpo", "dz"}, {"སླབ", "slab", "dz"}, {"སླེའོ", "sle'o", "otb"}, {"སློབ", "slob"}, {"སློབ་དཔོན", "slob dpon", "dz"}, {"སློབ་ག", "slob ga"}, {"སློབ་གྲྭ", "slob grwa", "dz"}, {"སློབ་ཁྲིད", "slob khrid"}, {"སློབ་ཁྲིད་བྱེད་པ", "slob khrid byed pa"}, {"སློབ་པ", "slob pa"}, {"སློབས", "slobs"}, {"སྨན", "sman", "dz"}, {"སམྦྷོ་ཊ", "smbho ṭa", "dz"}, {"སྨོ་ཤིག", "smo shig", "dz"}, {"སྨྲ", "smra"}, {"སྨྲང", "smrang", "otb"}, {"སྨྲངས", "smrangs", "otb"}, {"སྨྲས", "smras"}, {"སྨྲེ", "smre"}, {"སྨྲེང", "smreng", "otb"}, {"སྨྲེས", "smres"}, {"སྨྲོས", "smros"}, {"སྨུག་པ", "smug pa"}, {"སྨུག་པོ", "smug po"}, {"སྨྱེ་བ", "smye ba"}, {"སྨྱུ་གུ", "smyu gu", "dz"}, {"སྣ", "sna"}, {"སྣ་གུག", "sna gug"}, {"སྣབས", "snabs"}, {"སྣད་པ", "snad pa"}, {"སྣག", "snag"}, {"སྣག་རྩི", "snag rtsi", "dz"}, {"སྣག་ཚ", "snag tsha"}, {"སྣེའུ", "sne'u"}, {"སྔགས་བཟླས་བརྗོད་ཀྱི་ཡིག་ཆུང", "sngags bzlas brjod kyi yig chung"}, {"སྔགས་པ", "sngags pa", "dz"}, {"སྔོན་འཇུག", "sngon 'jug", "dz"}, {"སྔུ", "sngu", "dz"}, {"སྣྲེལ་ཞི", "snrel zhi", "otb"}, {"སྣྲོ་ན", "snro na"}, {"སྣྲུབས", "snrubs"}, {"སྣུབ", "snub"}, {"སྣུབ་པ", "snub pa"}, {"སྣུབས", "snubs"}, {"སྙལ་བ", "snyal ba"}, {"སྙམ", "snyam"}, {"སྙམ་པ", "snyam pa"}, {"སྙམ་རྩོམ", "snyam rtsom"}, {"སྙིང", "snying"}, {"སྙིང་རྗེ", "snying rje", "dz"}, {"སོ", "so", "dz"}, {"སོ་པ", "so pa"}, {"སོད", "sod"}, {"སོག་པོ", "sog po"}, {"སོང", "song"}, {"སོར", "sor", "dz"}, {"སྤའ་འོ", "spa' 'o", "dz"}, {"སྤགས", "spags", "dz"}, {"སྤེའུ", "spe'u"}, {"སྤོས", "spos", "dz"}, {"སྤྲེལ", "sprel"}, {"སྤྲེའུ", "spre'u"}, {"སྤྲིན", "sprin"}, {"སྤྲིན་པ", "sprin pa"}, {"སྤྲིང", "spring"}, {"སྤྲིང་བ", "spring ba"}, {"སྤྲིངས", "springs"}, {"སྤྲོ་བཏོན", "spro bton", "dz"}, {"སྤྲོ་སྟོན", "spro ston", "dz"}, {"སྤྲོད", "sprod", "dz"}, {"སྤྲུལ", "sprul"}, {"སྤྲུལ་པ", "sprul pa"}, {"སྤྲུལ་སྐུ", "sprul sku"}, {"སྤུ", "spu", "dz"}, {"སྤྱ", "spya", "dz"}, {"སྤྱན", "spyan"}, {"སྤྱང་ཀ", "spyang ka", "dz"}, {"སྤྱང་ཀྱི", "spyang kyi"}, {"སྤྱི", "spyi"}, {"སྤྱི་མི", "spyi mi", "dz"}, {"སྤྱི་མཐུན་རྒྱལ་ཁབ", "spyi mthun rgyal khab"}, {"སྤྱི་ཚོགས", "spyi tshogs"}, {"སྤྱི་ཚོགས་རིང་ལུགས", "spyi tshogs ring lugs"}, {"སྤྱིན", "spyin", "dz"}, {"སྤྱིའུ་ལྟགཔ", "spyi'u ltagpa", "dz"}, {"སྤྱོད", "spyod"}, {"སྤྱོད་པ", "spyod pa", "dz"}, {"སྲ་ཀྲག་ཀྲ", "sra krag kra", "dz"}, {"སྲནམ", "sranma", "dz"}, {"སྲས", "sras"}, {"སྲས་མོ", "sras mo"}, {"སྲསམོ", "srasmo", "dz"}, {"སྲིད", "srid"}, {"སྲིད་གཞུང", "srid gzhung"}, {"སྲིངམོ", "sringmo", "dz"}, {"སྲིནམོ", "srinmo", "dz"}, {"སྲུང་མདུད", "srung mdud"}, {"སྲུངམ", "srungma", "dz"}, {"སྲུངས་སྨན", "srungs sman"}, {"སྟག", "stag"}, {"སྟག་ལྤགས", "stag lpags", "dz"}, {"སྟེགས", "stegs"}, {"སྟེའུ", "ste'u"}, {"སྟོབས", "stobs"}, {"སྟོན", "ston", "dz"}, {"སྟོན་པ", "ston pa"}, {"སྟོང", "stong"}, {"སྟྲཱི", "strī"}, {"སུ", "su"}, {"སུརྻ", "surya", "dz"}, {"སུའུ་ལན", "su'u lan"}, {"ཏཱ་ལའི་བླ་མ", "tā la'i bla ma"}, {"ཐ་དད་པ", "tha dad pa"}, {"ཐ་མི་དད་པ", "tha mi dad pa"}, {"ཐབ", "thab", "dz"}, {"ཐབ་ཤིང", "thab shing", "dz"}, {"ཐག", "thag"}, {"འཐག", "'thag"}, {"ཐག་པ", "thag pa"}, {"འཐག་པ", "'thag pa"}, {"འཐག་པ་པོ", "'thag pa po"}, {"ཐགཔ", "thagpa", "dz"}, {"ཐགས", "thags"}, {"འཐགས་པ", "'thags pa"}, {"ཐགས་འཐག་པ", "thags 'thag pa"}, {"ཐལ་བ", "thal ba"}, {"ཐཱན", "thān"}, {"ཐས", "thas"}, {"ཋི", "ṭhi"}, {"ཐིའུ", "thi'u", "dz"}, {"ཐོ་ཁེ་ཡོ", "tho khe yo"}, {"ཐོ་ལ་ཅི", "tho la ci"}, {"ཐོབ", "thob"}, {"འཐོབ", "'thob", "dz"}, {"ཐོབས", "thobs"}, {"ཐོགས", "thogs"}, {"ཐོགས་ཞིང", "thogs zhing"}, {"ཐོན་འོང་ཡི", "thon 'ong yi", "dz"}, {"ཐྲིག་ཐྲིག", "thrig thrig"}, {"ཐུམས", "thums"}, {"འཐུང", "'thung"}, {"འཐུང་བ", "'thung ba"}, {"འཐུངས", "'thungs"}, {"ཏཱི་ཀྐ", "tī kka"}, {"ཏིང", "ting", "dz"}, {"ཏྲ", "tra"}, {"ཏྲེས་སམ", "tres sam"}, {"ཙ་རི", "tsa ri", "dz"}, {"ཙན་དན", "tsan dan", "dz"}, {"ཚ་བོ", "tsha bo"}, {"ཚ་ལུ་མ", "tsha lu ma"}, {"ཚད", "tshad", "dz"}, {"ཚད་པའི་ནད", "tshad pa'i nad", "dz"}, {"འཚལ་བ", "'tshal ba"}, {"ཚལ་ལུ", "tshal lu", "dz"}, {"ཚལ་མ", "tshal ma"}, {"ཚང", "tshang", "dz"}, {"ཚེ་རིང", "tshe ring", "dz"}, {"ཚེག", "tsheg"}, {"ཚིག", "tshig"}, {"ཚིག་མཛོད", "tshig mdzod"}, {"འཚིག་པ", "'tshig pa"}, {"ཚིག་སླབ་ནི", "tshig slab ni", "dz"}, {"ཚོ", "tsho"}, {"ཚོགས", "tshogs"}, {"ཚོགས་ལྷྭམ", "tshogs lhwam", "dz"}, {"ཚོང་ཁང", "tshong khang", "dz"}, {"ཚུད", "tshud"}, {"ཚུད་པ", "tshud pa"}, {"འཚུད་པ", "'tshud pa"}, {"ཚྭ", "tshwa"}, {"ཙོང", "tsong"}, {"ཙོང་ཁ་པ", "tsong kha pa"}, {"ཙྩོན", "tstson"}, {"ཙྭ", "tswa", "dz"}, {"ཙྭམ་འབྲོག", "tswam 'brog", "dz"}, {"ཊྚ", "ṭṭa"}, {"ཏུན", "tun"}, {"འུ", "'u"}, {"ཨཱུ", "ū"}, {"ཨུ་ཚུགས་ཅན", "u tshugs can", "dz"}, {"འུབ", "'ub", "dz"}, {"ཨུག་པ", "ug pa"}, {"འུགཔ", "'ugpa", "dz"}, {"འུར་སྒྲའི་རྐྱེན་འགས", "'ur sgra'i rkyen 'gas"}, {"ཨུཏྤལ", "utpala"}, {"ཝ", "wa", "dz"}, {"ཝ་གཤོང", "wa gshong", "dz"}, {"ཝཾ་ཤེ", "waṃ she", "dz"}, {"ཝང", "wang", "dz"}, {"ཁུ༹་དཱ", "xu dā", "bft"}, {"ཡབ", "yab", "dz"}, {"ཡལ", "yal", "dz"}, {"ཡང་པོ", "yang po"}, {"ཡི་གེ", "yi ge"}, {"ཡིག་མགོ་མདུན་མ", "yig mgo mdun ma"}, {"ཡིག་མགོ་ཕུར་ཤད་མ", "yig mgo phur shad ma"}, {"ཡིག་མགོ་སྒབ་མ", "yig mgo sgab ma"}, {"ཡིག་མགོ་ཚེག་ཤད་མ", "yig mgo tsheg shad ma"}, {"ཡིག་ཚང", "yig tshang", "dz"}, {"ཡོད", "yod"}, {"ཡོས", "yos"}, {"ཡུདྷིཥྛརཿ", "yudhiṣṭharaḥ"}, {"ཡུལ", "yul"}, {"ཡུམ", "yum", "dz"}, {"ཟ", "za"}, {"ཟ་བ", "za ba"}, {"ཟ་ཁང", "za khang", "dz"}, {"ཟམ", "zam", "dz"}, {"ཟན", "zan"}, {"ཟས", "zas"}, {"ཟེ", "ze", "dz"}, {"ཟེར", "zer", "dz"}, {"ཟེའུ", "ze'u"}, {"ཞབས", "zhabs"}, {"ཞབས་ཁྲ", "zhabs khra", "dz"}, {"ཞག", "zhag"}, {"ཞག་མལ", "zhag mal"}, {"ཞག་པོ", "zhag po"}, {"ཞལ", "zhal", "dz"}, {"ཞང", "zhang"}, {"ཞང་ཀང", "zhang kang"}, {"ཞང་པོ", "zhang po"}, {"ཞང་ཞང", "zhang zhang"}, {"ཞང་ཞུང", "zhang zhung"}, {"ཞེ་དྲགས", "zhe drags"}, {"ཞི་བདེ", "zhi bde"}, {"ཞིག", "zhig"}, {"ཞིང", "zhing"}, {"ཞོ", "zho", "dz"}, {"ཞྭམོ", "zhwamo", "dz"}, {"ཞྭཝ", "zhwawa", "dz"}, {"ཟིལ་བ", "zil ba"}, {"ཟིན་པ", "zin pa"}, {"ཟླ་བ", "zla ba"}, {"ཟོ", "zo"}, {"ཟོ་བ", "zo ba"}, {"ཟོགཔ", "zogpa", "dz"}, {"ཟོརཝ", "zorwa", "dz"}, {"ཟོས", "zos"}, {"ཟུག", "zug", "dz"}, {"ཟུང", "zung"}, {"ཟུངས", "zungs"}, } self:iterate(examples, "check_tr") end return tests 47sdw9ljyweml70buxjxv0utlovqhou মডিউল:Tirh-Deva-translit/testcases 828 168621 510173 2026-06-07T12:45:46Z RedminBot 9553 [[en:Module:Tirh-Deva-translit/testcases]] থেকে আনা হলো 510173 Scribunto text/plain -- Unit tests for [[Module:Tirh-Deva-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local transliterate = require('Module:Tirh-Deva-translit').tr local function tag(text) return '<span class="Deva" lang="mai">' .. text .. '</span>' end local options = { display = tag } --TO DO function tests:do_test_translit(tirh, deva, xlit) self:equals('<span class="Tirh" lang="mai">[[' .. tirh .. '#Maithili|' .. tirh .. ']]</span>', transliterate(tirh, 'deva', 'Tirh'), deva, options) end function tests:test_translit_deva() local examples = { { '𑒂𑒨𑒺', 'आयॆ' }, } self:iterate(examples, 'do_test_translit') end return tests 0o2khkpm6bif83sbea4aol7h9hurvc4 মডিউল:User:AnarcoEstatista/shn-translit/testcases/ 828 168622 510174 2026-06-07T12:45:46Z RedminBot 9553 [[en:Module:User:AnarcoEstatista/shn-translit/testcases/]] থেকে আনা হলো 510174 Scribunto text/plain phoiac9h4m842xq45sp7s6u21eteeq1 মডিউল:User:AshFox/zle-wpo-translit 828 168623 510175 2026-06-07T12:45:47Z RedminBot 9553 [[en:Module:User:AshFox/zle-wpo-translit]] থেকে আনা হলো 510175 Scribunto text/plain local export = {} local tt = { ["А"] = 'A', ["а"] = 'a', ["Б"] = 'B', ["б"] = 'b', ["В"] = 'V', ["в"] = 'v', ["Г"] = 'H', ["г"] = 'h', ["Ґ"] = 'G', ["ґ"] = 'g', ["Д"] = 'D', ["д"] = 'd', ["Е"] = 'Je', ["е"] = 'je', ["Ё"] = 'Jo', ["ё"] = 'jo', ["Ж"] = 'Ž', ["ж"] = 'ž', ["З"] = 'Z', ["з"] = 'z', ["І"] = 'I', ["і"] = 'i', ["И"] = 'Î', ["и"] = 'î', ["Ј"] = 'J', ["ј"] = 'j', ["К"] = 'K', ["к"] = 'k', ["Л"] = 'L', ["л"] = 'l', ["М"] = 'M', ["м"] = 'm', ["Н"] = 'N', ["н"] = 'n', ["О"] = 'O', ["о"] = 'o', ["П"] = 'P', ["п"] = 'p', ["Р"] = 'R', ["р"] = 'r', ["С"] = 'S', ["с"] = 's', ["Т"] = 'T', ["т"] = 't', ["У"] = 'U', ["у"] = 'u', ["Ф"] = 'F', ["ф"] = 'f', ["Х"] = 'X', ["х"] = 'x', ["Ц"] = 'C', ["ц"] = 'c', ["Ч"] = 'Č', ["ч"] = 'č', ["Ш"] = 'Š', ["ш"] = 'š', ["Ы"] = 'Y', ["ы"] = 'y', ["Ь"] = 'ʹ', ["ь"] = 'ʹ', ["Э"] = 'E', ["э"] = 'e', ["Ю"] = 'Ju', ["ю"] = 'ju', ["Я"] = 'Ja', ["я"] = 'ja', -- extended letters ["Є"] = 'Je', ["є"] = 'je', ["Ї"] = 'Ji', ["ї"] = 'ji', ["Й"] = 'J', ["й"] = 'j', ["О̂"] = 'Ô', ["о̂"] = 'ô', ["Ў"] = 'Ŭ', ["ў"] = 'ŭ', ["Щ"] = 'Šč', ["щ"] = 'šč', -- archaic letters ["Ъ"] = '', ["ъ"] = '', ["Ѣ"] = 'I', ["ѣ"] = 'i', ["Ѳ"] = 'F', ["ѳ"] = 'f', ["Ѵ"] = 'I', ["ѵ"] = 'i', -- symbols ["ʼ"] = 'ʺ', ["«"] = '“', ["»"] = '”', } function export.tr(text, lang, sc) text = mw.ustring.gsub(text, "'+", { ["'"] = 'ʺ' }) return (mw.ustring.gsub(text, '.', tt)) end return export 8sew1hdecaz11uwqx4brnt0kcynwrxy মডিউল:User:Bababashqort/tt-translit 828 168624 510176 2026-06-07T12:45:47Z RedminBot 9553 [[en:Module:User:Bababashqort/tt-translit]] থেকে আনা হলো 510176 Scribunto text/plain local export = {} local rsubn = mw.ustring.gsub -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end -- apply rsub() repeatedly until no change local function rsub_repeatedly(term, foo, bar) while true do local new_term = rsub(term, foo, bar) if new_term == term then return term end term = new_term end end local tt = { ["ү"]="ü",['Ү']='Ü', ["т"]="t",['Т']='T', ["р"]="r",['Р']='R', ["ф"]="f",['Ф']='F', ["ю"]="yu",['Ю']='Yu', ["ш"]="ş",['Ш']='Ş', ["ь"]="’",['Ь']='’', ["ъ"]="",['Ъ']='', ["н"]="n",['Н']='N', ["п"]="p",['П']='P', ["й"]="y",['Й']='Y', ["л"]="l",['Л']='L', ["з"]="z",['З']='Z', ["е"]="e",['Е']='E', ["г"]="g",['Г']='G', ["б"]="b",['Б']='B', ["у"]="u",['У']='U', ["с"]="s",['С']='S', ["х"]="x",['Х']='X', ["ч"]="ç",['Ч']='Ç', ["щ"]="şç",['Щ']='Şç', ["я"]="ya",['Я']='Ya', ["ы"]="ı",['Ы']='I', ["э"]="e",['Э']='E', ["м"]="m",['М']='M', ["о"]="o",['О']='O', ["ө"]="ö",['Ө']='Ö', ["и"]="i",['И']='İ', ["ё"]="yo",['Ё']='Yo', ["ж"]="j",['Ж']='J', ["к"]="k",['К']='K', ["д"]="d",['Д']='D', ["в"]="w",['В']='W', ["ц"]="ts",['Ц']='Ts', ["а"]="a",['А']='A', ["ң"]="ñ",['Ң']='Ñ', ["җ"]="c",['Җ']='C', ["һ"]="h",['Һ']='H', ["ә"]="ä",['Ә']='Ä' }; function export.tr(text, lang, sc) text = rsub( text, "([АОӘУЫЕЯЁЮИЕаоәуыэяёюиеъь%A][́̀]?)([Ее])", function(a,e) return a..(e=='е' and 'ye' or 'Ye') end ) -- ү/у should be transliterated as w after vowels (except у/ү itself) text = rsub_repeatedly(text, "([АаЕеЭэЯяӘәИиӨөЫы])[үу]", "%1w") text = rsub_repeatedly(text, "([УҮүу])([АаЫыОоУуӘәЕеИиӨөҮү])", "%1w%2") text = rsub(text, "^Е", "Ye") text = rsub(text, "^е","ye") text = rsub(text, "ия$", "iyä") --not last word end handled in code end text = rsub(text, "([АаЫыОоУуЮюЯя])([Ее])", "%1yı") -- glottal stop text = rsub(text, "([АаЫыОоУуӘәЭэИиӨөҮүЕе])([ЪъЬьЭэ])", "%1'") -- ya yä yu yü local q = {['Я']='Yä',['я']='yä',['Ю']='Yü',['ю']='yü'} text = rsub(text, "([ЯяЮю])([Ьь])", function(a,b) return q[a] end) text = rsub(text, "(%a?)([ЯяЮю])(.?)", function(b,c,a) return b .. (mw.ustring.match(b>'' and b or a,"[ӘЕЭИӨҮәеэиөү]") and q[c] or qq[c]) .. a end) text = rsub(text, ".", tt) -- yı ye text = rsub_repeatedly(text, "([АаЫыОоУуЯяЮюЕе])[Ее]", "%1yı") -- Deal with dual nature of к, г, transliterated either to "front" variants -- k/g or "back" variants q/ğ. The back variants occur before hard signs -- (Ъ/ъ), which then disappear, and also in the vicinity of the back vowels -- а/о/у/ы (and their capital equivalents А/О/У/Ы). The code below that -- handles this appears to say that the sound of word-initial к/г is -- determined by the following vowel, and the sound of non-word-initial -- к/г is determined by the preceding vowel. FIXME: Not sure if this is -- correct. local t = {['К']='Q',['к']='q',['Г']='Ğ',['г']='ğ'} text = rsub(text, "([КкГг])([Ъъ])", function(a,b) return t[a] end) text = rsub(text, "(%a?)([КкГг])(.?)", function(b,c,a) return b .. (mw.ustring.match(b>'' and b or a,"[АОУЫаоуы]") and t[c] or tt[c]) .. a end) text = rsub(text, ".", tt) return text end return export fwq4abhicn6xtyf0jyukgaiim3cmakp মডিউল:User:Bababashqort/tt-translit/testcases 828 168625 510177 2026-06-07T12:45:47Z RedminBot 9553 [[en:Module:User:Bababashqort/tt-translit/testcases]] থেকে আনা হলো 510177 Scribunto text/plain local tests = require("Module:UnitTests") local tt_translit = require("Module:tt-translit") local m_links = require('Module:links') local tt = require('Module:languages').getByCode('tt') local function link(term) return m_links.full_link{term = term, lang = tt, tr = "-"} end function tests:check_translit(Cyrl, Latn) self:equals(link(Cyrl), tt_translit.tr(Cyrl, 'tt'), Latn) end function tests:test_translit() local examples = { { "коелган", "qoyılğan" }, { "иярчен", "iyärçen" }, { "юелган", "yuyılğan" }, { "яек", "yayıq" }, { "яшь", "yäş" }, } self:iterate(examples, "check_translit") end return tests dotgbv32hz1cc803ssv4dqfkp3wiq9e মডিউল:User:Bababashqort:kk-translit 828 168626 510178 2026-06-07T12:45:48Z RedminBot 9553 [[en:Module:User:Bababashqort:kk-translit]] থেকে আনা হলো 510178 Scribunto text/plain local export = {} local vowels = "АаЫыОоҰұӘәЕеІіӨөҮү" local rsubn = mw.ustring.gsub local tt = { ["А"]="A", ["а"]="a", ["Ә"]="Ä", ["ә"]="ä", ["Б"]="B", ["б"]="b", ["В"]="V", ["в"]="v", ["Г"]="G", ["г"]="g", ["Ғ"]="Ğ", ["ғ"]="ğ", ["Д"]="D", ["д"]="d", ["Е"]="E", ["е"]="e", ["Ё"]="Yo", ["ё"]="yo", ["Ж"]="J", ["ж"]="j", ["З"]="Z", ["з"]="z", ["И"]="İy", ["и"]="iy", ["Й"]="Y", ["й"]="y", ["К"]="K", ["к"]="k", ["Қ"]="Q", ["қ"]="q", ["Л"]="L", ["л"]="l", ["М"]="M", ["м"]="m", ["Н"]="N", ["н"]="n", ["Ң"]="Ñ", ["ң"]="ñ", ["О"]="O", ["о"]="o", ["Ө"]="Ö", ["ө"]="ö", ["П"]="P", ["п"]="p", ["Р"]="R", ["р"]="r", ["С"]="S", ["с"]="s", ["Т"]="T", ["т"]="t", ["У"]="W", ["у"]="uw", ["Ұ"]="U", ["ұ"]="u", ["Ү"]="Ü", ["ү"]="ü", ["Ф"]="F", ["ф"]="f", ["Х"]="H", ["х"]="h", ["Һ"]="H", ["һ"]="h", ["Ц"]="Ts", ["ц"]="ts", ["Ч"]="Tc", ["ч"]="tc", ["Ш"]="C", ["ш"]="c", ["Щ"]="Cc", ["щ"]="cc", ["Ъ"]="", ["ъ"]="", ["Ы"]="I", ["ы"]="ı", ["І"]="İ", ["і"]="i", ["Ь"]="", ["ь"]="", ["Э"]="E", ["э"]="e", ["Ю"]="Yu", ["ю"]="yu", ["Я"]="Ya", ["я"]="ya", }; -- Main translit function export.tr(text, lang, sc) if type(text) == "table" then options = {} text, script = text.args[1], text.args[2] end if not sc then sc = require("Module:languages").getByCode("kk"):findBestScript(text):getCode() end if sc ~= "Cyrl" then return nil end local frontvowel = "ӘәЕеІіӨөҮү" local backvowel = "АаЫыОоҰұ" local consonant = "[^" .. vowels .. ". -]" -- decompose text = rsubn(text, "ё", "йо") text = rsubn(text, "ю", "йу") text = rsubn(text, "я", "йа") -- check preceeding vowel -- for w text = rsubn(text, "([" .. backvowel .. "])(" .. consonant .. ")у", "%1%2ыу") text = rsubn(text, "([" .. frontvowel .. "])(" .. consonant .. ")у", "%1%2іу") text = rsubn(text, "нг([^" .. vowels .. "])", "ң%1") text = rsubn(text, "Нг([^" .. vowels .. "])", "Ң%1") text = rsubn(text, "нг$", "ң") text = rsubn(text, "", "") text = rsubn(text, "", "") text = rsubn(text, "[Ии]([Яя])", "%1") --currently it is not clear how these two are romanized text = rsubn(text, "щ", "ш") text = rsubn(text, "Щ", "Ш") text = rsubn(text,"[ьЬ]" , "" ) --remove them if their romanization changes text = rsubn(text, '.', tt) return text end return export a5zzef9hh8ffdbqkiiqqfh4z33weiqn মডিউল:User:Bababashqort:ky-translit 828 168627 510179 2026-06-07T12:45:48Z RedminBot 9553 [[en:Module:User:Bababashqort:ky-translit]] থেকে আনা হলো 510179 Scribunto text/plain local export = {} local m_IPA = require("Module:IPA") local lang = require("Module:languages").getByCode("ky") local C = "[бвгджзйклмнңпрстфхцчшщ]" -- consonants local bV = "[аыоу]" local fV = "[эиөү]" local iV = "[еёюя]" -- iotated vowels local lowerc = { ["А"]="а", ["Б"]="б", ["В"]="в", ["Г"]="г", ["Д"]="д", ["Е"]="е", ["Ё"]="ё", ["Ж"]="ж", ["З"]="з", ["И"]="и", ["Й"]="й", ["К"]="к", ["Л"]="л", ["М"]="м", ["Н"]="н", ["Ң"]="ң", ["О"]="о", ["Ө"]="ө", ["П"]="п", ["Р"]="р", ["С"]="с", ["Т"]="т", ["У"]="у", ["Ү"]="ү", ["Ф"]="ф", ["Х"]="х", ["Ц"]="ц", ["Ч"]="ч", ["Ш"]="ш", ["Щ"]="щ", ["Ъ"]="ъ", ["Ы"]="ы", ["Ь"]="ь", ["Э"]="э", ["Ю"]="ю", ["Я"]="я" } local phon = { ["б"]="b", ["г"]="ɡ", ["д"]="d", ["ж"]="d͡ʒ", ["з"]="z", ["й"]="j", ["к"]="k", ["л"]="l̴", ["м"]="m", ["н"]="n", ["ң"]="ŋ", ["п"]="p", ["р"]="r", ["с"]="s", ["т"]="t", ["ч"]="t͡ʃ", ["ш"]="ʂ", ["е"]="e", ["ё"]="jo", ["ю"]="ju", ["я"]="jɑ", ["а"]="ɑ", ["ы"]="ɯ", ["о"]="o", ["у"]="u", ["э"]="e", ["и"]="i", ["ө"]="ø", ["ү"]="y", ["в"]="v", ["ф"]="f", ["х"]="x", ["ц"]="t͡s", ["ч"]="t͡ʃ", ["щ"]="ɕ", ["ь"]="ʲ" } local function phonetic(text) text = mw.ustring.gsub(text, '.', lowerc) text = mw.ustring.gsub(text, '.', phon) -- Handle к, г uvularization rules text = mw.ustring.gsub(text, "k[ɑɯou]", "q%1") text = mw.ustring.gsub(text, "g[ɑɯou]", "ʁ%1") text = mw.ustring.gsub(text, "[ɑɯou]k", "%1q") text = mw.ustring.gsub(text, "[ɑɯou]g", "%1ʁ") text = mw.ustring.gsub(text, "kq", "q") text = mw.ustring.gsub(text, "gʁ", "ʁ") text = mw.ustring.gsub(text, "[ɑɯou]k", "%1q") text = mw.ustring.gsub(text, "[ɑɯou]g", "%1ʁ") -- Handle ш rules text = mw.ustring.gsub(text, "ʂ[eiøy]", "ʃ%1") text = mw.ustring.gsub(text, "[eiøy]ʂ", "%1ʃ") text = mw.ustring.gsub(text, "ʂʃ", "ʃ") text = mw.ustring.gsub(text, "ʃʂ", "ʃ") -- Handle l rules text = mw.ustring.gsub(text, "l̴[eiøy]", "l%1") text = mw.ustring.gsub(text, "[eiøy]l̴", "%1l") text = mw.ustring.gsub(text, "ll̴", "l̴") text = mw.ustring.gsub(text, "l̴l", "l̴") -- Handle long vowels text = mw.ustring.gsub(text, "[ɑ]ɑ", "ɑː") text = mw.ustring.gsub(text, "[o]o", "oː") text = mw.ustring.gsub(text, "[u]u", "uː") text = mw.ustring.gsub(text, "[e]e", "eː") text = mw.ustring.gsub(text, "[ø]ø", "øː") text = mw.ustring.gsub(text, "[y]y", "yː") return text end function export.IPA(frame) local words = {} for _, word in ipairs(frame:getParent().args) do table.insert(words, word) end if #words == 0 then words = {mw.loadData("Module:headword/data").pagename} end local IPA_results = {} for _, word in ipairs(words) do table.insert(IPA_results, { pron = "/" .. phonetic(word) .. "/" }) end return m_IPA.format_IPA_full { lang = lang, items = IPA_results } end return export cbq2ca0ftgi59txwyk3afp419kitb5m মডিউল:User:Bababashqort:ky-translit-test 828 168628 510180 2026-06-07T12:45:48Z RedminBot 9553 [[en:Module:User:Bababashqort:ky-translit-test]] থেকে আনা হলো 510180 Scribunto text/plain local m_module = require("Module:User:Bababashqort:ky-translit") print(m_module.IPA{args={"таене", "байке", "Европа"}}) qbvtra97m6zaeaveohssm5e0dmsbuqp মডিউল:User:Bababashqort:tt-translit 828 168629 510181 2026-06-07T12:45:49Z RedminBot 9553 [[en:Module:User:Bababashqort:tt-translit]] থেকে আনা হলো 510181 Scribunto text/plain local export = {} local rsubn = mw.ustring.gsub -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end -- apply rsub() repeatedly until no change local function rsub_repeatedly(term, foo, bar) while true do local new_term = rsub(term, foo, bar) if new_term == term then return term end term = new_term end end local tt = { ["ү"]="ü",['Ү']='Ü', ["т"]="t",['Т']='T', ["р"]="r",['Р']='R', ["ф"]="f",['Ф']='F', ["ю"]="yu",['Ю']='Yu', ["ш"]="ş",['Ш']='Ş', ["ь"]="’",['Ь']='’', ["ъ"]="ʺ",['Ъ']='ʺ', ["н"]="n",['Н']='N', ["п"]="p",['П']='P', ["й"]="y",['Й']='Y', ["л"]="l",['Л']='L', ["з"]="z",['З']='Z', ["е"]="e",['Е']='E', ["г"]="g",['Г']='G', ["б"]="b",['Б']='B', ["у"]="u",['У']='U', ["с"]="s",['С']='S', ["х"]="x",['Х']='X', ["ч"]="ç",['Ч']='Ç', ["щ"]="şç",['Щ']='Şç', ["я"]="ya",['Я']='Ya', ["ы"]="ı",['Ы']='I', ["э"]="e",['Э']='E', ["м"]="m",['М']='M', ["о"]="o",['О']='O', ["ө"]="ö",['Ө']='Ö', ["и"]="i",['И']='İ', ["ё"]="yo",['Ё']='Yo', ["ж"]="j",['Ж']='J', ["к"]="k",['К']='K', ["д"]="d",['Д']='D', ["в"]="w",['В']='W', ["ц"]="ts",['Ц']='Ts', ["а"]="a",['А']='A', ["ң"]="ñ",['Ң']='Ñ', ["җ"]="c",['Җ']='C', ["һ"]="h",['Һ']='H', ["ә"]="ə",['Ә']='Ə' }; function export.tr(text, lang, sc) text = rsub( text, "([АОӘУЫЕЯЁЮИЕаоәуыэяёюиеъь%A][́̀]?)([Ее])", function(a,e) return a..(e=='е' and 'ye' or 'Ye') end ) -- ү/у should be transliterated as w after vowels (except у/ү itself) text = rsub_repeatedly(text, "([АаЕеЭэЯяӘәИиӨөЫы])[үу]", "%1w") text = rsub_repeatedly(text, "([УҮүу])([АаЫыОоУуӘәЕеИиӨөҮү])", "%1w%2") text = rsub(text, "^Е", "Ye") text = rsub(text, "^е","ye") -- Deal with dual nature of к, г, transliterated either to "front" variants -- k/g or "back" variants q/ğ. The back variants occur before hard signs -- (Ъ/ъ), which then disappear, and also in the vicinity of the back vowels -- а/о/у/ы (and their capital equivalents А/О/У/Ы). The code below that -- handles this appears to say that the sound of word-initial к/г is -- determined by the following vowel, and the sound of non-word-initial -- к/г is determined by the preceding vowel. FIXME: Not sure if this is -- correct. -- glottal stop text = rsub(text, "([АаЫыОоУуӘәЭэИиӨөҮүЕе])([ЪъЬьЭэ])", "%1'") local t = {['К']='Q',['к']='q',['Г']='Ğ',['г']='ğ'} text = rsub(text, "([КкГг])([Ъъ])", function(a,b) return t[a] end) text = rsub(text, "(%a?)([КкГг])(.?)", function(b,c,a) return b .. (mw.ustring.match(b>'' and b or a,"[АОУЫаоуы]") and t[c] or tt[c]) .. a end ) text = rsub(text, "ия%A", "iyə") text = rsub(text, ".", tt) return text end return export r5tko4oxkduew7k0vqooe44q1w08lhc মডিউল:User:Bababashqort:tt-translit/testcases 828 168630 510182 2026-06-07T12:45:49Z RedminBot 9553 [[en:Module:User:Bababashqort:tt-translit/testcases]] থেকে আনা হলো 510182 Scribunto text/plain local tests = require("Module:UnitTests") local tt_translit = require("Module:User:Bababashqort:tt-translit") function tests:check_translit(Cyrl, Latn) self:equals(('<span lang="tt" class="Cyrl mention">[[%s#Tatar|%s]]</span>'):format(Cyrl, Cyrl), tt_translit.tr(Cyrl, 'tt', 'Cyrl'), Latn) end function tests:test_translit() local examples = { { "тәэсир", "tə'sir" }, { "иярчен", "iyərçen" }, { "ууы", "uwuwı" }, } self:iterate(examples, "check_translit") end return tests 9arsoast0ysyorgn5im23mcirgx8e70 মডিউল:User:Babr/fa-translit-fix 828 168631 510183 2026-06-07T12:45:50Z RedminBot 9553 [[en:Module:User:Babr/fa-translit-fix]] থেকে আনা হলো 510183 Scribunto text/plain local export = {} local m_str_utils = require("Module:string utilities") local gcodepoint = m_str_utils.gcodepoint local rfind = m_str_utils.find local rsubn = m_str_utils.gsub local rmatch = m_str_utils.match local rsplit = m_str_utils.split local U = m_str_utils.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- assigned below local has_diacritics -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local zwnj = U(0x200C) -- zero-width non-joiner local alif_madda = U(0x622) local alif_hamza_below = U(0x625) local alif = U(0x627) local taa_marbuuTa = U(0x629) local laam = U(0x644) local waaw = U(0x648) local alif_maqSuura = U(0x649) local yaa = U(0x6CC) local fatHataan = U(0x64B) local Dammataan = U(0x64C) local kasrataan = U(0x64D) local fatHa = U(0x64E) local Damma = U(0x64F) local kasra = U(0x650) local shadda = U(0x651) local sukuun = U(0x652) local dagger_alif = U(0x670) local alif_waSl = U(0x671) --local zwj = U(0x200D) -- zero-width joiner local lrm = U(0x200E) -- left-to-right mark local rlm = U(0x200F) -- right-to-left mark -- Occurs after al- in allaḏī and variants so that we can implement elision of -- a- after a preceding vowel, after which we remove the marker. local alladi_marker = U(0xFFF0) local tt = { ["ب"] = "b", ["پ"] = "p", ["ت"] = "t", ["ث"] = "s", ["ج"] = "j", ["چ"] = "č", ["ح"] = "h", ["خ"] = "x", ["د"] = "d", ["ذ"] = "z", ["ر"] = "r", ["ز"] = "z", ["ژ"] = "ž", ["س"] = "s", ["ش"] = "š", ["ص"] = "s", ["ض"] = "z", ["ط"] = "t", ["ظ"] = "z", ["غ"] = "ġ", ["ف"] = "f", ["ق"] = "q", ["ک"] = "k", ["گ"] = "g", ["ل"] = "l", ["م"] = "m", ["ن"] = "n", ["و"] = "w", ["ی"] = "y", ["۔"] = ".", ["ه"] = "h", ["ع"] = "'", ["ء"] = "'", ["ئ"] = "'", ["ؤ"] = "'", ["أ"] = "'", ["ا"]="ā", [waaw]="w", --"ū" after ḍamma (u) and not before diacritic [yaa]="y", --"ī" after kasra (i) and not before diacritic [alif_maqSuura]="ā", -- ʾalif maqṣūra [alif_madda]="'ā", -- ʾalif madda [alif_waSl]= "", -- hamzatu l-waṣl [dagger_alif] = "ā", -- ʾalif xanjariyya = dagger ʾalif (Koranic diacritic) -- short vowels, šádda and sukūn [fatHataan]="an", -- fatḥatan [Dammataan]="un", -- ḍammatan [kasrataan]="in", -- kasratan [fatHa]="a", -- fatḥa [Damma]="u", -- ḍamma [kasra]="i", -- kasra -- šadda - doubled consonant [sukuun]="", --sukūn - no vowel [zwnj]="-", -- ligatures ["ﻻ"] = "lā", ["ﷲ"] = "allāh", -- kashida ["ـ"] = "", -- kashida, no sound -- numerals ["۱"] = "1", ["۲"] = "2", ["۳"] = "3", ["۴"] = "4", ["۵"] = "5", ["۶"] = "6", ["۷"] = "7", ["۸"] = "8", ["۹"] = "9", ["۰"] = "0", -- punctuation (leave on separate lines) ["؟"] = "?", -- question mark ["،"] = ",", -- comma ["؛"] = ";", -- semicolon ["«"] = "“", -- quotation mark ["»"] = "”", -- quotation mark ["٪"] = "%", -- percent ["؉"] = "‰", -- per mille ["٫"] = ".", -- decimals ["٬"] = ",", -- thousan -- regional characters (FOR HAZARAGI DIALECT) ["ټ"] = "ṭ", ["ٹ"] = "ṭ", ["ډ"] = "ḍ", ["ڈ"] = "ḍ", -- for other languages (NOT PERSIAN) ["ړ"] = "ṛ", ["څ"] = "ć", ["ځ"] = "ź", ["ګ"] = "g", ["ے"] = "ē", } local sun_letters = "تثدذرزسشصضطظلن" -- For use in implementing sun-letter assimilation of ال (al-) local ttsun1 = {} local ttsun2 = {} local ttsun3 = {} for cp in gcodepoint(sun_letters) do local ch = U(cp) ttsun1[ch] = tt[ch] ttsun2["l-" .. ch] = tt[ch] .. "-" .. ch table.insert(ttsun3, tt[ch]) end -- For use in implementing elision of al- local sun_letters_tr = table.concat(ttsun3, "") local consonants_needing_vowels = "بپتټٹثجچحخدډڈذرزژسشصضطظعغفقکگلمنؤهئء" -- consonants on the right side; includes alif madda local rconsonants = consonants_needing_vowels .. "ویآ" -- consonants on the left side; does not include alif madda local lconsonants = consonants_needing_vowels .. "وی" -- Arabic semicolon, comma, question mark; taṭwīl; period, exclamation point, -- single quote for bold/italic, double quotes for quoted material local punctuation = "؟،؛" .. "ـ" .. ".!'" .. '"' local space_like = "%s'" .. '"' .. zwnj local space_like_class = "[" .. space_like .. "]" local numbers = "١٢٣٤٥٦٧٨٩٠" local before_diacritic_checking_subs = { ------------ transformations prior to checking for diacritics -------------- -- random Koranic marks and presentation forms {U(0x06E1), sukuun}, -- "Small High Dotless Head of Khah" (variant of sukūn) {U(0x06DA), ""}, -- "Small High Jeem" {U(0x06DF), ""}, -- "Small High Rounded Zero" (FIXME: correct?) {U(0x08F0), U(0x64B)}, -- "Open Fathatan" {U(0x08F1), U(0x64C)}, -- "Open Dammatan" {U(0x08F2), U(0x64D)}, -- "Open Kasratan" {U(0x06E4), ""}, -- "Small High Madda" (FIXME: correct?) {U(0x06D6), ""}, -- "Small High Ligature Sad with Lam with Alef Maksura" (FIXME: there are others we need to do) {U(0x06E5), "و"}, {U(0x06E6), "ی"}, -- convert llh for allāh into ll+shadda+dagger-alif+h {"لله", "للّٰه"}, -- shadda+short-vowel (including tanwīn vowels, i.e. -an -in -un) gets -- replaced with short-vowel+shadda during NFC normalisation, which -- MediaWiki does for all Unicode strings; however, it makes the -- izafa {U(0x06C0), "ه" .. U(0x0654)}, {U(0x0654), zwnj .. "یِ"}, -- transliteration process inconvenient, so undo it. {"([" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. dagger_alif .. "])" .. shadda, shadda .. "%1"}, -- ignore Quranic gemination at beginning of word due to assimilation of preceding consonant {" ([" .. lconsonants .. "])" .. shadda, " %1"}, -- ignore alif jamīla (otiose alif in 3pl verb forms) -- #1: handle ḍamma + wāw + alif (final -ū) {Damma .. waaw .. alif, Damma .. waaw}, -- #2: handle wāw + sukūn + alif (final -w in -aw in defective verbs) -- this must go before the generation of w, which removes the waw here. {waaw .. sukuun .. alif, waaw .. sukuun}, -- majhuul vowels {"([" .. lconsonants .. "]" .. shadda .. "?)" .. waaw .. "([" .. rconsonants .. "]" .. "[" .. sukuun .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. dagger_alif .. shadda .. space_like .. "])", "%1" .. "ō" .. "%2"}, {"([" .. lconsonants .. "]" .. shadda .. "?)" .. yaa .. "([" .. rconsonants .. "]" .. "[" .. sukuun .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. dagger_alif .. shadda .. space_like .. "])", "%1" .. "ē" .. "%2"}, {"([" .. lconsonants .. "]" .. shadda .. "?)" .. waaw .. "([" .. rconsonants .. "]?)$", "%1" .. "ō" .. "%2"}, {"([" .. lconsonants .. "]" .. shadda .. "?)" .. yaa .. "([" .. rconsonants .. "]?)$", "%1" .. "ē" .. "%2"}, {"^" .. "([" .. space_like .. "]?)" .. alif .. waaw .. "([" .. rconsonants .. "]?)", "%1" .. "ō" .. "%2"}, {"^" .. "([" .. space_like .. "]?)" .. alif .. yaa .. "([" .. rconsonants .. "]?)", "%1" .. "ē" .. "%2"}, -- ignore final alif or alif maqṣūra following fatḥatan (e.g. in accusative -- singular or words like عَصًا "stick" or هُدًى "guidance"; this is called -- tanwin nasb) {fatHataan .. "[" .. alif .. alif_maqSuura .. "]", fatHataan}, -- same but with the fatḥatan placed over the alif or alif maqṣūra -- instead of over the previous letter (considered a misspelling but -- common) {"[" .. alif .. alif_maqSuura .. "]" .. fatHataan, fatHataan}, -- tāʾ marbūṭa should always be preceded by fatḥa, alif, alif madda or -- dagger alif; infer fatḥa if not {"([^" .. fatHa .. alif .. alif_madda .. dagger_alif .. "])" .. taa_marbuuTa, "%1" .. fatHa .. taa_marbuuTa}, -- similarly for alif between consonants, possibly marked with shadda -- (does not apply to initial alif, which is silent when not marked with -- hamza, or final alif, which might be pronounced as -an) -- {"([" .. lconsonants .. "]" .. shadda .. "?)" .. alif .. "([" .. rconsonants .. "])", -- "%1" .. fatHa .. alif .. "%2"}, -- infer fatḥa in case of non-fatḥa + alif/alif-maqṣūra + dagger alif {"([^" .. fatHa .. "])([" .. alif .. alif_maqSuura .. "]" .. dagger_alif .. ")", "%1" .. fatHa .. "%2"}, -- infer kasra in case of hamza-under-alif not + kasra {alif_hamza_below .. "([^" .. kasra .. kasrataan .. "])", alif_hamza_below .. kasra .. "%1"}, -- ignore dagger alif placed over regular alif or alif maqṣūra {"([" .. alif .. alif_maqSuura .. "])" .. dagger_alif, "%1"}, ----------- rest of these concern definite article alif-lām ---------- -- in kasra/ḍamma + alif + lam, make alif into hamzatu l-waṣl, so we -- handle cases like بِالتَّوْفِیق (bi-t-tawfīq) correctly {"([" .. Damma .. kasra .. "])" .. alif .. laam, "%1" .. alif_waSl .. laam}, -- al + consonant + shadda (only recognize word-initially if regular alif): remove shadda {"^(" .. alif .. fatHa .. "?" .. laam .. "[" .. lconsonants .. "])" .. shadda, "%1"}, {"(" .. space_like_class .. alif .. fatHa .. "?" .. laam .. "[" .. lconsonants .. "])" .. shadda, "%1"}, {"(" .. alif_waSl .. fatHa .. "?" .. laam .. "[" .. lconsonants .. "])" .. shadda, "%1"}, -- handle l- hamzatu l-waṣl or word-initial al- {"^" .. alif .. fatHa .. "?" .. laam, "al-"}, {"(" .. space_like_class .. ")" .. alif .. fatHa .. "?" .. laam, "%1al-"}, -- next one for bi-t-tawfīq {"([" .. Damma .. kasra .. "])" .. alif_waSl .. fatHa .. "?" .. laam, "%1-l-"}, -- next one for remaining hamzatu l-waṣl (at beginning of word) {alif_waSl .. fatHa .. "?" .. laam, "l-"}, -- special casing if the l in al- has a shadda on it (as in الَّذِی "that"), -- so we don't mistakenly double the dash; insert a special marker here so -- that we know later to elide the a- after a vowel {"l%-" .. shadda, "l" .. alladi_marker .. "l"}, -- implement assimilation of sun letters {"l%-[" .. sun_letters .. "]", ttsun2}, } -- Transliterate the word(s) in TEXT. LANG (the language) and SC (the script) -- are ignored. OMIT_I3RAAB means leave out final short vowels (ʾiʿrāb). -- GRAY_I3RAAB means render transliterate short vowels (ʾiʿrāb) in gray. -- FORCE_TRANSLIT causes even non-vocalized text to be transliterated -- (normally the function checks for non-vocalized text and returns nil, -- since such text is ambiguous in transliteration). function export.tr(text, lang, sc, omit_i3raab, gray_i3raab, force_translit) -- make it possible to call this function from a template if type(text) == "table" then local function f(x) return (x ~= "") and x or nil end text, lang, sc, omit_i3raab, force_translit = f(text.args[1]), f(text.args[2]), f(text.args[3]), f(text.args[4]), f(text.args[5]) end for _, sub in ipairs(before_diacritic_checking_subs) do text = rsub(text, sub[1], sub[2]) end if not force_translit and not has_diacritics(text) then require("Module:debug").track("ar-translit/lacking diacritics") return nil end ------------ transformations after checking for diacritics -------------- -- Replace plain alif with hamzatu l-waṣl when followed by fatḥa/ḍamma/kasra. -- Must go after handling of initial al-, which distinguishes alif-fatḥa -- from alif w/hamzatu l-waṣl. Must go before generation of ū and ī, which -- eliminate the ḍamma/kasra. text = rsub(text, alif .. "([" .. fatHa .. Damma .. kasra .. "])", alif_waSl .. "%1") -- ḍamma + waw not followed by a diacritic is ū, otherwise w text = rsub(text, Damma .. waaw .. "([^" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. shadda .. sukuun .. dagger_alif .. "ē" .. "ō" .. "])", "ū%1") text = rsub(text, Damma .. waaw .. "$", "ū") -- kasra + yaa not followed by a diacritic (or ū from prev step) is ī, otherwise y text = rsub(text, kasra .. yaa .. "([^" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. shadda .. sukuun .. dagger_alif .. "ē" .. "ō" .. "ū])", "ī%1") text = rsub(text, kasra .. yaa .. "$", "ī") -- convert shadda to double letter. text = rsub(text, "(.)" .. shadda, "%1%1") if not omit_i3raab and gray_i3raab then -- show ʾiʿrāb grayed in transliteration -- decide whether to gray out the t in ﺓ. If word begins with al- or l-, yes. -- Otherwise, no if word ends in a/i/u, yes if ends in an/in/un. text = rsub(text, "^(a?l%-[^%s]+)" .. taa_marbuuTa .. "([" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. "])", '%1<span style="color: #888888">t</span>%2') text = rsub(text, "(" .. space_like_class .. "a?l%-[^%s]+)" .. taa_marbuuTa .. "([" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. "])", '%1<span style="color: #888888">t</span>%2') text = rsub(text, taa_marbuuTa .. "([" .. fatHa .. Damma .. kasra .. "])", "t%1") text = rsub(text, taa_marbuuTa .. "([" .. fatHataan .. Dammataan .. kasrataan .. "])", '<span style="color: #888888">t</span>%1') text = rsub(text, ".", { [fatHataan] = '<span style="color: #888888">an</span>', [kasrataan] = '<span style="color: #888888">in</span>', [Dammataan] = '<span style="color: #888888">un</span>' }) text = rsub(text, "([" .. fatHa .. Damma .. kasra .. "])(" .. space_like_class .. ")", function(vowel, space) vowel_repl = { [fatHa] = '<span style="color: #888888">a</span> ', [kasra] = '<span style="color: #888888">i</span> ', [Damma] = '<span style="color: #888888">u</span> ' } return vowel_repl[vowel] .. space end ) text = rsub(text, "[" .. fatHa .. Damma .. kasra .. "]$", { [fatHa] = '<span style="color: #888888">a</span>', [kasra] = '<span style="color: #888888">i</span>', [Damma] = '<span style="color: #888888">u</span>' }) text = rsub(text, '</span><span style="color: #888888">', "") elseif omit_i3raab then -- omit ʾiʿrāb in transliteration text = rsub(text, "[" .. fatHataan .. Dammataan .. kasrataan .. "]", "") text = rsub(text, "[" .. fatHa .. Damma .. kasra .. "](" .. space_like_class .. ")", "%1") text = rsub(text, "[" .. fatHa .. Damma .. kasra .. "]$", "") end -- tāʾ marbūṭa should not be rendered by -t if word-final even when -- ʾiʿrāb (desinential inflection) is shown; instead, use (t) before -- whitespace, nothing when final; but render final -ﺍﺓ and -ﺁﺓ as -āh, -- consistent with Wehr's dictionary -- Left-to-right or right-to-left mark at end of text will prevent tāʾ marbūṭa -- from being transliterated correctly. text = string.gsub(text, lrm, "") text = string.gsub(text, rlm, "") text = rsub(text, "([" .. alif .. alif_madda .. "])" .. taa_marbuuTa .. "$", "%1h") -- Ignore final tāʾ marbūṭa (it appears as "a" due to the preceding -- short vowel). Need to do this after graying or omitting word-final -- ʾiʿrāb. text = rsub(text, taa_marbuuTa .. "$", "") text = rsub(text, taa_marbuuTa .. "(%p)", "%1") if not omit_i3raab then -- show ʾiʿrāb in transliteration text = rsub(text, taa_marbuuTa .. "(" .. space_like_class .. ")", "(t)%1") else -- When omitting ʾiʿrāb, show all non-absolutely-final instances of -- tāʾ marbūṭa as (t), with trailing ʾiʿrāb omitted. text = rsub(text, taa_marbuuTa, "(t)") end -- tatwīl should be rendered as - at beginning or end of word. It will -- be rendered as nothing in the middle of a word (FIXME, do we want -- this?) text = rsub(text, "^ـ", "-") text = rsub(text, "(" .. space_like_class .. ")ـ", "%1-") text = rsub(text, "ـ$", "-") text = rsub(text, "ـ(" .. space_like_class .. ")", "-%1") -- Now convert remaining Arabic chars according to table. text = rsub(text, ".", tt) text = rsub(text, "aā", "ā") -- Implement elision of al- after a final vowel. We do this -- conservatively, only handling elision of the definite article and related -- terms (specifically, relative pronoun الَّذِی (allaḏī) and variants) rather -- than elision in other cases of hamzat al-waṣl (e.g. form-I imperatives -- or form-VII and above verbal nouns) partly because elision in -- these cases isn't so common in MSA and partly to avoid excessive -- elision in case of words written with initial bare alif instead of -- properly with hamzated alif. Possibly we should reconsider. text = rsub(text, "([aiuāīū]'* +'*)a([" .. sun_letters_tr .. "][%-" .. alladi_marker .. "])", "%1%2") if gray_i3raab then text = rsub(text, "([aiuāīū]'*</span>'* +'*)a([" .. sun_letters_tr .. "][%-" .. alladi_marker .. "])", "%1%2") end -- remove indicator of allaḏī, which has served its purpose text = rsub(text, alladi_marker, "") -- Special-case the transliteration of allāh, without the hyphen. text = rsub(text, "^(a?)l%-lāh", "%1llāh") text = rsub(text, "(" .. space_like_class .. "a?)l%-lāh", "%1llāh") -- Compress multiple spaces, which may occur e.g. when removing Koranic diacritics. text = rsub(text, "(%s)%s+", "%1") return text end local has_diacritics_subs = { -- FIXME! What about lam-alif ligature? -- remove punctuation and shadda -- must go before removing final consonants {"[" .. punctuation .. shadda .. "]", ""}, -- Remove consonants at end of word or utterance, so that we're OK with -- words lacking iʿrāb (must go before removing other consonants). -- If you want to catch places without iʿrāb, comment out the next two lines. {"[" .. lconsonants .. "]$", ""}, {"[" .. lconsonants .. "]([%)%]}]?" .. space_like_class .. ")", "%1"}, -- remove consonants (or alif) when followed by diacritics -- must go after removing shadda -- do not remove the diacritics yet because we need them to handle -- long-vowel sequences of diacritic + pseudo-consonant {"[" .. lconsonants .. alif .. "]([" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. sukuun .. dagger_alif .. "ē" .. "ō" .."])", "%1"}, -- the following two must go after removing consonants w/diacritics because -- we only want to treat vocalic wāw/yā' in them (we want to have removed -- wāw/yā' followed by a diacritic) -- remove ḍamma + wāw {Damma .. waaw, ""}, -- remove kasra + yā' {kasra .. yaa, ""}, -- remove fatḥa/fatḥatan + alif/alif-maqṣūra {"[" .. fatHataan .. fatHa .. "][" .. alif .. alif_maqSuura .. "]", ""}, -- remove diacritics {"[" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. sukuun .. dagger_alif .. "]", ""}, -- remove numbers, hamzatu l-waṣl, alif madda {"[" .. numbers .. "ٱ" .. "آ" .. "]", ""}, -- remove non-Arabic characters {"[^" .. U(0x0600) .. "-" .. U(0x06FF) .. U(0x0750) .. "-" .. U(0x077F) .. U(0x08A0) .. "-" .. U(0x08FF) .. U(0xFB50) .. "-" .. U(0xFDFF) .. U(0xFE70) .. "-" .. U(0xFEFF) .. "]", ""} } -- declared as local above function has_diacritics(text) local orig_text = text local count text, count = rsubn(text, "[" .. lrm .. rlm .. "]", "") if count > 0 then require("Module:debug").track("ar-translit/lrm or rlm") end for _, sub in ipairs(has_diacritics_subs) do text = rsub(text, unpack(sub)) end if #text > 0 then mw.log(("Check for missing diacritics failed; original text '%s', text without diacritics '%s'"):format( orig_text, text)) end return #text == 0 end -- Return true if transliteration TR is an irregular transliteration of -- ARABIC. Return false if ARABIC can't be transliterated. For purposes of -- establishing regularity, hyphens are ignored and word-final tāʾ marbūṭa -- can be transliterated as "(t)", "" or "t". function export.irregular_translit(arabic, tr) if not arabic or arabic == "" or not tr or tr == "" then return false end local regtr = export.tr(arabic) if not regtr or regtr == tr then return false end local arwords = rsplit(arabic, " ") local regwords = rsplit(regtr, " ") local words = rsplit(tr, " ") if #regwords ~= #words or #regwords ~= #arwords then return true end for i=1,#regwords do local regword = regwords[i] local word = words[i] local arword = arwords[i] -- Resolve final (t) in auto-translit to t, h or nothing if rfind(regword, "%(t%)$") then regword = rfind(word, "āh$") and rsub(regword, "%(t%)$", "h") or rfind(word, "t$") and rsub(regword, "%(t%)$", "t") or rsub(regword, "%(t%)$", "") end -- Resolve clitics + short a + alif-lām, which may get auto-transliterated -- to contain long ā, to short a if the manual translit has it; note -- that currently in cases with assimilated l, the auto-translit will -- fail, so we won't ever get here and don't have to worry about -- auto-translit l against manual-translit assimilated char. local clitic_chars = "^[وفکل]" -- separate line to avoid L2R display weirdness if rfind(arword, clitic_chars .. fatHa .. "?[" .. alif .. alif_waSl .. "]" .. laam) and rfind(word, "^[wfkl]a%-") then regword = rsub(regword, "^([wfkl])ā", "%1a") end -- Ignore hyphens when comparing if rsub(regword, "%-", "") ~= rsub(word, "%-", "") then return true end end return false end return export qat6vxepz0cszjh2mituctpggzpeen8 মডিউল:User:Babr/fa-translit-fix/testcases 828 168632 510184 2026-06-07T12:45:50Z RedminBot 9553 [[en:Module:User:Babr/fa-translit-fix/testcases]] থেকে আনা হলো 510184 Scribunto text/plain local tests = require('Module:UnitTests') local fa_translit = require('Module:User:Babr/fa-translit-fix') local full_link = require('Module:links').full_link local fa = require('Module:languages').getByCode('fa') local rlm = require("Module:string/char")(0x200F) -- right-to-left mark local function link(word) return full_link{ term = word, lang = fa, tr = "-" } end --TO DO function tests:do_test_translit(arab, roman) self:equals(link(arab), fa_translit.tr(arab, 'fa', 'Persian'), roman) end function tests:test_translit_persian() local examples = { { 'سَرْاَنْجَام' .. rlm, "sar-anjām" }, { 'کُروز', "kurōz" }, { 'دَهْ', "dah"}, --always "h" near a vowel { 'دَه', "da"}, --always a when theres no vowel { 'سُؤَال', "su'āl" }, { 'کُرُوز', "kurūz" }, -- this word is intentionally incorrect { 'وَاوْ', "wāw" }, {'نَوْروز', "nawrōz"}, { 'قَهْوَه‌اِی', "qahwa-ī" }, -- case for ه‌َای as a-'ī can be changed to yī { 'قَهْوَه‌یِی', "qahwa-yī" }, -- case for ه‌یِی as a-'ī {'خْوَانْدَن', "xwāndan"}, -- case for خوَا as xwā {'خْویش', "xwēš"}, {'خْوَد', "xwad"}, -- case for خو as xo (Iranian Persian) and xwad (Classical Persian) { 'چَامَه‌سَرَایِی', "čāma-sarāyī" }, { 'طَنِین', "tanīn" }, { 'لِهٰذَا', "lihāzā" }, -- can be lehāzā if majhul diacritics are shown { 'قَهْرًا', "qahran" }, { 'عَصاً', "asan" }, --either placement works { 'خَانَه', "xāna" }, { 'کورِیَایِ شُمَالِی', "kōriyā-yi šumālī" }, { 'ضَمَّه', "zamma" }, { 'ضَمِّهْ', "zammih" }, -- force include final -h with diacritics { 'کِه', "ki"}, { 'کِهْ', "kih" }, -- another example of forcing the h { 'اَرْمَنِسْتَان', "armanistān" }, { 'بَاکُو', "bākū" }, { 'کَسی', "kasē"}, --word final -ē {"بَرَادَرِ بُزُرْگ", "barādar-i buzurg"}, -- izafa/ezafe marked with a dash - {'قُرُونِ وُسْطیٰ', "qurūn-i wustā" }, -- a dagger alif case {'دَر-آمَد', "dar-āmad" }, -- alif madda test { 'بَازِیِ شَطْرَنْج', "bāzī-yi šatranj" }, { 'ایرَانِیَان', "ērāniyān"}, { 'سُؤَال', "su'āl"}, --if majhul diacritics are used then so'āl { 'صُبَاح', "subāh" }, { 'صُبْح', "subh"}, { 'صُبْه', "subh"}, --purposefully mispelt { "دُروغ گویْ", "durōġ gōy"}, --have semivowels become consonts with jazm { 'او', "ō" }, -- transliteration of wa, beginning of sentence { 'وَ', "wa" }, --transliteration of wa, elsewhere (requires two spaces on both sides) { ' و ', " u " }, { 'بَه نَامِ خُدَا', "ba nām-i xudā"}, { 'جَوَانِی', "jawānī"}, { 'شَاهْنَامَه', "šāhnāma"}, { 'زِنْدَگِی', "zindagī"}, { 'زِنْدَه‌گِی', "zinda-gī"}, { 'میوَهٔ جَاپَانِی', "mēwa-yi jāpānī" }, { 'نُوید', "nuwēd"}, -- nawīd/navid in modern Persian { 'دُخْتَرَْبَچَّه',"duxtar-bačča"}, { 'کِیَه', "kiya" }, { 'کُرُوَاسِیَا', "kuruwāsiyā" }, --moderate vowel test { 'مِیَایِین', "miyāyīn"}, -- more complex vowel test { 'مْیَایین', "myāyēn"}, -- more complex vowel test { 'طِلَّا', "tillā" }, { 'لیکِن', "lēkin" }, { 'بَچَّهٔ لَطِیفَه کَلَان اَسْت', "bačča-yi latīfa kalān ast" }, { 'مَعْرُوف و مَجْهُول', "ma'rūf u majhūl"}, { 'مَعْرُوف وَ مَجْهُول', "ma'rūf wa majhūl"}, { 'اَرمنستان', nil }, { 'باکو', nil }, { 'تصویر', nil }, { 'کسی', nil }, --word final -ē {"برادر بزرگ", nil }, -- izafa/ezafe marked with a dash - {'قرون وسطی', nil }, -- a dagger alif {'وَٱللّٰه', "wallāh"}, --alef_wasla -- uncommon characters {'کَسے', 'kasē'}, -- treated like normal ye {'کَٹَه', 'kaṭa'},--hazaragi retroflex's -- Arabic al- {'آیَةُ‌اللّٰه', 'āyatu-llāh'}, {'فِالْحَال', 'fi-l-hāl'}, {'بویِ تُو', 'bō-yi tū'}, {'بِسْمِ اللّٰهِ الرَّحْمٰنِ الرَّحِیم', 'bismi llāhi r-rahmāni r-rahīm'}, {'اِیَالَاتِ مُتَّحِدَه', 'iyālāt-i muttahida'}, {'دَارُ الخَلَافَه', 'dāru l-xalāfa'}, {'اَبُو الهَوْد', 'abū l-hawd'}, {'یی', 'yē'}, {'ویژَه', 'vēža'}, {'السَّلَام عَلَیْکُم', 'as-salām alaykum'}, {'الوِدَاع', "al-widā'"}, {'بِالنِّسْبَه', 'bi-n-nisba'}, -- make sure that ezafe doesnt appear before al- } self:iterate(examples, "do_test_translit") end return tests cq1tve4a6aitpqyx2vwq603ouspl6e2 মডিউল:User:Benwing2/category tree/poscatboiler/data/transliterations 828 168633 510185 2026-06-07T12:45:51Z RedminBot 9553 [[en:Module:User:Benwing2/category_tree/poscatboiler/data/transliterations]] থেকে আনা হলো 510185 Scribunto text/plain local labels = {} local raw_categories = {} local handlers = {} local raw_handlers = {} ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["romanizations"] = { description = "{{{langname}}} terms transliterated into the Latin alphabet.", parents = {"borrowed terms"}, umbrella_parents = "Transliterations subcategories by language", -- Special romanization-specific table-of-contents bars are used on romanization pages -- (e.g. [[Template:got-rom-categoryTOC]]) because they hold Latin-script terms in a -- language-specific romanization scheme, rather than terms in the language's normal script. -- For the same reason, we specify catfix = false to disable script-specific font -- formatting. toc_template = {"{{{langcode}}}-rom-categoryTOC", "en-categoryTOC"}, toc_template_full = {"{{{langcode}}}-rom-categoryTOC/full", "{{{langcode}}}-rom-categoryTOC", "en-categoryTOC/full"}, catfix = false, } labels["romanizations without a main entry"] = { description = "{{{langname}}} romanizations where the corresponding entry in the language's normal script does not exist. Automatically added by <code>{{[[Template:romanization of|romanization of]]}}</code> when appplicable.", parents = {"entry maintenance", {name = "romanizations", sort = " "}}, umbrella_parents = "Entry maintenance subcategories by language", --See 'romanizations' above. toc_template = {"{{{langcode}}}-rom-categoryTOC", "en-categoryTOC"}, toc_template_full = {"{{{langcode}}}-rom-categoryTOC/full", "{{{langcode}}}-rom-categoryTOC", "en-categoryTOC/full"}, catfix = false, can_be_empty = true, hidden = true, } labels["terms transliterated from other languages"] = { description = "{{{langname}}} terms that have been transliterated from other languages.", parents = {{name = "borrowed terms", sort = " "}}, umbrella_parents = "Transliterations subcategories by language", } ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Transliterations subcategories by language"] = { description = "Umbrella categories covering topics related to transliterations.", additional = "{{{umbrella_meta_msg}}}", parents = { "Umbrella metacategories", {name = "Terms by etymology subcategories by language", sort = " "}, }, } raw_categories["Terms with manual transliterations different from the automated ones"] = { intro = "{{also|:Category:Languages with automatic transliteration}}", description = "Categories with terms with manual transliterations different from the automated ones, by language.", hidden = true, parents = "Category:Template tracking", } raw_categories["Terms with redundant transliterations"] = { intro = "{{also|:Category:Languages with automatic transliteration}}", description = "Categories with terms with redundant transliteration, by language.", hidden = true, parents = "Category:Template tracking", } ----------------------------------------------------------------------------- -- -- -- HANDLERS -- -- -- ----------------------------------------------------------------------------- table.insert(handlers, function(data) local source_name = data.label:match("^transliterations of (.+) terms$") if source_name then local source = require("Module:languages").getByCanonicalName(source_name, true, "allow etym langs") local source_desc = source:makeCategoryLink() return { description = "{{{langname}}} terms that have been transliterated from " .. source_desc .. ".", breadcrumb = source_name, parents = { { name = "terms transliterated from other languages", sort = source_name }, { name = "terms borrowed from " .. source_name, sort = " "}, }, umbrella = { no_by_language = true, parents = { { name = "terms borrowed from " .. source_name, is_label = true, sort = " " } } }, } end end) ----------------------------------------------------------------------------- -- -- -- RAW HANDLERS -- -- -- ----------------------------------------------------------------------------- table.insert(raw_handlers, function(data) local langcode = data.category:match("^Terms with manual transliterations different from the automated ones/(.+)$") if langcode then return { description = "{{{langname}}} terms with with manual transliterations different from the automated ones.", lang = langcode, breadcrumb = "{{{langname}}}", parents = { { name = "Terms with manual transliterations different from the automated ones", sort = langcode }, { name = "entry maintenance", is_label = true, lang = langcode }, }, -- Set catfix = false because the page will have a mixture of native-language and -- non-native-language pages, but include the normal native-language table of contents headers -- because most pages are in the native language. catfix = false, toc_template = "{{{langcode}}}-categoryTOC", toc_template_full = "{{{langcode}}}-categoryTOC/full", can_be_empty = true, hidden = true, } end end) table.insert(raw_handlers, function(data) local langcode = data.category:match("^Terms with redundant transliterations/(.+)$") if langcode then return { description = "{{{langname}}} terms with redundant transliterations.", lang = langcode, breadcrumb = "{{{langname}}}", parents = { { name = "Terms with redundant transliterations", sort = langcode }, { name = "entry maintenance", is_label = true, lang = langcode }, }, -- Set catfix = false because the page will have a mixture of native-language and -- non-native-language pages, but include the normal native-language table of contents headers -- because most pages are in the native language. catfix = false, toc_template = "{{{langcode}}}-categoryTOC", toc_template_full = "{{{langcode}}}-categoryTOC/full", can_be_empty = true, hidden = true, } end end) return {LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers, RAW_HANDLERS = raw_handlers} cpl9jwp51gc5idu9ofo7xa2jrdhaxdm মডিউল:User:Benwing2/hi-translit 828 168634 510186 2026-06-07T12:45:51Z RedminBot 9553 [[en:Module:User:Benwing2/hi-translit]] থেকে আনা হলো 510186 Scribunto text/plain -- Transliteration for Hindi (possibly other languages using Devanagari script, except for Sanskrit) local export = {} local gsub = mw.ustring.gsub local match = mw.ustring.match local conv = { -- consonants ['क'] = 'k', ['ख'] = 'kh', ['ग'] = 'g', ['घ'] = 'gh', ['ङ'] = 'ṅ', ['च'] = 'c', ['छ'] = 'ch', ['ज'] = 'j', ['झ'] = 'jh', ['ञ'] = 'ñ', ['ट'] = 'ṭ', ['ठ'] = 'ṭh', ['ड'] = 'ḍ', ['ढ'] = 'ḍh', ['ण'] = 'ṇ', ['त'] = 't', ['थ'] = 'th', ['द'] = 'd', ['ध'] = 'dh', ['न'] = 'n', ['प'] = 'p', ['फ'] = 'ph', ['ब'] = 'b', ['भ'] = 'bh', ['म'] = 'm', ['य'] = 'y', ['र'] = 'r', ['ल'] = 'l', ['व'] = 'v', ['ळ'] = 'ḷ', ['श'] = 'ś', ['ष'] = 'ṣ', ['स'] = 's', ['ह'] = 'h', ['क़'] = 'q', ['ख़'] = 'x', ['ग़'] = 'ġ', ['ऴ'] = 'ḻ', ['ज़'] = 'z', ['ष़'] = 'ḻ', ['झ़'] = 'ž', ['ड़'] = 'ṛ', ['ढ़'] = 'ṛh', ['फ़'] = 'f', ['थ़'] = 'θ', ['ऩ'] = 'ṉ', ['ऱ'] = 'ṟ', -- ['ज्ञ'] = 'gy', -- vowel diacritics ['ि'] = 'i', ['ु'] = 'u', ['े'] = 'e', ['ो'] = 'o', ['ॊ'] = 'ǒ', ['ॆ'] = 'ě', ['ा'] = 'ā', ['ी'] = 'ī', ['ू'] = 'ū', ['ृ'] = 'ŕ', ['ै'] = 'ai', ['ौ'] = 'au', ['ॉ'] = 'ŏ', ['ॅ'] = 'ĕ', -- vowel signs ['अ'] = 'a', ['इ'] = 'i', ['उ'] = 'u', ['ए'] = 'e', ['ओ'] = 'o', ['आ'] = 'ā', ['ई'] = 'ī', ['ऊ'] = 'ū', ['ऎ'] = 'ě', ['ऒ'] = 'ǒ', ['ऋ'] = 'ŕ', ['ऐ'] = 'ai', ['औ'] = 'au', ['ऑ'] = 'ŏ', ['ऍ'] = 'ĕ', ['ॐ'] = 'om', -- chandrabindu ['ँ'] = '̃', -- anusvara ['ं'] = '̃', -- visarga ['ः'] = 'ḥ', -- virama ['्'] = '', -- numerals ['०'] = '0', ['१'] = '1', ['२'] = '2', ['३'] = '3', ['४'] = '4', ['५'] = '5', ['६'] = '6', ['७'] = '7', ['८'] = '8', ['९'] = '9', -- punctuation ['।'] = '.', -- danda ['॥'] = '.', -- double danda ['+'] = '', -- compound separator -- abbreviation sign ['॰'] = '.', } local nasal_assim_short = { ['क'] = 'ङ', ['ख'] = 'ङ', ['ग'] = 'ङ', ['घ'] = 'ङ', ['ङ'] = 'ङ', ['च'] = 'ञ', ['छ'] = 'ञ', ['ज'] = 'ञ', ['झ'] = 'ञ', ['ञ'] = 'ञ', ['ट'] = 'ण', ['ठ'] = 'ण', ['ड'] = 'ण', ['ढ'] = 'ण', ['ण'] = 'ण', ['त'] = 'न', ['थ'] = 'न', ['द'] = 'न', ['ध'] = 'न', ['न'] = 'न', ['प'] = 'म', ['फ'] = 'म', ['ब'] = 'म', ['भ'] = 'म', ['म'] = 'म', ['व'] = 'ँ', ['य'] = 'ँ', ['ष'] = 'न', ['श'] = 'न', ['स'] = 'न', ['ह'] = 'ँ' } local nasal_assim_long = { ['क'] = 'ँ', ['ख'] = 'ँ', ['ग'] = 'ङ', ['घ'] = 'ङ', ['ङ'] = 'ङ', ['च'] = 'ँ', ['छ'] = 'ँ', ['ज'] = 'ञ', ['झ'] = 'ञ', ['ञ'] = 'ञ', ['ट'] = 'ँ', ['ठ'] = 'ँ', ['ड'] = 'ण', ['ढ'] = 'ण', ['ण'] = 'ण', ['त'] = 'न', ['थ'] = 'न', ['द'] = 'न', ['ध'] = 'न', ['न'] = 'न', ['प'] = 'ँ', ['फ'] = 'ँ', ['ब'] = 'म', ['भ'] = 'म', ['म'] = 'म', ['व'] = 'ँ', ['य'] = 'ँ', ['ष'] = 'न', ['श'] = 'न', ['स'] = 'न', ['ह'] = 'ँ' } -- These clusters when occurring word-finally will not trigger a schwa added -- after them even though the second consonant is in special_cons, which normally -- causes the extra schwa to be added. NOTE: The clusters are reversed from their -- ultimate effect, e.g. the first cluster is written 'ml' but actually applies -- to words ending in 'lm'. The clusters below overall refer to the six clusters -- describable by [rl][mnv], i.e. rm, rn, rv, lm, ln, lv. local perm_cl = { ['म्ल'] = true, ['व्ल'] = true, ['न्ल'] = true, ['म्र'] = true, ['व्र'] = true, ['न्र'] = true, } local all_cons, special_cons = 'कखगघङचछजझञटठडढतथदधपफबभशषसयरलवहणनम', 'यरलवहनम' local vowel, vowel_sign = '*aिुृेोाीूैौॉॅॆॊ', 'अइउएओआईऊऋऐऔऑऍ' local long_vowel, short_vowel = 'ोाीूैौएओआईऊऐऔ', '*aिुृॉॅॆॊअइउऋऑऍ' local syncope_pattern = '([' .. vowel .. vowel_sign .. '])(़?[' .. all_cons .. '])a(़?[' .. gsub(all_cons, "य", "") .. '])([ंँ]?[' .. vowel .. vowel_sign .. '])' local function rev_string(text) local result, length = {}, mw.ustring.len(text) for i = length, 1, -1 do table.insert(result, mw.ustring.sub(text, i, i)) end return table.concat(result) end function export.tr(text, lang, sc) if type(text) == "table" then text = text.args[1] end --force chandrabindu to behave as anusvara text = gsub(text, 'ँ', 'ं') --force word-final anusvara to behave as a pure nasal text = gsub(text, 'ं$', 'ँ') text = gsub(text, 'ं ', 'ँ ') text = gsub(text, 'ं%-', 'ँ-') --abbreviation dot text = gsub(text, '॰', '.') text = gsub(text, '([' .. all_cons .. ']़?)([' .. vowel .. '्]?)', function(c, d) return c .. (d == "" and 'a' or d) end) for word in mw.ustring.gmatch(text, "[ऀ-ॿa*]+") do local orig_word = word word = rev_string(word) word = gsub(word, '^a(़?)([' .. all_cons .. '])(.)(.?)', function(opt, first, second, third) return (((match(first, '[' .. special_cons .. ']') and match(second, '्') and not perm_cl[first..second..third]) or match(first .. second, 'य[ीेै]')) and 'a' or "") .. opt .. first .. second .. third end) while match(word, syncope_pattern) do word = gsub(word, syncope_pattern, '%1%2%3%4') end word = rev_string(word) word = gsub(word, '([' .. short_vowel .. '])ं(.़?)', function(prev, succ) return prev .. (nasal_assim_short[succ] or "̃") .. succ end) word = gsub(word, '([' .. long_vowel .. '])ं(.़?)', function(prev, succ) return prev .. (nasal_assim_long[succ] or "̃") .. succ end) -- Convert * to %* so we can match it in a regex. local escaped_orig_word = gsub(orig_word, "%*", "%*") text = gsub(text, escaped_orig_word, word) end text = gsub(text, '.़?', conv) text = gsub(text, 'a([iu])̃', 'a͠%1') text = gsub(text, 'jñ', 'gy') text = gsub(text, 'ñz', 'nz') text = gsub(text, 'ṇṛ', 'nz') text = gsub(text, '%*', 'a') return mw.ustring.toNFC(text) end return export 1m7s8evtcbcobiavrdwtsewooi34st4 মডিউল:User:Benwing2/th-scraping-translit 828 168635 510187 2026-06-07T12:45:52Z RedminBot 9553 [[en:Module:User:Benwing2/th-scraping-translit]] থেকে আনা হলো 510187 Scribunto text/plain local export = {} local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local u = mw.ustring.char local TEMP0 = u(0xFFF0) local th_pron_module = "Module:th-pron" local string_utilities_module = "Module:string utilities" local links_module = "Module:links" local templateparser_module = "Module:templateparser" local function fail(lang, request) local langObj, req, cat = require("Module:languages").getByCode(lang) if request then cat = {"Requests for transliteration of " .. langObj:getCanonicalName() .. " terms"} end return nil, true, cat end local thai_char_range = "ก-ฺเ-๎" -- U+0E01 through U+0E3A and U+0E40 through U+0E4E (skipping Bhat sign and Thai numerals) local function translit_term(term) return require(th_pron_module).translit(term, "th", "Thai", "paiboon", "translit-module") or term end local function scrape_pronun(term) local title = mw.title.new(term) if title then local content = title:getContent() if content then local template_contents = content:match("{{th%-pron[^}]*}}") local pron if template_contents then local args_contents = content:match("{{th%-pron([^}]*)}}") if args_contents == "" then return term elseif args_contents:find("=") then local _, args = require(templateparser_module).parseTemplate(template_contents) pron = args[1] else pron = rsplit(args_contents, "|")[2] end pron = pron:gsub(":.*", "") return pron end end end return nil end local function scrape_and_translit_term(term) -- FIXME! Issue warning (in preview mode?) or error if respelling can't be found. local respelling = scrape_pronun(term) or term local translit = translit_term(respelling) -- error(term .. " || " .. respelling .. " || " .. translit) return translit, respelling end local function parse_brace_segment(segment) local inside = segment:match("^{ *(.-) *}$") if not inside then error(("Internal error: Can't match braces in brace-delimited segment %s"):format(segment)) end local parts if inside:find("//") then parts = rsplit(inside, "//", true) else parts = rsplit(inside, "/", true) end if #parts ~= 2 then error(("Expected two slash-separated components in brace-delimited segment %s"):format(segment)) end return unpack(parts) end local function process(text, fn) local left, right local scrape_and_translit, translit if fn == "links" then left = "[[" right = "]]" else left = "" right = "" end if fn == "translit" then scrape_and_translit = scrape_and_translit_term translit = translit_term else scrape_and_translit = function(term) return term, term end translit = function(term) return term end end if not text then return text end local trimmed_text = text:match("^ *(.-) *$") if trimmed_text == "" then return text end text = trimmed_text if rfind(text, ("^[%s-]+$"):format(thai_char_range)) then -- Just Thai text -- a single term. return left .. scrape_and_translit(text) .. right end if rfind(text, ("^[%s -]+$"):format(thai_char_range)) then -- Just Thai text + spaces. local phrases = rsplit(text, " +") local preceding_word for i, phrase in ipairs(phrases) do local words = rsplit(phrase, " ") for j, word in ipairs(words) do if word == "ๆ" and fn == "translit" then -- repetition marker if not preceding_word then error(("Repetition mark ๆ cannot occur at the beginning of the sentence: %s"):format(text)) end words[j] = translit(preceding_word) -- left and right are blank -- Leave preceding_word as-is in case of another repetition mark (can this occur?). else words[j], preceding_word = scrape_and_translit(word) words[j] = left .. words[j] .. right end end phrases[i] = table.concat(words, fn == "translit" and " " or "") end return table.concat(phrases, fn == "translit" and " • " or " ") end -- Numbers, brackets, braces, etc. may occur. local preceding_word local capturing_split = require(string_utilities_module).capturing_split local split_brackets = capturing_split(text, "(%[%[.-%]%])") for i, bracket_segment in ipairs(split_brackets) do if i % 2 == 1 then -- not a bracketed segment local split_braces = capturing_split(bracket_segment, "({.-})") for j, brace_segment in ipairs(split_braces) do if j % 2 == 1 then -- not a brace-delimited segment local words_and_delimiters = capturing_split(brace_segment, ("([%s-]+)"):format(thai_char_range)) for k, word in ipairs(words_and_delimiters) do if k % 2 == 1 then -- outside of Thai word range if fn == "translit" then -- translit separators in case of Thai numerals words_and_delimiters[k] = translit_term(word) else -- Remove single spaces but convert double spaces to single word = word:gsub(" +", TEMP0) word = word:gsub(" ", "") word = word:gsub(TEMP0, " ") words_and_delimiters[k] = word end else if word == "ๆ" and fn == "translit" then -- repetition marker if not preceding_word then error(("Repetition mark ๆ cannot occur at the beginning of the sentence: %s"):format(text)) end words_and_delimiters[k] = translit(preceding_word) -- left and right are blank -- Leave preceding_word as-is in case of another repetition mark (can this occur?). else words_and_delimiters[k], preceding_word = scrape_and_translit(word) words_and_delimiters[k] = left .. words_and_delimiters[k] .. right end end end split_braces[j] = table.concat(words_and_delimiters) else -- a brace-delimited segment local from, to = parse_brace_segment(brace_segment) preceding_word = to if fn == "translit" then split_braces[j] = translit_term(to) else split_braces[j] = left .. from .. right end end end split_brackets[i] = table.concat(split_braces) else -- a bracketed segment if fn == "links" then split_brackets[i] = bracket_segment -- no need to set preceding_word; it isn't used except when fn == "translit" else local term = require(links_module).remove_links(bracket_segment) split_brackets[i], preceding_word = scrape_and_translit(term) -- no need to add left or right; they're blank end end end text = table.concat(split_brackets) if fn == "translit" then text = text:gsub(" +", " • ") end return text end function export.tr(text, lang, sc) return process(text, "translit") end function export.makeEntryName(text, lang, sc) return process(text, "entry") end function export.makeDisplayText(text, lang, sc) return process(text, "display") end function export.preprocessLinks(text, lang, sc) return process(text, "links") end function export.tr_template(frame) return export.tr(frame:getParent().args[1]) end function export.makeEntryName_template(frame) return export.makeEntryName(frame:getParent().args[1]) end function export.makeDisplayText_template(frame) return export.makeDisplayText(frame:getParent().args[1]) end function export.preprocessLinks_template(frame) return export.preprocessLinks(frame:getParent().args[1]) end return export frfjvt6n54pouxoawlrhxifw8jqufto মডিউল:User:Benwing2/uk-translit 828 168636 510188 2026-06-07T12:45:52Z RedminBot 9553 [[en:Module:User:Benwing2/uk-translit]] থেকে আনা হলো 510188 Scribunto text/plain local export = {} local rsubn = mw.ustring.gsub -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local tt = { ["А"]='A', ["а"]='a', ["Б"]='B', ["б"]='b', ["В"]='V', ["в"]='v', ["Г"]='H', ["г"]='h', ["Ґ"]='G', ["ґ"]='g', ["Д"]='D', ["д"]='d', ["Е"]='E', ["е"]='e', ["Є"]='Je', ["є"]='je', ["Ж"]='Ž', ["ж"]='ž', ["З"]='Z', ["з"]='z', ["И"]='Y', ["и"]='y', ["І"]='I', ["і"]='i', ["Ї"]='Ji', ["ї"]='ji', ["Й"]='J', ["й"]='j', ["К"]='K', ["к"]='k', ["Л"]='L', ["л"]='l', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["О"]='O', ["о"]='o', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Ф"]='F', ["ф"]='f', ["Х"]='X', ["х"]='x', ["Ц"]='C', ["ц"]='c', ["Ч"]='Č', ["ч"]='č', ["Ш"]='Š', ["ш"]='š', ["Щ"]='Šč', ["щ"]='šč', ["Ь"]='ʹ', ["ь"]='ʹ', ["Ю"]='Ju', ["ю"]='ju', ["Я"]='Ja', ["я"]='ja', -- right single quotation mark, modifier letter apostrophe → modifier letter double prime ["’"]='ʺ', ["ʼ"]= 'ʺ', -- obsolete letters ["Ё"]='Ë', ["ё"]='ë', ["Ъ"]='ʺ', ["ъ"]='ʺ', ["Ы"]='Y', ["ы"]='y', ["Ѣ"]='Ě', ["ѣ"]='ě', ["Э"]='È', ["э"]='è', -- Ukrainian style quotes ['«']='“', ['»']='”', } local AC = mw.ustring.char(0x0301) -- acute = ́ local acute_decomposer = { ["á"] = "a" .. AC, ["é"] = "e" .. AC, ["í"] = "i" .. AC, ["ó"] = "o" .. AC, ["ú"] = "u" .. AC, ["ý"] = "y" .. AC, ["Á"] = "A" .. AC, ["É"] = "E" .. AC, ["Í"] = "I" .. AC, ["Ó"] = "O" .. AC, ["Ú"] = "U" .. AC, ["Ý"] = "Y" .. AC, } function export.tr(text)--translit any words or phrases text = rsub(text, "'+", { ["'"] = 'ʺ' }) -- neutral apostrophe text = rsub(text, '.', tt) return text end function export.reverse_tr(text)--reverse-translit any words or phrases local reverse_tt = {} for k, v in pairs(tt) do reverse_tt[v] = k end reverse_tt['ʺ'] = "'" reverse_tt['ʹ'] = "ь" reverse_tt['y'] = "и" reverse_tt['Y'] = "И" text = rsub(text, '.', acute_decomposer) text = rsub(text, '[Jj][aeiu]', reverse_tt) text = rsub(text, '[Šš]č', reverse_tt) text = rsub(text, '.', reverse_tt) return text end return export 1830dhkvmn9xcux3opfgijc0va4w2wa মডিউল:User:Crom daba/ket-translit 828 168637 510189 2026-06-07T12:45:52Z RedminBot 9553 [[en:Module:User:Crom_daba/ket-translit]] থেকে আনা হলো 510189 Scribunto text/plain local u = mw.ustring.char local MACRON = u(0x0304) local DOTABOVE = u(0x0307) local DOTBELOW = u(0x0323) local str_gsub, ugsub = string.gsub, mw.ustring.gsub local UTF8char = '[\1-\127\194-\244][\128-\191]*' local export = {} local tab = { ["А"]='A', ["а"]='a', ["Б"]='B', ["б"]='b', ["В"]='V', ["в"]='V', ["Г"]='G', ["г"]='g', ["Д"]='D', ["д"]='d', ["Е"]='E', ["е"]='e', ["Ё"]='Jo', ["ё"]='jo', ["Ж"]='Z', ["ж"]='z', ["З"]='Z', ["з"]='z', ["И"]='I', ["и"]='i', ["Й"]='J', ["й"]='j', ["К"]='K', ["к"]='k', ["Ӄ"]='Q', ["ӄ"]='q', ["Л"]='L', ["л"]='l', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["Ӈ"]='Ŋ', ["ӈ"]='ŋ', ["О"]='O', ["о"]='o', ["Ө"]='Ọ ', ["ө"]='̣ o', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Ф"]='F', ["ф"]='f', ["Х"]='H', ["х"]='h', ["Ц"]='C', ["ц"]='c', ["Ч"]='Č', ["ч"]='č', ["Ш"]='Š', ["ш"]='š', ["Щ"]='Šč', ["щ"]='šč', ['Ъ']='Ə', ['ъ']='ə', ['Ә']='Ə̣', ['ә']='ə̣', ["Ы"]='Y', ["ы"]='y', ["Ь"]='ʼ', ["ь"]="ʼ", ['ʼ']='ˀ', ["Э"]='E', ["э"]='e', ["Ю"]='Ju', ["ю"]='ju', ["Я"]='Ja', ["я"]='ja', } function export.tr(text, lang, sc) for i, replacement in ipairs(other) do text = str_gsub(text, unpack(replacement)) end text = ugsub(text, "([АОУЫЕИӢЪЬаӣиоуыэеъьaeiou]["..MACRON..DOTABOVE..DOTBELOW.."]?)е", "%1je") text = ugsub(text, "([АОУЫЕИӢЪЬаӣиоуыэеъьaeiou]["..MACRON..DOTABOVE..DOTBELOW.."]?)и", "%1ji") text = str_gsub(text, "^Е","Ẹ") text = str_gsub(text, "^е","ẹ") text = ugsub(text, "([^Ѐ-ӿ])Е","%1Ẹ") text = ugsub(text, "([^Ѐ-ӿ])е","%1ẹ") return (str_gsub(text, UTF8char, tab)) end return export cwb0eba0hjbjeiz6t09s67t9l1omoxa মডিউল:User:Crom daba/sh-translit 828 168638 510190 2026-06-07T12:45:53Z RedminBot 9553 [[en:Module:User:Crom_daba/sh-translit]] থেকে আনা হলো 510190 Scribunto text/plain local export = {} local tt = {} tt["Cyrl"] = { ["А"]='A', ["а"]='a', ["Б"]='B', ["б"]='b', ["В"]='V', ["в"]='v', ["Г"]='G', ["г"]='g', ["Д"]='D', ["д"]='d', ["Ђ"]='Đ', ["ђ"]='đ', ["Е"]='E', ["е"]='e', ["Ж"]='Ž', ["ж"]='ž', ["З"]='Z', ["з"]='z', ["И"]='I', ["и"]='i', ["Ј"]='J', ["ј"]='j', ["К"]='K', ["к"]='k', ["Л"]='L', ["л"]='l', ["Љ"]='Lj', ["љ"]='lj', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["Њ"]='Nj', ["њ"]='nj', ["О"]='O', ["о"]='o', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["Ћ"]='Ć', ["ћ"]='ć', ["У"]='U', ["у"]='u', ["Ф"]='F', ["ф"]='f', ["Х"]='H', ["х"]='h', ["Ц"]='C', ["ц"]='c', ["Ч"]='Č', ["ч"]='č', ["Џ"]='Dž', ["џ"]='dž', ["Ш"]='Š', ["ш"]='š', -- proposed Montenegrin letters ["З́"]='Ź', ["з́"]='ź', ["Ć"]='Ś', ["ć"]='ś' }; tt["Latn"] = { --Digraphs need to go first ["Lj"]='Љ', ["lj"]='љ', ["Nj"]='Њ', ["nj"]='њ', ["Dž"]='Џ', ["dž"]='џ', ["A"]='А', ["a"]='а', ["B"]='Б', ["b"]='б', ["V"]='В', ["v"]='в', ["G"]='Г', ["g"]='г', ["D"]='Д', ["d"]='д', ["Đ"]='Ђ', ["đ"]='ђ', ["E"]='Е', ["e"]='е', ["Ž"]='Ж', ["ž"]='ж', ["Z"]='З', ["z"]='з', ["I"]='И', ["i"]='и', ["J"]='Ј', ["j"]='ј', ["K"]='К', ["k"]='к', ["L"]='Л', ["l"]='л', ["M"]='М', ["m"]='м', ["N"]='Н', ["n"]='н', ["O"]='О', ["o"]='о', ["P"]='П', ["p"]='п', ["R"]='Р', ["r"]='р', ["S"]='С', ["s"]='с', ["T"]='Т', ["t"]='т', ["Ć"]='Ћ', ["ć"]='ћ', ["U"]='У', ["u"]='у', ["F"]='Ф', ["f"]='ф', ["H"]='Х', ["h"]='х', ["C"]='Ц', ["c"]='ц', ["Č"]='Ч', ["č"]='ч', ["Š"]='Ш', ["š"]='ш', -- proposed Montenegrin letters ["Ź"]='З́', ["ź"]='з́', ["Ś"]='Ć', ["ś"]='ć', -- backtick needs to be removed so that "nad`živeti" returns "надживети" -- ["`"]="" }; function export.tr(text, lang, sc) text = mw.ustring.gsub(text, '.[jž]', tt[sc]) return (mw.ustring.gsub(text, '.', tt[sc])) end return export 4e2bfexur8dxcmhwokxcfgmkbw28q12 মডিউল:User:Erutuon/hbo-translit 828 168639 510191 2026-06-07T12:45:53Z RedminBot 9553 [[en:Module:User:Erutuon/hbo-translit]] থেকে আনা হলো 510191 Scribunto text/plain -- Trying to reimplement [[Module:User:Sartma/hbo-translit]]. local export = {} local Array = require "Module:array" local function show_code_point_names(text) if not text then return "" end local names = Array() for cp in mw.ustring.gcodepoint(text) do -- Remove HEBREW LETTER, HEBREW POINT, etc. local name = require "Module:Unicode data".lookup_name(cp) :gsub( "^HEBREW (%w+) ", function(type) if type == "ACCENT" then return "ACCENT " else return "" end end) :lower() names:insert(name) end return names:concat ", " end local function show_tokens(tokens, i, j) return table.concat(Array(tokens):map(show_code_point_names), " | ", i, j) end export.show_tokens = show_tokens local U = mw.ustring.char local ufind = mw.ustring.find local ugsub = mw.ustring.gsub local ulen = mw.ustring.len local umatch = mw.ustring.match local usub = mw.ustring.sub local sheva = U(0x05B0) local hataf_segol = U(0x05B1) local hataf_patah = U(0x05B2) local hataf_qamats = U(0x05B3) local hiriq = U(0x05B4) local tsere = U(0x05B5) local segol = U(0x05B6) local patah = U(0x05B7) local qamats = U(0x05B8) local qamats_qatan = U(0x05C7) local holam = U(0x05B9) local holam_haser_for_waw = U(0x05BA) local qubuts = U(0x05BB) local dagesh_mappiq = U(0x05BC) local shin_dot = U(0x05C1) local sin_dot = U(0x05C2) local macron_above = U(0x0304) local macron_below = U(0x0331) local macron = "[" .. macron_above .. macron_below .. "]" local circumflex = U(0x0302) local acute = U(0x0301) local alef = "א" local he = "ה" local waw = "ו" local yod = "י" local vowel_letters = alef .. he .. waw .. yod local shin_sin = 'ש' local shuruq = waw .. dagesh_mappiq local holam_male = waw .. holam local schwa = 'ə' local vowel_map = { [sheva] = '', [hataf_segol] = 'ɛ̆', [hataf_patah] = 'ă', [hataf_qamats] = 'ɔ̆', [hiriq] = 'i', [tsere] = 'e', [segol] = 'ɛ', [patah] = 'a', [qamats] = 'ɔ', [qamats_qatan] = 'ɔ', [qubuts] = 'u', [holam] = 'o', [holam_male] = 'ō', [holam_haser_for_waw] = 'o', [shuruq] = 'ū', } local vowel_diacritics = Array.keys(vowel_map):filter(function(vowel) return ulen(vowel) == 1 end):concat() local short_vowel_map = { [holam] = 'o', [holam_male] = 'o', [holam_haser_for_waw] = 'o', [shuruq] = 'u', } local plene_map = { [hiriq] = 'ī', [tsere] = 'ē', [qamats] = 'ɔ' .. macron_above, -- [qamats_qatan] = 'o', -- if plene, then misspelling? } local bet = 'ב' local gimel = 'ג' local dalet = 'ד' local kaf = 'כ' local kaf_final = 'ך' local lamed = 'ל' local mem = 'מ' local pe = 'פ' local pe_final = 'ף' local tav = 'ת' local bgdkpt = bet .. gimel .. dalet .. kaf .. kaf_final .. pe .. pe_final .. tav local het = 'ח' local ayn = 'ע' local letter_map = { [alef] = 'ʾ', [bet] = 'b' .. macron_below, [gimel] = 'g' .. macron_above, [dalet] = 'd' .. macron_below, [he] = 'h', [waw] = 'w', ['ז'] = 'z', [het] = 'ḥ', ['ט'] = 'ṭ', [yod] = 'y', [kaf] = 'k' .. macron_below, [kaf_final] = 'k' .. macron_below, [lamed] = 'l', [mem] = 'm', ['ם'] = 'm', ['נ'] = 'n', ['ן'] = 'n', ['ס'] = 's', [ayn] = 'ʿ', [pe] = 'p' .. macron_above, [pe_final] = 'p' .. macron_above, ['צ'] = 'ṣ', ['ץ'] = 'ṣ', ['ק'] = 'q', ['ר'] = 'r', [tav] = 't' .. macron_below, } local shin_sin_map = { [shin_dot] = "š", [sin_dot] = "ś", } local letters = shin_sin .. Array.keys(letter_map):filter(function(letter) return ulen(letter) == 1 end):concat() local punctuation_map = { ["־"] = "-", ["׃"] = ".", } -- First and last code point called "HEBREW ACCENT ...". local first_accent_cp, last_accent_cp = 0x0591, 0x05AE local meteg_cp = 0x05BD local meteg = U(meteg_cp) local combining_grapheme_joiner_cp = 0x034F local cgj = U(combining_grapheme_joiner_cp) local accents = { U(meteg_cp) } for cp = first_accent_cp, last_accent_cp do table.insert(accents, U(cp)) end local diacritic_order = { {shin_dot, shin_dot}, {dagesh_mappiq}, Array.keys(vowel_map):filter(function(vowel) return ulen(vowel) == 1 end), accents, {cgj}, } local accent_pattern = U(first_accent_cp) .. "-" .. U(last_accent_cp) .. U(meteg_cp) local diacritic_pattern = "[" .. shin_dot .. sin_dot .. dagesh_mappiq .. vowel_diacritics .. accent_pattern .. cgj .. "]" local diacritics_pattern = diacritic_pattern .. diacritic_pattern .. "+" local diacritic_order_map = {} for i, diacritics in ipairs(diacritic_order) do for _, diacritic in ipairs(diacritics) do diacritic_order_map[diacritic] = i end end local function is_accent(token) if not token then return false end local cp = mw.ustring.codepoint(token) return first_accent_cp <= cp and cp <= last_accent_cp or cp == combining_grapheme_joiner_cp end -- Fix illogical order of diacritics in Unicode normalization. -- The default order: -- consonant, vowel points, dagesh or mappiq, accent, shin or sin dot. -- The desired order: -- consonant, shin or sin dot, dagesh or mappiq, first vowel point, accent, -- maybe second vowel point if first vowel point is sheva or hiriq. function export.normalize(text) text = ugsub( text, diacritics_pattern, function(diacritics) local diacritics_list = mw.text.split(diacritics, "") table.sort( diacritics_list, function(a, b) return (diacritic_order_map[a] or 0) < (diacritic_order_map[b] or 0) end) -- For now remove combining grapheme joiners... though this might be wrong. while diacritics_list[#diacritics_list] == cgj do table.remove(diacritics_list) end -- If there are two vowels, put hiriq or sheva after other vowels. -- If there is also an accent, put it after the first vowel. -- Assume Unicode normalization: -- sheva before hiriq before patah before either qamats. -- This code works for combinations are in the testcases. -- יְרוּשָׁלִַם, יְרוּשָׁלְַמָה local i = 0 local first_vowel repeat i = i + 1 first_vowel = diacritics_list[i] until not first_vowel or vowel_diacritics:find(first_vowel) if first_vowel then local second_vowel = diacritics_list[i + 1] if second_vowel and vowel_diacritics:find(second_vowel) then if first_vowel == hiriq or first_vowel == sheva then diacritics_list[i], diacritics_list[i + 1] = diacritics_list[i + 1], diacritics_list[i] end if is_accent(diacritics_list[i + 2]) then diacritics_list[i + 1], diacritics_list[i + 2] = diacritics_list[i + 2], diacritics_list[i + 1] end end end return table.concat(diacritics_list) end) return text end local function match_alt_one(text, code_point_pos, patterns) for _, pattern in ipairs(patterns) do local start_pos, end_pos, capture = ufind(text, pattern, code_point_pos) if start_pos == code_point_pos then -- Return first capture (if any) and end of match return capture, end_pos end end end local token_patterns = { "(" .. holam_male .. ")", "([" .. letters .. waw .. "][" .. shin_dot .. sin_dot .. "]?" .. dagesh_mappiq .. "?)", "(.)", } local function next_token(text, code_point_pos) return match_alt_one(text, code_point_pos, token_patterns) end -- Validate shin dot and sin dot? local function tokenize(text) local pos = 1 local tokens = {} while true do local token, next_pos = next_token(text, pos) if not next_pos then break end pos = next_pos + 1 table.insert(tokens, token) end return tokens end export.tokenize = tokenize local function may_be_silent(token) return token ~= nil and vowel_letters:find(token, 1, true) ~= nil end -- Indicates that a token might be a vowel. -- Use only after determining that it is not a consonant. local function is_vowel(token) return token == holam_male or token == shuruq or (token ~= nil and vowel_diacritics:find(token, 1, true) ~= nil) end local function is_preceded_by_unchangeable_vowel(tokens, i) local token1, token2 = tokens[i - 2], tokens[i - 1] return token2 == shuruq -- Don't check that this is waw with dagesh. or token2 == holam_male or token2 == yod and (token1 == hiriq or token1 == tsere or token1 == segol) end local function is_short_vowel(token) return token == patah or token == segol or token == hiriq or token == qubuts end local function is_open_vowel(token) return token == patah or token == qamats end local function has_dagesh(token) return token ~= nil and token:find(dagesh_mappiq, 1, true) ~= nil end local function is_waw(token) return token ~= nil and token:find(waw, 1, true) == 1 end local function is_he(token) return token ~= nil and token:find(he, 1, true) == 1 end local function is_hataf(token) return token == hataf_segol or token == hataf_patah or token == hataf_qamats end local function get_letter(token) -- assert(ufind(token, "[" .. letters .. "]") == 1) if token ~= nil then return usub(token, 1, 1) end end local function is_guttural(token) local letter = get_letter(token) return letter == alef or letter == he or letter == het or letter == ayn end local function is_bgdkpt(token) return token ~= nil and ufind(token, "^[" .. bgdkpt .. "]") == 1 end -- Bidirectional control characters should be avoided as much as possible, -- but they are easily picked up when copying and pasting, so the module needs -- to account for them. -- This list is from [[w:Bidirectional control character]]. local bidirectional_control_characters = U(0x061C) .. U(0x200E) .. U(0x200F) .. U(0x202A) .. "-" .. U(0x202E) .. U(0x2066) .. "-" .. U(0x2069) local word_boundary_character = "^[%s%p" .. bidirectional_control_characters .. "]$" local function is_word_boundary(token) return token == nil or ufind(token, word_boundary_character) ~= nil end local function get_dot(token) return token and umatch(token, "[" .. shin_dot .. sin_dot .. "]") end local function is_followed_by_vowel(tokens, i) repeat i = i + 1 until not is_accent(tokens[i]) return is_vowel(tokens[i]) end local function is_preceded_by_vowel(tokens, i) repeat i = i - 1 until not (may_be_silent(tokens[i]) or is_accent(tokens[i])) return is_vowel(tokens[i]) end local function get_previous_vowel_pos(tokens, i) while true do i = i - 1 local token = tokens[i] if is_vowel(token) then return i elseif is_word_boundary(token) then return nil end end end local function get_previous_vowel(tokens, i) local pos = get_previous_vowel_pos(tokens, i) if pos then return tokens[pos] end end local function get_previous_neighboring_vowel(tokens, i) while true do i = i - 1 local token = tokens[i] if is_vowel(token) then return token elseif not is_accent(token) then return nil end end end local function get_next_vowel(tokens, i) while true do i = i + 1 local token = tokens[i] if is_vowel(token) then return token elseif is_word_boundary(token) then return nil end end end -- Defined below. local is_consonant local function skip_before_accent(tokens, i) repeat i = i - 1 until not is_accent(tokens[i]) return i end local function skip_after_accent(tokens, i) repeat i = i + 1 until not is_accent(tokens[i]) return i end local function is_preceded_by_consonant(tokens, i) return is_consonant(tokens, skip_before_accent(tokens, i)) end local function makes_furtive_patah(token) local pos, letter = ufind(token, "([" .. ayn .. het .. he .. "])") return pos == 1 and (token ~= he or has_dagesh(token)) end -- Indicates that a token may be a consonant. -- Declared as local above. function is_consonant(tokens, i) local token = tokens[i] if is_waw(token) then return token == waw or (token == shuruq and not (is_preceded_by_consonant(tokens, i) or is_word_boundary(tokens[i - 1]))) else return token ~= nil and ufind(token, "[" .. letters .. "]", 1) == 1 end end -- Don't double he. -- Don't double bgdkpt after sheva or at beginning of word. local function is_double(tokens, i) local token = tokens[i] return token ~= nil and has_dagesh(token) and not is_he(token) and not (is_bgdkpt(token) and (tokens[i - 1] == sheva or is_word_boundary(tokens[i - 1]))) end local function is_preceded_by_prefix(tokens, i) local consonant, vowel = tokens[i - 2], tokens[i - 1] local letter = get_letter(consonant) local letter_is_shin = (letter == shin_sin and get_dot(consonant) == shin_dot) local next_cons_has_dagesh = has_dagesh(tokens[i]) return (vowel == hiriq and letter == mem and next_cons_has_dagesh) or (vowel == sheva and ( letter == bet or letter == dalet or letter == waw or letter == kaf or letter == lamed ) ) or (vowel == patah and next_cons_has_dagesh and ( letter == bet or letter == he or letter == kaf or letter == lamed or letter_is_shin -- very archaic, says [[Module:he-translit]] ) ) or (vowel == segol and next_cons_has_dagesh and letter_is_shin) end local function is_in_last_syllable(tokens, i) while true do local token = tokens[i + 1] if is_word_boundary(token) -- A sequence of consonant sheva consonant (sheva) does not have a vowel: -- וַיֵּבְךְּ wayyēḇk, וַיַּרְא wayyar or token == sheva and ( is_consonant(tokens, i + 2) and not (tokens[i + 3] == sheva and is_word_boundary(tokens[i + 3])) ) then return true elseif is_vowel(token) then return false end i = i + 1 end end function export.transliterate(text) local tokens = export.tokenize(export.normalize(text)) local transliteration = {} local function add_tr(val) assert(type(val) == "string") table.insert(transliteration, val) end -- Use a manually incremented loop so we can skip -- furtive patah and matres lectionis tokens. local i = 1 while true do local token = tokens[i] if not token then break end if is_consonant(tokens, i) then local letter = get_letter(token) local tr = assert(letter_map[letter] or shin_sin_map[get_dot(token)] or letter == shin_sin and shin_sin_map[sin_dot], token) if has_dagesh(token) then tr = ugsub(tr, macron, "") if is_double(tokens, i) then tr = tr .. tr end end -- Transcribe furtive patah before its consonant and skip it. if makes_furtive_patah(token) and tokens[i + 1] == patah and is_word_boundary(tokens[i + 2]) then local previous_vowel_pos = get_previous_vowel_pos(tokens, i) if not is_accent(tokens[previous_vowel_pos + 1]) then add_tr(acute) end add_tr(vowel_map[patah]) i = i + 1 end add_tr(tr) elseif is_vowel(token) then -- Genuine waw holam. Handle the waw and leave the holam to the next -- bit of code. -- מִצְוֹת miṣwōṯ local waw_is_consonant = false if token == holam_male and tokens[i - 1] == sheva then add_tr(letter_map[waw]) waw_is_consonant = true end local next_i = skip_after_accent(tokens, i) local has_accent = next_i > i + 1 -- Handle sheva. if tokens[i] == sheva then local previous_vowel = get_previous_vowel(tokens, i) local previous_neighboring_vowel = get_previous_neighboring_vowel(tokens, i) -- implicit ktiv/qre from [[Module:he-translit/testcases]]: -- יְרוּשָׁלְָמָה yərūšālayim, יְרוּשָׁלְַמָה yərūšālāyim if tokens[i - 2] == meteg then add_tr(schwa) elseif is_open_vowel(previous_neighboring_vowel) then add_tr("y") elseif is_word_boundary(tokens[next_i]) or (tokens[next_i] == alef and is_word_boundary(tokens[i + 2])) or has_dagesh(tokens[next_i]) -- check for bgdkpt? then add_tr("") elseif -- after another sheva previous_vowel == sheva -- after initial consonant unless following consonant has dagesh or previous_vowel == nil -- between identical consonants or get_letter(tokens[i - 1]) == get_letter(tokens[next_i]) or is_preceded_by_unchangeable_vowel(tokens, i - 1) or is_double(tokens, i - 1) then add_tr(schwa) elseif is_short_vowel(previous_vowel) or is_guttural(tokens[i - 1]) then add_tr("") else add_tr("") end -- implicit ktiv/qre from [[Module:he-translit/testcases]]: -- יְרוּשָׁלִַם yərūšālaymā, יְרוּשָׁלִָם yərūšālāymā elseif token == hiriq and is_open_vowel(get_previous_neighboring_vowel(tokens, i)) then add_tr("yi") -- qamats in possibly closed syllable, -- as long as following two consonants are not identical, in which -- case the sheva has to be pronounced, putting the qamats -- in an open syllable elseif token == qamats and ( (is_guttural(tokens[next_i]) and (tokens[next_i + 1] == sheva or is_hataf(tokens[next_i + 1]))) or (tokens[next_i + 1] == sheva and has_dagesh(tokens[next_i + 2])) -- כָּל kol, on its own and with prefixes or ((get_letter(tokens[i - 1]) == kaf and get_letter(tokens[next_i]) == lamed) and (is_word_boundary(tokens[next_i + 1]) and ( is_word_boundary(tokens[i - 2]) or is_preceded_by_prefix(tokens, i - 1) ) ) ) ) then add_tr(vowel_map[qamats_qatan]) else if waw_is_consonant then add_tr(vowel_map[holam]) else add_tr(vowel_map[token]) end local letter = tokens[next_i] if (letter == yod and (token == hiriq or token == tsere or token == segol or token == qamats)) and not is_vowel(tokens[next_i + 1]) then add_tr(macron_above) i = next_i elseif letter == he and not is_vowel(tokens[next_i + 1]) then add_tr(circumflex) i = next_i end end -- This is not completely correct because not all accents indicate stress. -- I haven't sorted out their functions though. if has_accent and not is_in_last_syllable(tokens, i) or (token == segol and get_next_vowel(tokens, i) == segol) then add_tr(acute) end else if not (is_accent(token) or token == meteg) then add_tr(punctuation_map[token] or token) end end i = i + 1 end return table.concat(transliteration) end return export 2rixfjj3bsfddt9a87qrnsajltblg1q মডিউল:User:Erutuon/hbo-translit/testcases 828 168640 510192 2026-06-07T12:45:54Z RedminBot 9553 [[en:Module:User:Erutuon/hbo-translit/testcases]] থেকে আনা হলো 510192 Scribunto text/plain -- From [[Module:User:Sartma/hbo-translit/testcases]] local examples = [[ בַּיִת bayiṯ בֵּית bēṯ בָּתִּים bɔttīm מַחֲנֶה maḥănɛ̂ בָּרָא bɔrɔʾ רֶ֫גֶל rɛ́ḡɛl רֶגֶל rɛ́ḡɛl כֹּהֵן kohen מֶ֫לֶךְ mɛ́lɛḵ מַמְלָכָה mamlɔḵɔ̂ הַמַּמְלָכָה hammamlɔḵɔ̂ הַלְּלוּיָהּ halləlūyɔh הַֽלְלוּיָהּ haləlūyɔh יָדַע yɔḏaʿ שָׁבוּעַ šɔḇū́aʿ רוּחַ rū́aḥ גָּבֹהַּ gɔḇóah גָּבֹ֫הַּ gɔḇóah מָשִׁיחַ mɔšī́aḥ מָשִׁ֫יחַ mɔšī́aḥ רֵיחַ rḗaḥ שָׂדֶה śɔḏɛ̂ שְׂדֵה śəḏê בָּנַי bɔnay בְּנֵי bənē צָרְכִּי ṣɔrkī שִׁפְרָה šip̄rɔ̂ חָכְמָה ḥɔḵmɔ̂ קָרָא qɔrɔʾ קָֽרְאָה qɔrəʾɔ̂ שָׁכְבְּךָ šɔḵbəḵɔ הָפְכָּה hɔp̄kɔ̂ -- made-up word, but a particular potentially problematic Unicode situation קָטְבּוֹ qɔṭbō -- another particular potentially problematic Unicode situation נִשְׂרְפָה niśrəp̄ɔ̂ בָּנָיו bɔnɔ̄w -- not sure about this one, further checks needed בָּנֶיהָ bɔnɛ̄hɔ מִצְוֹת miṣwoṯ זִוּוּג ziwwūḡ רֹאשׁ roʾš רֵאשִׁית reʾšīṯ רִאשׁוֹן riʾšōn מְלָאכָה məlɔʾḵɔ̂ מְלֶאכֶת məlɛʾḵɛṯ חֵטְא ḥeṭʾ בָּרָאתָ bɔrɔʾṯɔ חַטֹּאות ḥaṭṭoʾwṯ -- https://biblehub.com/hebrew/chattot_2403.htm יְראוּ yərʾū -- masculine plural imperative of יָרֵא, to check וַיֶּאְסֹר wayyɛʾsor הָחְלַט hɔḥlaṭ וַיֵּבְךְּ wayyeḇk -- not sure about this one, further checks needed אַרְאֶךָּ ʾarʾɛkkɔ וַיַּשְׁקְ wayyašq -- not sure about this one, further checks needed אַתְּ ʾatt וּוָווֹ ūwɔwō וָו wɔw תָּו tɔw קַו qaw לָאו lɔʾw חַי ḥay חָי ḥɔ̄ -- pausal פִּיו pīw כִּסְלֵו kislew גּוֹי gōy גֹּי goy גֹּיִים goyīm רָאוּי rɔʾūy קִיא qīʾ יָבִיאוּ yɔḇīʾū יְבִיאוּן yəḇīʾūn מֵאוּן meʾūn מֵיאוּן mēʾūn בּוֹאוּ bōʾū בֹּאוּ boʾū בּוּאוּ būʾū -- made-up word, but may help identify the issue אָבִיאָה ʾɔḇīʾɔ̂ מֵאָה meʾɔ̂ גֵּיאָהּ gēʾɔh אָבוֹאָה ʾɔḇōʾɔ̂ אָבֹאָה ʾɔḇoʾɔ̂ נְשׂוּאָה nəśūʾɔ̂ קִיאוֹ qīʾō גֵּאוֹ geʾō גֵּיאוֹ gēʾō בּוֹאוֹ bōʾō בֹּאוֹ boʾō מִלּוּאוֹ millūʾō מִי mī אִיִּים ʾiyyīm אִיּוֹב ʾiyyōḇ אִיּוּן ʾiyyūn אַ֫יִן ʾáyin בּוֹא bōʾ יְפֵהפֶה yəp̄êp̄ɛ̂ אֹ֫הֶל ʾóhɛl הָאֹהֱלָה hɔʾohɛ̆lɔ̂ אָהֳלוֹ ʾɔhɔ̆lō אָהָלְךָ ʾɔhɔləḵɔ -- not sure about this one, further checks needed https://biblehub.com/hebrew/veahalcha_168.htm יִשָּׂשכָר yiśśɔḵɔr -- Still undecided if this actually needs to be handled הוֹשִׁיעָה נָּא hōšīʿɔ̂ nnɔʾ עַד בֹּאֲךָ ʿaḏ boʾăḵɔ וַיַּשְׁקְ אֶת הַצֹּאן wayyašq ʾɛṯ haṣṣoʾn -- not sure about this one, further checks needed בְּנֵי בְרָק bənē ḇərɔq בְרָק ḇərɔq אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּ&zwnj;שְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃ ʾīš yəhūḏī hɔyɔ̂ bəšūšan habbīrɔ̂ ūšəmō mɔrdɔ̆ḵay bɛn yɔʾīr bɛn-šimʿī bɛn-qīš ʾīš yəmīnī. אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּשְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃ ʾīš yəhūḏī hɔyɔ̂ bəšūšan habbīrɔ̂ ūšəmō mɔrdɔ̆ḵay bɛn yɔʾīr bɛn-šimʿī bɛn-qīš ʾīš yəmīnī. אִ֣ישׁ יְהוּדִ֔י הָיָ֖ה בְּשׁוּשַׁ֣ן הַבִּירָ֑ה וּשְׁמ֣וֹ מָרְדֳּכַ֗י בֶּ֣ן יָאִ֧יר בֶּן־שִׁמְעִ֛י בֶּן־קִ֖ישׁ אִ֥ישׁ יְמִינִֽי׃ ʾīš yəhūḏī hɔyɔ̂ bəšūšan habbīrɔ̂ ūšəmō mɔrdɔ̆ḵay bɛn yɔʾīr bɛn-šimʿī bɛn-qīš ʾīš yəmīnī. -- fully accented verse; stress should not be indicated in the final syllable וַיְהִי הַמַּבּוּל אַרְבָּעִים יוֹם עַל־הָאָרֶץ וַיִּרְבּוּ הַמַּיִם וַיִּשְׂאוּ אֶת־הַתֵּבָה וַתָּרָם מֵעַל הָאָרֶץ׃ wayəhī hammabbūl ʾarbāʿīm yōm ʿal-hāʾā́reṣ wayyirbū hammáyim wayyiśəʾū ʾeṯ-hattēḇā wattā́rom mēʿal hāʾāreṣ. -- a reminder of why this is hard וַיְהִ֧י הַמַּבּ֛וּל אַרְבָּעִ֥ים י֖וֹם עַל־הָאָ֑רֶץ וַיִּרְבּ֣וּ הַמַּ֗יִם וַיִּשְׂאוּ֙ אֶת־הַתֵּבָ֔ה וַתָּ֖רָם מֵעַ֥ל הָאָֽרֶץ׃ wayəhī hammabbūl ʾarbāʿīm yōm ʿal-hāʾā́reṣ wayyirbū hammáyim wayyiśəʾū ʾeṯ-hattēḇā wattā́rom mēʿal hāʾāreṣ. -- fully accented verse version of the above -- Category:Biblical Hebrew אִבְחָה ʾiḇḥɔ̂ אָבִיב ʾɔḇīḇ אֲבִיּוֹנָה ʾăḇiyyōnɔ̂ אַבִּיר ʾabbīr אֶ֫בֶן ʾɛ́ḇɛn אָהָל ʾɔhɔl אֵטוּן ʾeṭūn אִי ʾī אֵי ʾē אִלֵּף ʾillep̄ אָכְלָה ʾɔḵlɔ̂ -- food אָֽכְלָה ʾɔḵəlɔ̂ -- she ate אַלּוּף ʾallūp̄ אֻלַי ʾulay אַף ʾap̄ אַרְגְּוָן ʾargəwɔn אַרְגָּז ʾargɔz אִשָּׁה ʾiššɔ̂ אִשֶּׁה ʾiššɛ̂ אַשְׁרֵי ʾašrē אֵת, אֶת־ ʾeṯ, ʾɛṯ- אֹת ʾoṯ אַסְטְרוֹנוֹם ʾasṭərōnōm אֶפִּיסְטֵמוֹלוֹגְיָה ʾɛppīsṭemōlōgyɔ̂ ]] local tests = require('Module:UnitTests') local he_translit = require('Module:User:Erutuon/hbo-translit') local full_link = require('Module:links').full_link local lang = require('Module:languages').getByCode('he') local sc = require('Module:scripts').getByCode('Hebr') local function link(term) return full_link{lang = lang, sc = sc, term = term}:gsub("&lrm;", "") end local function parse_examples(example_string) local examples = {} for line in mw.text.gsplit(example_string, "\n") do local rest, comment = line:match("^(.-)%-%-%s*([^\n]+)%s*$") if not rest then rest = line end rest = mw.text.trim(rest) if rest == "" then table.insert(examples, comment) else local example = mw.text.split(rest, "\t") assert(#example == 2, #example .. "\t" .. mw.text.jsonEncode(rest)) table.insert(example, comment) table.insert(examples, example) end end return examples end local function add_qamats_qatan_comments(examples) local qamats_qatan = mw.ustring.char(0x05C7) for _, example in ipairs(examples) do if type(example) == "table" and example[1]:find(qamats_qatan, 1, true) then example[3] = (example[3] and example[3] .. "; " or "") .. "with qamats qatan code point" end end return examples end function tests:test_translit() self:iterate( add_qamats_qatan_comments(parse_examples(examples)), function(self, Hebrew, translit, comment) assert(type(Hebrew) == "string", type(Hebrew)) assert(type(translit) == "string", type(translit)) return self:equals(link(Hebrew), mw.ustring.toNFC(he_translit.transliterate(Hebrew)), translit, {comment = comment}) end) end return tests o6863i3mhbko32ydupki8nb9v8qyihc মডিউল:User:Erutuon/he-translit-circumflex 828 168641 510193 2026-06-07T12:45:54Z RedminBot 9553 [[en:Module:User:Erutuon/he-translit-circumflex]] থেকে আনা হলো 510193 Scribunto text/plain -- Currently based on -- https://ia803104.us.archive.org/7/items/A_Students_Vocabulary_For_Biblical_Hebrew_And_Aramaic/A%20Student%27s%20Vocabulary%20for%20Biblical%20Hebrew%20and%20Aramaic_text.pdf local export = {} local Array = require "Module:array" local U = mw.ustring.char local ufind = mw.ustring.find local ugsub = mw.ustring.gsub local ulen = mw.ustring.len local umatch = mw.ustring.match local usub = mw.ustring.sub local sheva = U(0x05B0) local hataf_segol = U(0x05B1) local hataf_patah = U(0x05B2) local hataf_qamats = U(0x05B3) local hiriq = U(0x05B4) local tsere = U(0x05B5) local segol = U(0x05B6) local patah = U(0x05B7) local qamats = U(0x05B8) local qamats_qatan = U(0x05C7) local holam = U(0x05B9) local holam_haser_for_waw = U(0x05BA) local qubuts = U(0x05BB) local dagesh_mappiq = U(0x05BC) local shin_dot = U(0x05C1) local sin_dot = U(0x05C2) local macron_above = U(0x0304) local macron_below = U(0x0331) local macron = "[" .. macron_above .. macron_below .. "]" local alef = "א" local he = "ה" local waw = "ו" local yod = "י" local vowel_letters = alef .. he .. waw .. yod local shin_sin = 'ש' -- local vowel_letter = "[" .. vowel_letters .. "]" -- -- '0' represents silent sheva -- local vowel_points = ( -- sheva .. hataf_segol .. hataf_patah .. hataf_qamats .. hiriq .. tsere .. -- segol .. patah .. qamats .. qamats_qatan .. holam .. qubuts .. '0' .. -- holam_haser_for_waw -- ) -- local vowel_point = "[" .. vowel_points .. "]" local short_vowels = segol .. patah .. hiriq .. qubuts .. qamats_qatan local short_vowel = "[" .. short_vowels .. "]" local shuruq = waw .. dagesh_mappiq local holam_male = waw .. holam local schwa = 'ə' local superscript_a = 'ᵃ' local vowel_map = { [sheva] = '', [hataf_segol] = 'ĕ', [hataf_patah] = 'ă', [hataf_qamats] = 'ŏ', [hiriq] = 'i', [tsere] = 'ē', [segol] = 'e', [patah] = 'a', [qamats] = 'ā', [qamats_qatan] = 'o', [qubuts] = 'u', [holam] = 'ō', -- [shin_dot] = '', -- [sin_dot] = '', [holam_male] = 'ô', [shuruq] = 'û', } local plene_map = { -- [sheva] = '', -- ə -- [hataf_segol] = 'ĕ', -- [hataf_patah] = 'ă', -- [hataf_qamats] = 'ŏ', [hiriq] = 'î', [tsere] = 'ê', -- [segol] = 'ệ', -- Lambdin's Introduction to Biblical Hebrew uses this. -- [patah] = 'a', [qamats] = 'â', -- [qamats_qatan] = 'o', -- if plene, then misspelling? -- [qubuts] = 'u', -- [holam] = 'ō', -- [holam_male] = 'ô', -- [shuruq] = 'û', } local vowel_diacritics = Array.keys(vowel_map):filter(function(vowel) return ulen(vowel) == 1 end):concat() local bet = 'ב' local gimel = 'ג' local dalet = 'ד' local kaf = 'כ' local kaf_final = 'ך' local pe = 'פ' local pe_final = 'ף' local tav = 'ת' local bgdkpt = bet .. gimel .. dalet .. kaf .. kaf_final .. pe .. pe_final .. tav local het = 'ח' local ayn = 'ע' local letter_map = { [alef] = 'ʾ', [bet] = 'b' .. macron_below, [gimel] = 'g' .. macron_above, [dalet] = 'd' .. macron_below, ['ה'] = 'h', [waw] = 'w', ['ז'] = 'z', [het] = 'ḥ', ['ט'] = 'ṭ', ['י'] = 'y', [kaf] = 'k' .. macron_below, [kaf_final] = 'k' .. macron_below, ['ל'] = 'l', ['מ'] = 'm', ['ם'] = 'm', ['נ'] = 'n', ['ן'] = 'n', ['ס'] = 's', [ayn] = 'ʿ', [pe] = 'p' .. macron_above, [pe_final] = 'p' .. macron_above, ['צ'] = 'ṣ', ['ץ'] = 'ṣ', ['ק'] = 'q', ['ר'] = 'r', [tav] = 't' .. macron_below, } local shin_sin_map = { [shin_dot] = "š", [sin_dot] = "ś", } local letters = shin_sin .. Array.keys(letter_map):filter(function(letter) return ulen(letter) == 1 end):concat() local punctuation_map = { ["־"] = "-", ["׃"] = ".", } -- Fix illogical order of diacritics in Unicode normalization. function export.normalize(text) -- Comment from [[Module:he-translit]]: -- The default order is: consonant, vowel point, dagesh or mappiq, shin or sin dot. -- The desired order is: consonant, shin or sin dot, dagesh or mappiq, vowel point. text = ugsub(text, "([" .. vowel_diacritics .. ']*)(' .. dagesh_mappiq .. "*)([" .. shin_dot .. sin_dot .. "]*)", "%3%2%1") text = ugsub( text, "[" .. hiriq .. patah .. qamats .. qamats_qatan .. sheva .. "]+", function(vowels) if ulen(vowels) == 2 then local first, second = umatch(vowels, "^(.)(.)$") -- יְרוּשָׁלִַם if (first == hiriq and second ~= hiriq) -- יְרוּשָׁלְַמָה or (first == sheva and (second == patah or second == qamats or second == qamats_qatan)) then return second .. first end end end) return text end local function match_alt_one(text, code_point_pos, patterns) for _, pattern in ipairs(patterns) do local start_pos, end_pos, capture = ufind(text, pattern, code_point_pos) if start_pos == code_point_pos then -- Return first capture (if any) and end of match return capture, end_pos end end end local token_patterns = { "(" .. holam_male .. ")", "([" .. letters .. waw .. "][" .. shin_dot .. sin_dot .. "]?" .. dagesh_mappiq .. "?)", "(.)", } local function next_token(text, code_point_pos) return match_alt_one(text, code_point_pos, token_patterns) end -- Validate shin dot and sin dot? local function tokenize(text) local pos = 1 local tokens = {} while true do local token, next_pos = next_token(text, pos) if not next_pos then break end pos = next_pos + 1 table.insert(tokens, token) end return tokens end export.tokenize = tokenize -- Indicates that a token may be a consonant. local function is_consonant(token) return token ~= nil and ufind(token, "[" .. letters .. "]", 1) == 1 end local function may_be_silent(token) return token ~= nil and vowel_letters:find(token, 1, true) ~= nil end -- Indicates that a token is definitely a vowel. -- Shuruq not covered because it could be a ww. local function is_vowel(token) return token == holam_male or token ~= nil and vowel_diacritics:find(token, 1, true) ~= nil end local function is_preceded_by_unchangeable_vowel(tokens, i) local token1, token2 = tokens[i - 2], tokens[i - 1] return token2 == shuruq -- Don't check that this is waw with dagesh. or token2 == holam_male or token2 == yod and (token1 == hiriq or token1 == tsere or token1 == segol) end local function has_dagesh(token) return token:find(dagesh_mappiq, 1, true) ~= nil end local function is_waw(token) return token:find(waw, 1, true) == 1 end local function is_he(token) return token:find(he, 1, true) == 1 end local function is_bgdkpt(token) return ufind(token, "^[" .. bgdkpt .. "]") == 1 end local function is_word_boundary(token) return token == nil or ufind(token, "^[%s%p]$") ~= nil end local function get_letter(token) -- assert(ufind(token, "[" .. letters .. "]") == 1) if token ~= nil then return usub(token, 1, 1) end end local function get_dot(token) return umatch(token, "[" .. shin_dot .. sin_dot .. "]") end local function is_followed_by_vowel(tokens, i) local next_token = tokens[i + 1] return is_vowel(next_token) or next_token == shuruq end local function is_preceded_by_vowel(tokens, i) i = i - 1 while may_be_silent(tokens[i]) do i = i - 1 end return is_vowel(tokens[i]) or tokens[i] == shuruq end local function makes_furtive_patah(token) local pos, letter = ufind(token, "([" .. ayn .. het .. he .. "])") return pos == 1 and (token ~= he or has_dagesh(token)) end function export.transliterate(text) local tokens = export.tokenize(export.normalize(text)) local transliteration = {} local function add_tr(val) assert(type(val) == "string") table.insert(transliteration, val) end -- Use a manually incremented loop so we can skip -- furtive patah and matres lectionis tokens. local i = 1 while true do local token = tokens[i] if not token then break end if is_waw(token) then if token == holam_male then if tokens[i - 1] == sheva then add_tr(letter_map[waw] .. vowel_map[holam]) else add_tr(vowel_map[holam_male]) end -- waw with dagesh, shuruq elseif has_dagesh(token) then if is_consonant(tokens[i - 1]) or is_word_boundary(tokens[i - 1]) then add_tr(vowel_map[shuruq]) else add_tr("ww") end else add_tr("w") end elseif is_consonant(token) then local letter = get_letter(token) local tr = assert(letter_map[letter] or shin_sin_map[get_dot(token)] or letter == shin_sin and shin_sin_map[sin_dot], token) if has_dagesh(token) then tr = ugsub(tr, macron, "") -- Don't double he. -- Don't double bgdkpt after sheva or at beginning of word. if not is_he(token) and not (is_bgdkpt(token) and (tokens[i - 1] == sheva or is_word_boundary(tokens[i - 1]))) then tr = tr .. tr end end -- Transcribe furtive patah before its consonant and skip it. if makes_furtive_patah(token) and tokens[i + 1] == patah and is_word_boundary(tokens[i + 2]) then add_tr(superscript_a) i = i + 1 end add_tr(tr) elseif is_vowel(token) then if ((token == tsere or token == hiriq) and tokens[i + 1] == yod) or (token == qamats and tokens[i + 1] == he and not is_vowel(tokens[i + 2])) then add_tr(plene_map[token]) i = i + 1 -- Skip mater lectionis. -- Handle vocalic sheva elseif token == sheva and ( -- after initial consonant unless following consonant has dagesh (is_word_boundary(tokens[i - 2]) and not has_dagesh(tokens[i + 1])) -- after another sheva not at end of word or (tokens[i - 2] == sheva and not is_word_boundary(tokens[i + 1])) -- between identical consonants or get_letter(tokens[i - 1]) == get_letter(tokens[i + 1]) -- after unchangeable vowel or is_preceded_by_unchangeable_vowel(tokens, i - 1) ) then add_tr(schwa) elseif -- implicit ktiv/qre from [[Module:he-translit/testcases]]: -- יְרוּשָׁלְַמָה, יְרוּשָׁלְָמָה token == sheva and (tokens[i - 1] == patah or tokens[i - 1] == qamats or tokens[i - 1] == qamats_qatan) then add_tr("y") elseif -- implicit ktiv/qre from [[Module:he-translit/testcases]]: -- יְרוּשָׁלִַם, יְרוּשָׁלִָם token == hiriq and (tokens[i - 1] == patah or tokens[i - 1] == qamats or tokens[i - 1] == qamats_qatan) then add_tr("yi") -- qamats in possibly closed syllable, -- as long as following two consonants are not identical, in which -- case the sheva has to be pronounced, putting the qamats -- in an open syllable elseif token == qamats and tokens[i + 2] == sheva and not (is_consonant(tokens[i + 1]) and is_consonant(tokens[i + 3]) and tokens[i + 1] == tokens[i + 3]) then add_tr(vowel_map[qamats_qatan]) elseif (token == patah or token == qamats) and tokens[i + 1] == yod and is_consonant(tokens[i + 2]) then add_tr(vowel_map[token]) add_tr("i") -- ??? i = i + 1 else add_tr(vowel_map[token]) end else add_tr(punctuation_map[token] or token) end i = i + 1 end return table.concat(transliteration) end return export oqf6splo7zq2zs1q4x68ji8rjzguk3m মডিউল:User:Erutuon/he-translit-circumflex/testcases 828 168642 510194 2026-06-07T12:45:54Z RedminBot 9553 [[en:Module:User:Erutuon/he-translit-circumflex/testcases]] থেকে আনা হলো 510194 Scribunto text/plain -- Put tab character between Hebrew and its transliteration. local examples = [=[ בַּיִת bayiṯ בֵּית bêṯ בָּתִּים bāttîm מַחֲנֶה maḥăneh בָּרָא bārāʾ רֶגֶל reḡel כֹּהֵן kōhēn מֶלֶךְ meleḵ מַמְלָכָה mamlāḵâ הַמַּמְלָכָה hammamlāḵâ הַלְּלוּיָהּ halləlûyāh הַלְלוּיָהּ haləlûyāh יָדַע yāḏaʿ שָׁבוּעַ šāḇûᵃʿ רוּחַ rûᵃḥ גָּבֹהַּ gāḇōᵃh מָשִׁיחַ māšîᵃḥ רֵיחַ rêᵃḥ שָׂדֶה śāḏeh שְׂדֵה śəḏēh בָּנַי bānay בְּנֵי bənê צָרְכִּי ṣorkî חָכְמָה ḥāḵəmâ -- Why is this qamats consonant sheva different from all the other qamats consonant shevas in [[Module:he-translit/testcases]]? שִׁפְרָה šip̄râ שָׁכְבְּךָ šoḵbəḵā הָפְכָּה hop̄kâ קָטְבּוֹ qoṭbô נִשְׂרְפָה niśrəp̄â בָּנָיו bānāiw -- why i? בָּנֶיהָ bāneyhā מִצְוֹת miṣwōṯ זִוּוּג ziwwûḡ רֹאשׁ rōʾš רֵאשִׁית rēʾšîṯ רִאשׁוֹן riʾšôn מְלָאכָה məlāʾḵâ מְלֶאכֶת məleʾḵeṯ חֵטְא ḥēṭʾ בָּרָאתָ bārāʾṯā חַטֹּאות ḥaṭṭōʾwṯ -- or does waw get mater lectionis status through the alef? יְראוּ yərʾû הָחְלַט hoḥlaṭ וַיֵּבְךְּ wayyēḇk אַרְאֶךָּ ʾarʾekkā וַיַּשְׁקְ wayyašq אַתְּ ʾatt וּוָווֹ ûwāwô וָו wāw תָּו tāw קַו qaw לָאו lāʾw חַי ḥay חָי ḥāy פִּיו pîw כִּסְלֵו kislēw גּוֹי gôy גֹּיִים gōyîm רָאוּי rāʾûy קִיא qîʾ יָבִיאוּ yāḇîʾû יְבִיאוּן yəḇîʾûn מֵאוּן mēʾûn מֵיאוּן mêʾûn בּוֹאוּ bôʾû בֹּאוּ bōʾû בּוּאוּ bûʾû אָבִיאָה ʾāḇîʾâ מֵאָה mēʾâ גֵּיאָהּ gêʾāh אָבוֹאָה ʾāḇôʾâ אָבֹאָה ʾāḇōʾâ נְשׂוּאָה nəśûʾâ קִיאוֹ qîʾô גֵּאוֹ gēʾô גֵּיאוֹ gêʾô בּוֹאוֹ bôʾô בֹּאוֹ bōʾô מִלּוּאוֹ millûʾô מִי mî אִיִּים ʾiyyîm אִיּוֹב ʾiyyôḇ אִיּוּן ʾiyyûn אַיִן ʾayin בּוֹא bôʾ יְפֵהפֶה yəp̄ēhp̄eh אֹהֶל ʾōhel הָאֹהֱלָה hāʾōhĕlâ אָהֳלוֹ ʾāhŏlô אָהָלְךָ ʾoholəḵā -- ??? יִשָּׂשכָר yiśśāśḵār -- silent sin; what to do with it? הוֹשִׁיעָה נָּא hôšîʿâ nnāʾ -- initial gemination עַד בֹּאֲךָ ʿaḏ bōʾăḵā וַיַּשְׁקְ אֶת הַצֹּאן wayyašq ʾeṯ haṣṣōʾn בְּנֵי בְרָק bənê ḇərāq בְרָק ḇərāq אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּשְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃ ʾîš yəhûḏî hāyâ bəšûšan habbîrâ ûšəmô mordŏḵay ben yāʾîr ben-šimʿî ben-qîš ʾîš yəmînî. -- omit cantillation mark stuff -- implicit ktiv/qre that would be nice to have הִוא hiwʾ יְרוּשָׁלִַם yərûšālayim יְרוּשָׁלִָם yərûšālāyim יְרוּשָׁלְַמָה yərûšālaymâ יְרוּשָׁלְָמָה yərûšālāymâ -- ktiv male tests חַיָּיב ḥayyāḇ חַוָּוה ḥawwâ הֱוֵוה hĕwēh הַיְינוּ haynū הִתְכַּוְּונוּ hiṯkawwənû גַּוְונָא gawnāʾ מְייוּחָד məyûḥāḏ כְּדַאי kəḏaʾy כּוּלָּם kullām קִידּוּשׁ qiddûš -- more alef אֲאַזֶּרְךָ ʾăʾazzerḵā מְאֹד məʾōḏ וַיִּבְאַשׁ wayyiḇʾaš וַיֶּאְסֹר wayyeʾsōr רֻאּוּ ruʾʾû תָּבִיאּוּ tāḇîʾʾû וַיָּבִיאּוּ wayyāḇîʾʾû -- sheva stress tests שָׁתְתָה šāṯəṯâ שְׁתֵּי štê שְׁתַּיִם štayim שְׁתֵּים עֶשְׁרֵי štêm ʿešrê ]=] -- Special characters and character combinations: -- â ê î ô û -- ệ maybe, or ɛ̂? -- ā ē ī ō ū -- ə ă ĕ ŏ -- ᵃ -- -- ʾ ḇ ḡ ḏ ḥ ṭ ʿ p̄ -- ṣ š ś ṯ local tests = require('Module:UnitTests') local he_translit = require('Module:User:Erutuon/he-translit-circumflex') local full_link = require('Module:links').full_link local lang = require('Module:languages').getByCode('he') local sc = require('Module:scripts').getByCode('Hebr') local function link(term) return full_link{lang = lang, sc = sc, term = term} end local function parse_examples(example_string) local examples = {} for line in mw.text.gsplit(example_string, "\n") do local rest, comment = line:match("^(.-)%-%-%s*([^\n]+)%s*$") if not rest then rest = line end rest = mw.text.trim(rest) if rest == "" then table.insert(examples, comment) else local example = mw.text.split(rest, "\t") assert(#example == 2, #example .. "\t" .. mw.text.jsonEncode(rest)) table.insert(example, comment) table.insert(examples, example) end end return examples end function tests:test_Tiberian() self:iterate( parse_examples(examples), function(self, Hebrew, translit, comment) assert(type(Hebrew) == "string", type(Hebrew)) assert(type(translit) == "string", type(translit)) return self:equals(link(Hebrew), mw.ustring.toNFC(he_translit.transliterate(Hebrew)), translit, {comment = comment}) end) end return tests 8im4mp38cp847x0jzm6i7xzzdasydpl মডিউল:User:Erutuon/he-translit-omit-nonconsonantal 828 168643 510195 2026-06-07T12:45:55Z RedminBot 9553 [[en:Module:User:Erutuon/he-translit-omit-nonconsonantal]] থেকে আনা হলো 510195 Scribunto text/plain -- Sort of a reimplementation of [[Module:he-translit]]. -- This version omits matres lectionis and letters that otherwise don't have -- their consonantal value, except when they indicate vowel length. -- Remaining issues: -- * some shvas are undecided (?) -- * cantillation marks and meteg are all interpreted as stress marks -- (some mark secondary stress, some don't mark stress) -- * qamats isn't distinguished correctly in all cases local export = {} local Array = require "Module:array" local function show_code_point_names(text) if not text then return "" end local names = Array() for cp in mw.ustring.gcodepoint(text) do -- Remove HEBREW LETTER, HEBREW POINT, etc. local name = require "Module:Unicode data".lookup_name(cp) :gsub( "^HEBREW (%w+) ", function(type) if type == "ACCENT" then return "ACCENT " else return "" end end) :lower() names:insert(name) end return names:concat ", " end local function show_tokens(tokens, i, j) return table.concat(Array(tokens):map(show_code_point_names), " | ", i, j) end export.show_tokens = show_tokens local U = mw.ustring.char local ufind = mw.ustring.find local ugsub = mw.ustring.gsub local ulen = mw.ustring.len local umatch = mw.ustring.match local usub = mw.ustring.sub local sheva = U(0x05B0) local hataf_segol = U(0x05B1) local hataf_patah = U(0x05B2) local hataf_qamats = U(0x05B3) local hiriq = U(0x05B4) local tsere = U(0x05B5) local segol = U(0x05B6) local patah = U(0x05B7) local qamats = U(0x05B8) local qamats_qatan = U(0x05C7) local holam = U(0x05B9) local holam_haser_for_waw = U(0x05BA) local qubuts = U(0x05BB) local dagesh_mappiq = U(0x05BC) local shin_dot = U(0x05C1) local sin_dot = U(0x05C2) local macron_above = U(0x0304) local macron_below = U(0x0331) local macron = "[" .. macron_above .. macron_below .. "]" local acute = U(0x0301) local alef = "א" local he = "ה" local waw = "ו" local yod = "י" local vowel_letters = alef .. he .. waw .. yod local shin_sin = 'ש' local shuruq = waw .. dagesh_mappiq local holam_male = waw .. holam local schwa = 'ə' local vowel_map = { [sheva] = '', [hataf_segol] = 'ĕ', [hataf_patah] = 'ă', [hataf_qamats] = 'ŏ', [hiriq] = 'i', [tsere] = 'ē', [segol] = 'e', [patah] = 'a', [qamats] = 'ā', [qamats_qatan] = 'o', [qubuts] = 'u', [holam] = 'ō', [holam_male] = 'ō', [holam_haser_for_waw] = 'ō', [shuruq] = 'ū', } local vowel_diacritics = Array.keys(vowel_map):filter(function(vowel) return ulen(vowel) == 1 end):concat() local short_vowel_map = { [holam] = 'o', [holam_male] = 'o', [holam_haser_for_waw] = 'o', [shuruq] = 'u', } local plene_map = { [hiriq] = 'ī', [tsere] = 'ē', [qamats] = 'ā', -- [qamats_qatan] = 'o', -- if plene, then misspelling? } local bet = 'ב' local gimel = 'ג' local dalet = 'ד' local kaf = 'כ' local kaf_final = 'ך' local lamed = 'ל' local mem = 'מ' local pe = 'פ' local pe_final = 'ף' local tav = 'ת' local bgdkpt = bet .. gimel .. dalet .. kaf .. kaf_final .. pe .. pe_final .. tav local het = 'ח' local ayin = 'ע' local letter_map = { [alef] = 'ʔ', [bet] = 'b' .. macron_below, [gimel] = 'g' .. macron_above, [dalet] = 'd' .. macron_below, [he] = 'h', [waw] = 'w', ['ז'] = 'z', [het] = 'ḥ', ['ט'] = 'ṭ', [yod] = 'y', [kaf] = 'k' .. macron_below, [kaf_final] = 'k' .. macron_below, [lamed] = 'l', [mem] = 'm', ['ם'] = 'm', ['נ'] = 'n', ['ן'] = 'n', ['ס'] = 's', [ayin] = 'ʕ', [pe] = 'p' .. macron_above, [pe_final] = 'p' .. macron_above, ['צ'] = 'ṣ', ['ץ'] = 'ṣ', ['ק'] = 'q', ['ר'] = 'r', [tav] = 't' .. macron_below, } local shin_sin_map = { [shin_dot] = "š", [sin_dot] = "ś", } local letters = shin_sin .. Array.keys(letter_map):filter(function(letter) return ulen(letter) == 1 end):concat() local punctuation_map = { ["־"] = "-", ["׃"] = ".", } -- First and last code point called "HEBREW ACCENT ...". local first_accent_cp, last_accent_cp = 0x0591, 0x05AE local meteg_cp = 0x05BD local meteg = U(meteg_cp) local combining_grapheme_joiner_cp = 0x034F local cgj = U(combining_grapheme_joiner_cp) local accents = { meteg } for cp = first_accent_cp, last_accent_cp do table.insert(accents, U(cp)) end local diacritic_order = { {shin_dot, shin_dot}, {dagesh_mappiq}, Array.keys(vowel_map):filter(function(vowel) return ulen(vowel) == 1 end), accents, {cgj}, } local accent_pattern = U(first_accent_cp) .. "-" .. U(last_accent_cp) .. meteg local diacritic_pattern = "[" .. shin_dot .. sin_dot .. dagesh_mappiq .. vowel_diacritics .. accent_pattern .. cgj .. "]" local diacritics_pattern = diacritic_pattern .. diacritic_pattern .. "+" local diacritic_order_map = {} for i, diacritics in ipairs(diacritic_order) do for _, diacritic in ipairs(diacritics) do diacritic_order_map[diacritic] = i end end local function is_accent(token) if not token then return false end local cp = mw.ustring.codepoint(token) return first_accent_cp <= cp and cp <= last_accent_cp or cp == combining_grapheme_joiner_cp end -- Fix illogical order of diacritics in Unicode normalization. -- The default order: -- letter, vowel points, dagesh or mappiq, accent, shin or sin dot. -- The desired order: -- letter, shin or sin dot, dagesh or mappiq, first vowel point, accent, -- maybe second vowel point if first vowel point is sheva or hiriq. function export.normalize(text) text = ugsub( text, diacritics_pattern, function(diacritics) local diacritics_list = mw.text.split(diacritics, "") table.sort( diacritics_list, function(a, b) return (diacritic_order_map[a] or 0) < (diacritic_order_map[b] or 0) end) -- For now remove combining grapheme joiners... though this might be wrong. while diacritics_list[#diacritics_list] == cgj do table.remove(diacritics_list) end -- If there are two vowels, put hiriq or sheva after other vowels. -- If there is also an accent, put it after the first vowel. -- Assume Unicode normalization: -- sheva before hiriq before patah before either qamats. -- This code works for combinations are in the testcases. -- יְרוּשָׁלִַם, יְרוּשָׁלְַמָה local i = 0 local first_vowel repeat i = i + 1 first_vowel = diacritics_list[i] until not first_vowel or vowel_diacritics:find(first_vowel) if first_vowel then local second_vowel = diacritics_list[i + 1] if second_vowel then if first_vowel == hiriq or first_vowel == sheva then diacritics_list[i], diacritics_list[i + 1] = diacritics_list[i + 1], diacritics_list[i] end if is_accent(diacritics_list[i + 2]) then diacritics_list[i + 1], diacritics_list[i + 2] = diacritics_list[i + 2], diacritics_list[i + 1] end end end return table.concat(diacritics_list) end) return text end local function match_alt_one(text, code_point_pos, patterns) for _, pattern in ipairs(patterns) do local start_pos, end_pos, capture = ufind(text, pattern, code_point_pos) if start_pos == code_point_pos then -- Return first capture (if any) and end of match return capture, end_pos end end end local token_patterns = { "(" .. holam_male .. ")", "([" .. letters .. waw .. "][" .. shin_dot .. sin_dot .. "]?" .. dagesh_mappiq .. "?)", "(.)", } local function next_token(text, code_point_pos) return match_alt_one(text, code_point_pos, token_patterns) end -- Validate shin dot and sin dot? local function tokenize(text) local pos = 1 local tokens = {} while true do local token, next_pos = next_token(text, pos) if not next_pos then break end pos = next_pos + 1 table.insert(tokens, token) end return tokens end export.tokenize = tokenize local function may_be_silent(token) return token ~= nil and vowel_letters:find(token, 1, true) ~= nil end -- Indicates that a token might be a vowel. -- Use only after determining that it is not a consonant. local function is_vowel(token) return token == holam_male or token == shuruq or (token ~= nil and vowel_diacritics:find(token, 1, true) ~= nil) end local function is_preceded_by_unchangeable_vowel(tokens, i) local token1, token2 = tokens[i - 2], tokens[i - 1] return token2 == shuruq -- Don't check that this is waw with dagesh. or token2 == holam_male or token2 == yod and (token1 == hiriq or token1 == tsere or token1 == segol) end local function is_short_vowel(token) return token == patah or token == segol or token == hiriq or token == qubuts end local function is_open_vowel(token) return token == patah or token == qamats end local function has_dagesh(token) return token ~= nil and token:find(dagesh_mappiq, 1, true) ~= nil end local function is_waw(token) return token ~= nil and token:find(waw, 1, true) == 1 end local function is_he(token) return token ~= nil and token:find(he, 1, true) == 1 end local function is_hataf(token) return token == hataf_segol or token == hataf_patah or token == hataf_qamats end local function get_letter(token) -- assert(ufind(token, "[" .. letters .. "]") == 1) if token ~= nil then return usub(token, 1, 1) end end local function is_guttural(token) local letter = get_letter(token) return letter == alef or letter == he or letter == het or letter == ayin end local function is_bgdkpt(token) return token ~= nil and ufind(token, "^[" .. bgdkpt .. "]") == 1 end -- Bidirectional control characters should be avoided as much as possible, -- but they are easily picked up when copying and pasting, so the module needs -- to account for them. -- This list is from [[w:Bidirectional control character]]. local bidirectional_control_characters = U(0x061C) .. U(0x200E) .. U(0x200F) .. U(0x202A) .. "-" .. U(0x202E) .. U(0x2066) .. "-" .. U(0x2069) local word_boundary_character = "^[%s%p" .. bidirectional_control_characters .. "]$" local function is_word_boundary(token) return token == nil or ufind(token, word_boundary_character) ~= nil end local function get_dot(token) return token and umatch(token, "[" .. shin_dot .. sin_dot .. "]") end local function is_followed_by_vowel(tokens, i) repeat i = i + 1 until not is_accent(tokens[i]) return is_vowel(tokens[i]) end local function is_preceded_by_vowel(tokens, i) repeat i = i - 1 until not (may_be_silent(tokens[i]) or is_accent(tokens[i])) return is_vowel(tokens[i]) end local function get_previous_vowel_pos(tokens, i) while true do i = i - 1 local token = tokens[i] if is_vowel(token) then return i elseif is_word_boundary(token) then return nil end end end local function get_previous_vowel(tokens, i) local pos = get_previous_vowel_pos(tokens, i) if pos then return tokens[pos] end end local function get_previous_neighboring_vowel(tokens, i) while true do i = i - 1 local token = tokens[i] if is_vowel(token) then return token elseif not is_accent(token) then return nil end end end -- Defined below. local is_consonant local function skip_before_accent(tokens, i) repeat i = i - 1 until not is_accent(tokens[i]) return i end local function is_preceded_by_consonant(tokens, i) return is_consonant(tokens, skip_before_accent(tokens, i)) end local function makes_furtive_patah(token) local pos, letter = ufind(token, "([" .. ayin .. het .. he .. "])") return pos == 1 and (token ~= he or has_dagesh(token)) end -- Handles silence of the possibly silent letters, -- except for some cases of waw (holam male, shuruq). local function is_silent(tokens, i) local prev_token, next_token = tokens[skip_before_accent(tokens, i)], tokens[i + 1] -- special case for יִשָּׂשכָר yiśśāḵār if tokens[i] == shin_sin and not is_vowel(next_token) then return true elseif may_be_silent(tokens[i]) then if tokens[i] == alef then -- Alef is pronounced when -- 1. initial -- 2. both preceded and followed by written vowels. return not (is_followed_by_vowel(tokens, i) and (is_preceded_by_vowel(tokens, i) or is_word_boundary(prev_token))) elseif tokens[i] == yod then return not is_followed_by_vowel(tokens, i) and (prev_token == hiriq or prev_token == tsere or prev_token == segol or not is_word_boundary(next_token)) -- בָּנָיו bānāw vs. בָּנַי bānay elseif tokens[i] == waw then -- holam + waw is probably incorrect return prev_token == holam or not (is_vowel(tokens[i + 1]) or is_word_boundary(tokens[i + 1])) else return not is_followed_by_vowel(tokens, i) end else return false end end -- Indicates that a token may be a consonant. -- Declared as local above. function is_consonant(tokens, i) local token = tokens[i] if is_waw(token) then return token == waw or (token == shuruq and not (is_preceded_by_consonant(tokens, i) or is_word_boundary(tokens[i - 1]))) else return token ~= nil and ufind(token, "[" .. letters .. "]", 1) == 1 end end -- Don't double he. -- Don't double bgdkpt after sheva or at beginning of word. local function is_double(tokens, i) local token = tokens[i] return token ~= nil and has_dagesh(token) and not is_he(token) and not (is_bgdkpt(token) and (tokens[i - 1] == sheva or is_word_boundary(tokens[i - 1]))) end local function is_preceded_by_prefix(tokens, i) local consonant, vowel = tokens[i - 2], tokens[i - 1] local letter = get_letter(consonant) local letter_is_shin = (letter == shin_sin and get_dot(consonant) == shin_dot) local next_cons_has_dagesh = has_dagesh(tokens[i]) return (vowel == hiriq and letter == mem and next_cons_has_dagesh) or (vowel == sheva and ( letter == bet or letter == dalet or letter == waw or letter == kaf or letter == lamed ) ) or (vowel == patah and next_cons_has_dagesh and ( letter == bet or letter == he or letter == kaf or letter == lamed or letter_is_shin -- very archaic, says [[Module:he-translit]] ) ) or (vowel == segol and next_cons_has_dagesh and letter_is_shin) end local function is_in_last_syllable(tokens, i) while true do local token = tokens[i + 1] if is_word_boundary(token) -- A sequence of consonant sheva consonant (sheva) does not have a vowel: -- וַיֵּבְךְּ wayyēḇk, וַיַּרְא wayyar or token == sheva and ( is_consonant(tokens, i + 2) and (tokens[i + 3] == sheva or is_word_boundary(tokens[i + 3])) ) then return true elseif is_vowel(token) then return false end i = i + 1 end end local function is_pronounced_sheva(tokens, i) local previous_vowel = get_previous_vowel(tokens, i) if tokens[i - 2] == meteg then return true -- ignore יְרוּשָׁלְָמָה yərūšālayim, יְרוּשָׁלְַמָה yərūšālāyim elseif is_word_boundary(tokens[i + 1]) or (tokens[i + 1] == alef and is_word_boundary(tokens[i + 2])) or has_dagesh(tokens[i + 1]) -- check for bgdkpt? then return false elseif -- after another sheva previous_vowel == sheva -- after initial consonant unless following consonant has dagesh or previous_vowel == nil -- between identical consonants or (get_letter(tokens[i - 1]) == get_letter(tokens[i + 1]) and not is_silent(tokens, i + 1)) or is_preceded_by_unchangeable_vowel(tokens, i - 1) or is_double(tokens, i - 1) then return true elseif is_short_vowel(previous_vowel) or is_guttural(tokens[i - 1]) then return false else -- Leave this catch-all case to make it clear what the default is. return false end end function export.transliterate(text) local tokens = export.tokenize(export.normalize(text)) local transliteration = {} local function add_tr(val) assert(type(val) == "string") table.insert(transliteration, val) end -- Use a manually incremented loop so we can skip -- furtive patah and matres lectionis tokens. local i = 1 while true do local token = tokens[i] if not token then break end -- This catches silent letters after a consonant; -- silent letters after a vowel are handled below. if is_silent(tokens, i) then add_tr("") elseif is_consonant(tokens, i) then local letter = get_letter(token) local tr = assert(letter_map[letter] or shin_sin_map[get_dot(token)] or letter == shin_sin and shin_sin_map[sin_dot], token) if has_dagesh(token) then tr = ugsub(tr, macron, "") if is_double(tokens, i) then tr = tr .. tr end end -- Transcribe furtive patah before its consonant and skip it. if makes_furtive_patah(token) and tokens[i + 1] == patah and is_word_boundary(tokens[i + 2]) then local previous_vowel_pos = get_previous_vowel_pos(tokens, i) if not (previous_vowel_pos and is_accent(tokens[previous_vowel_pos + 1])) then add_tr(acute) end add_tr(vowel_map[patah]) i = i + 1 end add_tr(tr) elseif is_vowel(token) then -- Genuine waw holam. Handle the waw and leave the holam to the next -- bit of code. -- מִצְוֹת miṣwōṯ if token == holam_male and tokens[i - 1] == sheva then add_tr(letter_map[waw]) end local has_accent = is_accent(tokens[i + 1]) local next_i = i + 1 if has_accent then next_i = i + 2 end -- Handle sheva. if tokens[i] == sheva then -- implicit ktiv/qre from [[Module:he-translit/testcases]]: -- יְרוּשָׁלְָמָה yərūšālayim, יְרוּשָׁלְַמָה yərūšālāyim if is_open_vowel(get_previous_neighboring_vowel(tokens, i)) then local previous_vowel_pos = get_previous_vowel_pos(tokens, i) if not (previous_vowel_pos and is_accent(tokens[previous_vowel_pos + 1])) then add_tr(acute) end add_tr("y") elseif is_pronounced_sheva(tokens, i) then add_tr(schwa) else add_tr("") end -- implicit ktiv/qre from [[Module:he-translit/testcases]]: -- יְרוּשָׁלִַם yərūšālaymā, יְרוּשָׁלִָם yərūšālāymā elseif token == hiriq and is_open_vowel(get_previous_neighboring_vowel(tokens, i)) then local previous_vowel_pos = get_previous_vowel_pos(tokens, i) if not (previous_vowel_pos and is_accent(tokens[previous_vowel_pos + 1])) then add_tr(acute) end add_tr("yi") -- qamats in possibly closed syllable, -- as long as following two consonants are not identical, in which -- case the sheva has to be pronounced, putting the qamats -- in an open syllable elseif token == qamats and not has_accent and ( (tokens[next_i + 1] == sheva and not is_pronounced_sheva(tokens, next_i + 1)) or is_double(tokens, next_i) or (is_guttural(tokens[next_i]) and is_hataf(tokens[next_i + 1])) -- כָּל kol, on its own and with prefixes or ((get_letter(tokens[i - 1]) == kaf and get_letter(tokens[next_i]) == lamed) and (is_word_boundary(tokens[next_i + 1]) and ( is_word_boundary(tokens[i - 2]) or is_preceded_by_prefix(tokens, i - 1) ) ) ) ) then add_tr(vowel_map[qamats_qatan]) else local vowel = token local start_i = i local i_after_silent_letters = next_i - 1 while is_silent(tokens, i_after_silent_letters + 1) do i_after_silent_letters = i_after_silent_letters + 1 end if i_after_silent_letters > start_i or token == shuruq or token == holam_male then if is_double(tokens, i_after_silent_letters + 1) then add_tr(short_vowel_map[vowel] or vowel_map[vowel]) else add_tr(plene_map[vowel] or vowel_map[vowel]) end else add_tr(vowel_map[token]) end i = i_after_silent_letters end -- This is not completely correct because not all accents indicate stress. -- I haven't sorted out their functions though. if has_accent and not is_in_last_syllable(tokens, i) then add_tr(acute) end else if not (is_accent(token) or token == meteg) then add_tr(punctuation_map[token] or token) end end i = i + 1 end return table.concat(transliteration) end function export.tr_t(frame) return export.transliterate(frame.args[1]) end return export nz3nl282q7g0rwews7k9qkj9y6cd7om মডিউল:User:Erutuon/he-translit-omit-nonconsonantal/testcases 828 168644 510196 2026-06-07T12:45:55Z RedminBot 9553 [[en:Module:User:Erutuon/he-translit-omit-nonconsonantal/testcases]] থেকে আনা হলো 510196 Scribunto text/plain -- Taken verbatim from [[Module:he-translit]] local examples = [[ בַּיִת bayiṯ בֵּית bēṯ בָּֽתִּים bāttīm אָ֫תָּה ʔā́ttā -- stressed qamats always ā אָֽתָּה ʔāttā -- meteg for unstressed qamats that is ā (normally would be o) אָכְלָה ʔoḵlā -- “food” - unstressed qamats before sheva normally o אָֽכְלָה ʔāḵəlā -- “she ate” מַחֲנֶה maḥăne בָּרָא bārā רֶגֶל reḡel כֹּהֵן kōhēn מֶלֶךְ meleḵ מַמְלָכָה mamlāḵā הַמַּמְלָכָה hammamlāḵā הַלְּלוּיָהּ halləlūyāh הַלְלוּיָהּ haləlūyāh יָדַע yāḏaʕ שָׁבוּעַ šāḇū́aʕ רוּחַ rū́aḥ גָּבֹהַּ gāḇṓah גָּבֹ֫הַּ gāḇṓah -- avoid adding two stress marks מָשִׁיחַ māšī́aḥ מָשִׁ֫יחַ māšī́aḥ -- avoid adding two stress marks רֵיחַ rḗaḥ שָׂדֶה śāḏe שְׂדֵה śəḏē בָּנַי bānay בְּנֵי bənē צָרְכִּי ṣorkī בֵּלְטְשַׁאצַּר bēlṭəšaṣṣar חָכְמָה ḥoḵmā -- no sheva rules apply; have to go with a default שִׁפְרָה šip̄rā שָׁכְבְּךָ šoḵbəḵā הָפְכָּה hop̄kā -- made-up word, but a particular potentially problematic Unicode situation קָטְבּוֹ qoṭbō -- another particular potentially problematic Unicode situation נִשְׂרְפָה niśrəp̄ā בָּנָיו bānāw בָּנֶיהָ bānehā מִצְוֹת miṣwōṯ עָוֺן ʕāwōn זִוּוּג ziwwūḡ רֹאשׁ rōš רֵאשִׁית rēšīṯ רִאשׁוֹן rīšōn מְלָאכָה məlāḵā מְלֶאכֶת məleḵeṯ חֵטְא ḥēṭ בָּרָאתָ bārāṯā חַטֹּאות ḥaṭṭōṯ יְראוּ yərū וַיֶּאְסֹר wayyeʔsōr הָחְלַט hoḥlaṭ וַיֵּבְךְּ wayyēḇk וַיֵּ֫בְךְּ wayyēḇk -- omit accent on final syllable before silent sheva אַרְאֶךָּ ʔarʔekkā וַיַּשְׁקְ wayyašq אַתְּ ʔatt וּוָווֹ ūwāwō וָו wāw תָּו tāw קַו qaw לָאו lāw חַי ḥay חָי ḥāy -- pausal פִּיו pīw כִּסְלֵו kislēw גּוֹי gōy גֹּי gōy גֹּיִים gōyīm רָאוּי rāʔūy קִיא qī יָבִיאוּ yāḇīʔū יְבִיאוּן yəḇīʔūn מֵאוּן mēʔūn מֵיאוּן mēʔūn בּוֹאוּ bōʔū בֹּאוּ bōʔū בּוּאוּ būʔū -- made-up word, but may help identify the issue אָבִיאָה ʔāḇīʔā מֵאָה mēʔā גֵּיאָהּ gēʔāh אָבוֹאָה ʔāḇōʔā אָבֹאָה ʔāḇōʔā נְשׂוּאָה nəśūʔā קִיאוֹ qīʔō גֵּאוֹ gēʔō גֵּיאוֹ gēʔō בּוֹאוֹ bōʔō בֹּאוֹ bōʔō מִלּוּאוֹ millūʔō מִי mī אִיִּים ʔiyyīm אִיּוֹב ʔiyyōḇ אִיּוּן ʔiyyūn אַיִן ʔayin בּוֹא bō יְפֵהפֶה yəp̄ēp̄e אֹהֶל ʔōhel הָאֹהֱלָה hāʔōhĕlā אָהֳלוֹ ʔohŏlō אָהָלְךָ ʔoholəḵā -- qamats qamats sheva perhaps always ooə in segolate nouns with pronominal suffix; however, verbs follow the same pattern but have long ā, so this may be an impossible condition to use יִשָּׂשכָר yiśśāḵār -- Still undecided if this actually needs to be handled הוֹשִׁיעָה נָּא hōšīʕā nnā עַד בֹּאֲךָ ʕaḏ bōʔăḵā וַיַּשְׁקְ אֶת הַצֹּאן wayyašq ʔeṯ haṣṣōn בְּנֵי בְרָק bənē ḇərāq בְרָק ḇərāq אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּשְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃ ʔīš yəhūḏī hāyā bəšūšan habbīrā ūšəmō mordŏḵay ben yāʔīr ben-šimʕī ben-qīš ʔīš yəmīnī. אִ֣ישׁ יְהוּדִ֔י הָיָ֖ה בְּשׁוּשַׁ֣ן הַבִּירָ֑ה וּשְׁמ֣וֹ מָרְדֳּכַ֗י בֶּ֣ן יָאִ֧יר בֶּן־שִׁמְעִ֛י בֶּן־קִ֖ישׁ אִ֥ישׁ יְמִינִֽי׃ ʔīš yəhūḏī hāyā bəšūšan habbīrā ūšəmō mordŏḵay ben yāʔīr ben-šimʕī ben-qīš ʔīš yəmīnī. -- fully accented verse; stress should not be indicated in the final syllable וַיְהִי הַמַּבּוּל אַרְבָּעִים יוֹם עַל־הָאָרֶץ וַיִּרְבּוּ הַמַּיִם וַיִּשְׂאוּ אֶת־הַתֵּבָה וַתָּרָם מֵעַל הָאָרֶץ׃ wayhī hammabbūl ʔarbāʕīm yōm ʕal-hāʔā́reṣ wayyirbū hammáyim wayyiśʔū ʔeṯ-hattēḇā wattā́rom mēʕal hāʔā́reṣ. -- a reminder of why this is hard וַיְהִ֧י הַמַּבּ֛וּל אַרְבָּעִ֥ים י֖וֹם עַל־הָאָ֑רֶץ וַיִּרְבּ֣וּ הַמַּ֗יִם וַיִּשְׂאוּ֙ אֶת־הַתֵּבָ֔ה וַתָּ֖רָם מֵעַ֥ל הָאָֽרֶץ׃ wayhī hammabbūl ʔarbāʕīm yōm ʕal-hāʔā́reṣ wayyirbū hammáyim wayyiśʔū ʔeṯ-hattēḇā wattā́rom mēʕal hāʔā́reṣ. -- fully accented verse version of the above וַיַּ֤רְא אֱלֹהִים֙ אֶת־כָּל־אֲשֶׁ֣ר עָשָׂ֔ה וְהִנֵּה־ט֖וֹב מְאֹ֑ד וַֽיְהִי־עֶ֥רֶב וַֽיְהִי־בֹ֖קֶר י֥וֹם הַשִּׁשִּֽׁי׃ wayyar ʔĕlōhīm ʔeṯ-kol-ʔăšer ʕāśā wəhinnē-ṭōḇ məʔōḏ wáyhī-ʕéreḇ wáyhī-ḇṓqer yōm haššiššī. -- implicit ktiv/qre that would be nice to have הִוא hī יְרוּשָׁלִַם yərūšāláyim יְר֣וּשָׁלִַ֔ם yərūšāláyim -- with accent: incorrect order with no combining grapheme joiner יְרוּשָׁלִָם yərūšālā́yim -- pausal form יְרוּשָׁלָֽ͏ִם yərūšālā́yim -- with meteg and combining grapheme joiner (which keeps meteg between vowel points) יְרוּשָׁלְַמָה yərūšāláymā יְרוּשָׁלְָמָה yərūšālā́ymā -- ktiv male tests חַיָּיב ḥayyāḇ חַוָּוה ḥawwā הֱוֵוה hĕwē הַיְינוּ haynū הִתְכַּוְּונוּ hiṯkawwənū גַּוְונָא gawnā מְייוּחָד məyūḥāḏ -- there is no way to tell that it really should be məyuḥāḏ, but anyway this test is for the double yod כְּדַאי kəḏay כּוּלָּם kullām -- shuruk does not necessarily imply a long vowel קִידּוּשׁ qiddūš -- chiriq male does not necessarily imply a long vowel -- כל כָּל kol כָּל כָּל כָּל kol kol kol כָּל הַכָּבוֹד kol hakkāḇōḏ כָל ḵol בְּלִי כָל מְאוּם bəlī ḵol məʔūm מִכָּל mikkol מִכָּל מָקוֹם mikkol māqōm בְּכָל bəḵol בְּכָל מָקוֹם bəḵol māqōm לְכָל ləḵol לְכָל מָקוֹם ləḵol māqōm כְּכָל kəḵol כְּכָל הַנִּרְאֶה kəḵol hannirʔe שֶׁכָּל šekkol שֶׁכָּל מָקוֹם šekkol māqōm שֶׁמִּכָּל šemmikkol שֶׁמִּכָּל מָקוֹם šemmikkol māqōm שֶׁבְּכָל šebbəḵol שֶׁבְּכָל מָקוֹם šebbəḵol māqōm שֶׁלְּכָל šelləḵol שֶׁלְּכָל מָקוֹם šelləḵol māqōm וְכָל wəḵol וְכָל מָקוֹם wəḵol māqōm וּבְכָל ūḇəḵol וּבְכָל מָקוֹם ūḇəḵol māqōm וּכְכָל ūḵəḵol וּכְכָל מָקוֹם ūḵəḵol māqōm הַכָּל hakkol בַּכָּל bakkol לַכָּל lakkol מֵהַכָּל mēhakkol שֶׁהַכָּל šehakkol שֶׁבַּכָּל šebbakkol שֶׁלַּכָּל šellakkol וְהַכָּל wəhakkol וּבַכָּל ūḇakkol וְלַכָּל wəlakkol וְכַכָּל wəḵakkol דְּכָל dəḵol שַׁכָּל šakkol -- not kol כָּלָה kālā הֵיכָל hēḵāl מַאֲכָל maʔăḵāl מִיכָל mīḵāl מְכָל məḵāl שָׁכָל šāḵāl שֻׁכָּל šukkāl מוּכָל mūḵāl -- rare word-internal he mater-lectionis (for fun) פְּדָהצוּר pəḏāṣūr עֲשָׂהאֵל ʕăśāʔēl ]] -- The above can be regenerated with this code in [[Module:he-translit]]: --[[ local examples = {} -- paste examples table here function tests:run_tests() local output = require "Module:array"() for _, row in ipairs(examples) do if type(row) == "string" then output:insert("-- " .. row) else if row[3] then output:insert(row[1] .. "\t" .. row[2] .. " -- " .. row[3]) else output:insert(row[1] .. "\t" .. row[2]) end end end return require "Module:debug".highlight(output:concat("\n"), { lang = "text" }) end --]] local tests = require('Module:UnitTests') local he_translit = require('Module:User:Erutuon/he-translit-omit-nonconsonantal') local full_link = require('Module:links').full_link local lang = require('Module:languages').getByCode('he') local sc = require('Module:scripts').getByCode('Hebr') local function link(term) return full_link{lang = lang, sc = sc, term = term} end local function parse_examples(example_string) local examples = {} for line in mw.text.gsplit(example_string, "\n") do local rest, comment = line:match("^(.-)%-%-%s*([^\n]+)%s*$") if not rest then rest = line end rest = mw.text.trim(rest) if rest == "" then table.insert(examples, comment) else local example = mw.text.split(rest, "\t") assert(#example == 2, #example .. "\t" .. mw.text.jsonEncode(rest)) table.insert(example, comment) table.insert(examples, example) end end return examples end local function add_qamats_qatan_comments(examples) local qamats_qatan = mw.ustring.char(0x05C7) for _, example in ipairs(examples) do if type(example) == "table" and example[1]:find(qamats_qatan, 1, true) then example[3] = (example[3] and example[3] .. "; " or "") .. "with qamats qatan code point" end end return examples end function tests:test_translit() self:iterate( add_qamats_qatan_comments(parse_examples(examples)), function(self, Hebrew, translit, comment) assert(type(Hebrew) == "string", type(Hebrew)) assert(type(translit) == "string", type(translit)) return self:equals(link(Hebrew), mw.ustring.toNFC(he_translit.transliterate(Hebrew)), translit, {comment = comment}) end) end return tests bjcmb9hggohwg5iyzloj8d6u1t6zhzd মডিউল:User:Erutuon/he-translit-superscript 828 168645 510197 2026-06-07T12:45:56Z RedminBot 9553 [[en:Module:User:Erutuon/he-translit-superscript]] থেকে আনা হলো 510197 Scribunto text/plain -- Experimenting with a weird semi-phonemic transcription of Hebrew orthography -- based on the Tiberian pronunciation, as described in this paper: -- https://www.jstor.org/stable/27909449 --[[ This transliteration departs from Tiberian phonemes as described in https://www.openbookpublishers.com/product/951 and https://www.tiberianhebrew.com/ in order to more faithfully represent the orthography: * ב and ו distinguished (both /v/ in most cases, formerly distinguished as /b/ and /w/). * שׁ and ס distinguished (both /s/, formerly distinguished as /ɬ/ and /s/). * Superscript letters (matres lectionis and quiescent) don't represent consonant phonemes unless we postulate synchronic phonological rules to delete them. And apparently they also don't consistently correspond to Tiberian phonemic vowel length! There is a vowel length distinction inferred for Tiberian Hebrew, but it is maybe indicated with cantillation, not sure. See also a different analysis: https://www.academia.edu/37684591/The_vocalic_phonemes_of_Tiberian_Hebrew ]] local export = {} local Array = require "Module:array" local U = mw.ustring.char local ufind = mw.ustring.find local ugsub = mw.ustring.gsub local ulen = mw.ustring.len local umatch = mw.ustring.match local usub = mw.ustring.sub local sheva = U(0x05B0) local hataf_segol = U(0x05B1) local hataf_patah = U(0x05B2) local hataf_qamats = U(0x05B3) local hiriq = U(0x05B4) local tsere = U(0x05B5) local segol = U(0x05B6) local patah = U(0x05B7) local qamats = U(0x05B8) local qamats_qatan = U(0x05C7) local holam = U(0x05B9) local holam_haser_for_waw = U(0x05BA) local qubuts = U(0x05BB) local dagesh_mappiq = U(0x05BC) local shin_dot = U(0x05C1) local sin_dot = U(0x05C2) local macron_above = U(0x0304) local macron_below = U(0x0331) local macron = "[" .. macron_above .. macron_below .. "]" local alef = "א" local he = "ה" local waw = "ו" local yod = "י" local vowel_letters = alef .. he .. waw .. yod local shin_sin = 'ש' local shuruq = waw .. dagesh_mappiq local holam_male = waw .. holam local superscript_map = { [alef] = "ˀ", [yod] = "ʸ", [he] = "ʰ", [waw] = "ʷ", } local vowel_map = { [sheva] = '', -- ə [hataf_segol] = 'ĕ', [hataf_patah] = 'ă', [hataf_qamats] = 'ŏ', [hiriq] = 'i', [tsere] = 'e', [segol] = 'ɛ', -- or æ [patah] = 'a', [qamats] = 'ɔ', -- or å [qamats_qatan] = 'ɔ', -- or å [qubuts] = 'u', [holam] = 'o', [holam_male] = 'o' .. superscript_map[waw], [holam_haser_for_waw] = 'o', [shuruq] = 'u' .. superscript_map[waw], } local vowel_diacritics = Array.keys(vowel_map):filter(function(vowel) return ulen(vowel) == 1 end):concat() local bet = 'ב' local gimel = 'ג' local dalet = 'ד' local kaf = 'כ' local kaf_final = 'ך' local pe = 'פ' local pe_final = 'ף' local tav = 'ת' local bgdkpt = bet .. gimel .. dalet .. kaf .. kaf_final .. pe .. pe_final .. tav local het = 'ח' local ayn = 'ע' local letter_map = { [alef] = 'ʔ', [bet] = 'b' .. macron_below, [gimel] = 'g' .. macron_above, [dalet] = 'd' .. macron_below, [he] = 'h', [waw] = 'w', ['ז'] = 'z', [het] = 'ḥ', ['ט'] = 'ṭ', [yod] = 'y', [kaf] = 'k' .. macron_below, [kaf_final] = 'k' .. macron_below, ['ל'] = 'l', ['מ'] = 'm', ['ם'] = 'm', ['נ'] = 'n', ['ן'] = 'n', ['ס'] = 's', [ayn] = 'ʕ', [pe] = 'p' .. macron_above, [pe_final] = 'p' .. macron_above, ['צ'] = 'ṣ', ['ץ'] = 'ṣ', ['ק'] = 'q', ['ר'] = 'r', [tav] = 't' .. macron_below, } local shin_sin_map = { [shin_dot] = "š", [sin_dot] = "ś", } local letters = shin_sin .. Array.keys(letter_map):filter(function(letter) return ulen(letter) == 1 end):concat() local punctuation_map = { ["־"] = "-", ["׃"] = ".", } -- Fix illogical order of diacritics in Unicode normalization. function export.normalize(text) -- Comment from [[Module:he-translit]]: -- The default order is: consonant, vowel point, dagesh or mappiq, shin or sin dot. -- The desired order is: consonant, shin or sin dot, dagesh or mappiq, vowel point. text = ugsub(text, "([" .. vowel_diacritics .. ']*)(' .. dagesh_mappiq .. "*)([" .. shin_dot .. sin_dot .. "]*)", "%3%2%1") text = ugsub( text, "[" .. hiriq .. patah .. qamats .. qamats_qatan .. "]+", function(vowels) if ulen(vowels) == 2 then local first, second = umatch(vowels, "^(.)(.)$") if first == hiriq and second ~= hiriq then return second .. first end end end) return text end local function match_alt_one(text, code_point_pos, patterns) for _, pattern in ipairs(patterns) do local start_pos, end_pos, capture = ufind(text, pattern, code_point_pos) if start_pos == code_point_pos then -- Return first capture (if any) and end of match return capture, end_pos end end end local token_patterns = { "(" .. holam_male .. ")", "([" .. letters .. waw .. "][" .. shin_dot .. sin_dot .. "]?" .. dagesh_mappiq .. "?)", "(.)", } local function next_token(text, code_point_pos) return match_alt_one(text, code_point_pos, token_patterns) end -- Validate shin dot and sin dot? local function tokenize(text) local pos = 1 local tokens = {} while true do local token, next_pos = next_token(text, pos) if not next_pos then break end pos = next_pos + 1 table.insert(tokens, token) end return tokens end export.tokenize = tokenize -- Indicates that a token may be a consonant. local function is_consonant(token) return token ~= nil and ufind(token, "[" .. letters .. "]", 1) == 1 end local function may_be_silent(token) return token ~= nil and vowel_letters:find(token, 1, true) ~= nil end -- Indicates that a token is definitely a vowel. -- Shuruq not covered because it could be a ww. local function is_vowel(token) return token == holam_male or token ~= nil and vowel_diacritics:find(token, 1, true) ~= nil end local function has_dagesh(token) return token:find(dagesh_mappiq, 1, true) ~= nil end local function is_waw(token) return token:find(waw, 1, true) == 1 end local function is_he(token) return token:find(he, 1, true) == 1 end local function is_bgdkpt(token) return ufind(token, "^[" .. bgdkpt .. "]") == 1 end local function is_word_boundary(token) return token == nil or ufind(token, "^[%s%p]$") ~= nil end local function get_letter(token) assert(ufind(token, "[" .. letters .. "]") == 1) return usub(token, 1, 1) end local function get_dot(token) return umatch(token, "[" .. shin_dot .. sin_dot .. "]") end local function is_followed_by_vowel(tokens, i) local next_token = tokens[i + 1] return is_vowel(next_token) or next_token == shuruq end local function is_preceded_by_vowel(tokens, i) i = i - 1 while may_be_silent(tokens[i]) do i = i - 1 end return is_vowel(tokens[i]) or tokens[i] == shuruq end local function makes_furtive_patah(token) local pos, letter = ufind(token, "([" .. ayn .. het .. he .. "])") return pos == 1 and (token ~= he or has_dagesh(token)) end -- Handles silence of the possibly silent letters, -- except for some cases of waw (holam male, shuruq). local function is_silent(tokens, i) local prev_token, next_token = tokens[i - 1], tokens[i + 1] if may_be_silent(tokens[i]) then if tokens[i] == alef then -- Alef is pronounced when -- 1. initial -- 2. both preceded and followed by written vowels. return not (is_followed_by_vowel(tokens, i) and (is_preceded_by_vowel(tokens, i) or is_word_boundary(prev_token))) elseif tokens[i] == yod then -- ? return not is_followed_by_vowel(tokens, i) and (prev_token == hiriq or prev_token == tsere or prev_token == segol or not is_word_boundary(next_token)) -- for בָּנָיו: bɔnɔʸw vs. בָּנַי bɔnay elseif tokens[i] == waw then error("Waw is supposed to be handled elsewhere; module must be broken.") else return not is_followed_by_vowel(tokens, i) end else return false end end function export.transliterate(text) local tokens = export.tokenize(export.normalize(text)) local transliteration = {} local function add_tr(val) assert(type(val) == "string") table.insert(transliteration, val) end -- Use a manually incremented loop so we can skip the furtive patah token. local i = 1 while true do local token = tokens[i] if not token then break end if is_waw(token) then if token == holam_male then if tokens[i - 1] == sheva then add_tr(letter_map[waw] .. vowel_map[holam]) else add_tr(vowel_map[holam_male]) end -- waw with dagesh, shuruq elseif has_dagesh(token) then if is_consonant(tokens[i - 1]) or is_word_boundary(tokens[i - 1]) then add_tr(vowel_map[shuruq]) else add_tr("ww") end elseif is_preceded_by_vowel(tokens, i) -- final waw in בָּנָיו bɔnɔʸw pronounced and not (is_word_boundary(tokens[i + 1]) or is_followed_by_vowel(tokens, i)) then add_tr(superscript_map[waw]) else add_tr("w") end elseif is_silent(tokens, i) then add_tr(superscript_map[token]) elseif may_be_silent(token) or is_consonant(token) then local letter = get_letter(token) local tr = assert(letter_map[letter] or shin_sin_map[get_dot(token)] or letter == shin_sin and shin_sin_map[sin_dot], token) if has_dagesh(token) then tr = ugsub(tr, macron, "") -- Don't double he. -- Don't double bgdkpt after sheva or at beginning of word. if not is_he(token) and not (is_bgdkpt(token) and (tokens[i - 1] == sheva or is_word_boundary(tokens[i - 1]))) then tr = tr .. tr end end -- Transcribe furtive patah before its consonant and skip it. if makes_furtive_patah(token) and tokens[i + 1] == patah and is_word_boundary(tokens[i + 2]) then add_tr(vowel_map[patah]) i = i + 1 elseif tokens[i - 1] == sheva and get_letter(tokens[i - 2]) == get_letter(token) then add_tr("'") end add_tr(tr) elseif is_vowel(token) then add_tr(vowel_map[token]) else add_tr(punctuation_map[token] or token) end i = i + 1 end return table.concat(transliteration) end return export aprily42wuxgrd3rpbdgbv089y2rqb4 মডিউল:User:Erutuon/he-translit-superscript/testcases 828 168646 510198 2026-06-07T12:45:56Z RedminBot 9553 [[en:Module:User:Erutuon/he-translit-superscript/testcases]] থেকে আনা হলো 510198 Scribunto text/plain -- Put tab character between Hebrew and its transliteration. local examples = [[ בַּיִת bayiṯ בֵּית beʸṯ בָּתִּים bɔttiʸm מַחֲנֶה maḥănɛʰ בָּרָא bɔrɔˀ רֶגֶל rɛḡɛl כֹּהֵן kohen מֶלֶךְ mɛlɛḵ מַמְלָכָה mamlɔḵɔʰ הַמַּמְלָכָה hammamlɔḵɔʰ הַלְּלוּיָהּ hall'luʷyɔh -- apostrophe to separate two identical consonants (not specified in paper) הַלְלוּיָהּ hal'luʷyɔh -- apostrophe to separate two identical consonants (not specified in paper) יָדַע yɔḏaʕ שָׁבוּעַ šɔḇuʷaʕ רוּחַ ruʷaḥ גָּבֹהַּ gɔḇoah מָשִׁיחַ mɔšiʸaḥ רֵיחַ reʸaḥ שָׂדֶה śɔḏɛʰ שְׂדֵה śḏeʰ בָּנַי bɔnay בְּנֵי bneʸ צָרְכִּי ṣɔrkiʸ חָכְמָה ḥɔḵmɔʰ שִׁפְרָה šip̄rɔʰ שָׁכְבְּךָ šɔḵbḵɔ -- weird הָפְכָּה hɔp̄kɔʰ קָטְבּוֹ qɔṭboʷ נִשְׂרְפָה niśrp̄ɔʰ -- weird בָּנָיו bɔnɔʸw בָּנֶיהָ bɔnɛʸhɔ מִצְוֹת miṣwoṯ זִוּוּג ziwwuʷḡ רֹאשׁ roˀš רֵאשִׁית reˀšiʸṯ רִאשׁוֹן riˀšoʷn מְלָאכָה mlɔˀḵɔʰ מְלֶאכֶת mlɛˀḵɛṯ חֵטְא ḥeṭˀ בָּרָאתָ bɔrɔˀṯɔ חַטֹּאות ḥaṭṭoˀʷṯ יְראוּ yrˀuʷ הָחְלַט hɔḥlaṭ וַיֵּבְךְּ wayyeḇk אַרְאֶךָּ ʔarʔɛkkɔ וַיַּשְׁקְ wayyašq אַתְּ ʔatt וּוָווֹ uʷwɔwoʷ וָו wɔw תָּו tɔw קַו qaw לָאו lɔˀw חַי ḥay חָי ḥɔy פִּיו piʸw כִּסְלֵו kislew גּוֹי goʷy גֹּיִים goyiʸm רָאוּי rɔʔuʷy קִיא qiʸˀ יָבִיאוּ yɔḇiʸʔuʷ יְבִיאוּן yḇiʸʔuʷn מֵאוּן meʔuʷn מֵיאוּן meʸʔuʷn בּוֹאוּ boʷʔuʷ בֹּאוּ boʔuʷ בּוּאוּ buʷʔuʷ אָבִיאָה ʔɔḇiʸʔɔʰ מֵאָה meʔɔʰ גֵּיאָהּ geʸʔɔh אָבוֹאָה ʔɔḇoʷʔɔʰ אָבֹאָה ʔɔḇoʔɔʰ נְשׂוּאָה nśuʷʔɔʰ קִיאוֹ qiʸʔoʷ גֵּאוֹ geʔoʷ גֵּיאוֹ geʸʔoʷ בּוֹאוֹ boʷʔoʷ בֹּאוֹ boʔoʷ מִלּוּאוֹ milluʷʔoʷ מִי miʸ אִיִּים ʔiyyiʸm אִיּוֹב ʔiyyoʷḇ אִיּוּן ʔiyyuʷn אַיִן ʔayin בּוֹא boʷˀ יְפֵהפֶה yp̄eʰp̄ɛʰ אֹהֶל ʔohɛl הָאֹהֱלָה hɔʔohĕlɔʰ אָהֳלוֹ ʔɔhŏloʷ אָהָלְךָ ʔɔhɔlḵɔ יִשָּׂשכָר yiśśɔḵɔr -- silent sin הוֹשִׁיעָה נָּא hoʷšiʸʕɔʰ nnɔˀ -- initial gemination עַד בֹּאֲךָ ʕaḏ boʔăḵɔ וַיַּשְׁקְ אֶת הַצֹּאן wayyašq ʔɛṯ haṣṣoˀn בְּנֵי בְרָק bneʸ ḇrɔq בְרָק ḇrɔq אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּשְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃ ʔiʸš yhuʷḏiʸ hɔyɔʰ bšuʷšan habbiʸrɔʰ uʷšmoʷ mɔrdŏḵay bɛn yɔʔiʸr bɛn-šimʕiʸ bɛn-qiʸš ʔiʸš ymiʸniʸ. -- omit cantillation mark stuff -- implicit ktiv/qre that would be nice to have הִוא hiʷˀ יְרוּשָׁלִַם yruʷšɔlaim יְרוּשָׁלִָם yruʷšɔlɔim יְרוּשָׁלְַמָה yruʷšɔlaymɔʰ יְרוּשָׁלְָמָה yruʷšɔlɔymɔʰ -- ktiv male tests חַיָּיב ḥayyɔʸḇ חַוָּוה ḥawwɔʷʰ הֱוֵוה hĕweʷʰ הַיְינוּ hayʸnuʷ הִתְכַּוְּונוּ hiṯkawwʷnuʷ גַּוְונָא gawʷnɔˀ מְייוּחָד mʸyuʷḥɔḏ כְּדַאי kḏaˀy כּוּלָּם kuʷllɔm קִידּוּשׁ qiʸdduʷš -- more alef אֲאַזֶּרְךָ ʔăʔazzɛrḵɔ מְאֹד mʔoḏ וַיִּבְאַשׁ wayyiḇʔaš וַיֶּאְסֹר wayyɛʔsor רֻאּוּ ruʔʔuʷ תָּבִיאּוּ tɔḇiʸʔʔuʷ וַיָּבִיאּוּ wayyɔḇiʸʔʔuʷ -- sheva stress tests שָׁתְתָה šɔṯ'ṯɔʰ שְׁתֵּי šteʸ שְׁתַּיִם štayim שְׁתֵּים עֶשְׁרֵי šteʸm ʕɛšreʸ ]] -- special character inventory: -- ă ɛ ĕ ɔ ŏ -- ʔ ˀ ḇ ḡ ḏ ʰ ʷ ḥ ʸ ḵ ʕ p̄ -- ṭ š ś ṯ -- English order: -- ḇ ḏ ḡ ʰ ḥ ḵ p̄ -- š ś ṯ ṭ ʷ ʸ ʔ ˀ ʕ local tests = require('Module:UnitTests') local he_translit = require('Module:User:Erutuon/he-translit-superscript') local full_link = require('Module:links').full_link local lang = require('Module:languages').getByCode('he') local sc = require('Module:scripts').getByCode('Hebr') local function link(term) return full_link{lang = lang, sc = sc, term = term} end local function parse_examples(example_string) local examples = {} for line in mw.text.gsplit(example_string, "\n") do local rest, comment = line:match("^(.-)%-%-%s*([^\n]+)%s*$") if not rest then rest = line end rest = mw.text.trim(rest) if rest == "" then table.insert(examples, comment) else local example = mw.text.split(rest, "\t") assert(#example == 2, #example .. "\t" .. mw.text.jsonEncode(rest)) table.insert(example, comment) table.insert(examples, example) end end return examples end function tests:test_Tiberian() self:iterate( parse_examples(examples), function(self, Hebrew, translit, comment) assert(type(Hebrew) == "string", type(Hebrew)) assert(type(translit) == "string", type(translit)) return self:equals(link(Hebrew), mw.ustring.toNFC(he_translit.transliterate(Hebrew)), translit, {comment = comment}) end) end return tests 4hw70dl5m5mgkihku1v4i2plt8m6lpu মডিউল:User:Erutuon/transliteration 828 168647 510199 2026-06-07T12:45:56Z RedminBot 9553 [[en:Module:User:Erutuon/transliteration]] থেকে আনা হলো 510199 Scribunto text/plain local export = {} local use_array = true local m_data = mw.loadData("Module:User:Erutuon/transliteration/data") local str_gsub = string.gsub local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*" function export.one_character_replace(text, mapping) text = str_gsub(text, UTF8_char, mapping) return text end function export.cluster_replace(text, mapping) if mapping[1] then for _, replacement in ipairs(mapping) do text = str_gsub(text, replacement[1], replacement[2]) end else for digraph, replacement in pairs(mapping) do text = str_gsub(text, digraph, replacement) end end return text end function export.ady(text) local data = m_data.ady data = use_array and data.array or data.map text = export.one_character_replace(text, data[1]) text = export.cluster_replace(text, data[3]) text = export.cluster_replace(text, data[2]) return text end function export.show(frame) local func = frame.args[1] return export[func](frame.args[2]) end return export ei7q0s251mybysje0h4tds6w0fsuc3c মডিউল:User:Erutuon/transliteration/data 828 168648 510200 2026-06-07T12:45:57Z RedminBot 9553 [[en:Module:User:Erutuon/transliteration/data]] থেকে আনা হলো 510200 Scribunto text/plain local data = {} data.ady = {} data.ady.map = { -- 1-character correspondences [1] = { ["а"]="ā", ["б"]="b", ["в"]="v", ["г"]="ɣ", ["д"]="d", ["е"]="e", ["ё"]="ë", ["ж"]="ž", ["з"]="z", ["и"]="i", ["й"]="j", ["к"]="k", ["л"]="l", ["м"]="m", ["н"]="n", ["о"]="o", ["п"]="p", ["р"]="r", ["с"]="s", ["т"]="t", ["у"]="w", ["ф"]="f", ["х"]="x", ["ц"]="c", ["ч"]="č", ["ш"]="š", ["щ"]="š̍", ["ъ"]="”", ["ы"]="ə", ["ь"]="’", ["э"]="ă", ["ю"]="ju", ["я"]="jā", ["ӏ"]="ʾ", ["А"]="Ā", ["Б"]="B", ["В"]="V", ["Г"]="Ɣ", ["Д"]="D", ["Е"]="E", ["Ё"]="Ë", ["Ж"]="Ž", ["З"]="Z", ["И"]="I", ["Й"]="J", ["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["О"]="O", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["У"]="W", ["Ф"]="F", ["Х"]="X", ["Ц"]="C", ["Ч"]="Č", ["Ш"]="Š", ["Щ"]="Š̍", ["Ъ"]="”", ["Ы"]="Ə", ["Ь"]="’", ["Э"]="Ă", ["Ю"]="Ju", ["Я"]="Jā", ["Ӏ"]="ʾ" }, -- 3- and 4-character correspondences [3] = { ['кхъу'] = 'q°', ['Кхъу'] = 'Q°', ['гъу'] = 'ġ°', ['дзу'] = 'ʒ°', ['жъу'] = 'ẑ°', ['Кхъ'] = 'Q', ['кхъ'] = 'q', ['къу'] = 'q°', ['кӏу'] = 'ḳ°', ['пӏу'] = 'ṗ°', ['тӏу'] = 'ṭ°', ['хъу'] = 'χ°', ['шъу'] = 'ŝ°', ['шӏу'] = 'ṣ̂°', ['гу'] = 'g°', ['Гъу'] = 'Ġ°', ['Дзу'] = 'Ʒ°', ['Жъу'] = 'Ẑ°', ['Къу'] = 'Q°', ['Кӏу'] = 'Ḳ°', ['Пӏу'] = 'Ṗ°', ['Тӏу'] = 'Ṭ°', ['Хъу'] = 'Χ°', ['Шъу'] = 'Ŝ°', ['Шӏу'] = 'Ṣ̂°', }, -- 2-character correspondences [2] = { ['гь'] = 'ɡ’', ['гъ'] = 'ġ', ['дж'] = 'ǯ̍', ['дз'] = 'ʒ', ['жъ'] = 'ẑ', ['жь'] = 'ž̍', ['ку'] = 'k°', ['къ'] = 'q', ['кӏ'] = 'č̣̍', ['лъ'] = 'ł', ['лӏ'] = 'ḷ', ['пӏ'] = 'ṗ', ['сӏ'] = 'ṣ̣', ['тӏ'] = 'ṭ', ['фӏ'] = 'f̣', ['ху'] = 'x°', ['хъ'] = 'χ', ['хь'] = 'ḥ', ['цу'] = 'c°', ['цӏ'] = 'c̣', ['чӏ'] = 'č̣', ['чу'] = 'č̍°', ['чъ'] = 'č', ['шъ'] = 'ŝ', ['шӏ'] = 'ṣ̂', ['ӏу'] = 'ʾ°', ['ӏь'] = '՚̍', ['Гу'] = 'G°', ['Гь'] = 'ɡ’', ['Гъ'] = 'Ġ', ['Дж'] = 'Ǯ̍', ['Дз'] = 'Ʒ', ['Жъ'] = 'Ẑ', ['Жь'] = 'Ž̍', ['Ку'] = 'K°', ['Къ'] = 'Q', ['Кӏ'] = 'Č̣̍', ['Лъ'] = 'Ł', ['Лӏ'] = 'Ḷ', ['Пӏ'] = 'Ṗ', ['Сӏ'] = 'Ṣ̣', ['Тӏ'] = 'Ṭ', ['Фӏ'] = 'F̣', ['Ху'] = 'X°', ['Хъ'] = 'Χ', ['Хь'] = 'Ḥ', ['Цу'] = 'C°', ['Цӏ'] = 'C̣', ['Чӏ'] = 'Č̣', ['Чу'] = 'Č̍°', ['Чъ'] = 'Č', ['Шъ'] = 'Ŝ', ['Шӏ'] = 'Ṣ̂', }, } data.ady.arrays = { data.ady.map[1] } data.ady.arrays[2] = {} data.ady.arrays[3] = {} local i = 0 local array = data.ady.arrays[2] for grapheme, replacement in pairs(data.ady.map[2]) do i = i + 1 array[i] = { grapheme, replacement } end local i = 0 local array = data.ady.arrays[3] for grapheme, replacement in pairs(data.ady.map[3]) do i = i + 1 array[i] = { grapheme, replacement } end return data mrduriubf6izu8eqy8qxi32an8r2rwm মডিউল:User:GianWiki/itk-translit 828 168649 510201 2026-06-07T12:45:57Z RedminBot 9553 [[en:Module:User:GianWiki/itk-translit]] থেকে আনা হলো 510201 Scribunto text/plain local export = {} --Based on [[Module:he-translit]] by Malku H₂n̥rés, Sartma, Erutuon, Metaknowledge local m_str_utils = require("Module:string utilities") local gcodepoint = m_str_utils.gcodepoint local match = m_str_utils.match local s = m_str_utils.gsub local U = m_str_utils.char local bidirectional_control_characters = U(0x061C) .. U(0x200E) .. U(0x200F) .. U(0x202A) .. "-" .. U(0x202E) .. U(0x2066) .. "-" .. U(0x2069) local word_end = "%f[%s%z" .. bidirectional_control_characters .. "%-]" local word_start = "%f[^%s%z" .. bidirectional_control_characters .. "%-]" -- Bidirectional control characters should be avoided as much as possible, -- but they are easily picked up when copying and pasting, so the module needs -- to account for them. -- This list is from [[w:Bidirectional control character]]. local V = "[aɔɛeiăəou‌āēīōūêôáéíóúḗṓếố][̂̄̆]?́?" local C = "[ʔḇḡḏhwzḥṭylsʕqrśšṯ'ḵmnfṣbdgptkʒvtjçFP]" local c = { --direct translit --full char ie. C ["א"] = "ʔ", ["ב"] = "ḇ", ["ג"] = "ḡ", ["ד"] = "ḏ", ["ה"] = "h", ["ו"] = "w", ["װ"] = "v", ["ז"] = "z", ["ח"] = "ḥ", ["ט"] = "ṭ", ["י"] = "y", ["ײ"] = "yy", ["ײַ"]= "yya", ["ל"] = "l", ["ס"] = "s", ["ע"] = "ʕ", ["ק"] = "q", ["ר"] = "r", ["ש"] = "ß", ["ת"] = "ṯ", --ligatures: ["ﭏ"] = "L", --miscellaneous: ["׳"] = "'", --geresh ["־"] = "-", --hyphen ["׃"] = " .", --dot ["ׂ"] = "ˊ", --sin dot ["ׁ"] = "ˇ", --shin dot ["ּ"] = "·", --dagesh ["֫"] = "^", --oleh ["ֽ"] = "+", --meteg ["ֿ"] = "–", --rafe --niqqud ie. V ["ַ"] = "a", ["ָ"] = "ɔ", ["ֶ"] = "ɛ", ["ֵ"] = "e", ["ִ"] = "i", ["ֳ"] = "ɔ̆", ["ֲ"] = "ă", ["ֱ"] = "ɛ̆", ["ְ"] = "ə", ["ֹ"] = "o", ["ֺ"] = "o", ["ֻ"] = "u", ["ׇ"] = "ɔ", } local b = { --HE --when different final form {"[כך]", "ḵ"}, {"[מם]", "m"}, {"[נן]", "n"}, {"[פף]", "P"}, {"[צץ]", "ṣ"}, {"(" .. V .. ")(·?)(+?)(^?)([ˊˇ]?'?)(–?)", "%5%6%2%1%4%3"}, --order: s(h)in dot, geresh, rafe, dagesh, vowel (niqqud), oleh, meteg --bgdkft: fricative + dagesh > stop {"ḇ·", "b"}, {"ḡ·", "g"}, {"ḏ·", "d"}, {"ṯ·", "t"}, {"ḵ·", "k"}, {"P·", "p"}, --s(h)in dot {"ß(·?)ˇ", "š%1"}, {"ß(·?)ˊ", "ś%1"}, {"ß", "š"}, --el ligature + vowel: {"La", "ʔal"}, {"Lă", "ʔăl"}, {"Le", "ʔel"}, {"Lɛ", "ʔɛl"}, {"Lɛ̆", "ʔɛ̆l"}, {"Lə", "ʔəl"}, {"Li", "ʔil"}, {"Lo", "ʔol"}, {"Lɔ", "ʔɔl"}, {"Lɔ̆", "ʔɔ̆l"}, {"Lu", "ʔul"}, {"L", "ʔl"}, --vowel lengthenings {"i([+^]?)y", "ī%1"}, --V > long / _{jw}{no V no dagesh} {"ī([+^]?" .. V .. ")", "iy%1"}, {"ī·", "iy·"}, {"e([+^]?)y", "ē%1"}, {"ē([+^]?" .. V .. ")", "ey%1"}, {"ɛ([+^]?)y", "E%1"}, --see E > ɛ̄ below {"E([+^]?" .. V .. ")", "ɛy%1"}, {"(" .. C .. "·?)wo", "%1ō"}, {"(" .. V .. "[+^]?)w·", "%1U"}, {"w·", "ū"}, {"U", "w·"}, {"(" .. C .. "·?)y·", "%1ī"}, --h > circumflex / V_{no V no dagesh} {"(" .. V .. "[+^]?)h", "%1H"}, {"H(" .. V .. ")", "h%1"}, {"H·", "h"}, {"e([+^]?)H", "ê%1"}, {"o([+^]?)H", "ô%1"}, {"ɛ([+^]?)H", "ɛ̂%1"}, {"ɔ([+^]?)H", "ɔ̂%1"}, {"a([+^]?)H", "â%1"}, {"(" .. V .. "[+^]?%s?)(.)·(%s?" .. V .. ")", "%1%2%2%3"}, --dagesh gemination {"·", ""}, --deletion of unpointed s(h)ins and useless dageshim {"([ʕhḥ])a(" .. word_end .. ")", "^a%1%2"}, --final /a/-guttural inversion --penultimate stress: segolates & -áyiC {"(" .. C .. "[eɛo])(%+?".. C .. "ɛ" .. C .. ")" .. word_end, "%1^%2"}, {"(" .. C .. "a)(%+?".. C .. C .. "?a" .. C ..")" .. word_end, "%1^%2"}, {"ayi(" .. C .. ")" .. word_end, "a^yi%1"}, --stress marking {"a^", "á"}, {"e^", "é"}, {"i^", "í"}, {"o^", "ó"}, {"u^", "ú"}, {"ɛ^", "ɛ́"}, {"ɔ^", "ɔ́"}, {"ā^", "ā́"}, {"ē^", "ḗ"}, {"ī^", "ī́"}, {"ō^", "ṓ"}, {"ū^", "ū́"}, {"ɛ̄^", "ɛ̄́"}, {"ɔ̄^", "ɔ̄́"}, {"ê^", "ế"}, {"ô^", "ố"}, {"ɛ̂^", "ɛ̂́"}, {"ɔ̂^", "ɔ̂́"}, --f/p̄ distinction {"P–", "f"}, {"P", "p̄"}, -- {"ɔyw(" .. word_end .. ")", "ɔw%1"}, --irregular… {"%s%.", "."}, --quotes: " ." > "." (esthetics) } local itk = { ["ʔ"] = "ʔ", ["ḇ"] = "b", ["ḡ"] = "g", ["ḏ"] = "d", ["h"] = "", ["w"] = "v", ["z"] = "ʒ", ["ṭ"] = "t", ["y"] = "j", ["q"] = "k", ["ß"] = "š", ["F"] = "p", ["ṣ"] = "ç", ["â"] = "a", ["ɔ"] = "a", ["ɛ"] = "e", ["ē"] = "e", ["ī"] = "i", ["ō"] = "o", ["ū"] = "u", } local m = {-- --p̄/f distinction {"p̄", "p"}, --alternative e {"(" .. C .. ")əj([bçdfkglmnprsštvʒ])", "%1e%2"}, --glottal stop and schwa deletion {"[ʔə]", ""}, --nasal palatal {"nj([aeiou])", "ň%1"}, {"njj([aeiou])", "ň%1"}, --lateral palatal {"lji", "ľi"}, {"lj([aeou])", "ľi%1"}, {"ljji", "gli"}, {"ljj([aeou])", "ľi%1"}, } function export.HE(text) text = s(s(text, '.', c), "[֣֖֣֑֣֣֧֛֖֥֧֛֥֖֑֣֖֥֔֗֗֙֔]", "") --remove cantillation marks so that it works for quotes too for a = 1, #b do text = s(text, b[a][1], b[a][2]) end return text end function export.HE_tr(text) return (s(export.HE(text), "+", "")) --metegim kept for MH end function export.ITK_tr(text) for a = 1, #m do text = s(text, m[a][1], m[a][2]) end return text end function export.tr(text) return export.HE_tr(text) end --Erutuon's code for code points below --[[ local Array = require "Module:array" local function show_code_point_names(text) if not text then return "" end local names = Array() for cp in gcodepoint(text) do -- Remove HEBREW LETTER, HEBREW POINT, etc. local name = require "Module:Unicode data".lookup_name(cp) :gsub( "^HEBREW (%w+) ", function(type) if type == "ACCENT" then return "ACCENT " else return "" end end) :lower() names:insert(name) end return names:concat ", " end local old_s = s function s(...) local old = ... local new = old_s(...) if old ~= new then mw.log(show_code_point_names(old), show_code_point_names(new), ...) end return new end --]] return export 8ml5f02fxufsppchebhht7inopzm0kj মডিউল:User:IntergalacticOboist/nod-translit2 828 168650 510202 2026-06-07T12:45:58Z RedminBot 9553 [[en:Module:User:IntergalacticOboist/nod-translit2]] থেকে আনা হলো 510202 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local sub = mw.ustring.sub local match = mw.ustring.match local find = mw.ustring.find local failed_cat = "[[Category:Entries with failed Northern Thai transliterations]]" local namespace = mw.title.getCurrentTitle().nsText local thai_range = "[ᨠ-᪉]" local categories = {} local systems = { ["paiboon"] = 1, ["royin"] = 2, ["ipa"] = 3, ["charPhon"] = 4, ["homophone"] = 5, ["file"] = 6 } local initial = { ["ᨠ"] = { "g", "k", "k", class = "high" }, ["ᨧ"] = { "j", "ch", "t͡ɕ", class = "high" }, ["ᨯ"] = { "d", "d", "d", class = "mid" }, ["ᨭ"] = { "dt", "t", "t", class = "high" }, ["ᨲ "] = { "dt", "t", "t", class = "high" }, ["ᨷ"] = { "b", "b", "b", class = "mid" }, ["ᨸ"] = { "bp", "p", "p", class = "high" }, ["ᩋ"] = { "", "@", "ʔ", class = "mid" }, ["ᨦ"] = { "ng", "$ng", "ŋ", class = "low" }, ["ᨱ "] = { "n", "n", "n", class = "low" }, ["ᨶ"] = { "n", "n", "n", class = "low" }, ["ᨾ"] = { "m", "m", "m", class = "low" }, ["ญ"] = { "ny", "ny", "ɲ", class = "low" }, ["ᩀ"] = { "y", "y", "j", class = "mid" }, ["ᩁ"] = { "r", "r", "r", class = "low" }, ["ᩃ"] = { "l", "l", "l", class = "low" }, ["ᩊ"] = { "l", "l", "l", class = "low" }, ["ᩅ"] = { "w", "w", "w", class = "low" }, ["ᨣ"] = { "k", "kh", "kʰ", class = "low" }, ["ᨤ"] = { "k", "kh", "kʰ", class = "low" }, ["ᨥ"] = { "k", "kh", "kʰ", class = "low" }, ["ᨡ"] = { "k", "kh", "kʰ", class = "high" }, ["ᨢ"] = { "k", "kh", "kʰ", class = "high" }, ["ᨩ"] = { "ch", "ch", "t͡ɕʰ", class = "low" }, ["ᨫ"] = { "ch", "ch", "t͡ɕʰ", class = "low" }, ["ᨨ"] = { "ch", "ch", "t͡ɕʰ", class = "high" }, ["ᨰ"] = { "t", "th", "tʰ", class = "low" }, ["ᨴ"] = { "t", "th", "tʰ", class = "low" }, ["ᨵ"] = { "t", "th", "tʰ", class = "low" }, ["ᨮ"] = { "t", "th", "tʰ", class = "high" }, ["ᨳ"] = { "t", "th", "tʰ", class = "high" }, ["ᨻ"] = { "p", "ph", "pʰ", class = "low" }, ["ᨽ"] = { "p", "ph", "pʰ", class = "low" }, ["ᨹ"] = { "p", "ph", "pʰ", class = "high" }, ["ᨼ"] = { "f", "f", "f", class = "low" }, ["ᨺ"] = { "f", "f", "f", class = "high" }, ["ᨪ"] = { "s", "s", "s", class = "low" }, ["ᩆ"] = { "s", "s", "s", class = "high" }, ["ᩇ"] = { "s", "s", "s", class = "high" }, ["ᩈ"] = { "s", "s", "s", class = "high" }, ["ᩌ"] = { "h", "h", "h", class = "low" }, ["ᩉ"] = { "h", "h", "h", class = "high" }, ["หง"] = { "ng", "$ng", "ŋ", class = "high" }, ["หน"] = { "n", "n", "n", class = "high" }, ["หม"] = { "m", "m", "m", class = "high" }, ["หญ"] = { "y", "y", "j", class = "high" }, ["หย"] = { "y", "y", "j", class = "high" }, ["หร"] = { "r", "r", "r", class = "high" }, ["หล"] = { "l", "l", "l", class = "high" }, ["หว"] = { "w", "w", "w", class = "high" }, ["…"] = { "…", "…", "…", class = "" }, [""] = { failed_cat, failed_cat, "", class = "" }, } local vowel = { ["open"] = { ["ᩡ"] = { "a", "a", "a" }, ["◌"] = { "a", "a", "a" }, ["ᩥ"] = { "i", "i", "i" }, ["ᩧ"] = { "ʉ", "ue", "ɯ" }, --> change here on ["ุ"] = { "u", "u", "u" }, ["เะ"] = { "e", "e", "eʔ" }, ["แะ"] = { "ɛ", "ae", "ɛʔ" }, ["โะ"] = { "o", "o", "oʔ" }, ["เาะ"] = { "ɔ", "o", "ɔʔ" }, ["็"] = { "ɔ", "o", "ɔ" }, ["เิ"] = { "ə", "oe", "ɤ" }, ["เอะ"] = { "ə", "oe", "ɤʔ" }, ["า"] = { "aa", "a", "aː" }, ["ี"] = { "ii", "i", "iː" }, ["ู"] = { "uu", "u", "uː" }, ["ือ"] = { "ʉʉ", "ue", "ɯː" }, ["เ"] = { "ee", "e", "eː" }, ["แ"] = { "ɛɛ", "ae", "ɛː" }, ["โ"] = { "oo", "o", "oː" }, ["อ"] = { "ɔɔ", "o", "ɔː" }, ["ร"] = { "ɔɔn", "on", "ɔːn" }, ["เอ"] = { "əə", "oe", "ɤː" }, ["เียะ"] = { "ia", "ia", "ia̯ʔ" }, ["เือะ"] = { "ʉa", "uea", "ɯa̯ʔ" }, ["ัวะ"] = { "ua", "ua", "ua̯ʔ" }, ["เีย"] = { "iia", "ia", "ia̯" }, ["เือ"] = { "ʉʉa", "uea", "ɯa̯" }, ["ัว"] = { "uua", "ua", "ua̯" }, ["ิว"] = { "iu", "io", "iw" }, ["ีว"] = { "iiu", "io", "iːw" }, ["เ็ว"] = { "eo", "eo", "ew" }, ["แ็ว"] = { "ɛo", "aeo", "ɛw" }, ["เา"] = { "ao", "ao", "aw" }, ["เว"] = { "eeo", "eo", "eːw" }, ["แว"] = { "ɛɛo", "aeo", "ɛːw" }, ["าว"] = { "aao", "ao", "aːw" }, ["เอว"] = { "əəo", "oeu", "ɤːw" }, --royin inferred ["โว"] = { "oow", "ou", "oːw" }, --royin inferred ["เียว"] = { "iao", "iao", "ia̯w" }, ["ัย"] = { "ai", "ai", "aj" }, ["ใ"] = { "ai", "ai", "aj" }, ["ไ"] = { "ai", "ai", "aj" }, ["ไย"] = { "ai", "ai", "aj" }, ["ึย"] = { "ʉi", "uei", "ɯj" }, ["็อย"] = { "ɔi", "oi", "ɔj" }, ["เิ็ย"] = { "əi", "oei", "ɤj" }, ["ุย"] = { "ui", "ui", "uj" }, ["าย"] = { "aai", "ai", "aːj" }, ["อย"] = { "ɔɔi", "oi", "ɔːj" }, ["โย"] = { "ooi", "oi", "oːj" }, ["เย"] = { "əəi", "oei", "ɤːj" }, ["เิย"] = { "əəi", "oei", "ɤːj" }, -- Certainly occurs in rup pariwat. ["ูย"] = { "uui", "ui", "uːj" }, ["วย"] = { "uai", "uai", "ua̯j" }, ["เือย"] = { "ʉai", "ueai", "ɯa̯j" }, ["ำ"] = { "am", "am", "am" }, }, ["closed"] = { ["ั"] = { "a", "a", "a" }, ["รร"] = { "a", "a", "a" }, ["ิ"] = { "i", "i", "i" }, ["ึ"] = { "ʉ", "ue", "ɯ" }, ["ุ"] = { "u", "u", "u" }, ["เ"] = { "ee", "e", "eː" }, ["เ็"] = { "e", "e", "e" }, ["แ็"] = { "ɛ", "ae", "ɛ" }, ["แ"] = { "ɛɛ", "ae", "ɛː" }, [""] = { "o", "o", "o" }, ["็อ"] = { "ɔ", "o", "ɔ" }, ["เิ็"] = { "ə", "oe", "ɤ" }, ["า"] = { "aa", "a", "aː" }, ["ี"] = { "ii", "i", "iː" }, ["ื"] = { "ʉʉ", "ue", "ɯː" }, ["ู"] = { "uu", "u", "uː" }, ["โ"] = { "oo", "o", "oː" }, ["อ"] = { "ɔɔ", "o", "ɔː" }, ["เิ"] = { "əə", "oe", "ɤː" }, ["เอ"] = { "əə", "oe", "ɤː" }, ["เีย"] = { "iia", "ia", "ia̯" }, ["เือ"] = { "ʉʉa", "uea", "ɯa̯" }, ["ว"] = { "uua", "ua", "ua̯" }, ["ไ"] = { "ai", "ai", "aj" }, ["เา"] = { "ao", "ao", "aw" }, ["็อย"] = { "ɔi", "oi", "ɔj" }, } } local unromLong = { ["เีย"] = true, ["เือ"] = true, ["ัว"] = true, ["ว"] = true, ["เือย"] = true, ["วาย"] = true, ["เอว"] = true, ["เียว"] = true, } local liveExc = { ["ัย"] = true, ["ใ"] = true, ["ไ"] = true, ["ไย"] = true, ["ุย"] = true, ["วย"] = true, ["็อย"] = true, ["เิ็ย"] = true, ["เา"] = true, ["ิว"] = true, ["เ็ว"] = true, ["แ็ว"] = true, ["ำ"] = true, } -- ย,ว are not included. -- ช,ซ,ส,ฟ,ล are changed for loanwords. -- ห,อ,ฮ can never be c2s. local coda = { ["ก"] = { "k", "k", "k̚" }, ["ข"] = { "k", "k", "k̚" }, ["ฃ"] = { "k", "k", "k̚" }, ["ค"] = { "k", "k", "k̚" }, ["ฅ"] = { "k", "k", "k̚" }, ["ฆ"] = { "k", "k", "k̚" }, ["จ"] = { "t", "t", "t̚" }, ["ฉ"] = { "t", "t", "t̚" }, ["ช"] = { "ch", "ch", "t͡ɕʰ" }, ["ซ"] = { "s", "s", "s" }, ["ฌ"] = { "t", "t", "t̚" }, ["ฎ"] = { "t", "t", "t̚" }, ["ฏ"] = { "t", "t", "t̚" }, ["ฐ"] = { "t", "t", "t̚" }, ["ฑ"] = { "t", "t", "t̚" }, ["ฒ"] = { "t", "t", "t̚" }, ["ด"] = { "t", "t", "t̚" }, ["ต"] = { "t", "t", "t̚" }, ["ถ"] = { "t", "t", "t̚" }, ["ท"] = { "t", "t", "t̚" }, ["ธ"] = { "t", "t", "t̚" }, ["ศ"] = { "t", "t", "t̚" }, ["ษ"] = { "t", "t", "t̚" }, ["ส"] = { "s", "s", "s" }, ["บ"] = { "p", "p", "p̚" }, ["ป"] = { "p", "p", "p̚" }, ["ผ"] = { "p", "p", "p̚" }, ["ฝ"] = { "p", "p", "p̚" }, ["พ"] = { "p", "p", "p̚" }, ["ฟ"] = { "f", "f", "f" }, ["ภ"] = { "p", "p", "p̚" }, ["ง"] = { "ng", "ng$", "ŋ" }, ["ญ"] = { "n", "n", "n" }, ["ณ"] = { "n", "n", "n" }, ["น"] = { "n", "n", "n" }, ["ร"] = { "n", "n", "n" }, ["ล"] = { "l", "l", "l" }, ["ฬ"] = { "n", "n", "n" }, ["ม"] = { "m", "m", "m" }, } local tFromMark = { -- common ["่"] = { ["high"] = "low", ["mid"] = "low", ["low"] = "falling" }, ["้"] = { ["high"] = "special", ["mid"] = "special", ["low"] = "high" }, ["๊"] = { ["high"] = "high", ["mid"] = "high", ["low"] = "high" }, ["๋"] = { ["high"] = "rising", ["mid"] = "rising", ["low"] = "rising" }, -- forced mid tone ["̄"] = { ["high"] = "mid", ["mid"] = "mid", ["low"] = "mid" }, } local tNoMark = { ["dead-short"] = { ["high"] = "rising", ["mid"] = "rising", ["low"] = "high" }, ["dead-long"] = { ["high"] = "low", ["mid"] = "low", ["low"] = "falling" }, ["live"] = { ["high"] = "rising", ["mid"] = "mid", ["low"] = "mid" }, } local tRomMarks = { ["high"] = "́", ["mid"] = "", ["low"] = "̀", ["rising"] = "̌", ["falling"] = "̂", ["special"] = "᷆" } local tLevels = { ["high"] = "˦˥", ["mid"] = "˧", ["low"] = "˨˩", ["rising"] = "˩˩˦", ["falling"] = "˦˩", ["special"] = "˥˥˨", -- More work needed! } local symbols = { ["๐"] = 0, ["๑"] = 1, ["๒"] = 2, ["๓"] = 3, ["๔"] = 4, ["๕"] = 5, ["๖"] = 6, ["๗"] = 7, ["๘"] = 8, ["๙"] = 9, } local permitted_cluster = { ["ks"] = 1, ["ms"] = 1, ["ns"] = 1, ["ps"] = 1, ["ts"] = 1, } -- modified ISO 11940 (to make sound values are more apparent), uses spacing marks for signs local char_table = { ["ก"] = "k", ["ข"] = "kʰ", ["ฃ"] = "x", ["ค"] = "g", ["ฅ"] = "ɣ", ["ฆ"] = "gʰ", ["ง"] = "ŋ", ["จ"] = "t͡ɕ", ["ฉ"] = "t͡ɕʰ", ["ช"] = "d͡ʑ", ["ซ"] = "z", ["ฌ"] = "d͡ʑʰ", ["ญ"] = "ɲ", ["ฎ"] = "ᶑ", ["ฏ"] = "ʈ", ["ฐ"] = "ʈʰ", ["ฑ"] = "ɖ", ["ฒ"] = "ɖʰ", ["ณ"] = "ɳ", ["ด"] = "ɗ", ["ต"] = "t", ["ถ"] = "tʰ", ["ท"] = "d", ["ธ"] = "dʰ", ["น"] = "n", ["บ"] = "ɓ", ["ป"] = "p", ["ผ"] = "pʰ", ["ฝ"] = "v", ["พ"] = "b", ["ฟ"] = "f", ["ภ"] = "bʰ", ["ม"] = "m", ["ย"] = "y", ["ร"] = "r", ["ฤ"] = "ṛ", ["ล"] = "l", ["ฦ"] = "ḷ", ["ว"] = "w", ["ศ"] = "ɕ", ["ษ"] = "ʂ", ["ส"] = "s", ["ห"] = "h", ["ฬ"] = "ɭ", ["อ"] = "ɒ", ["ฮ"] = "ɦ", ["ะ"] = "a", ["ั"] = "ạ", ["า"] = "ā", ["ำ"] = "å", ["ิ"] = "i", ["ี"] = "ī", ["ึ"] = "ụ", ["ื"] = "ụ̄", ["ุ"] = "u", ["ู"] = "ū", ["ๅ"] = "ɨ", ["ฺ"] = "̥", ["฿"] = "฿", ["เ"] = "e", ["แ"] = "æ", ["โ"] = "o", ["ใ"] = "au", ["ไ"] = "ai", ["่"] = "ˋ", ["้"] = "ˆ", ["๊"] = "ˊ", ["๋"] = "ˇ", ["ฯ"] = "ǂ", ["ๆ"] = "«", ["็"] = "˘", ["์"] = "ʻ", ["ํ"] = "˚", ["๎"] = "~", ["๏"] = "§", ["๚"] = "ǁ", ["๛"] = "»", ["๐"] = "0", ["๑"] = "1", ["๒"] = "2", ["๓"] = "3", ["๔"] = "4", ["๕"] = "5", ["๖"] = "6", ["๗"] = "7", ["๘"] = "8", ["๙"] = "9", [" "] = "&nbsp;&nbsp;", ["-"] = "&ndash;", ["…"] = "…", } local mgvc_pattern = "^([รลว]?)([ิึุ็ีืัำู]?[าอรยว]?[วยร]?ะ?)([คฅฆกขฃพฟภบปชฌฑฒทธจฎฏดตฐถศษสมญณนรลฬง]?)$" local full_pattern = "^([เแโใไ]?)(หฺ[ก-รลว-ฮ])(ฺ?[รลว]?)([ิึุ็ีืัู]?็?[่้๊๋̄]?[าอรยวำ]?[วยร]?ะ?)([คฅฆกขฃพฟภบปชฌฑฒทธจฎฏดตฐถศษสมญณนรลฬง]?[คฅฆกขฃพฟภบปชฌฑฒทธจฎฏดตฐถศษสมญณนรลฬง]?)$" local partial_pattern = "^([เแโใไ]?)([ก-รลว-ฮ])(ฺ?[รลว]?)([ิึุ็ีืัู]?็?[่้๊๋̄]?[าอรยวำ]?[วยร]?ะ?)([คฅฆกขฃพฟภบปชฌฑฒทธจฎฏดตฐถศษสมญณนรลฬง]?[คฅฆกขฃพฟภบปชฌฑฒทธจฎฏดตฐถศษสมญณนรลฬง]?)$" function export.translit(text, lang, sc, mode, source) local seq = systems[mode] for word in mw.ustring.gmatch(text, thai_range .. "+") do local orig_word, class, tMark, tone, long, c2 = word, "", false, false, false, false if match(word, "[่้๊๋̄].?[่้๊๋̄]") then return nil end local function c2_decomp(c2_char, seq, source) local converted_c2 = {} for character in mw.text.gsplit(c2_char, "") do table.insert(converted_c2, coda[character] and coda[character][seq] or nil) end local cluster = table.concat(converted_c2) if source == "translit-module" and not permitted_cluster[gsub(cluster, "̚", "")] then return c2_char else return cluster end end local function syllable(v1, c1, g, v2, c2) tMark = match(v2, "[่้๊๋̄]") v2 = gsub(v2, "[่้๊๋̄]", "") if match(c1, "^ห.$") then if match(sub(c1, 2, 2) .. g .. v2 .. c2, mgvc_pattern) then c1, g, v2, c2 = "ห", match(sub(c1, 2, 2) .. g .. v2 .. c2, mgvc_pattern) if g ~= "" and not v2 == "ย" then c1, g = c1 .. g, "" end end end if g == "ล" and v2 .. c2 == "" then c2 = g g = "" end openness = c2 ~= "" and "closed" or "open" if source == "pron-module" and (mw.ustring.len(c1) > 1 or match(g, "[รล]")) and not match(c1 .. g, "ฺ") then error("Please replace " .. c1 .. g .. " in the respelling with " .. sub(c1, 1, 1) .. "ฺ" .. (sub(c1, 2, -1) or "") .. g .. ".") end if vowel[openness][v1 .. g .. v2] then orig_v = v1 .. g .. v2 v, g = vowel[openness][v1 .. g .. v2][seq], "" else orig_v = v1 .. v2 v = vowel[openness][v1 .. v2] and vowel[openness][v1 .. v2][seq] or (v1 .. v2) g = (initial[gsub(g, "ฺ", "")] or initial[""])[seq] end c1 = gsub(c1, "ฺ", "") ini, class = "", "" if initial[c1] then ini, class = initial[c1][seq], initial[c1].class else return nil end length = (match(v, "([aiʉueɛoɔə])%1") or match(v, "ː") or unromLong[orig_v]) and "long" or "short" life = (match(c2, "[มญณนรลฬง]") or (match(orig_v, "ย$") and match(v, "i$")) or c2..length == "long" or liveExc[orig_v]) and "live" or "dead" c2 = coda[c2] and coda[c2][seq] or c2_decomp(c2, seq, source) -- note: not add tone for royin tone = tMark and tFromMark[tMark][class] or (tNoMark[life.."-"..length] or tNoMark[life])[class] if mode == "paiboon" then v = gsub(v, "^([^aiʉueɛoɔə]*)([aiʉueɛoɔə])", "%1%2" .. tRomMarks[tone]) elseif mode == "ipa" then c2 = c2 .. tLevels[tone] end return ini .. g .. v .. c2 end word = gsub(word, full_pattern, syllable) word = gsub(word, partial_pattern, syllable) text = gsub(text, orig_word, word, 1) end text = gsub(text, "[๐-๙]", symbols) -- postprocessing if mode == "royin" then -- initial อ text = gsub(text, "^@", "") text = gsub(text, "([%s%p])@", "%1") text = gsub(text, "@", "-") -- initial ง text = gsub(text, "^%$ng", "ng") text = gsub(text, "([%s%p])%$ng", "%1ng") text = gsub(text, "([aeiou])%$ng", "%1-ng") text = gsub(text, "%$ng", "ng") -- final ง text = gsub(text, "ng%$$", "ng") text = gsub(text, "ng%$([%s%p])", "ng%1") -- includes hyphen text = gsub(text, "ng%$", "ng") end local count_syl = 0 if mode == "ipa" then text, count_syl = gsub(text, "[ %-–]", ".") -- space, common hyphen, en dash if not match(text, "%.$") then count_syl = count_syl + 1 end text = gsub(text, "([aiɯu])([˥-˩]+)$", "%1ʔ%2") -- add ʔ if last syllable ends with [aiɯu] end if match(text, thai_range) then if source == "translit-module" or namespace ~= "" then return nil else return failed_cat end else table.insert(categories, count_syl > 0 and "[[Category:Thai " .. count_syl .. "-syllable words]]" or "") return mw.ustring.toNFC(text) end end function annotate(c1_text, annotation) if not annotation then return c1_text end return tostring( mw.html.create( "span" ) :css( "border-bottom", "1px dotted #000" ) :css( "cursor", "help" ) :attr( "title", annotation ) :wikitext( c1_text )) end local front_v = "[เแโใไ]" local char_annotation = { ["์"] = "CANCEL" } function export.getCharSeqTbl(text) local result = {} for character in mw.text.gsplit(text, "") do local charDetail = char_table[character] or nil if find(character, front_v) then table.insert(result, tostring( mw.html.create( "span" ) :css( "border", "1px dotted gray" ) :css( "border-radius", "50%" ) :css( "cursor", "help" ) :attr( "title", "Vowel sign appearing in front of the initial consonant." ) :wikitext( charDetail ))) else table.insert(result, annotate(charDetail, char_annotation[character])) end end return result end function getCharSeq(text) return "<br><small>" .. table.concat(export.getCharSeqTbl(text), "&thinsp;") .. "</small>" end local note_set = { ["aaw"] = annotate( "-ɔɔ r-", "In this word, the double consonant combinations กร, ทร, ธร, มร, and หร are pronounced 'gaaw ra', 'thaaw ra', 'maaw ra' and 'haaw ra', respectively." ), ["redup"] = annotate( "Reduplication", "This word exhibits reduplication in pronunciation, i.e. one written consonant is used as the final consonant of a syllable as well as the initial consonant of the next syllable." ), ["short"] = annotate( "Short", "The vowel in this word is pronounced irregularly short." ), ["unorthographical"] = annotate( "Unorthographical", "This phonetic respelling violates Thai alphabet rules to indicate an irregular pronunciation." ), } function export.show(frame) local lang, sc = "th", "Thai" local args = frame:getParent().args local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local p, note = {}, {} if args["note"] then for ind_note in mw.text.gsplit(args["note"], ",") do table.insert(note, note_set[ind_note]) end end if args[1] then for index, item in ipairs(args) do table.insert(p, (item ~= "") and item or nil) end else table.insert(p, pagename) end local p_concatenated = table.concat(p, "/") if match(p_concatenated, "็" .. thai_range .. "*[่้๊๋̄]") or match(p_concatenated, "[่้๊๋̄]" .. thai_range .. "*็") or match(p_concatenated, "ิ็") then table.insert(note, note_set["unorthographical"]) if not match(args["note"] or "", "short") then table.insert(note, note_set["short"]) end elseif match(p_concatenated, "็") and not match(pagename, "็") and not match(args["note"] or "", "short") then table.insert(note, note_set["short"]) end homEdit = tostring( mw.html.create( "div" ) :css( "float", "right" ) :css( "clear", "right" ) :css( "font-size", "60%" ) :wikitext( tostring( mw.html.create( "span" ) :attr( "class", "plainlinks" ) :wikitext( "[" .. tostring( mw.uri.fullUrl( "Module:nod-hom/data", { ["action"] = "edit" } )) .." edit]" )))) function formatThai(text, pron, qualifiers) local readclass = '' if pron == true then readclass = 'th-reading' end return ((qualifiers and table.concat(qualifiers) ~= "") and '<span style="background-color:#ffffe6"><small>[' .. table.concat(qualifiers, ", ") .. ']</small></span><br>' or '') .. '<span lang="th" class="Thai ' .. readclass .. '">' .. text .. '</span>' end local result = { ["charPhon"] = {}, ["paiboon"] = {}, ["royin"] = {}, ["ipa"] = {}, ["homophone"] = {}, ["file"] = {} } table.insert(categories, "[[Category:Northern Thai terms with IPA pronunciation]]") local m_hom_data = require("Module:User:RichardW57/nod-hom/data") local m_hom = require("Module:User:RichardW57/nod-hom").makeList local m_fileData = require("Module:User:RichardW57/nod-pron/files") local qualifiers = {} for system, _ in pairs(systems) do local function f(text, system) if system == "paiboon" or system == "royin" then return '<span class="tr">' .. text .. '</span>' elseif system == "ipa" then return '<span class="IPA">/' .. text .. '/</span>' elseif system == "file" then local length = ((mw.ustring.len(gsub(text, "[^ %-]", "")) + 1) * 25 + 50) if m_fileData[text] then table.insert(categories, "[[Category:Northern Thai terms with audio links]]") return "[[File:" .. m_fileData[text] .. "|" .. (length > 200 and 200 or length) .. "px|center]]" else return "" end else return m_hom_data[text] and (#m_hom_data[text] > 3 and tostring( mw.html.create( "div" ) :attr { ["class"] = "vsSwitcher", ["data-toggle-category"] = "homophones", } :wikitext( tostring( mw.html.create( "span" ) :attr( "class", "vsToggleElement" ) :wikitext( "&nbsp;" )) .. tostring( mw.html.create( "div" ) :attr( "class", "vsShow" ) :css( "display", "none" )) .. tostring( mw.html.create( "div" ) :attr( "class", "vsHide" ) :wikitext(( gsub(m_hom(text), ", ", "<br>" )))))) or gsub(m_hom(text), ", ", "<br>")) or "" end end for i, spelling in ipairs(p) do if system == "charPhon" then qualifiers = {} if match(spelling, "%:") then table.insert(qualifiers, match(spelling, "%:(.+)")) spelling = match(spelling, "([^%:]+)") end if match(spelling, "-$") then table.insert(qualifiers, "bound form") end else spelling = match(spelling, "([^%:]+)") end table.insert(result[system], tostring( mw.html.create( "td" ) :css( "border-right", i < #p and "1px solid lightgray" or "0px" ) :wikitext( (system == "charPhon" and formatThai(spelling, false, qualifiers) .. getCharSeq(spelling) or f(find(system, "^[pri]") and export.translit(spelling, lang, sc, system, "pron-module") or spelling, system))))) end end has_hom = match(table.concat(result["homophone"]), "Northern Thai") or false has_file = match(table.concat(result["file"]), "File") or false notes = (#note > 0 and "<br><small>{" .. table.concat(note, "; ") .. "}</small>" or "") local function row(a, b, o) return ((o and o["pr"]) and "" or "\n<tr>") .. tostring( mw.html.create( "td" ) :attr( "bgcolor", "fafeff" ) :attr( (o and o["rom"]) and "rowspan" or "colspan", (o and o["pr"]) and 1 or 2 ) :css( "border-bottom", (o and o["bt"]) and "0px" or "1px solid lightgray" ) :css( "border-right", "1px solid lightgray" ) :css( "font-weight", "bold" ) :wikitext(a)) .. ((o and o["rom"]) and "" or ((o and o["ortho"]) and tostring(mw.html.create( "td" ) :attr( "colspan", #p ) :css( "border-bottom", "1px solid lightgray" ) :wikitext(b)) or b) .. "</tr>") end if find(pagename, "ทร") and find(table.concat(result["charPhon"]), "ซ") then table.insert(categories, "[[Category:Northern Thai terms spelled with ทร read as ซ]]") end return '<table cellpadding=10 style="border-spacing: 2px; border: 1px solid darkgray; text-align:center">' .. ((namespace ~= "" and not args.pagename) and row( "''[[w:Thai alphabet|Phonemic]]''" .. notes, '<div class="th-reading">' .. table.concat(result["charPhon"])) .. '</div>' or (pagename == table.concat(p) and row( "''[[w:Thai alphabet|Orthographic/Phonemic]]''", formatThai(pagename,true) .. getCharSeq(pagename), { ["ortho"] = true }) or row( "''[[w:Thai alphabet|Orthographic]]''", formatThai(pagename,true) .. getCharSeq(pagename), { ["ortho"] = true }) .. row( "''[[w:Thai alphabet|Phonemic]]''" .. notes, '<div class="th-reading">' .. table.concat(result["charPhon"])))) .. '</div>' .. row("''[[Wiktionary:Northern Thai transliteration|Romanization]]''", nil, { ["rom"] = true }) .. row( "''[[Wiktionary:Northern Thai transliteration|Paiboon]]''", table.concat(result["paiboon"]), { ["pr"] = true }) .. row( "''[[Wiktionary:Northern Thai transliteration|Royal Institute]]''", table.concat(result["royin"]), { ["pr"] = true }) .. row( "(''[[w:Chiang Mai Northern Thai|Chiang Mai]]'') " .. "[[Wiktionary:International Phonetic Alphabet|IPA]]" .. "<sup>([[Appendix:Northern Thai pronunciation|key]])</sup>", table.concat(result["ipa"]), { ["bt"] = not has_hom and not has_file }) .. (has_hom and row( "''Homophones''" .. homEdit, table.concat(result["homophone"]) or "", { ["bt"] = not has_file }) or "") .. (has_file and row( "''Audio''", table.concat(result["file"]) or "", { ["bt"] = true }) or "") .. "\n</table>" .. (namespace == "" and table.concat(categories) or "") end return export ca5nbw7rzhp84mqeyczjgo4ltwxx4md মডিউল:User:Isomorphyc/th-translit-draft 828 168651 510203 2026-06-07T12:45:58Z RedminBot 9553 [[en:Module:User:Isomorphyc/th-translit-draft]] থেকে আনা হলো 510203 Scribunto text/plain local export = {} local m_pron = require("Module:th-pron") function export.tr(text, lang, sc) return m_pron.translit(text, lang, sc, "paiboon", "translit-module"), export.trFull(text) end function export.trFull(text) return { orthographic = table.concat(m_pron.getCharSeqTbl(text)), phonemic = "phonemic-stub", phonetic = "phonetic-stub" } end return export 72mm6b746xp9n08ib9js5hji3m9cwwg মডিউল:User:Kephir/untranslit 828 168652 510204 2026-06-07T12:45:59Z RedminBot 9553 [[en:Module:User:Kephir/untranslit]] থেকে আনা হলো 510204 Scribunto text/plain local export = {} -- "untranslit" is a misnomer, really. -- given a piece of Cyrillic text and its transliteration with stress marked, -- this function tries to place the stress mark on the correct Cyrillic letter. -- very, very ugly... but I think it will do the job. function export.untranslit(text, tr) if type(text) == 'table' then text, tr = text.args[1], text.args[2] end tr = mw.ustring.toNFD(tr) local vo = {} for offset in mw.ustring.gmatch(text, '()[аеёюяуоыиэ]') do table.insert(vo, offset) end local i, delta = 1, 0 for accent in mw.ustring.gmatch(tr, '[aeiouy][\204\140]?([\204\128\204\129]?)') do if accent ~= "" then text = mw.ustring.sub(text, 1, vo[i] + delta) .. accent .. mw.ustring.sub(text, vo[i] + delta + 1) delta = delta + 1 end i = i + 1 end text = mw.ustring.gsub(text, "ё[\204\128\204\129]", "ё") -- ё should not have an explicit stress marker return text end return export ew82rbx0c86zjkwb9qgoybcdh9oa1va মডিউল:User:Koreacurry/glk-translit 828 168653 510205 2026-06-07T12:45:59Z RedminBot 9553 [[en:Module:User:Koreacurry/glk-translit]] থেকে আনা হলো 510205 Scribunto text/plain local export = {} local m_str_utils = require("Module:string utilities") local gsub = m_str_utils.gsub local U = m_str_utils.char local zabar = U(0x64E) local tashdid = U(0x651) local he = "ه" local zwnj = U(0x200C) local consonants = "بپتثجچحخدذرزژسشصضطظعغفقکگلمنه" local consonants2 = "بپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیyw" local ain = "ع" local alif = "ا" local ye = "ی" local ye2 = "ئ" local vao = "و" local vao2 = "ۊ" return export a5e051v0f2nmquq9fk2f3w16sdr761u মডিউল:User:Lunabunn/ko-translit 828 168654 510206 2026-06-07T12:45:59Z RedminBot 9553 [[en:Module:User:Lunabunn/ko-translit]] থেকে আনা হলো 510206 Scribunto text/plain local export = {} local u = require("Module:string/char") local urange = function (a, b) return u(a) .. "-" .. u(b) end local data = mw.loadData("Module:User:Lunabunn/ko-translit/data") local syllable_start = u(0xE000) local syllable_end = u(0xE001) local cho_range = urange(0x1100, 0x115F) local jung_range = urange(0x1160, 0x11A7) local jong_range = urange(0x11A8, 0x11FF) local base = { {"ㅊ", "ch"}, {"ㅋ", "kh"}, {"ㅌ", "th"}, {"ㅍ", "ph"}, {"ㄱ", "k"}, {"ㆁ", "ng"}, {"ㄴ", "n"}, {"ㄷ", "t"}, {"ㄹ", "l"}, {"ㅁ", "m"}, {"ㅂ", "p"}, {"ㅅ", "s"}, {"ㅇ", "G"}, {"ㅈ", "c"}, {"ㅎ", "h"}, {"ㅏ", "a"}, {"ㅓ", "e"}, {"ㅗ", "wo"}, {"ㅜ", "wu"}, {"ㅡ", "u"}, {"ㅣ", "i"}, {"ㆍ", "o"}, {"@", "y"}, {"ㅿ", "z"}, {"ㆆ", "q"}, {"ㅸ", "W"}, {"ㅱ", "W"}, } function export.raw(text) text = mw.ustring.toNFD(text) text = mw.ustring.gsub(text, "([" .. cho_range .. "])", syllable_start .. "%1") text = mw.ustring.gsub(text, "([" .. jung_range .. "])([^" .. jong_range .. "])", "%1" .. syllable_end .. "%2") text = mw.ustring.gsub(text, "([" .. jung_range .. "])$", "%1" .. syllable_end) text = mw.ustring.gsub(text, "([" .. jong_range .. "])", "%1" .. syllable_end) text = mw.ustring.gsub(text, ".", data.jamo_cho) text = mw.ustring.gsub(text, ".", data.jamo_jung) text = mw.ustring.gsub(text, ".", data.jamo_jong) for _, e in ipairs(base) do local k, v = e[1], e[2] text = mw.ustring.gsub(text, k, v) end return text end function export.raw_swap(text) text = mw.ustring.gsub( text, syllable_start .. "([kntlmpsGcchzqWg]-)([aewouiy]-)([kntlmpsGcchzqWg]*)" .. syllable_end, function (cho, jung, jong) for _, e in ipairs(base) do local v, k = e[1], e[2] cho = mw.ustring.gsub(cho, k, v) jung = mw.ustring.gsub(jung, k, v) jong = mw.ustring.gsub(jong, k, v) end cho = data.jamo_cho_swap[cho] jung = data.jamo_jung_swap[jung] if jong ~= "" then jong = data.jamo_jong_swap[jong] end return cho .. jung .. jong end ) text = mw.ustring.toNFC(text) return text end function export.gsub(s, pattern, repl, init, n) local ss = syllable_start local se = syllable_end pattern = mw.ustring.gsub(pattern, "^%^%^", "%f[" .. ss .. se .. "]" .. ss) pattern = mw.ustring.gsub(pattern, "^%^", ss) pattern = mw.ustring.gsub(pattern, "([^%[])%^", "%1" .. ss) pattern = mw.ustring.gsub(pattern, "%$", se) pattern = mw.ustring.gsub(pattern, "#", se .. "%(?ː?%)?" .. ss) if type(repl) == "string" then repl = mw.ustring.gsub(repl, "%^", ss) repl = mw.ustring.gsub(repl, "%$", se) end if init then return mw.ustring.sub(s, 1, init - 1) .. mw.ustring.gsub(mw.ustring.sub(s, init), pattern, repl, n) end return mw.ustring.gsub(s, pattern, repl, n) end function export.strip_separators(text) local stripped = mw.ustring.gsub(text, "[" .. syllable_start .. syllable_end .. "]", "") return stripped end function postprocess(text) text = text:gsub("%^" .. syllable_start .. "([a-z])", function (c) return syllable_start .. string.upper(c) end) return export.strip_separators(text) end function export.yale(text, coda_G_ng, wo_o) text = export.raw(text) text = export.gsub(text, "^G", "^") text = export.gsub(text, "G$", coda_G_ng and "ng$" or "G$") text = export.gsub(text, "w[ou]y?([ae])", "w%1") text = export.gsub(text, "wo", wo_o and "o" or "wo") return postprocess(text) end function export.rr(text, translit) text = export.raw(text) -- consonants -- onset if translit then text = export.gsub(text, "p([^hp])", "b%1") text = export.gsub(text, "t([^ht])", "d%1") text = export.gsub(text, "k([^hk])", "g%1") else text = export.gsub(text, "^p([^hp])", "^b%1") text = export.gsub(text, "p(#[aeiouwy])", "b%1") text = export.gsub(text, "^t([^ht])", "^d%1") text = export.gsub(text, "t(#[aeiouwy])", "d%1") text = export.gsub(text, "^k([^hk])", "^g%1") text = export.gsub(text, "k(#[aeiouwy])", "g%1") text = export.gsub(text, "h(#)b", "%1p") text = export.gsub(text, "h(#)d", "%1t") text = export.gsub(text, "h(#)g", "%1k") end text = export.gsub(text, "^l", "^r") text = export.gsub(text, "l(#[aeiouwy])", "r%1") if translit then text = export.gsub(text, "(#)G", "%1'") end text = export.gsub(text, "^G", "^") text = export.gsub(text, "^cc", "jj") text = export.gsub(text, "^c([^h])", "j%1") -- coda text = export.gsub(text, "kk$", "k$") text = export.gsub(text, "ss?$", "t$") text = export.gsub(text, "G", "ng") text = export.gsub(text, "ch?$", "t$") text = export.gsub(text, "h$", "t$") -- vowels -- monophthongs text = export.gsub(text, "o", "aw") text = export.gsub(text, "e", "eo") text = export.gsub(text, "waw", "o") text = export.gsub(text, "u", "eu") text = export.gsub(text, "weu", "u") -- diphthongs text = export.gsub(text, "ay", "ae") text = export.gsub(text, "eoy", "e") text = export.gsub(text, "oa", "wa") text = export.gsub(text, "oy", "oe") text = export.gsub(text, "ueo", "wo") text = export.gsub(text, "ue", "we") text = export.gsub(text, "euy", "ui") text = export.gsub(text, "uy", "wi") -- disambiguation if not translit then text = export.gsub(text, "ng(#[aeiouwy])", "ng'%1") text = export.gsub(text, "e(#)u", "e'%1u") text = export.gsub(text, "n(#)g", "n'%1g") end return postprocess(text) end function export.okm_yale(text) return export.yale(text, false, false) end export.syllable_start = syllable_start export.syllable_end = syllable_end return export 2gs65tnhie76k1z29sp9f0x7mo1z7e9 মডিউল:User:Lunabunn/ko-translit/data 828 168655 510207 2026-06-07T12:46:00Z RedminBot 9553 [[en:Module:User:Lunabunn/ko-translit/data]] থেকে আনা হলো 510207 Scribunto text/plain local data = {} function swap(a) local b = {} for k, v in pairs(a) do b[v] = k end return b end data.jamo_cho = { ["ᄀ"] = "ㄱ", ["ᄁ"] = "ㄱㄱ", ["ᄂ"] = "ㄴ", ["ᄃ"] = "ㄷ", ["ᄄ"] = "ㄷㄷ", ["ᄅ"] = "ㄹ", ["ᄆ"] = "ㅁ", ["ᄇ"] = "ㅂ", ["ᄈ"] = "ㅂㅂ", ["ᄉ"] = "ㅅ", ["ᄊ"] = "ㅅㅅ", ["ᄋ"] = "ㅇ", ["ᄌ"] = "ㅈ", ["ᄍ"] = "ㅈㅈ", ["ᄎ"] = "ㅊ", ["ᄏ"] = "ㅋ", ["ᄐ"] = "ㅌ", ["ᄑ"] = "ㅍ", ["ᄒ"] = "ㅎ", ["ᄓ"] = "ㄴㄱ", ["ᄔ"] = "ㄴㄴ", ["ᄕ"] = "ㄴㄷ", ["ᄖ"] = "ㄴㅂ", ["ᄗ"] = "ㄷㄱ", ["ᄘ"] = "ㄹㄴ", ["ᄙ"] = "ㄹㄹ", ["ᄚ"] = "ㄹㅎ", ["ᄛ"] = "ᄛᅠ", ["ᄜ"] = "ㅁㅂ", ["ᄝ"] = "ㅱ", ["ᄞ"] = "ㅂㄱ", ["ᄟ"] = "ㅂㄴ", ["ᄠ"] = "ㅂㄷ", ["ᄡ"] = "ㅂㅅ", ["ᄢ"] = "ㅂㅅㄱ", ["ᄣ"] = "ㅂㅅㄷ", ["ᄤ"] = "ㅂㅅㅂ", ["ᄥ"] = "ㅂㅅㅅ", ["ᄦ"] = "ㅂㅅㅈ", ["ᄧ"] = "ㅂㅈ", ["ᄨ"] = "ㅂㅊ", ["ᄩ"] = "ㅂㅌ", ["ᄪ"] = "ㅂㅍ", ["ᄫ"] = "ㅸ", ["ᄬ"] = "ㅹ", ["ᄭ"] = "ㅅㄱ", ["ᄮ"] = "ㅅㄴ", ["ᄯ"] = "ㅅㄷ", ["ᄰ"] = "ㅅㄹ", ["ᄱ"] = "ㅅㅁ", ["ᄲ"] = "ㅅㅂ", ["ᄳ"] = "ㅅㅂㄱ", ["ᄴ"] = "ㅅㅅㅅ", ["ᄵ"] = "ㅅㅇ", ["ᄶ"] = "ㅅㅈ", ["ᄷ"] = "ㅅㅊ", ["ᄸ"] = "ㅅㅋ", ["ᄹ"] = "ㅅㅌ", ["ᄺ"] = "ㅅㅍ", ["ᄻ"] = "ㅅㅎ", ["ᄼ"] = "ᄼ", ["ᄽ"] = "ᄽ", ["ᄾ"] = "ᄾ", ["ᄿ"] = "ᄿ", ["ᅀ"] = "ㅿ", ["ᅁ"] = "ㅇㅅ", ["ᅂ"] = "ㅇㄷ", ["ᅃ"] = "ㅇㅁ", ["ᅄ"] = "ㅇㅂ", ["ᅅ"] = "ㅇㅅ", ["ᅆ"] = "ㅇㅿ", ["ᅇ"] = "ㅇㅇ", ["ᅈ"] = "ㅇㅈ", ["ᅉ"] = "ㅇㅊ", ["ᅊ"] = "ㅇㅌ", ["ᅋ"] = "ㅇㅍ", ["ᅌ"] = "ㆁ", ["ᅍ"] = "ㅈㅇ", ["ᅎ"] = "ᅎ", ["ᅏ"] = "ᅏ", ["ᅐ"] = "ᅐ", ["ᅑ"] = "ᅑ", ["ᅒ"] = "ㅊㅋ", ["ᅓ"] = "ㅊㅎ", ["ᅔ"] = "ᅔ", ["ᅕ"] = "ᅕ", ["ᅖ"] = "ㅍㅂ", ["ᅗ"] = "ㆄ", ["ᅘ"] = "ㅎㅎ", ["ᅙ"] = "ㆆ", ["ᅚ"] = "ㄱㄷ", ["ᅛ"] = "ㄴㅅ", ["ᅜ"] = "ㄴㅈ", ["ᅝ"] = "ㄴㅎ", ["ᅞ"] = "ㄷㄹ", ["ᅟ"] = "", } data.jamo_cho_swap = swap(data.jamo_cho) data.jamo_jung = { ["ᅠ"] = "", ["ᅡ"] = "ㅏ", ["ᅢ"] = "ㅏ@", ["ᅣ"] = "@ㅏ", ["ᅤ"] = "@ㅏ@", ["ᅥ"] = "ㅓ", ["ᅦ"] = "ㅓ@", ["ᅧ"] = "@ㅓ", ["ᅨ"] = "@ㅓ@", ["ᅩ"] = "ㅗ", ["ᅪ"] = "ㅗㅏ", ["ᅫ"] = "ㅗㅏ@", ["ᅬ"] = "ㅗ@", ["ᅭ"] = "@ㅗ", ["ᅮ"] = "ㅜ", ["ᅯ"] = "ㅜㅓ", ["ᅰ"] = "ㅜㅓ@", ["ᅱ"] = "ㅜ@", ["ᅲ"] = "@ㅜ", ["ᅳ"] = "ㅡ", ["ᅴ"] = "ㅡ@", ["ᅵ"] = "ㅣ", ["ᅶ"] = "ㅏㅗ", ["ᅷ"] = "ㅏㅜ", ["ᅸ"] = "@ㅏㅗ", ["ᅹ"] = "@ㅏ@ㅗ", ["ᅺ"] = "ㅗㅓ", ["ᅻ"] = "ㅜㅓ", ["ᅼ"] = "ㅡㅓ", ["ᅽ"] = "ㅗ@ㅓ", ["ᅾ"] = "ㅜ@ㅓ", ["ᅿ"] = "ㅗㅓ", ["ᆀ"] = "ㅗㅓ@", ["ᆁ"] = "ㅗ@ㅓ@", ["ᆂ"] = "ㅗㅗ", ["ᆃ"] = "ㅗㅜ", ["ᆄ"] = "@ㅗ@ㅏ", ["ᆅ"] = "@ㅗ@ㅏ@", ["ᆆ"] = "@ㅗ@ㅓ", ["ᆇ"] = "@ㅗㅗ", ["ᆈ"] = "@ㅗ@", ["ᆉ"] = "ㅜㅏ", ["ᆊ"] = "ㅜㅏ@", ["ᆋ"] = "ㅜㅓㅡ", ["ᆌ"] = "ㅜ@ㅓ@", ["ᆍ"] = "ㅜㅜ", ["ᆎ"] = "@ㅜㅏ", ["ᆏ"] = "@ㅜㅓ", ["ᆐ"] = "@ㅜㅓ@", ["ᆑ"] = "@ㅜ@ㅓ", ["ᆒ"] = "@ㅜ@ㅓ@", ["ᆓ"] = "@ㅜㅜ", ["ᆔ"] = "@ㅜ@", ["ᆕ"] = "ㅡㅜ", ["ᆖ"] = "ㅡㅡ", ["ᆗ"] = "ㅡ@ㅜ", ["ᆘ"] = "ㅣㅏ", ["ᆙ"] = "ㅣ@ㅏ", ["ᆚ"] = "ㅣㅗ", ["ᆛ"] = "ㅣㅜ", ["ᆜ"] = "ㅣㅡ", ["ᆝ"] = "@ㆍ", ["ᆞ"] = "ㆍ", ["ᆟ"] = "ㆍㅓ", ["ᆠ"] = "ㆍㅜ", ["ᆡ"] = "ㆍ@", ["ᆢ"] = "ㆍㆍ", ["ᆣ"] = "ㅏㅡ", ["ᆤ"] = "@ㅏㅜ", ["ᆥ"] = "@ㅓ@ㅏ", ["ᆦ"] = "ㅗ@ㅏ", ["ᆧ"] = "ㅗ@ㅏ@", } data.jamo_jung_swap = swap(data.jamo_jung) data.jamo_jong = { ["ᆨ"] = "ㄱ", ["ᆩ"] = "ㄱㄱ", ["ᆪ"] = "ㄱㅅ", ["ᆫ"] = "ㄴ", ["ᆬ"] = "ㄴㅈ", ["ᆭ"] = "ㄴㅎ", ["ᆮ"] = "ㄷ", ["ᆯ"] = "ㄹ", ["ᆰ"] = "ㄹㄱ", ["ᆱ"] = "ㄹㅁ", ["ᆲ"] = "ㄹㅂ", ["ᆳ"] = "ㄹㅅ", ["ᆴ"] = "ㄹㅌ", ["ᆵ"] = "ㄹㅍ", ["ᆶ"] = "ㄹㅎ", ["ᆷ"] = "ㅁ", ["ᆸ"] = "ㅂ", ["ᆹ"] = "ㅂㅅ", ["ᆺ"] = "ㅅ", ["ᆻ"] = "ㅅㅅ", ["ᆼ"] = "ㅇ", ["ᆽ"] = "ㅈ", ["ᆾ"] = "ㅊ", ["ᆿ"] = "ㅋ", ["ᇀ"] = "ㅌ", ["ᇁ"] = "ㅍ", ["ᇂ"] = "ㅎ", ["ᇃ"] = "ㄱㄹ", ["ᇄ"] = "ㄱㅅㄱ", ["ᇅ"] = "ㄴㄱ", ["ᇆ"] = "ㄴㄷ", ["ᇇ"] = "ㄴㅅ", ["ᇈ"] = "ㄴㅿ", ["ᇉ"] = "ㄴㅌ", ["ᇊ"] = "ㄷㄱ", ["ᇋ"] = "ㄷㄹ", ["ᇌ"] = "ㄹㄱㅅ", ["ᇍ"] = "ㄹㄴ", ["ᇎ"] = "ㄹㄷ", ["ᇏ"] = "ㄹㄷㅎ", ["ᇐ"] = "ㄹㄹ", ["ᇑ"] = "ㄹㅁㄱ", ["ᇒ"] = "ㄹㅁㅅ", ["ᇓ"] = "ㄹㅂㅅ", ["ᇔ"] = "ㄹㅂㅎ", ["ᇕ"] = "ㄹㅸ", ["ᇖ"] = "ㄹㅅㅅ", ["ᇗ"] = "ㄹㅿ", ["ᇘ"] = "ㄹㅋ", ["ᇙ"] = "ㄹㆆ", ["ᇚ"] = "ㅁㄱ", ["ᇛ"] = "ㅁㄹ", ["ᇜ"] = "ㅁㅂ", ["ᇝ"] = "ㅁㅅ", ["ᇞ"] = "ㅁㅅㅅ", ["ᇟ"] = "ㅁㅿ", ["ᇠ"] = "ㅁㅊ", ["ᇡ"] = "ㅁㅎ", ["ᇢ"] = "ㅱ", ["ᇣ"] = "ㅂㄹ", ["ᇤ"] = "ㅂㅍ", ["ᇥ"] = "ㅂㅎ", ["ᇦ"] = "ㅸ", ["ᇧ"] = "ㅅㄱ", ["ᇨ"] = "ㅅㄷ", ["ᇩ"] = "ㅅㄹ", ["ᇪ"] = "ㅅㅂ", ["ᇫ"] = "ㅿ", ["ᇬ"] = "ㆁㄱ", ["ᇭ"] = "ㆁㄱㄱ", ["ᇮ"] = "ㆁㆁ", ["ᇯ"] = "ㆁㅋ", ["ᇰ"] = "ㆁ", ["ᇱ"] = "ㆁㅅ", ["ᇲ"] = "ㆁㅿ", ["ᇳ"] = "ㅍㅂ", ["ᇴ"] = "ㆄ", ["ᇵ"] = "ㅎㄴ", ["ᇶ"] = "ㅎㄹ", ["ᇷ"] = "ㅎㅁ", ["ᇸ"] = "ㅎㅂ", ["ᇹ"] = "ㆆ", ["ᇺ"] = "ㄱㄴ", ["ᇻ"] = "ㄱㅂ", ["ᇼ"] = "ㄱㅊ", ["ᇽ"] = "ㄱㅋ", ["ᇾ"] = "ㄱㅎ", ["ᇿ"] = "ㄴㄴ", } data.jamo_jong_swap = swap(data.jamo_jong) return data hb0pjka5kgngihtkkur2p5bzmw2uq9y মডিউল:User:Lunabunn/ko-translit/testcases 828 168656 510208 2026-06-07T12:46:00Z RedminBot 9553 [[en:Module:User:Lunabunn/ko-translit/testcases]] থেকে আনা হলো 510208 Scribunto text/plain local tests = require("Module:UnitTests") local m = require("Module:User:Lunabunn/ko-translit") local okm_translit = require("Module:okm-translit") function tests:okm(text) local actual = m.okm_yale(text) local expected = okm_translit.tr(text) return self:equals(text, actual, expected, { show_difference = true, }) end function tests:test_okm() self:okm("나랏말ᄊᆞ미 듀ᇰ귁에 달G아") self:okm("괴과ᄀᆄ괘궈궤ᄀᆑ") end return tests 28rgtealc3owkw5gumnt50ku3gsgwki মডিউল:User:Mofvanes/translit 828 168657 510209 2026-06-07T12:46:01Z RedminBot 9553 [[en:Module:User:Mofvanes/translit]] থেকে আনা হলো 510209 Scribunto text/plain local export = {} local lang = require("Module:languages").getByCode("oj") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local rfind = mw.ustring.find local rsubn = mw.ustring.gsub local ulower = mw.ustring.lower local usub = mw.ustring.sub local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local function get_index(str, list) if list == nil then return -1 end for i = 1, #list do if str == list[i] then return i end end return -1 end local function char_at(str, pos) return usub(str, pos, pos) end local function in_set(str, list) if get_index(str, list) ~= -1 then return true else return false end end local syllables = { ["e"] = "ᐁ", ["i"] = "ᐃ", ["o"] = "ᐅ", ["a"] = "ᐊ", ["ii"] = "ᐄ", ["oo"] = "ᐆ", ["aa"] = "ᐋ", ["be"] = "ᐯ", ["bi"] = "ᐱ", ["bo"] = "ᐳ", ["ba"] = "ᐸ", ["bii"] = "ᐲ", ["boo"] = "ᐴ", ["baa"] = "ᐹ", ["de"] = "ᑌ", ["di"] = "ᑎ", ["do"] = "ᑐ", ["da"] = "ᑕ", ["dii"] = "ᑏ", ["doo"] = "ᑑ", ["daa"] = "ᑖ", ["ge"] = "ᑫ", ["gi"] = "ᑭ", ["go"] = "ᑯ", ["ga"] = "ᑲ", ["gii"] = "ᑮ", ["goo"] = "ᑰ", ["gaa"] = "ᑳ", ["je"] = "ᒉ", ["ji"] = "ᒋ", ["jo"] = "ᒍ", ["ja"] = "ᒐ", ["jii"] = "ᒌ", ["joo"] = "ᒎ", ["jaa"] = "ᒑ", ["me"] = "ᒣ", ["mi"] = "ᒥ", ["mo"] = "ᒧ", ["ma"] = "ᒪ", ["mii"] = "ᒦ", ["moo"] = "ᒨ", ["maa"] = "ᒫ", ["ne"] = "ᓀ", ["ni"] = "ᓂ", ["no"] = "ᓄ", ["na"] = "ᓇ", ["nii"] = "ᓃ", ["noo"] = "ᓅ", ["naa"] = "ᓈ", ["ze"] = "ᓭ", ["zi"] = "ᓯ", ["zo"] = "ᓱ", ["za"] = "ᓴ", ["zii"] = "ᓰ", ["zoo"] = "ᓲ", ["zaa"] = "ᓵ", ["zhe"] = "ᔐ", ["zhi"] = "ᔑ", ["zho"] = "ᔓ", ["zha"] = "ᔕ", ["zhii"] = "ᔒ", ["zhoo"] = "ᔔ", ["zhaa"] = "ᔖ", ["ye"] = "ᔦ", ["yi"] = "ᔨ", ["yo"] = "ᔪ", ["ya"] = "ᔭ", ["yii"] = "ᔩ", ["yoo"] = "ᔫ", ["yaa"] = "ᔮ", ["pe"] = "ᐦᐯ", ["pi"] = "ᐦᐱ", ["po"] = "ᐦᐳ", ["pa"] = "ᐦᐸ", ["pii"] = "ᐦᐲ", ["poo"] = "ᐦᐴ", ["paa"] = "ᐦᐹ", ["te"] = "ᐦᑌ", ["ti"] = "ᐦᑎ", ["to"] = "ᐦᑐ", ["ta"] = "ᐦᑕ", ["tii"] = "ᐦᑏ", ["too"] = "ᐦᑑ", ["taa"] = "ᐦᑖ", ["ke"] = "ᐦᑫ", ["ki"] = "ᐦᑭ", ["ko"] = "ᐦᑯ", ["ka"] = "ᐦᑲ", ["kii"] = "ᐦᑮ", ["koo"] = "ᐦᑰ", ["kaa"] = "ᐦᑳ", ["che"] = "ᐦᒉ", ["chi"] = "ᐦᒋ", ["cho"] = "ᐦᒍ", ["cha"] = "ᐦᒐ", ["chii"] = "ᐦᒌ", ["choo"] = "ᐦᒎ", ["chaa"] = "ᐦᒑ", ["se"] = "ᐦᓭ", ["si"] = "ᐦᓯ", ["so"] = "ᐦᓱ", ["sa"] = "ᐦᓴ", ["sii"] = "ᐦᓰ", ["soo"] = "ᐦᓲ", ["saa"] = "ᐦᓵ", ["she"] = "ᐦᔐ", ["shi"] = "ᐦᔑ", ["sho"] = "ᐦᔓ", ["sha"] = "ᐦᔕ", ["shii"] = "ᐦᔒ", ["shoo"] = "ᐦᔔ", ["shaa"] = "ᐦᔖ", ["we"] = "ᐧᐁ", ["wi"] = "ᐧᐃ", ["wo"] = "ᐧᐅ", ["wa"] = "ᐧᐊ", ["wii"] = "ᐧᐄ", ["woo"] = "ᐧᐆ", ["waa"] = "ᐧᐋ", ["b"] = "ᑉ", ["p"] = "ᑉ", ["d"] = "ᑦ", ["t"] = "ᑦ", ["g"] = "ᒃ", ["k"] = "ᒃ", ["j"] = "ᒡ", ["ch"] = "ᒡ", ["m"] = "ᒻ", ["n"] = "ᓐ", ["z"] = "ᔅ", ["s"] = "ᔅ", ["zh"] = "ᔥ", ["sh"] = "ᔥ", ["y"] = "ᔾ", ["w"] = "ᐤ", ["h"] = "ᐦ" } local function translit(str) local Cans_str = "" local current_str = "" local next_symbol = "" for i = 1, #str do current_str = current_str .. char_at(str, i) if syllables[current_str] ~= nil then next_symbol = syllables[current_str] else Cans_str = Cans_str .. next_symbol current_str = char_at(str, i) end end Cans_str = Cans_str .. next_symbol return Cans_str end function export.show(frame) text = frame.args["text"] or "anishinaabe" return translit(text) end return export nqa9wzr6sxaj5xrlttuoxoy3h4lzvnp মডিউল:User:OblivionKhorasan/skr-IPA-translit 828 168658 510210 2026-06-07T12:46:01Z RedminBot 9553 [[en:Module:User:OblivionKhorasan/skr-IPA-translit]] থেকে আনা হলো 510210 Scribunto text/plain local m_str_utils = require("Module:string utilities") local U = m_str_utils.char local gsub = m_str_utils.gsub local export = {} local nasal = 'J' local nasalised = '̃' local nasalc = "mnɳɲŋ" local aspirate = "ʰʱ" local unvoiced = "ptʈçk" local stress = "ˈˌ" local consonants = "pbɓtdɗʈɖᶑɽçɟʄkɡɠɾlɭsɦʃʋqxɣzfmnɳɲŋj" local schwac = "pbɓtdɗʈɖᶑɽçɟʄkɡɠɾlɭsʃqzfʰʱmnɳɲŋ" local gem = "pbɓtdɗʈɖᶑçɟʄkɡɠlsʃqxɣzfʰʱmnɲŋ" local ungem = "ɳɭɾɽjʋɦ" local vowels = "əɪʊaiueoɛɔ" local shortvowels = "əɪʊ" local longvowels = "aiueoɛɔ" local long = "ː" local nonsyllabic = '̯' local labial = "pbɓf" local dental = "tdɗ" local retroflex = "ʈɖᶑ" local postalveolar = "çɟʄ" local velar = "kɡɠ" local postvelar = "xɣ" local sibilant = "sʃɦ" local mapping = { ["T"] = 'ʈ', ["D"] = 'ɖ', ["N"] = 'ɳ', ["R"] = "ɽ", ["c"] = 'ç', ["j"] = 'ɟ', ["ñ"] = 'ɲ', ["g"] = 'ɡ', ["y"] = 'j', ["r"] = 'ɾ', ["L"] = 'ɭ', ["v"] = 'ʋ', ["h"] = "ɦ", ["ś"] = "ʃ", ["ġ"] = "ɣ", ["a"] = 'ə', ["i"] = 'ɪ', ["u"] = 'ʊ', ["ā"] = 'a', ["ī"] = 'i', ["ū"] = 'u', ["ē"] = 'ɛ', ["ō"] = 'ɔ', ["ṉ"] = "J", ["`"] = 'ˈ', [","] = 'ˌ', ["H"] = 'ʱ', } function export.tr(text, lang, sc) --define the "end" of a word text = gsub(text, "#", "HASHTAG") text = gsub(text, " | ", "# | #") text = gsub(text, "\n" , "#".."\n" .. "#") text = "##" .. gsub(text, " ", "# #") .. "##" -- hastags now mark the beginning and end of a word text = gsub(text, '.', mapping) -- implosives text = gsub(text, "b'", "ɓ") text = gsub(text, "d'", "ɗ") text = gsub(text, "ɖ'", "ᶑ") text = gsub(text, "ɟ'", "ʄ") text = gsub(text, "ɡ'", "ɠ") -- unvoiced aspirates text = gsub(text, '([' .. unvoiced .. '])' .. '([' .. aspirate .. '])', "%1ʰ") -- nasalise vowels text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasalc .. '])' .. '([' .. consonants .. '])', "%1̃%2%3") text = gsub(text, '([' .. stress .. '])' .. '([' .. vowels .. long .. '])' .. '([' .. nasalc .. '])', "%1%2̃%3") text = gsub(text, '([' .. stress .. '])' .. '([' .. consonants .. '])' .. '([' .. vowels .. long .. '])' .. '([' .. nasalc .. '])', "%1%2%3̃%4") text = gsub(text, "#" .. '([' .. consonants .. aspirate .. '])' .. '([' .. vowels .. '])' .. '([' .. nasalc .. '])' .. "#", "%1%2̃.%3") -- nasal consonant combinations text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. labial .. '])', "%1̃m%3") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. dental .. '])', "%1̃n%3") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. retroflex .. '])', "%1̃ɳ%3") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. postalveolar .. '])', "%1̃n̠%3") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. velar .. '])', "%1̃ŋ%3") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. postvelar .. '])', "%1̃ŋ̄%3") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. sibilant .. '])', "%1̃%3") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. "#", "%1̃") -- stressed variants (not sure how to condense) text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. stress .. '])' .. '([' .. labial .. '])', "%1̃m%3%4") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. stress .. '])' .. '([' .. dental .. '])', "%1̃n%3%4") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. stress .. '])' .. '([' .. retroflex .. '])', "%1̃ɳ%3%4") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. stress .. '])' .. '([' .. postalveolar .. '])', "%1̃n̠%3%4") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. stress .. '])' .. '([' .. velar .. '])', "%1̃ŋ%3%4") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. stress .. '])' .. '([' .. postvelar .. '])', "%1̃ŋ̄%3%4") text = gsub(text, '([' .. vowels .. '])' .. '([' .. nasal .. '])' .. '([' .. stress .. '])' .. '([' .. sibilant .. '])', "%1̃%3%4") -- vowel lengthening text = gsub(text, '([' .. longvowels .. '])' .. '([' .. ungem .. '])', "%1ː%2") text = gsub(text, '([' .. longvowels .. '])' .. '([' .. nasalised .. '])' .. '([' .. ungem .. '])', "%1%2ː%3") text = gsub(text, '([' .. longvowels .. nasalised .. '])' .. "#", "%1ː") text = gsub(text, '([' .. longvowels .. nasalised .. '])' .. '([' .. consonants .. aspirate .. '])' .. "#", "%1ː%2") text = gsub(text, '([' .. stress .. consonants .. aspirate .. '])' .. '([' .. longvowels .. '])' .. '([' .. consonants .. aspirate .. '])', "%1%2ː%3") text = gsub(text, '([' .. stress .. consonants .. aspirate .. '])' .. '([' .. longvowels .. '])' .. '([' .. nasalised .. '])' .. '([' .. consonants .. aspirate .. '])', "%1%2%3ː%4") -- consonant doubling after stressed long vowels text = gsub(text, '([' .. stress .. consonants .. aspirate .. '])' .. '([' .. longvowels .. '])' .. '([' .. long .. '])' .. '([' .. gem .. '])' .. '([' .. vowels .. '])', "%1%2%3%4%4%5") text = gsub(text, '([' .. stress .. consonants .. aspirate .. '])' .. '([' .. longvowels .. '])' .. '([' .. long .. '])' .. '([' .. gem .. '])' .. '([' .. aspirate .. '])' .. '([' .. vowels .. '])', "%1%2%3%4%4%5%6") -- iy cluster text = gsub(text, "ɪj", "i.j") text = gsub(text, "ɪ" .. '([' .. stress .. '])' .. "j", "i%1j") text = gsub(text, "jj", "i̯.j") -- schwa release text = gsub(text, '([' .. schwac .. '])' .. "#", "%1ə̆") -- syllables text = gsub(text, '([' .. vowels .. nasalised .. long .. '])' .. '([' .. consonants .. '])' .. '([' .. consonants .. '])' .. '([' .. vowels .. '])', "%1%2.%3%4") -- separates consonants text = gsub(text, '([' .. vowels .. nasalised .. long .. '])' .. '([' .. consonants .. '])' .. '([' .. consonants .. '])' .. '([' .. aspirate .. '])' .. '([' .. vowels .. '])', "%1%2.%3%4%5") text = gsub(text, '([' .. vowels .. nasalised .. long .. '])' .. '([' .. consonants .. '])' .. '([' .. vowels .. '])', "%1.%2%3") -- separates C-V text = gsub(text, '([' .. vowels .. nasalised .. long .. '])' .. '([' .. stress .. '])', "%1.%2") text = gsub(text, '([' .. vowels .. nasalised .. long .. '])' .. '([' .. consonants .. '])' .. '([' .. stress .. '])', "%1%2.%3") text = gsub(text, '([' .. vowels .. nasalised .. long .. '])' .. '([' .. vowels .. '])', "%1.%2") -- separates vowel clusters text = gsub(text, "." .. '([' .. vowels .. nasalised .. long .. '])' .. '([' .. nonsyllabic .. '])', "%1%2") -- nonsyllabic vowel clusters -- repairing n̠ text = gsub(text, '([' .. "n̠" .. '])' .. '([' .. consonants .. stress .. '])', "%1.%2") -- ñ fix text = gsub(text, '([' .. nasalised .. long ..'])' .. '([' .. "." .. '])' .. '([' .. "ɲ" .. '])', "%1%3%2%3") -- manual fix text = gsub(text, '([' .. shortvowels .. '])' .. '([' .. nasalised .. '])' .. '([' .. long .. '])', "%1%2") text = gsub(text, '([' .. shortvowels .. '])' .. '([' .. consonants .. '])' .. '([' .. vowels .. '])', "%1.%2%3") -- get rid of hashtags (not needed) text = gsub(text, "#", "") text = gsub(text, "HASHTAG", "#") -- return text end return export 1ctaoxhp6jvg80bwbrtcjy7i3l7iohn মডিউল:User:OblivionKhorasan/skr-IPA-translit/testcases 828 168659 510211 2026-06-07T12:46:01Z RedminBot 9553 [[en:Module:User:OblivionKhorasan/skr-IPA-translit/testcases]] থেকে আনা হলো 510211 Scribunto text/plain return require("Module:transliteration module testcases") { module = "User:OblivionKhorasan/skr-IPA-translit", examples = { -- h sematnics {"al`lāh", "əl.ˈlaːɦ"}, {"paṉ`jābī", "pə̃n̠.ˈɟaːb.biː"}, {"`DHābā", "ˈɖʱaːb.baː"}, {"`ābHā", "ˈaːb.bʱaː"}, {"`jHājHā", "ˈɟʱaːɟ.ɟʱaː"}, {"ma`rāTHī", "mə.ˈɾaːʈ.ʈʰiː"}, {"`kHātrī", "ˈkʰaːt.ɾiː"}, {"va`trābā", "ʋə.ˈtɾaːb.baː"}, {"a`grātre", "ə.ˈɡɾaːt.ɾeː"}, {"a`bHrātro", "ə.ˈbʱɾaːt.ɾoː"}, {"`bHāṉDā", "ˈbʱãːɳ.ɖaː"}, {"mīṉh", "mĩːɦ"}, {"deṉh", "dẽːɦ"}, {"`kehā", "ˈkeː.ɦaː"}, {"`bāṉhāṉ", "ˈbãː.ɦãː"}, {"`neRe", "ˈneː.ɽeː"}, {"sa`meṉ", "sə.ˈmẽː"}, {"eh", "eːɦ"}, {"`kiyā", "ˈki.jaː"}, {"`sayyaRi,yāṉ", "ˈsəi̯.jə.ɽi.ˌjãː"}, {"`mukkeā", "ˈmʊk.ke.aː"}, {"mu`savvir", "mʊ.ˈsəʋ.ʋɪ.ɾə̆"}, {"or", "oː.ɾə̆"}, {"`kāNā", "ˈkãː.ɳaː"}, {"`kāLā", "ˈkaː.ɭaː"}, {"amm", "ə̃m.mə̆"}, {"kuṉbH", "kʊ̃m.bʱə̆"}, {"u`lāṉbHā", "ʊ.ˈlãːm.bʱaː"}, {"`āmbHā", "ˈãːm.bʱaː"}, {"`baṉdā", "ˈbə̃n.daː"}, {"`kHāṉdā", "ˈkʰãːn.daː"}, {"TiṉD", "ʈɪ̃ɳ.ɖə̆"}, {"DāṉT", "ɖãːɳ.ʈə̆"}, {"u`kāṉTā", "ʊ.ˈkãːɳ.ʈaː"}, {"buṉDHā", "bʊ̃ɳ.ɖʱaː"}, {"`paṉcHī", "ˈpə̃n̠.çʰiː"}, {"`kāṉcHaR", "ˈkãːn̠.çʰə.ɽə̆"}, {"ka`raṉg", "kə.ˈɾə̃ŋ.ɡə̆"}, {"`sāṉgā", "ˈsãːŋ.ɡaː"}, {"faṉx", "fə̃ŋ̄x"}, {"`karan", "ˈkə.ɾə.nə̆"}, {"bunn", "bʊ̃n.nə̆"}, {"kiñ", "kɪ̃ɲ.ɲə̆"}, {"`vañaN", "ˈʋə̃ɲ.ɲə.ɳə̆"}, {"`ñāNā", "ˈɲãː.ɳaː"}, {"`jāñī", "ˈɟãːɲ.ɲiː"}, {"`kaŋaN", "ˈkə̃ŋ.ŋə.ɳə̆"}, {"dHa`ŋāNā", "dʱə.ˈŋãː.ɳaː"}, {"kam", "kə̃.mə̆"}, {"kām", "kãː.mə̆"}, {"za`mānā", "zə.ˈmãːn.naː"}, {"ca`mār", "çə.ˈmaː.ɾə̆"}, {"bāṉs", "bãː.sə̆"}, {"`karāṉ", "ˈkə.ɾãː"}, {"`g'ad'ahoṉ", "ˈɠə.ɗə.ɦõː"}, {"vihu", "ʋɪ.ɦŭ"}, {"nāLi", "naː.ɭɪ̆ː"}, }, sc = "Arab", lang = "pa", } 8p5373tt11bdjy0tsbalezhamnzcqf6 মডিউল:User:Qnm/mnw-translit 828 168660 510212 2026-06-07T12:46:02Z RedminBot 9553 [[en:Module:User:Qnm/mnw-translit]] থেকে আনা হলো 510212 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub function export.trwo(text, lang, sc, options) if sc == 'Beng' or sc == 'Mymr' or sc == 'Lana' or sc == 'Khmr' or sc == 'Thai' or sc == 'Laoo' then local u = mw.ustring.char local function dc(x) -- Use this to make marks legible. The name 'dc' means 'drop carrier'. return gsub(x, "[𑀓कকකကกᨠកກ]", "") -- These are the letter ka in the 9 supported Indic scripts. end local consonants = { -- And parts 1 of NFC-multipart independent vowels! -- Myanmar ['က']='k', ['ခ']='kh', ['ဂ']='g', ['ဃ']='gh', ['င']='ṅ', ['စ']='c', ['ဆ']='ch', ['ဇ']='j', ['ဈ']='jh', ['ဉ']='ñ', ['ဋ']='ṭ', ['ဌ']='ṭh', ['ဍ']='ḍ', ['ဎ']='ḍh', ['ဏ']='ṇ', ['တ']='t', ['ထ']='th', ['ဒ']='d', ['ဓ']='dh', ['န']='n', ['ပ']='p', ['ဖ']='ph', ['ဗ']='b', ['ဘ']='bh', ['မ']='m', ['ယ']='y', ['ရ']='r', ['လ']='l', ['ဝ']='v', ['ဠ']='ḷ', ['ၐ']='ś', ['ၑ']='ṣ', ['သ']='s', ['ဟ']='h', ['ည']='ññ', ['ဿ']='ss', ['အ'] = 'ʼ', -- Subscript consonants: 103B..103E, 105E..1060 [dc('ကျ')]='y', [dc('ကြ')]='r', [dc('ကွ')]='v', [dc('ကှ')]='h', [dc('ကၞ')]='n', [dc('ကၟ')]='m', [dc('ကၠ')]='l', -- Mon Pali consonants ['ၚ']='ṅ', ['ၛ']='jh', -------- ['ၜ']='ṗ', ['ၝ']='ḅ', -- ? ['ဣ']='i', ['ဥ']='u', } local diacritics = { -- Myanmar [dc('ကာ')]='ā', [dc('ကါ')]='ā', [dc('ကိ')]='i', [dc('ကီ')]='ī', [dc('ကု')]='u', [dc('ကူ')]='ū', [dc('ကၖ')]='ṛ', [dc('ကၗ')]='ṝ', [dc('ကၘ')]='ḷ', [dc('ကၙ')]='ḹ', [dc('ကေ')]='e', [dc('ကဲ')]='ai', -- The following are multicharacter! [dc('ကော')]='o', [dc('ကော်')]='au', [dc('က်က္')]='', [dc('ကေါ')]='o', [dc('ကေါ်')]='au', [dc('က္')]='', [dc('က်')]='', -- Mon - treatment of Sanskrit au is to be determined! [dc('ကဳ')]='ī', ---------- [dc('ကို')]='iu', [dc('ကာံ')]='āṃ', [dc('ကုံ')]='uṃ', [dc('ကေံ')]='eṃ', [dc('ကောံ')]='oṃ', [dc('ကီ')]='aṁ', [dc('ကီု')]='uṁ', [dc('ကာဲ')]='āai', [dc('ကုဲ')]='uai', [dc('ကေဲ')]='eai', [dc('ကောဲ')]='oai', [dc('ကိုဲ')]='iuai', [dc('ကဵု')]='uew', -- Shan [dc('ကႃ')]='ā', [dc('ကေႃ')]='o', -- Lanna [dc('ᨠᩣ')]='ā', [dc('ᨠᩤ')]='ā', [dc('ᨠᩥ')]='i', [dc('ᨠᩦ')]='ī', [dc('ᨠᩩ')]='u', [dc('ᨠᩪ')]='ū', ['ᩂ']='ṛ', ['ᩄ']='ḷ', -- Syllabic consonants may be very wrong! [dc('ᨠᩮ')]='e', [dc('ᨠᩱ')]='ai', [dc('ᨠᩰ')]='o', -- The next two rows are are multicharacter! [dc('ᨠᩮᩣ')]='o', [dc('ᨠᩮᩢᩣ')]='au', [dc('ᨠᩮᩫᩢᩣ')]='au', [dc('ᨠᩮᩫᩣ')] = 'au', [dc('ᨠᩮᩤ')]='o', [dc('ᨠᩮᩢᩤ')]='au', [dc('ᨠᩮᩫᩢᩤ')]='au', [dc('ᨠᩮᩫᩤ')] = 'au', [dc('ᨠ᩠')]='', [dc('ᨠ᩺')]='', [dc('ᨠ᩼')]='', -- Results of subscripts - for 2nd level special subscripts. ['ṭ']='ṭ', ['n']='n', ['p']='p', ['m']='m', ['y']='y', ['r']='r', ['l']='l', ['w']='w', ['s']='s', ['h']='h', } local tt = { -- Myanmar independent vowels ['အ']='a', ['အာ']='ā', ['ဣ']='i', ['ဤ']='ī', ['ဥ']='u', ['ဦ']='ū', ['ၒ']='ṛ', ['ၓ']='ṝ', ['ၔ']='ḷ', ['ၕ']='ḹ', ['ဧ']='e', ['အဲ']='ai', ['ဩ']='o', ['ဪ']='au', -- 2 of these are multi-character keys! -- Mon ['ဣဳ'] = 'ī', ['ဥု'] = 'ū', ['ဨ'] = 'e', -- Shan ['ဢ'] = 'a', ['ဢႃ'] = 'ā', ['ဢိ'] = 'i', ['ဢီ'] = 'ī', ['ဢု'] = 'u', ['ဢူ'] = 'ū', ['ဢေ'] = 'e', ['ဢေႃ'] = 'o', ['ဢဲ'] = 'ai', ['ဢော်'] = 'au', -- chandrabindu, anusvara, visarga & avagraha -- [dc('က')]='m̐', [dc('ကံ')]='ṃ', ['း']='ḥ', -- ['']='’', --numerals ['၀']='0', ['၁']='1', ['၂']='2', ['၃']='3', ['၄']='4', ['၅']='5', ['၆']='6', ['၇']='7', ['၈']='8', ['၉']='9', -- chandrabindu, anusvara, visarga & avagraha -- [dc('')]='m̐', [dc('ᨠᩴ')]='ṃ', ['ᩡ']='ḥ', [dc('ᨠᩘ')]='ṅ', -- ['']='’', -- All scripts --punctuation ['॥']='.', ['။']='.', ['᪩']='.', ['᪫']='.', ['៕']='.', ['๚']='.', --double danda ['।']='.', ['၊']='.', ['‌᪨']='.', ['᪪']='.', ['។']='.', ['ฯ']='.', ['ຯ']='.', --danda --Vedic extensions ['ᳵ']='x', ['ᳶ']='f', --Om -- ['ॐ']='oṃ', --reconstructed ['*'] = '', } -- Also handle subscript consonants encoded as marks. local S = dc('ကျကြကွကှကၞကၟကၠ').. -- Myanmar subscripts dc('ᨠᩕᨠᩖᨠᩛᨠᩜᨠᩝᨠᩞ') -- Lanna subscripts -- consonants and part 1 of NFC-multi-part independent vowels. local C = '['.. 'ကခဂဃငစဆဇဈဉဋဌဍဎဏတထဒဓနပဖဗဘမယရလဝဠၐၑသဟညဿအ'.. -- Myanmar Part 1 'ၚၛၵၶၷꧠၸꧡၹꧢၺꩦꩧꩨꩩꧣၻꩪၼၽၿꧤꩮႁဢဣဥ'.. -- Myanmar Part 2 (Mon and Shan) 'ၜၝ'.. ---------- S..']['..u(0x09bc, 0x200d)..']?' -- And allow Bengali nukta or necessary ZWJ. -- One character diacritics local dia = dc('[ကာကါကိကီကုကူကၖကၗကၘကၙကေကဲက္က်ကဳကႃ'.. -- Myanmar 'ᨠᩣᨠᩤᨠᩥᨠᩦᨠᩩᨠᩪᩂᩄᨠᩮᨠᩱᨠᩰᨠ᩠ᨠ᩺ᨠ᩼'.. -- Lanna 'ᨠᩫᩢ'.. -- Lanna diacritics in second or third place. ']') local diax = {} local ti = table.insert; ti(diax, '(') ti(diax, dia) ti(diax, '?') ti(diax, dia) ti(diax, '?') ti(diax, dia) ti(diax, '?') ti(diax, dia) ti(diax, '?)') diax = table.concat(diax) local explicit = nil if options and options.impl then if options.impl == 'yes' then explicit = false elseif options.impl == 'no' then explicit = true end end if sc == 'Lana' then -- Disambiguate lanna combining loop below. cl_search = dc('[ᨲᨻᨾ]ᨠᩛ') text = gsub(text, cl_search, {['ᨲᩛ']='ᨲ᩠ᨳ', ['ᨻᩛ']='ᨻ᩠ᨻ', ['ᨾᩛ']='ᨾ᩠ᨻ'}) end if sc == 'Mymr' or sc == 'Lana' then local fn = function(c, d) return consonants[c]..d end local search = '('..C..')(['..S..'])' text = gsub(text, search, fn); text = gsub(text, search, fn); -- and again end text = gsub(text, '('..C..')'..diax, function(c, d) local val = tt[c..d] if val then return val end local cn = consonants[c] if not cn then return 'X('..c..')' end if d ~= "" then return cn .. (diacritics[d] or 'NIL('..d..')') elseif explicit then return cn else return cn .. 'a' end end ) text = gsub(text, '.', tt) else text = nil -- Not ready for use yet! end return text end function export.tr(text, lang, sc) return export.trwo(text, lang, sc, {}) end return export cc8lwsz6r3406sunpm5u536azgg9q5x মডিউল:User:RichardW57/nod-translit 828 168661 510213 2026-06-07T12:46:02Z RedminBot 9553 [[en:Module:User:RichardW57/nod-translit]] থেকে আনা হলো 510213 Scribunto text/plain local export = {} local m_pron = require("Module:User:RichardW57/nod-pron") function export.tr(text, lang, sc) return m_pron.translit(text, lang, sc, "paiboon", "translit-module") end function export.tr1(text) return table.concat(m_pron.getCharSeqTbl(text)) end return export 016vxcas93qcifzrksq7uqg1ehy6arv মডিউল:User:RichardW57/nod-translit/testcases 828 168662 510214 2026-06-07T12:46:03Z RedminBot 9553 [[en:Module:User:RichardW57/nod-translit/testcases]] থেকে আনা হলো 510214 Scribunto text/plain -- Unit tests for [[Module:nod-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local nod_translit = require('Module:User:RichardW57/nod-pron') function tests:do_test_translit(thai, roman, xlit) self:equals('<span class="Thai" lang="th">[[' .. mw.ustring.gsub(mw.ustring.gsub(thai, "ฺ", ""), "%-", "") .. '#Northern Thai|' .. mw.ustring.gsub(mw.ustring.gsub(thai, "ฺ", ""), "%-", "") .. ']]</span>',nod_translit.translit(thai, 'th', 'Thai', 'paiboon', 'translit-module'), roman) end function tests:test_translit_thai() self:do_test_translit('เฮิ็้ย', 'hə́i') self:do_test_translit('เฉิ็ย', 'chə̌i') self:do_test_translit('เงิ็น', 'ngən') self:do_test_translit('เกดส', 'gèets') --เกตส์ (Gates) self:do_test_translit('มันส', 'mans') --มันส์ self:do_test_translit('ไอ๊ส', 'áis') --ไอซ์ (ice) self:do_test_translit('เซ็กส', 'séks') --เซ็กส์ (sex) self:do_test_translit('เอ็๊กส', 'éks') --เอกซ์ & เอ็กซ์ & เอ๊กซ์ (ex) self:do_test_translit('เฮ้าส', 'háos') --เฮาส์ & เฮ้าส์ (house) self:do_test_translit('เม้าส', 'máos') --เมาส์ & เม้าส์ (mouse) self:do_test_translit('ทฺรำ-เป็ด', 'tram-bpět') -- not Central 'tram-bpèt' --ทรัมเป็ต self:do_test_translit('ห็อย', 'hɔ̌i') self:do_test_translit('หฺม็อย', 'mɔ̌i') self:do_test_translit('หฺมั่น-โถว', 'màn-tǒow') self:do_test_translit('เด๊ด-สะ-มอ-เร่', 'déet-sà-mɔɔ-rêe') -- Does this word occur? self:do_test_translit('เห', 'hěe') self:do_test_translit('แคฺล', 'klɛɛ') self:do_test_translit('แคล', 'kɛɛl') self:do_test_translit('เพฺล', 'plee') self:do_test_translit('เพล', 'peel') self:do_test_translit('เปฺล', 'bplee') self:do_test_translit('เปล', 'bpeel') self:do_test_translit('เบล', 'beel') self:do_test_translit('เซล', 'seel') self:do_test_translit('โพล', 'pool') self:do_test_translit('รา-ชา-ทิ-ราด', 'raa-chaa-tí-râat') self:do_test_translit('ขฺวน-ขฺวาย', 'kwǒn-kwǎai') --ขวนขวาย Only the word ขวน read as kwǒn instead of kǔuan. self:do_test_translit('ข่วน', 'kùuan') self:do_test_translit('หอน', 'hɔ̌ɔn') self:do_test_translit('โหน', 'hǒon') -- ห้อยโหน homograph issue self:do_test_translit('สะ-โหฺน', 'sǎ-nǒo') -- not Central 'sà-nǒo') -- โสน homograph issue self:do_test_translit('แหน', 'hɛ̌ɛn') -- หวงแหน homograph issue self:do_test_translit('แหฺน', 'nɛ̌ɛ') -- จอกแหน homograph issue self:do_test_translit('แถ็ว', 'tɛ̌o') -- แถว self:do_test_translit('ซวง', 'suuang') self:do_test_translit('น้ำ', 'nám') self:do_test_translit('หฺมาย', 'mǎai') self:do_test_translit('แห็่ง', 'hɛ̀ng') self:do_test_translit('หน', 'hǒn') self:do_test_translit('เหด-สุด-วิ-ไส', 'hèet-sǔt-wí-sǎi') -- not Central 'hèet-sùt-wí-sǎi' self:do_test_translit('ไหฺย่', 'yài') self:do_test_translit('หก', 'hǒk') -- not Central 'hòk' self:do_test_translit('หอย', 'hɔ̌ɔi') self:do_test_translit('กับ', 'gǎp') -- not Central 'gàp' self:do_test_translit('ธรรม', 'tam') self:do_test_translit('ปฺระ-ชา', 'bprǎ-chaa') -- not Central 'bprà-chaa' self:do_test_translit('นะ-คอน', 'ná-kɔɔn') self:do_test_translit('บาด', 'bàat') self:do_test_translit('บ้า' , 'ba᷆a') -- not Central 'bâa' self:do_test_translit('แข็ง', 'kɛ̌ng') self:do_test_translit('แกะ', 'gɛ̌') -- not Central 'gɛ̀' self:do_test_translit('แดง', 'dɛɛng') self:do_test_translit('แปฺล', 'bplɛɛ') self:do_test_translit('ผฺล็อง', 'plɔ̌ng') self:do_test_translit('เกาะ', 'gɔ̌') -- not Central 'gɔ̀' self:do_test_translit('นอน', 'nɔɔn') self:do_test_translit('พ่อ', 'pɔ̂ɔ') self:do_test_translit('เห็ด', 'hět') -- not Central 'hèt' self:do_test_translit('เล็่น', 'lên') self:do_test_translit('เตะ', 'dtě') -- not Central 'dtè' self:do_test_translit('เพฺลง', 'pleeng') self:do_test_translit('เท-วี', 'tee-wii') self:do_test_translit('เยอะ', 'yə́') self:do_test_translit('เดิน', 'dəən') self:do_test_translit('เผฺลอ', 'plə̌ə') self:do_test_translit('ตก', 'dtǒk') -- not Central 'dtòk' self:do_test_translit('โต๊ะ', 'dtó') self:do_test_translit('โชค', 'chôok') self:do_test_translit('โม-โห', 'moo-hǒo') self:do_test_translit('คิด', 'kít') self:do_test_translit('มิ-ถุน', 'mí-tǔn') self:do_test_translit('หิ-มะ', 'hǐ-má') -- not Central 'hì-má' self:do_test_translit('อีก', 'ìik') self:do_test_translit('จี้', 'ji᷆i') -- not Central 'jîi' self:do_test_translit('ลึก', 'lʉ́k') self:do_test_translit('รึ', 'rʉ́') self:do_test_translit('กฺลืน', 'glʉʉn') self:do_test_translit('ชื่อ', 'chʉ̂ʉ') self:do_test_translit('คุก', 'kúk') self:do_test_translit('จุ-ฬา', 'jǔ-laa') -- not Central 'jù-laa' self:do_test_translit('ลูก', 'lûuk') self:do_test_translit('ปู', 'bpuu') self:do_test_translit('เดี๊ยะ', 'día') self:do_test_translit('เปาะ-เปี๊ยะ', 'bpɔ̌-bpía') -- not Central 'bpɔ̀-bpía' self:do_test_translit('ปอ-เปี๊ยะ', 'bpɔɔ-bpía') self:do_test_translit('เปฺรี๊ยะ', 'bpría') self:do_test_translit('เตียง', 'dtiiang') self:do_test_translit('เมีย', 'miia') self:do_test_translit('เอือะ', 'ʉ̌a') -- not Central 'ʉ̀a' self:do_test_translit('เรื่อง', 'rʉ̂ʉang') self:do_test_translit('เรือ', 'rʉʉa') self:do_test_translit('ผฺลัวะ', 'plǔa') -- not Central 'plùa' self:do_test_translit('นวด', 'nûuat') self:do_test_translit('ตัว', 'dtuua') self:do_test_translit('ไม่', 'mâi') self:do_test_translit('ใส่', 'sài') self:do_test_translit('วัย', 'wai') self:do_test_translit('ไทย', 'tai') self:do_test_translit('ไม้', 'mái') self:do_test_translit('หาย', 'hǎai') self:do_test_translit('ผฺล็อย', 'plɔ̌i') self:do_test_translit('ซอย', 'sɔɔi') self:do_test_translit('เลย', 'ləəi') self:do_test_translit('โดย', 'dooi') self:do_test_translit('ทุย', 'tui') self:do_test_translit('เหฺนื่อย', 'nʉ̀ai') self:do_test_translit('สวย', 'sǔai') self:do_test_translit('เรา', 'rao') self:do_test_translit('ขาว', 'kǎao') self:do_test_translit('แมว', 'mɛɛo') self:do_test_translit('เกอว', 'gəəo') self:do_test_translit('เร็ว', 'reo') self:do_test_translit('เอว', 'eeo') self:do_test_translit('หิว', 'hǐu') self:do_test_translit('เขียว', 'kǐao') self:do_test_translit('ทำ', 'tam') end return tests 0pb7uzc6vyjlf66auqslasi2rkwrk48 মডিউল:User:Rishabhbhat/ks-pa-translit 828 168663 510215 2026-06-07T12:46:03Z RedminBot 9553 [[en:Module:User:Rishabhbhat/ks-pa-translit]] থেকে আনা হলো 510215 Scribunto text/plain local export = {} u = mw.ustring local midvowel = { --vowel forms in the middle of the word, not mid vowel ["َ"] = "a", ["ا"] = "ā", ["آ"] = "ā", ["ٔ"] = "ạ", ["أ"] = "ạ", ["ٲ"] = "ạ̄", ["ِ"] = "i", ["یٖ"] = "ī", ["ٕ"] = "ụ", ["ٟ"] = "ụ̄", ["ُ"] = "u", ["وٗ"] = "ū", ["ۆ"] = "o", ["و"] = "ō", ["ۄ"] = "ọ", ["ۄا"] = "ọ̄", ["ێ"] = "e", ["ی"] = "ē", ["ؠ"] = "'a", --?? ["ھ"] = "h", --no, don't remove this } local endvow = { ["َہ"] = "a", ["ٔہ"] = "ạ", ["ہِ"] = "i", ["ی"] = "ī", ["ہٕ"] = "ụ", ["ے"] = "ē", ["ےٚ"] = "e", ["ھ"] = "h", ["ؠ"] = "'", } local cons = { ["ب"] = "b", ["پ"] = "p", ["ت"] = "t", ["ٹ"] = "ṭ", ["ث"] = "s", ["ج"] = "j", ["چ"] = "c", ["ح"] = "h", ["خ"] = "x", ["د"] = "d", ["ڈ"] = "ḍ", ["ذ"] = "z", ["ر"] = "r", ["ڑ"] = "ṛ", ["ز"] = "z", ["ژ"] = "ċ", ["س"] = "s", ["ش"] = "ś", ["ص"] = "s", ["ض"] = "z", ["ط"] = "t", ["ظ"] = "z", ["ع"] = "", --??? ["غ"] = "ġ", ["ف"] = "f", ["ق"] = "q", ["ک"] = "k", ["گ"] = "g", ["ل"] = "l", ["م"] = "m", ["ن"] = "n", ["و"] = "w", --v? ["ھ"] = "h", ["ہ"] = "h", ["ی"] = "y" } local endcons = { ["ب"] = "b", ["پ"] = "p", ["ت"] = "t", ["ٹ"] = "ṭ", ["ث"] = "s", ["ج"] = "j", ["چ"] = "c", ["ح"] = "h", ["خ"] = "x", ["د"] = "d", ["ڈ"] = "ḍ", ["ذ"] = "z", ["ر"] = "r", ["ڑ"] = "ṛ", ["ز"] = "z", ["ژ"] = "ċ", ["س"] = "s", ["ش"] = "ś", ["ص"] = "s", ["ض"] = "z", ["ط"] = "t", ["ظ"] = "z", ["ع"] = "", --??? ["غ"] = "ġ", ["ف"] = "f", ["ق"] = "q", ["ک"] = "k", ["گ"] = "g", ["ل"] = "l", ["م"] = "m", ["ن"] = "n", ["و"] = "w", --v? ["ھ"] = "h", ["ہ"] = "h", ["ے"] = "y", } local function contains_key(lst, w) for t, _ in pairs(lst) do if u.match(w, t) then return true end end return false end function export.tr(word) out = "" for sep in u.gmatch(word, "%S+") do n_cons = 1 o = ""; l = u.len(sep) --[[==for v, rom in pairs(endvow) do sep = u.gsub(sep, v.."$", rom) --mw.log(sep) end==]]-- for i = 1, l do local c = u.sub(sep,i,i) if c == "ٖ" then o = u.gsub(o, "y$", "ī") elseif c == "ٗ" then o = u.gsub(o, "w$", "ū") else if i == 1 and c == "ا" then tr_a = "" elseif i == l then tr_a = endcons[c] or endvow[c] --[[==if tr_a then o = o .. tr_a else ender = endvow[u.sub(sep,i-1,i-1) .. c] mw.log(ender) end==]]-- else tr_a = cons[c] or midvowel[c] end if tr_a then o = o.. tr_a end end end out = out .. o if not (o:match("'$") or o:match("ụ$")) then out = out .. " " end end return out:gsub("^%s*(.-)%s*$", "%1") end function export.template_ipa(params) return export.ipa(params.args[1]) end return export a7gr92i3d9ge02ojyt5faq367lzhxkq মডিউল:User:Rishabhbhat/ks-pa-translit/testcases 828 168664 510216 2026-06-07T12:46:03Z RedminBot 9553 [[en:Module:User:Rishabhbhat/ks-pa-translit/testcases]] থেকে আনা হলো 510216 Scribunto text/plain local tests = require "Module:UnitTests" local m = require "Module:User:Rishabhbhat/ks-pa-translit" local convert = m.tr function tests:check_tr(example, expected) self:equals( example, convert(example), expected ) end function tests:test_strings() local examples = { {"گؠوان", "g'awān"}, {"آزاد", "āzād"}, {"أمیٖری", "ạmīrī"}, {"پَکٕنَے", "pakụnay"}, {"دیُٛتُتھ", "dyututh"}, {"وۄزُل", "wọzul"}, {"پٔکؠ", "pạk'"}, {"خانہٕ", "xānụ"}, {"خانہٕ دارێنؠ", "xānụdāren'"}, {"ہَتھ", "hath"}, {"ترَٛٹھ", "traṭh"}, {"اَکھ", "akh"}, {"اُردوٗ", "urdū"}, {"اَدۄے", "adọy"}, {"اۆنٛجوٗر", "onjūr"}, {"آتھوار", "āthwār"}, {"آزٲدی", "āzạ̄dī"}, {"آسُن", "āsun"}, {"آشَنؠ", "āśan'"}, {"آشێنؠ", "āśen'"}, {"آلَو", "ālaw"}, {"آوٕرُن", "āwụrun"}, {"آوٕسُن", "āwụsun"}, {"آپراوُن", "āprāwun"}, {"آگُر", "āgur"}, {"کَرتہٕ ", "kartụ"}, {"کٔرؠ مٕتؠ", "kạr'mụt'"}, {"أکِس دَزان دٲر", "ạkis dazān dạ̄r"}, {"ہٲومٕژ", "hạ̄wmụċ"}, { 'گُر', 'gur' }, { 'زُرؠو', 'zur\'aw' }, { 'مَکانہٕ', 'makānụ' }, { 'ہیٚچھُن', 'hechun' }, { 'ژھانٛڈُن', 'ċhānḍun' }, { 'نێچُو', 'necuw' }, { 'ژَتجی', 'ċatjī' }, { 'موجا', 'mōjā' }, { 'کیل', 'kēl' }, { 'اَلہٕ', 'alụ' }, { 'کالَس', 'kālas' }, { 'اوٗر', 'ūr' }, { 'کانٛدُر', 'kāndur' }, { 'ژھونٛڈمُت', 'ċhōnḍmut' }, { 'ژھٲنٛڈؠ مٕتؠ', 'ċhạ̄nḍ\'mụt\'' }, { 'خۄش', 'xọś' }, { 'اٟٹھِم', 'ụ̄ṭhim' }, { 'دَہَو ؤرِیَو پَتہٕ آو سہُ گَرٕ', 'dahaw wạriyaw patụ āw su garụ' }, { 'اۆڑ', 'oṛ' }, { 'شیٖن', 'śīn' }, {'کیۆم', "kyom"}, {"أنٛز", "ạnz"}, {"ترٛےٚ", "tre"}, {"بَطُخ", "batux"}, {"ژےٚ", "ċe"}, {"کیٛازِ", "kyāzi"}, {"کیُٛل", "kyul"}, {"کیٛوٗر", "kyūr"}, {"اَکی", "akī"}, {"کانٛہہ", "kānh"}, } self:iterate(examples, "check_tr") end return tests 644t16evhlvbi7qirt50kja8hxqv4sf মডিউল:User:Saam-andar/Mand-translit 828 168665 510217 2026-06-07T12:46:04Z RedminBot 9553 [[en:Module:User:Saam-andar/Mand-translit]] থেকে আনা হলো 510217 Scribunto text/plain -- Author: Saam-andar local export = {} local m_str_utils = require("Module:string utilities") local gcodepoint = m_str_utils.gcodepoint local rfind = m_str_utils.find local rsubn = m_str_utils.gsub local rmatch = m_str_utils.match local rsplit = m_str_utils.split local U = m_str_utils.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end -- Mandaic Unicode block: U+0840–U+085F local zwnj = U(0x200C) -- zero-width non-joiner local consonants = "ࡁࡂࡃࡄࡆࡇࡈࡊࡋࡌࡍࡎࡐࡑࡒࡓࡔࡕࡖࡗࡘ" local consonant_pattern = "[" .. consonants .. "]" local gemination_mark = U(0x085B) -- ◌࡛ MANDAIC GEMINATION MARK local affriction_mark = U(0x0859) -- ◌࡙ MANDAIC AFFRICTION MARK local vocalization_mark = U(0x085A) -- ◌࡚ MANDAIC VOCALIZATION MARK -- mapping local tt = { -- consonants ["ࡁ"] = "b", -- MANDAIC LETTER AB (beth) ["ࡂ"] = "g", -- MANDAIC LETTER AG (gimel) ["ࡃ"] = "d", -- MANDAIC LETTER AD (daleth) ["ࡄ"] = "h", -- MANDAIC LETTER AH (he) ["ࡆ"] = "z", -- MANDAIC LETTER AZ (zayin) ["ࡈ"] = "ṭ", -- MANDAIC LETTER ATT (teth) ["ࡊ"] = "k", -- MANDAIC LETTER AK (kaph) ["ࡋ"] = "l", -- MANDAIC LETTER AL (lamedh) ["ࡌ"] = "m", -- MANDAIC LETTER AM (mem) ["ࡍ"] = "n", -- MANDAIC LETTER AN (nun) ["ࡎ"] = "s", -- MANDAIC LETTER AS (semkath) ["ࡐ"] = "p", -- MANDAIC LETTER AP (pe) ["ࡑ"] = "ṣ", -- MANDAIC LETTER ASZ (sadhe) ["ࡒ"] = "q", -- MANDAIC LETTER AQ (qoph) ["ࡓ"] = "r", -- MANDAIC LETTER AR (resh) ["ࡔ"] = "š", -- MANDAIC LETTER ASH (shin) ["ࡕ"] = "t", -- MANDAIC LETTER AT (taw) ["ࡖ"] = "ḏ-", -- MANDAIC LETTER DUSHENNA ["ࡗ"] = "kḏ", -- MANDAIC LETTER KAD ["ࡘ"] = "'", -- MANDAIC LETTER AIN -- Vowels ["ࡀ"] = "a", -- MANDAIC LETTER HALQA (aleph) ["ࡅ"] = "u", -- MANDAIC LETTER USHENNA (waw) ["ࡉ"] = "i", -- MANDAIC LETTER AKSA (yodh) ["ࡏ"] = "ʿ", -- MANDAIC LETTER IN (ayin) ["ࡇ"] = "ẖ", -- MANDAIC LETTER IT (heth) -- Punctuation ["࡞"] = ".", -- MANDAIC PUNCTUATION ["ـ"] = "-", -- tatweel/kashida ["،"] = ",", ["؛"] = ";", ["؟"] = "?", ["«"] = '"', ["»"] = '"', [zwnj] = "-", } -- Main function function export.tr(text, lang, sc, options) if not text or text == "" then return nil end if type(text) == "table" then local function f(x) return (x ~= "") and x or nil end text, lang, sc = f(text.args[1]), f(text.args[2]), f(text.args[3]) options = text.args[4] and {} or nil end -- Only process if script is Mandaic if sc and sc ~= "Mand" then return nil end local preprocessing = { -- gemination {"([" .. consonants .. "])" .. gemination_mark, "%1%1"}, {"([" .. consonants .. "])" .. affriction_mark, "%1" .. U(0x0324)}, {"ࡀ" .. vocalization_mark, "a"}, {"ࡅ" .. vocalization_mark, "o"}, {"ࡉ" .. vocalization_mark, "e"}, } -- Apply preprocessing for _, sub in ipairs(preprocessing) do text = rsub(text, sub[1], sub[2]) end text = rsubn(text, ".", function(char) return tt[char] or char end) return text end return export ocrnueeelueve0xvi0gg216vleb5g3l মডিউল:User:Saam-andar/Mand-translit/testcases 828 168666 510218 2026-06-07T12:46:04Z RedminBot 9553 [[en:Module:User:Saam-andar/Mand-translit/testcases]] থেকে আনা হলো 510218 Scribunto text/plain -- Refresh page to run tests. local tests = require('Module:UnitTests') local Mand_translit = require('Module:User:Saam-andar/Mand-translit') local full_link = require('Module:links').full_link local myz = require('Module:languages').getByCode('myz') local rlm = require("Module:string/char")(0x200F) -- right-to-left mark local function link(word) return full_link{ term = word, lang = myz, tr = "-" } end function tests:do_test_translit(mandaic, expected) local actual = Mand_translit.tr(mandaic, 'myz', 'Mand') self:equals(mandaic, actual, expected) end function tests:test_translit_mandaic() local examples = { {"ࡏࡉࡍࡂࡋࡉࡆࡉࡀ", "ʿinglizia"}, {"ࡍࡀࡆࡃࡉࡊ", "nazdik"}, {"ࡏࡅࡓࡀࡔࡋࡀࡌ", "ʿurašlam"}, {"ࡊࡋࡀࡕࡀ", "klata"}, {"ࡖࡍࡐࡀ࡚ࡒࡕ","ḏ-npaqt"}, {"ࡑࡅ࡚ࡐ࡙ࡓࡀ", "ṣop̤ra"}, {"ࡋࡉࡁ࡛ࡀ", "libba"}, {"ࡄࡀࡈࡀࡉࡉࡀ", "haṭaiia"}, } self:iterate(examples, "do_test_translit") end return tests tnjdoy9szi0o4crkckr195g12hawihv মডিউল:User:Saam-andar/chg-translit 828 168667 510219 2026-06-07T12:46:05Z RedminBot 9553 [[en:Module:User:Saam-andar/chg-translit]] থেকে আনা হলো 510219 Scribunto text/plain -- Author: Saam-andar local export = {} local m_str_utils = require("Module:string utilities") local gcodepoint = m_str_utils.gcodepoint local rfind = m_str_utils.find local rsubn = m_str_utils.gsub local rmatch = m_str_utils.match local rsplit = m_str_utils.split local U = m_str_utils.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local zwnj = U(0x200C) -- zero-width non-joiner local alif_madda = U(0x622) local alif_hamza_below = U(0x625) local alif = U(0x627) local taa_marbuta = U(0x629) local laam = U(0x644) local waaw = U(0x648) local yaa = U(0x64A) local fatHataan = U(0x64B) local Dammataan = U(0x64C) local kasrataan = U(0x64D) local shadda = U(0x651) local sukuun = U(0x652) local dagger_alif = U(0x670) local alif_wasl = U(0x671) local fatha = U(0x64E) local kasra = U(0x650) local zamma = U(0x64F) local highhmz = U(0x654) local sukun = "ْ" --local zwj = U(0x200D) -- zero-width joiner local lrm = U(0x200E) -- left-to-right mark local rlm = U(0x200F) -- right-to-left mark local consonants = "بپتثجچحخدذرزژسشصضطظعغفقکگلمنوؤهیئء" local diacritics = fatha .. kasra .. zamma .. highhmz .. sukun .. shadda .. dagger_alif .. fatHataan .. Dammataan .. kasrataan -- mapping local tt = { ["آ"] = "ʾ̂", ["ا"] = "ʾ", ["ب"] = "b", ["پ"] = "p", ["ت"] = "t", ["ث"] = "s̱", ["ج"] = "j", ["چ"] = "č", ["ح"] = "ḥ", ["خ"] = "x", ["د"] = "d", ["ذ"] = "ẕ", ["ر"] = "r", ["ز"] = "z", ["ژ"] = "ž", ["س"] = "s", ["ش"] = "š", ["ص"] = "ṣ", ["ض"] = "ż", ["ط"] = "ṭ", ["ظ"] = "ẓ", ["ع"] = "ʿ", ["غ"] = "ġ", ["ف"] = "f", ["ق"] = "q", ["ک"] = "k", ["گ"] = "g", ["ل"] = "l", ["م"] = "m", ["ن"] = "n", ["و"] = "w", ["ه"] = "h", ["ی"] = "y", [taa_marbuta] = "t", ["ڭ"] = "ñ", ["ء"] = "'", ["ئ"] = "y̮'", ["ؤ"] = "w̮'", ["أ"] = "ʾ̮'", ["إ"] = "ʾ̦", [zwnj] = "-", -- ZWNJ (zero-width non-joiner) -- ligatures ["ﻻ"] = "lʾ", ["اللّٰه"] = "ʾllh", -- kashida ["ـ"] = "-", -- kashida, no sound -- alif_wasla [alif_wasl] = "ʾ̃", -- numerals ["۱"] = "1", ["۲"] = "2", ["۳"] = "3", ["۴"] = "4", ["۵"] = "5", ["۶"] = "6", ["۷"] = "7", ["۸"] = "8", ["۹"] = "9", ["۰"] = "0", -- punctuation (leave on separate lines) ["؟"] = "?", -- question mark ["،"] = ",", -- comma ["؛"] = ";", -- semicolon ["«"] = "“", -- quotation mark ["»"] = "”", -- quotation mark ["٪"] = "%", -- percent ["؉"] = "‰", -- per mille ["٫"] = ".", -- decimals ["٬"] = ",", -- thousan } -- Main function function export.tr(text, lang, sc, options) if not text or text == "" then return nil end if type(text) == "table" then local function f(x) return (x ~= "") and x or nil end text, lang, sc = f(text.args[1]), f(text.args[2]), f(text.args[3]) options = text.args[4] and {} or nil end -- Only process if script is Arabic if sc and sc ~= "Arab" then return nil end -- Strip diacritics text = rsubn(text, "[" .. diacritics .. "]", "") text = rsubn(text, ".", function(char) return tt[char] or char end) return text end return export pz1y9f06a2wdn9wzuh3cquek2ltqtre মডিউল:User:Saam-andar/chg-translit/testcases 828 168668 510220 2026-06-07T12:46:05Z RedminBot 9553 [[en:Module:User:Saam-andar/chg-translit/testcases]] থেকে আনা হলো 510220 Scribunto text/plain -- Refresh page to run tests. local tests = require('Module:UnitTests') local chg_translit = require('Module:User:Saam-andar/chg-translit') local full_link = require('Module:links').full_link local chg = require('Module:languages').getByCode('chg') local rlm = require("Module:string/char")(0x200F) -- right-to-left mark local function link(word) return full_link{ term = word, lang = chg, tr = "-" } end function tests:do_test_translit(chagatai, expected) local actual = chg_translit.tr(chagatai, 'chg', 'Arab') self:equals(chagatai, actual, expected) end function tests:test_translit_chagatai() local examples = { {"رَضی دین بو فال کلام شریف نینک معنای", "rży dyn bw fʾl klʾm šryf nynk mʿnʾy"}, {"الله", "ʾllh"}, {"بو کتاب اوچ باب بولدی", "bw ktʾb ʾwč bʾb bwldy"}, {"بسم اللهِ الرّحْمنِ الرَّحیم", "bsm ʾllh ʾlrḥmn ʾlrḥym"}, {"علیه السّلام غه فرمان بولدیکیم ای جبرائیل تیز", "ʿlyh ʾlslʾm ġh frmʾn bwldykym ʾy jbrʾy̮'yl tyz"} } self:iterate(examples, "do_test_translit") end return tests fu4xx1clz6j2ub18qs9vnqie8wwidre মডিউল:User:Saam-andar/fa-cls-translit 828 168669 510221 2026-06-07T12:46:06Z RedminBot 9553 [[en:Module:User:Saam-andar/fa-cls-translit]] থেকে আনা হলো 510221 Scribunto text/plain local utils = require("Module:User:Saam-andar/fa-utilities") local U = mw.ustring.char local gsub = mw.ustring.gsub local unpack = unpack or table.unpack local export = {} local chars = utils.chars or {} local A = chars.A local I = chars.I local U = chars.U local SK = chars.SK local SH = chars.SH local ZWNJ = chars.ZWNJ local HIGH_HAMZA = chars.HIGH_HAMZA local ALIF_WASLA = chars.ALIF_WASLA local LRM = chars.LRM local RLM = chars.RLM local CONSONANTS = chars.CONSONANTS local CONSONANTS_SEMIVOWELS = chars.CONSONANTS_SEMIVOWELS local SEMIVOWELS = chars.SEMIVOWELS local VOWELS = chars.VOWELS local SUN_LETTERS = chars.SUN_LETTERS local SPACE_LIKE_CLASS = chars.SPACE_LIKE_CLASS local alif = chars.alif local mapping = { ["آ"] = "ā", ["ب"] = "b", ["پ"] = "p", ["ت"] = "t", ["ث"] = "s", ["ج"] = "j", ["چ"] = "č", ["ح"] = "h", ["خ"] = "x", ["د"] = "d", ["ذ"] = "z", ["ر"] = "r", ["ز"] = "z", ["ژ"] = "ž", ["س"] = "s", ["ش"] = "š", ["ص"] = "s", ["ض"] = "z", ["ط"] = "t", ["ظ"] = "z", ["غ"] = "ġ", ["ف"] = "f", ["ق"] = "q", ["ک"] = "k", ["گ"] = "g", ["ل"] = "l", ["م"] = "m", ["ن"] = "n", ["و"] = "ō", ["ی"] = "ē", ["ه"] = "h", ["ع"] = "'", ["ء"] = "'", ["ئ"] = "'", ["ؤ"] = "'", ["أ"] = "'", ["ة"] = "(t)", -- diacritics [A] = "a", [I] = "i", [U] = "u", [SK] = "", [ZWNJ] = "-", [HIGH_HAMZA] = "-yi", -- ligatures ["ﻻ"] = "lā", ["ﷲ"] = "allāh", ["ـ"] = "-", -- kashida [ALIF_WASLA] = "", -- alif wasla: nothing -- numbers ["۱"] = "1", ["۲"] = "2", ["۳"] = "3", ["۴"] = "4", ["۵"] = "5", ["۶"] = "6", ["۷"] = "7", ["۸"] = "8", ["۹"] = "9", ["۰"] = "0", -- punctuation ["؟"] = "?", ["،"] = ",", ["؛"] = ";", ["«"] = '"', ["»"] = '"', ["٪"] = "%", ["؉"] = "‰", ["٫"] = ".", ["٬"] = ",", -- Hazaragi ["ٹ"] = "ṭ", ["ټ"] = "ṭ", ["ڈ"] = "ḍ", ["ډ"] = "ḍ", -- Indo-Persian ["ھ"] = "h", ["ے"] = "e", } function export.tr(text, lang, sc) if type(text) == "table" then local function f(x) return (x ~= "") and x or nil end text, lang, sc, omit_i3raab, force_translit = f(text.args[1]), f(text.args[2]), f(text.args[3]), f(text.args[4]), f(text.args[5]) end for _, sub in ipairs(utils.get_before_diacritic_subs()) do text = gsub(text, sub[1], sub[2]) end local has_semivowels = mw.ustring.find(text, "[" .. SEMIVOWELS .. "]") local text_with_alif_treated = gsub(text, "([" .. CONSONANTS_SEMIVOWELS .. "])" .. "ا", "%1" .. A .. "ا") local would_have_diacritics_with_alif = utils.has_diacritics(text_with_alif_treated) local should_transliterate = utils.has_diacritics(text) or force_translit or (not has_semivowels and would_have_diacritics_with_alif) if not should_transliterate then require("Module:debug").track("fa-translit/lacking diacritics") return nil end text = utils.mark_word_boundaries(text) text = gsub(text, HIGH_HAMZA, "#" .. HIGH_HAMZA .. "#") text = gsub(text, "#" .. "و" .. "#", "#u#") text = gsub(text, "#" .. "و" .. SK .. "آ", "#w-" .. "آ" ) text = utils.process_tashdid(text) text = gsub(text, "([" .. CONSONANTS_SEMIVOWELS .. "])" .. A .. "ا", "%1ā") if not has_semivowels then text = gsub(text, "([" .. CONSONANTS_SEMIVOWELS .. "])" .. "ا", "%1ā") else if not utils.has_diacritics(text) or force_translit then text = gsub(text, "([" .. CONSONANTS_SEMIVOWELS .. "])" .. "ا", "%1ā") end end text = gsub(text, "([" .. CONSONANTS_SEMIVOWELS .. "])" .. A .. "ا", "%1ā") text = gsub(text, "([" .. CONSONANTS_SEMIVOWELS .. "])" .. "ا", "%1ā") text = gsub(text, SK .. "آ", "-ā") text = gsub(text, "([" .. CONSONANTS_SEMIVOWELS .. "])" .. "آ", "%1'ā") text = gsub(text, "ا" .. "ی", "ē") text = gsub(text, "ا" .. "و", "ō") text = gsub(text, "ا" .. I .. "ی", "ī") text = gsub(text, "ا" .. U .. "و", "ū") text = gsub(text, SH .. "ا", SH .. "ā") text = gsub(text, "##ی" .. "ی", "##yē") text = gsub(text, "##و" .. "ی", "##wē") text = gsub(text, "ی" .. "ā", "yā") text = gsub(text, "و" .. "ā", "wā") text = gsub(text, "و" .. "([" .. A .. I .. U .. SK .. "])", "w%1") text = gsub(text, "ی" .. "([" .. A .. I .. U .. SK .. "])", "y%1") text = gsub(text, "ی" .. "([" .. SEMIVOWELS .. "])([" .. SEMIVOWELS .. "])", "ē%1%2") text = gsub(text, "و" .. "([" .. SEMIVOWELS .. "])([" .. SEMIVOWELS .. "])", "ō%1%2") text = gsub(text, "([" .. A .. I .. U .. SK .. "])" .. "ی" .. "([" .. SEMIVOWELS .. "])", "%1y%2") text = gsub(text, "([" .. A .. I .. U .. SK .. "])" .. "و" .. "([" .. SEMIVOWELS .. "])", "%1w%2") text = gsub(text, "([" .. CONSONANTS .. "])" .. "ی" .. "([" .. SEMIVOWELS .. "])", "%1y%2") text = gsub(text, "([" .. CONSONANTS .. "])" .. "و" .. "([" .. SEMIVOWELS .. "])", "%1w%2") text = gsub(text, U .. "و", "ū") text = gsub(text, "و" .. "([" .. A .. I .. U .. SK .. "])", "w%1") text = gsub(text, "([" .. VOWELS .. A .. I .. U .. SK .. SEMIVOWELS .. "آ])" .. "و", "%1w") text = gsub(text, I .. "ی", "ī") text = gsub(text, "ی" .. "([" .. A .. I .. U .. SK .. "])", "y%1") text = gsub(text, "([" .. VOWELS .. A .. I .. U .. SK .. SEMIVOWELS .. "آ])" .. "ی", "%1y") text = gsub(text, "ا" .. "([" .. A .. I .. U .. "])", "%1") text = gsub(text, "ē" .. I .. "#", "ē-yi#") text = gsub(text, I .. "y" .. I .. "#", "ī-yi#") text = gsub(text, "([^" .. CONSONANTS .. SK .. "])" .. "y" .. I .. "#", "%1-yi#") text = gsub(text, "([" .. CONSONANTS_SEMIVOWELS .. "])" .. I .. "#", "%1-i#") text = gsub(text, '("\'")' .. "##" .. I .. "#", "%1-i#") text = gsub(text, "%-i" .. "##" .. "(" .. SPACE_LIKE_CLASS .. ")" .. "##" .. "([" .. SUN_LETTERS .. "]" .. SK .. "#%-#" .. ")", "i%1%2") text = gsub(text, "%-i" .. "#%-#" .. "([" .. SUN_LETTERS .. "]" .. "#%-#" .. ")", "i-%1") text = gsub(text, "([" .. A .. I .. U .. "])" .. "ه" .. "#" .. ZWNJ, "%1-") text = gsub(text, "([" .. A .. I .. U .. "])" .. "ه" .. "#", "%1#") text = gsub(text, "#" .. "ع" , "#") text = utils.unmark_word_boundaries(text) text = string.gsub(text, LRM, "") text = string.gsub(text, RLM, "") text = mw.ustring.gsub(text, ".", mapping) text = utils.post_translit_cleanup(text) return text end return export c8jejktlsbkhoi4jequtucb2uyofxds মডিউল:User:Saam-andar/fa-cls-translit/testcases 828 168670 510222 2026-06-07T12:46:06Z RedminBot 9553 [[en:Module:User:Saam-andar/fa-cls-translit/testcases]] থেকে আনা হলো 510222 Scribunto text/plain -- Refresh page to run tests. local tests = require('Module:UnitTests') local fa_translit = require('Module:User:Saam-andar/fa-cls-translit') local full_link = require('Module:links').full_link local fa = require('Module:languages').getByCode('fa') local rlm = require("Module:string/char")(0x200F) -- right-to-left mark local function link(word) return full_link{ term = word, lang = fa, tr = "-" } end --TO DO function tests:do_test_translit(arab, roman) self:equals(link(arab), fa_translit.tr(arab, 'fa', 'Persian'), roman) end function tests:test_translit_persian() local examples = { { 'سَرْاَنْجَام' .. rlm, "sar-anjām"}, { 'سَرْآغَاز', "sar-āġāz"}, { 'کُروز', "kurōz" }, { 'دَهْ', "dah"}, --always "h" near a vowel { 'دَه', "da"}, --always a when theres no vowel { 'سُؤَال', "su'āl" }, { 'کُرُوز', "kurūz" }, -- this word is intentionally incorrect { 'وَاوْ', "wāw" }, {'نَوْروز', "nawrōz"}, { 'قَهْوَه‌اِی', "qahwa-ī" }, -- case for ه‌َای as a-'ī can be changed to yī { 'قَهْوَه‌یِی', "qahwa-yī" }, -- case for ه‌یِی as a-'ī {'خْوَانْدَن', "xwāndan"}, -- case for خوَا as xwā {'خْویش', "xwēš"}, {'خْوَد', "xwad"}, -- case for خو as xo (Iranian Persian) and xwad (Classical Persian) { 'چَامَه‌سَرَایِی', "čāma-sarāyī" }, { 'طَنِین', "tanīn" }, { 'لِهٰذَا', "lihāzā" }, -- can be lehāzā if majhul diacritics are shown { 'قَهْرًا', "qahran" }, { 'عَصاً', "asan" }, --either placement works { 'خَانَه', "xāna" }, { 'کورِیَایِ شُمَالِی', "kōriyā-yi šumālī" }, { 'ضَمَّه', "zamma" }, { 'ضَمِّهْ', "zammih" }, -- force include final -h with diacritics { 'کِه', "ki"}, { 'کِهْ', "kih" }, -- another example of forcing the h { 'اَرْمَنِسْتَان', "armanistān" }, { 'بَاکُو', "bākū" }, { 'کَسی', "kasē"}, --word final -ē {"بَرَادَرِ بُزُرْگ", "barādar-i buzurg"}, -- izafa/ezafe marked with a dash - {'قُرُونِ وُسْطیٰ', "qurūn-i wustā" }, -- a dagger alif case {'دَر-آمَد', "dar-āmad" }, -- alif madda test { 'بَازِیِ شَطْرَنْج', "bāzī-yi šatranj" }, { 'ایرَانِیَان', "ērāniyān"}, { 'سُؤَال', "su'āl"}, --if majhul diacritics are used then so'āl { 'صُبَاح', "subāh" }, { 'صُبْح', "subh"}, { 'صُبْه', "subh"}, --purposefully mispelt { "دُروغ گویْ", "durōġ gōy"}, --have semivowels become consonts with jazm { 'او', "ō" }, -- transliteration of wa, beginning of sentence { 'وَ', "wa" }, --transliteration of wa, elsewhere (requires two spaces on both sides) { ' و ', " u " }, { 'بَه نَامِ خُدَا', "ba nām-i xudā"}, { 'جَوَانِی', "jawānī"}, { 'شَاهْنَامَه', "šāhnāma"}, { 'زِنْدَگِی', "zindagī"}, { 'زِنْدَه‌گِی', "zinda-gī"}, { 'میوَهٔ جَاپَانِی', "mēwa-yi jāpānī" }, { 'نُوید', "nuwēd"}, -- nawīd/navid in modern Persian { 'دُخْتَرَْبَچَّه',"duxtar-bačča"}, { 'کِیَه', "kiya" }, { 'کُرُوَاسِیَا', "kuruwāsiyā" }, --moderate vowel test { 'مِیَایِین', "miyāyīn"}, -- more complex vowel test { 'مْیَایین', "myāyēn"}, -- more complex vowel test { 'طِلَّا', "tillā" }, { 'لیکِن', "lēkin" }, { 'بَچَّهٔ لَطِیفَه کَلَان اَسْت', "bačča-yi latīfa kalān ast" }, { 'مَعْرُوف و مَجْهُول', "ma'rūf u majhūl"}, { 'مَعْرُوف وَ مَجْهُول', "ma'rūf wa majhūl"}, { 'اَرمنستان', nil }, { 'باکو', nil }, { 'تصویر', nil }, { 'کسی', nil }, --word final -ē {"برادر بزرگ", nil }, -- izafa/ezafe marked with a dash - {'قرون وسطی', nil }, -- a dagger alif {'وَٱللّٰه', "wal-lāh"}, --alef_wasla -- uncommon characters {'کَسے', 'kasē'}, -- treated like normal ye {'کَٹَه', 'kaṭa'},--hazaragi retroflex's {'کَټَه', 'kaṭa'}, {'کَڈ', 'kaḍ'}, {'کَډ', 'kaḍ'}, -- Arabic al- {'مَلَاقَة', 'malāqa(t)'}, {'آیَةُ‌اللّٰه', 'āyatu-l-lāh'}, {'دَایِرَةُالمَعَارِف', "dāyiratu-l-ma'ārif"}, {'دَایِرَةُ المَعَارِف', "dāyiratu l-ma'ārif"}, {'فِالْحَال', 'fi-l-hāl'}, {'فِالحال', 'fi-l-hāl'}, {'بویِ تُو', 'bō-yi tū'}, {'بِسْمِ اللّٰهِ الْرَّحْمٰنِ الْرَّحِیم', 'bismi l-lāhi r-rahmāni r-rahīm'}, {'اِیَالَاتِ مُتَّحِدَه', 'iyālāt-i muttahida'}, {'دَارُ الخَلَافَه', 'dāru l-xalāfa'}, {'دَارُالخَلَافَه', 'dāru-l-xalāfa'}, {'اَبو الهَوْد', 'abu l-hawd'}, {'اَبوالهَوْد', 'abu-l-hawd'}, {'الیَوم', nil}, {'اَلیَوم', 'al-yawm'}, {'اَلْیَوم', 'alyawm'}, {'النَّظِیر', nil}, {'اَلنَّظِیر', 'a-n-nazīr'}, {'اَلْنَّظِیر', 'alnnazīr'}, {'یی', 'yē'}, {'ویژَه', 'wēža'}, {'وِیژَه', "wīža"}, {'اوی', 'ōy'}, {'پَایِیتَخْت', 'pāyītaxt'}, {'مَویِز', 'mawyiz'}, {'اورْمَزْد', 'ōrmazd'}, {'اَیُّوب', 'ayyūb'}, {'حَیّ', 'hayy'}, {'مَدْعُوّ', "mad'uww"}, {'فِلِزّ', "filizz"}, {'قَوی', "qawē"}, {'چَایِی', "čāyī"}, {'بَا', "bā"}, {'با', "bā"}, {'یَابَان', "yābān"}, {'یابان', nil}, {'زورا', nil}, {'زَورَا', "zawrā"}, {'بارْاِلٰها', "bār-ilāhā"} } self:iterate(examples, "do_test_translit") end return tests 1zlipdkb46z6mpyxfkl6n6bh6nzprz7 মডিউল:User:Santi2222/Ethi-translit 828 168671 510223 2026-06-07T12:46:07Z RedminBot 9553 [[en:Module:User:Santi2222/Ethi-translit]] থেকে আনা হলো 510223 Scribunto text/plain local export = {} local m_str_utils = require("Module:string utilities") local gsub = m_str_utils.gsub local GEM = m_str_utils.char(0x135F) local tt = { ["ሀ"]="hä", ["ሁ"]="hu", ["ሂ"]="hi", ["ሃ"]="ha", ["ሄ"]="he", ["ህ"]="hə", ["ሆ"]="ho", ["ለ"]="lä", ["ሉ"]="lu", ["ሊ"]="li", ["ላ"]="la", ["ሌ"]="le", ["ል"]="lə", ["ሎ"]="lo", ["ሏ"]="lʷa", ["ሐ"]="ḥä", ["ሑ"]="ḥu", ["ሒ"]="ḥi", ["ሓ"]="ḥa", ["ሔ"]="ḥe", ["ሕ"]="ḥə", ["ሖ"]="ḥo", ["ሗ"]="ḥʷa", ["መ"]="mä", ["ሙ"]="mu", ["ሚ"]="mi", ["ማ"]="ma", ["ሜ"]="me", ["ም"]="mə", ["ሞ"]="mo", ["ሟ"]="mʷa", ["ፙ"]="mʲä", ["ሠ"]="śä", ["ሡ"]="śu", ["ሢ"]="śi", ["ሣ"]="śa", ["ሤ"]="śe", ["ሥ"]="śə", ["ሦ"]="śo", ["ሧ"]="śʷa", ["ረ"]="rä", ["ሩ"]="ru", ["ሪ"]="ri", ["ራ"]="ra", ["ሬ"]="re", ["ር"]="rə", ["ሮ"]="ro", ["ሯ"]="rʷa", ["ፘ"]="rʲä", ["ሰ"]="sä", ["ሱ"]="su", ["ሲ"]="si", ["ሳ"]="sa", ["ሴ"]="se", ["ስ"]="sə", ["ሶ"]="so", ["ሷ"]="sʷa", ["ሸ"]="šä", ["ሹ"]="šu", ["ሺ"]="ši", ["ሻ"]="ša", ["ሼ"]="še", ["ሽ"]="šə", ["ሾ"]="šo", ["ሿ"]="šʷa", ["ቀ"]="ḳä", ["ቁ"]="ḳu", ["ቂ"]="ḳi", ["ቃ"]="ḳa", ["ቄ"]="ḳe", ["ቅ"]="ḳə", ["ቆ"]="ḳo", ["ቈ"]="ḳʷä", ["ቊ"]="ḳʷi", ["ቋ"]="ḳʷa", ["ቌ"]="ḳʷe", ["ቍ"]="ḳʷə", ["ቐ"]="x̣ä", ["ቑ"]="x̣u", ["ቒ"]="x̣i", ["ቓ"]="x̣a", ["ቔ"]="x̣e", ["ቕ"]="x̣ə", ["ቖ"]="x̣o", ["ቘ"]="x̣ʷä", ["ቚ"]="x̣ʷi", ["ቛ"]="x̣ʷa", ["ቜ"]="x̣ʷe", ["ቝ"]="x̣ʷə", ["በ"]="bä", ["ቡ"]="bu", ["ቢ"]="bi", ["ባ"]="ba", ["ቤ"]="be", ["ብ"]="bə", ["ቦ"]="bo", ["ቧ"]="bʷa", ["ቨ"]="vä", ["ቩ"]="vu", ["ቪ"]="vi", ["ቫ"]="va", ["ቬ"]="ve", ["ቭ"]="və", ["ቮ"]="vo", ["ቯ"]="vʷa", ["ተ"]="tä", ["ቱ"]="tu", ["ቲ"]="ti", ["ታ"]="ta", ["ቴ"]="te", ["ት"]="tə", ["ቶ"]="to", ["ቷ"]="tʷa", ["ቸ"]="čä", ["ቹ"]="ču", ["ቺ"]="či", ["ቻ"]="ča", ["ቼ"]="če", ["ች"]="čə", ["ቾ"]="čo", ["ቿ"]="čʷa", ["ኀ"]="ḫä", ["ኁ"]="ḫu", ["ኂ"]="ḫi", ["ኃ"]="ḫa", ["ኄ"]="ḫe", ["ኅ"]="ḫə", ["ኆ"]="ḫo", ["ኈ"]="ḫʷä", ["ኊ"]="ḫʷi", ["ኋ"]="ḫʷa", ["ኌ"]="ḫʷe", ["ኍ"]="ḫʷə", ["ነ"]="nä", ["ኑ"]="nu", ["ኒ"]="ni", ["ና"]="na", ["ኔ"]="ne", ["ን"]="nə", ["ኖ"]="no", ["ኗ"]="nʷa", ["ኘ"]="ñä", ["ኙ"]="ñu", ["ኚ"]="ñi", ["ኛ"]="ña", ["ኜ"]="ñe", ["ኝ"]="ñə", ["ኞ"]="ño", ["ኟ"]="ñʷa", ["አ"]="ʾä", ["ኡ"]="ʾu", ["ኢ"]="ʾi", ["ኣ"]="ʾa", ["ኤ"]="ʾe", ["እ"]="ʾə", ["ኦ"]="ʾo", ["ኧ"]="ʾʷa", ["ከ"]="kä", ["ኩ"]="ku", ["ኪ"]="ki", ["ካ"]="ka", ["ኬ"]="ke", ["ክ"]="kə", ["ኮ"]="ko", ["ኰ"]="kʷä", ["ኲ"]="kʷi", ["ኳ"]="kʷa", ["ኴ"]="kʷe", ["ኵ"]="kʷə", ["ኸ"]="xä", ["ኹ"]="xu", ["ኺ"]="xi", ["ኻ"]="xa", ["ኼ"]="xe", ["ኽ"]="xə", ["ኾ"]="xo", ["ዅ"] = "xʷə", ["ዀ"] = "xʷä", ["ዂ"] = "xʷi", ["ዃ"]= "xʷa", ["ዄ"]= "xʷe", ["ወ"]="wä", ["ዉ"]="wu", ["ዊ"]="wi", ["ዋ"]="wa", ["ዌ"]="we", ["ው"]="wə", ["ዎ"]="wo", ["ዐ"]="ʿä", ["ዑ"]="ʿu", ["ዒ"]="ʿi", ["ዓ"]="ʿa", ["ዔ"]="ʿe", ["ዕ"]="ʿə", ["ዖ"]="ʿo", ["ዘ"]="zä", ["ዙ"]="zu", ["ዚ"]="zi", ["ዛ"]="za", ["ዜ"]="ze", ["ዝ"]="zə", ["ዞ"]="zo", ["ዟ"]="zʷa", ["ዠ"]="žä", ["ዡ"]="žu", ["ዢ"]="ži", ["ዣ"]="ža", ["ዤ"]="že", ["ዥ"]="žə", ["ዦ"]="žo", ["ዧ"]="žʷa", ["የ"]="yä", ["ዩ"]="yu", ["ዪ"]="yi", ["ያ"]="ya", ["ዬ"]="ye", ["ይ"]="yə", ["ዮ"]="yo", ["ደ"]="dä", ["ዱ"]="du", ["ዲ"]="di", ["ዳ"]="da", ["ዴ"]="de", ["ድ"]="də", ["ዶ"]="do", ["ዷ"]="dʷa", ["ጀ"]="ǧä", ["ጁ"]="ǧu", ["ጂ"]="ǧi", ["ጃ"]="ǧa", ["ጄ"]="ǧe", ["ጅ"]="ǧə", ["ጆ"]="ǧo", ["ጇ"]="ǧʷa", ["ገ"]="gä", ["ጉ"]="gu", ["ጊ"]="gi", ["ጋ"]="ga", ["ጌ"]="ge", ["ግ"]="gə", ["ጎ"]="go", ["ጐ"]="gʷä", ["ጒ"]="gʷi", ["ጓ"]="gʷa", ["ጔ"]="gʷe", ["ጕ"]="gʷə", ["ጘ"]="ŋä", ["ጙ"]="ŋu", ["ጚ"]="ŋi", ["ጛ"]="ŋa", ["ጜ"]="ŋe", ["ጝ"]="ŋə", ["ጞ"]="ŋo", ["ⶓ"]="ŋʷä", ["ⶔ"]="ŋʷi", ["ጟ"]="ŋʷa", ["ⶕ"]="ŋʷe", ["ⶖ"]="ŋʷə", ["ጠ"]="ṭä", ["ጡ"]="ṭu", ["ጢ"]="ṭi", ["ጣ"]="ṭa", ["ጤ"]="ṭe", ["ጥ"]="ṭə", ["ጦ"]="ṭo", ["ጧ"]="ṭʷa", ["ጨ"]="č̣ä", ["ጩ"]="č̣u", ["ጪ"]="č̣i", ["ጫ"]="č̣a", ["ጬ"]="č̣e", ["ጭ"]="č̣ə", ["ጮ"]="č̣o", ["ጯ"]="č̣ʷa", ["ጰ"]="p̣ä", ["ጱ"]="p̣u", ["ጲ"]="p̣i", ["ጳ"]="p̣a", ["ጴ"]="p̣e", ["ጵ"]="p̣ə", ["ጶ"]="p̣o", ["ጷ"]="p̣ʷa", ["ጸ"]="ṣä", ["ጹ"]="ṣu", ["ጺ"]="ṣi", ["ጻ"]="ṣa", ["ጼ"]="ṣe", ["ጽ"]="ṣə", ["ጾ"]="ṣo", ["ጿ"]="ṣʷa", ["ፀ"]="ṣ́ä", ["ፁ"]="ṣ́u", ["ፂ"]="ṣ́i", ["ፃ"]="ṣ́a", ["ፄ"]="ṣ́e", ["ፅ"]="ṣ́ə", ["ፆ"]="ṣ́o", ["ፈ"]="fä", ["ፉ"]="fu", ["ፊ"]="fi", ["ፋ"]="fa", ["ፌ"]="fe", ["ፍ"]="fə", ["ፎ"]="fo", ["ፏ"]="fʷa", ["ፚ"]="fʲä", ["ፐ"]="pä", ["ፑ"]="pu", ["ፒ"]="pi", ["ፓ"]="pa", ["ፔ"]="pe", ["ፕ"]="pə", ["ፖ"]="po", ["ፗ"]="pʷa", --punctuation ["፠"]="§", ["፡"]=" ", ["።"]=".", ["፣"]=",", ["፤"]=";", ["፥"]=":", ["፦"]=":-", ["፧"]="?", ["፨"]="¶", } local number = { ['፩']=1, ['፪']=2, ['፫']=3, ['፬']=4, ['፭']=5, ['፮']=6, ['፯']=7, ['፰']=8, ['፱']=9, ['፲']=10, ['፳']=20, ['፴']=30, ['፵']=40, ['፶']=50, ['፷']=60, ['፸']=70, ['፹']=80, ['፺']=90 } function export.number(geez) local val = 0 if mw.ustring.find(geez, '^[፻፼]') then geez = '፩' .. geez -- prepend 1 end geez = gsub(geez, '፼፻', '፼፩፻') -- following 3 lines are a hack, so that both ፻ and ፼ can be interpreted by the code as "multiply value by 100" geez = gsub(geez, '፼([^፻፼]*)$', '፼፻%1') geez = gsub(geez, '፼([^፻፼]*፼)', '፼፻%1') -- same line again (accounting for overlapping patterns) geez = gsub(geez, '፼([^፻፼]*፼)', '፼፻%1') local func = mw.text.gsplit(geez, '') while true do local digit = func() if (not digit) then break end if mw.ustring.find(digit, '[፩-፺]') then val = val + number[digit] elseif digit == '፻' or digit == '፼' then val = val * 100 end end return val end function export.tr(text, lang, sc) --Remove gemination marks text = mw.ustring.gsub(text, "(.)" .. GEM, "Q%1W") --Basic transliteration text = (mw.ustring.gsub(text, ".", tt)) --Geminate consonants (keep ə before geminates and after non-final geminates, internally we'll use Ə for these ə-s) text = mw.ustring.gsub(text, "Qx̣", "Vx̣x̣") text = mw.ustring.gsub(text, "Qč̣", "Vč̣č̣") text = mw.ustring.gsub(text, "Qp̣", "Vp̣p̣") text = mw.ustring.gsub(text, "Qṣ́", "Vṣ́ṣ́") text = mw.ustring.gsub(text, "Q(.)", "V%1%1") text = mw.ustring.gsub(text, "əW?V", "Ə") text = mw.ustring.gsub(text, "əW([hlḥmśrsšḳxbvtčḫnñʾkxwʿzžydǧgṭṣfp])", "Ə%1") -- remove ə that is not in the first syllable -- [bdfghklmnprstvwxyzñčŋśšžǧʾʿḥḫḳṣṭ][ʰʲʷ̣́]* -- matches one transliterated consonant local prev_end_pos local prev_schwa_removed = false local text_len = mw.ustring.len(text) text = mw.ustring.gsub( text, "()(([bdfghklmnprstvwxyzñčŋśšžǧʾʿḥḫḳṣṭ][ʲʷ̣́]*)ə)()", function(start_pos, syllable, consonant, end_pos) local ret if (start_pos == 1 or mw.ustring.find(text, "^[%s%p]", start_pos - 1)) or (prev_end_pos == start_pos and prev_schwa_removed and not (end_pos == text_len + 1 or mw.ustring.find(text, "^[%s%p]", end_pos))) then ret = syllable else ret = consonant end prev_schwa_removed = ret == consonant prev_end_pos = end_pos return ret end) text = mw.ustring.gsub(text, "[፩-፼]+", export.number) text = mw.ustring.gsub(text, "-ʾ", "-") text = mw.ustring.gsub(text, "Ə", "ə") text = mw.ustring.gsub(text, "[VW]", "") return text end return export ngxxvkw9nj7wnx600lnoym9hp9hmh6b মডিউল:User:Santi2222/Ethi-translit/testcases 828 168672 510224 2026-06-07T12:46:07Z RedminBot 9553 [[en:Module:User:Santi2222/Ethi-translit/testcases]] থেকে আনা হলো 510224 Scribunto text/plain local tests = require("Module:UnitTests") local translitgen = require("Module:User:Santi2222/Ethi-translit").tr local function tag(text) return '<span class="Ethi">' .. text .. '</span>' end function tests:check(example, expected) self:equals( tag(example), translitgen(example), expected, { show_difference = false } ) end function tests:test_translit() local examples = { {"ፈጸ፟መ", "fäṣṣämä"}, {"ምፍጻ፟ም", "məfəṣṣam"}, {"ምህራም", "məhram"}, {"ለም፟ን፟ተ፟ማመ፟ንበ፟ት", "lämmənnəttämammänəbbät"}, {"መት፟", "mätt"}, {"ይበል፟ዕ", "yəbälləʿ"} } tests:iterate(examples, "check") end return tests immsyt7xqj9vh98n2szgvjwodfd1fm8 মডিউল:User:Santi2222/amw-translit 828 168673 510225 2026-06-07T12:46:08Z RedminBot 9553 [[en:Module:User:Santi2222/amw-translit]] থেকে আনা হলো 510225 Scribunto text/plain local u = require("Module:string/char") local m_string_utilities = require("Module:string utilities") local gsub = mw.ustring.gsub local rfind = m_string_utilities.find local export = {} local lrm = u(0x200e) -- left-to-right mark local rlm = u(0x200f) -- right-to-left mark local RUKKAKHA = u(0x0742) local DOTS3 = u(0x0746) local RWAHA = u(0x73F) local PTHAHA = u(0x0730) local RBASA = u(0x0736) local HBASA = u(0x073A) local ZQAPHA = u(0x0733) local ESASA = u(0x073D) -- basic mapping local mapping = { ["ܟ"] = "č", ["ܠ"] = "l", ["ܡ"] = "m", ["ܢ"] = "n", ["ܣ"] = "s", ["ܥ"] = "ʕ", ["ܦ"] = "p", ["ܨ"] = "ṣ", ["ܩ"] = "k", ["ܪ"] = "r", ["ܫ"] = "š", ["ܬ"] = "C", ["ܒ"] = "b", ["ܓ"] = "ġ", ["ܔ"] = "j", ["ܕ"] = "d", ["ܗ"] = "h", ["ܙ"] = "z", ["ܚ"] = "ḥ", ["ܛ"] = "ṭ", ["ܜ"] = "ẓ", ["ܐ"] = "A", ["ܘ"] = "W", ["ܝ"] = "Y", } -- declared as local above. FIXME local function is_valid(text) return true end function export.tr(text, lang, sc) text = gsub(text, " | ", "# | #") text = "##" .. gsub(text, " ", "# #") .. "##" -- convert all characters text = string.gsub(text, lrm, "") text = string.gsub(text, rlm, "") text = gsub(text, '.', mapping) --Letters with diacritics text = gsub(text, "č" .. RUKKAKHA, "ḵ") text = gsub(text, "p" .. RUKKAKHA, "f") text = gsub(text, "C" .. RUKKAKHA, "ṯ") text = gsub(text, "C" .. RWAHA, "t") text = gsub(text, "C", "č") text = gsub(text, "d" .. RUKKAKHA, "ḏ") text = gsub(text, "d" .. RWAHA, "d") text = gsub(text, "d", "t") text = gsub(text, "z" .. DOTS3, "ẕ") --W/Y consonants text = gsub(text, "W([" .. ZQAPHA .. PTHAHA .. RBASA .. HBASA .. "])", "w%1") text = gsub(text, "Y([A" .. ZQAPHA .. PTHAHA .. RBASA .. HBASA .. "])", "y%1") --Initial vowels text = gsub(text, "#A" .. PTHAHA, "#a") text = gsub(text, "#A" .. RBASA .. "Y", "#ē") text = gsub(text, "#A" .. RBASA, "#e") text = gsub(text, "#A" .. HBASA .. "Y", "#ī") text = gsub(text, "#A" .. HBASA, "#i") text = gsub(text, "#A" .. ZQAPHA .. "W", "#о̄") text = gsub(text, "#A" .. ZQAPHA, "#o") text = gsub(text, "#A" .. ESASA .. "W", "#ū") text = gsub(text, "#A" .. ESASA, "#u") --Other long vowels text = gsub(text, "A#", "a#") text = gsub(text, "A", "ā") text = gsub(text, PTHAHA .. "([aā])", "%1") text = gsub(text, ZQAPHA .. "W", "о̄") text = gsub(text, ESASA .. "W", "ū") text = gsub(text, RBASA .. "Y", "ē") text = gsub(text, HBASA .. "Y", "ī") --Other short vowels text = gsub(text, PTHAHA, "a") text = gsub(text, ZQAPHA, "o") text = gsub(text, ESASA, "u") text = gsub(text, RBASA, "e") text = gsub(text, HBASA, "i") if not force_translit and not is_valid(text) then --return nil end text = gsub(text, "#", "") text = mw.ustring.toNFC(text) return text end return export inb1gza69td7nnao50wbxuulzfouhog মডিউল:User:Santi2222/amw-translit/testcases 828 168674 510226 2026-06-07T12:46:08Z RedminBot 9553 [[en:Module:User:Santi2222/amw-translit/testcases]] থেকে আনা হলো 510226 Scribunto text/plain -- Unit tests for [[Module:User:Santi2222/bsk-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local bal_translit = require('Module:User:Santi2222/bal-translit') local full_link = require('Module:links').full_link local bsk = require('Module:languages').getByCode('amw') local function link(word) return full_link{ term = word, lang = bsk, tr = "-" } end function tests:do_test_translit(Baluchi, roman) self:equals(link(Baluchi), bal_translit.tr(Baluchi, 'amw', 'Syrc'), roman) end function tests:test_translit_baluchi() local examples = { { "ܡܰܥܠܽܘܠܰܐ", "maʕlūla"}, {"ܐܶܢܔܺܝܠܰܐ", "ʾenjīla"}, {"ܬ݂ܰܪܬ̤", "ṯarč"}, {"ܐܶܬ݂ܶܪ", "ʾeṯər"}, {"ܛܶܫܥܰܐ", "ṭešʕa"}, --Geminate {"ܐܰܚ݇ܐ", "aḤḤa"}, {"ܓܽܦܰ݇ܥܳܘܕ", "FIX"} } self:iterate(examples, "do_test_translit") end return tests cakr898h8l7zyhdy4n2viwkc2v6uhbw মডিউল:User:Santi2222/bal-translit 828 168675 510227 2026-06-07T12:46:08Z RedminBot 9553 [[en:Module:User:Santi2222/bal-translit]] থেকে আনা হলো 510227 Scribunto text/plain return require [[Module:User:Santi2222/amw-translit]] 3vf24mfz1a8kknwc7iiwjusdtiplkos মডিউল:User:Santi2222/bal-translit/testcases 828 168676 510228 2026-06-07T12:46:09Z RedminBot 9553 [[en:Module:User:Santi2222/bal-translit/testcases]] থেকে আনা হলো 510228 Scribunto text/plain return require [[Module:User:Santi2222/amw-translit/testcases]] 2wi1ekh2exwee2v92pt2d719ohekmzc মডিউল:User:Santi2222/bsk-translit 828 168677 510229 2026-06-07T12:46:09Z RedminBot 9553 [[en:Module:User:Santi2222/bsk-translit]] থেকে আনা হলো 510229 Scribunto text/plain local U = require("Module:string/char") local m_string_utilities = require("Module:string utilities") local gsub = mw.ustring.gsub local rfind = m_string_utilities.find local export = {} local zabar = U(0x64E) local zer = U(0x650) local pesh = U(0x64F) local zwnj = U(0x200C) -- Is this even used in Burushaski? local tashdid = U(0x651) -- also called tashdid local jazm = U(0x652) local ghunna = U(0x658) local consonants = "تٹثجحڅدذڎرڑزسغفکنملگݣقعظطڞصضشژڈخچپب" local cons_lat = "mnṅptṭkqbdḍgcćċjʐsśṣhzġlyỵw" --internally we use ċ/ʐ instead of c̣/j̣ local vowels_lat = "aáeéiíoóuú" local diacritics = "َُِّْٰ" local ZZP = "َُِ" local lrm = U(0x200e) -- left-to-right mark local rlm = U(0x200f) -- right-to-left mark -- basic mapping local mapping = { ["ب"] = 'b', ["پ"] = 'p', ["ت"] = 't', ["ٹ"] = 'ṭ', ["ث"] = 's', ["ج"] = 'j', ["چ"] = 'ć', ["ح"] = 'h', ["ݼ"] = "ch", ["خ"] = 'qh', ["څ"] = "ċ", ["د"] = 'd', ["ڈ"] = 'ḍ', ["ذ"] = 'z', ["ڎ"] = "c", ["ر"] = 'r', ['ڑ'] = "ṛ", ["ز"] = 'z', ["ژ"] = 'ż', ["س"] = 's', ["ݽ"] = "ṣ", ["ش"] = 'ś', ["ص"] = 's', ["ض"] = 'z', ["ڞ"] = "ċh", ["ط"] = 't', ["ظ"] = 'z', ["غ"] = 'ġ', ["ف"] = 'f', ["ق"] = 'q', ["ک"] = 'k', ["ݣ"] = "ṅ", ["گ"] = 'g', ["ھ"] = "h", ["ل"] = 'l', ["م"] = 'm', ["ن"] = 'n', ["ں"] = "ṇ", ["ݷ"] = "ỵ", ["ئ"] = "y", --FIXME: is this correct? ["ع"] = "'", -- FIXME: do we need this? ["ا"] = "A", ["ہ"] = "H", ["و"] = "W", ["ݸ"] = "U", ["ݹ"] = "Ú", ["ی"] = "Y", ["ݵ"] = "I", ["ݶ"] = "Í", --unambiguous vowels ["ݳ"] = "a", ["ݺ"] = "e", ["آ"] = "áa", ["ے"] = "ée", ["ݴ"] = "aá", ["ݻ"] = "eé", -- diacritics [zabar] = "ă", [zer] = "ĭ", [pesh] = "ŭ", [jazm] = "@", -- also sukun - no vowel. we use a placeholder [zwnj] = "-", -- ZWNJ (zero-width non-joiner) -- kashida ["ـ"] = "-", -- kashida, no sound -- numerals ["۱"] = "1", ["۲"] = "2", ["۳"] = "3", ["۴"] = "4", ["۵"] = "5", ["۶"] = "6", ["۷"] = "7", ["۸"] = "8", ["۹"] = "9", ["۰"] = "0", -- punctuation (leave on separate lines) ["؟"] = "?", -- question mark ["۔"] = ".", -- period ["،"] = ",", -- comma ["؛"] = ";", -- semicolon ["«"] = '“', -- quotation mark ["»"] = '”', -- quotation mark ["٪"] = "%", -- percent ["؉"] = "‰", -- per mille ["٫"] = ".", -- decimals ["٬"] = ",", -- thousand } local punctuation = "%-:%(%)%[%]*&٫؛؟،ـ«\".\'!»٪؉۔" local ye = 'ی' local vao = "و" local aspirate = 'ھ' local aiu = "āīūآ" -- declared as local above local function is_valid(text) if rfind(text, "[AHWUÚYIÍ]") then return false end text = gsub(text, "([ptṭkqcćċ])h", "%1") if rfind(text, "["..cons_lat.."]["..cons_lat.."]") then return false end return true end function export.tr(text, lang, sc) if type(text) == "table" then local function f(x) return (x ~= "") and x or nil end text, lang, sc, omit_i3raab, force_translit = f(text.args[1]), f(text.args[2]), f(text.args[3]), f(text.args[4]), f(text.args[5]) end --define the "end" of a word text = gsub(text, " | ", "# | #") text = gsub(text, "\n" , "#".."\n" .. "#") text = gsub(text, "(["..punctuation.."])" , "#".."%1" .. "#") text = "##" .. gsub(text, " ", "# #") .. "##" text = gsub(text, zwnj, "#"..zwnj.."#") -- hastags now mark the beginning and end of a word text = gsub(text, 'لا', "ﻻ") -- Tashdeed. FIXME: is this used? text = gsub(text, '([' .. consonants .. '])' .. tashdid, "%1@%1") text = gsub(text, '([' .. consonants .. '])' .. '([' .. ZZP .. '])' .. tashdid, "%1@%1%2") --if it gets pushed after diacritics text = gsub(text, '([' .. ZZP .. '])' .. aspirate, aspirate.."%1") text = gsub(text, ye .. '([' .. ZZP .. ']?)' .. tashdid, "y@y%1") text = gsub(text, vao .. '([' .. ZZP .. ']?)' .. tashdid, "w@w%1") text = gsub(text, "ن" .. ghunna, "ṇ") -- convert all characters text = string.gsub(text, lrm, "") text = string.gsub(text, rlm, "") text = gsub(text, '.', mapping) -- vowel fixes, unambiguous vowels have been processed already local function process_vowels(word, init, final, med) for k, v in pairs(init) do word = gsub(word, "#" .. k, "#" .. v) end for k, v in pairs(final) do word = gsub(word, k .. "#", v .. "#") end for k, v in pairs(med) do word = gsub(word, k, v) end return word end --long, falling local init_f = {["AW"] = "óo", ["AŭW"] = "úu", ["AY"] = "ée", ["AĭY"] = "íi"} local final_f = {["A"] = "áa", ["ŭW"] = "úu", ["W"] = "óo", ["Y"] = "íi"} local med_f = {["ŭW"] = "úu", ["ĭY"] = "íi"} --we can't do A-> áa yet, Y -> ée, W -> óo text = process_vowels(text, init_f, final_f, med_f) --long, rising local init_r = {["AÚ"] = "oó", ["AŭÚ"] = "uú", ["AÍ"] = "eé", ["AĭÍ"] = "ií"} local final_r = {["ŭÚ"] = "uú", ["Ú"] = "oó", ["Í"] = "ií"} local med_r = {["ŭÚ"] = "uú", ["Ú"] = "oó", ["ĭÍ"] = "ií", ["Í"] = "eé"} text = process_vowels(text, init_r, final_r, med_r) --short local init_s = {["Aă"] = "a", ["AU"] = "o", ["Aŭ"] = "u", ["AI"] = "e", ["Aĭ"] = "i"} local final_s = {["h"] = "a", ["ŭU"] = "u", ["U"] = "o", ["E"] = "e", ["I"] = "i"} local med_s = {["ă"] = "a", ["U"] = "o", ["ŭ"] = "u", ["I"] = "e", ["ĭ"] = "i"} text = process_vowels(text, init_s, final_s, med_s) --remaining characters text = gsub(text, "H", "h") text = gsub(text, "A", "áa") text = gsub(text, "W@", "w@") text = gsub(text, "Y@", "y@") text = gsub(text, "W(["..vowels_lat.."])", "w%1") text = gsub(text, "W([YW])", "w%1") text = gsub(text, "Y(["..vowels_lat.."])", "y%1") text = gsub(text, "Y([YW])", "y%1") text = gsub(text, "W", "óo") text = gsub(text, "Y", "ée") -- get rid of hashtags text = gsub(text, "#", "") if not force_translit and not is_valid(text) then --return nil end --final conversions text = gsub(text, "ċ","c̣") text = gsub(text, "ʐ", "j̣") text = gsub(text, "@", "") text = mw.ustring.toNFC(text) return text end return export 1vyyx0j6jwi3os4yzcgr5f43beiq05u মডিউল:User:Santi2222/bsk-translit/testcases 828 168678 510230 2026-06-07T12:46:09Z RedminBot 9553 [[en:Module:User:Santi2222/bsk-translit/testcases]] থেকে আনা হলো 510230 Scribunto text/plain -- Unit tests for [[Module:User:Santi2222/bsk-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local bsk_translit = require('Module:User:Santi2222/bsk-translit') local full_link = require('Module:links').full_link local bsk = require('Module:languages').getByCode('bsk') local function link(word) return full_link{ term = word, lang = bsk, tr = "-" } end function tests:do_test_translit(Burushaski, roman) self:equals(link(Burushaski), bsk_translit.tr(Burushaski, 'bsk', 'ur-Arab'), roman) end function tests:test_translit_burushaski() local examples = { { "بݵسْکݺ", "beske"}, {"بُرݸنْدݸ", "burondo"}, {"غَتݵنْڅ", "ġatenc̣"}, {"اݸݽْڅِݣ", "oṣc̣iṅ"}, {"بَلݸگَن", "balogan"}, {"اِسُسُن", "isusun"}, {"غَݷْپݳ", "ġaỵpa"}, {"دݸݷْپݳ", "doỵpa"}, {"تَھلݸ", "thalo"}, {"دُرووَس", "duróowas"}, {"دُرݸوݺ دُرݸ گولْتِرچݵ", "durowe duro góoltirći"}, {"تُرْمݳ اَلْتݳ", "turma alta"}, {"تݵشݵ", "teśi"}, {"اݵسْقُلَس", "esqulas"}, {"بِڅُݽ", "bic̣uṣ"}, {"بَیݸ", "bayo"}, {"بَیُݸ", "bayu"}, {"رَرَپ مَناس", "rarap manáas"}, {"رُزݵ کُڎݺ تُسْپݸر", "ruzi kuce tuspor"}, {"اُلْݼِن", "ulchin"}, {"دُرو چݺ تَیَس", "duróo će tayas"}, {"یَرایݸ", "yaráayo"}, {"اُیَرَس", "uyaras"}, {"پُھلْغُوݷ", "phulġúuỵ"}, {"وون", "wóon"}, {"یین", "yéen"}, {"دݵن", "den"}, {"اݸق اݵتَس", "oq etas"}, {"چُݽ", "ćuṣ"}, {"اݸس", "os"}, {"گَلْگݵ", "galgi"}, {"تھݸݽ", "thoṣ"}, {"تُرْمَہَن", "turmahan"}, {"ـتَتَس", "-tatas"}, {"ہِیݽ مَہِیݽ", "híiṣ mahíiṣ"}, {"اݸوْرُٹَس", "owruṭas"}, {"کُھولْتݸ", "khúulto"}, {"ذاتِ خدا یَکُ ڎُم کھݸت بݺ اکھݵݽ رَحمتَن", ""} } self:iterate(examples, "do_test_translit") end return tests 8op6mwvbdh33x0anq6q2yd9n47sm4nm মডিউল:User:Sarri.greek/grk-translit-modern 828 168679 510231 2026-06-07T12:46:10Z RedminBot 9553 [[en:Module:User:Sarri.greek/grk-translit-modern]] থেকে আনা হলো 510231 Scribunto text/plain -- 2024.03.06. [[wikt:en:User:Sarri.greek]] -- tests at [[Module talk:User:Sarri.greek/grk-translit-modern]] -- This is version of [[Module:grc-translit]] -- See [[Module:el-translit]] --[=[ * grk-translit-classic = for Ancient Greek grc, Koine, grc-koi, learned Medieval & their dialects, Katharevousa el-kth -- script polytonic Greek * grk-translit-modern = for any Medieval Greek gkm, Modern Greek & their dialects, -- script monotonic or polytonic Greek (any script may be found in quotations) * Learned Medieval Greek is transliterated exactly as Ancient Greek script (rho with daseia/rough, hypogegrammeni) * Main Medieval Greek (vulgar) rho was written with or without daseia. Trasliterate like Modern Greek ISO843 (TypeB, slightly more phonemic than TypeA, i macron ī for eta, o macron ō for omega with corrections γ=gh, δ=dh, χ=kh as proposed for a mixed type C) Pronunciation as at [[Template:R:gkm:Grammar Cambrdige]] In modern, prosody marks are not needed, but are kept for possible examples of metrics in poetry. CORRECTIONS - PROLBEMS * add ligatures for quotations only? -- no, we can use param substitute at Template:quote HOW it is USED?? [[Template:xlit]] has: <onlyinclude>{{{{{|safesubst:}}}#invoke:languages/templates|getByCode|{{{1|und}}}|transliterate|{{{{{|safesubst:}}}#invoke:links|remove_links|{{{2}}}}}|{{{sc|}}}|{{{module|}}}}}</onlyinclude> ]=]-- local export = {} local m_data = require('Module:grc-utilities/data') -- Break Greek text into units of a single consonant or monophthong letter, or diphthong, with any diacritics local tokenize = require('Module:grc-utilities').tokenize --local ufind = mw.ustring.find -- --local ugsub = mw.ustring.gsub -- --local U = mw.ustring.char -- --local ulower = mw.ustring.lower -- --local uupper = mw.ustring.upper -- -- This means: ?? local UTF8char = '[%z\1-\127\194-\244][\128-\191]*' -- Diacritics from Module:grc-utilities/data --[=[ it says: local U = require("Module:string/char") ]=]-- local diacritics = m_data.named -- Greek local acute = diacritics.acute -- U(0x301) this is okseia ´ and the overall tonos local grave = diacritics.grave -- U(0x300) this is bareia ` local circumflex = diacritics.circum -- U(0x342) this is perispomeni ῀ -- Latin_circum = U(0x302) local diaeresis = diacritics.diaeresis -- U(0x308) this are the dialytics ¨ local smooth = diacritics.smooth -- U(0x313) this is psile ᾿ local rough = diacritics.rough -- U(0x314) this is daseia ῾ local macron = diacritics.macron -- U(0x304) this is macron ˉ , normally not needed, needed exceptionally in quotations -- spacing_macron = U(0xAF) -- modifier_macron = U(0x2C9) local breve = diacritics.breve -- U(0x306) this is brachy ˘ , normally not needed -- spacing_breve = U(0x2D8) local subscript = diacritics.subscript -- U(0x345) this is hypogegrammene --?? (adscript prosgegrammene is written out with i??) see below, a_subscript -- ALSO has -- coronis = U(0x343) -- undertie = U(0x35C) -- actually "combining double breve below" -- Latin local hat = diacritics.Latin_circum -- Latin_circum = U(0x302) local macron_diaeresis = macron .. diaeresis .. "?" .. hat -- ??what is this local a_subscript = '^[αΑ].*' .. subscript .. '$' local velar = 'κγχξ' local tt = { -- Vowels ["α"] = "a", ["ε"] = "e", ["η"] = "i" .. macron, -- the 'ī' with macron looks bad, like perispomeni / The classic ē reminds more of 'eta' ["ι"] = "i", ["ο"] = "o", ["υ"] = "u", ["ω"] = "o" .. macron, -- ō -- Consonants ["β"] = "v", -- instead of ancient = b ["γ"] = "gh", -- instead of g ["δ"] = "dh", -- instead of d ["ζ"] = "z", ["θ"] = "th", ["κ"] = "k", ["λ"] = "l", ["μ"] = "m", ["ν"] = "n", ["ξ"] = "ks", --?? instead of x ["π"] = "p", ["ρ"] = "r", ["σ"] = "s", ["ς"] = "s", ["τ"] = "t", ["φ"] = "f", -- instead of latinization ph ? ["χ"] = "kh", ["ψ"] = "ps", -- Archaic letters (AncGr) -- at modern, may be found in quotations and some, for numbering system ["ϝ"] = "Ϝ", -- do not transliterate to "w" -- this is always the capital Ϝ ["ϻ"] = "ϻ", -- do not transliterate to "ś" ["ϙ"] = "Ϙ", -- do not transliterate to "q" -- this is always the capital Ϙ ["ϡ"] = "ϡ", -- do not transliterate to "š" ["ͷ"] = "ͷ", -- do not transliterate to "v" number -- special characters, for quotations only -- Incorrect characters: see [[Wiktionary:About Ancient Greek#Miscellaneous]]. -- These are tracked by [[Module:script utilities]]. ["ϐ"] = "v", -- instead of 'b' ["ϑ"] = "th", ["ϰ"] = "k", ["ϱ"] = "r", ["ϲ"] = "s", ["ϕ"] = "f", -- instead of ph -- Diacritics -- unchanged: macron, diaeresis, grave, acute [breve] = '', -- brachy [smooth] = '', -- psile [rough] = '', -- daseia [circumflex] = hat, -- perispomene [subscript] = 'i', -- hypogegrammene } -- change name from export.tr to export.translit function export.translit(text, lang, sc) -- daseia -- ANCE if rough daseia: return h, in Koine a grey h, in MedGr onwards nothing if text == '῾' then return '' -- instead of h end --[[ Replace semicolon or Greek question mark with regular question mark, except after an ASCII alphanumeric character (to avoid converting semicolons in HTML entities). ]] text = mw.ustring.gsub(text, "([^A-Za-z0-9])[;" .. mw.ustring.char(0x37E) .. "]", "%1?") -- Handle the middle dot = semicolon. In AncGr is equivalent to semicolon or colon, but semicolon is probably more common. text = text:gsub("·", ";") local tokens = tokenize(text) --now read the tokens local output = {} for i, token in pairs(tokens) do -- Convert token to lowercase and substitute each character -- for its transliteration local translit = mw.ustring.lower(token):gsub(UTF8char, tt) local next_token = tokens[i + 1] -- the previous is tokens[i - 1] -- CONDITIONS for modern transliteration -- tests [[Module_talk:User:Sarri.greek/grk-translit-modern]] -- #mp = mu and pi μπ -- capitals are taken care of --[=[ this does not work. when i write gsub it has error. When i write sub it just does not work whattt must i use? there are: string.gsub string.sub mw.ustring.gsub mw.ustring.sub I want to say: If you find ^[μΜ][πΠ] at the beginning of a word, substitute them with b else... mb ]=]-- -- if token:find('^[μ][π]') then if token == "μ" and tokens[i + 1] == "π" then -- if mw.ustring.find(token, '^[μ]') then if mw.ustring.find(text, '^μ') then -- if token:find('^[μ][π]') then -- if mw.ustring.find(token, '^[μ][π]') then token = 'μ' tokens[i + 1] = "" translit = "b" else token = 'μ' tokens[i + 1] = "" translit = "mb" end end --if mw.ustring.find(text, '^[μ][π]') then -- translit = mw.ustring.sub(text, '[μΜ][πΠ]', "b") -- end --[=[noooooooooooooooooooooo if token == "μ" and tokens[i + 1] == "π" then text = string.sub(token, "(.?)([μ])([π])", -- capitals are ok "(.?)([μΜ])([πΠ])" function (before, mupi) --?? what example is before == "-" ???? if before == "" or before == " " or before == "-" then translit = before .. "b" else -- not at beginning translit = before .. "mb" end end) end -- close mu ]=]-- -- nu and ντ -- capitals are taken care of --todo -- gamma ?? Please, could you correct this, so that it works? if token == 'γ' or token == 'Γ' -- capitals are ok then -- γκ -- capitals are taken care of if token == "γ" and tokens[i + 1] == "κ" then -- γ before a velar = 'κγχξ' should be <n> BUT NOT at beginning of word --ANC-- if next_token and velar:find(next_token, 1, true) then -- arctic [[Γκάνα]] text = gsub(token, "(.?)([γ])([κ])", -- capitals are ok "(.?)([γΓ])([κΚ])" function (before, gammakappa) --?? what example is before == "-" ???? if before == "" or before == " " or before == "-" then translit = before .. "g" end end) -- γγ = ng NOT ngh -- [['γγίζω]] = [[γγίζω]] elseif (token == "γ" and tokens[i + 1] == "γ") then text = gsub(token, "(.?)([γ])([γ])", -- capitals are ok "(.?)([γΓ])([γΓ])" function (before, gammagamma) --?? what is before == "-" --assumed median? if before == "" or before == " " or before == "-" then translit = before .. "ng" end end) -- γχ nkh γξ = nks with normal translit of 2nd letter. These are always median [[άγχος]] [[ελέγξω]] elseif (token == "γ" and tokens[i + 1] == "[χξ]") -- capitals are ok "[χΧξΞ]" then translit = "n" end -- close elseifs end -- close gamma if token == 'ρ' and tokens[i - 1] == 'ρ' then --ANC-- -- ρ after ρ should be <rh> translit = 'r' elseif mw.ustring.find(token, a_subscript) then -- add macron to ᾳ --??should we keep this for examples of metrics? --ANC-- translit = mw.ustring.gsub(translit, '([aA])', '%1' .. macron) translit = 'a' end if token:find(rough) then if mw.ustring.find(token, '^[Ρρ]') then --ANC-- translit = translit .. 'h' translit = translit else -- vowel --ANC-- translit = 'h' .. translit translit = translit end end -- AncGr -- keep it just in case... -- Remove macron from a vowel that has a circumflex. if mw.ustring.find(translit, macron_diaeresis) then translit = translit:gsub(macron, '') end --[=[ CONDITIONS for classic ancient transliteration if token == 'γ' and next_token and velar:find(next_token, 1, true) then -- γ before a velar should be <n> translit = 'n' elseif token == 'ρ' and tokens[i - 1] == 'ρ' then -- ρ after ρ should be <rh> translit = 'rh' elseif ufind(token, a_subscript) then -- add macron to ᾳ translit = ugsub(translit, '([aA])', '%1' .. macron) end if token:find(rough) then if ufind(token, '^[Ρρ]') then translit = translit .. 'h' else -- vowel translit = 'h' .. translit end end -- Remove macron from a vowel that has a circumflex. if ufind(translit, macron_diaeresis) then translit = translit:gsub(macron, '') end ]=]-- -- Capitalize first character of transliteration. if token ~= mw.ustring.lower(token) then translit = translit:gsub("^" .. UTF8char, mw.ustring.upper) end table.insert(output, translit) end output = table.concat(output) return output end -- Module_talk:User:Sarri.greek/grk-translit-modern -- ============= use it with arguemtns =============== -- function export.get_tr(frame) -- local args = frame:getParent().args -- for Templates local args = frame.args -- invoke -- lemma local text = args['1'] or '' if args['1'] ~= '' and args['1'] ~= nil then text = export.translit(args['1']) end return text end return export -- check [[Module:el-translit]] for αυ, ευ, ηυ, μπ inital, -- add ντ initial, γκ initial (we have delta = dh, and gamma = gh) --[=[ text = gsub(text, "([αεηΑΕΗ])([υύ])()", function (vowel, upsilon, position) -- Find next character that is not whitespace or punctuation. local following = "" while true do local next = mw.ustring.sub(text, position, position) if next == "" then -- reached end of string break elseif next:find "[%s%p]" then position = position + 1 else following = next break end end return tt[vowel] .. (upsilon == "ύ" and acute or "") .. ((following == "" or ("θκξπσςτφχψ"):find(following, 1, true)) and "f" or "v") end) text = gsub(text, "([αεοωΑΕΟΩ])([ηή])", function (vowel, ita) if ita == "ή" then return tt[vowel] .. "i" .. diaeresis .. acute else return tt[vowel] .. "i" .. diaeresis end end) text = gsub(text, "[ωΩ][ιί]", {["ωι"] = "oï", ["ωί"] = "oḯ", ["Ωι"] = "Oï", ["Ωί"] = "Oḯ"}) text = gsub(text, "[οΟ][υύ]", {["ου"] = "ou", ["ού"] = "oú", ["Ου"] = "Ou", ["Ού"] = "Oú"}) text = gsub(text, "(.?)([μΜ])π", function (before, mi) if before == "" or before == " " or before == "-" then if mi == "Μ" then return before .. "B" else return before .. "b" end end end) ]=]-- p8ubecycpxjlabxvpyno25t6d9weqrs মডিউল:User:Sinonquoi/ks-pa-translit 828 168680 510232 2026-06-07T12:46:10Z RedminBot 9553 [[en:Module:User:Sinonquoi/ks-pa-translit]] থেকে আনা হলো 510232 Scribunto text/plain local u = mw.ustring.char -- unicode local gsub = mw.ustring.gsub -- string manipulation -- TODO -- 1. [HACK] Aspirate aspirables -- 2. Vowels with fixed characters (ā, ạ̄, ū, o, ō, e, ē, ọ, ọ̄) -- 3. Initial variants of vowels (with alef) -- 4. Medial variants of vowels (diacritics or standalone) -- 5. Final variants of vowels (same as medial except: e, ē) -- 6. Treat final yē and vāv differently depending on what comes before -- 7. Treat final hē with vowel diacritic -- 8. Fixed consonants and provided vowels -- 9. [DONE] Disregard hat for nūn -- 10. [DONE] Work around hat for rē -- 11. [DONE] yē with hat is a palatal -- 12. [DONE] Kashmiri yē medial is 'a; final ' -- 12b. Check support for compound words -- 13. Add vowels to consonants -- 14. Add vowels to dual role characters -- Disallow characters or sequences thereof including -- 'Combined' unicode endpoints as with vav + hamza, ye + hamza, etc. -- Final consonant + he + short vowel; should be Consonant + short vowel + he -- Vowel + Vowel -- Consonant + consonant (-r with ihat, -y with ihat) -- Character that cannot take hat/ihat + hat/ihat -- Long standalone vowel carriers at the beginning without ALIF preceding -- Consonant that is not aspirable preceded by ducheshm -- How to add vowels -- Make list of consonants and vowels -- Check if conditions are met (C+V; alef initial+V; vowel carrier + V) -- Change local export = {} -- helper functions local disallow local aspirable = "پتٹچژک" local aspirable_extended = aspirable .. "زجبگدذ" local ducheshm = "ھ" local hat = u(0x065A) -- V local ihat = u(0x065B) -- inverted V local hats = hat .. ihat -- characters that can take an inverted hat local ihattable = "رنی" -- important characters local alif = "ا" -- either long ā post-initially or vowel carrier initially local ye = "ی" -- either long ī terminally or ē medially, consonant otherwise local he = "ہ" -- either ø finally before a consonant + short vowel or a consonant otherwise local vav = "و" -- short vowel diacritics local sv_a = u(0x064E) -- zabar (a) local sv_u = u(0x064F) -- zer (u) local sv_i = u(0x0650) -- pesh (i) local sv_a2 = u(0x0654) -- hamza above (ạ) local sv_u2 = u(0x0655) -- hamza below (ụ) -- long vowel diacritics local lv_u2_long = u(0x065F) -- with consonant post-initially, with alif initially (ụ̄) local lv_u_long = u(0x0657) -- only with vav post-initial, inverted zer (ū) local lv_i_long = u(0x0656) -- only with medial ye, subscript alif (ī) local short_vowel_diacritics = sv_a .. sv_u .. sv_i .. sv_a2 .. sv_u2 local vowel_diacritics = short_vowel_diacritics .. lv_u2_long -- carrier + diacritic combos -- will this even work? local long_u = vav .. lv_u_long -- ū, preceded by consonant medially or ALIF initially local long_i = ye .. lv_i_long -- ī, preceded by consonant medially or ALIF initially local long_vowels = long_u .. long_i local short_o = vav .. ihat -- o, preceded by consonant medially or ALIF initially local short_ye = ye .. ihat -- e, preceded by consonant medially or ALIF initially -- ye on its own at the end is ī -- DIACRITICS local v_sign = u(0x065A) -- V local inverted_v_sign = u(0x065B) -- inverted V local hats = v_sign .. inverted_v_sign -- numerals local numeral_sub = { ['۰'] = '0', ['۱'] = '1', ['۲'] = '2', ['۳'] = '3', ['۴'] = '4', ['۵'] = '5', ['۶'] = '6', ['۷'] = '7', ['۸'] = '8', ['۹'] = '9', } local presubs = { } -- local conv = { -- ['ب'] = 'b', ['پ'] = 'p', ['ت'] = 't', ['ٹ'] = 'ṭ', ['ث'] = 's', -- ['ج'] = 'j', ['چ'] = 'c', ['ح'] = 'h', ['خ'] = 'kh', -- ['د'] = 'd', ['ڈ'] = 'ḍ', ['ذ'] = 'z', -- ['ر'] = 'r', ['ڑ'] = 'ḍ', ['ز'] = 'z', ['ژ'] = 'ċ', -- ['س'] = 's', ['ش'] = 'ś', ['ص'] = 's', ['ض'] = 'z', -- ['ط'] = 't', ['ظ'] = 'z', -- ['ع'] = 'ʿ', ['غ'] = 'ġ', -- ['ف'] = 'f', ['ق'] = 'q', -- ['ک'] = 'k', ['گ'] = 'g', -- ['ل'] = 'l', ['م'] = 'm', ['ن'] = 'n', -- ['ھ'] = 'h', -- -- treatment varies -- ['ه'] = 'h', -- -- extended set -- ['ی'] = 'y', ['و'] = 'v', -- } -- local vowels_conv = { -- [u(0x064E)] = 'a', [u(0x064F)] = 'u', [u(0x0650)] = 'i', [u(0x0654)] = 'ạ', [u(0x0655)] = 'ụ', [u(0x065F)] = 'ụ̄', -- } -- local consonants = 'بپتٹثجچحخدڈذرڑزژسشصضطظعغفقکگلمنھ' -- local consonants_extended = 'بپتٹثجچحخدڈذرڑزژسشصضطظعغفقکگلمنھوی' function export.transliterate(text) -- convert all numerals text = gsub(text, ".", numeral_sub) if disallow(text) then return nil end -- ASPIRATE -- text = gsub(text, aspirable .. aspirate_h, "hhhh") -- REMOVE HAT FROM NŪN and RĒ -- text = gsub(text, '([نر])' .. inverted_v_sign, "%1") -- -- C2=r/palatal -- text = gsub(text, '([' .. hattable .. '])([' .. vowel_diacritics .. '])' .. inverted_v_sign, "%1%2") -- -- YĒ with INVERTED HAT -- text = gsub(text, 'ی' .. inverted_v_sign, "\'") -- -- FINAL HALF-YĒ IS A PALATAL -- text = gsub(text, 'ؠ$', "\'") -- -- BEFORE A SPACE -- text = gsub(text, 'ؠ[ ]+', "\' ") -- -- MEDIAL HALF-YĒ IS 'a -- text = gsub(text, '([' .. consonants .. '])ؠ([' .. consonants .. '])', "%1\'a%2") -- -- CONSONANT + VOWEL -- text = gsub(text, -- '([' .. consonants_extended .. '])([' .. vowel_diacritics .. '])', -- function(c,v) -- return conv[c] .. vowels_conv[v] -- end) -- -- text = gsub(text, '([' .. vowel_diacritics .. '])', vowels_conv) -- -- FINAL HE + VOWEL -- -- text = gsub(text, 'ہ([' .. short_vowels_list .. '])$', short_vowels) -- text = gsub(text, '[بپتٹثجچحخدڈذرڑزژسشصضطظعغفقکگلمنھ]', conv) return text end function disallow(text) local bad_initial = "[^" .. vav .. lv_u_long .. "]" -- if mw.ustring.find(text, bad_initial) then local count text, count = gsub(text, "[" .. vav .. lv_u_long .. "]", "") if count > 0 then require("Module:debug").track("failed") mw.log("failed") end return #text == 0 end return export tek4ygsjtkm672f3j2cl47yf9h8cb8l মডিউল:User:Sinonquoi/ks-pa-translit-2 828 168681 510233 2026-06-07T12:46:11Z RedminBot 9553 [[en:Module:User:Sinonquoi/ks-pa-translit-2]] থেকে আনা হলো 510233 Scribunto text/plain -- TODO: long í support -- TODO: sort out short e vs palatalisation -- TODO: add rule for CẹC = CyaC local u = mw.ustring.char -- unicode local gsub = mw.ustring.gsub -- string manipulation local export = {} -- defined below local invalid_vowel_combination local vav = 'و' local ye = 'ی' local alif = 'ا' local he = 'ہ' local docheshm = u(0x06BE) local re = 'ر' local nun = 'ن' local vw_s_cfu = u(0x0650) -- pesh (i) local vw_s_ccu = u(0x0655) -- hamza below local vw_s_cbr = u(0x064F) -- zer (u) local vw_s_mcu = u(0x0654) -- hamza above local vw_s_ocu = u(0x064E) -- zabar (a) local vw_l_cbr = u(0x0657) -- inverted zer local vw_l_cfu = u(0x0656) -- subscript alif local hat = u(0x065A) -- V local inverted_hat = u(0x065B) -- inverted V local hats = hat .. inverted_hat local short_vowels_list = vw_s_cfu .. vw_s_ccu .. vw_s_cbr .. vw_s_mcu .. vw_s_ocu -- carrier + diacritic combos local long_u = vav .. vw_l_cbr local short_o = vav .. inverted_hat local long_i = ye .. vw_l_cfu local short_ye = ye .. inverted_hat local vocalised_carrier = long_u .. short_o .. long_i .. short_ye .. 'ێ' .. 'ۆ' .. 'اٟ' .. 'ۄ' local standalone_carrier = long_u .. short_o .. long_i .. short_ye .. 'ۆ' .. 'ێ' .. 'ۆ' .. 'اٟ' .. 'ۄ' local palatalisers = "ۍؠ" local consonants = "بپتٹجچدڈرڑزژسشفکگلمنهھےثحخذصضطظعغقۍۄیٲآ" local consonants_latn = "bptṭsjchxdḍzrċsśzʿġfqkglmnhv" local conv = { -- consonants ['ب'] = 'b', ['پ'] = 'p', ['ت'] = 't', ['ٹ'] = 'ṭ', ['ث'] = 's', ['ج'] = 'j', ['چ'] = 'c', ['ح'] = 'h', ['خ'] = 'kh', ['د'] = 'd', ['ڈ'] = 'ḍ', ['ذ'] = 'z', ['ر'] = 'r', ['ڑ'] = 'ḍ', ['ز'] = 'z', ['ژ'] = 'ċ', ['س'] = 's', ['ش'] = 'ś', ['ص'] = 's', ['ض'] = 'z', ['ط'] = 't', ['ظ'] = 'z', ['ع'] = 'ʿ', ['غ'] = 'ġ', ['ف'] = 'f', ['ق'] = 'q', ['ک'] = 'k', ['گ'] = 'g', ['ل'] = 'l', ['م'] = 'm', ['ن'] = 'n', ['ہ'] = 'h', ['ھ'] = 'h', -- Why is this separate? ['خ'] = 'kh', -- always word-final ['ے'] = 'y', -- short e to be treated separately -- incorrect palatalisation marker ['ۍ'] = '\'', -- broken/open vowels -- confirm if there are other use cases for these two ['ۄ'] = 'ọ', ['ؠ'] = 'ẹ', -- optionally ẹ = ya or used at the end to indicate palatalisation -- a carries long vowels ['ٲ'] = 'ạ̄', ['آ'] = 'ā', ['یٖ'] = 'ī', ['اٟ'] = 'ụ̄', -- vowels ['ۆ'] = 'o', ['ێ'] = 'e', ['أ'] = 'ạ', -- numerals ['۰'] = '0', ['۱'] = '1', ['۲'] = '2', ['۳'] = '3', ['۴'] = '4', ['۵'] = '5', ['۶'] = '6', ['۷'] = '7', ['۸'] = '8', ['۹'] = '9', } local short_vowels = { -- high vowels [u(0x0650)] = 'i', [u(0x0655)] = 'ụ', [u(0x064F)] = 'u', [u(0x065F)] = 'ụ̄', -- central vowels [u(0x0654)] = 'ạ', -- low vowels [u(0x064E)] = 'a', } local hardcoded_conv = { [u(0x0624)] = 'vạ', } local alif = 'ا' local waw = 'و' local ye = 'ی' function export.transliterate(text) if invalid_vowel_combination(text) then -- require("Module:debug").track("ks-Arab-translit/invalid vowel combination") return nil end text = gsub(text, '([' .. palatalisers .. ']%f[%s%z])', '\'') -- short e at the end of words is ē with V sign text = gsub(text, 'ے' .. hat, "e") -- ye with inverted hat is /j/ -- ? always occurs after a consonant text = gsub(text, "([" .. consonants .. "])" .. ye .. inverted_hat .. "([" .. short_vowels_list .. "])", "%1y%2") text = gsub(text, "([" .. consonants .. "])" .. short_ye .. alif, "%1yā") text = gsub(text, "([" .. consonants .. "])" .. short_ye, "%1y") -- nun with hat text = gsub(text, nun .. "[" .. hats.. "]", nun) -- ye with hat = short e -- only when not final? text = gsub(text, ye .. "[" .. hats.. "]", "e") -- re with inverted hat followed by short vowel is re + short vowel -- text = gsub(text, "([" .. consonants .. "])" .. re .. inverted_hat .. "([" .. short_vowels_list .. "])", "%1r%2") -- re with inverted hat is re text = gsub(text, re .. inverted_hat, re) -- interconsonantal vav is a long ō sound text = gsub(text, '([' .. consonants .. ']' .. docheshm .. '?)' .. vav .. '([' .. consonants .. '])', "%1ō%2") -- intervocalic alif is a long a sound text = gsub(text, '([' .. consonants .. 'و ' .. '])' .. alif .. '([' .. consonants .. 'و' .. '])', "%1ā%2") -- consonant + short vowel + he disregards the he and transliterates the vowel text = gsub(text, '([' .. consonants .. '])([' .. short_vowels_list .. '])' .. he .. '(%s)', "%1%2%3") text = gsub(text, '([' .. consonants .. '])([' .. short_vowels_list .. '])' .. he .. '^', "%1%2") -- final he + short vowel disregards the he and transliterates the vowel -- should return NIL text = gsub(text, he .. '([' .. short_vowels_list .. '])$', short_vowels) -- word-initial alif + vowelled carrier drops the alif text = gsub(text, '^' .. alif .. '([' .. vocalised_carrier .. '])', "%1") -- word-initial alif + short vowel diacritic drops the alif text = gsub(text, '^' .. alif .. '([' .. short_vowels_list .. '])', "%1") -- word-initial alif + vowelled carrier drops the alif text = gsub(text, '(%s)' .. alif .. '([' .. vocalised_carrier .. '])', "%1%2") -- word-initial alif + short vowel diacritic drops the alif text = gsub(text, '(%s)' .. alif .. '([' .. short_vowels_list .. '])', "%1%2") -- re with inverted hat is just re text = gsub(text, re .. inverted_hat, re) -- long /u:/ and /i:/ text = gsub(text, vav .. vw_s_cbr .. vav .. "([" .. consonants .. "])", vav .. "ū%1") text = gsub(text, "([" .. consonants .. "])" .. vw_s_cfu .. ye .. "([" .. consonants .. "])", "%1ī%2") -- vav with hat = short o text = gsub(text, vav .. "[" .. hats .. "]", "o") -- vav with short vowel text = gsub(text, vav .. "([" .. short_vowels_list .. "])", function(c) return "v" .. short_vowels[c] end) -- vav with inverted pish = long u text = gsub(text, long_u, "ū") -- long i text = gsub(text, ye .. vw_l_cfu, 'ī') -- intervocalic ye is a long a sound text = gsub(text, '([' .. consonants .. '])' .. ye .. '([' .. consonants .. '])', "%1ē%2") -- word-final alif and ye text = gsub(text, '([' .. consonants .. '])' .. ye .. '$', "%1ī") text = gsub(text, '([' .. consonants .. '])' .. alif .. '$', "%1ā") -- regard the consonant + short vowel combinations throughout text = gsub(text, '.', short_vowels) text = gsub(text, '[أإبپتٹجچدڈرڑزژسشفکگلمنهھےثحخذصضطظعغقۍۄؠٲآۆۆێ]', conv) -- normal consonants left over text = gsub(text, vav, 'v') text = gsub(text, 'ہ', 'h') text = gsub(text, "ی", "y") -- hardcoded consonants left over -- Seems to be auto-subbed? text = gsub(text, '[ؤ]', hardcoded_conv) -- CẹC = CyaC text = gsub(text, "([" .. consonants_latn .. "])ẹ([" .. consonants_latn .. "])", "%1ya%2") return text end function invalid_vowel_combination(text) -- if a vowel carrier or a standalone vowel has another vowel on top it should not local orig_text = text local count text, count = gsub(text, "[" .. standalone_carrier .. short_vowels_list .. "]", "") if count > 0 then return nil end return #text == 0 end return export 5h6z6vxjpkvfzxnizxy4qj2ijr426mx মডিউল:User:Sinonquoi/ks-pa-translit-2/testcases 828 168682 510234 2026-06-07T12:46:11Z RedminBot 9553 [[en:Module:User:Sinonquoi/ks-pa-translit-2/testcases]] থেকে আনা হলো 510234 Scribunto text/plain local tests = require "Module:UnitTests" local m = require "Module:User:Sinonquoi/ks-pa-translit-2" local convert = m.transliterate function tests:check_tr(example, expected) self:equals( example, convert(example), expected ) end function tests:test_strings() local examples = { { 'گُر', 'gur' }, { 'زُرؠو', 'zuryav' }, { 'زُرۍ', 'zur\'' }, { 'مَکانہٕ', 'makānụ' }, { 'آپراوُن', 'āprāvun' }, { 'ہیٚچھُن', 'hechun' }, { 'ژھانٛڈُن', 'ċhānḍun' }, { 'نیٚچوٗ', 'necū' }, { 'ژَتجی', 'ċatjī' }, { 'موجا', 'mōjā' }, { 'کیل', 'kēl' }, {"کیٖل", "kīl"}, { 'اَلہٕ', 'alụ' }, { 'کالَس', 'kālas' }, { 'اوٗر', 'ūr' }, { 'کانٛدُر', 'kāndur' }, { 'وُونٹھ', 'vūnṭh' }, -- from [[camel]] { 'کٔشِیر', 'kạśīr' }, -- from [[Kashmir]] { 'بۆڑ', 'boḍ' }, { 'ژھونٛڈمُت', 'ċhōnḍmut' }, { 'ژھٲنٛڈؠ مٕتؠ', 'ċhạ̄nḍ\' mụt\'' }, { 'اَنٛگریٖزۍ', 'angrīz\'' }, { 'خۄش', 'khọś' }, { 'اٟٹھِم', 'ụ̄ṭhim' }, { 'دَہَو ؤرِیَو پَتٕہ آو سُہ گَرٕ', 'dahav vạriyav patụ āv su garụ' }, {"ؤری", nil}, {"ؤری", "vạrī"}, { 'اوٚڑ', 'oḍ' }, { 'اۆڑ', 'oḍ' }, { 'شیٖن', 'śīn' }, {'کیۆم', "kyom"}, {"کیٛۆم", "kyom"}, {"وۄَدُر", nil}, {"وۄدُر", "vọdur"}, {"زیٛوٗٹھ", "zyūṭh"}, {"أنٛز", "ạnz"}, {"ترٛےٚ", "tre"}, {"ترٕٛہ", "trụh"}, {"بَطُخ", "batukh"}, {"ژےٚ", "ċe"}, {"کیٛازِ", "kyāzi"}, {"کیُٛل", "kyul"}, {"کیٛوٗر", "kyūr"}, {"اَکی", "akī"}, {"زۆر اَچھُر", "zor achur"}, {"بوے", "bōy"}, {"بیٚنہِ", nil}, {"بیٚنِہ", "beni"}, {"کرال", nil}, {"کرٛال", "krāl"}, {"گیۆڈ", "gyoḍ"}, {"ٹاٹھنیٛار", "ṭāṭhnyār"}, {"کَرٛ", nil}, {"اۆنٛ", nil}, {"اٟں", "ụ̄̃"}, {"کیوم", nil}, {"پھَک", "phak"}, {"حِصہٕ", "hisụ"}, {"تھۄکھ", "thọkh"}, {"چھاو", "chāv"}, {"کھوٗر", "khūr"}, {"ٹھانٛڈٕ", "ṭhānḍụ"}, {"ژھاوُل", "ċhāvul"}, {"ترَٛکھ", "trakh"}, {"اَکی", "akī"}, {"کیُٛل", "kyul"}, {"بوے", "bōy"}, {"کُلؠ", "kul\'"}, {"ؤلؠ ؤلؠ", "vạl\' vạl\'"}, {"ؤلؠ ؤلؠ", "vạl\' vạl\'"}, {"دؠل", "d\'al"}, {"کیٛازِ", "k\'āzi"}, {"پرٛانٛگ", "prāng"}, {"پھَمب", "phamb"}, } self:iterate(examples, "check_tr") end return tests dcms2x8vep0cnhr9wuewtdopf8yby93 মডিউল:User:Sinonquoi/ks-pa-translit/testcases 828 168683 510235 2026-06-07T12:46:11Z RedminBot 9553 [[en:Module:User:Sinonquoi/ks-pa-translit/testcases]] থেকে আনা হলো 510235 Scribunto text/plain local tests = require "Module:UnitTests" local m = require "Module:User:Sinonquoi/ks-pa-translit" local convert = m.transliterate function tests:check_tr(example, expected) self:equals( example, convert(example), expected ) end function tests:test_strings() local examples = { {"۱۲۳۴۵۶۷۸۹۰", "1234567890"}, -- all numerals check {"وٗر", nil}, -- requires alif preceding { 'گُر', 'gur' }, { 'زُرؠو', 'zuryav' }, { 'زُرۍ', 'zur\'' }, { 'مَکانہٕ', 'makānụ' }, { 'آپراوُن', 'āprāvun' }, { 'ہیٚچھُن', 'hechun' }, { 'ژھانٛڈُن', 'ċhānḍun' }, { 'نیٚچوٗ', 'necū' }, { 'ژَتجی', 'ċatjī' }, { 'موجا', 'mōjā' }, { 'کیل', 'kēl' }, {"کیٖل", "kīl"}, { 'اَلہٕ', 'alụ' }, { 'کالَس', 'kālas' }, { 'اوٗر', 'ūr' }, { 'کانٛدُر', 'kāndur' }, { 'وُونٹھ', 'vūnṭh' }, -- from [[camel]] { 'کٔشِیر', 'kạśīr' }, -- from [[Kashmir]] { 'بۆڑ', 'boḍ' }, { 'ژھونٛڈمُت', 'ċhōnḍmut' }, { 'ژھٲنٛڈؠ مٕتؠ', 'ċhạ̄nḍ\' mụt\'' }, { 'اَنٛگریٖزۍ', 'angrīz\'' }, { 'خۄش', 'khọś' }, { 'اٟٹھِم', 'ụ̄ṭhim' }, { 'دَہَو ؤرِیَو پَتٕہ آو سُہ گَرٕ', 'dahav vạriyav patụ āv su garụ' }, {"ؤری", nil}, {"ؤری", "vạrī"}, { 'اوٚڑ', 'oḍ' }, { 'اۆڑ', 'oḍ' }, { 'شیٖن', 'śīn' }, {'کیۆم', "kyom"}, {"کیٛۆم", "kyom"}, {"وۄَدُر", nil}, {"وۄدُر", "vọdur"}, {"زیٛوٗٹھ", "zyūṭh"}, {"أنٛز", "ạnz"}, {"ترٛےٚ", "tre"}, {"ترٕٛہ", "trụh"}, {"بَطُخ", "batukh"}, {"ژےٚ", "ċe"}, {"کیٛازِ", "kyāzi"}, {"کیُٛل", "kyul"}, {"کیٛوٗر", "kyūr"}, {"اَکی", "akī"}, {"زۆر اَچھُر", "zor achur"}, {"بوے", "bōy"}, {"بیٚنہِ", nil}, {"بیٚنِہ", "beni"}, {"کرال", nil}, {"کرٛال", "krāl"}, {"گیۆڈ", "gyoḍ"}, {"ٹاٹھنیٛار", "ṭāṭhnyār"}, {"کَرٛ", nil}, {"اۆنٛ", nil}, {"اٟں", "ụ̄̃"}, {"کیوم", nil}, {"پھَک", "phak"}, {"حِصہٕ", "hisụ"}, {"تھۄکھ", "thọkh"}, {"چھاو", "chāv"}, {"کھوٗر", "khūr"}, {"ٹھانٛڈٕ", "ṭhānḍụ"}, {"ژھاوُل", "ċhāvul"}, {"ترَٛکھ", "trakh"}, {"اَکی", "akī"}, {"کیُٛل", "kyul"}, {"بوے", "bōy"}, {"کُلؠ", "kul\'"}, {"ؤلؠ ؤلؠ", "vạl\' vạl\'"}, {"ؤلؠ ؤلؠ", "vạl\' vạl\'"}, {"دؠل", "d\'al"}, {"کیٛازِ", "k\'āzi"}, {"پرٛانٛگ", "prāng"}, {"پھَمب", "phamb"}, } self:iterate(examples, "check_tr") end return tests 17zhrjaiy1frc56rwm1gckjklcr1wk4 মডিউল:User:Ssvb/be-translit 828 168684 510236 2026-06-07T12:46:12Z RedminBot 9553 [[en:Module:User:Ssvb/be-translit]] থেকে আনা হলো 510236 Scribunto text/plain local export = {} local AC = require("Module:string/char")(0x0301) -- acute = ́ local rsubn = mw.ustring.gsub local rfind = mw.ustring.find -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local tt = { ["А"]='A', ["а"]='a', ["Б"]='B', ["б"]='b', ["В"]='V', ["в"]='v', ["Г"]='H', ["г"]='h', ["Д"]='D', ["д"]='d', ["Е"]='Je', ["е"]='je', ["Ё"]='Jo', ["ё"]='jo', ["Ж"]='Ž', ["ж"]='ž', ["З"]='Z', ["з"]='z', ["І"]='I', ["і"]='i', ["И"]='I', ["и"]='i', -- present for Old Belarusian; FIXME, remove when we have a separate language code for this lang ["Й"]='J', ["й"]='j', ["К"]='K', ["к"]='k', ["Л"]='L', ["л"]='l', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["О"]='O', ["о"]='o', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Ў"]='Ŭ', ["ў"]='ŭ', ["Ф"]='F', ["ф"]='f', ["Х"]='X', ["х"]='x', ["Ц"]='C', ["ц"]='c', ["Ч"]='Č', ["ч"]='č', ["Ш"]='Š', ["ш"]='š', ["Ы"]='Y', ["ы"]='y', ["Ь"]='ʹ', ["ь"]='ʹ', ["Э"]='E', ["э"]='e', ["Ю"]='Ju', ["ю"]='ju', ["Я"]='Ja', ["я"]='ja', ["’"]='ʺ', ["ʼ"]='ʺ', -- currently non-standard, used in some older norms ["Ґ"]='G', ["ґ"]='g', -- Belarusian style quotes ['«']='“', ['»']='”', }; local unstressed_vowels = "aeiyuAEIYU" local unstressed_vowel = "[" .. unstressed_vowels .. "]" local acute_decomposer = { ["á"] = "a" .. AC, ["é"] = "e" .. AC, ["í"] = "i" .. AC, ["ó"] = "o" .. AC, ["ú"] = "u" .. AC, ["ý"] = "y" .. AC, ["Á"] = "A" .. AC, ["É"] = "E" .. AC, ["Í"] = "I" .. AC, ["Ó"] = "O" .. AC, ["Ú"] = "U" .. AC, ["Ý"] = "Y" .. AC, } function export.tr(text, lang, sc) if not rfind(text, "[Ѐ-џҊ-ԧꚀ-ꚗ]") and rfind(text, "[A-ZŻŽŹŠŚČĆŃŬa-zżžźšśčćńŭ]") then return nil end text = rsub(text, "'+", { ["'"] = 'ʺ' }) -- neutral apostrophe text = rsub(text, '.', tt) -- Mark word boundaries text = rsub(text, "(%s+)", "#%1#") text = "#" .. text .. "#" -- Mark stress on <o> text = rsub(text, "(#[^#Oo" .. AC .. "]*)([Oo])([^#Oo" .. AC .. "]*" .. unstressed_vowel .. "[^#Oo" .. AC .. "]*#)", "%1%2" .. AC .. "%3") text = rsub(text, "(#[^#Oo" .. AC .. "]*" .. unstressed_vowel .. "[^#Oo" .. AC .. "]*)([Oo])([^#Oo" .. AC .. "]*#)", "%1%2" .. AC .. "%3") -- Highlight unstressed words with two or more syllables local unstressed_letters = "" for _, v in pairs(tt) do if v ~= '“' and v ~= '”' then unstressed_letters = unstressed_letters .. v end end text = rsub(text, "#[" .. unstressed_letters .. "]*" .. unstressed_vowel .. "[" .. unstressed_letters .. "]*" .. unstressed_vowel .. "[" .. unstressed_letters .. "]*#", "#<span style='background-color:pink;'>%1</span>#") --Strip hashes text = rsub(text, "#", "") return text end function export.reverse_tr(text)--reverse-translit any words or phrases local reverse_tt = {} for k, v in pairs(tt) do reverse_tt[v] = k end reverse_tt['ʺ'] = "'" reverse_tt['ʹ'] = "ь" reverse_tt['i'] = "і" reverse_tt['I'] = "І" text = rsub(text, '.', acute_decomposer) text = rsub(text, '[Jj][aeou]', reverse_tt) text = rsub(text, '.', reverse_tt) return text end return export oxp1nv9rvswmof3ni17byukl0kx72o5 মডিউল:User:Ssvb/be-translit/testcases 828 168685 510237 2026-06-07T12:46:12Z RedminBot 9553 [[en:Module:User:Ssvb/be-translit/testcases]] থেকে আনা হলো 510237 Scribunto text/plain return require("Module:transliteration module testcases")( require("Module:User:Ssvb/be-translit").tr, { { "У рудо́га вераб'я́ ў схо́вішчы пад фатэ́лем ляжа́ць не́йкія гаю́чыя зёлкі.", "U rudóha vierabjá ŭ schóviščy pad fatélem lažáć niéjkija hajúčyja ziółki." }, { "суддзя́ аддзя́чыць", "sudździá addziáčyć" }, { "здаро́ўе сям'і́", "zdaróŭje siamjí" }, { "-", "-" }, { "смяе́шся", "śmiajéšsia" }, { "ґвалт", "gvałt" }, { "свяшчэннаслужы́цель", "śviaščennasłužýciel" }, }, "Cyrl", "be" ) g2mrgsute24zqyqv9du510fls8b0lz6 মডিউল:User:Surjection/kk-2018-translit 828 168686 510238 2026-06-07T12:46:13Z RedminBot 9553 [[en:Module:User:Surjection/kk-2018-translit]] থেকে আনা হলো 510238 Scribunto text/plain local export = {} local tt = { ["ү"]="ú",['Ү']='Ú', ["т"]="t",['Т']='T', ["һ"]="h",['Һ']='H', ["р"]="r",['Р']='R', ["ф"]="f",['Ф']='F', ["ю"]="ıý",['Ю']='Iý', ["ш"]="sh",['Ш']='Sh', ["ь"]="ʹ",['Ь']='ʹ', ["ъ"]="ʺ",['Ъ']='ʺ', ["н"]="n",['Н']='N', ["п"]="p",['П']='P', ["й"]="ı",['Й']='I', ["л"]="l",['Л']='L', ["з"]="z",['З']='Z', ["е"]="e",['Е']='E', ["г"]="g",['Г']='G', ["б"]="b",['Б']='B', ["у"]="ý",['У']='Ý', ["с"]="s",['С']='S', ["х"]="h",['Х']='H', ["ч"]="ch",['Ч']='Ch', ["щ"]="shsh",['Щ']='Shsh', ["я"]="ıa",['Я']='Ia', ["ы"]="y",['Ы']='Y', ["э"]="e",['Э']='E', ["м"]="m",['М']='M', ["о"]="o",['О']='O', ["и"]="ı",['И']='I', ["ё"]="ıo",['Ё']='Io', ["ж"]="j",['Ж']='J', ["к"]="k",['К']='K', ["д"]="d",['Д']='D', ["в"]="v",['В']='V', ["ц"]="ts",['Ц']='Ts', ["а"]="a",['А']='A', ["ң"]="ń",['Ң']='Ń', ["ә"]="á",['Ә']='Á', ["э"]="é",['Э']='É', ["ұ"]="u",['Ұ']='U', ["қ"]="q",['Қ']="Q", ["ғ"]="ǵ",['Ғ']='Ǵ', ["і"]="i",['І']='I', ["ө"]="ó",['Ө']='Ó', ["ӯ"]="ý",['Ӯ']='Ý' }; function export.tr(text, lang, sc) if sc == "Cyrl" then return (mw.ustring.gsub(text, '.', tt)) end end return export c3ipnm8j4lv10ydpcm5il9vabghab81 মডিউল:User:Suzukaze-c/dng-translit 828 168687 510239 2026-06-07T12:46:13Z RedminBot 9553 [[en:Module:User:Suzukaze-c/dng-translit]] থেকে আনা হলো 510239 Scribunto text/plain --[[ * 1956 杜松壽《拼音文字研究參考資料集刊·東干語拼音文字資料》 * 1957 文法 https://www.kromatikon.eu/odads/chronological.html#:~:text=Jhun%2Djan%20jyyjandi * 1957 橋本萬太郎『ジュンヤン語とその文字(1)・ジュンヤン語(ドゥンガーン語)研究の歴史と現状』 https://doi.org/10.7131/chuugokugogaku.1957.13 * 1957 橋本萬太郎『ジュンヤン語とその文字(2)・ジュンヤン語(ドゥンガーン語)字母の歴史』 https://doi.org/10.7131/chuugokugogaku.1957.193 * 1957 橋本萬太郎『ジュンヤン語とその文字(3)・ジュンヤン語の新字母と音節の綴り方規則』 https://doi.org/10.7131/chuugokugogaku.1957.219 * 1974 橋本萬太郎『東干語研究集成(1)』 https://doi.org/10.7131/chuugokugogaku.1974.220_19 * 1975 橋本萬太郎『東干語研究集成(2)』 https://doi.org/10.7131/chuugokugogaku.1975.16 * 2003 林濤《中亞東干語研究》 * 2007 林濤《東干語論稿》 * 2012 林濤《東干語調查研究》 * 2015 ECLO https://doi.org/10.1163/2210-7363_ecll_COM_000034 * https://www.kromatikon.eu/odads/thematic.html#:~:text=%23%20alphabet * https://en.wikipedia.org/wiki/Dungan_alphabets ]] local export = {} local m_str_utils = require('Module:string utilities') local gsub = m_str_utils.gsub local match = m_str_utils.match local sub = m_str_utils.sub local len = m_str_utils.len local upper = m_str_utils.upper local lower = m_str_utils.lower local u = require('Module:string/char') local INITIAL = 1 local FINAL = 2 local SEPARATOR = 8 local OTHER = 9 local UNIT_SEPARATOR = '\31' local TONE_REHORN_1A = u(0x030C) local TONE_REHORN_1B = u(0x0301) local TONE_REHORN_2 = u(0x0300) local TONE_REHORN_3 = u(0x0304) local conv = {} conv['IPA-broad'] = { [INITIAL] = { -- 東干語論稿 2.1 (第38頁) -- 東干語論稿 3.1.2, 3.2.4 loaned ⟨р⟩ is trilled (舌頭、濁、顫音輔音音位) and erhua ⟨р⟩ is not trilled (無顫音色彩) ['б'] = 'p', ['п'] = 'pʰ', ['м'] = 'm', ['ф'] = 'f', ['в'] = 'v', ['д'] = 't', ['т'] = 'tʰ', ['н'] = 'n', ['л'] = 'l', ['з'] = 'ts', ['ц'] = 'tsʰ', ['с'] = 's', ['җ'] = 'tʂ', ['ч'] = 'tʂʰ', ['ш'] = 'ʂ', ['ж'] = 'ʐ', --[[ җ tɕ ]] --[[ ч tɕʰ ]] ['щ'] = 'ɕ', ['г'] = 'k', ['к'] = 'kʰ', ['ң'] = 'ŋ', ['х'] = 'x', ['р'] = 'r', [''] = '', -- our internal phonetic substitutes ['ӝ'] = 'tɕ', ['ӵ'] = 'tɕʰ', -- not in the table: йү, etc. ['й'] = '', -- not in the table: non-Dungan letters ['ь'] = '', ['ъ'] = '', }, [FINAL] = { -- 東干語論稿 2.2 -- ⟨й⟩ changed to ⟨и⟩ -- ⟨йин⟩ changed to ⟨ин⟩ -- 中亞東干語研究 + 東干語論稿 final list: /uɛ/ ⟨уэ⟩ 怪坏揣, /uɛi/ ⟨уэй⟩ 回会灰, /uei/ ⟨уй⟩ 累国亏 -- 中亞東干語研究 syllable table: /uɛ/ ⟨{ч,г,к}уэ⟩ 怪踹, /uɛi/ ⟨{х}уэй⟩ 回坏 -- 中亞東干語研究 syllable list: /uɛ/ ⟨{ч,г,к}уэ⟩ 怪踹, /uɛi/ ⟨{х}уэй⟩ 回坏灰 -- 東干語論稿 syllable table: /uɛ/ ⟨{ч,г,к,х}уэн⟩[SIC] 怪坏踹回, /uɛi/ ⟨{…}ун⟩[SIC] 灰 -- wtf? -- 新字母 table has ⟨{…,х}уэ⟩ and ⟨{…}уй = {х}уэй⟩ -- ⟨уэй⟩ merged to ⟨уй⟩ on the basis of the above; classic motivation for a useless split ['ы'] = 'z̩', ['и'] = 'i', ['ў'] = 'u', ['ү'] = 'y', --[[ ы ʐ̩ ]] ['а'] = 'a', ['я'] = 'ia', ['уа'] = 'ua', ['ә'] = 'ə', ['е'] = 'iə', ['уә'] = 'uə', ['үә'] = 'yə', ['э'] = 'ɛ', ['уэ'] = 'uɛ', ['о'] = 'ɔ', ['ё'] = 'iɔ', ['уэй'] = 'uei', ['ый'] = 'ei', ['уй'] = 'uei', ['у'] = 'ou', ['ю'] = 'iou', ['ан'] = 'æ̃', ['ян'] = 'iæ̃', ['уан'] = 'uæ̃', ['үан'] = 'yæ̃', ['он'] = 'ɑŋ', ['ён'] = 'iɑŋ', ['уон'] = 'uɑŋ', ['ын'] = 'əŋ', ['ин'] = 'iŋ', ['ун'] = 'uŋ', ['үн'] = 'yŋ', -- our internal phonetic substitutes ['ӹ'] = 'ʐ̩', -- not in the table: non-Dungan sounds ['ь'] = '', ['ъ'] = '', -- 東干語拼音文字資料 §6: delete -н and -й -- 東干語論稿 第219頁: delete -н and -й -- phonetic values extracted or extrapolated from the rest of 東干語論稿 -- p60 палир p56 лонүр -- p56 вәвәр p64 нян суәр -- p53 эрмын -- phonetic values extracted or extrapolated from the rest of 中亞東干語研究 -- p302 зызыр p270 фузыр p248 хынхўр p256 нүр -- p272 йүәрйүән -- p267 кудэрни p297 нэхуэр -- labial + u -- p260 щифур -- XXX: -n deletion results in ambiguous finals? -- p152 гуэгуэр данданр(?) мингар -- p250 бяндар фоншар -- XXX actually there's a list at 東干語調查研究 第92頁 :^) ['ыр'] = 'əɾ', ['ир'] = 'iəɾ', ['ўр'] = 'uɾ', ['үр'] = 'yəɾ', --[[ ыр ]] ['ар'] = 'aɾ', ['яр'] = 'iaɾ', ['уар'] = 'uaɾ', ['үар'] = 'yaɾ', ['әр'] = 'əɾ', ['ер'] = 'iəɾ', ['уәр'] = 'uəɾ', ['үәр'] = 'yəɾ', ['эр'] = 'ɛɾ', ['уэр'] = 'uɛɾ', ['ор'] = 'ɔɾ', ['ёр'] = 'iɔɾ', ['уор'] = 'uɔɾ', ['ур'] = 'ouɾ', ['юр'] = 'iouɾ', -- our internal phonetic substitutes ['ӹр'] = 'əɾ', }, [SEPARATOR] = { -- 東干語調查研究 第90頁 -- making up ⟨'⟩ ⟨"⟩. kinda mnemonic. ['1'] = '²⁴', ["'"] = '¹²', ['"'] = '²⁴', ['0'] = '⁰', ['2'] = '⁵¹', ['3'] = '⁴⁴', -- TODO -- Elke Rehorn's tone diacritics -- or maybe it's still way too minor compared to the traditional I-II-III system -- and not yet worth processing [TONE_REHORN_1A] = '¹²', [TONE_REHORN_1B] = '²⁴', --[[ neutral tone is unmarked ]] [TONE_REHORN_2] = '⁵¹', [TONE_REHORN_3] = '⁴⁴', [''] = '.', ['-'] = '.', [UNIT_SEPARATOR] = '.', [' '] = ' ', }, ['tone_sandhi'] = { -- TODO -- 東干語調查研究 第90頁 [UNIT_SEPARATOR.."'"] = '¹²⁻²⁴', ['2'..UNIT_SEPARATOR..'2'] = '⁵¹⁻³² ⁵¹', ["'"..UNIT_SEPARATOR..'0'] = '¹² ⁰⁻²⁴', ['"'..UNIT_SEPARATOR..'0'] = '²⁴ ⁰⁻⁵¹', -- 東干語調查研究 第91頁 ["'"..UNIT_SEPARATOR..'子'] = '¹² ¹²⁻²⁴ ⁰', ['"'..UNIT_SEPARATOR..'子'] = '²⁴ ²⁴⁻⁵¹ ⁰', ['2'..UNIT_SEPARATOR..'子'] = '⁵¹ ⁵¹⁻¹² ⁰', ['3'..UNIT_SEPARATOR..'子'] = '⁴⁴ ⁴⁴⁻¹² ⁰', -- 東干語調查研究 第91頁 --["'"..UNIT_SEPARATOR..'ABB'] = '¹² ¹²⁻⁵¹ ⁰', ['"'..UNIT_SEPARATOR..'ABB'] = '²⁴ ²⁴⁻⁵¹ ⁰', ['2'..UNIT_SEPARATOR..'ABB'] = '⁵¹ ⁵¹⁻⁵¹ ⁰', ['3'..UNIT_SEPARATOR..'ABB'] = '⁴⁴ ⁴⁴⁻⁵¹ ⁰', }, } -- 1937 寫法 https://www.kromatikon.eu/odads/chronological.html#:~:text=Voprosy%20orfografii -- 1938 甘陝 https://www.kromatikon.eu/odads/chronological.html#:~:text=Gansun%20de -- 1940 聲音 https://www.kromatikon.eu/odads/chronological.html#:~:text=Zxunjan%20khua conv['Latn-SU'] = { [INITIAL] = { -- 東干語拼音文字資料 §1 ['б'] = 'ʙ', ['п'] = 'p', ['м'] = 'm', ['ф'] = 'f', ['в'] = 'v', ['д'] = 'd', ['т'] = 't', ['н'] = 'n', ['л'] = 'l', ['з'] = 'z', ['ц'] = 'c', ['с'] = 's', ['җ'] = 'z̧', ['ч'] = 'ç', ['ш'] = 'ş', ['ж'] = 'ƶ', --[[ җ z̧ ]] --[[ ч ç ]] ['щ'] = 'ş', ['г'] = 'g', ['к'] = 'k', ['ң'] = 'ꞑ', ['х'] = 'x', ['р'] = 'r', [''] = '', ['й'] = 'j', -- our internal phonetic substitutes ['ӝ'] = 'z̧', ['ӵ'] = 'ç', -- not in the table: non-Dungan letters ['ь'] = 'ʹ', ['ъ'] = 'ʺ', }, [FINAL] = { -- 東干語拼音文字資料 §16 -- 寫法 has ⟨i-⟩ for ⟨j-⟩ but this isn't seen in other works ['а'] = 'a', ['ан'] = 'an', ['е'] = 'je', ['ё'] = 'jo', ['ён'] = 'jon', ['ә'] = 'ə', ['и'] = 'i', ['ин'] = 'in', ['о'] = 'o', ['он'] = 'on', ['у'] = 'u', ['уа'] = 'ua', -- 杜 ua 寫法 ua wa ['уан'] = 'uan', -- 杜 uan 寫法 uan wan ['уә'] = 'uə', -- 杜 uə wə 寫法 uə wə ['уй'] = 'wj', -- 杜 uj wj 寫法 wj ['ун'] = 'wn', -- 杜 un wn 寫法 wn ['уон'] = 'uon', -- 杜 uon won 寫法 uon won ['уэ'] = 'ue', -- 杜 ue we 寫法 ue we ['ў'] = 'w', ['ү'] = 'y', ['үан'] = 'yan', ['үә'] = 'yə', ['үн'] = 'yn', ['ы'] = 'ь', ['ый'] = 'ьj', ['ын'] = 'ьn', ['э'] = 'e', ['ю'] = 'ju', ['я'] = 'ja', ['ян'] = 'jan', -- extrapolated ['уэй'] = 'wj', -- our internal phonetic substitutes ['ӹ'] = 'ь', -- extrapolated ['ыр'] = 'ьƣ', ['ир'] = 'iƣ', ['ўр'] = 'wƣ', ['үр'] = 'yƣ', --[[ ыр ]] ['ар'] = 'aƣ', ['яр'] = 'jaƣ', ['уар'] = 'uaƣ', ['үар'] = 'yaƣ', ['әр'] = 'əƣ', ['ер'] = 'jər', ['уәр'] = 'uəƣ', ['үәр'] = 'yəƣ', ['эр'] = 'eƣ', ['уэр'] = 'ueƣ', ['ор'] = 'oƣ', ['ёр'] = 'joƣ', ['уор'] = 'woƣ', ['ур'] = 'uƣ', ['юр'] = 'juƣ', -- our internal phonetic substitutes ['ӹр'] = 'ьƣ', }, [SEPARATOR] = { -- 寫法 --['1'] = 'ˉ', ['2'] = 'ˇ', ['3'] = 'ˆ', -- 聲音 -- ECLO ['1'] = '<sup>I</sup>', ["'"] = '<sup>Ia</sup>', ['"'] = '<sup>Ib</sup>', ['0'] = '', ['2'] = '<sup>II</sup>', ['3'] = '<sup>III</sup>', [''] = '', ['-'] = '-', -- 甘陝 i3 z̧wn-janƶьn 中原人 җун-ян жын i3 z̧wn-jodi 重要的 җун-ёди [UNIT_SEPARATOR] = '', [' '] = ' ', }, } conv['Latn-pinyin'] = { [INITIAL] = { -- 東干語拼音文字資料 §1vfxk -- 中亞東干語研究 第28頁 ['б'] = 'b', ['п'] = 'p', ['м'] = 'm', ['ф'] = 'f', ['в'] = 'v', ['д'] = 'd', ['т'] = 't', ['н'] = 'n', ['л'] = 'l', ['з'] = 'z', ['ц'] = 'c', ['с'] = 's', ['җ'] = 'zh', ['ч'] = 'ch', ['ш'] = 'sh', ['ж'] = 'r', --[[ җ j ]] --[[ ч q ]] ['щ'] = 'x', ['г'] = 'g', ['к'] = 'k', ['ң'] = 'ng', ['х'] = 'h', ['р'] = 'r', [''] = '', ['й'] = 'y', -- our internal phonetic substitutes ['ӝ'] = 'j', ['ӵ'] = 'q', -- not in the table: non-Dungan letters ['ь'] = 'ʹ', ['ъ'] = 'ʺ', }, [FINAL] = { -- 東干語拼音文字資料 §16 -- 中亞東干語研究 第28頁 ['а'] = 'a', ['ан'] = 'an', ['е'] = 'ie', ['ё'] = 'iao', ['ён'] = 'iang', ['ә'] = 'e', ['и'] = 'i', ['ин'] = 'ing', -- 杜 in ing 林 ing ['о'] = 'ao', -- 杜 o ao 林 ao ['он'] = 'ang', ['у'] = 'ou', -- 杜 u 林 ou ['уа'] = 'ua', ['уан'] = 'uan', ['уә'] = 'uo', ['уй'] = 'ui', -- 杜 uei 林 uei ['ун'] = 'ung', -- 杜 uen ong -- 林 ueng ['уон'] = 'uang', ['уэ'] = 'uai', ['ў'] = 'u', -- 杜 w 林 u ['ү'] = 'ü', ['үан'] = 'üan', ['үә'] = 'üe', ['үн'] = 'üng', -- 杜 ün iong 林 iong ['ы'] = 'i', -- 杜 i e 林 i ['ый'] = 'ei', ['ын'] = 'eng', -- 杜 en eng 林 eng ['э'] = 'ai', -- 杜 ai 林 ê ['ю'] = 'iou', ['я'] = 'ia', ['ян'] = 'ian', ['уэй'] = 'ui', -- 杜 ∅ 林 uai but see above -- our internal phonetic substitutes ['ӹ'] = 'i', -- extrapolated ['ыр'] = 'ir', ['ир'] = 'ir', ['ўр'] = 'ur', ['үр'] = 'ür', --[[ ыр ]] ['ар'] = 'ar', ['яр'] = 'iar', ['уар'] = 'uar', ['үар'] = 'üar', ['әр'] = 'er', ['ер'] = 'ier', ['уәр'] = 'uer', ['үәр'] = 'üer', ['эр'] = 'air', ['уэр'] = 'uair', ['ор'] = 'or', ['ёр'] = 'ior', ['уор'] = 'uor', ['ур'] = 'our', ['юр'] = 'iour', -- our internal phonetic substitutes ['ӹр'] = 'ir', }, [SEPARATOR] = { ['1'] = '<sup>1</sup>', ["'"] = '<sup>1a</sup>', ['"'] = '<sup>1b</sup>', ['0'] = '<sup>0</sup>', ['2'] = '<sup>2</sup>', ['3'] = '<sup>3</sup>', [''] = '', ['-'] = '-', [UNIT_SEPARATOR] = '', [' '] = ' ', }, } local vfhk = {['в']=true, ['ф']=true, ['х']=true, ['к']=true} local bpmvf = {['б']=true, ['п']=true, ['м']=true, ['в']=true, ['ф']=true} local zhch = {['җ']=true, ['ч']=true} local zhchshrh = {['җ']=true, ['ч']=true, ['ш']=true, ['ж']=true} local hi = {['ы']='ӹ', ['ыр']='ӹр'} local jq = {['җ']='ӝ', ['ч']='ӵ'} local vowels_hard = 'аоуэәыўАОУЭӘЫЎ' local vowels_soft = 'яёюеиүЯЁЮЕИҮ' local vowels_soft_can_start_syllables = 'яёюеЯЁЮЕ' local vowels_soft_cannot_start_syllables = 'иүИҮ' local function segment(text) -- [[Module:za-pron]] [[Module:IPA]] local rest = text local phonemes = {} -- 東干語拼音文字資料 §26 -- 隔音符號 with examples ⟨CVn-CV⟩ /CVn.CV/ -- → therefore, ⟨CVnCV⟩ /CV.nCV/ -- (not mentioned: words like җу-е) rest = gsub(rest, mw.ustring.format('([%s])([нН])([%s])', vowels_hard .. vowels_soft, vowels_hard .. vowels_soft), function(v1, c, v2) return v1 .. UNIT_SEPARATOR .. c .. v2 end ) -- syllables mostly don't begin with vowels; process ⟨р⟩ too. ⟨гэран⟩ /гэ.ран/ rest = gsub(rest, mw.ustring.format('([%s])([рР])([%s])', vowels_hard .. vowels_soft, vowels_hard .. vowels_soft_cannot_start_syllables), function(v1, c, v2) return v1 .. UNIT_SEPARATOR .. c .. v2 end ) -- сыйүн rest = gsub(rest, mw.ustring.format('([йЙ])([%s])', vowels_soft_cannot_start_syllables), function(y, v) return UNIT_SEPARATOR .. y .. v end ) while #rest > 0 do local longestmatch, longestmatch_len, longestmatch_type = '', 0, OTHER for phoneme_type, phoneme_type_phonemes in pairs(conv['IPA-broad']) do for phoneme, _ in pairs(phoneme_type_phonemes) do local phoneme_len = len(phoneme) if phoneme_len > longestmatch_len and lower(sub(rest, 1, phoneme_len)) == phoneme then longestmatch = sub(rest, 1, phoneme_len) -- preserve capitalization longestmatch_len = len(longestmatch) longestmatch_type = phoneme_type end end end if longestmatch_len > 0 then if longestmatch == UNIT_SEPARATOR then -- discard it, do not `table.insert` rest = sub(rest, 2) else table.insert(phonemes, {longestmatch, longestmatch_type}) rest = sub(rest, longestmatch_len + 1) end else local phoneme = sub(rest, 1, 1) table.insert(phonemes, {phoneme, longestmatch_type}) rest = sub(rest, 2) end end return phonemes end local function syllabify(segments) -- [[Module:za-pron]] local syllables = {} local current_syllable = {} -- also because lua doesn't have `continue`…… local i = 1 while i < #segments do if segments[i][2] == OTHER and segments[i + 1][2] == OTHER then segments[i][1] = segments[i][1] .. segments[i + 1][1] table.remove(segments, i + 1) else i = i + 1 end end for i, _ in ipairs(segments) do current_syllable[segments[i][2]] = segments[i][1] if not segments[i+1] then table.insert(syllables, current_syllable) elseif segments[i+1][2] <= segments[i][2] then table.insert(syllables, current_syllable) current_syllable = {} end end return syllables end function export:new(text) local o = setmetatable({}, { __index = self }) o.text = text o.segments = segment(o.text) o.syllables = syllabify(o.segments) return o end function export:convert(scheme) local converted = {} -- single-character syllables are not followed by hyphens -- 東干語拼音文字資料 §37 -- 文法 §7 -- abbreviations are not hyphenated -- 東干語拼音文字資料 §37 if scheme == 'Cyrl-hyphenation' then local syllable_hold = '' for i, syllable in ipairs(self.syllables) do syllable_hold = syllable_hold .. (syllable[INITIAL] or '') .. (syllable[FINAL] or '') .. (syllable[OTHER] or '') if len(syllable_hold) == 1 or syllable[OTHER] == '.' then -- wait else table.insert(converted, syllable_hold) syllable_hold = '' end end if syllable_hold ~= '' then table.insert(converted, syllable_hold) end return converted end for i, syllable in ipairs(self.syllables) do local initial, final = syllable[INITIAL] or '', syllable[FINAL] or '' local separator, other = syllable[SEPARATOR] or '', syllable[OTHER] or '' local caps = false if match(initial .. final, '[А-ЯЁӘҖҢЎҮ]') then caps = true initial, final = lower(initial), lower(final) end if jq[initial] and match(final, '^[' .. vowels_soft .. ']') then initial = jq[initial] elseif zhchshrh[initial] and hi[final] then final = hi[final] end -- 東干語拼音文字資料 §4: write әр, not эр (but actual usage seems to be эр?) -- implied in 中亞東干語研究 and 東干語論稿 -- but see 東干語調查研究 第92頁 if initial == '' and final == 'эр' then final = 'әр' end -- 文法 §6 if vfhk[initial] and final == 'и' then final = 'ый' elseif vfhk[initial] and final == 'ир' then final = 'ыр' end -- 東干語拼音文字資料 §11 + footnote 1 -- 中亞東干語研究 第82頁 (implied) -- 寫法 I.5 -- 文法 §6 if bpmvf[initial] and final == 'у' then final = 'ў' elseif bpmvf[initial] and final == 'ур' then final = 'ўр' end initial = conv[scheme][INITIAL][initial] final = conv[scheme][FINAL][final] or '' separator = conv[scheme][SEPARATOR][separator] or '' if scheme == 'IPA-broad' then -- XXX: hack for non-nativized loanwords -- (mis-)parsed as /V.й./ or /.йV./ if (syllable[INITIAL] and lower(syllable[INITIAL])) == 'й' and (not syllable[FINAL] or match(lower(syllable[FINAL]), '^[' .. vowels_hard .. ']')) then initial = 'j' end syllable = initial .. final .. separator elseif scheme == 'Latn-SU' then -- 寫法 I.7 -- 文法 §6 -- ECLO -- XXX: general phonetic rule if syllable[INITIAL] and zhch[lower(syllable[INITIAL])] then final = gsub(final, '^u', 'w') end -- workaround for ⟨ʙ⟩ not having case in Unicode if syllable[INITIAL] == 'Б' then initial = 'B' end syllable = initial .. final .. separator .. other if caps then syllable = gsub(syllable, '^(.)', upper) end elseif scheme == 'Latn-pinyin' then if initial == '' then final = gsub(final, '^i([^n])', 'y%1') end syllable = initial .. final .. separator .. other if caps then syllable = gsub(syllable, '^(.)', upper) end else error('Convert to what representation?') end table.insert(converted, syllable) end if scheme == 'IPA-broad' then converted = '/' .. table.concat(converted) .. '/' elseif scheme == 'Latn-SU' then converted = table.concat(converted) elseif scheme == 'Latn-pinyin' then converted = table.concat(converted) end return converted end function export.tr(text, lang, sc) -- wasteful way to implement semi-intelligent ⟨р⟩ conversion return export:new(text):convert('Latn-SU') end function export.foobar(frame) local lang = require('Module:languages').getByCode('dng') local text = export:new(frame.args[1]) local ret = { text:convert('IPA-broad'), text:convert('Latn-SU'), text:convert('Latn-pinyin'), text:convert('Cyrl-hyphenation'), } ret[1] = require('Module:IPA').format_IPA_full({ lang = lang, a = { 'standard' }, items = {{ pron = ret[1] }} }) ret[4] = require('Module:hyphenation').format_hyphenations({ lang = lang, hyphs = {{ hyph = ret[4] }} }) --[[ }) .. require('Module:utilities').format_categories( lang:getCanonicalName() .. ' ' .. #ret[3] .. '-syllable words', lang ) ]] return table.concat(ret, '\n** ') end return export h60zpgz481pdxr8gl3w7gqdo7u131je মডিউল:User:Suzukaze-c/dng-translit/testcases 828 168688 510240 2026-06-07T12:46:13Z RedminBot 9553 [[en:Module:User:Suzukaze-c/dng-translit/testcases]] থেকে আনা হলো 510240 Scribunto text/plain local tests = require('Module:UnitTests') local m_tr = require('Module:User:Suzukaze-c/dng-translit') function tests:check_analysis(Cyrl, Cyrl_respelling) local a = m_tr:new(Cyrl) local b = m_tr:new(Cyrl_respelling or Cyrl) self:equals(Cyrl, a:convert('IPA-broad') .. '<hr>' .. a:convert('Latn-SU') .. '<hr>' .. a:convert('Latn-pinyin'), b:convert('IPA-broad') .. '<hr>' .. b:convert('Latn-SU') .. '<hr>' .. b:convert('Latn-pinyin'), { show_difference = true } ) end function tests:check_IPA(Cyrl, IPA) self:equals(Cyrl, m_tr:new(Cyrl):convert('IPA-broad'), IPA, { show_difference = true }) end function tests:check_Latn_SU(Cyrl, Latn_SU) self:equals(Cyrl, m_tr:new(Cyrl):convert('Latn-SU'), Latn_SU, { show_difference = true }) end function tests:check_Latn_pinyin(Cyrl, Latn_pinyin) self:equals(Cyrl, m_tr:new(Cyrl):convert('Latn-pinyin'), Latn_pinyin, { show_difference = true }) end function tests:check_Cyrl_hyphenation(Cyrl, Cyrl_hyphenation) self:equals(Cyrl, table.concat(m_tr:new(Cyrl):convert('Cyrl-hyphenation'), '-'), Cyrl_hyphenation, { show_difference = true }) end function tests:test_1_actual_testing() local examples = { -- syllable breaking (not to be confused with hyphenation) { "пино, гэран, эрёнзы, сыйүн", "пи\31но, гэ\31ран, эр\31ён\31зы, сы\31йүн" }, { "шәриат", "шә\31ри\31ат" }, { "директор, материаль", "ди\31рек\31тор, ма\31те\31ри\31аль" }, -- tone { [[го'цо2, бый"хэ2 / нан'дун3, мын"куон3 / нян3фу', җин3мын"]] }, { [[го̌цо̀, бы́йхэ̀ / нан̌дӯн, мы́нкуо̄н / ня̄нфу̌, җӣнмы́н]], [[го'цо2, бый"хэ2 / нан'дун3, мын"куон3 / нян3фу', җин3мын"]] }, } self:iterate(examples, "check_analysis") end function tests:test_9_samples_no_testing() local examples = { -- 東干語拼音文字資料 §36 (with repaired typos) { "Вәмўсы минда шонян / Совет гуонйиншонди, / Зэ кэхуарди гуйтўни / Лян хуар йиён җонни / (Я. Шывазы)" }, -- [[w:ru:Дунганский язык]] { "Лоханҗи сангә нүзы / Нэхур ю йигә лохан лян лопәр / Таму җуали сангә нүзы." }, -- foreign words -- /р/ { "радио" }, -- phrase from [https://dungane.ru/data/documents/Stranicy-iz-Shivaza1937.pdf] { "Хыргуйчўбан" }, -- phrase from [https://www.kromatikon.eu/odads/Library/Primary_Sources/Jusurov%201960%20-%20Khuejzw%20gwjhir.pdf] { "Хырхызстанди гуйҗя җёйүщүәди чўбаншә" }, -- symbols { "«Сывын»" }, -- hard and soft /җ/ and /ч/ -- 東干語拼音文字資料 §5 { "җы, чы, җан, җон, җу-е, чунтян" }, { "җин, чи, җян, чён, җюҗю, чүн" }, -- /р/ -- 東干語拼音文字資料 §6 { "революция, район, артель" }, { "җиргы, нүр, җыхур, лир, харки, давур" }, -- 東干語拼音文字資料 §7 { "бандын бандыр" }, { "дуй дур" }, -- 隔音符號 -- 東干語拼音文字資料 §26 { "җун-ян, чин-ю, сын-ён, тэпин-ён" }, -- hyphenated compounds -- 東干語拼音文字資料 §27 { "дундун-щищи, ванван-занзан, сансан-вава, вава-туно" }, -- pre-revolution nativized loanwords -- 東干語拼音文字資料 §32 { "самавар (самовар), кәлоши (калоши), сарҗян (сажень), путын (пуд)" }, -- post-revolution loanwords -- 東干語拼音文字資料 §33 { "колхоз, гектар, коммунист, метр, грамм, отряд, вице-президент" }, -- proper nouns -- 東干語拼音文字資料 §34 { "Николай Михайлович Пржевалэский, Бетховен, Виктор Гюго, Леонардо да-Винчи, Пак Ден Ай, Румыния, Швейцария, Ташкент, Токмак, Сыр-дарья, Андижан, Кашгар" }, } self:iterate(examples, "check_analysis") end function tests:test_3_IPA() local examples = { { "йүә", "/yə/" }, { "эр, дэр", "/əɾ tɛɾ/" }, -- 東干語調查研究 第309頁 { "тў3лў1фан1ди0 пу1то2, ха1ми1ди0 гуа1, нан1лў2ди0 ён2гонр1 йи1дуә2 хуа1.", "/tʰu⁴⁴lu²⁴fæ̃²⁴ti⁰ pʰu²⁴tʰɔ⁵¹ xa²⁴mi²⁴ti⁰ kua²⁴ næ̃²⁴lu⁵¹ti⁰ iɑŋ⁵¹kɑɾ²⁴ i²⁴⁻¹²tuə⁵¹ xua²⁴/" }, -- 中亞東干語研究 第309頁 { "фә1 щи1фур3, куа1бу1туә1ди0 фу3гуй3, чү2 щи1фур3 го3бу1ван1ди0 җян1нан1.", "/fə⁴⁴⁻¹² ɕi²⁴fuɾ⁴⁴ kʰua²⁴⁻¹²pu²⁴tʰuə²⁴ti⁰ fu⁴⁴kuei⁴⁴ tɕʰy⁵¹ ɕi²⁴fuɾ⁴⁴ kɔ⁴⁴pu²⁴væ̃²⁴ti⁰ tɕiæ̃²⁴⁻¹²næ̃²⁴/" }, } self:iterate(examples, "check_IPA") end function tests:test_4_Latn_SU() local examples = { { "Гуон гуон", "Guon guon" }, { "Чуон чуон", "Çwon çwon" }, -- hyphens -- phrases from [https://www.kromatikon.eu/odads/chronological.html#:~:text=Gansun%20de] { "җун-ян жын", "z̧wn-jan ƶьn" }, { "җун-ёди", "z̧wn-jodi" }, -- /Bʙ/ /Rr Ƣƣ/ -- phrase from [https://dungan-association.com/dunganskaiia-literatura/gi-muchindi-zhyzy/] { "Ба хуар җютуәли", "Ba xuaƣ z̧jutuəli" }, { "ба хуар җютуәли", "ʙa xuaƣ z̧jutuəli" }, -- phrase from [https://dungane.ru/data/documents/Stranicy-iz-Shivaza1937.pdf] { "Хыргуйчўбан", "Xьrgwjçuʙan" }, -- Russian loans -- certainly not worth implementing fully -- but could give hints to somewhat sane handling of loans -- [https://www.kromatikon.eu/odads/chronological.html#:~:text=Vvedenie%20%2D%20Voprosy%20orfografii] -- doubled consonants are reduced { "грамм, программа, профессор, коммуна, группа, миллион", "gram, programa, profesor, komuna, grupa, milion" }, -- except for /nn/ { "тонна, Анна", "tonna, Anna" }, -- and proper nouns { "Виссарион, Таллин", "Vissarion, Tallin" }, { "Молотов, Москва, Иванов, автомобиль", "Molotov, Moskva, Ivanov, avtomoʙil" }, { "Яковлев, партия, январь, поляк", "Jakovljev, partija, janvar, poliak" }, { "Европа, Енисей, Чапаев", "Jevropa, Jenisei, Çiapajev" }, { "Энгельс, Эстония", "Engels, Estonia" }, { "Челюскин, Юлия", "Çieliuskin, Julia" }, { "Фурманов, Пулатов", "Furmanov, Pulatov" }, { "Польша, Гоголь", "Polşa, Gogol" }, { "Каганович, Иванович", "Kaganoviç, Ivanoviç" }, { "Москва, совет, колхоз, коммунист, комсомол", "Moskva, sovet, kolxoz, komunist, komsomol" }, { "Ворошилов, Жирков", "Voroşьlov, Ƶьrkov" }, { "Киров, Микоян", "Kirov, Mikojan" }, { "революция, Азия", "revoliucija, Azija" }, { "социализм, гегемония, Париж, пролетариат, интернационал", "socializm, gegemonija, Pariƶ, proletarijat, internacional" }, { "Ленинград, Шмидт, Кронштадт, трактор, пролетариат", "Leningrad, Şmidt, Kronştadt, traktor, proletariat" }, { "социализм, ленинизм, коммунист, социалист", "socializm, leninizm, komunist, socialist" }, { "Луначарский, Дубровский", "Lunaçiarski, Duʙrovski" }, } self:iterate(examples, "check_Latn_SU") end function tests:test_5_Latn_pinyin() local examples = { { "зы цы сы; җы чы шы жы", "zi ci si; zhi chi shi ri" }, { "җа ча ша; җя чя щя", "zha cha sha; jia qia xia" }, } self:iterate(examples, "check_Latn_pinyin") end function tests:test_6_Cyrl_hyphenation() local examples = { { "пино, гэран, эрёнзы, сыйүн", "пи-но, гэ-ран, эр-ён-зы, сы-йүн" }, { "юни, ее, яя", "юни, ее, яя" }, { "з.д.", "з.д." }, { "ударник, агроном", "удар-ник, агро-ном" }, { "ударник агроном", "удар-ник агро-ном" }, } self:iterate(examples, "check_Cyrl_hyphenation") end return tests ii5i75loy8pzvhdel1nk7rjbumw0kmh মডিউল:User:Thecurran/Deva-Latn-translit 828 168689 510241 2026-06-07T12:46:14Z RedminBot 9553 [[en:Module:User:Thecurran/Deva-Latn-translit]] থেকে আনা হলো 510241 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local match = mw.ustring.match local sub = mw.ustring.sub local c = { ["Deva"] = { ["k"] = "क", ["kh"] = "ख", ["g"] = "ग", ["gh"] = "घ", ["ṅ"] = "ङ", ["c"] = "च", ["ch"] = "छ", ["j"] = "ज", ["jh"] = "झ", ["ñ"] = "ञ", ["ṭ"] = "ट", ["ṭh"] = "ठ", ["ḍ"] = "ड", ["ḍh"] = "ढ", ["ṇ"] = "ण", ["t"] = "त", ["th"] = "थ", ["d"] = "द", ["dh"] = "ध", ["n"] = "न", ["p"] = "प", ["ph"] = "फ", ["b"] = "ब", ["bh"] = "भ", ["m"] = "म", ["y"] = "य", ["r"] = "र", ["l"] = "ल", ["ḷ"] = "ळ", ["v"] = "व", ["ś"] = "श", ["ṣ"] = "ष", ["s"] = "स", ["h"] = "ह", ["ʔ"] = "ॽ", ["q"] = "क़", ["k͟h"] = "ख़", ["ġ"] = "ग़", ["z"] = "ज़", ["ž"] = "झ़", ["ṛ"] = "ड़", ["ṛh"] = "ढ़", ["ṉ"] = "ऩ", ["f"] = "फ़", ["ẏ"] = "य़", ["ṟ"] = "ऱ", ["ḻ"] = "ऴ", ["ç"] = "श़", ["g̤"] = "ॻ", ["j̤"] = "ॼ", ["d̤"] = "ॾ", ["b̤"] = "ॿ", ["kt"] = "क्त", ["kṣ"] = "क्ष", ["jñ"] = "ज्ञ", ["tt"] = "त्त", ["tr"] = "त्र", ["dd"] = "द्द", ["ddh"] = "द्ध", ["db"] = "द्ब", ["dbh"] = "द्भ", ["dm"] = "द्म", ["dy"] = "द्य", ["dv"] = "द्व", ["śr"] = "श्र", ["śn"] = "श्न", ["str"] = "स्त्र", ["hm"] = "ह्म", ["hy"] = "ह्म", ["æ"] = "ॲ", ["ǣ"] = "ऄ", ["a"] = "अ", ["ā"] = "आ", ["i"] = "इ", ["ī"] = "ई", ["u"] = "उ", ["ū"] = "ऊ", ["r̥"] = "ऋ", ["r̥̄"] = "ॠ", ["l̥"] = "ऌ", ["l̥̄"] = "ॡ", ["ê"] = "ऍ", ["e"] = "ऎ", ["ē"] = "ए", ["ai"] = "ऐ", ["ô"] = "ऑ", ["o"] = "ऒ", ["ō"] = "ओ", ["au"] = "औ", ["m͒"] = "ऀ", ["m̐"] = "ँ", ["ṁ"] = "ं", ["ḥ"] = "ः", ["'"] = "ऽ", ["."] = "्", --Nukta↘, ↖Candrabindu, Anusvara, Visarga, Agravaha, Virama, ["̊"] = "़", [""] = "", }, ["Khmr"] = { ["k"] = "ក", ["kh"] = "ខ", ["g"] = "គ", ["gh"] = "ឃ", ["ṅ"] = "ង", ["c"] = "ច", ["ch"] = "ឆ", ["j"] = "ជ", ["jh"] = "ឈ", ["ñ"] = "ញ", ["ṭ"] = "ដ", ["ṭh"] = "ឋ", ["ḍ"] = "ឌ", ["ḍh"] = "ឍ", ["ṇ"] = "ណ", ["t"] = "ត", ["th"] = "ថ", ["d"] = "ទ", ["dh"] = "ធ", ["n"] = "ន", ["p"] = "ប", ["ph"] = "ផ", ["b"] = "ព", ["bh"] = "ភ", ["m"] = "ម", ["y"] = "យ", ["r"] = "រ", ["l"] = "ល", ["ḷ"] = "ឡ", ["v"] = "វ", ["ś"] = "ឝ", ["ṣ"] = "ឞ", ["s"] = "ស", ["h"] = "ហ", ["ʔ"] = "អ", ["a"] = "អ", ["ā"] = "អា", ["i"] = "ឥ", ["ī"] = "ឦ", ["u"] = "ឧ", ["ū"] = "ឩ", ["uk"] = "ឨ", ["r̥"] = "ឫ", ["r̥̄"] = "ឬ", ["l̥"] = "ឭ", ["l̥̄"] = "ឮ", ["ē"] = "ឯ", ["ai"] = "ឰ", ["ô"] = "ឪ", ["o"] = "ឲ", ["ō"] = "ឱ", ["au"] = "ឳ", ["ṁ"] = "ំ", ["ḥ"] = "ះ", ["'"] = "ៜ", ["."] = "៑", ["̊"] = "ំ", -- Anusvara, Visarga, Agravaha, Virama, Nukta, [""] = "", }, ["Mymr"] = { ["k"] = "က", ["kh"] = "ခ", ["g"] = "ဂ", ["gh"] = "ဃ", ["ṅ"] = "င", ["c"] = "စ", ["ch"] = "ဆ", ["j"] = "ဇ", ["jh"] = "ဈ", ["ñ"] = "ဉ", ["ṭ"] = "ဋ", ["ṭh"] = "ဌ", ["ḍ"] = "ဍ", ["ḍh"] = "ဎ", ["ṇ"] = "ဏ", ["t"] = "တ", ["th"] = "ထ", ["d"] = "ဒ", ["dh"] = "ဓ", ["n"] = "န", ["p"] = "ပ", ["ph"] = "ဖ", ["b"] = "ဗ", ["bh"] = "ဘ", ["m"] = "မ", ["y"] = "ယ", ["r"] = "ရ", ["l"] = "လ", ["ḷ"] = "ဠ", ["v"] = "ဝ", ["ś"] = "ၐ", ["ṣ"] = "ၑ", ["s"] = "သ", ["h"] = "ဟ", ["ss"] = "ဿ", ["ññ"] = "ည", ["g̤"] = "ၚ", ["j̤"] = "ၛ", ["d̤"] = "ၜ", ["b̤"] = "ၝ", ["św"] = "ၡ", -- Mon ṅa, Mon jha, Mon bba, Mon bbe, S'gaw śa, ["thw"] = "ၥ", ["pw"] = "ၦ", ["ṇw"] = "ၮ", ["yw"] = "ၯ", ["ghw"] = "ၰ", -- Pwo tha, Pwo pwa, Pwo ṇa, Pwo ywa, Pwo ghwa, ["q"] = "ၵ", ["k͟h"] = "ၶ", ["ġ"] = "ၷ", ["ç"] = "ၸ", ["z"] = "ၹ", -- Shan ka, Shan kha, Shan ga, Shan ca, Shan za, ["ẏ"] = "ၺ", ["ṛ"] = "ၻ", ["ṉ"] = "ၼ", ["p̊"] = "ၽ", ["f"] = "ၾ", -- Shan ña, Shan da, Shan na, Shan pha, Shan fa, ["b̊"] = "ၿ", ["ṛh"] = "ႀ", ["ž"] = "ႁ", ["f̊"] = "ႎ", -- Shan ba, Shan tha, Shan ha, Palaung fa, ["kk"] = "က္က", ["kkh"] = "က္ခ", ["gg"] = "ဂ္ဂ", ["ggh"] = "ဂ္ဃ", ["cc"] = "စ္စ", ["cch"] = "စ္ဆ", ["jj"] = "ဇ္ဇ", ["jjh"] = "ဇ္ဈ", ["ṭṭ"] = "ဋ္ဋ", ["ṭṭh"] = "ဋ္ဌ", ["ḍḍ"] = "ဍ္ဍ", ["ḍḍh"] = "ဍ္ဎ", ["tt"] = "တ္တ", ["tth"] = "တ္ထ", ["dd"] = "ဒ္ဒ", ["ddh"] = "ဒ္ဓ", ["pp"] = "ပ္ပ", ["pph"] = "ပ္ဖ", ["bb"] = "ဗ္ဗ", ["bbh"] = "ဗ္ဘ", ["ñc"] = "ဉ္စ", ["ñch"] = "ဉ္ဆ", ["ñj"] = "ဉ္ဇ", ["ñjh"] = "ဉ္ဈ", ["ṇṭ"] = "ဏ္ဋ", ["ṇḍ"] = "ဏ္ဍ", ["nt"] = "န္တ", ["nth"] = "န္ထ", ["nd"] = "န္ဒ", ["ndh"] = "န္ဓ", ["nn"] = "န္န", ["mp"] = "မ္ပ", ["mb"] = "မ္ဗ", ["mbh"] = "မ္ဘ", ["mm"] = "မ္မ", ["a"] = "အ", ["ā"] = "အာ", ["i"] = "ဣ", ["ī"] = "ဤ", ["u"] = "ဥ", ["ū"] = "ဦ", ["r̥"] = "ၒ", ["r̥̄"] = "ၓ", ["l̥"] = "ၔ", ["l̥̄"] = "ၕ", ["e"] = "ဧ", ["ē"] = "ဨ", ["ō"] = "ဩ", ["au"] = "ဪ", ["ṁ"] = "ံ", ["ḥ"] = "း", ["'"] = "်", ["."] = "္", ["̊"] = "့", -- Anusvara, Visarga, Agravaha, Virama, Nukta, [""] = "", }, ["Sinh"] = { ["k"] = "ක", ["kh"] = "ඛ", ["g"] = "ග", ["gh"] = "ඝ", ["ṅ"] = "ඞ", ["c"] = "ච", ["ch"] = "ඡ", ["j"] = "ජ", ["jh"] = "ඣ", ["ñ"] = "ඤ", ["ṭ"] = "ට", ["ṭh"] = "ඨ", ["ḍ"] = "ඩ", ["ḍh"] = "ඪ", ["ṇ"] = "ණ", ["t"] = "ත", ["th"] = "ථ", ["d"] = "ද", ["dh"] = "ධ", ["n"] = "න", ["p"] = "ප", ["ph"] = "ඵ", ["b"] = "බ", ["bh"] = "භ", ["m"] = "ම", ["y"] = "ය", ["r"] = "ර", ["l"] = "ල", ["ḷ"] = "ළ", ["v"] = "ව", ["ś"] = "ශ", ["ṣ"] = "ෂ", ["s"] = "ස", ["h"] = "හ", ["g͜n"] = "ඥ", ["ṁ͜g"] = "ඟ", ["ṁ͜j"] = "ඦ", ["ṁ͜ḍ"] = "ඬ", ["ṁ͜d"] = "ඳ", ["ṁ͜b"] = "ඹ", ["f"] = "ෆ", ["æ"] = "ඇ", ["ǣ"] = "ඈ", ["a"] = "අ", ["ā"] = "ආ", ["i"] = "ඉ", ["ī"] = "ඊ", ["u"] = "උ", ["ū"] = "ඌ", ["r̥"] = "ඍ", ["r̥̄"] = "ඎ", ["l̥"] = "ඏ", ["l̥̄"] = "ඐ", ["e"] = "එ", ["ē"] ="ඒ", ["ai"] = "ඓ", ["o"] = "ඔ", ["ō"] = "ඕ", ["au"] = "ඖ", ["ṁ"] = "ං", ["ḥ"] = "ඃ", ["."] = "්", Anusvara, Visarga, Virama, [""] = "", }, ["Thai"] = { ["k"] = "ก", ["kh"] = "ข", ["g"] = "ค", ["gh"] = "ฆ", ["ṅ"] = "ง", ["c"] = "จ", ["ch"] = "ฉ", ["j"] = "ช", ["jh"] = "ฌ", ["ñ"] = "ญ", ["ṭ"] = "ฏ", ["ṭh"] = "ฐ", ["ḍ"] = "ฑ", ["ḍh"] = "ฒ", ["ṇ"] = "ณ", ["t"] = "ต", ["th"] = "ถ", ["d"] = "ท", ["dh"] = "ธ", ["n"] = "น", ["p"] = "ป", ["ph"] = "ผ", ["b"] = "พ", ["bh"] = "ภ", ["m"] = "ม", ["y"] = "ย", ["r"] = "ร", ["l"] = "ล", ["v"] = "ว", ["s"] = "ส", ["h"] = "ห", ["ḷ"] = "ฬ", ["a"] = "อ", ["ā"] = "อา", ["i"] = "อิ", ["ī"] = "อี", ["u"] = "อุ", ["ū"] = "อู", ["e"] = "อเ", --to be swapped later ["o"] = "อโ", --to be swapped later ["ṃ"] = "ํ", ["ḥ"] = "", [""] = "", }, } local v = { ["Deva"] = { ["a"] = "", ["ā"] = " ा", ["i"] = " ि", ["ī"] = " ी", ["u"] = " ु", ["ū"] = " ू", ["r̥"] = " ृ", ["r̥̄"] = " ॄ", ["l̥"] = " ॢ", ["l̥̄"] = " ॣ", ["ê"] = " ॅ", ["e"] = " ॆ", ["ē"] = " े", ["ai"] = " ै", ["ô"] = " ॉ", ["o"] = " ो", ["ō"] = " ो", ["au"] = " ौ", [""] = "", }, ["Khmr"] = { ["a"] = "", ["ā"] = " ា", ["i"] = " ិ", ["ī"] = " ី", ["u"] = " ុ", ["ū"] = " ូ", ["y"] = " ឹ", ["yy"] = " ឺ", ["ua"] = " ួ", ["oe"] = " ើ", ["ya"] = " ឿ", ["ie"] = " ៀ", ["ē"] = " េ", ["ae"] = " ែ", ["ai"] = " ៃ", ["ō"] = " ោ", ["au"] = " ៅ", [""] = "", }, ["Mymr"] = { ["a"] = "", ["ā"] = " ာ", -- tall ["ā"] = " ါ", ["i"] = " ိ", ["ī"] = " ီ", ["u"] = " ု", ["ū"] = " ူ", ["ē"] = " ေ", ["ai"] = " ဲ", -- above ["ē"] = " ဵ", Mon ["ī"] = " ဳ", Mon ["ō"] = " ဴ", ["ō"] = " ော", [""] = "", }, ["Sinh"] = { ["a"] = "", ["ā"] = "ා", ["i"] = "ි", ["ī"] = "ී", ["u"] = "ු", ["ū"] = "ූ", ["ē"] = "ෙ", ["ō"] = "ො", [""] = "", }, ["Thai"] = { ["a"] = "", ["ā"] = "า", ["i"] = "ิ", ["ī"] = "ี", ["u"] = "ุ", ["ū"] = "ู", ["e"] = "เ", ["o"] = "โ", [""] = "", }, } local s = { ["Deva"] = { ["0"] = "०", ["1"] = "१", ["2"] = "२", ["3"] = "३", ["4"] = "४", ["5"] = "५", ["6"] = "६", ["7"] = "७", ["8"] = "८", ["9"] = "९", ["."] = "।", ["-"] = "-", }, ["Khmr"] = { ["0"] = "០", ["1"] = "១", ["2"] = "២", ["3"] = "៣", ["4"] = "៤", ["5"] = "៥", ["6"] = "៦", ["7"] = "៧", ["8"] = "៨", ["9"] = "៩", ["."] = "។", ["-"] = "-", }, ["Mymr"] = { ["0"] = "၀", ["1"] = "၁", ["2"] = "၂", ["3"] = "၃", ["4"] = "၄", ["5"] = "၅", ["6"] = "၆", ["7"] = "၇", ["8"] = "၈", ["9"] = "၉", ["."] = "။", ["-"] = "-", }, ["Sinh"] = { ["0"] = "0", ["1"] = "1", ["2"] = "2", ["3"] = "3", ["4"] = "4", ["5"] = "5", ["6"] = "6", ["7"] = "7", ["8"] = "8", ["9"] = "9", ["."] = ".", ["-"] = "-", }, ["Thai"] = { ["0"] = "๐", ["1"] = "๑", ["2"] = "๒", ["3"] = "๓", ["4"] = "๔", ["5"] = "๕", ["6"] = "๖", ["7"] = "๗", ["8"] = "๘", ["9"] = "๙", ["."] = ".", ["-"] = "-", }, } local join = { ["Deva"] = "्", ["Khmr"] = "្", ["Mymr"] = "္", ["Sinh"] = "්", ["Thai"] = "ฺ", } local kill = { ["Deva"] = "्", ["Khmr"] = "៑", ["Mymr"] = "်", ["Sinh"] = "්", ["Thai"] = "ฺ", } local function return_error(text) return error(("Unrecognised part: \"%s\""):format(text)) end function export.tr(text, script) if type(text) == "table" then text, script = text.args[1], text.args[2] end text = gsub(text, "[0-9\.]", s[script]) for word in mw.ustring.gmatch(text, "[aāiīuūeoṃḥkhgṅcjñṭḍṇtdnpbmyrlḷvs]+") do local word_conv, orig_word = {}, word word = gsub(word, "([aāiīuūeo][ṃḥ]?)", "%1 ") word = gsub(word, " $", "") for syllable in mw.text.gsplit(word, " ") do if not match(syllable, "[aāiīuūeoṃḥ]$") then syllable = syllable .. "a" .. kill[script] end syllable = gsub(syllable, "^([khgṅcjñṭḍṇtdnpbmyrlḷvs]*)([aāiīuūeo])([ṃḥ]?)([्៑်්ฺ]?)$", function(onset, vowel, coda, optJoin) if onset == "" then onset = vowel vowel = "" end if not c[script][onset] then if match(onset, "^[ṅñṇnm]") then onset = c[script][sub(onset, 1, 1)] .. join[script] .. (c[script][sub(onset, 2, -1)] or return_error(onset)) elseif match(onset, "h$") and sub(onset, 1, 1) == sub(onset, 2, 2) then onset = (c[script][sub(onset, 1, 1)] or return_error(onset)) .. join[script] .. (c[script][sub(onset, 2, -1)] or return_error(onset)) else temp = {} for character in mw.text.gsplit(onset, "") do table.insert(temp, (c[script][character] or return_error(onset))) end onset = table.concat(temp, join[script]) end else onset = c[script][onset] end return onset .. (v[script][vowel] or return_error(vowel)) .. c[script][coda] .. optJoin end) table.insert(word_conv, syllable) end word = table.concat(word_conv, "") if script == "Thai" then word = gsub(word, "(.)([เโ])", "%2%1") end if script == "Mymr" then word = gsub(word, "([ဝခဂငဒပ])(္.)ာ", "%1%2ါ") word = gsub(word, "([ဝခဂငဒပ])ာ", "%1ါ") word = gsub(word, "္[ယဝ]", { ["္ယ"] = "ျ", ["္ဝ"] = "ွ" }) end text = gsub(text, orig_word, word) end return text end return export ocintuxc1o516jrhym0yrmxjv7arjlr মডিউল:User:Theknightwho/Cyrs-translit 828 168690 510242 2026-06-07T12:46:14Z RedminBot 9553 [[en:Module:User:Theknightwho/Cyrs-translit]] থেকে আনা হলো 510242 Scribunto text/plain local export = {} local numbers = mw.loadData("Module:Cyrs-translit/numbers") local ugsub = mw.ustring.gsub local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local U = mw.ustring.char local umatch = mw.ustring.match local usub = mw.ustring.sub local ulower = mw.ustring.lower local acute = U(0x301) local grave = U(0x300) local circumflex = U(0x302) local kamora = U(0x0484) local titlo = U(0x0483) local dasia = U(0x0485) local psili = U(0x0486) local vzmet = U(0xA66F) local breathing = psili .. dasia local accent = "[" .. acute .. grave .. circumflex .. breathing .. "]*" local vowels = "aAeEiIoOuUyY" local vowel_or_soft = "[" .. vowels .. "ʹ]" local common_letters = { ["А"] = 'A', ["а"] = 'a', ["Б"] = 'B', ["б"] = 'b', ["В"] = 'V', ["в"] = 'v', ["Г"] = 'G', ["г"] = 'g', ["Д"] = 'D', ["д"] = 'd', ["Е"] = 'E', ["е"] = 'e', ["Ж"] = 'Ž', ["ж"] = 'ž', ["Ѕ"] = 'Dz', ["ѕ"] = 'dz', ["З"] = 'Z', ["з"] = 'z', ["И"] = 'I', ["и"] = 'i', ["І"] = 'I', ["і"] = 'i', -- Contrastive with "И". ["Й"] = 'J', ["й"] = 'j', ["Ꙉ"] = 'Đ', ["ꙉ"] = 'đ', ["К"] = 'K', ["к"] = 'k', ["Л"] = 'L', ["л"] = 'l', ["М"] = 'M', ["м"] = 'm', ["Н"] = 'N', ["н"] = 'n', ["О"] = 'O', ["о"] = 'o', ["П"] = 'P', ["п"] = 'p', ["Р"] = 'R', ["р"] = 'r', ["С"] = 'S', ["с"] = 's', ["Т"] = 'T', ["т"] = 't', ["Ꙋ"] = 'U', ["ꙋ"] = 'u', ["У"] = 'U', ["у"] = 'u', ["Ф"] = 'F', ["ф"] = 'f', ["Х"] = 'X', ["х"] = 'x', ["Ѡ"] = 'O', ["ѡ"] = 'o', -- Contrastive with "О". ["Ѿ"] = 'Ot', ["ѿ"] = 'ot', -- Becomes "otŭ" as appropriate. ["Ѽ"] = 'Ô', ["ѽ"] = 'ô', ["Ц"] = 'C', ["ц"] = 'c', ["Ч"] = 'Č', ["ч"] = 'č', ["Ш"] = 'Š', ["ш"] = 'š', ["Щ"] = 'Št', ["щ"] = 'št', ["Ъ"] = 'Ŭ', ["ъ"] = 'ŭ', ["Ꙑ"] = 'Y', ["ꙑ"] = 'y', ["Ь"] = 'Ĭ', ["ь"] = 'ĭ', ["Ѣ"] = 'Ě', ["ѣ"] = 'ě', ["Ꙓ"] = 'Jě', ["ꙓ"] = 'jě', ["Ꙗ"] = 'Ja', ["ꙗ"] = 'ja', ["Ѥ"] = 'Je', ["ѥ"] = 'je', ["Ю"] = 'Ju', ["ю"] = 'ju', ["Ѫ"] = 'Ǫ', ["ѫ"] = 'ǫ', ["Ѭ"] = 'Jǫ', ["ѭ"] = 'jǫ', ["Ѧ"] = 'Ę', ["ѧ"] = 'ę', ["Ѩ"] = 'Ję', ["ѩ"] = 'ję', ["Ѯ"] = 'Ks', ["ѯ"] = 'ks', ["Ѱ"] = 'Ps', ["ѱ"] = 'ps', ["Ѳ"] = 'Θ', ["ѳ"] = 'θ', ["Ѵ"] = 'Ü', ["ѵ"] = 'ü', ["Ѷ"] = 'Ü', ["ѷ"] = 'ü', -- Contrastive with "Ѵ". ["Ҁ"] = 'Q', ["ҁ"] = 'q', } local variants = { ["ᲀ"] = 'в', ["Ґ"] = 'Г', ["ґ"] = 'г', ["ᲁ"] = 'д', ["Ꙣ"] = 'Д' .. kamora, ["ꙣ"] = 'д' .. kamora, ["Є"] = 'Е', ["є"] = 'е', ["Э"] = 'Е', ["э"] = 'е', ["Ꙃ"] = 'Ѕ', ["ꙃ"] = 'ѕ', ["Ꙅ"] = 'Ѕ', ["ꙅ"] = 'ѕ', ["Ꙁ"] = 'З', ["ꙁ"] = 'з', ["Ӥ"] = 'И', ["ӥ"] = 'и', ["Ї"] = 'І', ["ї"] = 'і', ["Ꙇ"] = 'І', ["ꙇ"] = 'і', ["Ꙥ"] = 'Л' .. kamora, ["ꙥ"] = 'л' .. kamora, ["Ꙧ"] = 'М' .. kamora, ["ꙧ"] = 'м' .. kamora, ["Ҥ"] = 'Н' .. kamora, ["ҥ"] = 'н' .. kamora, ["Ѻ"] = 'О', ["ѻ"] = 'о', ["Ꙩ"] = 'О', ["ꙩ"] = 'о', ["Ꙫ"] = 'О', ["ꙫ"] = 'о', ["Ꚛ"] = 'О', ["ꚛ"] = 'о', ["Ꚙ"] = 'О', ["ꚙ"] = 'о', ["Ꙭ"] = 'О', ["ꙭ"] = 'о', ["ꙮ"] = 'о', ["ᲂ"] = 'о', ["ᲃ"] = 'с', ["ᲄ"] = 'т', ["ᲅ"] = 'т', ["Ѹ"] = 'Ꙋ', ["ѹ"] = 'ꙋ', ["ᲈ"] = 'ꙋ', ["Ꙍ"] = 'Ѡ', ["ꙍ"] = 'ѡ', ["Ꙡ"] = 'Ц', ["ꙡ"] = 'ц', -- From a merger of Ц and Ч in Old Novgorodian ["Ы"] = 'Ꙑ', ["ы"] = 'ꙑ', ["ᲆ"] = 'ъ', ["ᲇ"] = 'ѣ', ["Я"] = 'Ꙗ', ["я"] = 'ꙗ', ["Ꙕ"] = 'Ю', ["ꙕ"] = 'ю', ["Ꙛ"] = 'Ѫ', ["ꙛ"] = 'ѫ', ["Ꙙ"] = 'Ѧ', ["ꙙ"] = 'ѧ', ["Ꙝ"] = 'Ѩ', ["ꙝ"] = 'ѩ', } local common_iotated_initial = { ["Ѣ"] = 'Ꙓ', ["ѣ"] = 'ꙓ', } local common_iotated_after_vowel = { ["Е"] = 'Ѥ', ["е"] = 'ѥ', ["Ѣ"] = 'Ꙓ', ["ѣ"] = 'ꙓ', ["Ѧ"] = 'Ѩ', ["ѧ"] = 'ѩ', } local lang_letters = {} local lang_iotated_initial = {} local lang_iotated_after_vowel = {} local uo_is_u = {} -- Old East Slavic lang_letters["orv"] = setmetatable({ ["Щ"] = 'Šč', ["щ"] = 'šč', }, {__index = common_letters}) lang_iotated_initial["orv"] = setmetatable({ ["Е"] = 'Ѥ', ["е"] = 'ѥ', ["Ѧ"] = 'Ѩ', ["ѧ"] = 'ѩ', }, {__index = common_iotated_initial}) -- Old Novgorodian lang_letters["zle-ono"] = setmetatable({ ["Ц"] = 'Ć', ["ц"] = 'ć', ["Ч"] = 'Ć', ["ч"] = 'ć', ["Щ"] = 'Ść', ["щ"] = 'ść', }, {__index = common_letters}) lang_iotated_initial["zle-ono"] = lang_iotated_initial["orv"] uo_is_u["zle-ono"] = true -- Old Pskovian lang_letters["zle-ops"] = setmetatable({ -- In addition to zle-ono above. ["Ж"] = 'Ź', ["ж"] = 'ź', ["Ѕ"] = 'Dź', ["ѕ"] = 'dź', ["З"] = 'Ź', ["з"] = 'ź', ["С"] = 'Ś', ["с"] = 'ś', ["Ш"] = 'Ś', ["ш"] = 'ś', ["Щ"] = 'Šk', ["щ"] = 'šk', }, {__index = lang_letters["zle-ono"]}) lang_iotated_initial["zle-ops"] = setmetatable({ -- In addition to zle-ono above. ["Ѫ"] = 'Ѭ', ["ѫ"] = 'ѭ', }, {__index = lang_iotated_initial["zle-ono"]}) lang_iotated_after_vowel["zle-ops"] = setmetatable({ ["Ѫ"] = 'Ѭ', ["ѫ"] = 'ѭ', }, {__index = common_iotated_after_vowel}) uo_is_u["zle-ops"] = true local function handle_v(prev, v) return prev .. (v == "Ѵ" and "В" or "в") end local function handle_ou(o, ac) return (ulower(o) == o and "у" or "У") .. ac end local function handle_breathing(vowel, br) -- Don't mark smooth breathing. if br == psili then return vowel end -- Mark rough breathing with "h". local vowel_lower = ulower(vowel) return (vowel_lower == vowel and "h" or "H") .. vowel_lower end function export.tr(text, lang, sc) if not sc then sc = require("Module:languages").getByCode(lang, nil, true):findBestScript(text):getCode() end if sc ~= "Cyrs" then return nil end local input = text -- Decompose any acute and grave accents. text = ugsub(toNFD(text), "[^" .. acute .. grave .. "]+", toNFC) -- Canonicalize any variants. text = text:gsub(".[\128-\191]*", variants) -- Transliterate the kamora as prime. text = text:gsub(kamora, "ʹ") -- Treat "Ѵ" as the consonant "В" (transliterated "V") in diphthongs that -- correspond to Ancient Greek "αυ", "ευ" and "ηυ" (equivalent to "аѵ", "еѵ" -- and "иѵ"). Note that "ιυ" ("іѵ") is not a diphthong, and "ου" ("оѵ") is -- a long vowel. However, this doesn't apply to "Ѷ", as the diacritic means -- it must be treated as a vowel. text = ugsub(text, "([аАеЕиИꙗꙖѥѤ]" .. accent .. ")([ѵѴ])", handle_v) local letters = lang_letters[lang] or common_letters -- Convert "ѿ" to "ѡт" if followed by a non-iotated vowel (including those -- which iotate only after vowels) or a kamora, and "ѡтъ" in all other -- cases. text = ugsub(text, "([ѿѾ])(" .. accent .. ")()", function(ot, ac, loc) ot = (ot == "Ѿ" and "Ѡ" or "ѡ") .. ac .. "т" local nxt = toNFD(usub(text, loc, loc):gsub(".[\128-\191]*", letters)) if not umatch(nxt, "^" .. vowel_or_soft) then ot = ot .. "ъ" end return ot end) -- Handle any vowels which are iotated at the start of words. local iotated_initial = lang_iotated_initial[lang] or common_iotated_initial text = ugsub(text, "%f[%w].", function(m) return iotated_initial[m] -- Can't input iotated_initial directly, as mw.ustring.gsub doesn't respect metamethods... end) -- Handle any vowels which are iotated after another vowel or a kamora. local iotated_after_vowel = lang_iotated_after_vowel[lang] or common_iotated_after_vowel text = ugsub(text, "()(" .. accent .. ")(.)", function(loc, ac, letter) local iotated = iotated_after_vowel[letter] if iotated then loc = loc - 1 local prev = toNFD((loc == 0 and "" or usub(text, loc, loc)):gsub(".[\128-\191]*", letters)) if umatch(prev, vowel_or_soft .. "%W*$") then return ac .. iotated end end end) -- Treat "ъі" as "ꙑ", and make "ъ" tense ("ŷ") before "и" or an iotated vowel. text = ugsub(text, "([Ъъ])(" .. accent .. ")()([иИіІ]?)", function(yer, ac, loc, i) local nxt = toNFD(usub(text, loc, loc):gsub(".[\128-\191]*", letters)):match("^[iIjJ]") if nxt ~= nil then return (yer == "Ъ" and "Ꙑ" or "ꙑ") .. ( (i == "і" or i == "І") and ac or circumflex .. ac .. i ) end end) -- In some languages, treat "уо" ("uo") as "у" ("u"). if uo_is_u[lang] then text = ugsub(text, "([уУѵѴѷѶ]" .. accent .. ")[оО]", "%1") end -- Treat "оу" ("ou") as "у" ("u"). text = ugsub(text, "([оО])(" .. accent .. ")[уУѵѴѷѶ]", handle_ou) -- Substitute any numbers. for key, repl in pairs(numbers) do text = ugsub(text, key, repl) end -- Main substitution. text = text:gsub(".[\128-\191]*", letters) -- Handle any breathing marks. text = ugsub(toNFD(text), "([" .. vowels .. "][" .. vowels .. "%W]-)([" .. breathing .. "])", handle_breathing) if umatch(text, "[" .. breathing .. "]") then error("Invalid breathing marks in input " .. mw.dumpObject(input)) end -- Transliterate the titlo and vzmet as colon. text = ugsub(text, "[" .. titlo .. vzmet .. "]", ":") return toNFC(text) end return export 25p46lo7j82mqs31q3fkse53esyogle মডিউল:User:Theknightwho/abq-translit 828 168691 510243 2026-06-07T12:46:15Z RedminBot 9553 [[en:Module:User:Theknightwho/abq-translit]] থেকে আনা হলো 510243 Scribunto text/plain local export = {} local tt = { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "ć", ["ш"] = "š", ["щ"] = "ś", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "è", ["ю"] = "ju", ["я"] = "ja" } local digraphs = { ["гъ"] = "ɣ", ["гь"] = "gʲ", ["гӏ"] = "ʻ", ["дж"] = "dž", ["дз"] = "dz", ["жь"] = "ź", ["къ"] = "qʼ", ["кь"] = "kʲ", ["кӏ"] = "kʼ", ["ль"] = "lᶻ", ["лӏ"] = "lˢʼ", ["пӏ"] = "pʼ", ["тл"] = "tˡ", ["тӏ"] = "tʼ", ["фӏ"] = "fʼ", ["хъ"] = "q", ["хь"] = "xʲ", ["хӏ"] = "ḥ", ["цӏ"] = "cʼ", ["чӏ"] = "ćʼ", ["шӏ"] = "čʼ" } local trigraphs = { ["гъь"] = "ɣʲ", ["джь"] = "dź", ["къь"] = "qʲʼ", ["кӏь"] = "kʲʼ" } function export.tr(text, lang, sc) local str_gsub = string.gsub local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*" -- Convert "false" palochkas (entered as Latin "I" or "l", or Cyrillic "І"). Lowercase palochka is found in tables above. text = mw.ustring.gsub(text, "[IlІ]", "ӏ") -- Divide string into words. local words = {} local case for _,word in mw.ustring.gmatch(text, "(%s*)(%S+)(%s*)", "%2") do -- Determine case form of the word, then convert to lowercase. if word == mw.ustring.upper(word) then case = 2 elseif mw.ustring.sub(word, 1, 1) == mw.ustring.upper(mw.ustring.sub(word, 1, 1)) then case = 1 else case = 0 end word = mw.ustring.lower(word) -- Contextual substitution of "j" before "е" and "w" for "у". NOTE: These break with str_gsub, so must use mw.ustring.gsub. word = mw.ustring.gsub(word, "^е", "jе") word = mw.ustring.gsub(word, "([аеёиоуыэюяАЕЁИОУЫЭЮЯ%s])е", "%1jе") word = mw.ustring.gsub(word, "у([аиоуыэ])", "w%1") word = mw.ustring.gsub(word, "([аеёиоуыэюяАЕЁИОУЫЭЮЯ])у", "%1w") word = mw.ustring.gsub(word, "([бгджзклмнпрстфхцчшщъьӏБГДЖЗКЛМНПРСТФХЦЧШЩЪЬӀ])в", "%1ʷ") for trigraph, replacement in pairs(trigraphs) do word = str_gsub(word, trigraph, replacement) end for digraph, replacement in pairs(digraphs) do word = str_gsub(word, digraph, replacement) end word = str_gsub(word, UTF8_char, tt) -- Convert output into correct case form. if case == 2 then word = mw.ustring.upper(word) elseif case == 1 then word = mw.ustring.gsub(word, "^(.)", mw.ustring.upper) end -- Add to table of words. table.insert(words, word) end -- Concatenate table of words, and do final substitution. return mw.ustring.gsub(table.concat(words, " "), "ʼʷ", "ʷʼ") end return export ni03713bpmw1lrts2e2i9vu8azms6au মডিউল:User:Theknightwho/cau-nec-translit 828 168692 510244 2026-06-07T12:46:15Z RedminBot 9553 [[en:Module:User:Theknightwho/cau-nec-translit]] থেকে আনা হলো 510244 Scribunto text/plain local export = {} -- Structured like this to reduce size of loaded table. local function getSubs(lang) --Aghul if lang == "agx" then return { { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ʻʳ", ["къ"] = "qq", ["кь"] = "qʼ", ["кӏ"] = "kʼ", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "q", ["хь"] = "x̂", ["хӏ"] = "ḥʳ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" }, { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } } -- Akhvakh elseif lang == "akv" then return { { ["гъӏ"] = "ğʰ", ["къӏ"] = "qˣʼ", ["кьӏ"] = "kˡʼ", ["лӏъ"] = "ᵏl", ["хъӏ"] = "qˣ" }, { ["гъ"] = "ɣ", ["гь"] = "h", ["гӏ"] = "ʻʳ", ["къ"] = "qxʼ", ["кь"] = "kkˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["ль"] = "ĺ", ["лӏ"] = "ᵏll", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "qx", ["хь"] = "x̂", ["хӏ"] = "ḥʳ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" }, { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } } -- Andi elseif lang == "ani" then return { { ["къкъ"] = "qxʼ", ["хъхъ"] = "qx" }, { ["гъӏ"] = "ğʼ", ["жъӏ"] = "žʼ", ["къӏ"] = "qxʼ", ["лъӏ"] = "llˢʼ", ["хъӏ"] = "qx", ["цъӏ"] = "ccʼ", ["чъӏ"] = "cčʼ" }, { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "gʼ", ["къ"] = "qˣʼ", ["кь"] = "kkˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["ль"] = "lˢʼ", ["лӏ"] = "ᵏll", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "qˣ", ["хь"] = "x̂", ["хӏ"] = "xʼ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" }, { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ˀ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } } -- Archi elseif lang == "aqc" then return { { ["ккъӏ"] = "qq̣ʼ", ["ххьӏ"] = "xx̣" }, { ["гъӏ"] = "ğ̣", ["ккъ"] = "qqʼ", ["къӏ"] = "q̣ʼ", ["ллъ"] = "llʰ", ["хъӏ"] = "q̣", ["хьӏ"] = "x̣", ["ццӏ"] = "ccʼ", ["ччӏ"] = "cčʼ" }, { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ˀ", ["къ"] = "qʼ", ["кь"] = "kˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lʰ", ["ль"] = "lˠ", ["лӏ"] = "ᵏl", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "q", ["хӏ"] = "ḥʳ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" }, { ["а"] = "a", ["б"] = "b", ["в"] = "w", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } } -- Avar elseif lang == "av" then return { { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ʻ", ["къ"] = "qxʼ", ["кь"] = "kkˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["лӏ"] = "ᵏll", ["тӏ"] = "tʼ", ["хъ"] = "qx", ["хь"] = "x̂", ["хӏ"] = "ḥʳ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" }, { ["а"] = "a", ["б"] = "b", ["в"] = "w", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } } -- Bagvalal elseif lang == "kva" then return { { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ˀ", ["къ"] = "qʼ", ["кь"] = "kkˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["лӏ"] = "ᵏll", ["сӏ"] = "sʼ", ["тӏ"] = "tʼ", ["хъ"] = "qx", ["хь"] = "x̂", ["хӏ"] = "ḥ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ", ["шӏ"] = "šʼ" }, { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } } -- Bezhta elseif lang == "kap" then return { { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ʻ", ["къ"] = "qxʼ", ["кь"] = "kˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["лӏ"] = "ᵏll", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "qx", ["хь"] = "x̂", ["хӏ"] = "ḥ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" }, { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } } -- Botlikh elseif lang == "bph" then return { { ["гъ"] = "ğ", ["гь"] = "h", ["къ"] = "qˣʼ", ["кь"] = "kkˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["лӏ"] = "ᵏll", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "qˣ", ["хь"] = "x̂", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" }, { ["а"] = "a", ["б"] = "b", ["в"] = "w", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ˀ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } } -- Budukh elseif lang == "bdk" then return { { ["къг"] = "gʰ" }, { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ʻ", ["къ"] = "qq", ["кь"] = "qʼ", ["кӏ"] = "kʼ", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "q", ["хь"] = "x̂", ["хӏ"] = "ḥ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" }, { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ı", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja", ["ӏ"] = "ˀ" } } end end function export.tr(text, lang, sc) local subs = getSubs(lang) local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*" local CyrlConsonant = "бвгджзклмнпрстфхцчшщъьӏБВГДЖЗКЛМНПРСТФХЦЧШЩЪЬӀ" local CyrlVowel = "аеёиоуыэюяАЕЁИОУЫЭЮЯ" local ACUTE, CIRC, TILDE, MACRON, BREVE, DIAER, CARON, DOTBELOW = mw.ustring.char(0x301), mw.ustring.char(0x302), mw.ustring.char(0x303), mw.ustring.char(0x304), mw.ustring.char(0x306), mw.ustring.char(0x308), mw.ustring.char(0x30C), mw.ustring.char(0x323) local br = mw.ustring.char(0xF000) local noDoubleAccent = ACUTE .. CIRC .. BREVE .. CARON .. DOTBELOW if sc == "Arab" then return require("Module:ar-translit").tr(text, lang, sc) elseif sc == "Geor" then return require("Module:Geor-translit").tr(text, lang, sc) elseif not subs then return nil end -- Convert uppercase palochka to lowercase, along with any "false" palochkas (entered as Latin "I" or "l", or Cyrillic "І"). Lowercase palochka is found in tables above. text = mw.ustring.gsub(text, "[IlІӀ]", "ӏ") -- Convert dialectal nasal ᵸ written as Latin ᴴ. text = mw.ustring.gsub(text, "ᴴ", "ᵸ") -- Decompose precomposed characters, except for ё and й. text = mw.ustring.gsub(text, "[^ёЁйЙ]", mw.ustring.toNFD) -- Substitute double consonants for macrons over consonants. Add a temporary breaking character after, to prevent the creation of false multigraphs with following characters. local function macronToDouble(a, b) return a .. b .. mw.ustring.lower(a) .. b .. br end text = mw.ustring.gsub(text, "([" .. CyrlConsonant .. "])" .. MACRON .. "([ъь])" .. MACRON, macronToDouble) text = mw.ustring.gsub(text, "([" .. CyrlConsonant .. "])" .. MACRON .. "(ӏ?)" .. MACRON .. "?", macronToDouble) -- Remove any double hard/soft signs or palochkas this creates. text = mw.ustring.gsub(text, "([ъьӏЪЬӀ])" .. "([ъьӏ])", function(a, b) if b == mw.ustring.lower(a) then return a else return a .. b end end) -- Contextual substitution of "j" before "е", "w" for "у" and ʷ for "в". if lang == "aqc" then text = mw.ustring.gsub(text, "([" .. CyrlConsonant .. "]" .. br .. "?[ӏӀ]?" .. br .. "?)в", "%1ʷ") else text = mw.ustring.gsub(text, "^е", "jе") text = mw.ustring.gsub(text, "^Е", "Jе") text = mw.ustring.gsub(text, "([" .. CyrlVowel .. "%s]" .. MACRON .. "?ь?ӏ?ᵸ?)е", "%1jе") text = mw.ustring.gsub(text, "(%s)Е", "%1Jе") text = mw.ustring.gsub(text, "у([аиоуыэ])", "w%1") text = mw.ustring.gsub(text, "У([аиоуыэ])", "W%1") text = mw.ustring.gsub(text, "([" .. CyrlVowel .. "]" .. MACRON .. "?ь?ӏ?ᵸ?)у", "%1w") text = mw.ustring.gsub(text, "([" .. CyrlConsonant .. "]" .. br .. "?)в", "%1ʷ") end -- Process vowel modifiers. text = mw.ustring.gsub(text, "([" .. CyrlVowel .. "])(" .. MACRON .. "?)ь", "%1" .. DIAER .. "%2") text = mw.ustring.gsub(text, "([" .. CyrlVowel .. "])(" .. DIAER .. "?" .. MACRON .. "?)ӏ", "%1" .. DOTBELOW .. "%2") text = mw.ustring.gsub(text, "([аяАЯ])(" .. DOTBELOW .. "?)(" .. DIAER .. "?)" .. MACRON, "%1%3а%2%3") text = mw.ustring.gsub(text, "([еэЕЭ])(" .. DOTBELOW .. "?)(" .. DIAER .. "?)" .. MACRON, "%1%3э%2%3") text = mw.ustring.gsub(text, "([иИ])(" .. DOTBELOW .. "?)(" .. DIAER .. "?)" .. MACRON, "%1%3и%2%3") text = mw.ustring.gsub(text, "([ёЁоО])(" .. DOTBELOW .. "?)(" .. DIAER .. "?)" .. MACRON, "%1%3о%2%3") text = mw.ustring.gsub(text, "([уюУЮ])(" .. DOTBELOW .. "?)(" .. DIAER .. "?)" .. MACRON, "%1%3у%2%3") text = mw.ustring.gsub(text, "([ыЫ])(" .. DOTBELOW .. "?)(" .. DIAER .. "?)" .. MACRON, "%1%3ы%2%3") text = mw.ustring.gsub(text, "ᵸ", TILDE) -- Apply language-specific substitutions by iterating over each table in the language-specific submodule. For each one, create a temporary table that stores each substitution in lowercase and uppercase variants. Then, iterate over all substitutions. for _,i in ipairs(subs) do local t = {} -- Create a temporary table , then iterate over all of them. for k, v in pairs(i) do t[k] = v t[mw.ustring.gsub(k, "^.", mw.ustring.upper)] = mw.ustring.gsub(v, "^.", mw.ustring.upper) end for letter, replacement in pairs(t) do text = string.gsub(text, letter, replacement) end end -- Decompose and remove temporary breaking character. text = mw.ustring.gsub(mw.ustring.toNFD(text), br, "") -- When double letters both have certain diacritics, a modifier letter and/or an apostrophe, only show on the first or second for readability purposes. for letter in string.gmatch("abcdefghijklmnopqrstuvwxyzəɣıʔABCDEFGHIJKLMNOPQRSTUVWXYZƏƔɁʻˀ", UTF8_char) do text = mw.ustring.gsub(text, "(ᵏ?)" .. letter .. "([" .. noDoubleAccent .. "]?)([" .. noDoubleAccent .. "]?)([ʰʲˡʳˢʷˣˠ]?)([ʲʷ]?)(ʼ?)" .. "%1" .. mw.ustring.lower(letter) .. "%2%3%4%5%6", "%1" .. letter .. mw.ustring.lower(letter) .. "%2%3%4%5%6") end -- Reposition apostrophes and recompose. text = mw.ustring.toNFC(mw.ustring.gsub(mw.ustring.gsub(text, "ʼ([ʲʷ])", "%1ʼ"), "ʼ([ʲʷ])", "%1ʼ")) -- Remove consecutive ʲ/j and ʷ/w. return (mw.ustring.gsub(mw.ustring.gsub(text, "ʲ?jʲ?", "j"), "ʷ?wʷ?", "w")) end return export qdgbk8tbabfwerxr90mnq9ehonc75of মডিউল:User:Theknightwho/cau-nec-translit/agx 828 168693 510245 2026-06-07T12:46:15Z RedminBot 9553 [[en:Module:User:Theknightwho/cau-nec-translit/agx]] থেকে আনা হলো 510245 Scribunto text/plain local export = {} export[1] = { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ʻʳ", ["къ"] = "qq", ["кь"] = "qʼ", ["кӏ"] = "kʼ", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "q", ["хь"] = "x̂", ["хӏ"] = "ḥʳ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" } export[2] = { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } return export 2z58zip6ds1xhzcl9c8k3grm6y3nswg মডিউল:User:Theknightwho/cau-nec-translit/akv 828 168694 510246 2026-06-07T12:46:16Z RedminBot 9553 [[en:Module:User:Theknightwho/cau-nec-translit/akv]] থেকে আনা হলো 510246 Scribunto text/plain local export = {} export[1] = { ["гъӏ"] = "ğʰ", ["къӏ"] = "qˣʼ", ["кьӏ"] = "kˡʼ", ["лӏъ"] = "ᵏl", ["хъӏ"] = "qˣ" } export[2] = { ["гъ"] = "ɣ", ["гь"] = "h", ["гӏ"] = "ʻʳ", ["къ"] = "qxʼ", ["кь"] = "kkˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["ль"] = "ĺ", ["лӏ"] = "ᵏll", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "qx", ["хь"] = "x̂", ["хӏ"] = "ḥʳ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" } export[3] = { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } return export 99k4otsukp25wyg2lpsiph4w13gujck মডিউল:User:Theknightwho/cau-nec-translit/ani 828 168695 510247 2026-06-07T12:46:16Z RedminBot 9553 [[en:Module:User:Theknightwho/cau-nec-translit/ani]] থেকে আনা হলো 510247 Scribunto text/plain local export = {} export[1] = { ["къкъ"] = "qxʼ", ["хъхъ"] = "qx" } export[2] = { ["гъӏ"] = "ğʼ", ["жъӏ"] = "žʼ", ["къӏ"] = "qxʼ", ["лъӏ"] = "llˢʼ", ["хъӏ"] = "qx", ["цъӏ"] = "ccʼ", ["чъӏ"] = "cčʼ" } export[3] = { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "gʼ", ["къ"] = "qˣʼ", ["кь"] = "kkˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["ль"] = "lˢʼ", ["лӏ"] = "ᵏll", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "qˣ", ["хь"] = "x̂", ["хӏ"] = "xʼ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" } export[4] = { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ˀ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } return export 3o4q2c7tl4hahxw7cvy4zv7n2bhjc6b মডিউল:User:Theknightwho/cau-nec-translit/aqc 828 168696 510248 2026-06-07T12:46:17Z RedminBot 9553 [[en:Module:User:Theknightwho/cau-nec-translit/aqc]] থেকে আনা হলো 510248 Scribunto text/plain local export = {} export[1] = { ["ккъӏ"] = "qq̣ʼ", ["ххьӏ"] = "xx̣" } export[2] = { ["гъӏ"] = "ğ̣", ["ккъ"] = "qqʼ", ["къӏ"] = "q̣ʼ", ["ллъ"] = "llʰ", ["хъӏ"] = "q̣", ["хьӏ"] = "x̣", ["ццӏ"] = "ccʼ", ["ччӏ"] = "cčʼ" } export[3] = { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ˀ", ["къ"] = "qʼ", ["кь"] = "kˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lʰ", ["ль"] = "lˠ", ["лӏ"] = "ᵏl", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "q", ["хӏ"] = "ḥʳ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" } export[4] = { ["а"] = "a", ["б"] = "b", ["в"] = "w", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } return export qpuppnraj9rpt99cq9wy906aomy0bs1 মডিউল:User:Theknightwho/cau-nec-translit/av 828 168697 510249 2026-06-07T12:46:17Z RedminBot 9553 [[en:Module:User:Theknightwho/cau-nec-translit/av]] থেকে আনা হলো 510249 Scribunto text/plain local export = {} export[1] = { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ʻ", ["къ"] = "qxʼ", ["кь"] = "kkˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["лӏ"] = "ᵏll", ["тӏ"] = "tʼ", ["хъ"] = "qx", ["хь"] = "x̂", ["хӏ"] = "ḥʳ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" } export[2] = { ["а"] = "a", ["б"] = "b", ["в"] = "w", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } return export 0lk3vq2mf02q9ik1mfe0lqxvy9nsb6o মডিউল:User:Theknightwho/cau-nec-translit/bdk 828 168698 510250 2026-06-07T12:46:18Z RedminBot 9553 [[en:Module:User:Theknightwho/cau-nec-translit/bdk]] থেকে আনা হলো 510250 Scribunto text/plain local export = {} export[1] = { ["къг"] = "gʰ" } export[2] = { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ʻ", ["къ"] = "qq", ["кь"] = "qʼ", ["кӏ"] = "kʼ", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "q", ["хь"] = "x̂", ["хӏ"] = "ḥ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" } export[3] = { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja", ["ӏ"] = "ˀ" } return export bf0i96laf7oz0o5b5w2cpyefofk9wfi মডিউল:User:Theknightwho/cau-nec-translit/bph 828 168699 510251 2026-06-07T12:46:18Z RedminBot 9553 [[en:Module:User:Theknightwho/cau-nec-translit/bph]] থেকে আনা হলো 510251 Scribunto text/plain local export = {} export[1] = { ["гъ"] = "ğ", ["гь"] = "h", ["къ"] = "qˣʼ", ["кь"] = "kkˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["лӏ"] = "ᵏll", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "qˣ", ["хь"] = "x̂", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" } export[2] = { ["а"] = "a", ["б"] = "b", ["в"] = "w", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ˀ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } return export eajswsydekb47owd9jy20j2nl62thov মডিউল:User:Theknightwho/cau-nec-translit/kap 828 168700 510252 2026-06-07T12:46:18Z RedminBot 9553 [[en:Module:User:Theknightwho/cau-nec-translit/kap]] থেকে আনা হলো 510252 Scribunto text/plain local export = {} export[1] = { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ʻ", ["къ"] = "qxʼ", ["кь"] = "kˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["лӏ"] = "ᵏll", ["пӏ"] = "pʼ", ["тӏ"] = "tʼ", ["хъ"] = "qx", ["хь"] = "x̂", ["хӏ"] = "ḥ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ" } export[2] = { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } return export j15939jk2zqfhxkghjbogxbtv57qz01 মডিউল:User:Theknightwho/cau-nec-translit/kva 828 168701 510253 2026-06-07T12:46:19Z RedminBot 9553 [[en:Module:User:Theknightwho/cau-nec-translit/kva]] থেকে আনা হলো 510253 Scribunto text/plain local export = {} export[1] = { ["гъ"] = "ğ", ["гь"] = "h", ["гӏ"] = "ˀ", ["къ"] = "qʼ", ["кь"] = "kkˡʼ", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["лӏ"] = "ᵏll", ["сӏ"] = "sʼ", ["тӏ"] = "tʼ", ["хъ"] = "qx", ["хь"] = "x̂", ["хӏ"] = "ḥ", ["цӏ"] = "cʼ", ["чӏ"] = "čʼ", ["шӏ"] = "šʼ" } export[2] = { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "sš", ["ъ"] = "ʔ", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja" } return export sidu0n0llrmkkyukicxdudkroha7c81 মডিউল:User:Theknightwho/mn-translit 828 168702 510254 2026-06-07T12:46:19Z RedminBot 9553 [[en:Module:User:Theknightwho/mn-translit]] থেকে আনা হলো 510254 Scribunto text/plain local export = {} local mn = require("Module:mn") local vowels = { ['а'] = 'a', ['е'] = 'jɵ', ['ё'] = 'jɔ', ['и'] = 'i', ['о'] = 'ɔ', ['ө'] = 'ɵ', ['у'] = 'ʊ', ['ү'] = 'u', ['ъ'] = '', ['ы'] = 'i', ['ь'] = 'ĭ', ['э'] = 'e', ['ю'] = 'jʊ', ['я'] = 'ja', ['ә'] = 'ə', } local long_vowels = { ['аа'] = 'aː', ['оо'] = 'oː', ['өө'] = 'ɵː', ['ии'] = 'iː', ['ий'] = 'iː', ['уу'] = 'ʊː', ['үү'] = 'uː', ['ээ'] = 'eː', ['яа'] = 'jaː', ['еэ'] = 'jeː', ['еө'] = 'jɵː', ['ёо'] = 'jɔː', ['юу'] = 'jʊː', ['юү'] = 'juː' } local diphthongs = { ['ай'] = 'ɛː', ['ей'] = 'jei̯', ['ёй'] = 'jɔi̯', ['ой'] = 'ɔi̯', ['уй'] = 'ʊi̯', ['үй'] = 'ui̯', ['эй'] = 'ei̯', ['юй'] = 'jʊi̯', ['яй'] = 'jɛː', ['иа'] = 'i̯a', ['ио'] = 'i̯ɔ', ['иө'] = 'i̯ɵ', ['иу'] = 'i̯ʊ', ['иү'] = 'i̯u', ['иэ'] = 'i̯e', ['уа'] = 'u̯a', ['уо'] = 'u̯ɔ', ['уи'] = 'u̯i' } 1s0c44e82jvzx7ynkaebnh5wsgc7ekh মডিউল:User:Theknightwho/ro-translit 828 168703 510255 2026-06-07T12:46:20Z RedminBot 9553 [[en:Module:User:Theknightwho/ro-translit]] থেকে আনা হলো 510255 Scribunto text/plain local concat = table.concat local explode = require("Module:string utilities").explode_utf8 local insert = table.insert local gsub = mw.ustring.gsub local match = mw.ustring.match local uupper = string.uupper -- Note: ё, ъ and щ only exist in borrowings. local letters = { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "io", ["ж"] = "j", ["ӂ"] = "gi", ["з"] = "z", ["и"] = "i", ["й"] = "i", ["к"] = "c", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "h", ["ц"] = "ț", ["ч"] = "ci", ["ш"] = "ș", ["щ"] = "șc", ["ъ"] = "ă", ["ы"] = "î", ["ь"] = "i", ["э"] = "ă", ["ю"] = "iu", ["я"] = "ia" } local vowel = { ["а"] = true, ["е"] = true, ["ё"] = true, ["и"] = true, ["й"] = true, ["о"] = true, ["у"] = true, ["ъ"] = true, ["ы"] = true, ["ь"] = true, ["э"] = true, ["ю"] = true, ["я"] = true } local i_vowel_prev = { ["и"] = true, ["й"] = true, ["ь"] = true } local ei_vowel_nxt = { ["е"] = true, ["ё"] = true, ["и"] = true, ["ь"] = true, ["ю"] = true, ["я"] = true } local soft_cons = { ["ӂ"] = "g", ["ч"] = "c" } local ea_cons = { ["ж"] = true, ["ӂ"] = true, ["л"] = true, ["н"] = true, ["р"] = true, ["т"] = true, ["ш"] = true } local function is_letter(this) return this and match(this, "%w") and true or false end local export = {} function export.tr(text, lang, sc) local caps = {} text = gsub(text, "()(%u)", function(pos, this) caps[pos] = true return this:ulower() end) text = explode(text) local output, i, prev, this, nxt = {}, 0 while i <= #text do prev, this, nxt = text[i - 1], text[i], text[i + 1] if soft_cons[this] then if ei_vowel_nxt[nxt] then this = soft_cons[this] elseif nxt == "а" then this = soft_cons[this] .. "e" end elseif this == "ё" and i_vowel_prev[prev] then this = "o" elseif this == "г" and ei_vowel_nxt[nxt] then this = "gh" elseif this == "и" and prev == "и" and not is_letter(nxt) then this = "ii" elseif this == "к" then if ei_vowel_nxt[nxt] then this = "ch" elseif nxt == "з" or nxt == "с" then this = "x" i = i + 1 end elseif this == "ю" and i_vowel_prev[prev] then this = "u" elseif this == "я" then if i_vowel_prev[prev] then this = "a" elseif ea_cons[prev] then this = "ea" end end this = letters[this] or this insert(output, caps[i] and gsub(this, "^.", uupper) or this) i = i + 1 end return concat(output) end return export bhk7vxu5hd2mo30ry0wnkvcln6snnv7 মডিউল:User:Theknightwho/ru-translit 828 168704 510256 2026-06-07T12:46:20Z RedminBot 9553 [[en:Module:User:Theknightwho/ru-translit]] থেকে আনা হলো 510256 Scribunto text/plain local export = {} --[=[ FIXME: 1. (DONE) If you write '''Б'''ез, it transliterates to '''B'''jez instead of '''B'''ez, as it should. 2. (DONE) Convert ъ to nothing before comma or other non-letter particle, e.g. in Однимъ словомъ, идешь на чтеніе. 3. (DONE) Make special-casing for adjectives in -го and for что (and friends) be the default, and implement transformations in Cyrillic rather than after translit so that we can display the transformed Cyrillic in the "phonetic respelling" notation of {{ru-IPA}}. 4. (DONE) Convert apostrophe to ъ before transliteration when after a consonant and before a vowel (requested by Atitarev). ]=] local u = mw.ustring.char local explode = require("Module:string utilities").explode_utf8 local concat = table.concat local insert = table.insert local rfind = mw.ustring.find local rsub = mw.ustring.gsub local rsplit = mw.text.split local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local decompose = require("Module:ru-common").decompose local AC = u(0x301) -- acute = ́ local GR = u(0x0300) -- grave = ̀ local DI = u(0x0308) -- diaeresis = ̈ local TEMP_G = u(0xFFF1) -- substitute to preserve g from changing to v local function ine(x) -- if not empty if x == "" then return nil else return x end end -- In this table, we now map Cyrillic е and э to je and e, and handle the -- post-consonant version (plain e and ɛ) specially. local tab = { ["А"]="A", ["Б"]="B", ["В"]="V", ["Г"]="G", ["Д"]="D", ["Е"]="Je", ["Ж"]="Ž", ["З"]="Z", ["И"]="I", ["Й"]="J", ["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["О"]="O", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["У"]="U", ["Ф"]="F", ["Х"]="X", ["Ц"]="C", ["Ч"]="Č", ["Ш"]="Š", ["Щ"]="Šč", ["Ъ"]="ʺ", ["Ы"]="Y", ["Ь"]="ʹ", ["Э"]="E", ["Ю"]="Ju", ["Я"]="Ja", ['а']='a', ['б']='b', ['в']='v', ['г']='g', ['д']='d', ['е']='je', ['ж']='ž', ['з']='z', ['и']='i', ['й']='j', ['к']='k', ['л']='l', ['м']='m', ['н']='n', ['о']='o', ['п']='p', ['р']='r', ['с']='s', ['т']='t', ['у']='u', ['ф']='f', ['х']='x', ['ц']='c', ['ч']='č', ['ш']='š', ['щ']='šč', ['ъ']='ʺ', ['ы']='y', ['ь']='ʹ', ['э']='e', ['ю']='ju', ['я']='ja', -- Russian style quotes ['«']='“', ['»']='”', -- archaic, pre-1918 letters ['І']='I', ['і']='i', ['Ѳ']='F', ['ѳ']='f', ['Ѣ']='Jě', ['ѣ']='jě', ['Ѵ']='I', ['ѵ']='i', -- archaic, pre-1700 letters ['Ѕ']='Z', ['ѕ']='z', ['Ꙃ']='Z', ['ꙃ']='z', ['Ꙁ']='Z', ['ꙁ']='z', ['Ѡ']='O', ['ѡ']='o', ['Ѿ']='Ot', ['ѿ']='ot', ['Ꙋ']='U', ['ꙋ']='u', ['Ꙑ']='Y', ['ꙑ']='y', ['Ꙗ']='Ja', ['ꙗ']='ja', ['Ѥ']='Je', ['ѥ']='je', ['Ѧ']='Ja', ['ѧ']='ja', ['Ѩ']='Ja', ['ѩ']='ja', ['Ѫ']='U', ['ѫ']='u', ['Ѭ']='Ju', ['ѭ']='ju', ['Ѯ']='Ks', ['ѯ']='ks', ['Ѱ']='Ps', ['ѱ']='ps', ['Є']='E', ['є']='e', ['Ї']='I', ['ї']='i', } local tab_jo = { ["Ё"] = "Jo", ["Ѣ̈"] = "Jǒ", ["Я̈"] = "Jǫ", ["Ѧ̈"] = "Jǫ", ["Ѩ̈"] = "Jǫ", ["ё"] = "jo", ["ѣ̈"] = "jǒ", ["я̈"] = "jǫ", ["ѧ̈"] = "jǫ", ["ѩ̈"] = "jǫ" } local plain_e = { ["Е"] = "E", ["Ѣ"] = "Ě", ["Э"] = "Ɛ", ["е"] = "e", ["ѣ"] = "ě", ["э"] = "ɛ" } local vowels = "аеєиіоуүꙋѡѿꙑыѣэюꙗяѥѧѫѩѭѵaæɐeəɛiɪɨoɵuyʊʉ" local hushing_jo = "жчшщ" local izhitsa_v = "аеєиіѣэꙗяѥѧѩaæɐeəɛiɪɨ" -- Apply transformations to the Cyrillic to more closely match pronunciation. -- Return two arguments: the "original" text (after decomposing composed -- grave characters), and the transformed text. If the two are different, -- {{ru-IPA}} should display a "phonetic respelling" notation. -- NOADJ disables special-casing for adjectives in -го, while FORCEADJ forces -- special-casing for adjectives, including those in -аго (pre-reform spelling) -- and disables checking for exceptions (e.g. много, ого). NOSHTO disables -- special-casing for что and related words. function export.apply_tr_fixes(text, noadj, noshto, forceadj) -- decompose stress accents without decomposing letters we want to treat -- as units (e.g. й or ё) text = decompose(text) local origtext = text -- the second half of the if-statement below is an optimization; see above. if not noadj and text:find("го") then local v = {["г"] = "в", ["Г"] = "В"} local repl = function(e, g, o, sja) return e .. v[g] .. o .. (sja or "") end -- Handle какого-нибудь/-либо/-то; must be done first because of an exception -- made for бого-, снего-, etc. text = rsub(text, "([кКтТ][аА][кК][оеОЕ" .. (forceadj and "аА" or "") .. "][" .. AC .. GR .. "]?)([гГ])([оО]%-)", repl) if not forceadj then local function go(text, case) local pattern = rsub(case, "^(.)(.*)(го[" .. AC .. GR .. "]?)(%-?)$", function(m1, m2, m3, m4) m1 = "%f[%a" .. AC .. GR .. "]([" .. mw.ustring.upper(m1) .. m1 .. "]" m2 = m2:gsub("\204[\128\129]", "[" .. AC .. GR .. "]?") .. ")" m3 = m3:gsub("\204[\128\129]", "[" .. AC .. GR .. "]?") :gsub("^г(.*)", "г(%1") m4 = m4 == "-" and "%-)" or ")%f[^%a" .. AC .. GR .. "]" return m1 .. m2 .. m3 .. m4 end) return rsub(text, pattern, "%1" .. TEMP_G .. "%2") end for _, case in ipairs{"мно́го", "н[еа]мно́го", "до́рого", "недо́рого", "стро́го", "нестро́го", "на́строго", "убо́го", "пол[ао]́го"} do text = go(text, case) end -- check for neuter short forms of compound adjectives in -но́гий if rfind(text, "но[" .. AC .. GR .. "]?го%f[^%a" .. AC .. GR .. "]") then for _, case in ipairs{"безно́го", "босоно́го", "веслоно́го", "длинноно́го", "двуно́го", "коротконо́го", "кривоно́го", "одноно́го", "пятино́го", "трёхно́го", "трехно́го", "хромоно́го", "четвероно́го", "шестино́го"} do text = go(text, case) end end for _, case in ipairs{"ого́", "го́го", "ваго́го", "ло́го", "п[ео]́го", "со́го", "То́го", "ле́го", "игого́", "огого́", "альбиньязего", "д[иі]е́го", "бо́лого", "гр[иі]е́го", "манче́го", "пичис[иі]е́го", "тенкодого", "хио́го", "аго-", "его-", "ого-"} do text = go(text, case) end end --handle genitive/accusative endings, which are spelled -ого/-его/-аго -- (-ogo/-ego/-ago) but transliterated -ovo/-evo/-avo; only for adjectives -- and pronouns, excluding words like много, ого (-аго occurs in -- pre-reform spelling); \204\129 is an acute accent, \204\128 is a grave accent local pattern = "([оеОЕ" .. (forceadj and "аА" or "") .. "][" .. AC .. GR .. "]?)([гГ])([оО][" .. AC .. GR .. "]?)" local reflexive = "([сС][яЯ][" .. AC .. GR .. "]?)" text = rsub(text, pattern .. "%f[^%a" .. AC .. GR .. TEMP_G .. "]", repl) text = rsub(text, pattern .. reflexive .. "%f[^%a" .. AC .. GR .. TEMP_G .. "]", repl) -- handle сегодня text = rsub(text, "%f[%a" .. AC .. GR .. "]([Сс]е)г(о[" .. AC .. GR .. "]?дня)%f[^%a" .. AC .. GR .. "]", "%1в%2") -- handle сегодняшн- text = rsub(text, "%f[%a" .. AC .. GR .. "]([Сс]е)г(о[" .. AC .. GR .. "]?дняшн)", "%1в%2") -- replace TEMP_G with g; must be done after the -go -> -vo changes text = rsub(text, TEMP_G, "г") end -- the second half of the if-statement below is an optimization; see above. if not noshto and text:find("то") then local ch2sh = {["ч"] = "ш", ["Ч"] = "Ш"} -- Handle что text = rsub(text, "%f[%a" .. AC .. GR .. "]([Чч])(то[" .. AC .. GR .. "]?)%f[^%a" .. AC .. GR .. "]", function(ch, to) return ch2sh[ch] .. to end) -- Handle чтобы, чтоб text = rsub(text, "%f[%a" .. AC .. GR .. "]([Чч])(то[" .. AC .. GR .. "]?бы?)%f[^%a" .. AC .. GR .. "]", function(ch, to) return ch2sh[ch] .. to end) -- Handle ничто text = rsub(text, "%f[%a" .. AC .. GR .. "]([Нн]и)ч(то[" .. AC .. GR .. "]?)%f[^%a" .. AC .. GR .. "]", "%1ш%2") end -- Handle мягкий, лёгкий, легчать, etc. text = rsub(text, "([МмЛл][яеё][" .. AC .. GR .. "]?)г([кч])", "%1х%2") return origtext, text end do local function get_char(text, pattern, d, dir) local i, ch = 0 repeat i = i + 1 ch = text[d.i + (i * dir)] until not (ch and (pattern):find(ch, 1, true)) return ch end local function do_iteration(output, text, d) -- Get current, previous and next characters, skipping over brackets, and -- ignoring diacritics for the previous character (which simplifies checks). local this = text[d.i] local this_lower = this:ulower() local prev = get_char(text, AC .. GR .. DI .. "%(", d, -1) local nxt = get_char(text, "%)", d, 1) -- A word is monosyllabic if it has only one vowel. if vowels:find(this_lower, 1, true) then d.vowels = d.vowels + 1 end -- Convert ё (and archaic friends) here, since they need to be dealt with -- as a special-case. In general terms, ё becomes jo, ѣ̈ becomes jǒ and я̈, -- ѧ̈ & ѩ̈ become jǫ. When determining stress, they are treated -- as interchangeable. -- Jos do not implicitly take stress accents if an explicit primary stress is -- given. Otherwise, the final jo which doesn't have secondary stress takes -- primary stress. -- Prefixes do not take implicit primary stress. -- Primary stress will be shown on monosyllables if either they are a suffix -- or include_monosyllabic_jo_accent is true. if nxt == DI then d.i = d.i + 1 this = toNFC(this .. DI) local t = tab_jo[this] if t then -- An initial lowercase j is removed from a jo transliteration -- if preceded by a hushing consonant (ж ч ш щ) (but not for a -- capital, on the assumption that a medial J is part of an -- initialism). if ( t:sub(1, 1) == "j" and prev and hushing_jo:find(prev:ulower(), 1, true) ) then t = t:sub(2) end insert(output, t) if text[d.i + 1] ~= GR then d.final_jo = #output end return end elseif this == AC then d.primary = true -- е after a consonant or a dash at the beginning of a word becomes e, -- and э becomes ɛ. elseif (this_lower == "е" or this_lower == "ѣ" or this_lower == "э") and ( (prev and not (vowels .. "ъьʹʺ"):find(prev:ulower(), 1, true)) or (not prev and d.dash_before) ) then insert(output, plain_e[this]) return elseif this_lower == "ю" then local prev_lower = prev and prev:ulower() if prev_lower == "ж" or prev_lower == "ш" then insert(output, "u") return end -- Make izhitsa display as -v- after /a/, /e/ and /i/ (matching the equivalent -- Greek digraphs αυ, ευ and ηυ). elseif ( this_lower == "ѵ" and prev and izhitsa_v:find(prev:ulower(), 1, true) ) then this = this == "Ѵ" and "В" or "в" text[d.i] = this -- Convert apostrophe to the hard sign between consonant and vowel (i.e. -- in the places where the hard sign normally occurs in modern text). -- Apostrophe is sometimes used to indicate the hard sign; this may have -- originated from the forcible removal of the hard sign from printing -- offices in the 1920's, after the implementation of the Russian -- orthography reform. elseif ( this == "'" and prev and not vowels:find(prev:ulower(), 1, true) and nxt and vowels:find(nxt, 1, true) ) then text[d.i] = nxt and nxt:uupper() == nxt and "Ъ" or "ъ" this = text[d.i] -- Ignore word-final hard signs. elseif this_lower == "ъ" and d.i == #text then return end insert(output, tab[this] or this) end -- Transliterate after the pronunciation-related transformations of -- export.apply_tr_fixes() have been applied. Called from {{ru-IPA}}. -- INCLUDE_MONOSYLLABIC_JO_ACCENT is as in export.tr(). function export.tr_after_fixes(text, include_monosyllabic_jo_accent) local word_chars = "%a'%(%)%[%]" .. AC .. GR .. DI local output = {} text = rsub(toNFC(text), "([^" .. word_chars .. "]*)([" .. word_chars .. "]*)", function(before, text) for _, ch in ipairs(explode(before)) do insert(output, ch) end text = explode(rsub(text, "[^Йй]", toNFD)) local d = { i = 0, vowels = 0 } if output[#output] == "-" then local prev = output[#output - 1] if not prev or rfind(prev, "%s") then d.dash_before = true end end while d.i < #text do d.i = d.i + 1 do_iteration(output, text, d) end if ( d.final_jo and (not (d.primary or text[#text] == "-")) and (include_monosyllabic_jo_accent or d.vowels > 1 or d.dash_before) ) then output[d.final_jo] = output[d.final_jo] .. AC end end) return toNFC(concat(output)) end end -- Transliterates text, which should be a single word or phrase. It should -- include stress marks, which are then preserved in the transliteration. -- ё is a special case: it is rendered (j)ó in multisyllabic words and -- monosyllabic words in multi-word phrases, but rendered (j)o without an -- accent in isolated monosyllabic words, unless INCLUDE_MONOSYLLABIC_JO_ACCENT -- is specified. (This is used in conjugation and declension tables.) -- NOADJ disables special-casing for adjectives in -го, while FORCEADJ forces -- special-casing for adjectives and disables checking for exceptions -- (e.g. много). NOSHTO disables special-casing for что and related words. function export.tr(text, lang, sc, include_monosyllabic_jo_accent, noadj, noshto, forceadj) local origtext, subbed_text = export.apply_tr_fixes(text, noadj, noshto, forceadj) return export.tr_after_fixes(subbed_text, include_monosyllabic_jo_accent) end -- translit with various special-case substitutions; NOADJ disables -- special-casing for adjectives in -го, while FORCEADJ forces special-casing -- for adjectives and disables checking for expections (e.g. много). -- NOSHTO disables special-casing for что and related words. SUB is used -- to implement arbitrary substitutions in the Cyrillic text before other -- transformations are applied and before translit. It is of the form -- FROM/TO,FROM/TO,... function export.tr_sub(text, include_monosyllabic_jo_accent, noadj, noshto, sub, forceadj) if type(text) == 'table' then -- called directly from a template include_monosyllabic_jo_accent = ine(text.args.include_monosyllabic_jo_accent) noadj = ine(text.args.noadj) noshto = ine(text.args.noshto) sub = ine(text.args.sub) text = text.args[1] end if sub then local subs = rsplit(sub, ",") for _, subpair in ipairs(subs) do local subsplit = rsplit(subpair, "/") text = rsub(text, subsplit[1], subsplit[2]) end end return export.tr(text, nil, nil, include_monosyllabic_jo_accent, noadj, noshto, forceadj) end --for adjectives, pronouns function export.tr_adj(text, include_monosyllabic_jo_accent) if type(text) == 'table' then -- called directly from a template include_monosyllabic_jo_accent = ine(text.args.include_monosyllabic_jo_accent) text = text.args[1] end -- we have to include "forceadj" because typically when tr_adj() is called -- from the noun or adjective modules, it's called with suffix ого, which -- would otherwise trigger the exceptional case and be transliterated as ogo return export.tr(text, nil, nil, include_monosyllabic_jo_accent, false, "noshto", "forceadj") end return export -- For Vim, so we get 4-space tabs -- vim: set ts=4 sw=4 noet: 6ngjbj8mts9jz4upi259aa2jjcbq6hu মডিউল:User:Theknightwho/ru-translit/tests 828 168705 510257 2026-06-07T12:46:21Z RedminBot 9553 [[en:Module:User:Theknightwho/ru-translit/tests]] থেকে আনা হলো 510257 Scribunto text/plain return { "абвер", "абвера", "абвере", "абвером", "абверу", "абевег", "абевега", "абевегам", "абевегами", "абевегах", "абевеге", "абевегедеек", "абевегедейка", "абевегедейкам", "абевегедейками", "абевегедейках", "абевегедейке", "абевегедейки", "абевегедейкой", "абевегедейкою", "абевегедейку", "абевеги", "абевегой", "абевегою", "абевегу", "аберрация", "абессива", "абессиве", "абессивного падежа", "абессивном падеже", "абессивному падежу", "абессивные падежи", "абессивный", "абессивным падежам", "абессивным падежом", "абессивными падежами", "абессивных падежах", "абессивных падежей", "абессивом", "абессиву", "абеталипопротеинемией", "абеталипопротеинемиею", "абеталипопротеинемии", "абеталипопротеинемий", "абеталипопротеинемию", "абеталипопротеинемиям", "абеталипопротеинемиями", "абеталипопротеинемиях", "абецадла", "абецадле", "абецадло", "абецадлом", "абецадлу", "абецедариев", "абецедарием", "абецедарии", "абецедарию", "абецедария", "абецедариям", "абецедариями", "абецедариях", "абзетцера", "абзетцерам", "абзетцерами", "абзетцерах", "абзетцере", "абзетцеров", "абзетцером", "абзетцеру", "абзетцеры", "абиогенеза", "абиогенезе", "абиогенезом", "абиогенезу", "абитура", "абитуриента", "абитуриентам", "абитуриентами", "абитуриентах", "абитуриенте", "абитуриентка", "абитуриенткам", "абитуриентками", "абитуриентках", "абитуриентке", "абитуриентки", "абитуриенткой", "абитуриенткою", "абитуриентку", "абитуриентный", "абитуриентов", "абитуриенток", "абитуриентом", "абитуриентский", "абитуриенту", "абитуриенты", "абрека", "абрекам", "абреками", "абреках", "абреке", "абреки", "абреков", "абреком", "абреку", "абсент", "абсента", "абсентам", "абсентами", "абсентах", "абсенте", "абсентеизма", "абсентеизме", "абсентеизмом", "абсентеизму", "абсентизм", "абсентизма", "абсентизмам", "абсентизмами", "абсентизмах", "абсентизме", "абсентизмов", "абсентизмом", "абсентизму", "абсентизмы", "абсентов", "абсентом", "абсенту", "абсенты", "абстенциониста", "абстенционистам", "абстенционистами", "абстенционистах", "абстенционисте", "абстенционистов", "абстенционистом", "абстенционисту", "абстенционисты", "Австралия", "Австрия", "автосервиса", "автосервисам", "автосервисами", "автосервисах", "автосервисе", "автосервисов", "автосервисом", "автосервису", "автосервисы", "агрессивен", "агрессивна", "агрессивно", "агрессивности", "агрессивность", "агрессивностью", "агрессивны", "агрессивный", "агрессией", "агрессиею", "агрессии", "агрессий", "агрессию", "агрессия", "агрессиям", "агрессиями", "агрессиях", "агрессор", "агрессора", "агрессорам", "агрессорами", "агрессорах", "агрессоре", "агрессоров", "агрессором", "агрессору", "агрессоры", "агробизнеса", "агробизнесам", "агробизнесами", "агробизнесах", "агробизнесе", "агробизнесов", "агробизнесом", "агробизнесу", "агробизнесы", "адаптация", "адаптера", "адаптерам", "адаптерами", "адаптерах", "адаптере", "адаптеров", "адаптером", "адаптеру", "адаптеры", "адаптированный", "адекватен", "адекватна", "адекватно", "адекватностей", "адекватности", "адекватность", "адекватностью", "адекватностям", "адекватностями", "адекватностях", "адекватны", "аденозинтрифосфата", "аденозинтрифосфате", "аденозинтрифосфатом", "аденозинтрифосфату", "аденоида", "аденоидам", "аденоидами", "аденоидах", "аденоиде", "аденоидов", "аденоидом", "аденоиду", "аденоиды", "аденом", "аденомам", "аденомами", "аденомах", "аденоме", "аденомой", "аденомою", "аденому", "аденомы", "адепт", "адепта", "адептам", "адептами", "адептах", "адепте", "адептов", "адептом", "адепту", "адепты", "адессива", "адессивам", "адессивами", "адессивах", "адессиве", "адессивного падежа", "адессивном падеже", "адессивному падежу", "адессивные падежи", "адессивный", "адессивным падежам", "адессивным падежом", "адессивными падежами", "адессивных падежах", "адессивных падежей", "адессивов", "адессивом", "адессиву", "адессивы", "адюльтера", "адюльтерам", "адюльтерами", "адюльтерах", "адюльтере", "адюльтеров", "адюльтером", "адюльтеру", "адюльтеры", "азбука Морзе", "азер", "Азербайджан", "азербайджанец", "азербайджанка", "азербайджанкам", "азербайджанками", "азербайджанках", "азербайджанке", "азербайджанки", "азербайджанкой", "азербайджанкою", "азербайджанку", "азербайджанок", "Азербайджанская ССР", "азербайджанский", "Азербайджанской ССР", "азербайджанца", "азербайджанцам", "азербайджанцами", "азербайджанцах", "азербайджанце", "азербайджанцев", "азербайджанцем", "азербайджанцу", "азербайджанцы", "азик", "Аид", "аксессуара", "аксессуарам", "аксессуарами", "аксессуарах", "аксессуаре", "аксессуаров", "аксессуаром", "аксессуару", "аксессуары", "активировать", "активный", "Албания", "Алжир", "Алфред", "альдегида", "альдегидам", "альдегидами", "альдегидах", "альдегиде", "альдегидов", "альдегидом", "альдегиду", "альдегиды", "альтернатив", "альтернативам", "альтернативами", "альтернативах", "альтернативе", "альтернативной медицине", "альтернативной медициной", "альтернативной медицины", "альтернативною медициною", "альтернативную медицину", "альтернативные медицины", "альтернативным медицинам", "альтернативными медицинами", "альтернативных медицин", "альтернативных медицинах", "альтернативой", "альтернативою", "альтернативу", "альтернативы", "альфвеновские волны", "альфвеновским волнам", "альфвеновскими волнами", "альфвеновских волн", "альфвеновских волнах", "альфвеновской волне", "альфвеновской волной", "альфвеновской волны", "альфвеновскою волною", "альфвеновскую волну", "амнезией", "амнезиею", "амнезии", "амнезий", "амнезию", "амнезиям", "амнезиями", "амнезиях", "Амстердам", "амстердамец", "амстердамца", "амстердамцам", "амстердамцами", "амстердамцах", "амстердамце", "амстердамцев", "амстердамцем", "амстердамцу", "амстердамцы", "анального секса", "анальном сексе", "анальному сексу", "анальные сексы", "анальным сексам", "анальным сексом", "анальными сексами", "анальных сексах", "анальных сексов", "анамнеза", "анамнезам", "анамнезами", "анамнезах", "анамнезе", "анамнезов", "анамнезом", "анамнезу", "анамнезы", "Ангола", "ангстрема", "ангстремам", "ангстремами", "ангстремах", "ангстреме", "ангстремов", "ангстремом", "ангстрему", "ангстремы", "андеграунда", "андеграундам", "андеграундами", "андеграундах", "андеграунде", "андеграундов", "андеграундом", "андеграунду", "андеграунды", "Андорра", "Андорра-ла-Вьеха", "анестезией", "анестезиею", "анестезии", "анестезий", "анестезиолог", "анестезиолога", "анестезиологам", "анестезиологами", "анестезиологах", "анестезиологе", "анестезиологи", "анестезиологов", "анестезиологом", "анестезиологу", "анестезию", "анестезиям", "анестезиями", "анестезиях", "анестетик", "анестетика", "анестетикам", "анестетиками", "анестетиках", "анестетике", "анестетики", "анестетиков", "анестетиком", "анестетику", "анилингус", "анимация", "аниме", "анимешник", "анимешника", "анимешникам", "анимешниками", "анимешниках", "анимешнике", "анимешники", "анимешников", "анимешником", "анимешнику", "анимэ", "аннексией", "аннексиею", "аннексии", "аннексий", "аннексировав", "аннексировавши", "аннексировавший", "аннексировал", "аннексировала", "аннексировали", "аннексировало", "аннексированный", "аннексировать", "аннексируем", "аннексируемый", "аннексирует", "аннексируете", "аннексируешь", "аннексируй", "аннексируйте", "аннексирую", "аннексируют", "аннексирующий", "аннексируя", "аннексию", "аннексия", "аннексиям", "аннексиями", "аннексиях", "анонимка", "анорексией", "анорексиею", "анорексии", "анорексий", "анорексию", "анорексиям", "анорексиями", "анорексиях", "антенн", "антеннам", "антеннами", "антеннах", "антенне", "антенной", "антенною", "антенну", "антенны", "Антигуа и Барбуда", "антитез", "антитезам", "антитезами", "антитезах", "антитезе", "антитезиса", "антитезисам", "антитезисами", "антитезисах", "антитезисе", "антитезисов", "антитезисом", "антитезису", "антитезисы", "антитезой", "антитезою", "антитезу", "антитезы", "антитеизма", "антитеизмам", "антитеизмами", "антитеизмах", "антитеизме", "антитеизмов", "антитеизмом", "антитеизму", "антитеизмы", "Аомори", "апартеида", "апартеиде", "апартеидом", "апартеиду", "апатеизм", "апатеизма", "апатеизмам", "апатеизмами", "апатеизмах", "апатеизме", "апатеизмов", "апатеизмом", "апатеизму", "апатеизмы", "апгрейда", "апгрейдам", "апгрейдами", "апгрейдах", "апгрейде", "апгрейдов", "апгрейдом", "апгрейду", "апгрейды", "апдейта", "апдейтам", "апдейтами", "апдейтах", "апдейте", "апдейтов", "апдейтом", "апдейту", "апдейты", "апельсин", "аппарат Морзе", "аппарата Морзе", "аппаратам Морзе", "аппаратами Морзе", "аппаратах Морзе", "аппарате Морзе", "аппаратов Морзе", "аппаратом Морзе", "аппарату Морзе", "аппараты Морзе", "аппойнтмента", "аппойнтментам", "аппойнтментами", "аппойнтментах", "аппойнтменте", "аппойнтментов", "аппойнтментом", "аппойнтменту", "аппойнтменты", "априори", "арборетум", "арборетума", "арборетумам", "арборетумами", "арборетумах", "арборетуме", "арборетумов", "арборетумом", "арборетуму", "арборетумы", "аренби", "арифметические прогрессии", "арифметическим прогрессиям", "арифметическими прогрессиями", "арифметических прогрессий", "арифметических прогрессиях", "арифметической прогрессией", "арифметической прогрессии", "арифметическою прогрессиею", "арифметическую прогрессию", "Армения", "армрестлинг", "армрестлинга", "армрестлинге", "армрестлингом", "армрестлингу", "артериальный", "артерией", "артериею", "артерии", "артерий", "артерию", "артерия", "артериям", "артериями", "артериях", "артефакта", "артефактам", "артефактами", "артефактах", "артефакте", "артефактов", "артефактом", "артефакту", "артефакты", "археоптерикса", "археоптериксам", "археоптериксами", "археоптериксах", "археоптериксе", "археоптериксов", "археоптериксом", "археоптериксу", "археоптериксы", "асексуальности", "асексуальность", "асексуальностью", "асиндетон", "асиндетона", "асиндетонам", "асиндетонами", "асиндетонах", "асиндетоне", "асиндетонов", "асиндетоном", "асиндетону", "асиндетоны", "ассемблера", "ассемблерам", "ассемблерами", "ассемблерах", "ассемблере", "ассемблеров", "ассемблером", "ассемблеру", "ассемблеры", "астенией", "астениею", "астении", "астений", "астению", "астения", "астениям", "астениями", "астениях", "астеризма", "астеризмам", "астеризмами", "астеризмах", "астеризме", "астеризмов", "астеризмом", "астеризму", "астеризмы", "астериска", "астерискам", "астерисками", "астерисках", "астериске", "астериски", "астерисков", "астериском", "астериску", "астероид", "астероида", "астероидам", "астероидами", "астероидах", "астероиде", "астероидов", "астероидом", "астероиду", "астероиды", "атеизм", "атеизма", "атеизмам", "атеизмами", "атеизмах", "атеизме", "атеизмов", "атеизмом", "атеизму", "атеизмы", "атеист", "атеиста", "атеистам", "атеистами", "атеистах", "атеисте", "атеистический", "атеистка", "атеисткам", "атеистками", "атеистках", "атеистке", "атеистки", "атеисткой", "атеисткою", "атеистку", "атеистов", "атеисток", "атеистом", "атеисту", "атеисты", "атеофобией", "атеофобиею", "атеофобии", "атеофобий", "атеофобию", "атеофобиям", "атеофобиями", "атеофобиях", "атером", "атеромам", "атеромами", "атеромах", "атероме", "атеромой", "атеромою", "атерому", "атеромы", "атеросклероз", "атеросклероза", "атеросклерозам", "атеросклерозами", "атеросклерозах", "атеросклерозе", "атеросклерозов", "атеросклерозом", "атеросклерозу", "атеросклерозы", "атомной энергией", "атомной энергии", "атомною энергиею", "атомную энергию", "атомные энергии", "атомным энергиям", "атомными энергиями", "атомных энергий", "атомных энергиях", "аудиенцией", "аудиенциею", "аудиенции", "аудиенций", "аудиенцию", "аудиенциям", "аудиенциями", "аудиенциях", "аутентичностей", "аутентичности", "аутентичность", "аутентичностью", "аутентичностям", "аутентичностями", "аутентичностях", "аутсайдера", "аутсайдерам", "аутсайдерами", "аутсайдерах", "аутсайдере", "аутсайдеров", "аутсайдером", "аутсайдеру", "аутсайдеры", "Афганистан", "африкандера", "африкандерам", "африкандерами", "африкандерах", "африкандере", "африкандеров", "африкандером", "африкандеру", "африкандеры", "африканера", "африканерам", "африканерами", "африканерах", "африканере", "африканеров", "африканером", "африканеру", "африканеры", "афтершока", "афтершокам", "афтершоками", "афтершоках", "афтершоке", "афтершоки", "афтершоков", "афтершоком", "афтершоку", "ацтек", "ацтека", "ацтекам", "ацтеками", "ацтеках", "ацтеке", "ацтеки", "ацтеков", "ацтеком", "ацтекский", "ацтеку", "аэроэкспресс", "аэроэкспресса", "аэроэкспрессам", "аэроэкспрессами", "аэроэкспрессах", "аэроэкспрессе", "аэроэкспрессов", "аэроэкспрессом", "аэроэкспрессу", "аэроэкспрессы", "Багамские Острова", "бактериальный", "бактерией", "бактериею", "бактерии", "бактерий", "бактериолог", "бактериолога", "бактериологам", "бактериологами", "бактериологах", "бактериологе", "бактериологи", "бактериологией", "бактериологиею", "бактериологии", "бактериологий", "бактериологический", "бактериологию", "бактериология", "бактериологиям", "бактериологиями", "бактериологиях", "бактериологов", "бактериологом", "бактериологу", "бактериофаг", "бактериофага", "бактериофагам", "бактериофагами", "бактериофагах", "бактериофаге", "бактериофаги", "бактериофагов", "бактериофагом", "бактериофагу", "бактерию", "бактерия", "бактериям", "бактериями", "бактериях", "Бангкок", "Бангладеш", "бангладешец", "бангладешский", "бангладешца", "бангладешцам", "бангладешцами", "бангладешцах", "бангладешце", "бангладешцев", "бангладешцем", "бангладешцу", "бангладешцы", "Бандар-Сери-Бегаван", "бандеровец", "бандеровца", "бандеровцам", "бандеровцами", "бандеровцах", "бандеровце", "бандеровцев", "бандеровцем", "бандеровцу", "бандеровцы", "бандеролей", "бандероли", "бандеролью", "бандеролям", "бандеролями", "бандеролях", "бандит", "Барбадос", "бармена", "барменам", "барменами", "барменах", "бармене", "барменов", "барменом", "бармену", "бармены", "барон", "баронесс", "баронессам", "баронессами", "баронессах", "баронессе", "баронессой", "баронессою", "баронессу", "баронессы", "барреле", "баррелей", "баррелем", "баррели", "баррелю", "барреля", "баррелям", "баррелями", "баррелях", "барс", "бартер", "бартера", "бартерам", "бартерами", "бартерах", "бартере", "бартеров", "бартером", "бартеру", "бартеры", "бассейна", "бассейнам", "бассейнами", "бассейнах", "бассейне", "бассейнов", "бассейновый", "бассейном", "бассейну", "бассейны", "Бастер", "Б-г", "беби", "бебиситтера", "бебиситтерам", "бебиситтерами", "бебиситтерах", "бебиситтере", "бебиситтеров", "бебиситтером", "бебиситтеру", "бебиситтеры", "бедекера", "бедекерам", "бедекерами", "бедекерах", "бедекере", "бедекеров", "бедекером", "бедекеру", "бедекеры", "бедж", "беджа", "беджам", "беджами", "беджах", "бедже", "беджей", "беджем", "беджи", "беджу", "безбожие", "безбожник", "безбожница", "безбожный", "бейгл", "бейгла", "бейглам", "бейглами", "бейглах", "бейгле", "бейглов", "бейглом", "бейглу", "бейглы", "беккереле", "беккерелей", "беккерелем", "беккерели", "беккерелю", "беккереля", "беккерелям", "беккерелями", "беккерелях", "бел", "бела", "белам", "белами", "Беларусь", "белах", "беле", "Белиз", "белов", "белом", "белу", "Белфаста", "Белфасте", "Белфастом", "Белфасту", "белы", "Бельгия", "бемоль", "Бенин", "беспорядочно", "бессмыслица", "бессоюзие", "бестселлера", "бестселлерам", "бестселлерами", "бестселлерах", "бестселлере", "бестселлеров", "бестселлером", "бестселлеру", "бестселлеры", "бет", "бетам", "бетами", "бетах", "бете", "бетой", "бетою", "бету", "беты", "би", "бижутерией", "бижутериею", "бижутерии", "бижутерий", "бижутерию", "бижутериям", "бижутериями", "бижутериях", "бизнес", "бизнеса", "бизнесам", "бизнесами", "бизнесах", "бизнесвумен", "бизнесе", "бизнес-класс", "бизнес-класса", "бизнес-классам", "бизнес-классами", "бизнес-классах", "бизнес-классе", "бизнес-классов", "бизнес-классом", "бизнес-классу", "бизнес-классы", "бизнесмен", "бизнесмена", "бизнесменам", "бизнесменами", "бизнесменах", "бизнесмене", "бизнесменов", "бизнесменом", "бизнесмену", "бизнесмены", "бизнесов", "бизнесом", "бизнес-плана", "бизнес-планам", "бизнес-планами", "бизнес-планах", "бизнес-плане", "бизнес-планов", "бизнес-планом", "бизнес-плану", "бизнес-планы", "бизнес-процесс", "бизнес-процесса", "бизнес-процессам", "бизнес-процессами", "бизнес-процессах", "бизнес-процессе", "бизнес-процессов", "бизнес-процессом", "бизнес-процессу", "бизнес-процессы", "бизнес-сообществ", "бизнес-сообщества", "бизнес-сообществам", "бизнес-сообществами", "бизнес-сообществах", "бизнес-сообществе", "бизнес-сообщество", "бизнес-сообществом", "бизнес-сообществу", "бизнесу", "бизнесы", "бисексуал", "бисексуала", "бисексуалам", "бисексуалами", "бисексуалах", "бисексуале", "бисексуалка", "бисексуалкам", "бисексуалками", "бисексуалках", "бисексуалке", "бисексуалки", "бисексуалкой", "бисексуалкою", "бисексуалку", "бисексуалов", "бисексуалок", "бисексуалом", "бисексуалу", "бисексуалы", "бисексуальности", "бисексуальность", "бисексуальностью", "бисексуальный", "бифштекса", "бифштексам", "бифштексами", "бифштексах", "бифштексе", "бифштексов", "бифштексом", "бифштексу", "бифштексы", "Бишкек", "благородный газ", "блейзера", "блейзерам", "блейзерами", "блейзерах", "блейзере", "блейзеров", "блейзером", "блейзеру", "блейзеры", "блендера", "блендерам", "блендерами", "блендерах", "блендере", "блендеров", "блендером", "блендеру", "блендеры", "блокбастера", "блокбастерам", "блокбастерами", "блокбастерах", "блокбастере", "блокбастеров", "блокбастером", "блокбастеру", "блокбастеры", "Бог", "бог", "бог весть какой", "бог знает какой", "Бог не выдаст, свинья не съест", "бога", "Бога", "бога из машины", "богам", "богам из машины", "богами", "богами из машины", "богах", "богах из машины", "боге", "Боге", "боге из машины", "боги", "боги из машины", "богов", "богов из машины", "богом", "Богом", "богом из машины", "Богоматерь", "богоматерь", "богоносец", "Богородица", "богородица", "богослов", "богословский", "богослужебный", "богоубийца", "богохульство", "богу", "Богу", "богу из машины", "богъ", "Богъ", "боже", "Боже", "боженька", "божественный", "божий", "божок", "бойфренд", "бойфренда", "бойфрендам", "бойфрендами", "бойфрендах", "бойфренде", "бойфрендов", "бойфрендом", "бойфренду", "бойфренды", "Болгария", "борделе", "борделей", "борделем", "бордели", "борделю", "борделя", "борделям", "борделями", "борделях", "бортпроводница", "борьба на руках", "Босния и Герцеговина", "Ботсвана", "брандера", "брандерам", "брандерами", "брандерах", "брандере", "брандеров", "брандером", "брандеру", "брандеры", "браузер", "браузера", "браузерам", "браузерами", "браузерах", "браузере", "браузеров", "браузером", "браузеру", "браузеры", "брейнсторминга", "брейнстормингам", "брейнстормингами", "брейнстормингах", "брейнсторминге", "брейнсторминги", "брейнстормингов", "брейнстормингом", "брейнстормингу", "бренда", "брендам", "брендами", "брендах", "бренде", "брендов", "брендом", "бренду", "бренды", "бритоголовый", "брудершафта", "брудершафтам", "брудершафтами", "брудершафтах", "брудершафте", "брудершафтов", "брудершафтом", "брудершафту", "брудершафты", "Бруней", "брунейский", "брутто", "брэнд", "брюкам-галифе", "брюками-галифе", "брюках-галифе", "брюк-галифе", "брюки-галифе", "Брюссель", "брюссельская капуста", "брюссельские кружева", "брюссельский", "брюссельским кружевам", "брюссельским кружевом", "брюссельскими кружевами", "брюссельских кружев", "брюссельских кружевах", "брюссельского кружева", "брюссельское кружево", "брюссельской капусте", "брюссельской капустой", "брюссельской капусты", "брюссельском кружеве", "брюссельскому кружеву", "брюссельскою капустою", "брюссельскую капусту", "булка", "булочка", "булочная", "булочной", "булочною", "булочную", "булочные", "булочным", "булочными", "булочных", "Буркина-Фасо", "Бурунди", "Бутан", "бутерброд", "бутерброда", "бутербродам", "бутербродами", "бутербродах", "бутерброде", "бутербродов", "бутербродом", "бутерброду", "бутерброды", "бухгалтер", "бухгалтера", "бухгалтерам", "бухгалтерами", "бухгалтерах", "бухгалтере", "бухгалтерией", "бухгалтериею", "бухгалтерии", "бухгалтерий", "бухгалтерию", "бухгалтерия", "бухгалтериям", "бухгалтериями", "бухгалтериях", "бухгалтеров", "бухгалтером", "бухгалтерские книги", "бухгалтерский", "бухгалтерским книгам", "бухгалтерскими книгами", "бухгалтерских книг", "бухгалтерских книгах", "бухгалтерской книге", "бухгалтерской книги", "бухгалтерской книгой", "бухгалтерскою книгою", "бухгалтерскую книгу", "бухгалтеру", "бухгалтерш", "бухгалтерша", "бухгалтершам", "бухгалтершами", "бухгалтершах", "бухгалтерше", "бухгалтершей", "бухгалтершею", "бухгалтерши", "бухгалтершу", "бухгалтеры", "Буэнос-Айрес", "быть", "бэби-бокс", "бэби-бум", "бэбиситтер", "бэбиситтера", "бэбиситтерам", "бэбиситтерами", "бэбиситтерах", "бэбиситтере", "бэбиситтеров", "бэбиситтером", "бэбиситтеру", "бэбиситтеры", "бюст", "бюстгальтера", "бюстгальтерам", "бюстгальтерами", "бюстгальтерах", "бюстгальтере", "бюстгальтеров", "бюстгальтером", "бюстгальтеру", "бюстгальтеры", "в", "В", "в двух шагах", "вагинального секса", "вагинальном сексе", "вагинальному сексу", "вагинальные сексы", "вагинальным сексам", "вагинальным сексом", "вагинальными сексами", "вагинальных сексах", "вагинальных сексов", "Вадуц", "Валь-д'Уаз", "Вануату", "варьироваться", "ватера", "ватерам", "ватерами", "ватерах", "ватере", "ватеров", "ватером", "ватерпаса", "ватерпасам", "ватерпасами", "ватерпасах", "ватерпасе", "ватерпасов", "ватерпасом", "ватерпасу", "ватерпасы", "ватеру", "ватеры", "Ватикан", "веба", "вебам", "вебами", "вебах", "вебе", "вебов", "вебом", "веб-сайт", "веб-сайта", "веб-сайтам", "веб-сайтами", "веб-сайтах", "веб-сайте", "веб-сайтов", "веб-сайтом", "веб-сайту", "веб-сайты", "веб-страниц", "веб-страницам", "веб-страницами", "веб-страницах", "веб-странице", "веб-страницей", "веб-страницею", "веб-страницу", "веб-страницы", "вебу", "вебы", "Венгрия", "Вениамин", "верига", "веса нетто", "весам нетто", "весами нетто", "весах нетто", "весе нетто", "весело", "весов нетто", "весом нетто", "весть", "весу нетто", "видеодисплее", "видеодисплеев", "видеодисплеем", "видеодисплеи", "видеодисплей", "видеодисплею", "видеодисплея", "видеодисплеям", "видеодисплеями", "видеодисплеях", "водевиле", "водевилей", "водевилем", "водевили", "водевиль", "водевилю", "водевиля", "водевилям", "водевилями", "водевилях", "водное поло", "Восточный Тимор", "врач", "вредонос", "все-все", "вундеркинда", "вундеркиндам", "вундеркиндами", "вундеркиндах", "вундеркинде", "вундеркиндов", "вундеркиндом", "вундеркинду", "вундеркинды", "въезжать", "выезжать", "выключать", "выключить", "Вьетнам", "Гаага", "Габон", "гадолиний", "гадюка", "Гаити", "галифе", "Гамбия", "Гана", "гангстера", "гангстерам", "гангстерами", "гангстерах", "гангстере", "гангстеров", "гангстером", "гангстеру", "гангстеры", "гантелей", "гантели", "гантель", "гантелью", "гантелям", "гантелями", "гантелях", "гастарбайтера", "гастарбайтерам", "гастарбайтерами", "гастарбайтерах", "гастарбайтере", "гастарбайтеров", "гастарбайтером", "гастарбайтеру", "гастарбайтеры", "гафний", "Гватемала", "гватемальский", "Гвинея", "Гвинея-Бисау", "гей", "гейзер", "гейзера", "гейзерам", "гейзерами", "гейзерах", "гейзере", "гейзеров", "гейзером", "гейзеру", "гейзеры", "геймплее", "геймплеев", "геймплеем", "геймплеи", "геймплею", "геймплея", "геймплеям", "геймплеями", "геймплеях", "гей-эстетик", "гей-эстетикам", "гей-эстетиками", "гей-эстетиках", "гей-эстетике", "гей-эстетики", "гей-эстетикой", "гей-эстетикою", "гей-эстетику", "гексакосиойгексеконтагексафобией", "гексакосиойгексеконтагексафобиею", "гексакосиойгексеконтагексафобии", "гексакосиойгексеконтагексафобий", "гексакосиойгексеконтагексафобию", "гексакосиойгексеконтагексафобиям", "гексакосиойгексеконтагексафобиями", "гексакосиойгексеконтагексафобиях", "ген", "генезиса", "генезисам", "генезисами", "генезисах", "генезисе", "генезисов", "генезисом", "генезису", "генезисы", "генет", "генета", "генетам", "генетами", "генетах", "генете", "генетик", "генетика", "генетикам", "генетиками", "генетиках", "генетике", "генетики", "генетиков", "генетикой", "генетиком", "генетикою", "генетику", "генетически", "генетический", "генетой", "генетою", "генету", "генеты", "генный", "геном", "генофонд", "геодезией", "геодезиею", "геодезии", "геодезий", "геодезию", "геодезиям", "геодезиями", "геодезиях", "Германия", "гетерогенный", "гетеросексуал", "гетеросексуала", "гетеросексуалам", "гетеросексуалами", "гетеросексуалах", "гетеросексуале", "гетеросексуалов", "гетеросексуалом", "гетеросексуалу", "гетеросексуалы", "гетеросексуальности", "гетеросексуальность", "гетеросексуальностью", "гетеросексуальный", "гёрлфренд", "гипотеза", "гипотетически", "гликопротеин", "гликопротеина", "гликопротеинам", "гликопротеинами", "гликопротеинах", "гликопротеине", "гликопротеинов", "гликопротеином", "гликопротеину", "гликопротеины", "глютена", "глютенам", "глютенами", "глютенах", "глютене", "глютенов", "глютеном", "глютену", "глютены", "гомик", "гомо сапиенс", "гомо сапиенса", "гомо сапиенсам", "гомо сапиенсами", "гомо сапиенсах", "гомо сапиенсе", "гомо сапиенсов", "гомо сапиенсом", "гомо сапиенсу", "гомо сапиенсы", "гомосекс", "гомосекса", "гомосексам", "гомосексами", "гомосексах", "гомосексе", "гомосексов", "гомосексом", "гомосексу", "гомосексуал", "гомосексуала", "гомосексуалам", "гомосексуалами", "гомосексуалах", "гомосексуале", "гомосексуализма", "гомосексуализмам", "гомосексуализмами", "гомосексуализмах", "гомосексуализме", "гомосексуализмов", "гомосексуализмом", "гомосексуализму", "гомосексуализмы", "гомосексуалист", "гомосексуалиста", "гомосексуалистам", "гомосексуалистами", "гомосексуалистах", "гомосексуалисте", "гомосексуалистов", "гомосексуалистом", "гомосексуалисту", "гомосексуалисты", "гомосексуалов", "гомосексуалом", "гомосексуалу", "гомосексуалы", "гомосексуальности", "гомосексуальность", "гомосексуальностью", "гомосексуальный", "гомосексы", "Гондурас", "Господь", "гостиница", "градиента", "градиентам", "градиентами", "градиентах", "градиенте", "градиентов", "градиентом", "градиенту", "градиенты", "грейдера", "грейдерам", "грейдерами", "грейдерах", "грейдере", "грейдеров", "грейдером", "грейдеру", "грейдеры", "грейпфрут", "грейпфрута", "грейпфрутам", "грейпфрутами", "грейпфрутах", "грейпфруте", "грейпфрутов", "грейпфрутом", "грейпфруту", "грейпфруты", "грейхаунда", "грейхаундам", "грейхаундами", "грейхаундах", "грейхаунде", "грейхаундов", "грейхаундом", "грейхаунду", "грейхаунды", "Гренада", "Греция", "грибок стопы", "гротеск", "гротеска", "гротескам", "гротесками", "гротесках", "гротеске", "гротески", "гротескно", "гротесков", "гротеском", "гротеску", "Грузия", "группового секса", "групповом сексе", "групповому сексу", "групповым сексом", "ГУАМ", "гэканий", "гэканье", "гэканьем", "гэканью", "гэканья", "гэканьям", "гэканьями", "гэканьях", "Дакка", "дал", "Дания", "две пары", "двоечник", "двоечника", "двоечникам", "двоечниками", "двоечниках", "двоечнике", "двоечники", "двоечников", "двоечником", "двоечнику", "двоечниц", "двоечница", "двоечницам", "двоечницами", "двоечницах", "двоечнице", "двоечницей", "двоечницею", "двоечницу", "двоечницы", "двоюродный брат", "двухлетие", "деактивировав", "деактивировавши", "деактивировавший", "деактивировал", "деактивировала", "деактивировали", "деактивировало", "деактивированный", "деактивируем", "деактивируемый", "деактивирует", "деактивируете", "деактивируешь", "деактивируй", "деактивируйте", "деактивирую", "деактивируют", "деактивирующий", "деактивируя", "дебета", "дебетам", "дебетами", "дебетах", "дебете", "дебетов", "дебетом", "дебету", "дебеты", "девальвацией", "девальвациею", "девальвации", "девальваций", "девальвацию", "девальвация", "девальвациям", "девальвациями", "девальвациях", "девиацией", "девиациею", "девиации", "девиаций", "девиацию", "девиациям", "девиациями", "девиациях", "девичника", "девичникам", "девичниками", "девичниках", "девичнике", "девичники", "девичников", "девичником", "девичнику", "деградацией", "деградациею", "деградации", "деградаций", "деградацию", "деградациям", "деградациями", "деградациях", "деградировав", "деградировавши", "деградировавший", "деградировал", "деградировала", "деградировали", "деградировало", "деградировать", "деградируем", "деградирует", "деградируете", "деградируешь", "деградируй", "деградируйте", "деградирую", "деградируют", "деградирующий", "деградируя", "дегустатор", "дегустатора", "дегустаторам", "дегустаторами", "дегустаторах", "дегустаторе", "дегустаторов", "дегустатором", "дегустатору", "дегустаторы", "дегустацией", "дегустациею", "дегустации", "дегустаций", "дегустацию", "дегустация", "дегустациям", "дегустациями", "дегустациях", "дегустировав", "дегустировавши", "дегустировавший", "дегустировал", "дегустировала", "дегустировали", "дегустировало", "дегустированный", "дегустировать", "дегустируем", "дегустируемый", "дегустирует", "дегустируете", "дегустируешь", "дегустируй", "дегустируйте", "дегустирую", "дегустируют", "дегустирующий", "дегустируя", "деза", "дезадаптацией", "дезадаптациею", "дезадаптации", "дезадаптаций", "дезадаптацию", "дезадаптация", "дезадаптациям", "дезадаптациями", "дезадаптациях", "дезадаптивный", "дезадаптировав", "дезадаптировавши", "дезадаптировавший", "дезадаптировал", "дезадаптировала", "дезадаптировали", "дезадаптировало", "дезадаптированный", "дезадаптировать", "дезадаптируем", "дезадаптируемый", "дезадаптирует", "дезадаптируете", "дезадаптируешь", "дезадаптируй", "дезадаптируйте", "дезадаптирую", "дезадаптируют", "дезадаптирующий", "дезадаптируя", "дезактивировать", "дезе", "дезинтеграцией", "дезинтеграциею", "дезинтеграции", "дезинтеграций", "дезинтеграцию", "дезинтеграция", "дезинтеграциям", "дезинтеграциями", "дезинтеграциях", "дезинформацией", "дезинформациею", "дезинформации", "дезинформацию", "дезинформация", "дезодоранта", "дезодорантам", "дезодорантами", "дезодорантах", "дезодоранте", "дезодорантов", "дезодорантом", "дезодоранту", "дезодоранты", "дезой", "дезоксирибонуклеиновой кислоте", "дезоксирибонуклеиновой кислотой", "дезоксирибонуклеиновой кислоты", "дезоксирибонуклеиновою кислотою", "дезоксирибонуклеиновую кислоту", "дезоксирибонуклеиновые кислоты", "дезоксирибонуклеиновым кислотам", "дезоксирибонуклеиновыми кислотами", "дезоксирибонуклеиновых кислот", "дезоксирибонуклеиновых кислотах", "дезою", "дезу", "дезы", "деизм", "деизма", "деизмам", "деизмами", "деизмах", "деизме", "деизмов", "деизмом", "деизму", "деизмы", "деист", "деиста", "деистам", "деистами", "деистах", "деисте", "деистов", "деистом", "деисту", "деисты", "дейтерием", "дейтерии", "дейтерию", "дейтерия", "дек", "дека-", "декад", "декадам", "декадами", "декадах", "декаде", "декадой", "декадою", "декаду", "декады", "декалитра", "декалитрам", "декалитрами", "декалитрах", "декалитре", "декалитров", "декалитром", "декалитру", "декалитры", "декам", "деками", "декан", "декана", "деканам", "деканами", "деканат", "деканата", "деканатам", "деканатами", "деканатах", "деканате", "деканатов", "деканатом", "деканату", "деканаты", "деканах", "декане", "деканов", "деканом", "декантера", "декантерам", "декантерами", "декантерах", "декантере", "декантеров", "декантером", "декантеру", "декантеры", "декантировав", "декантировавши", "декантировавший", "декантировал", "декантировала", "декантировали", "декантировало", "декантированный", "декантировать", "декантируем", "декантируемый", "декантирует", "декантируете", "декантируешь", "декантируй", "декантируйте", "декантирую", "декантируют", "декантирующий", "декантируя", "декану", "деканы", "деках", "деке", "декеле", "декелей", "декелем", "декели", "декелю", "декеля", "декелям", "декелями", "декелях", "деки", "декой", "декора", "декорам", "декорами", "декорах", "декоре", "декоров", "декором", "декору", "декорума", "декорумам", "декорумами", "декорумах", "декоруме", "декорумов", "декорумом", "декоруму", "декорумы", "декоры", "декою", "деку", "Делавэр", "Дели", "деликатеса", "деликатесам", "деликатесами", "деликатесах", "деликатесе", "деликатесов", "деликатесом", "деликатесу", "деликатесы", "делирием", "делирии", "делирий", "делирию", "делирия", "дельт", "дельта", "дельтам", "дельтами", "дельтаплан", "дельтаплана", "дельтапланам", "дельтапланами", "дельтапланах", "дельтаплане", "дельтапланов", "дельтапланом", "дельтаплану", "дельтапланы", "дельтах", "дельте", "дельтой", "дельтою", "дельту", "дельты", "демаркацией", "демаркациею", "демаркации", "демаркаций", "демаркацию", "демаркация", "демаркациям", "демаркациями", "демаркациях", "демарша", "демаршам", "демаршами", "демаршах", "демарше", "демаршей", "демаршем", "демарши", "демаршу", "дембель", "демиург", "Демиург", "демиурга", "демиургам", "демиургами", "демиургах", "демиурге", "демиурги", "демиургов", "демиургом", "демиургу", "демобилизацией", "демобилизациею", "демобилизации", "демобилизаций", "демобилизацию", "демобилизация", "демобилизациям", "демобилизациями", "демобилизациях", "демобилизовать", "демобилизоваться", "Демократическая Республика Конго", "демпинг", "демпинга", "демпингам", "демпингами", "демпингах", "демпинге", "демпинги", "демпингов", "демпингом", "демпингу", "дендрариев", "дендрарием", "дендрарии", "дендрарию", "дендрария", "дендрариям", "дендрариями", "дендрариях", "депо", "дервиша", "дервишам", "дервишами", "дервишах", "дервише", "дервишей", "дервишем", "дервиши", "дервишу", "детектив", "детектива", "детективам", "детективами", "детективах", "детективе", "детективный", "детективов", "детективом", "детективу", "детективы", "детектор", "детектора", "детекторам", "детекторами", "детекторах", "детекторе", "детекторов", "детектором", "детектору", "детекторы", "детерминант", "детерминанта", "детерминантам", "детерминантами", "детерминантах", "детерминанте", "детерминантов", "детерминантом", "детерминанту", "детерминанты", "детерминатива", "детерминативам", "детерминативами", "детерминативах", "детерминативе", "детерминативов", "детерминативом", "детерминативу", "детерминативы", "дефиле", "дефолта", "дефолтам", "дефолтами", "дефолтах", "дефолте", "дефолтов", "дефолтом", "дефолту", "дефолты", "деформацией", "деформациею", "деформации", "деформаций", "деформацию", "деформациям", "деформациями", "деформациях", "деформировав", "деформировавши", "деформировавший", "деформировал", "деформировала", "деформировали", "деформировало", "деформированный", "деформировать", "деформируем", "деформируемый", "деформирует", "деформируете", "деформируешь", "деформируй", "деформируйте", "деформирую", "деформируют", "деформирующий", "деформируя", "дехкан", "дехканам", "дехканами", "дехканах", "дехкане", "дехканин", "дехканина", "дехканине", "дехканином", "дехканину", "децентрализацией", "децентрализациею", "децентрализации", "децентрализаций", "децентрализацию", "децентрализация", "децентрализациям", "децентрализациями", "децентрализациях", "децентрализовав", "децентрализовавши", "децентрализовавший", "децентрализовал", "децентрализовала", "децентрализовали", "децентрализовало", "децентрализованный", "децентрализовать", "децентрализуем", "децентрализуемый", "децентрализует", "децентрализуете", "децентрализуешь", "децентрализуй", "децентрализуйте", "децентрализую", "децентрализуют", "децентрализующий", "децентрализуя", "децибела", "децибелам", "децибелами", "децибелах", "децибеле", "децибелов", "децибелом", "децибелу", "децибелы", "дециметр", "дециметра", "дециметрам", "дециметрами", "дециметрах", "дециметре", "дециметров", "дециметром", "дециметру", "дециметры", "дешифрировав", "дешифрировавши", "дешифрировавший", "дешифрировал", "дешифрировала", "дешифрировали", "дешифрировало", "дешифрированный", "дешифрировать", "дешифрируем", "дешифрируемый", "дешифрирует", "дешифрируете", "дешифрируешь", "дешифрируй", "дешифрируйте", "дешифрирую", "дешифрируют", "дешифрирующий", "дешифрируя", "дешифровав", "дешифровавши", "дешифровавший", "дешифровал", "дешифровала", "дешифровали", "дешифровало", "дешифрованный", "дешифровать", "дешифруем", "дешифруемый", "дешифрует", "дешифруете", "дешифруешь", "дешифруй", "дешифруйте", "дешифрую", "дешифруют", "дешифрующий", "дешифруя", "Джакарта", "джентльмена", "джентльменам", "джентльменами", "джентльменах", "джентльмене", "джентльменов", "джентльменом", "джентльменский", "джентльмену", "джентльмены", "Джибути", "Джорджия", "Джульетта", "диез", "диеза", "диезам", "диезами", "диезах", "диезе", "диезов", "диезом", "диезу", "диезы", "диетический", "динамика", "диспансера", "диспансерам", "диспансерами", "диспансерах", "диспансере", "диспансеров", "диспансером", "диспансеру", "диспансеры", "дисплее", "дисплеев", "дисплеем", "дисплеи", "дисплею", "дисплея", "дисплеям", "дисплеями", "дисплеях", "диспрозий", "дистрибьютера", "дистрибьютерам", "дистрибьютерами", "дистрибьютерах", "дистрибьютере", "дистрибьютеров", "дистрибьютером", "дистрибьютеру", "дистрибьютеры", "дистрибьютор", "ДНК", "до", "до бемоль", "до диеза", "до диезам", "до диезами", "до диезах", "до диезе", "до диезов", "до диезом", "до диезу", "до диезы", "добропорядочный", "догхантера", "догхантерам", "догхантерами", "догхантерах", "догхантере", "догхантеров", "догхантером", "догхантеру", "догхантеры", "доезжать", "дольмен", "дольмена", "дольменам", "дольменами", "дольменах", "дольмене", "дольменов", "дольменом", "дольмену", "дольмены", "Доминика", "Доминиканская Республика", "Донбасс", "дорама", "дорога", "дрека", "дреке", "дреком", "дреку", "дромадера", "дромадерам", "дромадерами", "дромадерах", "дромадере", "дромадеров", "дромадером", "дромадеру", "дромадеры", "друг", "дуче", "Дьявол", "Египет", "ездить", "езжать", "емейл", "емейла", "емейлам", "емейлами", "емейлах", "емейле", "емейлов", "емейлом", "емейлу", "емейлы", "-енька", "ёклмн", "ёпрст", "ёфикатор", "ёфикация", "живой", "завязь", "заезжать", "закодировать", "законопроект", "законопроекта", "законопроектам", "законопроектами", "законопроектах", "законопроекте", "законопроектов", "законопроектом", "законопроекту", "законопроекты", "Замбия", "Западная Сахара", "запах", "запланировать", "заробитчанин", "заскучать", "зафрендженный", "зафренджу", "зафренди", "зафрендив", "зафрендивши", "зафрендивший", "зафрендил", "зафрендила", "зафрендили", "зафрендило", "зафрендим", "зафрендит", "зафрендите", "зафрендишь", "зафрендь", "зафрендьте", "зафрендю", "зафрендя", "зафрендят", "зафренженный", "зафренжу", "зачем", "зека", "зекам", "зеками", "зеках", "зеке", "зеки", "зеков", "зеком", "зеку", "зета", "зетам", "зетами", "зетах", "зете", "зетов", "зетом", "зеттабайта", "зеттабайтам", "зеттабайтами", "зеттабайтах", "зеттабайте", "зеттабайтов", "зеттабайтом", "зеттабайту", "зеттабайты", "зету", "зеты", "Зимбабве", "зимбабвийский", "зита", "зловред", "зубной", "зэк", "Ивелин", "игого", "и-го-го", "игрека", "игрекам", "игреками", "игреках", "игреке", "игреки", "игреков", "игреком", "игреку", "идентификатора", "идентификаторам", "идентификаторами", "идентификаторах", "идентификаторе", "идентификаторов", "идентификатором", "идентификатору", "идентификаторы", "идентификацией", "идентификациею", "идентификации", "идентификаций", "идентификацию", "идентификациям", "идентификациями", "идентификациях", "идентифицировав", "идентифицировавши", "идентифицировавший", "идентифицировал", "идентифицировала", "идентифицировали", "идентифицировало", "идентифицированный", "идентифицировать", "идентифицируем", "идентифицируемый", "идентифицирует", "идентифицируете", "идентифицируешь", "идентифицируй", "идентифицируйте", "идентифицирую", "идентифицируют", "идентифицирующий", "идентифицируя", "идентично", "идентичностей", "идентичности", "идентичность", "идентичностью", "идентичностям", "идентичностями", "идентичностях", "идентичный", "Йемен", "йеменский", "измена", "изотерм", "изотермам", "изотермами", "изотермах", "изотерме", "изотермой", "изотермою", "изотерму", "изотермы", "Израиль", "-ий", "-ийский", "Иль-де-Франс", "Илья", "имейл", "имейла", "имейлам", "имейлами", "имейлах", "имейле", "имейлов", "имейлом", "имейлу", "имейлы", "импотент", "импотента", "импотентам", "импотентами", "импотентах", "импотенте", "импотентный", "импотентов", "импотентом", "импотенту", "импотенты", "импотенцией", "импотенциею", "импотенции", "импотенций", "импотенцию", "импотенция", "импотенциям", "импотенциями", "импотенциях", "ингредиента", "ингредиентам", "ингредиентами", "ингредиентах", "ингредиенте", "ингредиентов", "ингредиентом", "ингредиенту", "ингредиенты", "индекс", "индекса", "индексам", "индексами", "индексах", "индексацией", "индексациею", "индексации", "индексаций", "индексацию", "индексациям", "индексациями", "индексациях", "индексе", "индексировав", "индексировавши", "индексировавший", "индексировал", "индексировала", "индексировали", "индексировало", "индексированный", "индексируем", "индексируемый", "индексирует", "индексируете", "индексируешь", "индексируй", "индексируйте", "индексирую", "индексируют", "индексирующий", "индексируя", "индексов", "индексом", "индексу", "индексы", "Индия", "Индонез", "индонезиек", "индонезиец", "индонезиеца", "индонезиецам", "индонезиецами", "индонезиецах", "индонезиеце", "индонезиецев", "индонезиецем", "индонезиецу", "индонезиецы", "индонезийка", "индонезийкам", "индонезийками", "индонезийках", "индонезийке", "индонезийки", "индонезийкой", "индонезийкою", "индонезийку", "индонезийский", "индонезийца", "индонезийцам", "индонезийцами", "индонезийцах", "индонезийце", "индонезийцев", "индонезийцем", "индонезийцу", "индонезийцы", "Индонезия", "инертно", "инертного газа", "инертного газу", "инертном газе", "инертном газу", "инертному газу", "инертностей", "инертности", "инертность", "инертностью", "инертностям", "инертностями", "инертностях", "инертные газы", "инертный", "инертным газам", "инертным газом", "инертными газами", "инертных газах", "инертных газов", "инерцией", "инерциею", "инерции", "инерций", "инерционный", "инерцию", "инерция", "инерциям", "инерциями", "инерциях", "инет", "инета", "инете", "инетом", "инету", "иннервировать", "интеграл", "интеграла", "интегралам", "интегралами", "интегралах", "интеграле", "интегралов", "интегралом", "интегралу", "интегралы", "интегральный", "интеграцией", "интеграциею", "интеграции", "интеграций", "интеграционный", "интеграцию", "интеграциям", "интеграциями", "интеграциях", "интегрировав", "интегрировавши", "интегрировавший", "интегрировавшийся", "интегрировавшись", "интегрировал", "интегрировала", "интегрировалась", "интегрировали", "интегрировались", "интегрировало", "интегрировалось", "интегрировался", "интегрированный", "интегрироваться", "интегрируем", "интегрируемся", "интегрируемый", "интегрирует", "интегрируете", "интегрируетесь", "интегрируется", "интегрируешь", "интегрируешься", "интегрируй", "интегрируйся", "интегрируйте", "интегрируйтесь", "интегрирую", "интегрируюсь", "интегрируют", "интегрируются", "интегрирующий", "интегрирующийся", "интегрируя", "интегрируясь", "интенсивен", "интенсивна", "интенсивно", "интенсивностей", "интенсивности", "интенсивность", "интенсивностью", "интенсивностям", "интенсивностями", "интенсивностях", "интенсивны", "интенсификацией", "интенсификациею", "интенсификации", "интенсификаций", "интенсификацию", "интенсификациям", "интенсификациями", "интенсификациях", "интерактивен", "интерактивна", "интерактивно", "интерактивны", "интерактивный", "интервала", "интервалам", "интервалами", "интервалах", "интервале", "интервалов", "интервалом", "интервалу", "интервалы", "интервенцией", "интервенциею", "интервенции", "интервенций", "интервенцию", "интервенциям", "интервенциями", "интервенциях", "интервью", "интервьюера", "интервьюерам", "интервьюерами", "интервьюерах", "интервьюере", "интервьюеров", "интервьюером", "интервьюеру", "интервьюеры", "интерлингве", "интерлингвой", "интерлингвою", "интерлингву", "интерлингвы", "интернат", "интерната", "интернатам", "интернатами", "интернатах", "интернате", "интернатов", "интернатом", "интернату", "интернаты", "Интернационал", "интернационал", "Интернационала", "интернационала", "Интернационалам", "интернационалам", "Интернационалами", "интернационалами", "Интернационалах", "интернационалах", "Интернационале", "интернационале", "интернационален", "интернационализм", "интернационализма", "интернационализмам", "интернационализмами", "интернационализмах", "интернационализме", "интернационализмов", "интернационализмом", "интернационализму", "интернационализмы", "интернационалист", "интернационалистка", "Интернационалов", "интернационалов", "Интернационалом", "интернационалом", "Интернационалу", "интернационалу", "Интернационалы", "интернационалы", "интернациональна", "интернационально", "интернациональны", "интернет", "интернета", "интернетам", "интернетами", "интернетах", "интернете", "интернетов", "интернетом", "интернет-сайт", "интернет-сайта", "интернет-сайтам", "интернет-сайтами", "интернет-сайтах", "интернет-сайте", "интернет-сайтов", "интернет-сайтом", "интернет-сайту", "интернет-сайты", "интернету", "интернеты", "интернист", "интерниста", "интернистам", "интернистами", "интернистах", "интернисте", "интернистов", "интернистом", "интернисту", "интернисты", "интерпретатора", "интерпретаторам", "интерпретаторами", "интерпретаторах", "интерпретаторе", "интерпретаторов", "интерпретатором", "интерпретатору", "интерпретаторы", "интерпретацией", "интерпретациею", "интерпретации", "интерпретаций", "интерпретацию", "интерпретациям", "интерпретациями", "интерпретациях", "интерпретировав", "интерпретировавши", "интерпретировавший", "интерпретировавшийся", "интерпретировавшись", "интерпретировал", "интерпретировала", "интерпретировалась", "интерпретировали", "интерпретировались", "интерпретировало", "интерпретировалось", "интерпретировался", "интерпретированный", "интерпретировать", "интерпретироваться", "интерпретируем", "интерпретируемся", "интерпретируемый", "интерпретирует", "интерпретируете", "интерпретируетесь", "интерпретируется", "интерпретируешь", "интерпретируешься", "интерпретируй", "интерпретируйся", "интерпретируйте", "интерпретируйтесь", "интерпретирую", "интерпретируюсь", "интерпретируют", "интерпретируются", "интерпретирующий", "интерпретирующийся", "интерпретируя", "интерпретируясь", "интерсексуальностей", "интерсексуальности", "интерсексуальность", "интерсексуальностью", "интерсексуальностям", "интерсексуальностями", "интерсексуальностях", "интерсексуальный", "интерфейса", "интерфейсам", "интерфейсами", "интерфейсах", "интерфейсе", "интерфейсов", "интерфейсом", "интерфейсу", "интерфейсы", "интерференцией", "интерференциею", "интерференции", "интерференцию", "интерференция", "интерферировав", "интерферировавши", "интерферировавший", "интерферировал", "интерферировала", "интерферировали", "интерферировало", "интерферированный", "интерферировать", "интерферируем", "интерферируемый", "интерферирует", "интерферируете", "интерферируешь", "интерферируй", "интерферируйте", "интерферирую", "интерферируют", "интерферирующий", "интерферируя", "интерферометр", "интерферометра", "интерферометрам", "интерферометрами", "интерферометрах", "интерферометре", "интерферометрией", "интерферометриею", "интерферометрии", "интерферометрию", "интерферометрия", "интерферометров", "интерферометром", "интерферометру", "интерферометры", "интерферон", "интерферона", "интерферонам", "интерферонами", "интерферонах", "интерфероне", "интерферонов", "интерфероном", "интерферону", "интерфероны", "интерьера", "интерьерам", "интерьерами", "интерьерах", "интерьере", "интерьеров", "интерьером", "интерьеру", "интерьеры", "иод", "йод", "Иордания", "йоркширские терьеры", "йоркширским терьерам", "йоркширским терьером", "йоркширскими терьерами", "йоркширских терьерах", "йоркширских терьеров", "йоркширского терьера", "йоркширском терьере", "йоркширскому терьеру", "Йоханнесбург", "Ирак", "Иран", "Ирландия", "ирредентизма", "ирредентизмам", "ирредентизмами", "ирредентизмах", "ирредентизме", "ирредентизмов", "ирредентизмом", "ирредентизму", "ирредентизмы", "иррумация", "Исландия", "Испания", "испарение", "испытывать", "истеблишмента", "истеблишментам", "истеблишментами", "истеблишментах", "истеблишменте", "истеблишментов", "истеблишментом", "истеблишменту", "истеблишменты", "Италия", "иттербием", "иттербии", "иттербий", "иттербию", "иттербия", "ишхан", "-ия", "кагебешника", "кагебешникам", "кагебешниками", "кагебешниках", "кагебешнике", "кагебешники", "кагебешников", "кагебешником", "кагебешнику", "кагэбэшник", "Кадис", "Казахстан", "кайзер", "Калимантан", "калифорний", "Камбоджа", "Камерун", "Канагава", "Канада", "кандел", "кандела", "канделам", "канделами", "канделах", "канделе", "канделой", "канделою", "канделу", "канделы", "капелл", "капелла", "капеллам", "капеллами", "капеллах", "капелле", "капеллой", "капеллою", "капеллу", "капеллы", "каптенармуса", "каптенармусам", "каптенармусами", "каптенармусах", "каптенармусе", "каптенармусов", "каптенармусом", "каптенармусу", "каптенармусы", "каптёр", "каратэ", "каре", "картера", "картерам", "картерами", "картерах", "картере", "картеров", "картером", "картеру", "картеры", "Кастри", "Катар", "катетера", "катетерам", "катетерами", "катетерах", "катетере", "катетеров", "катетером", "катетеру", "катетеры", "кафе", "кафетериев", "кафетерием", "кафетерии", "кафетерию", "кафетерия", "кафетериям", "кафетериями", "кафетериях", "кафешек", "кафешка", "кафешкам", "кафешками", "кафешках", "кафешке", "кафешки", "кафешкой", "кафешкою", "кафешку", "качок", "кватерниона", "кватернионам", "кватернионами", "кватернионах", "кватернионе", "кватернионный", "кватернионов", "кватернионом", "кватерниону", "кватернионы", "КГБ", "Кейптаун", "кемпинга", "кемпингам", "кемпингами", "кемпингах", "кемпинге", "кемпинги", "кемпингов", "кемпингом", "кемпингу", "Кения", "кернера", "кернерам", "кернерами", "кернерах", "кернере", "кернеров", "кернером", "кернеру", "кернеры", "кибернетик", "кибернетика", "кибернетикам", "кибернетиками", "кибернетиках", "кибернетике", "кибернетики", "кибернетиков", "кибернетикой", "кибернетиком", "кибернетикою", "кибернетику", "кибернетический", "киль", "кильватер", "кильватера", "кильватерам", "кильватерами", "кильватерах", "кильватере", "кильватеров", "кильватером", "кильватеру", "кильватеры", "Ким", "кинетик", "кинетика", "кинетикам", "кинетиками", "кинетиках", "кинетике", "кинетики", "кинетикой", "кинетикою", "кинетику", "кинетические энергии", "кинетический", "кинетическим энергиям", "кинетическими энергиями", "кинетических энергий", "кинетических энергиях", "кинетической энергией", "кинетической энергии", "кинетическою энергиею", "кинетическую энергию", "кино", "Киото", "Кипр", "Кирибати", "Китай", "кластера", "кластерам", "кластерами", "кластерах", "кластере", "кластеров", "кластером", "кластеру", "кластеры", "клейковина", "клип", "Кнессет", "кнехта", "кнехтам", "кнехтами", "кнехтах", "кнехте", "кнехтов", "кнехтом", "кнехту", "кнехты", "книксена", "книксенам", "книксенами", "книксенах", "книксене", "книксенов", "книксеном", "книксену", "книксены", "когерер", "когерера", "когерерам", "когерерами", "когерерах", "когерере", "когереров", "когерером", "когереру", "когереры", "код Морзе", "кодекса", "кодексам", "кодексами", "кодексах", "кодексе", "кодексов", "кодексом", "кодексу", "кодексы", "кодировать", "кодовый", "коктейле", "коктейле Молотова", "коктейлей", "коктейлей Молотова", "коктейлем", "коктейлем Молотова", "коктейли", "коктейли Молотова", "коктейль", "коктейлю", "коктейлю Молотова", "коктейля", "коктейля Молотова", "коктейлям", "коктейлям Молотова", "коктейлями", "коктейлями Молотова", "коктейлях", "коктейлях Молотова", "комета", "Коминтерн", "Коморские острова", "комп", "компания", "компьютер", "компьютера", "компьютерам", "компьютерами", "компьютерах", "компьютере", "компьютеризацией", "компьютеризациею", "компьютеризации", "компьютеризаций", "компьютеризацию", "компьютеризациям", "компьютеризациями", "компьютеризациях", "компьютерная", "компьютерного", "компьютерное", "компьютерной", "компьютерной игре", "компьютерной игрой", "компьютерной игры", "компьютерном", "компьютерному", "компьютерною", "компьютерною игрою", "компьютерную", "компьютерную игру", "компьютерные", "компьютерные игры", "компьютерный", "компьютерным", "компьютерным играм", "компьютерными", "компьютерными играми", "компьютерных", "компьютерных игр", "компьютерных играх", "компьютеров", "компьютером", "компьютеру", "компьютерщик", "компьютеры", "конгресс", "конгресса", "конгрессам", "конгрессами", "конгрессах", "конгрессвумен", "конгрессе", "конгрессмена", "конгрессменам", "конгрессменами", "конгрессменах", "конгрессмене", "конгрессменов", "конгрессменом", "конгрессмену", "конгрессмены", "конгрессов", "конгрессом", "конгрессу", "конгрессы", "конденсата", "конденсата Бозе — Эйнштейна", "конденсатам", "конденсатам Бозе — Эйнштейна", "конденсатами", "конденсатами Бозе — Эйнштейна", "конденсатах", "конденсатах Бозе — Эйнштейна", "конденсате", "конденсате Бозе — Эйнштейна", "конденсатов", "конденсатов Бозе — Эйнштейна", "конденсатом", "конденсатом Бозе — Эйнштейна", "конденсатора", "конденсаторам", "конденсаторами", "конденсаторах", "конденсаторе", "конденсаторов", "конденсатором", "конденсатору", "конденсаторы", "конденсату", "конденсату Бозе — Эйнштейна", "конденсаты", "конденсаты Бозе — Эйнштейна", "конденсацией", "конденсациею", "конденсации", "конденсаций", "конденсацию", "конденсация", "конденсациям", "конденсациями", "конденсациях", "Коннектикут", "консенсуса", "консенсусам", "консенсусами", "консенсусах", "консенсусе", "консенсусов", "консенсусом", "консенсусу", "консенсусы", "констебле", "констеблей", "констеблем", "констебли", "констеблю", "констебля", "констеблям", "констеблями", "констеблях", "контейнера", "контейнерам", "контейнерами", "контейнерах", "контейнере", "контейнерный", "контейнеров", "контейнером", "контейнеру", "контейнеры", "контента", "контентам", "контентами", "контентах", "контенте", "контентов", "контентом", "контенту", "контенты", "конфиденциален", "конфиденциальна", "конфиденциально", "конфиденциальностей", "конфиденциальности", "конфиденциальность", "конфиденциальностью", "конфиденциальностям", "конфиденциальностями", "конфиденциальностях", "конфиденциальны", "конфиденциальный", "копеечный", "корабль", "кордебалет", "кордебалета", "кордебалетам", "кордебалетами", "кордебалетах", "кордебалете", "кордебалетов", "кордебалетом", "кордебалету", "кордебалеты", "кортеж", "кортежа", "кортежам", "кортежами", "кортежах", "кортеже", "кортежей", "кортежем", "кортежи", "кортежу", "косплее", "косплеев", "косплеем", "косплеи", "косплею", "косплея", "косплеям", "косплеями", "косплеях", "Коста-Рика", "Кот-д'Ивуар", "котокафе", "коттедж", "коттеджа", "коттеджам", "коттеджами", "коттеджах", "коттедже", "коттеджей", "коттеджем", "коттеджи", "коттеджу", "кофе", "кофейня", "кошачье кафе", "кошачьего кафе", "кошачьем кафе", "кошачьему кафе", "кошачьи кафе", "кошачьим кафе", "кошачьими кафе", "кошачьих кафе", "коэффициента", "коэффициента пропорциональности", "коэффициента сжатия", "коэффициентам", "коэффициентам пропорциональности", "коэффициентам сжатия", "коэффициентами", "коэффициентами пропорциональности", "коэффициентами сжатия", "коэффициентах", "коэффициентах пропорциональности", "коэффициентах сжатия", "коэффициенте", "коэффициенте пропорциональности", "коэффициенте сжатия", "коэффициентов", "коэффициентов пропорциональности", "коэффициентов сжатия", "коэффициентом", "коэффициентом пропорциональности", "коэффициентом сжатия", "коэффициенту", "коэффициенту пропорциональности", "коэффициенту сжатия", "коэффициенты", "коэффициенты пропорциональности", "коэффициенты сжатия", "КПК", "кратера", "кратерам", "кратерами", "кратерах", "кратере", "кратеров", "кратером", "кратеру", "кратеры", "крепа", "крепам", "крепами", "крепах", "крепе", "крепов", "крепом", "крепу", "крепы", "кресати", "критериев", "критерием", "критерии", "критерию", "критерия", "критериям", "критериями", "критериях", "кронштейна", "кронштейнам", "кронштейнами", "кронштейнах", "кронштейне", "кронштейнов", "кронштейном", "кронштейну", "кронштейны", "кряду", "Куба", "Кувейт", "кузена", "кузенам", "кузенами", "кузенах", "кузене", "кузенов", "кузеном", "кузену", "кузены", "кузина", "Кузьма", "куннилингус", "Кыргызстан", "лавэ", "лазер", "лазера", "лазерам", "лазерами", "лазерах", "лазере", "лазерной указке", "лазерной указки", "лазерной указкой", "лазерною указкою", "лазерную указку", "лазерные указки", "лазерный", "лазерным указкам", "лазерными указками", "лазерных указках", "лазерных указок", "лазеров", "лазером", "лазеру", "лазеры", "лангуст", "Лаос", "Латвия", "латекса", "латексе", "латексный", "латексом", "латексу", "латентный", "латеральный", "ЛГБТ", "лейбла", "лейблам", "лейблами", "лейблах", "лейбле", "лейблов", "лейблом", "лейблу", "лейблы", "лексем", "лексемам", "лексемами", "лексемах", "лексеме", "лексемой", "лексемою", "лексему", "лексемы", "лесоведение", "Лесото", "либераст", "Либерия", "Ливан", "Ливия", "Литва", "лифчик", "Лихтенштейн", "лихтенштейнский", "лобстера", "лобстерам", "лобстерами", "лобстерах", "лобстере", "лобстеров", "лобстером", "лобстеру", "лобстеры", "лорнета", "лорнетам", "лорнетами", "лорнетах", "лорнете", "лорнетов", "лорнетом", "лорнету", "лорнеты", "лотерее", "лотереей", "лотереею", "лотереи", "лотерей", "лотерею", "лотереям", "лотереями", "лотереях", "лоукостера", "лоукостерам", "лоукостерами", "лоукостерах", "лоукостере", "лоукостеров", "лоукостером", "лоукостеру", "лоукостеры", "луна", "Люксембург", "лютецием", "лютеции", "лютеций", "лютецию", "лютеция", "Люцифер", "ля-диез мажора", "ля-диез мажоре", "ля-диез мажором", "ля-диез мажору", "ля-диез минора", "ля-диез миноре", "ля-диез минором", "ля-диез минору", "Маврикий", "Мавритания", "МАГАТЭ", "магистраль", "Мадагаскар", "мадемуазелей", "мадемуазели", "мадемуазель", "мадемуазелью", "мадемуазелям", "мадемуазелями", "мадемуазелях", "мадер", "мадерам", "мадерами", "мадерах", "мадере", "мадерой", "мадерою", "мадеру", "мадеры", "мадмуазелей", "мадмуазели", "мадмуазель", "мадмуазелью", "мадмуазелям", "мадмуазелями", "мадмуазелях", "майонез", "майонеза", "майонезам", "майонезами", "майонезах", "майонезе", "майонезов", "майонезом", "майонезу", "майонезы", "Малави", "Малайзия", "Мали", "Мальдивы", "Мальта", "манга", "мангака", "Манхэттен", "манхэттена", "манхэттенам", "манхэттенами", "манхэттенах", "манхэттене", "манхэттенов", "манхэттеном", "манхэттену", "манхэттены", "маракуйя", "Марокко", "Маршалловы Острова", "Массачусетс", "маузера", "маузерам", "маузерами", "маузерах", "маузере", "маузеров", "маузером", "маузеру", "маузеры", "Медан", "международного фонетического алфавита", "международном фонетическом алфавите", "международному фонетическому алфавиту", "международные фонетические алфавиты", "международный", "международным фонетическим алфавитам", "международным фонетическим алфавитом", "международными фонетическими алфавитами", "международных фонетических алфавитах", "международных фонетических алфавитов", "мейл", "мейла", "мейлам", "мейлами", "мейлах", "мейле", "мейлов", "мейлом", "мейлу", "мейлы", "Мексика", "мена", "менеджер", "менеджера", "менеджерам", "менеджерами", "менеджерах", "менеджере", "менеджеров", "менеджером", "менеджеру", "менеджеры", "менеджмент", "менеджмента", "менеджментам", "менеджментами", "менеджментах", "менеджменте", "менеджментов", "менеджментом", "менеджменту", "менеджменты", "менестреле", "менестрелей", "менестрелем", "менестрели", "менестрелю", "менестреля", "менестрелям", "менестрелями", "менестрелях", "меренга", "Мерседеса", "Мерседесам", "Мерседесами", "Мерседесах", "Мерседесе", "Мерседесов", "Мерседесом", "Мерседесу", "Мерседесы", "месседжа", "месседжам", "месседжами", "месседжах", "месседже", "месседжей", "месседжем", "месседжи", "месседжу", "мессенджера", "мессенджерам", "мессенджерами", "мессенджерах", "мессенджере", "мессенджеров", "мессенджером", "мессенджеру", "мессенджеры", "метатез", "метатезам", "метатезами", "метатезах", "метатезе", "метатезой", "метатезою", "метатезу", "метатезы", "метемпсихоз", "метемпсихоза", "метемпсихозам", "метемпсихозами", "метемпсихозах", "метемпсихозе", "метемпсихозов", "метемпсихозой", "метемпсихозом", "метемпсихозою", "метемпсихозу", "метемпсихозы", "метрдотеле", "метрдотелей", "метрдотелем", "метрдотели", "метрдотелю", "метрдотеля", "метрдотелям", "метрдотелями", "метрдотелях", "метро", "метрополитена", "метрополитенам", "метрополитенами", "метрополитенах", "метрополитене", "метрополитенов", "метрополитеном", "метрополитену", "метрополитены", "Мефистофель", "ми", "Микронезия", "миксера", "миксерам", "миксерами", "миксерах", "миксере", "миксеров", "миксером", "миксеру", "миксеры", "миллиардера", "миллиардерам", "миллиардерами", "миллиардерах", "миллиардере", "миллиардеров", "миллиардером", "миллиардеру", "миллиардеры", "минюста", "минюстам", "минюстами", "минюстах", "минюсте", "минюстов", "минюстом", "минюсту", "минюсты", "мистер", "мистера", "мистерам", "мистерами", "мистерах", "мистере", "мистеров", "мистером", "мистеру", "мистеры", "Мияги", "МК", "многобожец", "многоразовый транспортный космический корабль", "многосоюзие", "моделей", "модели", "моделировав", "моделировавши", "моделировавший", "моделировал", "моделировала", "моделировали", "моделировало", "моделированием", "моделировании", "моделирований", "моделированию", "моделирования", "моделированиям", "моделированиями", "моделированиях", "моделированный", "моделировать", "моделируем", "моделируемый", "моделирует", "моделируете", "моделируешь", "моделируй", "моделируйте", "моделирую", "моделируют", "моделирующий", "моделируя", "модельера", "модельерам", "модельерами", "модельерах", "модельере", "модельеров", "модельером", "модельеру", "модельеры", "модельный", "моделью", "моделям", "моделями", "моделях", "модема", "модемам", "модемами", "модемах", "модеме", "модемов", "модемом", "модему", "модемы", "модератора", "модераторам", "модераторами", "модераторах", "модераторе", "модераторов", "модератором", "модератору", "модераторы", "модерн", "модерна", "модернам", "модернами", "модернах", "модерне", "модернизацией", "модернизациею", "модернизации", "модернизаций", "модернизацию", "модернизация", "модернизациям", "модернизациями", "модернизациях", "модернизировав", "модернизировавши", "модернизировавший", "модернизировал", "модернизировала", "модернизировали", "модернизировало", "модернизированный", "модернизировать", "модернизируем", "модернизируемый", "модернизирует", "модернизируете", "модернизируешь", "модернизируй", "модернизируйте", "модернизирую", "модернизируют", "модернизирующий", "модернизируя", "модернизма", "модернизме", "модернизмом", "модернизму", "модернов", "модерном", "модерну", "модерны", "Мозамбик", "Молдова", "молибден", "молибдена", "молибденам", "молибденами", "молибденах", "молибдене", "молибденов", "молибденом", "молибдену", "молибдены", "Молотов", "момент", "Монако", "Монголия", "монитор", "монотеизм", "монотеизма", "монотеизмам", "монотеизмами", "монотеизмах", "монотеизме", "монотеизмов", "монотеизмом", "монотеизму", "монотеизмы", "монотеист", "монотеиста", "монотеистам", "монотеистами", "монотеистах", "монотеисте", "монотеистический", "монотеистов", "монотеистом", "монотеисту", "монотеисты", "монтировать", "мотеле", "мотелей", "мотелем", "мотели", "мотелю", "мотеля", "мотелям", "мотелями", "мотелях", "МТКК", "мужеложец", "мужеложство", "мужской половой член", "МФА", "Мьянма", "набожный", "Нагасаки", "наедине", "наезжать", "намерение", "Намибия", "нападение", "наркобизнес", "наркобизнеса", "наркобизнесам", "наркобизнесами", "наркобизнесах", "наркобизнесе", "наркобизнесов", "наркобизнесом", "наркобизнесу", "наркобизнесы", "наркотический", "наркоторговля", "нарочитый", "наскучивать", "наскучить", "настольного тенниса", "настольном теннисе", "настольному теннису", "настольные теннисы", "настольным теннисам", "настольным теннисом", "настольными теннисами", "настольных теннисах", "настольных теннисов", "натурал", "Науру", "наци", "неадекватностей", "неадекватности", "неадекватность", "неадекватностью", "неадекватностям", "неадекватностями", "неадекватностях", "неадекватный", "неандертальца", "неандертальцам", "неандертальцами", "неандертальцах", "неандертальце", "неандертальцев", "неандертальцем", "неандертальцу", "неандертальцы", "нейлона", "нейлоне", "нейлоновый", "нейлоном", "нейлону", "неинтересный", "Непал", "непорядочный", "нетбола", "нетболам", "нетболами", "нетболах", "нетболе", "нетболов", "нетболом", "нетболу", "нетболы", "нефа", "нефам", "нефами", "нефах", "нефе", "нефов", "нефом", "нефу", "нефы", "Нигер", "Нигерия", "Нидерланды", "-ник", "Никарагуа", "ниобий", "Ниуэ", "НКВД", "Новая Зеландия", "новелл", "новеллам", "новеллами", "новеллах", "новелле", "новеллой", "новеллою", "новеллу", "новеллы", "нонсенса", "нонсенсам", "нонсенсами", "нонсенсах", "нонсенсе", "нонсенсов", "нонсенсом", "нонсенсу", "нонсенсы", "Нор", "Норвегия", "Н-то.", "Нтто.", "нудный", "-ный", "Нью-Дели", "Нью-Йорк", "ньюсмейкера", "ньюсмейкерам", "ньюсмейкерами", "ньюсмейкерах", "ньюсмейкере", "ньюсмейкеров", "ньюсмейкером", "ньюсмейкеру", "ньюсмейкеры", "обсессией", "обсессиею", "обсессии", "обсессий", "обсессию", "обсессиям", "обсессиями", "обсессиях", "Объединённые Арабские Эмираты", "объезжать", "обычный", "-овать", "-овна", "Оганесян", "О-де-Сен", "Одесса", "одессита", "одесситам", "одесситами", "одесситах", "одессите", "одесситов", "одесситом", "одесситу", "одесситы", "одесский", "оджибва", "одногорбый верблюд", "Океания", "Оман", "омар", "омбудсмена", "омбудсменам", "омбудсменами", "омбудсменах", "омбудсмене", "омбудсменов", "омбудсменом", "омбудсмену", "омбудсмены", "оподельдока", "оподельдоке", "оподельдоком", "оподельдоку", "определяющее слово", "о-пэр", "орального секса", "оральном сексе", "оральному сексу", "оральные сексы", "оральным сексам", "оральным сексом", "оральными сексами", "оральных сексах", "оральных сексов", "оргия", "орхидее", "орхидеей", "орхидеею", "орхидеи", "орхидей", "орхидею", "орхидеям", "орхидеями", "орхидеях", "особь", "остров Принца Эдуарда", "острова Кука", "отеле", "отелей", "отелем", "отели", "отелю", "отеля", "отелям", "отелями", "отелях", "отличник", "отсос", "отъезжать", "очечник", "очечника", "очечникам", "очечниками", "очечниках", "очечнике", "очечники", "очечников", "очечником", "очечнику", "очёчник", "очёчника", "очёчникам", "очёчниками", "очёчниках", "очёчнике", "очёчники", "очёчников", "очёчником", "очёчнику", "-очка", "Па-де-Кале", "Пакистан", "палатка", "Палау", "Паликир", "палимпсеста", "палимпсестам", "палимпсестами", "палимпсестах", "палимпсесте", "палимпсестов", "палимпсестом", "палимпсесту", "палимпсесты", "Панама", "пандеизм", "пандеизма", "пандеизмам", "пандеизмами", "пандеизмах", "пандеизме", "пандеизмов", "пандеизмом", "пандеизму", "пандеизмы", "пандемией", "пандемиею", "пандемии", "пандемий", "пандемию", "пандемиям", "пандемиями", "пандемиях", "панелей", "панели", "панельный", "панелью", "панелям", "панелями", "панелях", "пансексуальности", "пансексуальность", "пансексуальностью", "пансексуальный", "пантеизм", "пантеизма", "пантеизмам", "пантеизмами", "пантеизмах", "пантеизме", "пантеизмов", "пантеизмом", "пантеизму", "пантеизмы", "пантеист", "пантеиста", "пантеистам", "пантеистами", "пантеистах", "пантеисте", "пантеистов", "пантеистом", "пантеисту", "пантеисты", "пантеона", "пантеонам", "пантеонами", "пантеонах", "пантеоне", "пантеонов", "пантеоном", "пантеону", "пантеоны", "пантер", "пантера", "пантерам", "пантерами", "пантерах", "пантере", "пантерой", "пантерою", "пантеру", "пантеры", "Папуа-Новая Гвинея", "пара", "параплан", "партера", "партерам", "партерами", "партерах", "партере", "партеров", "партером", "партеру", "партеры", "пастелей", "пастели", "пастелью", "пастелям", "пастелями", "пастелях", "пастеризацией", "пастеризациею", "пастеризации", "пастеризаций", "пастеризацию", "пастеризациям", "пастеризациями", "пастеризациях", "пастеризовав", "пастеризовавши", "пастеризовавший", "пастеризовал", "пастеризовала", "пастеризовали", "пастеризовало", "пастеризованный", "пастеризуем", "пастеризуемый", "пастеризует", "пастеризуете", "пастеризуешь", "пастеризуй", "пастеризуйте", "пастеризую", "пастеризуют", "пастеризующий", "пастеризуя", "пастернака", "пастернакам", "пастернаками", "пастернаках", "пастернаке", "пастернаки", "пастернаков", "пастернаком", "пастернаку", "патетике", "патетики", "патетикой", "патетикою", "патетику", "патетический", "патогенез", "патогенеза", "патогенезам", "патогенезами", "патогенезах", "патогенезе", "патогенезов", "патогенезом", "патогенезу", "патогенезы", "пациент", "пациента", "пациентам", "пациентами", "пациентах", "пациенте", "пациентка", "пациенткам", "пациентками", "пациентках", "пациентке", "пациентки", "пациенткой", "пациенткою", "пациентку", "пациентов", "пациенток", "пациентом", "пациенту", "пациенты", "педеле", "педелей", "педелем", "педели", "педелю", "педеля", "педелям", "педелями", "педелях", "педераст", "педераста", "педерастам", "педерастами", "педерастах", "педерасте", "педерастией", "педерастиею", "педерастии", "педерастий", "педерастический", "педерастию", "педерастия", "педерастиям", "педерастиями", "педерастиях", "педерастов", "педерастом", "педерасту", "педерасты", "пейджера", "пейджерам", "пейджерами", "пейджерах", "пейджере", "пейджеров", "пейджером", "пейджеру", "пейджеры", "пениса", "пенисам", "пенисами", "пенисах", "пенисе", "пенисов", "пенисом", "пенису", "пенисы", "пентадекана", "пентадеканам", "пентадеканами", "пентадеканах", "пентадекане", "пентадеканов", "пентадеканом", "пентадекану", "пентадеканы", "переезжать", "персонального компьютера", "персональном компьютере", "персональному компьютеру", "персональные компьютеры", "персональным компьютерам", "персональным компьютером", "персональными компьютерами", "персональных компьютерах", "персональных компьютеров", "пещеристое тело", "пианино", "пидор", "пидорас", "пикельхаубе", "пикельхельм", "пикельхельма", "пикельхельмам", "пикельхельмами", "пикельхельмах", "пикельхельме", "пикельхельмов", "пикельхельмом", "пикельхельму", "пикельхельмы", "пинг-понг", "плавательного бассейна", "плавательном бассейне", "плавательному бассейну", "плавательные бассейны", "плавательный", "плавательным бассейнам", "плавательным бассейном", "плавательными бассейнами", "плавательных бассейнах", "плавательных бассейнов", "плакат", "плеер", "плеера", "плеерам", "плеерами", "плеерах", "плеере", "плееров", "плеером", "плееру", "плееры", "плейбое", "плейбоев", "плейбоем", "плейбои", "плейбою", "плейбоя", "плейбоям", "плейбоями", "плейбоях", "плоттер", "плоттера", "плоттерам", "плоттерами", "плоттерах", "плоттере", "плоттеров", "плоттером", "плоттеру", "плоттеры", "погромщик", "подвижной состав", "подземка", "подряд", "подъезжать", "поезд", "поездить", "пойнтера", "пойнтерам", "пойнтерами", "пойнтерах", "пойнтере", "пойнтеров", "пойнтером", "пойнтеру", "пойнтеры", "пол", "полезная модель", "полезной модели", "полезной моделью", "полезною моделью", "полезную модель", "полезные модели", "полезным моделям", "полезными моделями", "полезных моделей", "полезных моделях", "Полинезия", "полисиндетон", "полисиндетона", "полисиндетонам", "полисиндетонами", "полисиндетонах", "полисиндетоне", "полисиндетонов", "полисиндетоном", "полисиндетону", "полисиндетоны", "политеизм", "политеизма", "политеизмам", "политеизмами", "политеизмах", "политеизме", "политеизмов", "политеизмом", "политеизму", "политеизмы", "политеист", "политеиста", "политеистам", "политеистами", "политеистах", "политеисте", "политеистический", "политеистов", "политеистом", "политеисту", "политеисты", "полиэстера", "полиэстерам", "полиэстерами", "полиэстерах", "полиэстере", "полиэстеров", "полиэстером", "полиэстеру", "полиэстеры", "половой член", "полтергейста", "полтергейстам", "полтергейстами", "полтергейстах", "полтергейсте", "полтергейстов", "полтергейстом", "полтергейсту", "полтергейсты", "полубог", "полубога", "полубогам", "полубогами", "полубогах", "полубоге", "полубоги", "полубогов", "полубогом", "полубогу", "Польша", "поляризация", "поляризовать", "помогать", "понарошку", "портер", "портера", "портере", "портером", "портеру", "Португалия", "порядок", "порядочно", "порядочность", "постера", "постерам", "постерами", "постерах", "постере", "постеров", "постером", "постеру", "постеры", "постмодернизма", "постмодернизме", "постмодернизмом", "постмодернизму", "постмодернист", "постмодерниста", "постмодернистам", "постмодернистами", "постмодернистах", "постмодернисте", "постмодернистов", "постмодернистом", "постмодернистский", "постмодернисту", "постмодернисты", "посттравматические стрессовые расстройства", "посттравматическим стрессовым расстройствам", "посттравматическим стрессовым расстройством", "посттравматическими стрессовыми расстройствами", "посттравматических стрессовых расстройств", "посттравматических стрессовых расстройствах", "посттравматического стрессового расстройства", "посттравматическом стрессовом расстройстве", "посттравматическому стрессовому расстройству", "потенциала", "потенциалам", "потенциалами", "потенциалах", "потенциале", "потенциалов", "потенциалом", "потенциалу", "потенциалы", "потенциально", "потенциальный", "потенцией", "потенциею", "потенции", "потенций", "потенцию", "потенция", "потенциям", "потенциями", "потенциях", "поц", "почтового индекса", "почтовом индексе", "почтовому индексу", "почтовые индексы", "почтовым индексам", "почтовым индексом", "почтовыми индексами", "почтовых индексах", "почтовых индексов", "поэтесс", "поэтесса", "поэтессам", "поэтессами", "поэтессах", "поэтессе", "поэтессой", "поэтессою", "поэтессу", "поэтессы", "пояса астероидов", "поясам астероидов", "поясами астероидов", "поясах астероидов", "поясе астероидов", "поясов астероидов", "поясом астероидов", "поясу астероидов", "пранк", "пранкстера", "пранкстерам", "пранкстерами", "пранкстерах", "пранкстере", "пранкстеров", "пранкстером", "пранкстеру", "пранкстеры", "прачечной", "прачечною", "прачечную", "прачечные", "прачечным", "прачечными", "прачечных", "Прая", "предприятие", "пресвитериан", "пресвитерианам", "пресвитерианами", "пресвитерианах", "пресвитериане", "пресвитерианина", "пресвитерианине", "пресвитерианином", "пресвитерианину", "пресвитерианства", "пресвитерианстве", "пресвитерианством", "пресвитерианству", "претендовать", "претензией", "претензиею", "претензии", "претензий", "претензию", "претензиям", "претензиями", "претензиях", "Претория", "приезжать", "приквел", "прикольный", "приличный", "принтера", "принтерам", "принтерами", "принтерах", "принтере", "принтеров", "принтером", "принтеру", "принтеры", "провайдера", "провайдерам", "провайдерами", "провайдерах", "провайдере", "провайдеров", "провайдером", "провайдеру", "провайдеры", "программа", "программное обеспечение", "прогресс", "прогресса", "прогрессам", "прогрессами", "прогрессах", "прогрессе", "прогрессивен", "прогрессивна", "прогрессивно", "прогрессивностей", "прогрессивности", "прогрессивность", "прогрессивностью", "прогрессивностям", "прогрессивностями", "прогрессивностях", "прогрессивны", "прогрессивный", "прогрессией", "прогрессиею", "прогрессии", "прогрессий", "прогрессировав", "прогрессировавши", "прогрессировавший", "прогрессировал", "прогрессировала", "прогрессировали", "прогрессировало", "прогрессировать", "прогрессируем", "прогрессирует", "прогрессируете", "прогрессируешь", "прогрессируй", "прогрессируйте", "прогрессирую", "прогрессируют", "прогрессирующий", "прогрессируя", "прогрессию", "прогрессия", "прогрессиям", "прогрессиями", "прогрессиях", "прогрессов", "прогрессом", "прогрессу", "прогрессы", "продюсера", "продюсерам", "продюсерами", "продюсерах", "продюсере", "продюсеров", "продюсером", "продюсеру", "продюсеры", "проезжать", "проект", "проекта", "проектам", "проектами", "проектах", "проекте", "проектировав", "проектировавши", "проектировавший", "проектировал", "проектировала", "проектировали", "проектировало", "проектирование", "проектированием", "проектировании", "проектирований", "проектированию", "проектирования", "проектированиям", "проектированиями", "проектированиях", "проектированный", "проектировать", "проектировщик", "проектировщика", "проектировщикам", "проектировщиками", "проектировщиках", "проектировщике", "проектировщики", "проектировщиков", "проектировщиком", "проектировщику", "проектируем", "проектируемый", "проектирует", "проектируете", "проектируешь", "проектируй", "проектируйте", "проектирую", "проектируют", "проектирующий", "проектируя", "проектный", "проектов", "проектом", "проектора", "проекторам", "проекторами", "проекторах", "проекторе", "проекторов", "проектором", "проектору", "проекторы", "проекту", "проекты", "проекцией", "проекциею", "проекции", "проекций", "проекцию", "проекция", "проекциям", "проекциями", "проекциях", "проецировав", "проецировавши", "проецировавший", "проецировал", "проецировала", "проецировали", "проецировало", "проецированный", "проецировать", "проецируем", "проецируемый", "проецирует", "проецируете", "проецируешь", "проецируй", "проецируйте", "проецирую", "проецируют", "проецирующий", "проецируя", "прожект", "прожектор", "проигрыватель", "проиндексировав", "проиндексировавши", "проиндексировавший", "проиндексировал", "проиндексировала", "проиндексировали", "проиндексировало", "проиндексированный", "проиндексировать", "проиндексируем", "проиндексирует", "проиндексируете", "проиндексируешь", "проиндексируй", "проиндексируйте", "проиндексирую", "проиндексируют", "протеза", "протезам", "протезами", "протезах", "протезе", "протезированием", "протезировании", "протезирований", "протезированию", "протезирования", "протезированиям", "протезированиями", "протезированиях", "протезов", "протезом", "протезу", "протезы", "протеин", "протеина", "протеинам", "протеинами", "протеинах", "протеине", "протеинов", "протеином", "протеину", "протеины", "протектората", "протекторатам", "протекторатами", "протекторатах", "протекторате", "протекторатов", "протекторатом", "протекторату", "протектораты", "протекцией", "протекциею", "протекции", "протекций", "протекционизм", "протекцию", "протекциям", "протекциями", "протекциях", "протестировав", "протестировавши", "протестировавший", "протестировал", "протестировала", "протестировали", "протестировало", "протестированный", "протестировать", "протестируем", "протестирует", "протестируете", "протестируешь", "протестируй", "протестируйте", "протестирую", "протестируют", "психически", "психотерапевта", "психотерапевтам", "психотерапевтами", "психотерапевтах", "психотерапевте", "психотерапевтов", "психотерапевтом", "психотерапевту", "психотерапевты", "психотерапией", "психотерапиею", "психотерапии", "психотерапий", "психотерапию", "психотерапиям", "психотерапиями", "психотерапиях", "публичный дом", "пустячок", "путинферштеер", "Путлер", "Пхеньян", "пьютера", "пьютерам", "пьютерами", "пьютерах", "пьютере", "пьютеров", "пьютером", "пьютеру", "пьютеры", "Пюи-де-Дом", "равный", "радиоинтерферометр", "радиоинтерферометра", "радиоинтерферометрам", "радиоинтерферометрами", "радиоинтерферометрах", "радиоинтерферометре", "радиоинтерферометрией", "радиоинтерферометриею", "радиоинтерферометрии", "радиоинтерферометрию", "радиоинтерферометрия", "радиоинтерферометров", "радиоинтерферометром", "радиоинтерферометру", "радиоинтерферометры", "раздражённо", "раздражённый", "разъезжать", "разъезжаться", "рассказ", "расшифровать", "расшифровывать", "реверанс", "регги", "регрессией", "регрессиею", "регрессии", "регрессий", "регрессировать", "регрессию", "регрессиям", "регрессиями", "регрессиях", "резюмировать", "рейдерств", "рейдерства", "рейдерствам", "рейдерствами", "рейдерствах", "рейдерстве", "рейдерство", "рейдерством", "рейдерству", "Рейкьявик", "рейсфедера", "рейсфедерам", "рейсфедерами", "рейсфедерах", "рейсфедере", "рейсфедеров", "рейсфедером", "рейсфедеру", "рейсфедеры", "рейтинга", "рейтингам", "рейтингами", "рейтингах", "рейтинге", "рейтинги", "рейтингов", "рейтинговый", "рейтингом", "рейтингу", "рейха", "рейхам", "рейхами", "рейхах", "рейхе", "рейхи", "рейхов", "рейхом", "рейхстага", "рейхстагам", "рейхстагами", "рейхстагах", "рейхстаге", "рейхстаги", "рейхстагов", "рейхстагом", "рейхстагу", "рейху", "реквиема", "реквиемам", "реквиемами", "реквиемах", "реквиеме", "реквиемов", "реквиемом", "реквиему", "реквиемы", "рекордера", "рекордерам", "рекордерами", "рекордерах", "рекордере", "рекордеров", "рекордером", "рекордеру", "рекордеры", "ректор", "ренессанса", "ренессансам", "ренессансами", "ренессансах", "ренессансе", "ренессансов", "ренессансом", "ренессансу", "ренессансы", "реорганизовать", "репа", "репутация", "ресепшена", "ресепшенам", "ресепшенами", "ресепшенах", "ресепшене", "ресепшенов", "ресепшеном", "ресепшену", "ресепшены", "ресепшн", "Республика Конго", "рецепция", "рибонуклеиновая кислота", "риелтер", "риелтера", "риелтерам", "риелтерами", "риелтерах", "риелтере", "риелтеров", "риелтером", "риелтеру", "риелтеры", "риелтор", "риелтора", "риелторам", "риелторами", "риелторах", "риелторе", "риелторов", "риелтором", "риелтору", "риелторы", "риэлтер", "риэлтера", "риэлтерам", "риэлтерами", "риэлтерах", "риэлтере", "риэлтеров", "риэлтером", "риэлтеру", "риэлтеры", "риэлтор", "Род-Айленд", "родий", "рододендрон", "рододендрона", "рододендронам", "рододендронами", "рододендронах", "рододендроне", "рододендронов", "рододендроном", "рододендрону", "рододендроны", "розетт", "розеттам", "розеттами", "розеттах", "розетте", "розеттой", "розеттою", "розетту", "розетты", "рокер", "Россия", "рояль", "Руанда", "рукоборье", "Румыния", "Рунет", "рунет", "Рунета", "Рунетам", "Рунетами", "Рунетах", "Рунете", "Рунетов", "Рунетом", "Рунету", "рунетчик", "рунетчика", "рунетчикам", "рунетчиками", "рунетчиках", "рунетчике", "рунетчики", "рунетчиков", "рунетчиком", "рунетчику", "Рунеты", "рутениев", "рутением", "рутении", "рутений", "рутению", "рутения", "рутениям", "рутениями", "рутениях", "рэгтайм", "с глазу на глаз", "с нами Бог", "сайт", "Сайтама", "сакэ", "Сальвадор", "Самаэль", "Самоа", "самоидентификацией", "самоидентификациею", "самоидентификации", "самоидентификаций", "самоидентификацию", "самоидентификация", "самоидентификациям", "самоидентификациями", "самоидентификациях", "Сана", "Сан-Марино", "Сан-Томе и Принсипи", "сарделек", "сарделькам", "сардельками", "сардельках", "сардельке", "сардельки", "сарделькой", "сарделькою", "сардельку", "Сатана", "Саудовская Аравия", "саундтрек", "саундтрека", "саундтрекам", "саундтреками", "саундтреках", "саундтреке", "саундтреки", "саундтреков", "саундтреком", "саундтреку", "Саха", "свеча", "свидание", "свитера", "свитерам", "свитерами", "свитерах", "свитере", "свитеров", "свитером", "свитеру", "свитеры", "Себу", "себяшка", "Севан", "севанские форели", "севанским форелям", "севанскими форелями", "севанских форелей", "севанских форелях", "севанской форели", "севанской форелью", "севанскою форелью", "севанскую форель", "Северная Корея", "Северная Македония", "сегун", "сейла", "сейлам", "сейлами", "сейлах", "сейле", "сейлов", "сейлом", "сейлу", "сейлы", "сейсмология", "сейсмопротектор", "сейсмопротектора", "сейсмопротекторам", "сейсмопротекторами", "сейсмопротекторах", "сейсмопротекторе", "сейсмопротекторов", "сейсмопротектором", "сейсмопротектору", "сейсмопротекторы", "сейфа", "сейфам", "сейфами", "сейфах", "сейфе", "сейфов", "сейфом", "сейфу", "сейфы", "Сейшельские острова", "секретера", "секретерам", "секретерами", "секретерах", "секретере", "секретеров", "секретером", "секретеру", "секретеры", "секс", "секса", "сексам", "сексами", "сексапилочек", "сексапилочка", "сексапилочкам", "сексапилочками", "сексапилочках", "сексапилочке", "сексапилочки", "сексапилочкой", "сексапилочкою", "сексапилочку", "сексах", "секс-бомб", "секс-бомбам", "секс-бомбами", "секс-бомбах", "секс-бомбе", "секс-бомбой", "секс-бомбою", "секс-бомбу", "секс-бомбы", "сексе", "секси", "сексизм", "сексизма", "сексизме", "сексизмом", "сексизму", "сексист", "сексиста", "сексистам", "сексистами", "сексистах", "сексисте", "сексистов", "сексистом", "сексистский", "сексисту", "сексисты", "сексов", "сексолога", "сексологам", "сексологами", "сексологах", "сексологе", "сексологи", "сексологией", "сексологиею", "сексологии", "сексологий", "сексологию", "сексологиям", "сексологиями", "сексологиях", "сексологов", "сексологом", "сексологу", "сексом", "сексу", "сексуален", "сексуальна", "сексуальная ориентация", "сексуально", "сексуальной ориентацией", "сексуальной ориентации", "сексуальностей", "сексуальности", "сексуальность", "сексуальностью", "сексуальностям", "сексуальностями", "сексуальностях", "сексуальною ориентациею", "сексуальную ориентацию", "сексуальны", "сексуальные ориентации", "сексуальным ориентациям", "сексуальными ориентациями", "сексуальных ориентаций", "сексуальных ориентациях", "секс-шопа", "секс-шопам", "секс-шопами", "секс-шопах", "секс-шопе", "секс-шопов", "секс-шопом", "секс-шопу", "секс-шопы", "сексы", "секунда", "семпл", "семпла", "семплам", "семплами", "семплах", "семпле", "семплер", "семплера", "семплерам", "семплерами", "семплерах", "семплере", "семплерный", "семплеров", "семплером", "семплеру", "семплеры", "семплинг", "семплинга", "семплингам", "семплингами", "семплингах", "семплинге", "семплинги", "семплингов", "семплингом", "семплингу", "семплировав", "семплировавши", "семплировавший", "семплировал", "семплировала", "семплировали", "семплировало", "семплированный", "семплировать", "семплируем", "семплируемый", "семплирует", "семплируете", "семплируешь", "семплируй", "семплируйте", "семплирую", "семплируют", "семплирующий", "семплируя", "семплов", "семплом", "семплу", "семплы", "сенбернара", "сенбернарам", "сенбернарами", "сенбернарах", "сенбернаре", "сенбернаров", "сенбернаром", "сенбернару", "сенбернары", "Сенегал", "сенешале", "сенешалей", "сенешалем", "сенешали", "сенешалю", "сенешаля", "сенешалям", "сенешалями", "сенешалях", "сенсационный", "сенсее", "сенсеев", "сенсеем", "сенсеи", "Сен-Сен-Дени", "сенсею", "сенсея", "сенсеям", "сенсеями", "сенсеях", "сенсор", "сенсора", "сенсорам", "сенсорами", "сенсорах", "сенсоре", "сенсорный", "сенсоров", "сенсором", "сенсору", "сенсоры", "Сент-Винсент и Гренадины", "сентенцией", "сентенциею", "сентенции", "сентенций", "сентенцию", "сентенциям", "сентенциями", "сентенциях", "Сент-Китс и Невис", "Сент-Люсия", "Сербия", "сервер", "сервиса", "сервисам", "сервисами", "сервисах", "сервисе", "сервисный", "сервисов", "сервисом", "сервису", "сервисы", "сессией", "сессиею", "сессии", "сессий", "сессию", "сессия", "сессиям", "сессиями", "сессиях", "сет", "сета", "сетам", "сетами", "сетах", "сете", "сетов", "сетом", "сеттера", "сеттерам", "сеттерами", "сеттерах", "сеттере", "сеттеров", "сеттером", "сеттеру", "сеттеры", "сету", "сеты", "Сидней", "сиквел", "сиквела", "сиквелам", "сиквелами", "сиквелах", "сиквеле", "сиквелов", "сиквелом", "сиквелу", "сиквелы", "символ веры", "Сингапур", "синергией", "синергиею", "синергии", "синергий", "синергию", "синергиям", "синергиями", "синергиях", "синтез", "синтеза", "синтезам", "синтезами", "синтезатор", "синтезатора", "синтезаторам", "синтезаторами", "синтезаторах", "синтезаторе", "синтезаторов", "синтезатором", "синтезатору", "синтезаторы", "синтезах", "синтезе", "синтезировав", "синтезировавши", "синтезировавший", "синтезировал", "синтезировала", "синтезировали", "синтезировало", "синтезированный", "синтезировать", "синтезируем", "синтезируемый", "синтезирует", "синтезируете", "синтезируешь", "синтезируй", "синтезируйте", "синтезирую", "синтезируют", "синтезирующий", "синтезируя", "синтезов", "синтезом", "синтезу", "синтезы", "синтетик", "синтетика", "синтетикам", "синтетиками", "синтетиках", "синтетике", "синтетики", "синтетикой", "синтетикою", "синтетику", "синтетический", "Сирия", "сканера", "сканерам", "сканерами", "сканерах", "сканере", "сканеров", "сканером", "сканеру", "сканеры", "скаредан", "скворец", "скворечен", "скворечне", "скворечней", "скворечнею", "скворечни", "скворечник", "скворечника", "скворечникам", "скворечниками", "скворечниках", "скворечнике", "скворечники", "скворечников", "скворечником", "скворечнику", "скворечню", "скворечня", "скворечням", "скворечнями", "скворечнях", "сквоттер", "сквоттера", "сквоттерам", "сквоттерами", "сквоттерах", "сквоттере", "сквоттеров", "сквоттером", "сквоттеру", "сквоттеры", "скин", "скинхед", "скинхеда", "скинхедам", "скинхедами", "скинхедах", "скинхеде", "скинхедов", "скинхедом", "скинхеду", "скинхеды", "скука", "скутера", "скутерам", "скутерами", "скутерах", "скутере", "скутеров", "скутером", "скутеру", "скутеры", "скучать", "скучающий", "скучен", "скучна", "скучнее", "скучно", "скучны", "скучный", "Слава", "сленг", "сленга", "сленгам", "сленгами", "сленгах", "сленге", "сленги", "сленгов", "сленгом", "сленгу", "слеша", "слешам", "слешами", "слешах", "слеше", "слешей", "слешем", "слеши", "слешу", "Словакия", "Словения", "слэш", "смоделировав", "смоделировавши", "смоделировавший", "смоделировал", "смоделировала", "смоделировали", "смоделировало", "смоделированный", "смоделировать", "смоделируем", "смоделирует", "смоделируете", "смоделируешь", "смоделируй", "смоделируйте", "смоделирую", "смоделируют", "смонтировать", "СМС", "СНГ", "собеседование", "соглашение", "Содружество Независимых Государств", "Соединённые Штаты Америки", "Соледар", "Соломоновы Острова", "Сомали", "сон", "сонета", "сонетам", "сонетами", "сонетах", "сонете", "сонетов", "сонетом", "сонету", "сонеты", "сопродюсер", "сопродюсера", "сопродюсерам", "сопродюсерами", "сопродюсерах", "сопродюсере", "сопродюсеров", "сопродюсером", "сопродюсеру", "сопродюсеры", "соревнование", "спаниеле", "спаниелей", "спаниелем", "спаниели", "спаниелю", "спаниеля", "спаниелям", "спаниелями", "спаниелях", "спеллинга", "спеллинге", "спеллингом", "спеллингу", "спичрайтера", "спичрайтерам", "спичрайтерами", "спичрайтерах", "спичрайтере", "спичрайтеров", "спичрайтером", "спичрайтеру", "спичрайтеры", "сплав", "спланировать", "спринтера", "спринтерам", "спринтерами", "спринтерах", "спринтере", "спринтеров", "спринтером", "спринтеру", "спринтеры", "спроектировав", "спроектировавши", "спроектировавший", "спроектировал", "спроектировала", "спроектировали", "спроектировало", "спроектированный", "спроектировать", "спроектируем", "спроектирует", "спроектируете", "спроектируешь", "спроектируй", "спроектируйте", "спроектирую", "спроектируют", "спроецировав", "спроецировавши", "спроецировавший", "спроецировал", "спроецировала", "спроецировали", "спроецировало", "спроецированный", "спроецировать", "спроецируем", "спроецирует", "спроецируете", "спроецируешь", "спроецируй", "спроецируйте", "спроецирую", "спроецируют", "станичника", "станичникам", "станичниками", "станичниках", "станичнике", "станичники", "станичников", "станичником", "станичнику", "станок", "старшая карта", "Статен-Айленд", "стезя", "стейк", "стейка", "стейкам", "стейками", "стейках", "стейке", "стейки", "стейков", "стейком", "стейку", "стек", "стека", "стекам", "стеками", "стеках", "стеке", "стеки", "стеков", "стекой", "стеком", "стекою", "стеку", "стел", "стелам", "стелами", "стелах", "стеле", "стелой", "стелою", "стелу", "стелы", "стена", "стенам", "стенами", "стенах", "стенда", "стендам", "стендами", "стендах", "стенде", "стендов", "стендом", "стенду", "стенды", "стене", "стенов", "стенокардией", "стенокардиею", "стенокардии", "стенокардий", "стенокардию", "стенокардиям", "стенокардиями", "стенокардиях", "стеном", "стену", "стены", "степа", "степам", "степами", "степах", "степе", "степлера", "степлерам", "степлерами", "степлерах", "степлере", "степлеров", "степлером", "степлеру", "степлеры", "степов", "степом", "степу", "степы", "стетоскопа", "стетоскопам", "стетоскопами", "стетоскопах", "стетоскопе", "стетоскопов", "стетоскопом", "стетоскопу", "стетоскопы", "стопа", "стояк", "стрейт", "стрейта", "стрейтам", "стрейтами", "стрейтах", "стрейте", "стрейтов", "стрейтом", "стрейту", "стрейт-флеш", "стрейт-флеша", "стрейт-флешам", "стрейт-флешами", "стрейт-флешах", "стрейт-флеше", "стрейт-флешей", "стрейт-флешем", "стрейт-флеши", "стрейт-флешу", "стрейты", "стресс", "стресса", "стрессам", "стрессами", "стрессах", "стрессе", "стрессов", "стрессовый", "стрессом", "стрессу", "стрессы", "стрит", "стрит-флеш", "стрит-флеша", "стрит-флешам", "стрит-флешами", "стрит-флешах", "стрит-флеше", "стрит-флешей", "стрит-флешем", "стрит-флеши", "стрит-флешу", "стюардесс", "стюардессам", "стюардессами", "стюардессах", "стюардессе", "стюардессой", "стюардессою", "стюардессу", "стюардессы", "Судан", "супермен", "супермена", "суперменам", "суперменами", "суперменах", "супермене", "суперменов", "суперменом", "супермену", "супермены", "супермодель", "супружеская измена", "супружеская неверность", "сурьма", "сфинктера", "сфинктерам", "сфинктерами", "сфинктерах", "сфинктере", "сфинктеров", "сфинктером", "сфинктеру", "сфинктеры", "счетовод", "сшиватель", "съезжать", "съезжаться", "Сьерра-Леоне", "сэнсэй", "т. е.", "Таджикистан", "Тайланд", "таксидермией", "таксидермиею", "таксидермии", "таксидермист", "таксидермиста", "таксидермистам", "таксидермистами", "таксидермистах", "таксидермисте", "таксидермистов", "таксидермистом", "таксидермисту", "таксидермисты", "таксидермию", "таксидермия", "тамплиера", "тамплиерам", "тамплиерами", "тамплиерах", "тамплиере", "тамплиеров", "тамплиером", "тамплиеру", "тамплиеры", "тандем", "тандема", "тандемам", "тандемами", "тандемах", "тандеме", "тандемов", "тандемом", "тандему", "тандемы", "Танзания", "тега", "тегам", "тегами", "тегах", "теге", "теги", "тегов", "тегом", "тегу", "тез", "теза", "тезам", "тезами", "тезаурус", "тезауруса", "тезаурусам", "тезаурусами", "тезаурусах", "тезаурусе", "тезаурусов", "тезаурусом", "тезаурусу", "тезаурусы", "тезах", "тезе", "тезис", "тезиса", "тезисам", "тезисами", "тезисах", "тезисе", "тезисный", "тезисов", "тезисом", "тезису", "тезисы", "тезой", "тезою", "тезу", "тезы", "теизм", "теизма", "теизмам", "теизмами", "теизмах", "теизме", "теизмов", "теизмом", "теизму", "теизмы", "теист", "теиста", "теистам", "теистами", "теистах", "теисте", "теистический", "теистических", "теистов", "теистом", "теисту", "теисты", "телеграф", "телекинеза", "телекинезе", "телекинезом", "телекинезу", "теллур", "теллура", "теллурам", "теллурами", "теллурах", "теллуре", "теллуров", "теллуром", "теллуру", "теллуры", "Тель-Авивъ", "-тельный", "тембра", "тембрам", "тембрами", "тембрах", "тембре", "тембров", "тембром", "тембру", "тембры", "темпа", "темпам", "темпами", "темпах", "темпе", "темпов", "темпом", "темпу", "темпуре", "темпурой", "темпурою", "темпуру", "темпуры", "темпы", "тенакле", "тенаклей", "тенаклем", "тенакли", "тенаклю", "тенакля", "тенаклям", "тенаклями", "тенаклях", "тенденцией", "тенденциею", "тенденции", "тенденций", "тенденцию", "тенденция", "тенденциям", "тенденциями", "тенденциях", "тендера", "тендерам", "тендерами", "тендерах", "тендере", "тендеров", "тендером", "тендеру", "тендеры", "Теннесси", "теннис", "тенниса", "теннисе", "теннисиста", "теннисистам", "теннисистами", "теннисистах", "теннисисте", "теннисистка", "теннисисткам", "теннисистками", "теннисистках", "теннисистке", "теннисистки", "теннисисткой", "теннисисткою", "теннисистку", "теннисистов", "теннисисток", "теннисистом", "теннисисту", "теннисисты", "тенниска", "теннискам", "теннисками", "теннисках", "тенниске", "тенниски", "тенниской", "теннискою", "тенниску", "теннисный", "теннисок", "теннисом", "теннису", "тента", "тентам", "тентами", "тентах", "тенте", "тентов", "тентом", "тенту", "тенты", "теолог", "теолога", "теологам", "теологами", "теологах", "теологе", "теологи", "теологией", "теологиею", "теологии", "теологический", "теологию", "теология", "теологов", "теологом", "теологу", "теософией", "теософиею", "теософии", "теософию", "терапевта", "терапевтам", "терапевтами", "терапевтах", "терапевте", "терапевтический", "терапевтов", "терапевтом", "терапевту", "терапевты", "тербиев", "тербием", "тербии", "тербий", "тербию", "тербия", "тербиям", "тербиями", "тербиях", "терменвокса", "терменвоксам", "терменвоксами", "терменвоксах", "терменвоксе", "терменвоксов", "терменвоксом", "терменвоксу", "терменвоксы", "термина", "терминам", "терминами", "терминах", "термине", "терминов", "термином", "термину", "термины", "термоса", "термосам", "термосами", "термосах", "термосе", "термосов", "термосом", "термосу", "термосы", "терьера", "терьерам", "терьерами", "терьерах", "терьере", "терьеров", "терьером", "терьеру", "терьеры", "тест", "теста", "тестам", "тестами", "тестах", "тесте", "тестировав", "тестировавши", "тестировавший", "тестировал", "тестировала", "тестировали", "тестировало", "тестированием", "тестировании", "тестирований", "тестированию", "тестирования", "тестированиям", "тестированиями", "тестированиях", "тестированный", "тестировщик", "тестировщика", "тестировщикам", "тестировщиками", "тестировщиках", "тестировщике", "тестировщики", "тестировщиков", "тестировщиком", "тестировщику", "тестируем", "тестируемый", "тестирует", "тестируете", "тестируешь", "тестируй", "тестируйте", "тестирую", "тестируют", "тестирующий", "тестируя", "тестов", "тестовый", "тестом", "тестостерон", "тестостерона", "тестостеронам", "тестостеронами", "тестостеронах", "тестостероне", "тестостеронов", "тестостероном", "тестостерону", "тестостероны", "тест-систем", "тест-система", "тест-системам", "тест-системами", "тест-системах", "тест-системе", "тест-системой", "тест-системою", "тест-систему", "тест-системы", "тесту", "тесты", "тет-а-тета", "тет-а-тетам", "тет-а-тетами", "тет-а-тетах", "тет-а-тете", "тет-а-тетов", "тет-а-тетом", "тет-а-тету", "тет-а-теты", "тетрарха", "тетрархам", "тетрархами", "тетрархах", "тетрархе", "тетрархи", "тетрархов", "тетрархом", "тетрарху", "тетрахлорметана", "тетрахлорметанам", "тетрахлорметанами", "тетрахлорметанах", "тетрахлорметане", "тетрахлорметанов", "тетрахлорметаном", "тетрахлорметану", "тетрахлорметаны", "Тетрис", "Тетриса", "Тетрисе", "Тетрисом", "Тетрису", "теург", "теургия", "технеций", "тёмной энергией", "тёмной энергии", "тёмною энергиею", "тёмную энергию", "Тиба", "тизера", "тизерам", "тизерами", "тизерах", "тизере", "тизеров", "тизером", "тизеру", "тизеры", "тинейджер", "тинейджера", "тинейджерам", "тинейджерами", "тинейджерах", "тинейджере", "тинейджеров", "тинейджером", "тинейджеру", "тинейджеры", "Того", "тойтерьера", "тойтерьерам", "тойтерьерами", "тойтерьерах", "тойтерьере", "тойтерьеров", "тойтерьером", "тойтерьеру", "тойтерьеры", "Токио", "Тонга", "тоннеле", "тоннелей", "тоннелем", "тоннели", "тоннель", "тоннелю", "тоннеля", "тоннелям", "тоннелями", "тоннелях", "топливно-энергетический", "топ-менеджер", "топ-менеджера", "топ-менеджерам", "топ-менеджерами", "топ-менеджерах", "топ-менеджере", "топ-менеджеров", "топ-менеджером", "топ-менеджеру", "топ-менеджеры", "топ-модель", "торпедо", "тоска", "тостер", "тостера", "тостерам", "тостерами", "тостерах", "тостере", "тостеров", "тостером", "тостеру", "тостеры", "тотем", "тотема", "тотемам", "тотемами", "тотемах", "тотеме", "тотемов", "тотемом", "тотему", "тотемы", "точка", "траекторией", "траекториею", "траектории", "траекторий", "траекторию", "траекториям", "траекториями", "траекториях", "трансгендера", "трансгендерам", "трансгендерами", "трансгендерах", "трансгендере", "трансгендерный", "трансгендеров", "трансгендером", "трансгендеру", "трансгендеры", "транссексуал", "транссексуала", "транссексуалам", "транссексуалами", "транссексуалах", "транссексуале", "транссексуалов", "транссексуалом", "транссексуалу", "транссексуалы", "транссексуальностей", "транссексуальности", "транссексуальность", "транссексуальностью", "транссексуальностям", "транссексуальностями", "транссексуальностях", "транссексуальный", "треда", "тредам", "тредами", "тредах", "треде", "тредов", "тредом", "треду", "треды", "трейдер", "трейдера", "трейдерам", "трейдерами", "трейдерах", "трейдере", "трейдеров", "трейдером", "трейдеру", "трейдеры", "трейлера", "трейлерам", "трейлерами", "трейлерах", "трейлере", "трейлеров", "трейлером", "трейлеру", "трейлеры", "трека", "трекам", "треками", "треках", "треке", "треки", "треклист", "треклиста", "треклистам", "треклистами", "треклистах", "треклисте", "треклистов", "треклистом", "треклисту", "треклисты", "треков", "треком", "треку", "тренда", "трендам", "трендами", "трендах", "тренде", "трендов", "трендом", "тренду", "тренды", "трептати", "трехкомнатный", "треша", "трешам", "трешами", "трешах", "треше", "трешей", "трешем", "треши", "трешу", "Тринидад и Тобаго", "трипс", "ТРКИ", "трэш", "тряпка", "Тувалу", "тулий", "Тунис", "туннеле", "туннелей", "туннелем", "туннели", "туннель", "туннелю", "туннеля", "туннелям", "туннелями", "туннелях", "Туркменистан", "турнепса", "турнепсам", "турнепсами", "турнепсах", "турнепсе", "турнепсов", "турнепсом", "турнепсу", "турнепсы", "Турция", "тэмпура", "тэрияки", "Уганда", "уголовник", "уезжать", "Узбекистан", "Украина", "уровень", "утомительный", "ученик", "фазенд", "фазендам", "фазендами", "фазендах", "фазенде", "фазендой", "фазендою", "фазенду", "фазенды", "фактор", "фандрайзинг", "фарватера", "фарватерам", "фарватерами", "фарватерах", "фарватере", "фарватеров", "фарватером", "фарватеру", "фарватеры", "Фарерские острова", "фарерский", "Фареры", "фейка", "фейкам", "фейками", "фейках", "фейке", "фейки", "фейков", "фейковый", "фейком", "фейку", "фейсконтроле", "фейсконтролей", "фейсконтролем", "фейсконтроли", "фейсконтролю", "фейсконтроля", "фейсконтролям", "фейсконтролями", "фейсконтролях", "фелляция", "феня", "фермий", "Фиджи", "филателией", "филателиею", "филателии", "филателию", "филателия", "Филиппины", "филогенез", "филогенеза", "филогенезам", "филогенезами", "филогенезах", "филогенезе", "филогенезов", "филогенезом", "филогенезу", "филогенезы", "филогенетик", "филогенетика", "филогенетикам", "филогенетиками", "филогенетиках", "филогенетике", "филогенетики", "филогенетикой", "филогенетикою", "филогенетику", "филогенетический", "Финляндия", "фита", "фланелей", "фланели", "фланель", "фланелью", "фланелям", "фланелями", "фланелях", "флеш", "флеша", "флешам", "флешами", "флешах", "флеше", "флешей", "флешек", "флешем", "флеши", "флешка", "флешкам", "флешками", "флешках", "флешке", "флешки", "флешкой", "флешкою", "флешку", "флешмоба", "флешмобам", "флешмобами", "флешмобах", "флешмобе", "флешмобов", "флешмобом", "флешмобу", "флешмобы", "флеш-рояле", "флеш-роялей", "флеш-роялем", "флеш-рояли", "флеш-рояль", "флеш-роялю", "флеш-рояля", "флеш-роялям", "флеш-роялями", "флеш-роялях", "флешу", "флэшмоб", "фокстерьера", "фокстерьерам", "фокстерьерами", "фокстерьерах", "фокстерьере", "фокстерьеров", "фокстерьером", "фокстерьеру", "фокстерьеры", "Фома", "фонем", "фонема", "фонемам", "фонемами", "фонемах", "фонеме", "фонемой", "фонемою", "фонему", "фонемы", "фонетике", "фонетики", "фонетикой", "фонетикою", "фонетику", "фонетический", "форелей", "форели", "форель", "форелью", "форелям", "форелями", "форелях", "фортепианный", "фортепиано", "фортепьяно", "форштевене", "форштевеней", "форштевенем", "форштевени", "форштевень", "форштевеню", "форштевеня", "форштевеням", "форштевенями", "форштевенях", "фотомоделей", "фотомодели", "фотомодель", "фотомоделью", "фотомоделям", "фотомоделями", "фотомоделях", "фотосинтеза", "фотосинтезам", "фотосинтезами", "фотосинтезах", "фотосинтезе", "фотосинтезов", "фотосинтезом", "фотосинтезу", "фотосинтезы", "Франция", "фрейдизма", "фрейдизме", "фрейдизмом", "фрейдизму", "фрекинга", "фрекингам", "фрекингами", "фрекингах", "фрекинге", "фрекинги", "фрекингов", "фрекингом", "фрекингу", "фрикаделек", "фрикаделькам", "фрикадельками", "фрикадельках", "фрикадельке", "фрикадельки", "фрикаделькой", "фрикаделькою", "фрикадельку", "Фритаун", "фрунзенский", "ФСБ", "фулл-хаус", "фул-хаус", "футболка", "фюрера", "фюрерам", "фюрерами", "фюрерах", "фюрере", "фюреров", "фюрером", "фюреру", "фюреры", "хаику", "Хараре", "хедхантера", "хедхантерам", "хедхантерами", "хедхантерах", "хедхантере", "хедхантеров", "хедхантером", "хедхантеру", "хедхантеры", "Хезбалла", "Хезбалле", "Хезбаллой", "Хезбаллою", "Хезбаллу", "Хезбаллы", "Хезболла", "Хезболлах", "Хезболле", "Хезболлой", "Хезболлою", "Хезболлу", "Хезболлы", "Хеллоуин", "хеллоуин", "Хеллоуина", "хеллоуина", "Хеллоуинам", "хеллоуинам", "Хеллоуинами", "хеллоуинами", "Хеллоуинах", "хеллоуинах", "Хеллоуине", "хеллоуине", "Хеллоуинов", "хеллоуинов", "Хеллоуином", "хеллоуином", "Хеллоуину", "хеллоуину", "Хеллоуины", "хеллоуины", "хентай", "хештега", "хештегам", "хештегами", "хештегах", "хештеге", "хештеги", "хештегов", "хештегом", "хештегу", "хипстера", "хипстерам", "хипстерами", "хипстерах", "хипстере", "хипстеров", "хипстером", "хипстеру", "хипстеры", "Хоккайдо", "холестерин", "холестерина", "холестеринам", "холестеринами", "холестеринах", "холестерине", "холестеринов", "холестерином", "холестерину", "холестерины", "Хорватия", "хорее", "хореев", "хореем", "хореи", "хорею", "хорея", "хореям", "хореями", "хореях", "хризантем", "хризантемам", "хризантемами", "хризантемах", "хризантеме", "хризантемой", "хризантемою", "хризантему", "хризантемы", "хунвейбина", "хунвейбинам", "хунвейбинами", "хунвейбинах", "хунвейбине", "хунвейбинов", "хунвейбином", "хунвейбину", "хунвейбины", "хунвэйбин", "Хэллоуин", "цедешка", "Центрально-Африканская Республика", "цистерн", "цистерна", "цистернам", "цистернами", "цистернах", "цистерне", "цистерной", "цистерною", "цистерну", "цистерны", "цитаделей", "цитадели", "цитаделью", "цитаделям", "цитаделями", "цитаделях", "Цой", "Чад", "человек разумный", "чепуха", "Черногория", "черносотенец", "Чехия", "чёрт его знает", "что", "чтокав", "чтокавши", "чтокавший", "чтокаем", "чтокает", "чтокаете", "чтокаешь", "чтокай", "чтокайте", "чтокал", "чтокала", "чтокали", "чтокало", "чтокаю", "чтокают", "чтокающий", "чтокая", "Шайтан", "шатена", "шатенам", "шатенами", "шатенах", "шатене", "шатенка", "шатенкам", "шатенками", "шатенках", "шатенке", "шатенки", "шатенкой", "шатенкою", "шатенку", "шатенов", "шатенок", "шатеном", "шатену", "шатены", "шатёр", "Швейцария", "Швеция", "шедевр", "шедевра", "шедеврам", "шедеврами", "шедеврах", "шедевре", "шедевров", "шедевром", "шедевру", "шедевры", "шифровать", "шнелек", "шнелка", "шнелкам", "шнелками", "шнелках", "шнелке", "шнелки", "шнелкой", "шнелкою", "шнелку", "шнелок", "шнелька", "шнелькам", "шнельками", "шнельках", "шнельке", "шнельки", "шнелькой", "шнелькою", "шнельку", "шоссе", "шоссейник", "шоссейника", "шоссейникам", "шоссейниками", "шоссейниках", "шоссейнике", "шоссейники", "шоссейников", "шоссейником", "шоссейнику", "шоссейный", "шоу-бизнеса", "шоу-бизнесам", "шоу-бизнесами", "шоу-бизнесах", "шоу-бизнесе", "шоу-бизнесов", "шоу-бизнесом", "шоу-бизнесу", "шоу-бизнесы", "шоувумен", "шоумена", "шоуменам", "шоуменами", "шоуменах", "шоумене", "шоуменов", "шоуменом", "шоумену", "шоумены", "шофёр", "шпателе", "шпателей", "шпателем", "шпатели", "шпателю", "шпателя", "шпателям", "шпателями", "шпателях", "шредера", "шредерам", "шредерами", "шредерах", "шредере", "шредеров", "шредером", "шредеру", "шредеры", "Шри-Ланка", "штекера", "штекерам", "штекерами", "штекерах", "штекере", "штекеров", "штекером", "штекеру", "штекеры", "штемпеле", "штемпелей", "штемпелем", "штемпели", "штемпелю", "штемпеля", "штемпелям", "штемпелями", "штемпелях", "штепселе", "штепселей", "штепселем", "штепселю", "штепселя", "штепселям", "штепселями", "штепселях", "штрейкбрехер", "штрейкбрехера", "штрейкбрехерам", "штрейкбрехерами", "штрейкбрехерах", "штрейкбрехере", "штрейкбрехеров", "штрейкбрехером", "штрейкбрехеру", "штрейкбрехеры", "штруделе", "штруделей", "штруделем", "штрудели", "штруделю", "штруделя", "штруделям", "штруделями", "штруделях", "ЭВМ", "эдельвейса", "эдельвейсам", "эдельвейсами", "эдельвейсах", "эдельвейсе", "эдельвейсов", "эдельвейсом", "эдельвейсу", "эдельвейсы", "эзотерический", "эйнштейниев", "эйнштейнием", "эйнштейнии", "эйнштейний", "эйнштейнию", "эйнштейния", "эйнштейниям", "эйнштейниями", "эйнштейниях", "Экваториальная Гвинея", "экзекуцией", "экзекуциею", "экзекуции", "экзекуций", "экзекуцию", "экзекуция", "экзекуциям", "экзекуциями", "экзекуциях", "экзем", "экзема", "экземам", "экземами", "экземах", "экземе", "экземой", "экземою", "экземпляра", "экземплярам", "экземплярами", "экземплярах", "экземпляре", "экземпляров", "экземпляром", "экземпляру", "экземпляры", "экзему", "экземы", "экзистенциальный", "экспресса", "экспрессам", "экспрессами", "экспрессах", "экспресс-диагностике", "экспресс-диагностики", "экспресс-диагностикой", "экспресс-диагностикою", "экспресс-диагностику", "экспрессе", "экспрессией", "экспрессиею", "экспрессии", "экспрессионизма", "экспрессионизме", "экспрессионизмом", "экспрессионизму", "экспрессию", "экспрессия", "экспрессов", "экспрессом", "экспрессу", "экспрессы", "экстрасенс", "экстрасенса", "экстрасенсам", "экстрасенсами", "экстрасенсах", "экстрасенсе", "экстрасенсов", "экстрасенсом", "экстрасенсу", "экстрасенсы", "электронная почта", "электрофореза", "электрофорезам", "электрофорезами", "электрофорезах", "электрофорезе", "электрофорезов", "электрофорезом", "электрофорезу", "электрофорезы", "электроэнергетика", "электроэнергетике", "электроэнергетики", "электроэнергетикой", "электроэнергетикою", "электроэнергетику", "электроэнергией", "электроэнергиею", "электроэнергии", "электроэнергий", "электроэнергию", "электроэнергия", "электроэнергиям", "электроэнергиями", "электроэнергиях", "Эльзас", "эндемик", "эндемика", "эндемикам", "эндемиками", "эндемиках", "эндемике", "эндемики", "эндемиков", "эндемиком", "эндемику", "эндемический", "энергетика", "энергетикам", "энергетиками", "энергетиках", "энергетике", "энергетики", "энергетиков", "энергетикой", "энергетиком", "энергетикою", "энергетику", "энергией", "энергиею", "энергии", "энергий", "энергичен", "энергична", "энергично", "энергичностей", "энергичности", "энергичность", "энергичностью", "энергичностям", "энергичностями", "энергичностях", "энергичны", "энергию", "энергия", "энергиям", "энергиями", "энергиях", "энергоемкость", "энергоёмкость", "энергоносителе", "энергоносителей", "энергоносителем", "энергоносители", "энергоносителю", "энергоносителя", "энергоносителям", "энергоносителями", "энергоносителях", "энергоресурса", "энергоресурсам", "энергоресурсами", "энергоресурсах", "энергоресурсе", "энергоресурсов", "энергоресурсом", "энергоресурсу", "энергоресурсы", "энергосбережение", "энергосбережением", "энергосбережении", "энергосбережений", "энергосбережению", "энергосбережения", "энергосбережениям", "энергосбережениями", "энергосбережениях", "энергосистем", "энергосистема", "энергосистемам", "энергосистемами", "энергосистемах", "энергосистеме", "энергосистемой", "энергосистемою", "энергосистему", "энергосистемы", "энергоснабжение", "энергоснабжением", "энергоснабжении", "энергоснабжений", "энергоснабжению", "энергоснабжения", "энергоснабжениям", "энергоснабжениями", "энергоснабжениях", "энкаведешника", "энкаведешникам", "энкаведешниками", "энкаведешниках", "энкаведешнике", "энкаведешники", "энкаведешников", "энкаведешником", "энкаведешнику", "эпидерм", "эпидерма", "эпидермам", "эпидермами", "эпидермах", "эпидерме", "эпидермис", "эпидермиса", "эпидермисам", "эпидермисами", "эпидермисах", "эпидермисе", "эпидермисов", "эпидермисом", "эпидермису", "эпидермисы", "эпидермой", "эпидермофитией стопы", "эпидермофитиею стопы", "эпидермофитии стопы", "эпидермофитию стопы", "эпидермою", "эпидерму", "эпидермы", "эрдельтерьера", "эрдельтерьерам", "эрдельтерьерами", "эрдельтерьерах", "эрдельтерьере", "эрдельтерьеров", "эрдельтерьером", "эрдельтерьеру", "эрдельтерьеры", "эрекцией", "эрекциею", "эрекции", "эрекций", "эрекцию", "эрекциям", "эрекциями", "эрекциях", "Эритрея", "эрстеда", "эрстедам", "эрстедами", "эрстедах", "эрстеде", "эрстедов", "эрстедом", "эрстеду", "эрстеды", "Эсватини", "эсера", "эсерам", "эсерами", "эсерах", "эсере", "эсеров", "эсером", "эсеру", "эсеры", "эстета", "эстетам", "эстетами", "эстетах", "эстете", "эстетик", "эстетика", "эстетикам", "эстетиками", "эстетиках", "эстетике", "эстетики", "эстетикой", "эстетикою", "эстетику", "эстетический", "эстетов", "эстетом", "эстетствовав", "эстетствовавши", "эстетствовавший", "эстетствовал", "эстетствовала", "эстетствовали", "эстетствовало", "эстетствуем", "эстетствует", "эстетствуете", "эстетствуешь", "эстетствуй", "эстетствуйте", "эстетствую", "эстетствуют", "эстетствующий", "эстетствуя", "эстету", "эстеты", "Эстония", "эфенди", "Эфиопия", "эффекта Стрейзанд", "эффектам Стрейзанд", "эффектами Стрейзанд", "эффектах Стрейзанд", "эффекте Стрейзанд", "эффектов Стрейзанд", "эффектом Стрейзанд", "эффекту Стрейзанд", "эффекты Стрейзанд", "эффенди", "эфэсбэшник", "Южная Африка", "Южная Корея", "Южный Судан", "юзверь", "юзера", "юзерам", "юзерами", "юзерах", "юзере", "юзеров", "юзером", "юзеру", "юзеры", "я атеист", "я атеистка", "я не религиозный человек", "языка ассемблера", "языкам ассемблера", "языками ассемблера", "языках ассемблера", "языке ассемблера", "языки ассемблера", "языков ассемблера", "языком ассемблера", "языку ассемблера", "язычник", "яйцо", "яичника", "яичникам", "яичниками", "яичниках", "яичнике", "яичники", "яичников", "яичником", "яичнику", "яичниц", "яичницам", "яичницами", "яичницах", "яичнице", "яичницей", "яичницею", "яичницу", "яичницы", "яичный", "Якутия", "Ямайка", "Япония", } swi30tcwji34vg4jywxvkxivcoof7s7 মডিউল:User:Victar:Phlv-translit 828 168706 510258 2026-06-07T12:46:21Z RedminBot 9553 [[en:Module:User:Victar:Phlv-translit]] থেকে আনা হলো 510258 Scribunto text/plain local export = {} local U = mw.ustring.char local gdy_pattern = "[" .. U(0x10BCB, 0x10BCD, 0x10BCC, 0x10BCE) .. "]" .. U(0x10BB2) local gdy_map = { ["𐯋𐮲"] = "g", -- gimel-daleth-yodh with two dots above ["𐯌𐮲"] = "d", -- gimel-daleth-yodh with hat above ["𐯍𐮲"] = "y", -- gimel-daleth-yodh with two dots below ["𐯎𐮲"] = "j", -- gimel-daleth-yodh with dot below } local tt = { ["𐮰"] = "ʾ", -- aleph-het ["𐮱"] = "b", -- beth ["𐮲"] = "?", -- gimel-daleth-yodh (Should have been transliterated) ["𐮳"] = "ḍ", -- old daleth ["𐮴"] = "h", -- he ["𐮵"] = "'", -- waw-nun-ayin-resh ["𐮶"] = "z", -- zayin ["𐮷"] = "k", -- kaph ["𐮸"] = "k", -- old kaph ["𐮹"] = "l", -- lamedh ["𐮺"] = "ƚ", -- old lamedh ["𐮻"] = "ḷ", -- l-lamedh ["𐮼"] = "m", -- mem-qoph ["𐮽"] = "s", -- samekh ["𐮾"] = "p", -- pe ["𐮿"] = "c", -- sadhe ["𐯀"] = "š", -- shin ["𐯁"] = "t", -- taw ["𐯂"] = "yt", -- x1 ["𐯃"] = "ty", -- x2 ["𐯐"] = "", -- I ["𐯑"] = "", -- ahriman } function export.tr(text, lang, sc) -- If the script is not Phlv, do not transliterate if sc ~= "Phlv" then return end text = mw.ustring.gsub(text, gdy_pattern, gdy_map) -- Category to catch automatic transcriptions of waw-ayin-resh and mem-qoph -- [[Category:Automatic Book Pahlavi transliterations containing ambiguous characters]] local ambig_note = "" if mw.ustring.match(text, "[𐮲𐮵𐮼]") then ambig_note = "[[Category:Automatic Book Pahlavi transliterations containing ambiguous characters]]" end -- Transliterate characters text = mw.ustring.gsub(text, '.', tt) return text end return export t8czfkvfv4bygkdbxrpcdctgvt35rzd মডিউল:User:Victar:Phlv-translit/testcases 828 168707 510259 2026-06-07T12:46:22Z RedminBot 9553 [[en:Module:User:Victar:Phlv-translit/testcases]] থেকে আনা হলো 510259 Scribunto text/plain return require "Module:transliteration module testcases"( require "Module:Phlv-translit".tr, { { "𐮷𐮰𐯁𐮷𐮵", "kʾtk'" }, { "𐮽𐮾𐯍𐮲𐯁𐮵", "spyt'" }, { "𐮰𐯀𐯁𐮷𐮵", "ʾštk'" }, { "𐮹𐮰𐯌𐮲𐯍𐮲𐮵𐯍𐮲𐯁𐮰𐮹𐯍𐮲𐮴", "lʾdynytʾlyh" }, { "𐯁𐮾𐮹𐮶𐯁𐮵", "tplzt'" }, { "𐯀𐮴𐮽𐮾𐮹𐮴𐮼", "šhsplhm" }, { "𐮷𐮰𐮹𐯁𐮵", "kʾlt'" }, { "𐮰𐮰𐮹", "hʾl" }, { "𐮰𐮰𐮹", "ʾhl" }, --[[ Copy this to add more examples: { "", "" }, --]] }, "Phlv", "pal") oegvwhos6so1e6t2mhjocdju4nd36bc মডিউল:User:ZxxZxxZ/Cyrl-translit 828 168708 510260 2026-06-07T12:46:22Z RedminBot 9553 [[en:Module:User:ZxxZxxZ/Cyrl-translit]] থেকে আনা হলো 510260 Scribunto text/plain --[[ Transliteration for the Cyrillic. ]] local export = {} local tr_table_default = { ["а"]="a", ["б"]="b", ["в"]="v", ["г"]="g", ["ғ"]="ğ", ["д"]="d", ["ж"]="ž", ["ѕ"]="ẑ", ["и"]="i", ["і"]="i", ["ї"]="ji", ["й"]="j", ["ј"]="j", ["к"]="k", ["ќ"]="kj", ["қ"]="q", ["л"]="l", ["љ"]="lj", ["н"]="n", ["њ"]="nj", ["о"]="o", ["п"]="p", ["р"]="r", ["с"]="s", ["т"]="t", ["ћ"]="ć", ["у"]="u", ["ў"]="w", ["ц"]="c", ["ч"]="č", ["џ"]="dž", ["ҷ"]="ç", ["ш"]="š", ["щ"]="šč", ["ф"]="f", ["х"]="x", ["џ"]="dž", ["ш"]="š", ["щ"]="šč", ["ф"]="f", ["м"]="m", ["Ђ"]="đ", ["э"]="e", ["ё"]="jo", ["ю"]="ju", ["я"]="ja", ["э"]="e", ["є"]="je", -- ... this table should contain all Cyrillic characters } -- this table overrides the previous one local tr_table = { ["ady"] = { ["а"]="ā", ["г"]="γ", ["е"]="e", ["ё"]="ë", ["й"]="j", ["у"]="w", ["щ"]="š̍", ["ъ"]="”", ["ы"]="ə", ["ь"]="’", ["э"]="ă", ["я"]="jā" }, ["uk"] = { ["г"]='h', ["ґ"]='g', ["Е"]='E', ["е"]='e', ["Є"]='Je', ["є"]='je', ["и"]='y', ["'"]='ʺ', ["’"]='ʺ', ["ʼ"]= 'ʺ', }, -- ... } function export.tr(text, lang) if type(text) == 'table' then text = text.args[1] end if lang ~= "ady" and lang ~= "uk" then -- not supported return false end -- language-specific transliteration -- if lang == "ady" then text = mw.ustring.gsub(text, 'гъу', 'ġ°') text = mw.ustring.gsub(text, 'дзу', 'ʒ°') text = mw.ustring.gsub(text, 'жъу', 'ẑ°') -- and so forth end text = mw.ustring.gsub(text, ".", tr_table[lang]) -- default Cyrillic transliteration -- text = mw.ustring.gsub(text, ".", tr_table_default) text = mw.ustring.toNFD(text) text = mw.ustring.gsub(text, ".", tr_table_default) text = mw.ustring.toNFC(text) text = mw.ustring.gsub(text, "([АОУЕЯЁЮИӢЕЪЬаоуэяёюиӣеъь][́̀]?)е", "%1je") text = mw.ustring.gsub(text, "^Е", "Je") text = mw.ustring.gsub(text, "^е", "je") return text end return export ixh3n0d232m7tsqgsva63ctmqxvjm8n মডিউল:Vaii-translit/testcases 828 168709 510261 2026-06-07T12:46:23Z RedminBot 9553 [[en:Module:Vaii-translit/testcases]] থেকে আনা হলো 510261 Scribunto text/plain -- Unit tests for [[Module:Vaii-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local vai_translit = require('Module:Vaii-translit') local function link(word) return '<span class="Vaii" lang="vai">[[' .. word .. '#Vai|' .. word .. ']]</span>' end function tests:do_test_translit(vaii, roman, xlit) return self:equals(link(vaii), vai_translit.tr(vaii), roman) end function tests:test_translit_vaii() local examples = { { 'ꕚꕌ', 'taha' }, { '꘎꘎', '!' }, { 'ꕘꘌ', 'faa' }, { 'ꘖꘌ', 'nii' }, {'ꘓꘌ', 'feeŋ'}, {'ꔥꘌ', 'ĩĩ'}, {'꘎', '.'}, {'ꔮꘌꕷ', 'kpiibo'}, {'ꖷꖬ ꕿ', 'musu to'}, {'ꖷꖬ ꔬ', 'musu ɓi'}, {'ꔤꕷꕞ', 'ibola'} } return self:iterate(examples, "do_test_translit") end return tests afvgphgs8698nx3yvsdfxvcd2d2uodc মডিউল:Vith-translit 828 168710 510262 2026-06-07T12:46:23Z RedminBot 9553 [[en:Module:Vith-translit]] থেকে আনা হলো 510262 Scribunto text/plain local export = {} local ugsub = mw.ustring.gsub local tt = { ["𐕰"] = "A", ["𐖗"] = "a", ["𐕱"] = "B", ["𐖘"] = "b", ["𐕲"] = "B", ["𐖙"] = "b", ["𐕳"] = "C", ["𐖚"] = "c", ["𐕴"] = "Ç", ["𐖛"] = "ç", ["𐕵"] = "D", ["𐖜"] = "d", ["𐕶"] = "Dh", ["𐖝"] = "dh", ["𐕷"] = "E", ["𐖞"] = "e", ["𐕸"] = "Ë", ["𐖟"] = "ë", ["𐕹"] = "F", ["𐖠"] = "f", ["𐕺"] = "G", ["𐖡"] = "g", ["𐕼"] = "H", ["𐖣"] = "h", ["𐕽"] = "Ḫ", ["𐖤"] = "ḫ", ["𐕾"] = "I", ["𐖥"] = "i", ["𐕿"] = "I̯", ["𐖦"] = "i̯", ["𐖀"] = "J", ["𐖧"] = "j", ["𐖁"] = "K", ["𐖨"] = "k", ["𐖂"] = "L", ["𐖩"] = "l", ["𐖃"] = "Ll", ["𐖪"] = "ll", ["𐖄"] = "M", ["𐖫"] = "m", ["𐖅"] = "N", ["𐖬"] = "n", ["𐖆"] = "Nj", ["𐖭"] = "nj", ["𐖇"] = "O", ["𐖮"] = "o", ["𐖈"] = "P", ["𐖯"] = "p", ["𐖉"] = "Q", ["𐖰"] = "q", ["𐖊"] = "R", ["𐖱"] = "r", ["𐖌"] = "S", ["𐖳"] = "s", ["𐖍"] = "Sh", ["𐖴"] = "sh", ["𐖎"] = "T", ["𐖵"] = "t", ["𐖏"] = "Th", ["𐖶"] = "th", ["𐖐"] = "U", ["𐖷"] = "u", ["𐖑"] = "V", ["𐖸"] = "v", ["𐖒"] = "X", ["𐖹"] = "x", ["𐖔"] = "Y", ["𐖻"] = "y", ["𐖕"] = "Z", ["𐖼"] = "z", } function export.tr(text, _lang, _sc) text = ugsub(text, '𐖍𐖼', 'Zh') text = ugsub(text, '𐖴𐖼', 'zh') text = ugsub(text, '𐕺𐖦', 'Gj') text = ugsub(text, '𐖡𐖦', 'gj') text = ugsub(text, '𐖧𐖦', 'j') text = ugsub(text, '[𐕰-𐖼]', tt) return text end return export 0h3a3itjgcx2vgpw73dys05dx2goq0f মডিউল:ab-translit/testcases 828 168711 510263 2026-06-07T12:46:24Z RedminBot 9553 [[en:Module:ab-translit/testcases]] থেকে আনা হলো 510263 Scribunto text/plain return require("Module:transliteration module testcases") { module = 'ab-translit', examples = { { "ах'әламҵ'ыҫ", 'ax̣ʷlamćʼəś' }, }, sc = 'Cyrl', lang = 'ab', nolink = true, } kwz82keu8cl6gua0hzbe04pnlwlnnho মডিউল:aii-translit/testcases 828 168712 510264 2026-06-07T12:46:24Z RedminBot 9553 [[en:Module:aii-translit/testcases]] থেকে আনা হলো 510264 Scribunto text/plain local lang = require("Module:languages").getByCode("aii") local function link(word) return require("Module:links").full_link {term = word, lang = lang, tr = "-"} end return require("Module:transliteration module testcases") { module = "aii-translit", examples = { {"ܒܵܬܹ̈ܐ", "bāttē"}, {"ܒܵܬܲܝ̈", "bāttay"}, {"ܒܵܬܝܼ̈", "bāttī"}, {"ܒܵܬܲܢ̈", "bāttan"}, {"ܒܵܬܘܼ̈ܟ݂", "bāttōḵ"}, {"ܒܵܬܵܟ݂ܝ̈", "bāttāḵ"}, {"ܒܵܬܘܼ̈ܗܝ", "bāttūh"}, {"ܒܵܬܘܼ̈ܗ̇", "bāttōh"}, {"ܒܵܬܲܘ̈ܟ݂ܘܿܢ", "bāttawḵōn"}, {"ܒܵܬܲܝ̈ܗܘܿܢ", "bāttayhōn"}, {'ܒܗ̇ܝ', 'b-ay'}, {'ܒܲܝܬܵܐ', 'baytā'}, {'ܒܲܝܬܝܼ', 'baytī'}, {'ܒܲܝܬܵܟ݂ܝ', 'baytāḵ'}, {'ܒܵܬܹ̈ܐ', 'bāttē'}, {'ܒܲܝܬܘܵܬܹ̈ܐ', 'baytwātē'}, {'ܒܲܝܬ̈ܘܵܬܗܘܿܢ', 'baytwāthōn'}, {'ܒܲܝܬܘܼܬܵܐ', 'baytūtā'}, {'ܝܵܠܘܿܦܵܐ', 'yālōpā'}, {'ܝܵܠܘܿܦܲܢ', 'yālōpan'}, {'ܝܵܠܘܿܦܬܵܐ', 'yālōptā'}, {'ܩܲܕ݇ܡܵܝܵܐ', 'qammāyā'}, {'ܚܲܡܫܲܥܣܲܪ', 'ḥamšaˁsar'}, {'ܒܲܝܬ̈ܘܵܬܹܐ', 'baytwātē'}, {'ܩܲܕ݇ܡܵܝܹ̈ܐ', 'qammāyē'}, {'ܚܲܕ݇', 'ḥa'}, {'ܚܵܕܹܐ', 'ḥādē'}, {'ܚܕܵܐ', 'ḥdā'}, {'ܚܕܵܝܵܐ', 'ḥdāyā'}, {'ܚܸܕܝܵܐ', 'ḥidyā'}, {'ܚܵܕܹܝܬܘܿܢ', 'ḥādētōn'}, {'ܚܕܹܐ ܠܗܘܿܢ', 'ḥdē lhōn'}, {'ܝܵܠܦܹܢ', 'yālpēn'}, {'ܝܠܝܼܦ ܠܝܼ', 'līp lī'}, {'ܒܪܘܿܢܵܐ', 'brōnā'}, {'ܒܢܘܿܢܹ̈ܐ', 'bnōnē'}, {'ܒܪܵܬܵܐ', 'brātā'}, {'ܒܢܵܬܹ̈ܐ', 'bnātē'}, {'ܐ݇ܟ݂ܵܠ݇ܪܲܡܫܵܐ', 'ḵāramšā'}, {'ܒܵܬܲܝ̈ ܡܣܵܝܵܐ', 'bāttay msāyā'}, {'ܦܲܪܨܘܿܦܵܐܝܼܬ', 'parṣōpāˀīt'}, {'ܕܲܪܵܓ݂ܬܵܐ ܗܵܘܵܝܬܵܐ', 'darrāḡtā hāwāytā'}, {'ܐܝܼܪܝܼܚܘܿ', 'īrīḥō'}, {'ܒܹܝܬܠܚܸܡ', 'bētlḥim'}, {'ܡܲܥܪܒ݂ܵܐ', 'maˁrḇā'}, {'ܒܹܝܬ ܡܲܟ̰ܡܲܥܬܵܐ', 'bēt mačmaˁtā'}, {'ܐܝܼܵܪ', 'īyār'}, {'ܡܝܼܟ݂ܵܐܹܝܠ', 'mīḵāˀēl'}, {'ܗܸܟ̃', 'hič'}, {'ܕܸܫ̃ܡܸܢ', 'dižmin'}, {'ܕܸܙ̃ܡܸܢ', 'dižmin'}, {'ܐܵܢܵܐ', 'ānā'}, {'ܐܲܢ݇ܬ', 'at'}, {'ܐܲܢ݇ܬܝ', 'at'}, {'ܗ̇ܝ', 'aya'}, {'ܗ̇ܘ', 'awa'}, {'ܡ̣ܢ', 'min'}, {'ܡ̇ܢ', 'man'}, {'ܚܲܕ݇، ܬܪܹܝܢ، ܬܠܵܬ݂ܵܐ', 'ḥa, trēn, tlāṯā'}, {'ܚܲܕ݇ ܘܬܪܹܝܢ ܘܬܠܵܬ݂ܵܐ', 'ḥa w-trēn w-tlāṯā'}, {'ܗܵܐ؟', 'hā?'}, {'ܡܹܐܟ݂ܠܵܬܹ̈ܐ', 'mēḵlātē'}, {'ܬܹܐܢܵܐ', 'tēnā'}, {'ܦܐܬܠܓܢ', 'NIL'}, {'ܟܠܘܼܗܝ', 'kullūh'}, {'ܡܘܿܕܵܐ', 'mōdā'}, {'ܒܹܬ݂ ـ ܟܪ̈ܝܼܗܹܐ', 'bēṯ krīhē'}, {'ܓ̰ܵܘܹܓ̰', 'jāwēj'}, {'ܡܝܼܫ̰', 'mīž'}, {'ܬܸܦ̮ܠܵܐ', 'tiflā'}, -- qushshaya cases {'ܒ݁ܪܵܬܵ݁ܐ', 'brātā'}, -- zqapha then qushshaya {'ܒ݁ܪܵܬ݁ܵܐ', 'brātā'}, -- qushshaya then zqapha {'ܫܸܬ݁ܠܵܐ', 'šitlā'}, {'ܐܸܕ݁ܠܲܝܠܹܐ', 'idlaylē'}, {'ܟ݁ܘܵܝܬ݁', 'kwāyt'}, {'ܕ݁ܘܼܓ݁ܠܵܐ', 'duglā'}, -- "to be" cases {'ܐܵܢܵܐ ܐܵܬܘܿܪܵܝܵܐ ܝܘܸܢ', 'ānā ātōrāyā ìwen'}, {'«ܐܲܚܬܘܿܢ ܐܵܬܘܿܪ̈ܵܝܹܐ ܝܬܘܿܢ؟»', '“aḥtōn ātōrāyē ìtōn?”'}, {'ܕܝܼܘܸܢ', 'd-īwen'}, {'ܠܕܝܼܘܵܢܘܼ̈ܟ݂', 'l-d-īwānōḵ'}, {'ܕܝܼܘܸܬ', 'd-īwet'}, {'ܝܼܘܵܬܝ', 'īwāt'}, {'ܕܝܼܠܹܗ', 'd-īlēh'}, {'ܕܝܼܠܵܗ̇', 'd-īlāh'}, {'ܕܝܼܘܲܚ', 'd-īwaḥ'}, {'ܘܝܼܘܲܚ', 'w-īwaḥ'}, {'ܗܲܡܸܢܝܼܬܘܿܢ', 'hamminītōn'}, {'ܕܝܼܬܘܿܢ', 'd-ītōn'}, {'ܕܦܵܠܛܝܼܬܘܿܢ', 'dpālṭītōn'}, {'ܕܝܼܢܵܐ', 'd-īnā'}, -- "to be" blends {'ܘܕܝܼܗ݇ܘܵܐ', 'w-d-īwā'}, {'ܕܝܼܗ݇ܘܵܘ', 'd-īwā'}, -- "to be" imperative forms {'ܗ݇ܘܝܼܵܬܹ̈ܐ', 'wīyātē'}, {'ܘܗ݇ܘܹܝܡܘܼܢ', 'w-wēmūn'}, -- "to be" past particles {'ܟܬܝܼܒ݂ܗ݇ܘܵܐ', 'ktīḇwā'}, {'ܐܝܼܬ ܗ݇ܘܵܐ', 'īt wā'}, {'ܟܬܝܼܒ݂ ܗ݇ܘܵܘ', 'ktīḇ wā'}, {'ܕܗ݇ܘܹܐ', 'dwē'}, -- {'ܐܵܕ݂ܵܪ', 'āḏār'}, {'ܐܝܼܕ݂ܵܗ̇', 'īḏāh'}, {'ܘܟܠܵܘܟ݂ܘܿܢ', 'w-kullāwḵōn'}, {'ܣܘܼܪܝܼܬ݂', 'sūrīṯ'}, -- alt spelling {'”ܘܦܠܝܼܛ ܠܹܗ“', '“w-plīṭ lēh”'}, {'’ܘܨܠܹܐ‘', '‘w-ṣlē’'}, {'ܘܐܡܝܼܪܹܗ ܐܸܠܵܝܗܝ:', 'w-mīrēh illāyh:'}, {'ܒܹܐܡܵܪܵܐ:', 'bēmārā:'}, {'ܡܲܕܢ̱ܚܵܐ', 'madenḥā'}, {'ܚܲܪܕ̄ܠܵܐ', 'ḥardelā'}, {'ܐܣܝܼܩ ܠܝܼ', 'sīq lī'}, {'ܕܝܼܫܘܿܥ', 'd-īšōˁ'}, {'ܠܗ̇ܘ', 'l-awa'}, {'ܠܐܝܼܣܚܵܩ', 'l-īsḥāq'}, {'ܠܐܲܠܩܘܿܫ', 'l-alqōš'}, {'ܒܐܵܗܵܐ', 'b-āhā'}, {'ܕܘܼܟܹܐ', 'dūkē'}, {'ܟܠܵܐ', 'klā'}, {'ܘܒܗ̇ܘ', 'w-b-awa'}, {'ܘܠܐܵܒ݂ܝܼܗܘܼ،', 'w-l-āḇīhū,'}, {'ܘܠܐܲܪܥܵܐ', 'w-l-arˁā'}, {'ܚܲܫܵܢܬܵܐ', 'ḥaššāntā'}, {'ܫܡܲܝܵܐ', 'šmayyā'}, {'ܗܲܝܲܪܬܵܐ', 'hayyartā'}, {'ܡܲܚܸܒ', 'maḥḥib'}, {'ܕܵܐܟ݂ܝܼܘܵܬܝܼ̈', 'dāḵīwātī'}, {'ܡܸܢܘܼܗ̇', 'minnōh'}, {'ܟܠܚܲܕ݇', 'kulḥa'}, {'ܟܠܚܕ݂ܵܐ', 'kulḥḏā'}, {'ܟܠܫܲܢ݇ܬ', 'kulšat'}, {'ܒܢܲܦ̮ܫܹܗ', 'bnafšēh'}, {'ܛܘܼܦ̮ܣܵܐ', 'ṭufsā'}, {'ܙܲܒ݂ܢܵܐ', 'zaḇnā'}, {'ܐܲܒ݂ܪܵܡ', 'aḇrām'}, {'ܐܲܒ݂ܵܗܵܝ̈ܗܝ', 'aḇāhāyh'}, {'ܕܲܠܩܘܼܒ݂ܠ', 'dalquḇl'}, {'ܫܘܼܒ݂ܗܵܪܵܐ', 'šuḇhārā'}, {'ܩܘܼܪܒܵܐ', 'qurbā'}, {'ܩܘܼܪܲܒ݂', 'quraḇ'}, {'ܒܘܼܪܟܬ݂ܵܐ', 'burkṯā'}, {'ܒܘܼܪܟܲܬ݂', 'burkaṯ'}, {'ܣܘܼܥܪܵܢܵܐ', 'suˁrānā'}, {'ܝܘܼܠܦܵܢܵܐ', 'yulpānā'}, {'ܟܒ݂ܘܼܫܝܵܐ', 'kḇušyā'}, {'ܡܫܘܼܠܚܵܐ', 'mšulḥā'}, {'ܼܡܫܘܼܠܲܚܬܵܐ', 'mšullaḥtā'}, {'ܡܫܘܼܠܸܚ ܠܹܗ', 'mšulliḥ lēh'}, {'ܡܫܘܼܪܝܵܐ', 'mšuryā'}, {'ܡܫܘܼܪܝܼܬ݂ܵܐ', 'mšurrīṯā'}, {'ܡܫܘܼܪܹܐ ܠܹܗ', 'mšurrē lēh'}, {'ܡܬܘܼܪܓܡܵܐ', 'mturgmā'}, {'ܡܬܘܼܪܓܲܡܬܵܐ', 'mturgamtā'}, {'ܡܬܘܼܪܓܸܡ ܠܹܗ', 'mturgim lēh'}, {'ܡܛܘܼܘܠܵܐ', 'mṭuwlā'}, {'ܡܛܘܼܘܲܠܬܵܐ', 'mṭuwwaltā'}, {'ܡܛܘܼܘܸܠ ܠܹܗ', 'mṭuwwil lēh'}, {'ܬܘܼܪܓܵܡܵܐ', 'turgāmā'}, {'ܦܘܼܢܵܝܵܐ', 'punnāyā'}, {'ܒܘܼܫܵܠܵܐ', 'buššālā'}, {'ܚܘܼܡܵܠܵܐ', 'ḥummālā'}, {'ܚܘܼܡܵܠܹ̈ܐ', 'ḥummālē'}, {'ܚܘܼܡܵܠܝܼ', 'ḥummālī'}, {'ܠܩܘܼܪܒܵܐ ܕܬܠܵܬ݂ܝܼܢ ܘܚܲܡܫܵܐ', 'l-qurbā d-tlāṯīn w-ḥamšā'}, {'ܒܡܸܬ݂ܚܵܐ ܕܚܲܡܫܵܐ ܕܲܩܝܼܩܹ̈ܐ', 'b-miṯḥā d-ḥamšā daqqīqē'}, {'ܓܵܵܪܸܹܣ', 'gāriyēs'}, {'ܐ ', 'ˀ '}, {'ܡܒܲܝܸܐ', 'mbayyiˀ'}, {'ܒܲܝܸܐܝ', 'bayyiˀ'}, {'ܡܒܘܼܝܸܐ ܠܵܘܟ݂ܘܿܢ', 'mbūyiˀ lāwḵōn'}, {'ܣܵܗܕ݂ܘܼܟ݂', 'sāhḏōḵ'}, {'ܣܵܗܕ݂ܘܼ̈ܟ݂', 'sāhḏōḵ'}, {'ܣܘܼܪܵܝܵܐ', 'sūrāyā'}, {'ܣܘܼܪ̈ܵܝܹܐ', 'sūrāyē'}, {'ܨܘܼܪܬܵܐ', 'ṣūrtā'}, {'ܨܘܼܪ̈ܵܬ݂ܵܐ', 'ṣūrāṯā'}, {'ܨܘܼܪ̈ܝܵܬ݂ܵܐ', 'ṣūryāṯā'}, {'ܡܘܼܪܝܡܵܐ', 'murymā'}, {'ܡܲܪܝܡܸܢ', 'marymin'}, {'ܡܲܪܝܡܵܢܵܐ', 'marymānā'}, }, sc = "Syrc", lang = "aii", func_with_link = link } 2t1mhcwxg9mt0y436u0k7f2j9yc4jm7 মডিউল:ain-translit/testcases 828 168713 510265 2026-06-07T12:46:25Z RedminBot 9553 [[en:Module:ain-translit/testcases]] থেকে আনা হলো 510265 Scribunto text/plain local p = require('Module:UnitTests') local m = require('Module:ain-translit') function p:tr(kana, roman) self:equals('[[' .. kana .. ']]', m.tr(kana), roman) end function p:test_all() local examples = { { "アイヌ・イタㇰ", "ainu=itak" }, { "カィ ; クィ ; コィ ; カゥ ; キゥ ; ケゥ ; コゥ ; ケィ", "kay ; kuy ; koy ; kaw ; kiw ; kew ; kow ; key" }, { "カイ ; クイ ; コイ ; カウ ; キウ ; ケウ ; コウ ; ケイ", "kai ; kui ; koi ; kau ; kiu ; keu ; kou ; kei" }, { "カー ; キー ; クー ; ケー ; コー", "kā ; kī ; kū ; kē ; kō" }, { "アィヌ モシㇼ", "aynu mosir" }, -- [[incubator:Wp/ain/Main Page]] { "チ・カㇻ アィヌ イタㇰ ウィキペンチア カンピソ アナㇰネ", "ci=kar aynu itak wikipencia kanpiso anakne" }, { "ペッ ; ペㇳ", "pet ; pet" }, { "オッタ", "otta" }, { "カラㇷ゚ト", "karapto" }, { "サッポロ", "sapporo" }, { "モンペッ", "monpet" }, { "イワン ; イワㇴ", "iwan ; iwan" }, { "ケㇺ", "kem" }, { "ケゥ", "kew" }, { "チュㇷ゚ケㇱ", "cupkes" }, { "ポンペ", "ponpe" }, { "タンモシㇼ", "tanmosir" }, { "レプンクㇽ ; レプㇴクㇽ", "repunkur ; repunkur" }, -- [[w:ja:アイヌ語#日本語に溶け込んだアイヌ語]] { "エトゥ ピㇼカ", "etu pirka" }, { "オンネㇷ゚", "onnep" }, { "ケマ フレ", "kema hure" }, { "コマイ", "komai" }, { "カンカイ", "kankai" }, { "スサㇺ", "susam" }, { "トゥナカイ", "tunakai" }, { "ノンノ", "nonno" }, { "ハㇱカㇷ゚", "haskap" }, { "ポㇰ", "pok" }, { "セイ", "sei" }, { "ラッコ", "rakko" }, { "ルイペ", "ruipe" }, { "チャペ", "cape" }, { "アペ", "ape" }, { "カㇻ", "kar" }, { "キナ", "kina" }, { "ラㇻ", "rar" }, { "トゥスㇱケ", "tususke" }, { "ア-", "a-" }, { "アィアィ", "ayay" }, { "アィヌ", "aynu" }, { "アィヌモシㇼ", "aynumosir" }, { "アイ", "ai" }, { "アイヌ", "ainu" }, { "アイヌイタㇰ", "ainuitak" }, { "アイル", "airu" }, { "アエㇷ゚", "aep" }, { "アカㇺ", "akam" }, { "アキ", "aki" }, { "アシペケッ", "asipeket" }, { "アシㇰネ", "asikne" }, { "アチポ", "acipo" }, { "アチャ", "aca" }, { "アチャポ", "acapo" }, { "アットゥㇱ", "attus" }, { "アトゥ", "atu" }, { "アパ", "apa" }, { "アフン", "ahun" }, { "アフㇷ゚", "ahup" }, { "アㇷ゚トアㇱ", "aptoas" }, { "アㇷ゚トアㇱパ", "aptoaspa" }, { "アベ", "abe" }, { "アベチクニ", "abecikuni" }, { "アベバシュイ", "abebasui" }, { "アペ", "ape" }, { "アママ", "amama" }, { "アマㇺ", "amam" }, { "アミ", "ami" }, { "アミヒ", "amihi" }, { "アムシペ", "amusipe" }, { "アムㇱペ", "amuspe" }, { "アリㇷ゚", "arip" }, { "アン", "an" }, { "アンケㇱ", "ankes" }, { "アンチカㇻ", "ancikar" }, { "アントゥキ", "antuki" }, { "アㇰ", "ak" }, { "アㇷ゚カシ", "apkasi" }, { "アㇷ゚カㇱ", "apkas" }, { "アㇷ゚ト", "apto" }, { "アㇺ", "am" }, { "アㇺアㇺ", "amam" }, { "アㇻワン", "arwan" }, { "イサ チセ", "isa cise" }, { "イサㇺ", "isam" }, { "イソ", "iso" }, { "イタコ", "itako" }, { "イタㇰ", "itak" }, { "イタㇵ", "itah" }, { "イナゥ", "inaw" }, { "イナオ", "inao" }, { "イネ", "ine" }, { "イワ", "iwa" }, { "イワン", "iwan" }, { "ウォセカムイ", "wosekamuy" }, { "ウタラ", "utara" }, { "ウタリ", "utari" }, { "ウタレ", "utare" }, { "ウナㇻペ", "unarpe" }, { "ウパㇱ", "upas" }, { "ウンマ", "unma" }, { "エアニ", "eani" }, { "エカㇱ", "ekas" }, { "エサマン", "esaman" }, { "エツ゚", "etu" }, { "エトゥ", "etu" }, { "エトㇽ", "etor" }, { "エムシ", "emusi" }, { "オウペカ", "oupeka" }, { "オッカヨ", "okkayo" }, { "オナ", "ona" }, { "カパㇷ゚", "kapap" }, { "カムイ", "kamuy" }, { "カムイチェㇷ゚", "kamuycep" }, { "カムイフㇺベ", "kamuyhumbe" }, { "カムイモシㇼ", "kamuymosir" }, { "カムイモシリ", "kamuimosiri" }, { "カㇺビ", "kambi" }, { "カㇺビソㇱ", "kambisos" }, { "キキㇼ", "kikir" }, { "キサㇻ", "kisar" }, { "キㇺ", "kim" }, { "クアニ", "kuani" }, { "クㇷ゚", "kup" }, { "ケス", "kesu" }, { "ケム", "kemu" }, { "ケモリッ", "kemorit" }, { "ケラ", "kera" }, { "コタン", "kotan" }, { "コッ", "kot" }, { "コンボ", "konbo" }, { "コㇿ", "kor" }, { "サパ", "sapa" }, { "サポ", "sapo" }, { "シサㇺ", "sisam" }, { "シネ", "sine" }, { "シネペサン", "sinepesan" }, { "シュマリ", "sumari" }, { "シㇰ", "sik" }, { "シㇼ", "sir" }, { "スス", "susu" }, { "セ゚", "ce" }, { "セタ", "seta" }, { "ソ", "so" }, { "チイェネ", "ciyene" }, { "チイェヘ", "ciyehe" }, { "チェㇷ゚", "cep" }, { "チセ", "cise" }, { "チャシ", "casi" }, { "チャペ", "cape" }, { "チュㇷ゚", "cup" }, { "チㇱ", "cis" }, { "ツ゚", "tu" }, { "ツ゚ペサン", "tupesan" }, { "ツ゚ンプ", "tunpu" }, { "テㇰ", "tek" }, { "ト", "to" }, { "ト゚", "tu" }, { "トゥキ", "tuki" }, { "トゥナカィ", "tunakay" }, { "トゥレㇱ", "tures" }, { "トペ", "tope" }, { "トンコリ", "tonkori" }, { "ナイ", "nai" }, { "ナン", "nan" }, { "ニ", "ni" }, { "ニㇱ", "nis" }, { "ヌカㇽ", "nukar" }, { "ヌチャ", "nuca" }, { "ヌプリ", "nupuri" }, { "ヌマリ", "numari" }, { "ヌマン", "numan" }, { "ネトパケ", "netopake" }, { "ハポ", "hapo" }, { "ハンペ", "hanpe" }, { "ハㇱカプ", "haskapu" }, { "ハㇺ", "ham" }, { "パケ", "pake" }, { "パシユイ", "pasiyui" }, { "パスイ", "pasui" }, { "ピリカ", "pirika" }, { "フ", "hu" }, { "フチ", "huci" }, { "フッチ", "hutci" }, { "フンチ・ヌプリ", "hunci=nupuri" }, { "フンペ", "hunpe" }, { "フㇺベ", "humbe" }, { "プクサ", "pukusa" }, { "ペツ", "pecu" }, { "ホシピ", "hosipi" }, { "ホシピレ", "hosipire" }, { "ホㇰ", "hok" }, { "ホㇿケゥ", "horkew" }, { "ポル", "poru" }, { "マウ", "mau" }, { "マタキ", "mataki" }, { "ミチ", "mici" }, { "ムックリ", "mukkuri" }, { "メノコ", "menoko" }, { "モシリ", "mosiri" }, { "モシㇼ", "mosir" }, { "モユㇰ", "moyuk" }, { "ユポ", "yupo" }, { "ユㇰ", "yuk" }, { "ライ", "rai" }, { "ラッコ", "rakko" }, { "レ", "re" }, { "レエㇷ゚", "reep" }, { "レハムㇱ", "rehamus" }, { "レプンカムイ", "repunkamuy" }, { "レラ", "rera" }, { "ワッカ", "wakka" }, { "ワン", "wan" }, { "ペ", "pe" }, { "アイ", "ai" }, { "アエㇷ゚", "aep" }, { "アオカ", "aoka" }, { "アオカイ", "aokai" }, { "アクス", "akusu" }, { "アシ", "asi" }, { "アシヌマ", "asinuma" }, { "アシㇰネ", "asikne" }, { "アシㇰネン", "asiknen" }, { "アシㇰネㇷ゚", "asiknep" }, { "アスㇽ", "asur" }, { "アタイ", "atai" }, { "アチャポ", "acapo" }, { "アニ", "ani" }, { "アヌ", "anu" }, { "アノカイ", "anokai" }, { "アパ", "apa" }, { "アフン", "ahun" }, { "アフンケ", "ahunke" }, { "アフンポル", "ahunporu" }, { "アフㇷ゚テ", "ahupte" }, { "アプンノ", "apunno" }, { "アペ", "ape" }, { "アペアリ", "apeari" }, { "アペパスイ", "apepasui" }, { "アマㇺ", "amam" }, { "アミㇷ゚", "amip" }, { "アリ", "ari" }, { "アリキキ", "arikiki" }, { "アン", "an" }, { "アンノㇱキ", "annoski" }, { "アㇱ", "as" }, { "アㇱカイ", "askai"}, { "アㇷ゚カㇱ", "apkas" }, { "アㇷ゚ト", "apto" }, { "アㇺ", "am" }, { "アㇻワニウ", "arwaniu" }, { "アㇻワン", "arwan" }, { "アㇻワンペ", "arwanpe" }, { "イェ", "ye" }, { "イオマンテ", "iomante" }, { "イカㇱマ", "ikasma" }, { "イキ", "iki" }, { "イク", "iku" }, { "イクパスイ", "ikupasui" }, { "イクルイ", "ikurui" }, { "イクレ", "ikure" }, { "イサㇺ", "isam" }, { "イシタイキ", "isitaiki" }, { "イセポ", "isepo" }, { "イソイタㇰ", "isoitak" }, { "イタコ", "itako" }, { "イタンキ", "itanki" }, { "イタㇰ", "itak" }, { "イチェン", "icen" }, { "イチャッケレレ", "icakkerere" }, { "イッカ", "ikka" }, { "イッカクㇽ", "ikkakur" }, { "イテキ", "iteki" }, { "イテセ", "itese" }, { "イナウケ", "inauke" }, { "イナン", "inan" }, { "イヌイェ", "inuye" }, { "イネ", "ine" }, { "イネン", "inen" }, { "イネㇷ゚", "inep" }, { "イフライェ", "ihuraye" }, { "イペ", "ipe" }, { "イペパスイ", "ipepasui" }, { "イペルスイ", "iperusui" }, { "イペレ", "ipere" }, { "イメル", "imeru" }, { "イヨッタ", "iyotta" }, { "イヨハイ", "iyohai" }, { "イララ", "irara" }, { "イルㇱカ", "iruska" }, { "イワニウ", "iwaniu" }, { "イワンケ", "iwanke" }, { "イワンペ", "iwanpe" }, { "インネ", "inne" }, { "イ・", "i=" }, { "イㇱラㇺ", "isram" }, { "ウェン", "wen" }, { "ウェンクㇽ", "wenkur" }, { "ウタロカ", "utaroka" }, { "ウタㇻ", "utar" }, { "ウパㇱ", "upas" }, { "ウパㇱクマ", "upaskuma" }, { "ウㇱ", "us" }, { "エアニ", "eani" }, { "エソロ", "esoro" }, { "エチオカ", "ecioka" }, { "エチオカイ", "eciokai" }, { "エチ・", "eci=" }, { "エンカ", "enka" }, { "エ・", "e=" }, { "エㇰ", "ek" }, { "オカ", "oka" }, { "オカイ", "okai" }, { "オナ", "ona" }, { "オマナン", "omanan" }, { "オヤパ", "oyapa" }, { "オロ", "oro" }, { "オン", "on" }, { "オㇿ", "or" }, { "カシ", "kasi" }, { "カシケ", "kasike" }, { "カネ", "kane" }, } self:iterate(examples, "tr") end return p bza78r5i15f1lq4ike23tokagln0xh9 মডিউল:as-Beng-Deva-translit 828 168714 510266 2026-06-07T12:46:26Z RedminBot 9553 [[en:Module:as-Beng-Deva-translit]] থেকে আনা হলো 510266 Scribunto text/plain local export = {} local char = { ["ৰ"] = "र", ["ৱ"] = "व" } function export.tr(text, lang, sc, override) local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*" local asBeng = require("Module:scripts").getByCode("as-Beng") text = mw.ustring.toNFD(text) text = string.gsub(text, UTF8_char, char) text = require("Module:Beng-Deva-translit").tr(text, lang, sc, true) text = mw.ustring.gsub( text, ".", function(c) return conv[c] end) return text end return export kipa72gccznfysv2loek3fmfu1quxwv মডিউল:as-translit/testcases 828 168715 510267 2026-06-07T12:46:27Z RedminBot 9553 [[en:Module:as-translit/testcases]] থেকে আনা হলো 510267 Scribunto text/plain -- Unit tests for [[Module:as-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local as_translit = require('Module:as-translit') local function link(word) return '<span class="Beng" lang="as">[[' .. word .. '#Assamese|' .. word .. ']]</span>' end function tests:do_test_translit(beng, roman, xlit) return self:equals(link(beng), as_translit.tr(beng, 'as', 'Beng', 'debug'), roman) end function tests:test_translit_assamese() local examples = { { 'স্ত্ৰী', 'stri' }, { 'জিভা', 'zibha' }, { 'হাঁওফাঁও', 'hãüphãü' }, { 'মেকুৰী', 'mekuri' }, { 'চৰকাৰী', 'sorkari' }, { 'হ’ল', 'höl' }, { 'ফুল', 'phul' }, { 'পুষ্প', 'puspo' }, { 'ঘাঁহ', 'ghãh' }, { 'তৃণ', 'trino' }, { 'উদ্ভিদ', 'udbhid' }, { 'গছ', 'gos' }, { 'স্বাধীন', 'sadhin' }, { 'পুস্তক', 'pustok' }, { 'মস্তিষ্ক', 'mostisko' }, { 'শূন্য', 'xuinno' }, { 'ব্যাঘ্ৰ', 'byaghro' }, { 'ব্যৱহাৰ', 'byowohar' }, { 'ছয়', 'soy' }, { 'ক্ষেত্ৰ', 'khetro' }, { 'কে’ক', 'këk' }, { 'স্পৰ্শ', 'sporxo' }, { 'স্বাদকলি', 'sadkoli' }, { 'শ্ৰদ্ধা', 'sroddha' }, { 'আশ্চৰ্য', 'assorzo' }, { 'ইচ্ছা', 'issa' }, { 'শ্বাস', 'sax' }, { 'ৰং', 'roṅ' }, { 'অৰ্থাৎ', 'orthat' }, { 'লোৱা', 'lüa' }, { 'ৰিক্সা', 'riksa' }, { 'দিয়া', 'dia' }, { 'অসমীয়া', 'oxomia' }, { 'ভাৰতীয়', 'bharotio' }, { 'বানপানী', 'banpani' }, { 'কাৰখানা', 'karkhana' }, { 'মানুহজন', 'manuhzon' }, { 'মানচিত্ৰ', 'mansitro' }, { 'গণতন্ত্ৰ', 'gonotontro' }, { 'ডাঙৰীয়া' , 'daṅoria' }, { 'জ্বলন' , 'zolon' }, { 'জ্বলা' , 'zola' }, { 'জ্বলাই' , 'zolai' }, { 'যাব কৰিব', 'zabo koribo' }, { 'ফুলক', 'phulok' }, { 'চিগাৰেটক', 'sigaretok' }, { 'ৰাষ্ট্ৰীয়', 'rastrio' }, { 'নিউয়ৰ্ক', 'niuyork' }, { 'শৰ্কৰা', 'xorkora' }, { 'আমবিলাক', 'ambilak' }, { 'সংখ্যা', 'xoiṅkha' }, { 'সমতল', 'xomotol' }, { 'জলচক্ৰ', 'zolosokro' }, { 'বাগৰিবলৈ', 'bagoriboloi' }, { 'বুটলিবৰ', 'butolibor' }, { 'ঢাপলিকা', 'dhapolika' }, { 'বাতৰিকাকত', 'batorikakot' }, -- behaviour of Cw { 'শ্বাস', 'sax' }, { 'উজ্বল', 'uzzol' }, { 'ঘনত্ব', 'ghonotto' }, { 'ম্ব', 'mbo' }, { 'ধন্যবাদ', 'dhoinnobad' }, { 'ধ্বংস', 'dhoṅxo' }, { 'ঈশ্বৰ', 'issor' }, { 'আহ্বান', 'ahban' }, { 'খ্যাত', 'khyato' }, { 'চ্যুত', 'suto' }, { 'জ্যোতি', 'züti' }, { 'ধ্যান', 'dhyan' }, { 'ক্ষুদ্ৰ', 'khudro' }, { 'বাক্য', 'baikko' }, { 'বিজ্ঞান', 'biggan' }, { 'আৰ্চি', 'arsi' }, } return self:iterate(examples, "do_test_translit") end return tests 760cx6b8hmit9qhtsagmzb1nonym1cg মডিউল:bku-translit 828 168716 510268 2026-06-07T12:46:29Z RedminBot 9553 [[en:Module:bku-translit]] থেকে আনা হলো 510268 Scribunto text/plain local export = {} local consonants = { ['ᝃ']='k', ['ᝄ']='g', ['ᝅ']='ng', ['ᝆ']='t', ['ᝇ']='d', ['ᝈ']='n', ['ᝉ']='f', ['ᝊ']='b', ['ᝋ']='m', ['ᝌ']='y', ['ᝎ']='l', ['ᝏ']='w', ['ᝐ']='s', ['ᝑ']='h', ['ᝍ']='r', } local diacritics = { ['ᝒ']='i', ['ᝓ']='u', ['᜴']='', } local tt = { -- vowels ['ᝀ']='a', ['ᝁ']='i', ['ᝂ']='u', --punctuation ['᜶']='.', -- kulit and pamudpod ['᜵']=',' -- single kulit and pamudpod } function export.tr(text, lang, sc, override) if sc ~= "Buhd" then return nil end text = mw.ustring.gsub(text,'([ᝃ-ᝑ][᜴])'..'([ᝀ-ᝂ])','%1-%2') text = mw.ustring.gsub( text, '([ᝃ-ᝑ])'.. '([ᝒᝓ᜴]?)'.. '([ᝀ-ᝂ]?)', function(c, d, e) if d == "" and e ~= "" then if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] else return consonants[c] .. 'a' .. tt[e] end elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] .. '' elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) --remove hyphen between vowels text = mw.ustring.gsub(text,"([aiu])-([aiu])","%1%2") -- add missing consonant placeholder after vowels text = mw.ustring.gsub(text,"([aeiou])","%1_") text = mw.ustring.gsub(text, '([ᝒᝓ᜴])', function(c) return '-' .. diacritics[c] end) text = mw.ustring.gsub(text, "◌", "-a") text = mw.ustring.gsub(text, " ([,.])", "%1") return text end return export 0wk82lai4hfulikt7iqhcdp7q06znqn মডিউল:bn-translit/testcases 828 168717 510269 2026-06-07T12:46:30Z RedminBot 9553 [[en:Module:bn-translit/testcases]] থেকে আনা হলো 510269 Scribunto text/plain -- Unit tests for [[Module:bn-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local bn_translit = require('Module:bn-translit') local function link(word) return '<span class="Beng" lang="bn">[[' .. word .. '#Bengali|' .. word .. ']]</span>' end function tests:do_test_translit(beng, roman, xlit) return self:equals(link(beng), bn_translit.tr(beng, 'bn', 'Beng', 'debug'), roman) end function tests:test_translit_bengali() local examples = { { 'ত্বক', 'tok' }, { 'ঠ্যাং', 'ṭhêṅ' }, { 'মানচিত্র', 'mancitro' }, { 'সূত্র', 'śutro' }, { 'মই', 'moi' }, { 'কারখানা', 'karkhana' }, { 'দুঃখিত', 'dukkhito' }, { 'লেবানন', 'lebanon' }, { 'যন্ত্রমানব', 'jontromanob' }, { 'প্রতিবেশী', 'protibeśi' }, { 'রচনা', 'rocona' }, { 'অংগুষ্ঠানা', 'oṅguśṭhana' }, { 'পানি', 'pani' }, { 'আগুন', 'agun' }, { 'পশ্চিমবঙ্গ', 'pościmboṅgo' }, { 'বাংলা', 'baṅla' }, { 'সর্বনাম', 'śorbonam' }, { 'ইতিহাস', 'itihaś' }, { 'শুভ', 'śubho' }, { 'শুদ্ধ', 'śuddho' }, { 'জল', 'jol' }, { 'তদ্ভব', 'todbhobo' }, { 'তৎসম', 'totśomo' }, { 'পশ্চিম', 'pościm' }, { 'পছন্দ', 'pochondo' }, { 'জন্মদিন', 'jonmodin' }, { 'অসভ্য', 'ośobbho' }, { 'প্রাণ', 'pran' }, { 'ক্ষুদ্র', 'khudro' }, { 'অক্ষর', 'okkhor' }, { 'জ্ঞান', 'gên' }, { 'বিজ্ঞান', 'biggên' }, { 'ওয়াদা', 'ōẇada' }, { 'বর্ষ', 'borśo' }, { 'আখতার', 'akhtar' }, { 'পঙ্কজ', 'ponkoj' }, } self:iterate(examples, "do_test_translit") end return tests tm7u4icqrz3h2ebnp4ya3eadlm01ke6 মডিউল:brh-translit 828 168718 510270 2026-06-07T12:46:31Z RedminBot 9553 [[en:Module:brh-translit]] থেকে আনা হলো 510270 Scribunto text/plain local U = mw.ustring.char local gsub = mw.ustring.gsub local export = {} local zabar = U(0x64E) local zer = U(0x650) local pesh = U(0x64F) local tashdid = U(0x651) -- also called shadda local jazm = "ْ" local he = "ہ" local consonants = "ببپتثجچحخدذرزژسشصضطظعغفقکگلࣇمنݨوہھٹڈڑ" local consonantS = "ببپتثجچحخدذرزژسشصضطظعغفقکگلࣇمنݨہھٹڈڑ" local consonantS2 = "یببپتثجچحخدذرزژسشصضطظعغفقکگلࣇمنݨوہھٹڈڑ" local vowels = "ایئےۓوؤ" local hes = "ہح" local diacritics = "َُِّْٰ" local ZZP = "َُِ" local mapping = { ["آ"] = 'ā', ["ب"] = 'b', ["پ"] = 'p', ["ت"] = 't', ["ٹ"] = 'ṭ', ["ث"] = 's', ["ج"] = 'j', ["چ"] = 'c', ["ح"] = 'h', ["خ"] = 'x', ["د"] = 'd', ["ڈ"] = 'ḍ', ["ذ"] = 'z', ["ر"] = 'r', ['ڑ'] = "ṛ", ["ز"] = 'z', ["ژ"] = 'ž', ["س"] = 's', ["ش"] = 'ś', ["ص"] = 's', ["ض"] = 'z', ["ط"] = 't', ["ظ"] = 'z', ["غ"] = 'ġ', ["ف"] = 'f', ["ق"] = 'q', ["ک"] = 'k', ["گ"] = 'g', ["ݨ"] = 'ṇ', ["ࣇ"] = 'ḷ', ["ل"] = 'l', ["ڷ"] = 'ł', ["م"] = 'm', ["ن"] = 'n', ["و"] = 'ō', ["ہ"] = 'h', ["ی"] = 'y', ["ے"] = 'ē', ["۔"] = ".", ["ں"] = '̃', ["ھ"] = "h", ["ع"] = '‘', ["ء"] = '’', ["ئ"] = '', ["ؤ"] = 'ō', ["أ"] = '', -- diacritics [zabar] = "a", [zer] = "i", [pesh] = "u", [jazm] = "", -- also sukun - no vowel [U(0x200C)] = "-", -- ZWNJ (zero-width non-joiner) -- ligatures ["ﻻ"] = "lā", ["ﷲ"] = "allāh", -- kashida ["ـ"] = "-", -- kashida, no sound -- numerals ["۱"] = "1", ["۲"] = "2", ["۳"] = "3", ["۴"] = "4", ["۵"] = "5", ["۶"] = "6", ["۷"] = "7", ["۸"] = "8", ["۹"] = "9", ["۰"] = "0", -- punctuation (leave on separate lines) ["؟"] = "?", -- question mark ["،"] = ",", -- comma ["؛"] = ";", -- semicolon ["«"] = '“', -- quotation mark ["»"] = '”', -- quotation mark ["٪"] = "%", -- percent ["؉"] = "‰", -- per mille ["٫"] = ".", -- decimals ["٬"] = ",", -- thousand ["ۓ"] = "-ye", ["ۀ"] = "-e" -- he ye (in ezâfe) } local ain = 'ع' local alif = 'ا' local ye = 'ی' local ye2 = 'ئ' local ye3 = "ے" local vao = "و" local aspirate = 'ھ' function export.tr(text, lang, sc) -- EXCEPTIONS - leave as they are, unless they have been sorted out elsewhere text = gsub(text, '([' .. consonants .. '])' .. ye .. "ں", "%1ē̃") text = gsub(text, zabar .. aspirate .. "(ی)" , "hɛ̄") text = gsub(text, zabar .. aspirate .. "(و)" , "hɔ̄") text = gsub(text, "ؤ" .. pesh, "ū") text = gsub(text, "وہ", "vo") text = gsub(text, alif .. ye2 .. '([' .. consonants .. '])', "ā'ya%1") -- Tashdeed text = gsub(text, '([' .. consonantS2 .. '])' .. tashdid, "%1%1") text = gsub(text, '([' .. consonantS2 .. '])' .. tashdid .. '([' .. ZZP .. '])', "%1%1%2") text = gsub(text, '([' .. ZZP .. '])' .. ye .. '([' .. ZZP .. '])' .. tashdid, "%1yy%2") text = gsub(text, '([' .. ZZP .. '])' .. vao .. '([' .. ZZP .. '])' .. tashdid, "%1vv%2") -- For some reason the tashdeed gets pushed after the other diacritics, so this line is necessary for tashdeed to work with other diacritics text = gsub(text, '([' .. consonants .. '])' .. '([' .. ZZP .. '])' .. tashdid, "%1%1%2") -- e, instead of i text = gsub(text, alif .. zer .. ain .. jazm .. '([' .. consonants .. '])' .. zer, "ē‘%1e") text = gsub(text, jazm .. '([' .. consonants .. '])' .. zer .. '([' .. consonants .. '])' .. alif, "%1e%2ā") text = gsub(text, alif .. zer .. ain .. jazm, "ē‘") -- tanween diacritic text = gsub(text, '([' .. consonants .. '])' .. 'ً' .. alif, "%1an") text = gsub(text, alif .. 'ً', "an") text = gsub(text, '([' .. consonants .. '])' .. 'ً', "%1an") -- khari zabar -- text = gsub(text, '([' .. vowels .. '])' .. 'ٰ', "ā") text = gsub(text, '([' .. consonants .. '])' .. 'ٰ' .. '([' .. vowels .. '])', "%1ā") -- ‘ain text = gsub(text, alif .. ain , "ā‘") text = gsub(text, ain .. alif .. '([' .. consonants .. '])', "‘ā%1") text = gsub(text, '([' .. consonants .. '])' .. ain .. he, "%1‘a") text = gsub(text, '([' .. consonants .. '])' .. '([' .. zer .. pesh .. ']?)' .. ain, "%1%2‘") text = gsub(text, ain .. zabar .. vao .. '([' .. consonants .. '])', "‘ɔ̄%1") text = gsub(text, ain .. zabar .. ye .. '([' .. consonants .. '])', "‘ɛ̄%1") text = gsub(text, ain .. zer .. '([' .. consonants .. '])', "‘i%1") text = gsub(text, ain .. pesh .. '([' .. consonants .. '])', "‘u%1") text = gsub(text, ain .. zer .. ye .. '([' .. consonants .. '])', "‘ī%1") text = gsub(text, ain .. pesh .. vao .. '([' .. consonantS .. '])', "‘ū%1") -- Vao text = gsub(text, vao .. '([' .. ZZP .. '])', "v%1") text = gsub(text, '([' .. consonants .. '])' .. zabar .. vao .. alif, "%1avā") -- Fatha Majhool -- text = gsub(text, "([" .. consonants .. "])" .. zabar .. aspirate .. "([" .. hes .. "])" .. "([" .. ZZP .. "])" .. jazm, "%1hêh%3") text = gsub(text, "([" .. consonants .. "])" .. zabar .. "([" .. hes .. "])" .. jazm .. "([" .. ZZP .. "])" , "%1êh%3") text = gsub(text, "([" .. consonants .. "])" .. zabar .. "([" .. hes .. "])" .. jazm , "%1êh") -- medial/final consonants. text = gsub(text, zabar .. he .. zer .. ye, "ahī") text = gsub(text, zabar .. he .. alif, "ahā") text = gsub(text, zabar .. he .. '([' .. consonants .. vowels .. '])', "ah%1") text = gsub(text, '([' .. consonants .. '])' .. alif, "%1ā") text = gsub(text, '([' .. consonants .. '])' .. tashdid .. alif, "%1%1ā") text = gsub(text, '([' .. consonants .. '])' .. vao, "%1ō") text = gsub(text, '([' .. consonants .. '])' .. tashdid .. vao, "%1%1ō") text = gsub(text, zer .. ye .. alif, "iyā") text = gsub(text, '([' .. consonants .. '])' .. ye .. '([' .. consonants .. '])', "%1ē%2") text = gsub(text, ye2 .. ye, "ï") text = gsub(text, ye2 .. 'ے', "ë") text = gsub(text,'([' .. consonants .. '])' .. ye .. ye3, "%1ië") text = gsub(text, alif .. zabar .. ye3, "ɛ̄") text = gsub(text, '([' .. consonants .. alif .. '])' .. ye2 .. ye, "%1aï") text = gsub(text, '([' .. consonants .. '])' .. ye2 .. ye3, "%1aë") text = gsub(text, zabar .. ye3, "ɛ̄") text = gsub(text, '([' .. consonants .. '])' .. zer .. " ", "%1-e ") -- Initial alif text = gsub(text, "" .. alif .. '([' .. consonantS .. '])', "ā%1") text = gsub(text, alif .. '([' .. consonantS .. '])', "a%1") text = gsub(text, alif .. zabar .. '([' .. consonantS .. '])', "a%1") text = gsub(text, alif .. zabar .. vao .. '([' .. consonants .. '])', "ɔ̄%1") text = gsub(text, alif .. vao .. '([' .. consonants .. '])', "ō%1") text = gsub(text, alif .. ye .. '([' .. consonants .. '])', "ai%1") text = gsub(text, alif .. zabar .. ye .. '([' .. consonants .. '])', "ɛ̄%1") text = gsub(text, alif .. pesh .. '([' .. consonantS .. '])', "u%1") text = gsub(text, alif .. zer .. '([' .. consonants .. '])', "i%1") text = gsub(text, pesh .. vao, "ū") text = gsub(text, alif .. zer .. ye.. '([' .. consonants .. '])', "ī%1") -- do-chashme-he zabar, zer, pesh text = gsub(text, "([" .. consonants .. "])" .. "([" .. ZZP .. "])" .. aspirate, "%1h%2") -- diacritics text = gsub(text, "([" .. consonants .. "])" .. zabar .. vao, "%1ɔ̄") text = gsub(text, "([" .. consonants .. "])" .. zabar .. ye, "%1ɛ̄") text = gsub(text, "([" .. consonants .. "])" .. zabar .. ye3, "%1ɛ̄") text = gsub(text, "([" .. consonants .. "])" .. ye, "%1ī") text = gsub(text, "([" .. consonants .. "])" .. zer .. ye, "%1ī") -- final he + short vowel disregards the he and transliterates the vowel text = gsub(text, ye .. he , "ye") text = gsub(text, "([" .. consonants .. "])" .. he , "%1e") -- text = gsub(text, zabar .. he .. "([" .. ZZP .. "])" , "ah%1") text = gsub(text, zabar .. he , "a") -- text = gsub(text, "ۂ", "a-e") text = mw.ustring.gsub(text, 'ahē', "hɛ̄") text = mw.ustring.gsub(text, 'ahō', "hɔ̄") text = mw.ustring.gsub(text, '.', mapping) text = mw.ustring.gsub(text, 'ōā', "vā") text = mw.ustring.gsub(text, 'ɔ̄ā', "vā") text = mw.ustring.gsub(text, 'ōا', "vā") text = mw.ustring.gsub(text, 'ɔ̄aاa', "avā") text = mw.ustring.gsub(text, 'ɔ̄ا', "vā") text = mw.ustring.gsub(text, 'ɔ̄ا', "vā") -- Changed these to 'iy(*)', because they will be used for with ی, which are normally written as 'iy' text = mw.ustring.gsub(text, 'īā', "iyā") text = mw.ustring.gsub(text, 'īa', "iya") -- text = mw.ustring.gsub(text, 'aا', "ā") text = mw.ustring.gsub(text, 'اē', "ē") text = mw.ustring.gsub(text, 'īا', "yā") text = mw.ustring.gsub(text, 'yا', "yā") text = mw.ustring.gsub(text, 'huō', "hū") text = mw.ustring.gsub(text, 'hiē', "hī") text = mw.ustring.gsub(text, 'êha', "êhê") -- vao as a medial consonant text = mw.ustring.gsub(text, "ūa", "uva") text = mw.ustring.gsub(text, "ɔ̄([aiu])", "av%1") -- -- Final corrections text = mw.ustring.gsub(text, "āa", "ā") text = mw.ustring.gsub(text, "aaa", "ā") text = mw.ustring.gsub(text, "āā", "ā") text = mw.ustring.gsub(text, "aa", "ā") text = mw.ustring.gsub(text, "ë", "ē") text = mw.ustring.gsub(text, "ï", "ī") text = mw.ustring.gsub(text, "’alle", "’allāh") return text end return export 513jcjnl0cacjo9xr2td5uq1fmx528t মডিউল:brx-translit/testcases 828 168719 510271 2026-06-07T12:46:31Z RedminBot 9553 [[en:Module:brx-translit/testcases]] থেকে আনা হলো 510271 Scribunto text/plain -- Unit tests for [[Module:brx-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local brx_translit = require('Module:brx-translit') function tests:do_test_translit(deva, roman, comment) self:equals('<span class="Deva" lang="brx">[[' .. mw.ustring.gsub(deva, "%+", "") .. '#Bodo (India)|' .. mw.ustring.gsub(deva, "%+", "") .. ']]</span>', brx_translit.tr(deva, 'brx', 'Deva'), roman, { comment = comment }) end function tests:test_translit_bodo() self:do_test_translit('खावसे', 'kaose') self:do_test_translit('अखाफोर', 'okafwr') self:do_test_translit('अख्रां', 'okraŋ') self:do_test_translit('संख्रि', 'soŋkri') self:do_test_translit('दावदै', 'daodwi') self:do_test_translit('बिसोरनि', 'biswrni') self:do_test_translit('हामजायो', 'hamzayw') end return tests 5z9a6fyekaahab5wi146dq5wtd681ki মডিউল:btx-translit/testcases 828 168720 510272 2026-06-07T12:46:32Z RedminBot 9553 [[en:Module:btx-translit/testcases]] থেকে আনা হলো 510272 Scribunto text/plain -- Unit tests for [[Module:btx-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local btx_translit = require('Module:btx-translit') --TO DO function tests:do_test_translit(karo, roman, xlit) self:equals('<span class="Batk" lang="btx">[[' .. karo .. '#Karo|' .. karo .. ']]</span>', btx_translit.tr(karo, 'btx', 'Batk'), roman) end function tests:test_translit_btx() self:do_test_translit('ᯀᯂᯬ', '(h)aku') self:do_test_translit('ᯀᯝᯫᯉ᯳', '(h)angin') end return tests bqzr8sujw40zt36zr3f12c9beqjiqb3 মডিউল:bug-translit 828 168721 510273 2026-06-07T12:46:33Z RedminBot 9553 [[en:Module:bug-translit]] থেকে আনা হলো 510273 Scribunto text/plain local export = {} local tt = {} tt["Latn"] = { ["ka"]="ᨀ", ["ki"]="ᨀᨗ", ["ku"]="ᨀᨘ", ["ké"]="ᨀᨙ", ["ko"]="ᨀᨚ", ["ke"]="ᨀᨛ", ["ga"]="ᨁ", ["gi"]="ᨁᨗ", ["gu"]="ᨁᨘ", ["gé"]="ᨁᨙ", ["go"]="ᨁᨚ", ["ge"]="ᨁᨛ", ["pa"]="ᨄ", ["pi"]="ᨄᨗ", ["pu"]="ᨄᨘ", ["pé"]="ᨄᨙ", ["po"]="ᨄᨚ", ["pe"]="ᨄᨛ", ["ba"]="ᨅ", ["bi"]="ᨅᨗ", ["bu"]="ᨅᨘ", ["bé"]="ᨅᨙ", ["bo"]="ᨅᨚ", ["be"]="ᨅᨛ", ["ma"]="ᨆ", ["mi"]="ᨆᨗ", ["mu"]="ᨆᨘ", ["mé"]="ᨆᨙ", ["mo"]="ᨆᨚ", ["me"]="ᨆᨛ", ["ta"]="ᨈ", ["ti"]="ᨈᨗ", ["tu"]="ᨈᨘ", ["té"]="ᨈᨙ", ["to"]="ᨈᨚ", ["te"]="ᨈᨛ", ["da"]="ᨉ", ["di"]="ᨉᨗ", ["du"]="ᨉᨘ", ["dé"]="ᨉᨙ", ["do"]="ᨉᨚ", ["de"]="ᨉᨛ", ["na"]="ᨊ", ["ni"]="ᨊᨗ", ["nu"]="ᨊᨘ", ["né"]="ᨊᨙ", ["no"]="ᨊᨚ", ["ne"]="ᨊᨛ", ["ca"]="ᨌ", ["ci"]="ᨌᨗ", ["cu"]="ᨌᨘ", ["cé"]="ᨌᨙ", ["co"]="ᨌᨚ", ["ce"]="ᨌᨛ", ["ja"]="ᨍ", ["ji"]="ᨍᨗ", ["ju"]="ᨍᨘ", ["jé"]="ᨍᨙ", ["jo"]="ᨍᨚ", ["je"]="ᨍᨛ", ["ya"]="ᨐ", ["yi"]="ᨐᨗ", ["yu"]="ᨐᨘ", ["yé"]="ᨐᨙ", ["yo"]="ᨐᨚ", ["ye"]="ᨐᨛ", ["ra"]="ᨑ", ["ri"]="ᨑᨗ", ["ru"]="ᨑᨘ", ["ré"]="ᨑᨙ", ["ro"]="ᨑᨚ", ["re"]="ᨑᨛ", ["la"]="ᨒ", ["li"]="ᨒᨗ", ["lu"]="ᨒᨘ", ["lé"]="ᨒᨙ", ["lo"]="ᨒᨚ", ["le"]="ᨒᨛ", ["wa"]="ᨓ", ["wi"]="ᨓᨗ", ["wu"]="ᨓᨘ", ["wé"]="ᨓᨙ", ["wo"]="ᨓᨚ", ["we"]="ᨓᨛ", ["sa"]="ᨔ", ["si"]="ᨔᨗ", ["su"]="ᨔᨘ", ["sé"]="ᨔᨙ", ["so"]="ᨔᨚ", ["se"]="ᨔᨛ", ["ha"]="ᨖ", ["hi"]="ᨖᨗ", ["hu"]="ᨖᨘ", ["hé"]="ᨖᨙ", ["ho"]="ᨖᨚ", ["he"]="ᨖᨛ", ["a"]="ᨕ", ["i"]="ᨕᨗ", ["u"]="ᨕᨘ", ["é"]="ᨕᨙ", ["o"]="ᨕᨚ", ["e"]="ᨕᨛ", ["nga"]="ᨂ", ["ngi"]="ᨂᨗ", ["ngu"]="ᨂᨘ", ["ngé"]="ᨂᨙ", ["ngo"]="ᨂᨚ", ["nge"]="ᨂᨛ", ["nya"]="ᨎ", ["nyi"]="ᨎᨗ", ["nyu"]="ᨎᨘ", ["nyé"]="ᨎᨙ", ["nyo"]="ᨎᨚ", ["nye"]="ᨎᨛ", ["ngka"]="ᨃ", ["ngki"]="ᨃᨗ", ["ngku"]="ᨃᨘ", ["ngké"]="ᨃᨙ", ["ngko"]="ᨃᨚ", ["ngke"]="ᨃᨛ", ["mpa"]="ᨇ", ["mpi"]="ᨇᨗ", ["mpu"]="ᨇᨘ", ["mpé"]="ᨇᨙ", ["mpo"]="ᨇᨚ", ["mpe"]="ᨇᨛ", ["nra"]="ᨋ", ["nri"]="ᨋᨗ", ["nru"]="ᨋᨘ", ["nré"]="ᨋᨙ", ["nro"]="ᨋᨚ", ["nre"]="ᨋᨛ", ["nca"]="ᨏ", ["nci"]="ᨏᨗ", ["ncu"]="ᨏᨘ", ["ncé"]="ᨏᨙ", ["nco"]="ᨏᨚ", ["nce"]="ᨏᨛ", }; function export.tr(text, lang, sc) if (sc == "Latn") then -- Lowercase text = mw.ustring.lower(text) -- Remove glottal stop text = mw.ustring.gsub(text, "\'", "") -- Replace character clusters text = mw.ustring.gsub(text, "ngk[aeioué]", tt[sc]) text = mw.ustring.gsub(text, "mp[aeioué]", tt[sc]) text = mw.ustring.gsub(text, "nr[aeioué]", tt[sc]) text = mw.ustring.gsub(text, "nc[aeioué]", tt[sc]) text = mw.ustring.gsub(text, "ng[aeioué]", tt[sc]) text = mw.ustring.gsub(text, "ny[aeioué]", tt[sc]) -- Replace the rest of the characters text = mw.ustring.gsub(text, "[kgnpbmtdnrcjyclwsh][aeioéu]", tt[sc]) -- Replace one-vowel syllables text = mw.ustring.gsub(text, "[aeioué]", tt[sc]) -- Remove left-overs text = mw.ustring.gsub(text, "[kgnpbmtdnrcjyclwsh-]", "") end return mw.ustring.toNFC(text) end return export kucm14vssgeho96k023kxbo3217yaj9 মডিউল:cau-cir-translit 828 168722 510274 2026-06-07T12:46:33Z RedminBot 9553 [[en:Module:cau-cir-translit]] থেকে আনা হলো 510274 Scribunto text/plain local u = require("Module:string/char") local export = {} local GRAVE, ACUTE, CIRC, MACRON, BREVE, CARON, DOTBELOW = u(0x300), u(0x301), u(0x302), u(0x304), u(0x306), u(0x30C), u(0x323) local tt = { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "ɣ", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ž", ["з"] = "z", ["и"] = "i", ["й"] = "j", ["к"] = "k", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ц"] = "c", ["ч"] = "č", ["ш"] = "š", ["щ"] = "ś", ["ъ"] = "", ["ы"] = "ə", ["ь"] = "ʲ", ["э"] = "ɛ", ["ю"] = "jəw", ["я"] = "ja", ["ӏ"] = "ʼ", ["А"] = "A", ["Б"] = "B", ["В"] = "V", ["Г"] = "Ɣ", ["Д"] = "D", ["Е"] = "E", ["Ё"] = "Jo", ["Ж"] = "Ž", ["З"] = "Z", ["И"] = "I", ["Й"] = "J", ["К"] = "K", ["Л"] = "L", ["М"] = "M", ["Н"] = "N", ["О"] = "O", ["П"] = "P", ["Р"] = "R", ["С"] = "S", ["Т"] = "T", ["У"] = "U", ["Ф"] = "F", ["Х"] = "X", ["Ц"] = "C", ["Ч"] = "Č", ["Ш"] = "Š", ["Щ"] = "Ś", ["Ъ"] = "", ["Ы"] = "Ə", ["Ь"] = "ʲ", ["Э"] = "Ɛ", ["Ю"] = "Jəw", ["Я"] = "Ja", ["Ӏ"] = "ʼ" } local digraphs = { ["го"] = "gʷo", ["гу"] = "gʷu", ["гъ"] = "ğ", ["гь"] = "gʲ", ["жъ"] = "ẑ", ["жь"] = "ź", ["ко"] = "kʷo", ["ку"] = "kʷu", ["къ"] = "q", ["кӏ"] = "kʼ", ["лъ"] = "lˢ", ["ль"] = "lᶻ", ["лӏ"] = "lˢʼ", ["пӏ"] = "pʼ", ["сӏ"] = "sʼ", ["тӏ"] = "tʼ", ["фӏ"] = "fʼ", ["хо"] = "xʷo", ["ху"] = "xʷu", ["хъ"] = "ꭓ", ["хь"] = "ḥ", ["цо"] = "cʷo", ["цу"] = "cʷu", ["цӏ"] = "cʼ", ["чъ"] = "ĉ", ["чӏ"] = "ĉʼ", ["шъ"] = "ŝ", ["шӏ"] = "šʼ", ["щӏ"] = "śʼ", ["Го"] = "Gʷo", ["Гу"] = "Gʷu", ["Гъ"] = "Ğ", ["Гь"] = "Gʲ", ["Жъ"] = "Ẑ", ["Жь"] = "Ź", ["Ко"] = "Kʷo", ["Ку"] = "Kʷu", ["Къ"] = "Q", ["Кӏ"] = "Kʼ", ["Лъ"] = "Lˢ", ["Ль"] = "Lᶻ", ["Лӏ"] = "Lˢʼ", ["Пӏ"] = "Pʼ", ["Сӏ"] = "Sʼ", ["Тӏ"] = "Tʼ", ["Фӏ"] = "Fʼ", ["Хо"] = "Xʷo", ["Ху"] = "Xʷu", ["Хъ"] = "Ꭓ", ["Хь"] = "Ḥ", ["Цо"] = "Cʷo", ["Цу"] = "Cʷu", ["Цӏ"] = "Cʼ", ["Чъ"] = "Ĉ", ["Чӏ"] = "Ĉʼ", ["Шъ"] = "Ŝ", ["Шӏ"] = "Šʼ", ["Щӏ"] = "Śʼ" } -- Prevents overlapping substitutions (e.g. "лӏо"), and also ensures labialized consonants can be substituted before determining where "j" is placed in relation to "е" and "и". local digraphs2 = { ["jе"] = "je", ["jи"] = "ji", ["wо"] = "wo", ["wу"] = "wu", ["ӏо"] = "ʼwo", ["ӏу"] = "ʼwu", ["Jе"] = "Je", ["Jи"] = "Ji", ["Wо"] = "Wo", ["Wу"] = "Wu", ["Ӏо"] = "ʼWo", ["Ӏу"] = "ʼWu" } local trigraphs = { ["гъо"] = "ğʷo", ["гъу"] = "ğʷu", ["дзо"] = "dzʷo", ["дзу"] = "dzʷu", ["жъо"] = "žʷo", ["жъу"] = "žʷu", ["кхъ"] = "qꭓ", ["къо"] = "qʷo", ["къу"] = "qʷu", ["къӏ"] = "qʼ", ["кӏо"] = "kʷʼo", ["кӏу"] = "kʷʼu", ["пӏо"] = "pʷʼo", ["пӏу"] = "pʷʼu", ["тлӏ"] = "tˡʼ", ["тӏо"] = "tʷʼo", ["тӏу"] = "tʷʼu", ["хъо"] = "ꭓʷo", ["хъу"] = "ꭓʷu", ["чъо"] = "ćʷo", ["чъу"] = "ćʷu", ["шъо"] = "šʷo", ["шъу"] = "šʷu", ["шӏо"] = "šʷʼo", ["шӏу"] = "šʷʼu", ["Гъо"] = "Ğʷo", ["Гъу"] = "Ğʷu", ["Дзо"] = "Dzʷo", ["Дзу"] = "Dzʷu", ["Жъо"] = "Žʷo", ["Жъу"] = "Žʷu", ["Кхъ"] = "Qꭓ", ["Къо"] = "Qʷo", ["Къу"] = "Qʷu", ["Къӏ"] = "Qʼ", ["Кӏо"] = "Kʷʼo", ["Кӏу"] = "Kʷʼu", ["Пӏо"] = "Pʷʼo", ["Пӏу"] = "Pʷʼu", ["тлӏ"] = "tˡʼ", ["Тӏо"] = "Tʷʼo", ["Тӏу"] = "Tʷʼu", ["Хъо"] = "Ꭓʷo", ["Хъу"] = "Ꭓʷu", ["Чъо"] = "Ćʷo", ["Чъу"] = "Ćʷu", ["Шъо"] = "Šʷo", ["Шъу"] = "Šʷu", ["Шӏо"] = "Šʷʼo", ["Шӏу"] = "Šʷʼu" } local tetragraphs = { ["кхъо"] = "qꭓʷo", ["кхъу"] = "qꭓʷu", ["Кхъо"] = "Qꭓʷo", ["Кхъу"] = "Qꭓʷu" } function export.tr(text, lang, sc) local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*" -- Convert uppercase palochka to lowercase, along with any "false" palochkas (entered as Latin "I" or "l", Greek "Ι" or Cyrillic "І"). Lowercase palochka is found in tables above. text = mw.ustring.gsub(text, "[IlΙІӀ]", "ӏ") for tetragraph, replacement in pairs(tetragraphs) do text = text:gsub(tetragraph, replacement) end for trigraph, replacement in pairs(trigraphs) do text = text:gsub(trigraph, replacement) end for digraph, replacement in pairs(digraphs) do text = text:gsub(digraph, replacement) end -- Contextual addition of "j" before "е" and "и", and "w" before "о" and "у". NOTE: These break with string.gsub, so must use mw.ustring.gsub. text = mw.ustring.gsub(mw.ustring.toNFC(text), "^([еи])", "j%1") text = mw.ustring.gsub(text, "^([ЕИ])", function(a) return "J" .. mw.ustring.lower(a) end) text = mw.ustring.gsub(text, "([ouаеёиоуыэюяOUАЕЁИОУЫЭЮЯ%s%p])([еи])", "%1j%2") text = mw.ustring.gsub(text, "([%s%p])([ЕИ])", function(a, b) return a .. "J" .. mw.ustring.lower(b) end) text = mw.ustring.gsub(text, "^([оу])", "w%1") text = mw.ustring.gsub(text, "^([ОУ])", function(a) return "W" .. mw.ustring.lower(a) end) text = mw.ustring.gsub(text, "([ouаеёиоуыэюяOUАЕЁИОУЫЭЮЯ%s%p])([оу])", "%1w%2") text = mw.ustring.gsub(text, "([%s%p])([ОУ])", function(a, b) return a .. "W" .. mw.ustring.lower(b) end) for digraph, replacement in pairs(digraphs2) do text = text:gsub(digraph, replacement) end text = text:gsub(UTF8_char, tt) -- Remove epenthetic vowel for labialized consonants if before a non-iotated, non-labialized vowel. text = mw.ustring.gsub(text, "u([aeiouəɛ])", "%1") -- Reposition apostrophes then decompose. text = mw.ustring.toNFD(mw.ustring.gsub(mw.ustring.gsub(text, "ʼʲ", "ʲʼ"), "ʼʷ", "ʷʼ")) -- When double letters both have a modifier letter and/or an apostrophe, only show on the second for readability purposes. for letter in ("abcdefghijklmnopqrstuvxzəɛɣꭓABCDEFGHIJKLMNOPQRSTUVXZƏƐƔꞳ"):gmatch(UTF8_char) do text = mw.ustring.gsub(text, letter .. "([" .. GRAVE .. ACUTE .. CIRC .. MACRON .. BREVE .. CARON .. DOTBELOW .. "]?)([ʲˡˢᶻ]?ʲ?ʼ?)" .. mw.ustring.lower(letter) .. "%1%2", letter .. "%1" .. mw.ustring.lower(letter) .. "%1%2") end -- Remove consecutive j/ʲ and w/ʷ then recompose. return mw.ustring.toNFC(mw.ustring.gsub(mw.ustring.gsub(text, "ʲ?([Jj])ʲ?", "%1"), "ʷ?([Ww])ʷ?", "%1")) end return export 1x0o4kri6b7nofqan7ja6sjn0dna2y7 মডিউল:cau-cir-translit/testcases 828 168723 510275 2026-06-07T12:46:34Z RedminBot 9553 [[en:Module:cau-cir-translit/testcases]] থেকে আনা হলো 510275 Scribunto text/plain local function add_uppercase_palochka(examples) local out = {} local i = 0 local lowercase_palochka, uppercase_palochka = mw.ustring.char(0x4CF), mw.ustring.char(0x4C0) for _, example in ipairs(examples) do i = i + 1 out[i] = example if example[1]:find(lowercase_palochka) then i = i + 1 out[i] = { example[1]:gsub(lowercase_palochka, uppercase_palochka), example[2] } end end return out end return require("Module:transliteration module testcases")( require("Module:cau-cir-translit").tr, add_uppercase_palochka{ { "ахъчэзэблэхъущ", "āꭓčăzăblăꭓ°š̍" }, { "ахъчэжъгъэй", "āꭓčăẑġăj" }, { "бгъотагъэ", "bġotāġă" }, { "бгъунджырыкӏу", "bġ°nǯ̍ərəḳ°" }, { "бгъэхэӏушъхь", "bġăxăʾ°ŝḥ" }, { "былъытырыкӏу", "bəłətərəḳ°" }, { "гъогурыгъуазэ", "ġog°rəġ°āză" }, { "жъогъо шӏӏэныгъэлӏ", "ẑoġo ṣ̂ʾănəġăḷ" }, { "жьыкъыдэгъэкӏын", "ž̍əqədăġăč̣̍ən" }, { "къэкӏорэтхьэмафэ", "qăč̣̍orătḥămāfă" }, --[[ { "", "" }, --]] }, "Cyrl", "ady" ) 5b770zbvymmebwd9d5caw21xgc3idim মডিউল:cde-translit 828 168724 510276 2026-06-07T12:46:34Z RedminBot 9553 [[en:Module:cde-translit]] থেকে আনা হলো 510276 Scribunto text/plain local export = {} local consonants = { ['క']='k' , ['ఖ']='kh' , ['గ']='g' , ['ఘ']='gh' , ['ఙ']='ṅ' , ['చ']='c' , ['ఛ']='ch' , ['జ']='j' , ['ఝ']='jh' , ['ఞ']='ñ' , ['ట']='ṭ' , ['ఠ']='ṭh' , ['డ']='ḍ' , ['ఢ']='ḍh' , ['ణ']='ṇ' , ['త']='t' , ['థ']='th' , ['ద']='d' , ['ధ']='dh' , ['న']='n' , ['ప']='p' , ['ఫ']='ph' , ['బ']='b' , ['భ']='bh' , ['మ']='m' , ['య']='y' , ['ర']='r' , ['ల']='l' , ['వ']='v' , ['ళ']='ḷ' , ['శ']='ś' , ['ష']='ṣ' , ['స']='s' , ['హ']='h' , ['ఱ']='ṟ' , ['ఴ']='ḻ' , ['ౘ']='ĉ' , ['ౙ']='ẑ' , ['ౚ']='ṟ̄' , ['క఼']='q' , ['ఖ఼']='x' , ['గ఼']='ġ' , ['జ఼']='z', ['ఝ఼']='ź', ['ఫ఼']='f', ['డ఼']='ṛ', ['ఢ఼']='ṛh', ['న఼']='ṉ', } local diacritics = { ['ా']= 'ā' , ['ి']='i' , ['ీ']='ī' , ['ు']='u' , ['ూ']='ū' , ['ృ']='r̥' , ['ౄ']='r̥̄' , ['ౢ']='l̥' , ['ౣ']='l̥̄' , ['ె']='e' , ['ే']='ē' , ['ై']='ai' , ['ొ']='o' , ['ో']='ō' , ['ౌ']='au' , ['్']='' , } local tt = { -- vowels ['అ']='a' , ['ఆ']='ā' , ['ఇ']='i' , ['ఈ']='ī' , ['ఉ']='u' , ['ఊ']='ū' , ['ఋ']='r̥' , ['ౠ']='r̥̄' , ['ఌ']='l̥' , ['ౡ']='l̥̄', ['ఎ']='e' , ['ఏ']='ē' , ['ఐ']='ai' , ['ఒ']='o' , ['ఓ']='ō' , ['ఔ']='au' , ['అం']='aṁ' , ['అఁ']='an̆' , ['అః']='aḥ' , -- other symbols ['ం']='ṁ',-- anusvara ['ః']='ḥ' , -- visarga ['ఁ']='n̆' , -- candrabindu/arthanusvāra/aranusa ['ఀ']='m̐' , -- combining candrabindu ['ఽ']='’' , -- avagraha -- digits ['౦'] = '0', ['౧'] = '1', ['౨'] = '2', ['౩'] = '3', ['౪'] = '4', ['౫'] = '5', ['౬'] = '6', ['౭'] = '7', ['౮'] = '8', ['౯']= '9', ['౸']='0⁄4', ['౹']='¼', ['౺']='2⁄4', ['౻']='¾', ['౦']='0⁄16', ['౼']='1⁄16', ['౽']='2⁄16', ['౾']='3⁄16' , } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '([కఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరలవళశషసహఱఴౘౙౚ])'.. '([ాిీుూృ̥ౄ̥̄ెేైొోౌ్]?)', function(c, d) if d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) -- anusvara text = mw.ustring.gsub(text, 'ṁ([kqxgġṅ])', 'ṅ%1') text = mw.ustring.gsub(text, 'ṁ([cjźñ])', 'ñ%1') text = mw.ustring.gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = mw.ustring.gsub(text, 'ṁ([tdnĉẑz])', 'n%1') text = mw.ustring.gsub(text, 'ṁ([pfbm])', 'm%1') return text end return export eztvkjvbw8doh740obx0dgijw6w11p8 মডিউল:ceb-translit 828 168725 510277 2026-06-07T12:46:35Z RedminBot 9553 [[en:Module:ceb-translit]] থেকে আনা হলো 510277 Scribunto text/plain local export = {} local consonants = { ['ᜃ']='k', ['ᜄ']='g', ['ᜅ']='ng', ['ᜆ']='t', ['ᜇ']='d', ['ᜈ']='n', ['ᜉ']='p', ['ᜊ']='b', ['ᜋ']='m', ['ᜌ']='y', ['ᜎ']='l', ['ᜏ']='w', ['ᜐ']='s', ['ᜑ']='h', ['ᜍ']='r', } local diacritics = { ['ᜒ']='i', ['ᜓ']='u', ['᜔']='', } local tt = { -- vowels ['ᜀ']='a', ['ᜁ']='i', ['ᜂ']='u', --punctuation ['᜶']='.', -- pamudpod ['᜵']=',' -- single pamudpod } function export.tr(text, lang, sc) if sc ~= "Tglg" then return nil end local separate_dr = false if string.find(text, 'ᜍ') then seperate_dr = true end text = mw.ustring.gsub(text,'([ᜃ᜔ᜄ᜔ᜅ᜔ᜆ᜔ᜈ᜔ᜉ᜔ᜊ᜔ᜋ᜔ᜌ᜔ᜎ᜔ᜏ᜔ᜐ᜔])'..'([ᜀᜁᜂ])','%1-%2') text = mw.ustring.gsub( text, '([ᜃ-ᜑ])'.. '([ᜒᜓ᜔]?)'.. '([ᜀ-ᜂ]?)', function(c, d, e) if d == "" and e ~= "" then if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. '' else return consonants[c] .. 'a' .. tt[e] end elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) --convert intervocalic D to R if not seperate_dr then text = mw.ustring.gsub(text,"([aiu])d([aiu])","%1r%2") end --remove hyphen between vowels text = mw.ustring.gsub(text,"([aiu])-([aiu])","%1%2") return text end return export g0prgx12vq4lfhayn1f4f6c3nvuvlrp মডিউল:chg-translit/testcases 828 168726 510278 2026-06-07T12:46:35Z RedminBot 9553 [[en:Module:chg-translit/testcases]] থেকে আনা হলো 510278 Scribunto text/plain -- Refresh page to run tests. local tests = require('Module:UnitTests') local chg_translit = require('Module:chg-translit') local full_link = require('Module:links').full_link local chg = require('Module:languages').getByCode('chg') local rlm = require("Module:string/char")(0x200F) -- right-to-left mark local function link(word) return full_link{ term = word, lang = chg, tr = "-" } end function tests:do_test_translit(chagatai, expected) local actual = chg_translit.tr(chagatai, 'chg', 'Arab') self:equals(chagatai, actual, expected) end function tests:test_translit_chagatai() local examples = { {"رَضی دین بو فال کلام شریف نینک معنای", "rży dyn bw fʾl klʾm šryf nynk mʿnʾy"}, {"الله", "ʾllh"}, {"بو کتاب اوچ باب بولدی", "bw ktʾb ʾwč bʾb bwldy"}, {"بسم اللهِ الرّحْمنِ الرَّحیم", "bsm ʾllh ʾlrḥmn ʾlrḥym"}, {"علیه السّلام غه فرمان بولدیکیم ای جبرائیل تیز", "ʿlyh ʾlslʾm ġh frmʾn bwldykym ʾy jbrʾy̮'yl tyz"} } self:iterate(examples, "do_test_translit") end return tests 5a1dsbwut4qugd83rtkpg9oh9c5w7xn মডিউল:ckb-translit/testcases 828 168727 510279 2026-06-07T12:46:36Z RedminBot 9553 [[en:Module:ckb-translit/testcases]] থেকে আনা হলো 510279 Scribunto text/plain return require "Module:transliteration module testcases" ( require "Module:ckb-translit".tr, { { "دەولەتێن یەکبوویییێن ئەمەریکایێ", "[[dewletên yekbûyîyên emerîkayê]]" }, { "فەرھەنگ", "[[ferheng]]" }, { "خۆڵەمێشی", "[[xollemêşî]]" }, { "دووشەممە", "[[dûşemme]]" }, "Insertion of schwa (''i'')", { "کردن", "[[kirdin]]" }, { "ورد", "[[wird]]" }, "Incorrect codepoint", { "خۆڵه‌مێشی", "[[xollemêşî]]" }, "diacritic", { "زْرانی", "[[ziranî]]" }, { "مِریشک", "[[mirîşk]]" }, }, "ku-Arab", "ckb") dhqcui4i2wysm1swcmzjgc3a3z3q1dw মডিউল:ckt-translit/testcases 828 168728 510280 2026-06-07T12:46:37Z RedminBot 9553 [[en:Module:ckt-translit/testcases]] থেকে আনা হলো 510280 Scribunto text/plain return require "Module:transliteration module testcases" ( require "Module:ckt-translit".tr, { { "ы’ԓгу ԓыӈык", "y’ḷgu ḷyṇyk" }, }, "Cyrl", "ckt" ) mzinrppt4basdybok1pjfldmjwpzoxl মডিউল:cms-translit 828 168729 510281 2026-06-07T12:46:38Z RedminBot 9553 [[en:Module:cms-translit]] থেকে আনা হলো 510281 Scribunto text/plain -- See [[Wiktionary:Messapic entry guidelines]]. local export = {} local tt = { ["α"] = "a", ["β"] = "b", ["γ"] = "g", ["δ"] = "d", ["ε"] = "e", ["ϝ"] = "v", ["ζ"] = "z", ["η"] = "ē", ["ͱ"] = "h", ["θ"] = "th", ["ι"] = "i", ["κ"] = "k", ["λ"] = "l", ["μ"] = "m", ["ν"] = "n", ["χ"] = "š", ["ο"] = "o", ["π"] = "p", ["ϙ"] = "q", ["ρ"] = "r", ["σ"] = "s", ["τ"] = "t", ["ψ"] = "h̦", ["φ"] = "ț", ["υ"] = "u", ["ω"] = "ō", } function export.tr(text, _lang, _sc) return mw.ustring.gsub(text, '[ͱ-ϝ]', tt) end return export brg04fkx2o71tpq0hp3a5ncof4r9zra মডিউল:cr-east-translit/testcases 828 168730 510282 2026-06-07T12:46:38Z RedminBot 9553 [[en:Module:cr-east-translit/testcases]] থেকে আনা হলো 510282 Scribunto text/plain -- Unit tests for [[Module:cr-east-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local cr_east_translit = require('Module:cr-east-translit') --TO DO function tests:do_test_translit(cree, roman, xlit) self:equals('<span class="Cans" lang="crl">[[' .. cree .. '#Northern East Cree|' .. cree .. ']]</span>', cr_east_translit.tr(cree, 'crl', 'Cans'), roman) end function tests:test_translit_cr_east() self:do_test_translit('ᔑᑯᑖᐤᐦ', 'shikutaauh') self:do_test_translit('ᐊᑆᓐ', 'apwaan') self:do_test_translit('ᒥᒋᔥᑯᑖᐤ', 'michishkutaau') self:do_test_translit('ᐹᐦᐱᓯᐦᑳᔮᔥᑖᐱᔨᐤ', 'paahpisihkaayaashtaapiyiu') self:do_test_translit('ᔒᑭᐙᔖᐤ', 'shiikiwaashaau') self:do_test_translit('ᓅᒋᔅᑯᑎᐙᓰᐅᑭᒥᒄ', 'nuuchiskutiwaasiiukimikw') self:do_test_translit('ᒋᓵᐱᔅᒋᓵᐙᓐ', 'chisaapischisaawaan') self:do_test_translit('ᓂᔮᐅᑖᔥᑎᒡ', 'niyaautaashtich') self:do_test_translit('ᐱᐦᑯᑖᔅᒌ', 'pihkutaaschii') self:do_test_translit('ᓂᔅᒋᐦᑳᓂᒡ', 'nischihkaanich') self:do_test_translit('ᕢᕥᕧ', 'thiithuuthaa') self:do_test_translit('ᑴᔂ', 'kweswaa') end return tests 8zdvean24e925y84xvgvs48sx54kxxq মডিউল:cr-translit/testcases 828 168731 510283 2026-06-07T12:46:39Z RedminBot 9553 [[en:Module:cr-translit/testcases]] থেকে আনা হলো 510283 Scribunto text/plain local export = {} local result = "" local function add(text) result = result .. "* [["..text.."#Cree|"..text.."]]: " .. require("Module:cr-translit").tr(text, "cr", "Cans") .. "\n" end local function dda(text) result = result .. "* [["..text.."#Cree|"..text.."]]: " .. require("Module:cr-translit").transcribe(text) .. "\n" end function export.show() add("ᐁᔨᐦᑵᐤ") add("ᐊᐱᑕᐘᐣ") add("ᐊᑎᒼ") add("ᐊᓄᑭᐃᑶᑭᑲ") add("ᐊᔦᒥᐅᑭᔨᑲ") add("ᐋᒨ") add("ᐧᐋᐸᔅᒄ") add("ᐱᔔ") add("ᐴᔒ") add("ᐸᔉᐙᐎᒧᐢᑐᐢ") add("ᐸᔦᔱᑲᓂᑭᔨᑲ") add("ᑭᒋᐊᐱᑕᐘᐣ") add("ᑭᒋᐊᓄᑭᐃᑶᑭᑲ") add("ᑭᒧᓭᐤ") add("ᑭᓀᐱᐠ") add("ᑳᐦᑳᒎ") add("ᒥᐢᑕᑎᒼ") add("ᒥᓂᔥᑎᒄ") add("ᒨᐦᑯᒫᓐ") add("ᒪᑎᓇᐅᑶᔨᑲ") add("ᒪᔉᐗ") add("ᒪᕁᐁᓰᐢ") add("ᓂᔅᒃ") add("ᓂᔭ") add("ᓃᐲᔾ") add("ᓇᑭ") add("ᓰᓰᑉ") dda("aamoo") dda("kakwa") dda("kisiskāciwani-sīpiy") dda("makusue") dda("mikisiw") dda("miskan") dda("naki") dda("peepee") dda("peepee tsoo") dda("sawan") dda("sīpiy") dda("wikowin") dda("êyihkwêw") return result end return export azvyrcfmc4rx75pg7u9ib4os49walvr মডিউল:crh-translit 828 168732 510284 2026-06-07T12:46:40Z RedminBot 9553 [[en:Module:crh-translit]] থেকে আনা হলো 510284 Scribunto text/plain local export = {} local m_str_utils = require('Module:string utilities') local gsub = m_str_utils.gsub local format = mw.ustring.format local lower = m_str_utils.lower local function upper(text) return m_str_utils.upper(gsub(text, 'i', 'İ')) end local tt = { ['б']='b', ['в']='v', ['г']='g', ['д']='d', ['ж']='j', ['з']='z', ['й']='y', ['к']='k', ['л']='l', ['м']='m', ['н']='n', ['п']='p', ['р']='r', ['с']='s', ['т']='t', ['ф']='f', ['х']='h', ['ч']='ç', ['ш']='ş', ['ц']='ts', ['щ']='şç', ['ь']='', ['ъ']='', --[[ гъ ]] --[[ къ ]] --[[ нъ ]] --[[ дж ]] ['а']='a', ['ы']='ı', ['о']='o', ['у']='u', ['э']='e', --[[ е ]] ['и']='i', --[[ ё ]] --[[ ю ]] --[[ я ]] ['ғ']='ğ', ['ҡ']='q', ['ң']='ñ', ['җ']='c', ['ө']='ö', ['ү']='ü', ['ә']='â', } local consonants = 'бвгджзйклмнпрстфхчшцщғҡңҗ' local vowels_hard = 'аыоу' local vowels_soft = 'эиөү' local consonants_digraph = {['гъ']='ғ', ['къ']='ҡ', ['нъ']='ң', ['дж']='җ'} local vowels_cv = {['е']='э', ['ё']='ө', ['ю']='ү', ['я']='ә'} local vowels_iotated = {['е']='йэ', ['я']='йа'} local vowels_iotated2hard = {['ё']='йо', ['ю']='йу'} local vowels_hard2soft = {['о']='ө', ['у']='ү'} function export.tr(text, lang, sc) text = gsub(text, '([Ё-Я][Ё-Я]+)', function(word) return '\14' .. lower(word) .. '\15' end) text = gsub(text, '([Ё-Я])', function(ch) return '\14' .. lower(ch) end) text = gsub(text, '[гкнд][ъж]', consonants_digraph) text = gsub(text, format('([%s])([еёюя])', consonants), function(c, v) return c .. vowels_cv[v] end ) text = gsub(text, '[ея]', vowels_iotated ) text = gsub(text, '[ёю]', vowels_iotated2hard ) -- к = soft, къ = hard? is this how this works? text = gsub(text, '([кг])([оу])', function(c, v) return c .. vowels_hard2soft[v] end ) text = gsub(text, '([оу])([кг])(.?)', function(v, c, following) return ((following == '' or mw.ustring.match(following, '[%A' .. consonants .. ']')) and vowels_hard2soft[v] or v) .. c .. following end ) text = gsub(text, format('([оу])([%s]?)(ь)', consonants), function(v, c, soft_sign) return vowels_hard2soft[v] .. c end ) text = gsub(text, format('([оу])([%s]*)([%s])', consonants, vowels_soft), function(v, c, v2) return vowels_hard2soft[v] .. c.. v2 end ) text = gsub(text, '.', tt) text = gsub(text, '\14(.-)\15', function(word) return upper(word) end) text = gsub(text, '\14(.)', function(ch) return upper(ch) end) return text end return export jehkonkuzydk4jq6ic19ksf6u81y0ab মডিউল:crh-translit/testcases 828 168733 510285 2026-06-07T12:46:40Z RedminBot 9553 [[en:Module:crh-translit/testcases]] থেকে আনা হলো 510285 Scribunto text/plain local tests = require("Module:UnitTests") local crh_translit = require("Module:crh-translit") function tests:check_translit(Cyrl, Latn) self:equals(Cyrl, crh_translit.tr(Cyrl, 'crh', 'Cyrl'), Latn, { show_difference = true }) end function tests:test_translit() local examples = { { "юкъунчлы хасталыкъ", "yuqunçlı hastalıq" }, { "ёлбашчылыкъ", "yolbaşçılıq" }, { "алчакъгонъюллилик", "alçaqgöñüllilik" }, -- [[s:mul:Татар ичюн]] / [[s:mul:Tatar içün]] { "Татар алын тефтиш этип джурьгенде,", "Tatar alın teftiş etip cürgende," }, { "Мен бу оксюз татарларны корьгенде,", "Men bu öksüz tatarlarnı körgende," }, { "Козьяш тёкип, джыламагъа башлайман,", "Közyaş tökip, cılamağa başlayman," }, { "Джавнынъ кучюн козьден тёбен ташлайман.", "Cavnıñ küçün közden töben taşlayman." }, { "Буюк бир кучь табаман мен озюмде,", "Büyük bir küç tabaman men özümde," }, { "Балкъ-джалкъ этип джашын джашнай козюмде,", "Balq-calq etip caşın caşnay közümde," }, { "Чал сакъаллы бир къарт келе къатыма,", "Çal saqallı bir qart kele qatıma," }, { "Мен джер тепип атланаман атыма.", "Men cer tepip atlanaman atıma." }, { "Бир арсландай баш тиклеймен тураман,", "Bir arslanday baş tikleymen turaman," }, { "Санки джавны къальбинден ураман", "Sanki cavnı qalbinden uraman" }, { "Кенъ темельни инечикмен къазаман,", "Keñ temelni ineçikmen qazaman," }, { "Емин этип шу сёзлерни язаман:", "Yemin etip şu sözlerni yazaman:" }, { "Татар ичюн джеэннемде янарман,", "Tatar içün ceennemde yanarman," }, { "Татар ичюн къызыл откъа атарман,", "Tatar içün qızıl otqa atarman," }, { "Татар ичюн кольмегимни сатарман,", "Tatar içün kölmegimni satarman," }, { "Мен Алтайнынъ бир чечеги татарман!", "Men Altaynıñ bir çeçegi tatarman!" }, { "Къол котерип татар, татар, дегенде", "Qol köterip tatar, tatar, degende" }, { "Татар къаны сынъырларгъа кельгенде", "Tatar qanı sıñırlarğa kelgende" }, { "Мен дюньягъа бир джумурдыкъ урарман,", "Men dünyağa bir cumurdıq urarman," }, { "Душманымнынъ таджын, тахтын къырарман!", "Duşmanımnıñ tacın, tahtın qırarman!" }, { "Татар ичюн дерьяларны тыярман,", "Tatar içün deryalarnı tıyarman," }, { "Бир иненинъ тешигине сыярман,", "Bir ineniñ teşigine sıyarman," }, { "Татар ичюн инджерермен, азарман,", "Tatar içün incerermen, azarman," }, { "Татар сёзюн башташыма язарман!", "Tatar sözün baştaşıma yazarman!" }, { "Татар ичюн дарагъачкъа асылсам,", "Tatar içün darağaçqa asılsam," }, { "Топракъ болып аякъларман басылсам,", "Topraq bolıp ayaqlarman basılsam," }, { "Джер астында кене де шай айтарман:", "Cer astında kene de şay aytarman:" }, { "Татарман деп, мен ахретке къайтарман!", "Tatarman dep, men ahretke qaytarman!" }, -- [[s:mul:Кечмиштеки сучларымыз]] / [[s:mul:Keçmişteki suçlarımız]] { [[Бири ачкъан китабыны "Лянет!" — дий…]], [[Biri açqan kitabını "Lânet!" — diy…]] }, { [[Элягюге, Баты хангъа, Темирге,]], [[Elâgüge, Batı hanğa, Temirge,]] }, { [[Бири язгъан тарихыны "Барбар!" — дий…]], [[Biri yazğan tarihını "Barbar!" — diy…]] }, { [[Бир вакъытлар бойнун буккен эмирге…]], [[Bir vaqıtlar boynun bükken emirge…]] }, { [["Татар халкъы, Татар ханы!" — фысылдай,]], [["Tatar halqı, Tatar hanı!" — fısılday,]] }, { [[Кяфир, мумин бутюн дюнья тиллери,]], [[Kâfir, mümin bütün dünya tilleri,]] }, { [["Татар ханы джуртумызны джакъты шай,]], [["Tatar hanı curtumıznı caqtı şay,]] }, { [[Менгюликке атеш болсун эр джери!…"]], [[Mengülikke ateş bolsun er ceri!…"]] }, { [[Факъыр татар аттан тюшкен, шашыргъан,]], [[Faqır tatar attan tüşken, şaşırğan,]] }, { [[Бетин орьте, сесин къыса, гизлене…]], [[Betin örte, sesin qısa, gizlene…]] }, { [["Дженгиз, Темир, Батыны мен бильмиймен,]], [["Cengiz, Temir, Batını men bilmiymen,]] }, { [[Мен оларны ич корьмедим…" — сеслене…]], [[Men olarnı iç körmedim…" — seslene…]] }, { [[Душманлары: "Сенсинъ!" — дийлер, къыйнайлар. —]], [[Duşmanları: "Sensiñ!" — diyler, qıynaylar. —]] }, { [["Муна ресминъ тарихлерде корюне.]], [["Muna resmiñ tarihlerde körüne.]] }, { [[Сенсинъ Дженгиз аркъасындан джувургъан,]], [[Sensiñ Cengiz arqasından cuvurğan,]] }, { [[Бетинъ сары, пантик мурнынъ кичкене!"]], [[Betiñ sarı, pantik murnıñ kiçkene!"]] }, { [["Мен тюгюльмен!" — дий факъыр, ай зарлана. —]], [["Men tügülmen!" — diy faqır, ay zarlana. —]] }, { [["Дженгиз, Баты джынсымда ич болмады!]], [["Cengiz, Batı cınsımda iç bolmadı!]] }, { [[Бабам, анам бир шерифе, бир сейид,]], [[Babam, anam bir şerife, bir seyid,]] }, { [[Якъынларым я бир молла, я къады…"]], [[Yaqınlarım ya bir molla, ya qadı…"]] }, { [[Ташланъыз о факъыр халкъны, сучу джокъ,]], [[Taşlañız o faqır halqnı, suçu coq,]] }, { [[Сучу болса, джашавында одийджек,]], [[Suçu bolsa, caşavında ödiycek,]] }, { [[Менмен Дженгиз, Темир ханнынъ торуны,]], [[Menmen Cengiz, Temir hannıñ torunı,]] }, { [[Менмен онынъ джолун дайм кутийджек…]], [[Menmen onıñ colun daym kütiycek…]] }, { [[Юкленемен бар сучларын оларнынъ,]], [[Yüklenemen bar suçların olarnıñ,]] }, { [[Бизлер джакътыкъ Багъдадынъны, Басранъны,]], [[Bizler caqtıq Bağdadıñnı, Basrañnı,]] }, { [[Бизлер джыкътыкъ сарайларын Романынъ,]], [[Bizler cıqtıq sarayların Romanıñ,]] }, { [[Бизлер сойдыкъ акъ сюегинъ, къаранъны!…]], [[Bizler soydıq aq süyegiñ, qarañnı!…]] }, { [[Кель, бир сор! Берийим эп эсабын,]], [[Kel, bir sor! Beriyim ep esabın,]] }, { [[Далмачьянынъ, Маджарлыкънынъ, Къазакънынъ,]], [[Dalmaçyanıñ, Macarlıqnıñ, Qazaqnıñ,]] }, { [[Индиянынъ, Акъ денъизнинъ, Азакънынъ,]], [[İndiyanıñ, Aq deñizniñ, Azaqnıñ,]] }, { [[Кель, бир сор! Барбарлыкънынъ эсбабын!…]], [[Kel, bir sor! Barbarlıqnıñ esbabın!…]] }, { [[Къылычым джокъ, атларым джокъ, джаявман…]], [[Qılıçım coq, atlarım coq, cayavman…]] }, { [[Джурегимде джангъан атеш дурулды…]], [[Cüregimde canğan ateş duruldı…]] }, { [[Мойнум бахтнынъ къолларында бурулды,]], [[Moynum bahtnıñ qollarında buruldı,]] }, { [[Бугунь олюм джолларында бир савман!…]], [[Bugün ölüm collarında bir savman!…]] }, { [[Эй, Явропа, эй, улема, билинъиз!]], [[Ey, Yavropa, ey, ülema, biliñiz!]] }, { [[Китапларынъ ялан айтса дайм шай,]], [[Kitaplarıñ yalan aytsa daym şay,]] }, { [[Дайм къурсанъ козьяшынъдан кок сарай…]], [[Daym qursañ közyaşıñdan kök saray…]] }, { [[Силькинирмен, болурман тез бир Дженгиз!…]], [[Silkinirmen, bolurman tez bir Cengiz!…]] }, { [[Китапларынъ Диджлелерге атарман!]], [[Kitaplarıñ Diclelerge atarman!]] }, { [[Сарайларынъ ермен ексан эткен сонъ,]], [[Saraylarıñ yermen yeksan etken soñ,]] }, { [[Баланъ, чагъанъ откъа къурбан кеткен сонъ,]], [[Balañ, çağañ otqa qurban ketken soñ,]] }, { [[Кене кетер, мезарсыз шай джатарман!]], [[Kene keter, mezarsız şay catarman!]] }, { [[Эзилийим, юкленийим сучларын!]], [[Eziliyim, yükleniyim suçların!]] }, { [[Буюк ханнынъ, буюк халкънынъ мирасын,]], [[Büyük hannıñ, büyük halqnıñ mirasın,]] }, { [[Юкленийим бабаларым гунасын,]], [[Yükleniyim babalarım günasın,]] }, { [[Шай джурийим шу дюньянынъ уджларын!…]], [[Şay cüriyim şu dünyanıñ ucların!…]] }, -- https://ctrcenter.org/en/activities/114-crimean-tatar-translation-of-the-universal-declaration-of-human-rights -- https://ctrcenter.org/en/analytics/167-insan-aklarynyn-umumij-beyannamesi-2 -- https://ctrcenter.org/en/analytics/166-insan-aqlarinin-umumiy-beyannamesi-2 { "Бутюн инсанлар сербестлик, менлик ве укъукъларда мусавий олып дюньягъа келелер.", "Bütün insanlar serbestlik, menlik ve uquqlarda musaviy olıp dünyağa keleler." }, { "Олар акъыл ве видждан саибидирлер ве бири-бирилеринен къардашчасына мунасебетте булунмалыдырлар", "Olar aqıl ve vicdan saibidirler ve biri-birilerinen qardaşçasına munasebette bulunmalıdırlar" }, { "ИНСАН АКЪЛАРЫНЫНЪ УМУМИЙ БЕЯННАМЕСИ", "İNSAN AQLARINIÑ UMUMİY BEYANNAMESİ" }, -- [[Category:Crimean Tatar terms in Cyrillic script]] { "-нынъ", "-nıñ" }, { "авдет", "avdet" }, { "агъа", "ağa" }, { "азман", "azman" }, { "багъча", "bağça" }, { "балалайка", "balalayka" }, { "балкъурт", "balqurt" }, { "бедбахт", "bedbaht" }, { "бетер", "betér" }, { "бита", "bita" }, { "бут", "but" }, { "буюк", "büyük" }, { "дагъ", "dağ" }, { "деребей", "derebey" }, { "дёрт", "dört" }, { "дженк", "cenk" }, { "джумхуриет", "cumhuriyet" }, { "дюнья", "dün’ya" }, { "клиника", "klinika" }, { "кунь", "kün" }, { "курд", "kurd" }, { "къабилиет", "qabiliyet" }, { "къабилиети", "qabiliyeti" }, { "къаве", "qave" }, { "къайнамакъ", "qaynamaq" }, { "къайтув", "qaytuv" }, { "Къаракъалпакъистан", "Qaraqalpaqistan" }, { "Къатар", "Qatar" }, { "къуда", "quda" }, { "къыз", "qız" }, { "Къырым", "Qırım" }, { "леб", "leb" }, { "ликен", "liken" }, { "озь", "öz" }, { "Озьбек", "Özbek" }, { "пармакъ", "parmaq" }, { "раат", "raat" }, { "рахмет", "rahmet" }, { "реван", "revan" }, { "реис", "reis" }, { "сагъ олунъыз", "sağ oluñız" }, { "согъан", "soğan" }, { "софра", "sofra" }, { "сырыкъ", "sırıq" }, { "телюке", "telüke" }, { "терджиман", "terciman" }, { "тизе", "tize" }, { "топография", "topografiya" }, { "харита", "harita" }, { "чокъ", "çoq" }, { "шына", "şına" }, { "эв", "ev" }, { "эки", "eki" }, { "экинджи", "ekinci" }, { "Экинджи Джиан дженки", "Ekinci Cian cenki" }, { "янтыкъ", "yantıq" }, -- [[Special:WhatLinksHere/Template:crh-variant]] { "абайламакъ", "abaylamaq" }, { "абразив", "abraziv" }, { "авале этмек", "avale etmek" }, { "авдет", "avdet" }, { "агъа", "ağa" }, { "адаш", "adaş" }, { "аджеле", "acele" }, { "адлы", "adlı" }, { "адрес", "adres" }, { "азап", "azap" }, { "азат этмек", "azat etmek" }, { "азат", "azat" }, { "азатлыкъ", "azatlıq" }, { "азерий", "azeriy" }, { "азмакъ", "azmaq" }, { "азырламакъ", "azırlamaq" }, { "азырлыкъ", "azırlıq" }, { "айван", "ayvan" }, { "айгъыр", "ayğır" }, { "айдайыджы", "aydayıcı" }, { "айдамакъ", "aydamaq" }, { "айдын", "aydın" }, { "айдынлыкъ", "aydınlıq" }, { "айланмакъ", "aylanmaq" }, { "айлыкъ", "aylıq" }, { "айнылыкъ", "aynılıq" }, { "айтылмакъ", "aytılmaq" }, { "акъ", "aq" }, { "акъай", "aqay" }, { "акъмакъ", "aqmaq" }, { "акъраба", "aqraba" }, { "акъчил", "aqçil" }, { "акъшам", "aqşam" }, { "алгъыш", "alğış" }, { "алма тереги", "alma teregi" }, { "алмакъ", "almaq" }, { "алтмышынджы", "altmışıncı" }, { "алты", "altı" }, { "алышыкъ", "alışıq" }, { "анъламакъ", "añlamaq" }, { "анълы", "añlı" }, { "апансыздан", "apansızdan" }, { "аппликация", "applikatsiya" }, { "арамакъ", "aramaq" }, { "арамзаде", "aramzade" }, { "арамтамакълыкъ", "aramtamaqlıq" }, { "арматура", "armatura" }, { "арсыз", "arsız" }, { "арсызлыкъ", "arsızlıq" }, { "арттырмакъ", "arttırmaq" }, { "арфесинде", "arfesinde" }, { "архив", "arhiv" }, { "асабий", "asabiy" }, { "аскер", "asker" }, { "афта", "afta" }, { "афу этмек", "afu etmek" }, { "афу", "afu" }, { "ачлыкъ", "açlıq" }, { "ачувланмакъ", "açuvlanmaq" }, { "ашамакъ", "aşamaq" }, { "ашыкъмадан", "aşıqmadan" }, { "ашыкъмакъ", "aşıqmaq" }, { "аэнк", "aenk" }, { "баарь", "baar" }, { "багълы", "bağlı" }, { "багъырмакъ", "bağırmaq" }, { "базар", "bazar" }, { "базиргян", "bazirgân" }, { "бакъыр", "baqır" }, { "бакъыш", "baqış" }, { "балачыкъ", "balaçıq" }, { "балкъылдамакъ", "balqıldamaq" }, { "бардакъ", "bardaq" }, { "барлыкъ", "barlıq" }, { "бахытсызлыкъ", "bahıtsızlıq" }, { "башламакъ", "başlamaq" }, { "башта", "başta" }, { "беджермек", "becermek" }, { "беклев", "beklev" }, { "бельгилемек", "belgilemek" }, { "бельки", "belki" }, { "беш", "beş" }, { "беяз", "beyaz" }, { "бильмек", "bilmek" }, { "биология", "biologiya" }, { "биринджи", "birinci" }, { "бирлик", "birlik" }, { "бита", "bita" }, { "богъулмакъ", "boğulmaq" }, { "борджлу", "borclu" }, { "бошатмакъ", "boşatmaq" }, { "бувланув", "buvlanuv" }, { "бургъуч", "burğuç" }, { "бургъучланмакъ", "burğuçlanmaq" }, { "бусанмакъ", "busanmaq" }, { "бюллюр", "büllür" }, { "бюрюшик", "bürüşik" }, { "бёльмек", "bölmek" }, { "вазелин", "vazelin" }, { "вазифе", "vazife" }, { "ватан", "vatan" }, { "ватанперверлик", "vatanperverlik" }, { "везир", "vezir" }, { "вефат этмек", "vefat etmek" }, { "виляет", "vilâyet" }, { "вызлы", "vızlı" }, { "гизлемек", "gizlemek" }, { "гъайып олмакъ", "ğayıp olmaq" }, { "гъайып", "ğayıp" }, { "гюрюльдемек", "gürüldemek" }, { "дагъ", "dağ" }, { "дагъытмакъ", "dağıtmaq" }, { "даимий", "daimiy" }, { "дамлы", "damlı" }, { "данышман", "danışman" }, { "даркъалмакъ", "darqalmaq" }, { "девам этмек", "devam etmek" }, { "декабрь", "dekabr" }, { "демек", "demek" }, { "денъишмек", "deñişmek" }, { "депутат", "deputat" }, { "дерман", "derman" }, { "дерслик", "derslik" }, { "джаиллик", "caillik" }, { "джами", "cami" }, { "джанавар", "canavar" }, { "джанлы", "canlı" }, { "джевапланмакъ", "cevaplanmaq" }, { "джезаламакъ", "cezalamaq" }, { "джекирмек", "cekirmek" }, { "джемаат", "cemaat" }, { "джермай", "cermay" }, { "джесарет", "cesaret" }, { "джесаретсиз", "cesaretsiz" }, { "джибимек", "cibimek" }, { "джиддий", "ciddiy" }, { "джогърафик", "coğrafik" }, { "джогърафия", "coğrafiya" }, { "джойтмакъ", "coytmaq" }, { "джувурмакъ", "cuvurmaq" }, { "джыймакъ", "cıymaq" }, { "джыйнамакъ", "cıynamaq" }, { "джыйынтыкъ", "cıyıntıq" }, { "джыламакъ", "cılamaq" }, { "джюмертлик", "cümertlik" }, { "динълемек", "diñlemek" }, { "догърамакъ", "doğramaq" }, { "догъурмакъ", "doğurmaq" }, { "докъсан", "doqsan" }, { "докъуз", "doquz" }, { "доландырыджы", "dolandırıcı" }, { "дуйгъу", "duyğu" }, { "дуракъ", "duraq" }, { "душман", "duşman" }, { "дюдюк", "düdük" }, { "дюмен", "dümen" }, { "дёрт", "dört" }, { "ебедий", "ebediy" }, { "еджел", "ecel" }, { "еди", "yedi" }, { "ееджан", "eyecan" }, { "езберлемек", "ezberlemek" }, { "езмек", "ezmek" }, { "ейи", "eyi" }, { "екен", "eken" }, { "еким", "ekim" }, { "екмек", "ekmek" }, { "екшимек", "ekşimek" }, { "екяне", "yekâne" }, { "елесленмек", "eleslenmek" }, { "еманет", "emanet" }, { "емиет", "emiyet" }, { "енгил", "yengil" }, { "ербап", "erbap" }, { "ерик", "erik" }, { "еришмек", "erişmek" }, { "ериштирмек", "eriştirmek" }, { "еркек", "erkek" }, { "еркелемек", "erkelemek" }, { "ерли", "yerli" }, { "есап", "esap" }, { "ефсане", "efsane" }, { "еффект", "effekt" }, { "ечки", "eçki" }, { "ешитмек", "eşitmek" }, { "зеэрли", "zeerli" }, { "зиярет", "ziyaret" }, { "зоопарк", "zoopark" }, { "ибаре", "ibare" }, { "иклимий", "iklimiy" }, { "иллюминация", "illüminatsiya" }, { "ильтифат", "iltifat" }, { "ильхам", "ilham" }, { "имля", "imlâ" }, { "инандырмакъ", "inandırmaq" }, { "инанмакъ", "inanmaq" }, { "инглиз", "ingliz" }, { "индемемек", "indememek" }, { "иншалла", "inşalla" }, { "иримек", "irimek" }, { "иришмек", "irişmek" }, { "ис этмек", "is etmek" }, { "исинмек", "isinmek" }, { "иситмек", "isitmek" }, { "иссилик", "issilik" }, { "истемек", "istemek" }, { "итираз", "itiraz" }, { "ишарет", "işaret" }, { "июл", "iyül" }, { "июнь", "iyün" }, { "йибермек", "yibermek" }, { "йыкъмакъ", "yıqmaq" }, { "йылдыз", "yıldız" }, { "йылдырым", "yıldırım" }, { "йылтырамакъ", "yıltıramaq" }, { "йылышмакъ", "yılışmaq" }, { "капитулирлемек", "kapitulirlemek" }, { "католик", "katolik" }, { "кедерленмек", "kederlenmek" }, { "кедерли", "kederli" }, { "кезинмек", "kezinmek" }, { "келишмек", "kelişmek" }, { "кельмек", "kelmek" }, { "кемалатланмакъ", "kemalatlanmaq" }, { "кенар", "kenar" }, { "керексиз", "kereksiz" }, { "кермек", "kermek" }, { "кесильмек", "kesilmek" }, { "кешиш", "keşiş" }, { "киймек", "kiymek" }, { "килит", "kilit" }, { "килитлемек", "kilitlemek" }, { "кирли", "kirli" }, { "киртлемек", "kirtlemek" }, { "китапчыкъ", "kitapçıq" }, { "кольмек", "kölmek" }, { "комиссарлыкъ", "komissarlıq" }, { "комментирлемек", "kommentirlemek" }, { "комфорт", "komfort" }, { "конструирлемек", "konstruirlemek" }, { "консультирлемек", "konsultirlemek" }, { "къабаатлы", "qabaatlı" }, { "къабилиет", "qabiliyet" }, { "къаве", "qave" }, { "къавехане", "qavehane" }, { "къаерде", "qayerde" }, { "къаз", "qaz" }, { "къазанмакъ", "qazanmaq" }, { "къаймакъ", "qaymaq" }, { "къайнатмакъ", "qaynatmaq" }, { "къайрамакъ", "qayramaq" }, { "къайтармакъ", "qaytarmaq" }, { "къайтмакъ", "qaytmaq" }, { "къайырмакъ", "qayırmaq" }, { "къалмакъ", "qalmaq" }, { "къалп", "qalp" }, { "къамбыраймакъ", "qambıraymaq" }, { "къамус", "qamus" }, { "къандырмакъ", "qandırmaq" }, { "къапатмакъ", "qapatmaq" }, { "къапынмакъ", "qapınmaq" }, { "къара", "qara" }, { "къаралты", "qaraltı" }, { "къарармакъ", "qararmaq" }, { "къаргъамакъ", "qarğamaq" }, { "къартаймакъ", "qartaymaq" }, { "къаршыламакъ", "qarşılamaq" }, { "къарылгъач", "qarılğaç" }, { "къасаба", "qasaba" }, { "къасвет", "qasvet" }, { "къатнамакъ", "qatnamaq" }, { "къафес", "qafes" }, { "къачмакъ", "qaçmaq" }, { "къозгъамакъ", "qozğamaq" }, { "къолтукъ", "qoltuq" }, { "къопаймакъ", "qopaymaq" }, { "къоркъмакъ", "qorqmaq" }, { "къоркъузмакъ", "qorquzmaq" }, { "къошмакъ", "qoşmaq" }, { "къою", "qoyu" }, { "къуванмакъ", "quvanmaq" }, { "къувуш", "quvuş" }, { "къуда", "quda" }, { "къуйручыкъ", "quyruçıq" }, { "къулунламакъ", "qulunlamaq" }, { "къурмакъ", "qurmaq" }, { "къуртармакъ", "qurtarmaq" }, { "къуртарув", "qurtaruv" }, { "къуруджы", "qurucı" }, { "къучакъламакъ", "quçaqlamaq" }, { "къыдырмакъ", "qıdırmaq" }, { "къыз", "qız" }, { "къызчыкъ", "qızçıq" }, { "къыйметли", "qıymetli" }, { "къыйнамакъ", "qıynamaq" }, { "къыйын", "qıyın" }, { "къылынмакъ", "qılınmaq" }, { "къысмет", "qısmet" }, { "къыш", "qış" }, { "кюз", "küz" }, { "кюзгю", "küzgü" }, { "кюльмек", "külmek" }, { "кюреш", "küreş" }, { "кюрречик", "kürreçik" }, { "кёкюс", "köküs" }, { "кёпюк", "köpük" }, { "кёрмек", "körmek" }, { "кёрсетмек", "körsetmek" }, { "кёстермек", "köstermek" }, { "кётеклемек", "köteklemek" }, { "кётермек", "kötermek" }, { "лакъырды этмек", "laqırdı etmek" }, { "лаф этмек", "laf etmek" }, { "лютф", "lütf" }, { "лятифе", "lâtife" }, { "макъсад", "maqsad" }, { "макътамакъ", "maqtamaq" }, { "меджбур этмек", "mecbur etmek" }, { "мезар", "mezar" }, { "мерам", "meram" }, { "меселя", "meselâ" }, { "мешур", "meşur" }, { "минмек", "minmek" }, { "миннетдарлыкъ", "minnetdarlıq" }, { "морармакъ", "morarmaq" }, { "морфология", "morfologiya" }, { "мотор", "motor" }, { "муавин", "muavin" }, { "мугъаймакъ", "muğaymaq" }, { "музакере этмек", "muzakere etmek" }, { "мукъаддес", "muqaddes" }, { "мукъайтлыкънен", "muqaytlıqnen" }, { "мум", "mum" }, { "мунасебет", "munasebet" }, { "мунафыкъ", "munafıq" }, { "мураджаат этмек", "muracaat etmek" }, { "мустакъил", "mustaqil" }, { "мыйыкълы", "mıyıqlı" }, { "мыскъылламакъ", "mısqıllamaq" }, { "мытлакъ", "mıtlaq" }, { "мюим", "müim" }, { "мюкеммеллештирмек", "mükemmelleştirmek" }, { "мюстемлеке", "müstemleke" }, { "мюэллиф", "müellif" }, { "назарие", "nazariye" }, { "назикликнен", "nazikliknen" }, { "наразы", "narazı" }, { "наркоман", "narkoman" }, { "наркотик", "narkotik" }, { "нашир", "naşir" }, { "ниает", "niayet" }, { "нишанламакъ", "nişanlamaq" }, { "ноябрь", "noyabr" }, { "огърашмакъ", "oğraşmaq" }, { "оджалыкъ этмек", "ocalıq etmek" }, { "озгъармакъ", "ozğarmaq" }, { "ойламакъ", "oylamaq" }, { "океан", "okean" }, { "окъаламакъ", "oqalamaq" }, { "олмакъ", "olmaq" }, { "омуз", "omuz" }, { "опламакъ", "oplamaq" }, { "орамакъ", "oramaq" }, { "органик", "organik" }, { "орта", "orta" }, { "орун", "orun" }, { "отламакъ", "otlamaq" }, { "отурмакъ", "oturmaq" }, { "офис", "ofis" }, { "паалы", "paalı" }, { "падиша", "padişa" }, { "пайтахт", "paytaht" }, { "пакетлемек", "paketlemek" }, { "партизан", "partizan" }, { "парчаланмакъ", "parçalanmaq" }, { "патлав", "patlav" }, { "пекитмек", "pekitmek" }, { "пиширмек", "pişirmek" }, { "планлаштырмакъ", "planlaştırmaq" }, { "платформа", "platforma" }, { "принтер", "printer" }, { "психология", "psihologiya" }, { "пытамакъ", "pıtamaq" }, { "раат", "raat" }, { "раатсызламакъ", "raatsızlamaq" }, { "раатсызланмакъ", "raatsızlanmaq" }, { "раатсызлыкъ", "raatsızlıq" }, { "рагъбетлемек", "rağbetlemek" }, { "радиоактивлилик", "radioaktivlilik" }, { "радиола", "radiola" }, { "радиология", "radiologiya" }, { "радиоспорт", "radiosport" }, { "радиостанция", "radiostantsiya" }, { "радиотехника", "radiotehnika" }, { "радиус", "radius" }, { "радон", "radon" }, { "ракъам", "raqam" }, { "рафинирлемек", "rafinirlemek" }, { "регион", "region" }, { "регулирлемек", "regulirlemek" }, { "реклама", "reklama" }, { "рефикъа", "refiqa" }, { "риджа этмек", "rica etmek" }, { "риджа", "rica" }, { "рус", "rus" }, { "сабыр этмек", "sabır etmek" }, { "сабырсызлыкъ", "sabırsızlıq" }, { "сагъынмакъ", "sağınmaq" }, { "сакъламакъ", "saqlamaq" }, { "сакът олмакъ", "saqt olmaq" }, { "салмакъ", "salmaq" }, { "салмакълы", "salmaqlı" }, { "самолёт", "samolöt" }, { "сандыракъламакъ", "sandıraqlamaq" }, { "сарф этмек", "sarf etmek" }, { "сасымакъ", "sasımaq" }, { "сатмакъ", "satmaq" }, { "сачлы", "saçlı" }, { "севги", "sevgi" }, { "севимли", "sevimli" }, { "севиндирмек", "sevindirmek" }, { "севмек", "sevmek" }, { "сезмек", "sezmek" }, { "секиз", "sekiz" }, { "секирмек", "sekirmek" }, { "сексен", "seksen" }, { "селямламакъ", "selâmlamaq" }, { "селямлашмакъ", "selâmlaşmaq" }, { "сене", "sene" }, { "сентябрь", "sentâbr" }, { "сигар", "sigar" }, { "сигнал", "signal" }, { "сиймек", "siymek" }, { "синъмек", "siñmek" }, { "согъан", "soğan" }, { "созмакъ", "sozmaq" }, { "соймакъ", "soymaq" }, { "сонъра", "soñra" }, { "сормакъ", "sormaq" }, { "суаль", "sual" }, { "субетлешмек", "subetleşmek" }, { "сувармакъ", "suvarmaq" }, { "сувурмакъ", "suvurmaq" }, { "сусмакъ", "susmaq" }, { "сыджакъ", "sıcaq" }, { "сыджакълыкъ", "sıcaqlıq" }, { "сыдырмакъ", "sıdırmaq" }, { "сызгъырмакъ", "sızğırmaq" }, { "сыйламакъ", "sıylamaq" }, { "сыйпамакъ", "sıypamaq" }, { "сымарламакъ", "sımarlamaq" }, { "сынамакъ", "sınamaq" }, { "сынгъан", "sınğan" }, { "сындырмакъ", "sındırmaq" }, { "сынмакъ", "sınmaq" }, { "сыныфдаш", "sınıfdaş" }, { "сытмакъ", "sıtmaq" }, { "сюймек", "süymek" }, { "сюйремек", "süyremek" }, { "сюргюн", "sürgün" }, { "сюргюнлик", "sürgünlik" }, { "сютлю", "sütlü" }, { "сёгюнмек", "sögünmek" }, { "тааджипленмек", "taaciplenmek" }, { "таймакъ", "taymaq" }, { "таламакъ", "talamaq" }, { "талебе", "talebe" }, { "тамгъа", "tamğa" }, { "тамирлемек", "tamirlemek" }, { "тамшанмакъ", "tamşanmaq" }, { "тамызмакъ", "tamızmaq" }, { "танылгъан", "tanılğan" }, { "тапмакъ", "tapmaq" }, { "таптамакъ", "taptamaq" }, { "тарифлемек", "tariflemek" }, { "тарих", "tarih" }, { "тарихий", "tarihiy" }, { "таркъалмакъ", "tarqalmaq" }, { "тарла", "tarla" }, { "тартынмакъ", "tartınmaq" }, { "тасавур этмек", "tasavur etmek" }, { "тасдыкъламакъ", "tasdıqlamaq" }, { "тасырдамакъ", "tasırdamaq" }, { "тахлие", "tahliye" }, { "ташламакъ", "taşlamaq" }, { "таякъ", "tayaq" }, { "тегенек", "tegenek" }, { "тедавийлеме", "tedaviyleme" }, { "тедавийлемек", "tedaviylemek" }, { "тездже", "tezce" }, { "теклиф этмек", "teklif etmek" }, { "теляшлы", "telâşlı" }, { "темсильджилик", "temsilcilik" }, { "тенкъитчи", "tenqitçi" }, { "тепмек", "tepmek" }, { "тепси", "tepsi" }, { "терджиман", "terciman" }, { "терджиме", "tercime" }, { "терлемек", "terlemek" }, { "тесир", "tesir" }, { "технология", "tehnologiya" }, { "тешеккюр бильдирмек", "teşekkür bildirmek" }, { "тешеккюр этмек", "teşekkür etmek" }, { "тешкермек", "teşkermek" }, { "тешмек", "teşmek" }, { "теэссурат", "teessurat" }, { "тиймек", "tiymek" }, { "тикен", "tiken" }, { "тобукъ", "tobuq" }, { "тойдурмакъ", "toydurmaq" }, { "тоймакъ", "toymaq" }, { "токъумаджылыкъ", "toqumacılıq" }, { "толушмакъ", "toluşmaq" }, { "тонъмакъ", "toñmaq" }, { "топалламакъ", "topallamaq" }, { "тот", "tot" }, { "тотланмакъ", "totlanmaq" }, { "трен", "tren" }, { "троллейбус", "trolleybus" }, { "тувар", "tuvar" }, { "туман", "tuman" }, { "турмакъ", "turmaq" }, { "тутандырмакъ", "tutandırmaq" }, { "тыкъмакъ", "tıqmaq" }, { "тылсым", "tılsım" }, { "тылсымджы", "tılsımcı" }, { "тынчланмакъ", "tınçlanmaq" }, { "тырмашмакъ", "tırmaşmaq" }, { "тырышмакъ", "tırışmaq" }, { "тюзетмек", "tüzetmek" }, { "тюйревич", "tüyreviç" }, { "тютюн", "tütün" }, { "тюшмек", "tüşmek" }, { "тюшюнмек", "tüşünmek" }, { "тююр", "tüyür" }, { "тёбен", "töben" }, { "тёлемек", "tölemek" }, { "узатмакъ", "uzatmaq" }, { "умумен", "umumen" }, { "унутмакъ", "unutmaq" }, { "урмакъ", "urmaq" }, { "урулмакъ", "urulmaq" }, { "утанмакъ", "utanmaq" }, { "утанчакъ", "utançaq" }, { "уфатмакъ", "ufatmaq" }, { "учкъунар", "uçqunar" }, { "учуджы", "uçucı" }, { "учь", "üç" }, { "уялмакъ", "uyalmaq" }, { "уянмакъ", "uyanmaq" }, { "уятмакъ", "uyatmaq" }, { "факъат", "faqat" }, { "фашист", "faşist" }, { "фельсефеджи", "felsefeci" }, { "фикирдеш", "fikirdeş" }, { "фильтрлемек", "filtrlemek" }, { "фиркъа", "firqa" }, { "формулирлемек", "formulirlemek" }, { "фукъаре", "fuqare" }, { "хамыр", "hamır" }, { "харабе", "harabe" }, { "хаста", "hasta" }, { "хасталыкъ", "hastalıq" }, { "хатире", "hatire" }, { "хатырламакъ", "hatırlamaq" }, { "химия", "himiya" }, { "хызметчи", "hızmetçi" }, { "хырпаламакъ", "hırpalamaq" }, { "хырсызламакъ", "hırsızlamaq" }, { "чагъырмакъ", "çağırmaq" }, { "чайкъамакъ", "çayqamaq" }, { "чайнамакъ", "çaynamaq" }, { "чалгъы", "çalğı" }, { "чалышмакъ", "çalışmaq" }, { "чапкъаламакъ", "çapqalamaq" }, { "чарпмакъ", "çarpmaq" }, { "чатлакъ-патлакъ", "çatlaq-patlaq" }, { "чекинмек", "çekinmek" }, { "чекмек", "çekmek" }, { "чельтемек", "çeltemek" }, { "чиль-парча", "çil-parça" }, { "чыбырмакъ", "çıbırmaq" }, { "чыкъмакъ", "çıqmaq" }, { "шакъалашмакъ", "şaqalaşmaq" }, { "шаматасыз", "şamatasız" }, { "шан-шурет", "şan-şüret" }, { "шараит", "şarait" }, { "шенъленмек", "şeñlenmek" }, { "шифа", "şifa" }, { "шифалы", "şifalı" }, { "шувулдамакъ", "şuvuldamaq" }, { "шына", "şına" }, { "шытырдамакъ", "şıtırdamaq" }, { "шюкюр этмек", "şükür etmek" }, { "эки", "eki" }, { "экинджи", "ekinci" }, { "экология", "ekologiya" }, { "эмен", "emen" }, { "эртен", "erten" }, { "ювмакъ", "yuvmaq" }, { "юзюкъоюн", "yüzüqoyun" }, { "юйкен", "üyken" }, { "юймек", "üymek" }, { "юкъламакъ", "yuqlamaq" }, { "юкъмакъ", "yuqmaq" }, { "юмют этмек", "ümüt etmek" }, { "юмютсиз", "ümütsiz" }, { "юмютсизлик", "ümütsizlik" }, { "юрмек", "yürmek" }, { "юстюнде", "üstünde" }, { "ютмакъ", "yutmaq" }, { "явуз", "yavuz" }, { "ягъмакъ", "yağmaq" }, { "яз", "yaz" }, { "якъарлыкъ", "yaqarlıq" }, { "якъын", "yaqın" }, { "ялвармакъ", "yalvarmaq" }, { "ялдамакъ", "yaldamaq" }, { "ялпакъ", "yalpaq" }, { "ямав", "yamav" }, { "яман", "yaman" }, { "яманламакъ", "yamanlamaq" }, { "янтаймакъ", "yantaymaq" }, { "япышмакъ", "yapışmaq" }, { "яраламакъ", "yaralamaq" }, { "яраланмакъ", "yaralanmaq" }, { "яратыджы", "yaratıcı" }, { "яратылмакъ", "yaratılmaq" }, { "яраштырмакъ", "yaraştırmaq" }, { "ярдым этмек", "yardım etmek" }, { "ярдымджы", "yardımcı" }, { "ярымада", "yarımada" }, { "ястыкъ", "yastıq" }, { "ятакъ", "yataq" }, { "яткъызмакъ", "yatqızmaq" }, { "яшамакъ", "yaşamaq" }, { "ёгренмек", "ögrenmek" }, { "ёдемек", "ödemek" }, { "ёзгюнлик", "özgünlik" }, { "ёксюрмек", "öksürmek" }, { "ёкъ этмек", "yoq etmek" }, { "ёкъ", "yoq" }, { "ёлджу", "yolcu" }, { "ёлламакъ", "yollamaq" }, { "ёльчемек", "ölçemek" }, { "ёпмек", "öpmek" }, { "ёпюш", "öpüş" }, { "ёркечли", "örkeçli" }, { "ёсмек", "ösmek" }, -- https://github.com/wikimedia/mediawiki/blob/master/includes/Language/Converters/CrhConverter.php -- https://github.com/wikimedia/mediawiki/blob/master/includes/Languages/Data/CrhExceptions.php } self:iterate(examples, "check_translit") end return tests l20h1f6b1dphv0jpkccfzduzrges5oi মডিউল:cv-translit/testcases 828 168734 510286 2026-06-07T12:46:41Z RedminBot 9553 [[en:Module:cv-translit/testcases]] থেকে আনা হলো 510286 Scribunto text/plain return require("Module:transliteration module testcases") { module = "cv-translit", examples = { { "вӑхӑтӑхӑт", "văh̬ăt̬ăh̬ăt" }, { "вӑхӑт-ӑхӑ", "văh̬ăt̬-ăh̬ă" }, { "вӑхӑ-тӑхӑ", "văh̬ă-t̬ăh̬ă" }, { "вӑхӑ тӑхӑ", "văh̬ă t̬ăh̬ă" }, { "вӑхӑт ӑхӑ", "văh̬ăt̬ ăh̬ă" }, { "вӑхӑт'ӑхӑ", "văh̬ăt̬'ăh̬ă" }, { "вӑхӑ'тӑхӑ", "văh̬ă't̬ăh̬ă" }, }, sc = "Cyrl", lang = "cv", } j1ee3t5n4tsdkbbelkyetldq676yops মডিউল:ddo-translit/testcases 828 168735 510287 2026-06-07T12:46:41Z RedminBot 9553 [[en:Module:ddo-translit/testcases]] থেকে আনা হলো 510287 Scribunto text/plain return require("Module:transliteration module testcases") { module = "ddo-translit", examples = { { "лъи", "λi" }, }, sc = "Cyrl", lang = "ddo", } cp3d74i6xdblt3ii0ary74vbtjz30zu মডিউল:dv-translit/testcases 828 168736 510288 2026-06-07T12:46:42Z RedminBot 9553 [[en:Module:dv-translit/testcases]] থেকে আনা হলো 510288 Scribunto text/plain -- Unit tests for [[Module:dv-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local dv_translit = require('Module:dv-translit') function tests:check_translit(Thaa, roman) self:equals('<span class="Thaa" lang="dv">[[' .. Thaa .. '#Dhivehi|' .. Thaa .. ']]</span>', dv_translit.tr(Thaa, 'dv', 'Thaa'), roman) end function tests:test_translit_dhivehi() self:iterate( { { 'ކަރުދާސް', 'karudās' }, { 'އޮމާމަސް', 'omāmas' }, { 'ފޮތް', 'fot̊' }, { 'ގައްޤެ', 'gaqqe' }, { 'ރަށް', 'raṣ̊' }, { 'ނަން', 'nam̊' }, { 'ފަން', 'fan̊' }, { 'ރުއް', 'ruk̊' }, { 'އަނބި', 'aᵐbi' }, { 'ޅޮނގު', 'ḷoⁿgu' }, { 'ހަނޑު', 'haⁿḍu' }, { 'ހަނދު', 'haⁿdu' }, { 'ފިއްޔެއް', 'fiyyek̊' }, { 'އަތްނބެއް', 'at̊ᵐbek̊' }, { 'ލޯބި', 'lōbi' }, { 'ލޯތްބެއް', 'lōt̊bek̊' }, { 'ކަށި', 'kaṣi' }, { 'ކައްޓެއް', 'kaṭṭek̊' }, { 'ހިނދުރި', 'hiⁿduri' }, { 'ވައްދަ', 'vadda' } }, "check_translit" ) end return tests r9rlaxgm1wcx7zrdp43jooxvv58ewec মডিউল:el-translit/testcases 828 168737 510289 2026-06-07T12:46:43Z RedminBot 9553 [[en:Module:el-translit/testcases]] থেকে আনা হলো 510289 Scribunto text/plain return require "Module:transliteration module testcases"( require "Module:el-translit".tr, { { "Ποσειδώνας", "Poseidónas" }, { "αγιοποιούμαι", "agiopoioúmai" }, { "αγγελιάζομαι", "angeliázomai" }, { "άμπελος", "ámpelos" }, "ypsilon", { "αυτός", "aftós" }, { "πλευρά", "plevrá" }, { "άνευ", "ánef" }, { "άνευ προηγουμένου", "ánef proïgouménou" }, { "αύριο", "ávrio" }, { "αύξηση", "áfxisi" }, { "ευημερία", "evimería" }, { "καθαρεύουσα", "katharévousa" }, { "υπάρχω", "ypárcho" }, { "ευευ", "evef" }, "diaeresis added for disambiguation", { "βοήθεια", "voḯtheia" }, "nasal&ndash;stop clusters", { "μπαμπάς", "babás" }, { "μπαίνω", "baíno" }, { "'''μπαίνω'''", "'''baíno'''" }, { "έμπαινα", "ébaina" }, { "νταντά", "dadá" }, { "ντύνω", "dýno" }, { "έντυσα", "édysa" }, { "ντετέκτιβ", "detéktiv" }, { "Έβαλε '''ντετέκτιβ'''", "Évale '''detéktiv'''" }, { "εντάξει", "entáxei" }, { "γκαράζ", "garáz" }, { "ανάγκη", "anángi" }, { "Αγγλία", "Anglía" }, "diphthongs ending in iota", { "είναι", "eínai" }, { "οικείος", "oikeíos" }, { "κορόιδο", "koróido" }, { "κοροϊδεύω", "koroïdévo" }, "Parenthesis", { "ψεύ(της)", "pséf(tis)" }, --[[ Copy this to add more examples: { "", "" }, --]] }, "Grek", "el") 2z0qfu1c4g4l36tghbqgqdk256ty2r5 মডিউল:evn-translit/testcases 828 168738 510290 2026-06-07T12:46:44Z RedminBot 9553 [[en:Module:evn-translit/testcases]] থেকে আনা হলো 510290 Scribunto text/plain local tests = require("Module:UnitTests") local evn_translit = require("Module:evn-translit") local compose = mw.ustring.toNFC function tests:check_translit(Cyrl, Latn) self:equals( ('<span lang="evn" class="Cyrl mention">[[%s#Evenki|%s]]</span>'):format(Cyrl, Cyrl), compose(evn_translit.tr(Cyrl, 'evn', 'Cyrl')), compose(Latn)) end function tests:test_translit() self:check_translit("тэкэ̄ты̄мӣ", "təkə̄tīmī") self:check_translit("тэгэен", "təgəjen") self:check_translit("тыеденэ", "tijeʒenə") self:check_translit("надан-дя̄гӣ", "nadan-ʒāgī") self:check_translit("мушняла̄бӯн", "muşņalābūn") self:check_translit("саӈняпчамӣ", "saŋņapçamī") self:check_translit("эӣмкӯн", "əjīmkūn") self:check_translit("эюргэ", "əjurgə") self:check_translit("дё̄нчамӣ", "ʒōnçamī") self:check_translit("тырганӣ", "tirgaņī") end return tests iod6ebmxz7cdr3biuju9lyft5hjibql মডিউল:gdb-Orya-translit 828 168739 510291 2026-06-07T12:46:46Z RedminBot 9553 [[en:Module:gdb-Orya-translit]] থেকে আনা হলো 510291 Scribunto text/plain local export = {} local consonants = { --common ["କ"]="k", ["ଖ"]="kh", ["ଗ"]="g", ["ଘ"]="gh", ["ଙ"]="ṅ", ["ଚ"]="c", ["ଛ"]="ch", ["ଜ"]="j", ["ଝ"]="jh", ["ଞ"]="ñ", ["ଟ"]="ṭ", ["ଠ"]="ṭh", ["ଡ"]="ḍ", ["ଢ"]="ḍh", ["ଣ"]="ṇ", ["ତ"]="t", ["ଥ"]="th", ["ଦ"]="d", ["ଧ"]="dh", ["ନ"]="n", ["ପ"]="p", ["ଫ"]="ph", ["ବ"]="b", ["ଭ"]="bh", ["ମ"]="m", ["ଯ"]="j", ["ୟ"]="y", ["ର"]="r", ["ଲ"]="l", ["ଳ"]="ḷ", ["ଵ"]="v", ["ୱ"]="w", ["ଶ"]="ś", ["ଷ"]="ṣ", ["ସ"]="s", ["ହ"]="h", --nuktas ["କ଼"]="q", ["ଖ଼"]="x", ["ଗ଼"]="ġ", ["ଜ଼"]="z", ["ଝ଼"]="ź", ["ଡ଼"]="ṛ", ["ଢ଼"]="ṛh", ["ଫ଼"]="f", } local diacritics = { ["ା"]="ā", ["ି"]="i", ["ୀ"]="ī", ["ୁ"]="u", ["ୂ"]="ū", ["ୃ"]="ru", ["ୄ"]="rū", ["ୢ"]="lu", ["ୣ"]="lū", ["େ"]="e", ["ୈ"]="ai", ["ୖ"]="ai", ["ୋ"]="o", ["ୌ"]="au", ["ୗ"]="au", ["୍"]="", } local tt = { -- vowels ["ଅ"]="a", ["ଆ"]="ā", ["ଇ"]="i", ["ଈ"]="ī", ["ଉ"]="u", ["ଊ"]="ū", ["ଋ"]="ru", ["ୠ"]="rū", ["ଌ"]="lu", ["ୡ"]="lū", ["ଏ"]="e", ["ଐ"]="ai", ["ଓ"]="o", ["ଔ"]="au", -- chandrabindu ["ଁ"]="m̐", --until a better method is found -- anusvara ["ଂ"]="ṃ", --until a better method is found -- visarga ["ଃ"]="ḥ", -- avagraha ["ଽ"]="’", --numerals ["୦"]="0", ["୧"]="1", ["୨"]="2", ["୩"]="3", ["୪"]="4", ["୫"]="5", ["୬"]="6", ["୭"]="7", ["୮"]="8", ["୯"]="9", ["୲"]="¼", ["୳"]="½", ["୴"]="¾", ["୵"]="¹⁄₁₆", ["୶"]="⅛", ["୷"]="³⁄₁₆", --punctuation ["।"]=".", --danda } function export.tr(text, lang, sc) text = mw.ustring.gsub( text, "([କଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଵଭମଯୟରଲଳୱଶଷସହ]଼?)".. "([ାିୀୁୂୃୄେୈୖୋୌୗ୍ୢୣ]?)", function(c, d) if not consonants[c] then return c end if d == "" then return consonants[c] .. "a" else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, ".", tt) return text end return export 6bq9ek1z2ahlhqdf2qzo4usaww85mcf মডিউল:gdb-Telu-translit 828 168740 510292 2026-06-07T12:46:47Z RedminBot 9553 [[en:Module:gdb-Telu-translit]] থেকে আনা হলো 510292 Scribunto text/plain local export = {} local consonants = { ['క']='k' , ['ఖ']='kh' , ['గ']='g' , ['ఘ']='gh' , ['ఙ']='ṅ' , ['చ']='c' , ['ఛ']='ch' , ['జ']='j' , ['ఝ']='jh' , ['ఞ']='ñ' , ['ట']='ṭ' , ['ఠ']='ṭh' , ['డ']='ḍ' , ['ఢ']='ḍh' , ['ణ']='ṇ' , ['త']='t' , ['థ']='th' , ['ద']='d' , ['ధ']='dh' , ['న']='n' , ['ప']='p' , ['ఫ']='ph' , ['బ']='b' , ['భ']='bh' , ['మ']='m' , ['య']='y' , ['ర']='r' , ['ల']='l' , ['వ']='v' , ['ళ']='ḷ' , ['శ']='ś' , ['ష']='ṣ' , ['స']='s' , ['హ']='h' , ['ఱ']='ṟ' , ['ఴ']='ḻ' , ['ౘ']='ĉ' , ['ౙ']='ẑ' , ['ౚ']='ṟ̄' , ['క఼']='q' , ['ఖ఼']='x' , ['గ఼']='ġ' , ['జ఼']='z', ['ఝ఼']='ź', ['ఫ఼']='f', ['డ఼']='ṛ', ['ఢ఼']='ṛh', ['న఼']='ṉ', } local diacritics = { ['ా']= 'ā' , ['ి']='i' , ['ీ']='ī' , ['ు']='u' , ['ూ']='ū' , ['ృ']='r̥' , ['ౄ']='r̥̄' , ['ౢ']='l̥' , ['ౣ']='l̥̄' , ['ె']='e' , ['ే']='ē' , ['ై']='ai' , ['ొ']='o' , ['ో']='ō' , ['ౌ']='au' , ['్']='' , } local tt = { -- vowels ['అ']='a' , ['ఆ']='ā' , ['ఇ']='i' , ['ఈ']='ī' , ['ఉ']='u' , ['ఊ']='ū' , ['ఋ']='r̥' , ['ౠ']='r̥̄' , ['ఌ']='l̥' , ['ౡ']='l̥̄', ['ఎ']='e' , ['ఏ']='ē' , ['ఐ']='ai' , ['ఒ']='o' , ['ఓ']='ō' , ['ఔ']='au' , ['అం']='aṁ' , ['అఁ']='an̆' , ['అః']='aḥ' , -- other symbols ['ం']='ṁ',-- anusvara ['ః']='ḥ' , -- visarga ['ఁ']='n̆' , -- candrabindu/arthanusvāra/aranusa ['ఀ']='m̐' , -- combining candrabindu ['ఽ']='’' , -- avagraha -- digits ['౦'] = '0', ['౧'] = '1', ['౨'] = '2', ['౩'] = '3', ['౪'] = '4', ['౫'] = '5', ['౬'] = '6', ['౭'] = '7', ['౮'] = '8', ['౯']= '9', ['౸']='0⁄4', ['౹']='¼', ['౺']='2⁄4', ['౻']='¾', ['౦']='0⁄16', ['౼']='1⁄16', ['౽']='2⁄16', ['౾']='3⁄16' , } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '([కఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరలవళశషసహఱఴౘౙౚ])'.. '([ాిీుూృ̥ౄ̥̄ెేైొోౌ్]?)', function(c, d) if d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) -- anusvara text = mw.ustring.gsub(text, 'ṁ([kqxgġṅ])', 'ṅ%1') text = mw.ustring.gsub(text, 'ṁ([cjźñ])', 'ñ%1') text = mw.ustring.gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = mw.ustring.gsub(text, 'ṁ([tdnĉẑz])', 'n%1') text = mw.ustring.gsub(text, 'ṁ([pfbm])', 'm%1') return text end return export eztvkjvbw8doh740obx0dgijw6w11p8 মডিউল:gin-translit/testcases 828 168741 510293 2026-06-07T12:46:47Z RedminBot 9553 [[en:Module:gin-translit/testcases]] থেকে আনা হলো 510293 Scribunto text/plain return require("Module:transliteration module testcases") { module = "gin-translit", examples = { { "лъе", "λe" }, }, sc = "Cyrl", lang = "gin", } s8j5hh3ds11xnpwo52gr5085l8sn70g মডিউল:gld-translit 828 168742 510294 2026-06-07T12:46:48Z RedminBot 9553 [[en:Module:gld-translit]] থেকে আনা হলো 510294 Scribunto text/plain local export = {} local toNFD = mw.ustring.toNFD local noDecompose = { ["ё"] = true, ["Ё"] = true, ["й"] = true, ["Й"] = true, } local twoChars = { ["де"] = "ʒe", ["Де"] = "Ʒe", ["ДЕ"] = "ƷE", ["дё"] = "ʒo", ["Дё"] = "Ʒo", ["ДЁ"] = "ƷO", ["ди"] = "ʒi", ["Ди"] = "Ʒi", ["ДИ"] = "ƷI", ["дю"] = "ʒu", ["Дю"] = "Ʒu", ["ДЮ"] = "ƷU", ["дя"] = "ʒa", ["Дя"] = "Ʒa", ["ДЯ"] = "ƷA", ["дь"] = "ʒ", ["Дь"] = "Ʒ", ["ДЬ"] = "Ʒ", ["нг"] = "ӈ", ["Нг"] = "Ӈ", ["НГ"] = "Ӈ", } local tab = { ["а"] = "a", ["А"] = "A", ["б"] = "b", ["Б"] = "B", ["в"] = "w", ["В"] = "W", ["г"] = "g", ["Г"] = "G", ["д"] = "d", ["Д"] = "D", ["е"] = "je", ["Е"] = "Je", ["ё"] = "jo", ["Ё"] = "Jo", ["ж"] = "ž", ["Ж"] = "Ž", ["з"] = "z", ["З"] = "Z", ["и"] = "i", ["И"] = "I", ["й"] = "j", ["Й"] = "J", ["к"] = "k", ["К"] = "K", ["л"] = "l", ["Л"] = "L", ["м"] = "m", ["М"] = "M", ["н"] = "n", ["Н"] = "N", ["ӈ"] = "ŋ", ["Ӈ"] = "Ŋ", ["о"] = "o", ["О"] = "O", ["п"] = "p", ["П"] = "P", ["р"] = "r", ["Р"] = "R", ["с"] = "s", ["С"] = "S", ["т"] = "t", ["Т"] = "T", ["у"] = "u", ["У"] = "U", ["ф"] = "f", ["Ф"] = "F", ["х"] = "h", ["Х"] = "H", ["ц"] = "c", ["Ц"] = "C", ["ч"] = "č", ["Ч"] = "Č", ["ш"] = "š", ["Ш"] = "Š", ["щ"] = "š", ["Щ"] = "Š", ["ъ"] = "ʺ", ["Ъ"] = "ʺ", ["ы"] = "y", ["Ы"] = "Y", ["ь"] = "ʹ", ["Ь"] = "ʹ", ["э"] = "e", ["Э"] = "E", ["ю"] = "ju", ["Ю"] = "Ju", ["я"] = "ja", ["Я"] = "Ja", } function export.tr(text, lang, sc) -- Decompose (except ё/Ё and й/Й) to simplify conversion of letters with macrons. text = text:gsub("[%z\1-\127\194-\244][\128-\191]*", function(m) if not noDecompose[m] then return toNFD(m) end end) for digraph, replacement in pairs(twoChars) do text = text:gsub(digraph, replacement) end return mw.ustring.toNFC((text:gsub("[%z\1-\127\194-\244][\128-\191]*", tab))) end return export 94a8vyaaww16gnqeope2d4mdx9iqkqj মডিউল:gon-Deva-translit 828 168743 510295 2026-06-07T12:46:48Z RedminBot 9553 [[en:Module:gon-Deva-translit]] থেকে আনা হলো 510295 Scribunto text/plain local export = {} local consonants = { ['क']='k', ['ख']='kh', ['ग']='g', ['घ']='gh', ['ङ']='ṅ', ['च']='c', ['छ']='ch', ['ज']='j', ['झ']='jh', ['ञ']='ñ', ['ट']='ṭ', ['ठ']='ṭh', ['ड']='ḍ', ['ढ']='ḍh', ['ण']='ṇ', ['त']='t', ['थ']='th', ['द']='d', ['ध']='dh', ['न']='n', ['प']='p', ['फ']='ph', ['ब']='b', ['भ']='bh', ['म']='m', ['य']='y', ['र']='r', ['ल']='l', ['व']='v', ['ळ']='ḷ', ['श']='ś', ['ष']='ṣ', ['स']='s', ['ह']='h', ['क़'] = 'q', ['ख़'] = 'x', ['ग़'] = 'ġ', ['फ़'] = 'f', ['ज़'] = 'z', ['झ़'] = 'ź', ['ड़'] = 'ṛ', ['ढ़'] = 'ṛh', } local diacritics = { ['ा']='ā', ['ि']='i', ['ी']='ī', ['ु']='u', ['ू']='ū', ['ृ']='ṛ', ['ॄ']='ṝ', ['ॢ']='ḷ', ['ॣ']='ḹ', ['े']='e', ['ै']='ai', ['ो']='o', ['ौ']='au', ['्']='', } local tt = { -- vowels ['अ']='a', ['आ']='ā', ['इ']='i', ['ई']='ī', ['उ']='u', ['ऊ']='ū', ['ऋ']='ṛ', ['ॠ']='ṝ', ['ऌ']='ḷ', ['ॡ']='ḹ', ['ए']='e', ['ऐ']='ai', ['ओ']='o', ['औ']='au', -- chandrabindu ['ँ']='m̐', --until a better method is found -- anusvara ['ं']='ṃ', --until a better method is found -- visarga ['ः']='ḥ', -- avagraha ['ऽ']='ʼ', --numerals ['०']='0', ['१']='1', ['२']='2', ['३']='3', ['४']='4', ['५']='5', ['६']='6', ['७']='7', ['८']='8', ['९']='9', --punctuation ['॥']='.', --double danda ['।']='.', --danda --Om ['ॐ']='oṃ', } function export.tr(text, lang, sc) if sc ~= "Deva" then return nil end text = mw.ustring.gsub( text, '([क-ह])'.. '([ािीुूृॄॢॣेैोौ्]?)'.. '([अ-औ]?)', function(c, d, e) if d == "" and e ~= "" then if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. '̈' else return consonants[c] .. 'a' .. tt[e] end elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) return text end return export 9s4w3if4plbyn6m3pdpcm9q0xzuvv9x মডিউল:gon-Gong-translit 828 168744 510296 2026-06-07T12:46:48Z RedminBot 9553 [[en:Module:gon-Gong-translit]] থেকে আনা হলো 510296 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local consonants = { ['𑵱'] = 'k', ['𑵲'] = 'kh', ['𑵶'] = 'g', ['𑵷'] = 'gh', ['𑶄']='ṅ', ['𑵻'] = 'c', ['𑵼'] = 'ch', ['𑶀'] = 'j', ['𑶁'] = 'jh', ['𑵽'] = 'ṭ', ['𑵾'] = 'ṭh', ['𑶂'] = 'ḍ', ['𑶃'] = 'ḍh', ['𑵳'] = 't', ['𑵴'] = 'th', ['𑵸'] = 'd', ['𑵹'] = 'dh', ['𑵺']='n', ['𑶅'] = 'p', ['𑶆'] = 'ph', ['𑵮'] = 'b', ['𑵯'] = 'bh' , ['𑵰']='m', ['𑵬'] = 'y', ['𑶈'] = 'r', ['𑵵'] = 'l', ['𑵭'] = 'v', ['𑵿'] = 'ḷ', ['𑶉'] = 's', ['𑶇'] = 'h', } local diacritics = { ['𑶊'] = 'ā', ['𑶋'] = 'i', ['𑶌'] = 'ī',['𑶍'] = 'u', ['𑶎'] = 'ū', ['𑶐'] = 'ē', ['𑶑'] = 'ai', ['𑶓'] = 'ō', ['𑶔'] = 'au', ['𑶗'] = '', } local tt = { -- vowels ['𑵠'] = 'a', ['𑵡'] ='ā' , ['𑵢'] ='i' , ['𑵣'] = 'ī' , ['𑵤'] = 'u' , ['𑵥'] = 'ū' , ['𑵧'] = 'ē', ['𑵨'] ='ai', ['𑵪'] ='ō', ['𑵫'] = 'au', -- other symbols ['𑶕'] = 'ṁ',-- anusvara ['𑶖'] = 'ḥ' , -- visarga ['𑶘'] = 'ōm' , -- om -- digits ['𑶠'] = '0', ['𑶡'] = '1', ['𑶢'] = '2', ['𑶣'] = '3', ['𑶤'] = '4', ['𑶥'] = '5', ['𑶦'] = '6', ['𑶧'] = '7', ['𑶨'] = '8', ['𑶩'] = '9', } -- translit any words or phrases function export.tr(text, lang, sc) text = gsub( text, '([𑵬𑵭𑵮𑵯𑵰𑵱𑵲𑵳𑵴𑵵𑵶𑵷𑵸𑵹𑵺𑵻𑵼𑵽𑵾𑵿𑶀𑶁𑶂𑶃𑶄𑶅𑶆𑶇𑶈𑶉])'.. '([𑶊𑶋𑶌𑶍𑶎𑶐𑶑𑶓𑶔]?)', function(c, d) if d == "" then return consonants[c] ..'a' else return consonants[c] .. diacritics[d] end end) text = gsub(text,'.', tt) -- anusvara text = gsub(text,'ṁ([kgṅ])','ṅ%1') text = gsub(text,'ṁ([cjñ])','ñ%1') text = gsub(text,'ṁ([ṭḍṇ])','ṇ%1') text = gsub(text,'ṁ([tdn])','n%1') text = gsub(text,'ṁ([pbm])','m%1') return text end return export sc3a6olefstkdzjyfoj5jckad353q3o মডিউল:gon-Gong-translit/testcases 828 168745 510297 2026-06-07T12:46:49Z RedminBot 9553 [[en:Module:gon-Gong-translit/testcases]] থেকে আনা হলো 510297 Scribunto text/plain -- Unit tests for [[Module:gon-Gong-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local gon_translit = require('Module:gon-Gong-translit') --TO DO function tests:do_test_translit(gong, roman, comment) self:equals( '<span class="Gong" lang="gon">[[' .. gong .. '#Gondi|' .. gong .. ']]</span>', gon_translit.tr(gong, 'gon', 'gong'), roman, { comment = comment }) end function tests:test_translit_gondi() local examples = { { '𑵭𑶂𑶌', 'vaḍī', 'ṛ represented by 𑶂 <ḍ>'}, } self:iterate(examples, 'do_test_translit') end return tests ohpxe3q0okhcj9i5e4bgm4c7nqozq67 মডিউল:gon-Gonm-translit 828 168746 510298 2026-06-07T12:46:49Z RedminBot 9553 [[en:Module:gon-Gonm-translit]] থেকে আনা হলো 510298 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local consonants = { ['𑴌'] = 'k', ['𑴍'] = 'kh', ['𑴎'] = 'g', ['𑴏'] = 'gh', ['𑴐'] = 'ṅ', ['𑴑'] = 'c', ['𑴒'] = 'ch', ['𑴓'] = 'j', ['𑴔'] = 'jh', ['𑴕'] = 'ñ', ['𑴖'] = 'ṭ', ['𑴗'] = 'ṭh', ['𑴘'] = 'ḍ', ['𑴙'] = 'ḍh', ['𑴚'] = 'ṇ', ['𑴛'] = 't', ['𑴜'] = 'th', ['𑴝'] = 'd', ['𑴞'] = 'dh', ['𑴟'] = 'n', ['𑴠'] = 'p', ['𑴡'] = 'ph', ['𑴢'] = 'b', ['𑴣'] = 'bh', ['𑴤'] = 'm', ['𑴥'] = 'y', ['𑴦'] = 'r', ['𑴧'] = 'l', ['𑴨'] = 'v', ['𑴭'] = 'ḷ', ['𑴩'] = 'ś', ['𑴪'] = 'ṣ', ['𑴫'] = 's', ['𑴬'] = 'h', ['𑴮'] = 'kṣ', ['𑴯'] = 'jñ', ['𑴰'] = 'tr', ['𑴘𑵂'] = 'ṛ', } local diacritics = { ['𑴱'] = 'ā', ['𑴲'] = 'i', ['𑴳'] = 'ī', ['𑴴'] = 'u', ['𑴵'] ='ū', ['𑴶'] = 'r̥', ['𑴺'] = 'e', ['𑴼'] = 'ai', ['𑴽'] ='o', ['𑴿'] = 'au', ['𑵄'] = '', ['𑵅'] = '', } local tt = { -- vowels ['𑴀'] = 'a' , ['𑴁'] = 'ā' , ['𑴂'] = 'i' , ['𑴃'] = 'ī' , ['𑴄']='u' , ['𑴅'] = 'ū', ['𑴆'] = 'e', ['𑴈'] = 'ai' , ['𑴉'] = 'o', ['𑴋'] = 'au', -- other symbols ['𑵀'] = 'ṁ', -- anusvara ['𑵁'] = 'ḥ', -- visarga ['𑵃'] = '̃', -- chandra -- digits ['𑵐'] = '0', ['𑵑'] = '1', ['𑵒'] = '2', ['𑵓'] = '3', ['𑵔'] = '4', ['𑵕'] = '5', ['𑵖'] = '6', ['𑵗'] = '7', ['𑵘'] = '8', ['𑵙'] = '9', } -- translit any words or phrases function export.tr(text, lang, sc) text = gsub(text, '𑵇', '𑵄𑴦') -- ra-kāra text = gsub( text, '([𑴌-𑴰]𑵂?)'.. '([[𑴱𑴲𑴳𑴴𑴵𑴶𑴺𑴼𑴽𑴿𑵀𑵁𑵄𑵅]?)', function(c, d) if d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = gsub(text, '.', tt) -- anusvara text = gsub(text, 'ṁ([kgṅ])', 'ṅ%1') text = gsub(text, 'ṁ([cjñ])', 'ñ%1') text = gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = gsub(text, 'ṁ([tdn])', 'n%1') text = gsub(text, 'ṁ([pbm])', 'm%1') text = gsub(text, 'rr̥', 'r̥') -- 𑴦𑴶 is independent r̥ text = gsub(text, '𑵆', 'r') -- repha text = gsub(text, '[ea]̃', 'ĕ') -- <ऍ> ĕ independent and dependent text = gsub(text, 'ā̃', 'ŏ') -- <ऑ> ŏ independent and dependent return text end return export 4bdce7nxscsde7z5hadle03o4yyu6ol মডিউল:gon-Gonm-translit/testcases 828 168747 510299 2026-06-07T12:46:50Z RedminBot 9553 [[en:Module:gon-Gonm-translit/testcases]] থেকে আনা হলো 510299 Scribunto text/plain -- Unit tests for [[Module:gon-Gonm-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local gon_translit = require('Module:gon-Gonm-translit') --TO DO function tests:do_test_translit(gonm, roman, comment) self:equals( '<span class="Gonm" lang="gon">[[' .. gonm .. '#Gondi|' .. gonm .. ']]</span>', gon_translit.tr(gonm, 'gon', 'gonm'), roman, { comment = comment }) end function tests:test_translit_gondi() local examples = { { '𑴦𑴶', 'r̥', 'independent <r̥> represented by independent <r> + dependent <r̥>'}, { '𑴨𑴘𑵂𑴳', 'vaṛī', '<ṛ> represented as 𑴘𑵂'}, { '𑴀𑴎𑵅𑴎', 'agga', 'virama'}, { '𑴌𑴱𑴖𑵄', 'kāṭ', 'word-final halanta'}, { '𑴌𑴵𑴥𑵄𑴫𑴱', 'kūysā', 'word-medial halanta'}, { '𑴀𑵆𑴝𑴽', 'ardo', 'repha'}, { '𑴑𑴱𑴠𑵇𑴱', 'cāprā', 'ra-kāra'}, { '𑴆𑵃', 'ĕ', '<ऍ> ĕ independent'}, { '𑴁𑵃', 'ŏ', '<ऑ> ŏ independent'}, { '𑴌𑵃', 'kĕ', '<ऍ> ĕ dependent'}, { '𑴌𑴱𑵃', 'kŏ', '<ऑ> ŏ dependent'}, } self:iterate(examples, 'do_test_translit') end return tests be0qv48drthvw80qlgxtl2nb3qrx044 মডিউল:gon-Orya-translit 828 168748 510300 2026-06-07T12:46:50Z RedminBot 9553 [[en:Module:gon-Orya-translit]] থেকে আনা হলো 510300 Scribunto text/plain local export = {} local consonants = { --common ["କ"]="k", ["ଖ"]="kh", ["ଗ"]="g", ["ଘ"]="gh", ["ଙ"]="ṅ", ["ଚ"]="c", ["ଛ"]="ch", ["ଜ"]="j", ["ଝ"]="jh", ["ଞ"]="ñ", ["ଟ"]="ṭ", ["ଠ"]="ṭh", ["ଡ"]="ḍ", ["ଢ"]="ḍh", ["ଣ"]="ṇ", ["ତ"]="t", ["ଥ"]="th", ["ଦ"]="d", ["ଧ"]="dh", ["ନ"]="n", ["ପ"]="p", ["ଫ"]="ph", ["ବ"]="b", ["ଭ"]="bh", ["ମ"]="m", ["ଯ"]="j", ["ୟ"]="y", ["ର"]="r", ["ଲ"]="l", ["ଳ"]="ḷ", ["ଵ"]="v", ["ୱ"]="w", ["ଶ"]="ś", ["ଷ"]="ṣ", ["ସ"]="s", ["ହ"]="h", --nuktas ["କ଼"]="q", ["ଖ଼"]="x", ["ଗ଼"]="ġ", ["ଜ଼"]="z", ["ଝ଼"]="ź", ["ଡ଼"]="ṛ", ["ଢ଼"]="ṛh", ["ଫ଼"]="f", } local diacritics = { ["ା"]="ā", ["ି"]="i", ["ୀ"]="ī", ["ୁ"]="u", ["ୂ"]="ū", ["ୃ"]="ru", ["ୄ"]="rū", ["ୢ"]="lu", ["ୣ"]="lū", ["େ"]="e", ["ୈ"]="ai", ["ୖ"]="ai", ["ୋ"]="o", ["ୌ"]="au", ["ୗ"]="au", ["୍"]="", } local tt = { -- vowels ["ଅ"]="a", ["ଆ"]="ā", ["ଇ"]="i", ["ଈ"]="ī", ["ଉ"]="u", ["ଊ"]="ū", ["ଋ"]="ru", ["ୠ"]="rū", ["ଌ"]="lu", ["ୡ"]="lū", ["ଏ"]="e", ["ଐ"]="ai", ["ଓ"]="o", ["ଔ"]="au", -- chandrabindu ["ଁ"]="m̐", --until a better method is found -- anusvara ["ଂ"]="ṁ", --until a better method is found -- visarga ["ଃ"]="ḥ", -- avagraha ["ଽ"]="’", --numerals ["୦"]="0", ["୧"]="1", ["୨"]="2", ["୩"]="3", ["୪"]="4", ["୫"]="5", ["୬"]="6", ["୭"]="7", ["୮"]="8", ["୯"]="9", ["୲"]="¼", ["୳"]="½", ["୴"]="¾", ["୵"]="¹⁄₁₆", ["୶"]="⅛", ["୷"]="³⁄₁₆", --punctuation ["।"]=".", --danda } function export.tr(text, lang, sc) text = mw.ustring.gsub( text, "([କଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଵଭମଯୟରଲଳୱଶଷସହ]଼?)".. "([ାିୀୁୂୃୄେୈୖୋୌୗ୍ୢୣ]?)", function(c, d) if not consonants[c] then return c end if d == "" then return consonants[c] .. "a" else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, ".", tt) -- anusvara text = mw.ustring.gsub(text, 'ṁ([kqxgġṅ])', 'ṅ%1') text = mw.ustring.gsub(text, 'ṁ([cjźñ])', 'ñ%1') text = mw.ustring.gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = mw.ustring.gsub(text, 'ṁ([tdnz])', 'n%1') text = mw.ustring.gsub(text, 'ṁ([pfbm])', 'm%1') return text end return export isjlrgl2h5648jtdjdstz895c71p2b4 মডিউল:gon-Telu-translit 828 168749 510301 2026-06-07T12:46:50Z RedminBot 9553 [[en:Module:gon-Telu-translit]] থেকে আনা হলো 510301 Scribunto text/plain local export = {} local consonants = { ['క']='k' , ['ఖ']='kh' , ['గ']='g' , ['ఘ']='gh' , ['ఙ']='ṅ' , ['చ']='c' , ['ఛ']='ch' , ['జ']='j' , ['ఝ']='jh' , ['ఞ']='ñ' , ['ట']='ṭ' , ['ఠ']='ṭh' , ['డ']='ḍ' , ['ఢ']='ḍh' , ['ణ']='ṇ' , ['త']='t' , ['థ']='th' , ['ద']='d' , ['ధ']='dh' , ['న']='n' , ['ప']='p' , ['ఫ']='ph' , ['బ']='b' , ['భ']='bh' , ['మ']='m' , ['య']='y' , ['ర']='r' , ['ల']='l' , ['వ']='v' , ['ళ']='ḷ' , ['శ']='ś' , ['ష']='ṣ' , ['స']='s' , ['హ']='h' , ['ఱ']='ṟ' , ['ఴ']='ḻ' , ['ౘ']='ĉ' , ['ౙ']='ẑ' , ['ౚ']='ṟ̄' , ['క఼']='q' , ['ఖ఼']='x' , ['గ఼']='ġ' , ['జ఼']='z', ['ఝ఼']='ź', ['ఫ఼']='f', ['డ఼']='ṛ', ['ఢ఼']='ṛh', ['న఼']='ṉ', } local diacritics = { ['ా']= 'ā' , ['ి']='i' , ['ీ']='ī' , ['ు']='u' , ['ూ']='ū' , ['ృ']='r̥' , ['ౄ']='r̥̄' , ['ౢ']='l̥' , ['ౣ']='l̥̄' , ['ె']='e' , ['ే']='ē' , ['ై']='ai' , ['ొ']='o' , ['ో']='ō' , ['ౌ']='au' , ['్']='' , } local tt = { -- vowels ['అ']='a' , ['ఆ']='ā' , ['ఇ']='i' , ['ఈ']='ī' , ['ఉ']='u' , ['ఊ']='ū' , ['ఋ']='r̥' , ['ౠ']='r̥̄' , ['ఌ']='l̥' , ['ౡ']='l̥̄', ['ఎ']='e' , ['ఏ']='ē' , ['ఐ']='ai' , ['ఒ']='o' , ['ఓ']='ō' , ['ఔ']='au' , ['అం']='aṁ' , ['అఁ']='an̆' , ['అః']='aḥ' , -- other symbols ['ం']='ṁ',-- anusvara ['ః']='ḥ' , -- visarga ['ఁ']='n̆' , -- candrabindu/arthanusvāra/aranusa ['ఀ']='m̐' , -- combining candrabindu ['ఽ']='’' , -- avagraha -- digits ['౦'] = '0', ['౧'] = '1', ['౨'] = '2', ['౩'] = '3', ['౪'] = '4', ['౫'] = '5', ['౬'] = '6', ['౭'] = '7', ['౮'] = '8', ['౯']= '9', ['౸']='0⁄4', ['౹']='¼', ['౺']='2⁄4', ['౻']='¾', ['౦']='0⁄16', ['౼']='1⁄16', ['౽']='2⁄16', ['౾']='3⁄16' , } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '([కఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరలవళశషసహఱఴౘౙౚ])'.. '([ాిీుూృ̥ౄ̥̄ెేైొోౌ్]?)', function(c, d) if d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) -- anusvara text = mw.ustring.gsub(text, 'ṁ([kqxgġṅ])', 'ṅ%1') text = mw.ustring.gsub(text, 'ṁ([cjźñ])', 'ñ%1') text = mw.ustring.gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = mw.ustring.gsub(text, 'ṁ([tdnĉẑz])', 'n%1') text = mw.ustring.gsub(text, 'ṁ([pfbm])', 'm%1') return text end return export eztvkjvbw8doh740obx0dgijw6w11p8 মডিউল:gon-Telu-translit/testcases 828 168750 510302 2026-06-07T12:46:51Z RedminBot 9553 [[en:Module:gon-Telu-translit/testcases]] থেকে আনা হলো 510302 Scribunto text/plain -- Unit tests for [[Module:gon-Telu-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local gon_translit = require('Module:gon-Telu-translit') --TO DO function tests:do_test_translit(telu, roman, comment) self:equals( '<span class="Telu" lang="gon">[[' .. telu .. '#Gondi|' .. telu .. ']]</span>', gon_translit.tr(telu, 'gon', 'Telu'), roman, { comment = comment }) end function tests:test_translit_gondi() local examples = { { 'కోయ్‌లల్', 'kōylal', 'ZWNJ '}, { 'అంకపాళి', 'aṅkapāḷi '}, { 'పా', 'pā' }, { 'ళి', 'ḷi' }, {'నొప్పింౘు', 'noppinĉu', 'affricate ౘ /t͡s'}, {'ౙమకట్టు', 'zamakaṭṭu', 'affricate ౙ /d͡z/' }, } self:iterate(examples, 'do_test_translit') end return tests fcfpbboitq1zjibhdg71tfiu2u95dof মডিউল:grc-translit/testcases 828 168751 510303 2026-06-07T12:46:51Z RedminBot 9553 [[en:Module:grc-translit/testcases]] থেকে আনা হলো 510303 Scribunto text/plain --[=[ Unit tests for [[Module:grc-translit]]. ]=] return require("Module:transliteration module testcases") { module = 'grc-translit', examples = { { 'λόγος', 'lógos' }, { 'οἷαι', 'hoîai' }, 'velar', { 'ἄγγελος', 'ángelos' }, { 'ἔγκειμαι', 'énkeimai' }, { 'σφίγξ', 'sphínx' }, { 'τυγχάνω', 'tunkhánō' }, { 'Ἀγϙυλίων', 'Anqulíōn' }, 'archaic letters', { 'Ϙόρῐνθοϻ', 'Qórĭnthos' }, { 'ϝάναξ', 'wánax' }, { 'ἀρκͱᾱγέτας', 'arkhāgétas' }, { '*-ϳω', '*-jō' }, 'current problems', { "'''Υ'''ἱός", "'''Hu'''iós" }, 'u/y', { 'ταῦρος', 'taûros' }, { 'νηῦς', 'nēûs' }, { 'σῦς', 'sûs' }, { 'ὗς', 'hûs' }, { 'γυῖον', 'guîon' }, { 'αὐτοϋιός', 'autoüiós' }, { 'ἀναῡ̈τέω', 'anaṻtéō' }, { 'δαΐφρων', 'daḯphrōn' }, { 'πρηῠ́ς', 'prēŭ́s' }, { 'ταὧς', 'tahôs' }, 'vowel length', { 'τῶν', 'tôn' }, { 'τοὶ', 'toì' }, { 'τῷ', 'tōî' }, { 'τούτῳ', 'toútōi' }, { 'σοφίᾳ', 'sophíāi' }, { 'Θρᾴκη', 'Thrāíkē' }, { 'προσηύδᾱ', 'prosēúdā' }, { 'Καῖσᾰρ', 'Kaîsăr' }, { 'ᾰ̓γᾰ́πη', 'ăgắpē' }, { 'μᾱ̆νός', 'mā̆nós' }, { 'ὑπόγυͅον', 'hupógūion' }, { 'αὐτοϋιός', 'autoüiós' }, { 'τετληϋῖα', 'tetlēüîa' }, { 'ωὑτός', 'hōutós' }, { 'ἑᾱυτοῦ', 'heāutoû' }, { 'ᾱὑτοῦ', 'hāutoû' }, { '**αὐτουͅός', '**autoūiós' }, { '**αὐτοῧͅος', '**autoṻîos' }, 'breathing', { 'ὁ', 'ho' }, { 'οἱ', 'hoi' }, { 'εὕρισκε', 'heúriske' }, { 'ὑϊκός', 'huïkós' }, { 'πυρρός', 'purrhós' }, { 'ῥέω', 'rhéō' }, { 'μύῤῥᾱ', 'múrrhā' }, { 'ῤάριον', 'rárion' }, { 'Ρ̓ᾶρος', 'Râros' }, { 'σάἁμον', 'sáhamon' }, { 'ταὧς', 'tahôs' }, { 'ϝ̔έ', 'whé' }, { '**ἔῥῥευσᾰ', '**érhrheusă' }, { '**Βοῤῤᾶς', '**Borrâs' }, 'capitals', { 'Ὀδυσσεύς', 'Odusseús' }, { 'Εἵλως', 'Heílōs' }, { 'ᾍδης', 'Hāídēs' }, { 'ἡ Ἑλήνη', 'hē Helḗnē' }, { 'ΙΧΘΥΣ', 'IKHTHUS' }, 'punctuation', { 'ἔχεις μοι εἰπεῖν, ὦ Σώκρατες, ἆρα διδακτὸν ἡ ἀρετή;', 'ékheis moi eipeîn, ô Sṓkrates, âra didaktòn hē aretḗ?'}, { 'τί τηνικάδε ἀφῖξαι, ὦ Κρίτων; ἢ οὐ πρῲ ἔτι ἐστίν;', 'tí tēnikáde aphîxai, ô Krítōn? ḕ ou prōì éti estín?' }, -- This ought to be colon, but sadly that cannot be. { 'τούτων φωνήεντα μέν ἐστιν ἑπτά· α ε η ι ο υ ω.', 'toútōn phōnḗenta mén estin heptá; a e ē i o u ō.' }, { 'πήγ(νῡμῐ)', 'pḗg(nūmĭ)' }, { 'ἄ(γ)γελος', 'á(n)gelos' }, { 'ἄγκυρ(ρ)α', 'ánkur(rh)a' }, 'HTML entities', { 'καλός&nbsp;καὶ&nbsp;ἀγαθός', 'kalós&nbsp;kaì&nbsp;agathós' }, { 'καλός&#32;καὶ&#32;ἀγαθός', 'kalós&#32;kaì&#32;agathós' }, }, sc = 'Polyt', lang = 'grc', nolink = true, } n70kef1rlyp570odq02dfloaipszhpe মডিউল:grk-mar-translit/testcases 828 168752 510304 2026-06-07T12:46:52Z RedminBot 9553 [[en:Module:grk-mar-translit/testcases]] থেকে আনা হলো 510304 Scribunto text/plain return require("Module:transliteration module testcases") { module = "grk-mar-translit", examples = { { "Τσσ", "Č" }, { "Τσσγτσσ", "Čhč" }, { "Τσσγκτσσ", "Čhkč" }, { "Τσσγτσσγτσσ", "Čhčhč" }, { "Тъдътъкь", "Θðθkʹ" }, { "Тъгктъ", "Θgθ" }, { "Тъггктъ", "Θhgθ" }, }, sc = "Cyrl", lang = "grk-mar", } e6auml430ly8esjes8n1ce5ai12rmm0 মডিউল:gu-translit/testcases 828 168753 510305 2026-06-07T12:46:53Z RedminBot 9553 [[en:Module:gu-translit/testcases]] থেকে আনা হলো 510305 Scribunto text/plain -- Unit tests for [[Module:gu-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local transliterate = require('Module:gu-translit').tr --TO DO function tests:do_test_translit(gujr, roman, xlit) self:equals('<span class="Gujr" lang="gu">[[' .. gujr .. '#Gujarati|' .. gujr .. ']]</span>', transliterate(gujr, 'gu', 'Gujr'), roman) end function tests:test_translit_gujarati() local examples = { { 'રુગ્ણાલય', 'rugṇālay' }, { 'અતિવલય', 'ativalay' }, { 'ક્ષમા', 'kṣamā' }, { 'ગોળો', 'goḷo' }, { 'ગુજરાતી', 'gujrātī' }, { 'બત્તી', 'battī' }, { 'ઉંદર', 'undar' }, { 'એરું', 'erũ' }, { 'હ્યત઼્', 'hyat̰' }, { 'સંપત્તિ', 'sampatti' }, { 'જિંદગી', 'jindgī' }, { 'સંન્યાસી', 'sannyāsī' }, { 'પૂછવું', 'pūchvũ' }, { 'છોકરું', 'chokrũ' }, { 'ઊંચાં', 'ū̃cā̃' }, { 'ખડબચડું', 'khaḍbacḍũ' }, { 'સમજાવવું', 'samjāvvũ' }, { 'વાંકું', 'vā̃kũ' }, { 'બળજબરી', 'baḷjabrī' }, { 'વર્તવું', 'vartvũ' }, { 'એંસી', 'ẽsī' }, { 'ઇચ્છવું', 'icchvũ' }, { 'વિદુગ્ધધુ', 'vidugdhadhu' }, { 'આંતર', 'āntar' }, { 'અતિઘણું', 'atighaṇũ' }, { 'ઉદાહરણ', 'udāharaṇ' }, { 'અતિશયોક્તિ', 'atiśayokti' }, { 'કેળવણી', 'keḷavṇī' }, { 'ચકચકિત', 'cakcakit' }, { 'દસ્તાવેજીકરણ', 'dastāvejīkaraṇ' }, { 'જાળવવું', 'jālavvũ' }, {'ગઈ', 'gaī'}, } self:iterate(examples, 'do_test_translit') end return tests 5ldsn1tfx5z8t69g7129o23pxv68ppo মডিউল:he-translit/old 828 168754 510306 2026-06-07T12:46:53Z RedminBot 9553 [[en:Module:he-translit/old]] থেকে আনা হলো 510306 Scribunto text/plain local export = {} local U = require("Module:string/char") local gsub = mw.ustring.gsub --[[ -- Uncomment this to redefine gsub so that it prints to the Lua log -- the names of the code points in the replacements it's making. local function print_code_point_names(text) if not text then return "" end local names = require "Module:array"() for cp in mw.ustring.gcodepoint(text) do names:insert(require "Module:Unicode data".lookup_name(cp)) end return names:concat ", " end local actual_gsub = mw.ustring.gsub local gsub = function(...) local old, pattern, repl = ... local new, count = actual_gsub(...) if old ~= new then mw.log(table.concat({ print_code_point_names(old), print_code_point_names(new), pattern, tostring(repl) }, "\n") .. "\n") end return new, count end --]] local sheva = U(0x05B0) local hataf_segol = U(0x05B1) local hataf_patah = U(0x05B2) local hataf_qamats = U(0x05B3) local hiriq = U(0x05B4) local tsere = U(0x05B5) local segol = U(0x05B6) local patah = U(0x05B7) local qamats = U(0x05B8) local qamats_qatan = U(0x05C7) local holam = U(0x05B9) local holam_haser_for_waw = U(0x05BA) local qubuts = U(0x05BB) local dagesh_mappiq = U(0x05BC) local shin_dot = U(0x05C1) local sin_dot = U(0x05C2) local macron_above = U(0x0304) local macron_below = U(0x0331) local macron = "[" .. macron_above .. macron_below .. "]" local alef = "א" local he = "ה" local waw = "ו" local yod = "י" local vowel_letters = alef .. he .. waw .. yod local vowel_letter = "[" .. vowel_letters .. "]" -- '0' represents silent sheva local vowel_points = ( sheva .. hataf_segol .. hataf_patah .. hataf_qamats .. hiriq .. tsere .. segol .. patah .. qamats .. qamats_qatan .. holam .. qubuts .. '0' .. holam_haser_for_waw ) local vowel_point = "[" .. vowel_points .. "]" local short_vowels = segol .. patah .. hiriq .. qubuts .. qamats_qatan local short_vowel = "[" .. short_vowels .. "]" local shuruq = waw .. dagesh_mappiq local holam_male = waw .. holam -- use dummies characters that do not match as punctuation -- the dummy letter stands in for final silent alef or he, or for the hiatus before a furtive patah, -- or comes before a pre-transliterated waw to aid in matching local dummy_letter = U(0x0627) -- ARABIC LETTER ALEF local dummy_geresh = U(0x064E) -- ARABIC FATHA local dummy_gershayim = U(0x064B) -- ARABIC FATHATAN local real_geresh = '׳' local real_gershayim = '״' local letter_modifier = "[" .. shin_dot .. sin_dot .. "]?[" .. dummy_geresh .. dummy_gershayim .. "]?" local letters = "אבגדהוזחטיכךלמםנןסעפףצץקרשת" local letter = "[" .. letters .. dummy_letter .. "]" .. letter_modifier local letter_not_waw = "[אבגדהזחטיכךלמםנןסעפףצץקרשת" .. dummy_letter .. "]" .. letter_modifier local gutturals = "אהחע" local guttural = "[" .. gutturals .. "]" local vowel_letter_or_geresh = "[" .. vowel_letters .. dummy_geresh .. dummy_gershayim .. "]" -- note, the geresh and gershayim are included in this, which is why dummies are used in their place local word_break_chars = "%s%p" local word_break = "[" .. word_break_chars .. "]" local word_start = "%f[^" .. word_break_chars .. "]" -- matches the boundary but not the actual word break characters local word_end = "%f[" .. word_break_chars .. "]" -- matches the boundary but not the actual word break characters local tr_vowels = "aeiouāēīōūəăĕŏ0" local biblical_to_modern = { ['ʾ'] = '\'', ['b' .. macron_below] = 'v', ['g' .. macron_above] = 'g', ['d' .. macron_below] = 'd', ['w'] = 'v', ['ž'] = 'zh', ['ḥ'] = 'kh', ['ṭ'] = 't', ['k' .. macron_below] = 'kh', ['ʿ'] = '\'', ['p' .. macron_above] = 'f', ['ṣ'] = 'ts', ['č'] = 'ch', ['q'] = 'k', ['š'] = 'sh', ['ś'] = 's', ['t' .. macron_below] = 't', ['ə'] = '\'', ['ĕ'] = 'e', ['ă'] = 'a', ['ŏ'] = 'o', ['ī'] = 'i', ['ē'] = 'e', ['ā'] = 'a', ['ō'] = 'o', ['ū'] = 'u', } -- helper function to remove vowel letters but keep gereshes local function gereshes(str) return gsub(str, vowel_letter, '') end local biblical = { { -- replace geresh and gershayim with their dummy equivalents so that they won't match as word boundaries [real_geresh] = dummy_geresh, [real_gershayim] = dummy_gershayim, }, { -- The default order is: consonant, vowel point, dagesh or mappiq, shin or sin dot. -- The desired order is: consonant, shin or sin dot, dagesh or mappiq, vowel point. -- Also, move geresh and gershayim closer to the letter for easier handling (will be moved back later if not actually a modifier) ["([" .. letters .. "])(" .. vowel_point .. "*)(" .. dagesh_mappiq .. "*)([" .. shin_dot .. sin_dot .. "]*)([" .. dummy_geresh .. dummy_gershayim .. "]*)"] = "%1%4%5%3%2", }, { -- special case: change qamats in כל to qamats qatan -- the problem is that כל might be preceded by prefixed clitics, which maybe be chained indefinitely, -- while other unrelated words might happen to end in כל with a qamats gadol; therefore, match either -- the entire word or only when preceded by a precisely recognized prefix [word_start .. "(כ" .. dagesh_mappiq .. "?)" .. qamats .. "(ל)" .. word_end] = "%1" .. qamats_qatan .. "%2", ["([הבכל]" .. dagesh_mappiq .. "?" .. patah .. "כ" .. dagesh_mappiq .. ")" .. qamats .. "(ל)" .. word_end] = "%1" .. qamats_qatan .. "%2", ["(מ" .. dagesh_mappiq .. "?" .. hiriq .. "כ" .. dagesh_mappiq .. ")" .. qamats .. "(ל)" .. word_end] = "%1" .. qamats_qatan .. "%2", ["(ש" .. shin_dot .. dagesh_mappiq .. "?[" .. segol .. patah .. "]כ" .. dagesh_mappiq .. ")" .. qamats .. "(ל)" .. word_end] = "%1" .. qamats_qatan .. "%2", -- patah is very archaic ["([ובכלד]" .. dagesh_mappiq .. "?" .. sheva .. "כ)" .. qamats .. "(ל)" .. word_end] = "%1" .. qamats_qatan .. "%2", }, { -- remove final alef and he, but only when preceded by a vowel ["(" .. vowel_point .. vowel_letter_or_geresh .. "*)[" .. alef .. he .. "]" .. word_end] = "%1" .. dummy_letter, ["(" .. shuruq .. vowel_letter_or_geresh .. "*)[" .. alef .. he .. "]" .. word_end] = "%1" .. dummy_letter, }, { -- these are the cases, other than the above, where a final letter should be ignored [hiriq .. vowel_letter_or_geresh .. "-[" .. yod .. dummy_letter .. "]" .. word_end] = "ī", ["([" .. tsere .. segol .. "])" .. vowel_letter_or_geresh .. "-[" .. yod .. "]" .. word_end] = "%1", ["([" .. holam .. qubuts .. "])" .. vowel_letter_or_geresh .. "-[" .. waw .. "]" .. word_end] = "%1", }, { [sheva .. "(" .. letter .. ")" .. sheva] = "0%1" .. sheva, -- two shevas in a row ["(" .. short_vowel .. letter .. ")" .. sheva] = "%10", -- after a short vowel, assume(!) a silent sheva ["(" .. guttural .. ")" .. sheva] = "%10", -- gutturals cannot have a vocal sheva ["(" .. vowel_point .. ")" .. shuruq] = "%1" .. dummy_letter .. "ww", -- when waw + dagesh is not a shuruq ["(" .. vowel_point .. vowel_letter_or_geresh .. "-)" .. shuruq .. "(" .. vowel_letter_or_geresh .. "-" .. vowel_point .. ")"] = "%1" .. dummy_letter .. "ww%2", -- when waw + dagesh is not a shuruq ["(" .. vowel_point .. ")" .. holam_male] = "%1" .. dummy_letter .. "w" .. holam, -- when waw + holam is not a holam male ["([" .. alef .. he .. "])" .. dagesh_mappiq] = "%1", -- handle mappiq (very rarely occurs on an alef) }, { [shuruq .. shuruq] = shuruq .. "ww", -- another potential case when waw + dagesh is not a shuruq [shuruq .. holam_male] = shuruq .. "w" .. holam, -- another potential case when waw + holam is not a holam male -- tentatively lengthen hiriqs with vowel letters [hiriq .. "(" .. vowel_letter_or_geresh .. "+)(" .. letter .. ")"] = function(vlg, l) return "ī" .. gereshes(vlg) .. l end, -- rearrange furtive patach (mappiq should already have been removed, but handle it just in case) ["(" .. guttural .. dagesh_mappiq .. "?)" .. patah .. word_end] = dummy_letter .. "a%1", }, { -- remove vowel letters ["(" .. letter .. ")(" .. vowel_letter_or_geresh .. "+)" .. shuruq] = function(l, vlg) return l .. gereshes(vlg) .. shuruq end, [shuruq .. "(" .. vowel_letter_or_geresh .. "+)" .. "(" .. letter_not_waw .. ")"] = function(vlg, l) return shuruq .. gereshes(vlg) .. l end, [shuruq .. "(" .. vowel_letter_or_geresh .. "+)" .. "(" .. waw .. "[^" .. holam .. dagesh_mappiq .. "])"] = function(vlg, l) return shuruq .. gereshes(vlg) .. l end, ["(" .. vowel_point .. ")" .. "(" .. vowel_letter_or_geresh .. "+)" .. "(" .. letter_not_waw .. ")"] = function(vp, vlg, l) return vp .. gereshes(vlg) .. l end, ["(" .. vowel_point .. ")" .. "(" .. vowel_letter_or_geresh .. "+)" .. "(" .. waw .. "[^" .. holam .. dagesh_mappiq .. "])"] = function(vp, vlg, l) return vp .. gereshes(vlg) .. l end, }, { -- handle two-character combinations first ['ג' .. dummy_geresh] = 'j', ['ז' .. dummy_geresh] = 'ž', ['[צץ]' .. dummy_geresh] = 'č', ['ש' .. shin_dot] = 'š', ['ש' .. sin_dot] = 'ś', }, { ['א'] = 'ʾ', ['ב'] = 'b' .. macron_below, ['ג'] = 'g' .. macron_above, ['ד'] = 'd' .. macron_below, ['ה'] = 'h', ['ז'] = 'z', ['ח'] = 'ḥ', ['ט'] = 'ṭ', ['י'] = 'y', ['[כך]'] = 'k' .. macron_below, ['ל'] = 'l', ['[מם]'] = 'm', ['[נן]'] = 'n', ['ס'] = 's', ['ע'] = 'ʿ', ['[פף]'] = 'p' .. macron_above, ['[צץ]'] = 'ṣ', ['ק'] = 'q', ['ר'] = 'r', ['ת'] = 't' .. macron_below, }, { [word_start .. '([bgdkptj])' .. macron .. '?' .. dagesh_mappiq] = '%1', -- assume(!) dagesh qal at the beginning of a word ['[0' .. sheva .. ']([bgdkptj])' .. macron .. '?' .. dagesh_mappiq] = '0%1', -- dagesh qal after sheva, and assume(!) silent sheva ['(%l)0%1'] = '%1' .. sheva .. '%1', -- vocal sheva between identical consonants [shuruq] = 'ū', }, { -- restore geresh and gershayim order ["([" .. dummy_geresh .. dummy_gershayim .. "])(" .. dagesh_mappiq .. "*)(" .. vowel_point .. "*)"] = "%2%3%1", }, { -- handle ירושלם [hiriq .. patah] = "ayi", -- in this case, the vowels are reversed by Unicode normalization rules [patah .. hiriq] = "ayi", -- just in case they're in the correct order [hiriq .. qamats] = "āyi", -- pausal form of above [qamats .. hiriq] = "āyi", -- as above -- handle ירושלמה ["[0" .. sheva .. "]" .. patah] = "ay", -- in this case, the vowels are reversed by Unicode normalization rules [patah .. "[0" .. sheva .. "]"] = "ay", -- just in case they're in the correct order ["[0" .. sheva .. "]" .. qamats] = "āy", -- pausal form of above [qamats .. "[0" .. sheva .. "]"] = "āy", -- as above }, { [sheva] = 'ə', [hataf_segol] = 'ĕ', [hataf_patah] = 'ă', [hataf_qamats] = 'ŏ', [hiriq] = 'i', [tsere] = 'ē', [segol] = 'e', [patah] = 'a', [qamats] = 'ā', [qamats_qatan] = 'o', [qubuts] = 'u', [shin_dot] = '', [sin_dot] = '', [holam_male] = 'ō', [waw .. holam_haser_for_waw] = 'wō', }, { ['(.)' .. macron .. '?' .. dagesh_mappiq] = '%1%1', -- gemination }, { ['(śśā)[שś](k' .. macron_below .. ')'] = '%1%2', -- special case for יששכר }, { ['ā(%l' .. macron .. '?0)'] = 'o%1', -- assume(!) qamats qatan before silent sheva [holam] = 'ō', ['ו'] = 'w', ['ש'] = 'š', -- assume(!) shin if no shin or sin dot }, { -- handle bgdkpt letters in unvocalized words (such as acronyms) [word_start .. "([^" .. tr_vowels .. "]-[bgdkpt]" .. macron .. "[^" .. tr_vowels .. "]-)" .. word_end] = function(w) return gsub(w, "([bgdkpt])" .. macron, "%1") end }, { ["[0" .. dummy_letter .. "]"] = "", -- short vowels in non-final closed syllables (this rule should be expanded) ["ū(%l)%1"] = "u%1%1", ["ī(%l)%1"] = "i%1%1", }, { ['ə' .. word_end] = "", -- final sheva is always silent [dummy_geresh] = '′', [dummy_gershayim] = '″', ['׃'] = '.', -- sof pasuq ['־'] = '-', -- maqaf }, } function export.tr(text, lang, sc) -- default to modern for Hebrew, but not for other languages, such as Aramaic local modern = lang == "he" return export.biblical(text, modern) end function export.biblical(text, modern) -- decompose text = mw.ustring.toNFD(text) -- wrap with spaces to make initial and final replacements easier text = ' ' .. text .. ' ' for _, replacements in ipairs(biblical) do for regex, replacement in pairs(replacements) do text = gsub(text, regex, replacement) end end -- unwrap spaces text = mw.ustring.match(text, "^ (.*) $") if text == nil then error("Something went wrong, wrapped spaces were deleted.") end -- must happen before recomposition if modern then text = gsub(text, "([%lʾʿ])%1", "%1") text = gsub(text, "[%lʾʿ]" .. macron .. "?", function(x) return biblical_to_modern[x] or x end) text = gsub(text, "''", "'") end -- recompose text = mw.ustring.toNFC(text) return text end return export g8u1b1b7c20bm6na5p5029rxuixgnuz মডিউল:he-translit/old/testcases 828 168755 510307 2026-06-07T12:46:54Z RedminBot 9553 [[en:Module:he-translit/old/testcases]] থেকে আনা হলো 510307 Scribunto text/plain -- Unit tests for [[Module:he-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local he_translit = require('Module:he-translit/old') local full_link = require('Module:links').full_link local lang = require('Module:languages').getByCode('he') local sc = require('Module:scripts').getByCode('Hebr') local function link(term) return full_link{lang = lang, sc = sc, term = term} end function tests:do_test_translit(system) local tr if system == "modern" then local modern = he_translit.tr function tr(text) return modern(text, 'he', 'Hebr') end elseif system == "biblical" then tr = he_translit.biblical end return function (self, text, expected_tr, comment) self:equals(link(text), tr(text), expected_tr, {comment=comment}) end end function tests:test_translit_hebrew() local examples = { { 'מַקְלֵעַ', "maklea'" }, { 'אַבְּסוּרְד', "'ab'sur'd" , "not sure about what should be expected here"}, -- { 'ביומטריה', ? }, { 'בִּיּוֹמֶטְרִיָּה', "biyometriya" }, { 'קַפְרִיסִין', "kafrisin" }, { 'חֹרֶף', "khoref" }, { 'טוּרְקִיז', "turkiz" }, { 'טַחַב', "takhav" }, { 'יִוָּלֵד', "yivaled" }, { 'יָקִינְתּוֹן', "yakinton" }, { 'כֻּתְנָה', "kutna" }, { 'נַגָּרִיָּה', "nagariya" }, { 'נַעֲלֶה', "na'ale" }, { 'מִצְווֹת', "mitsvot" }, { 'מָקוֹם', "makom" }, { 'פֶּרוּאָנִי', "peru'ani" }, { 'צִדְפָּה', "tsidpa" }, { 'תׇּכְנָה', "tokhna" }, { 'רְאוּ', "r'u" }, { 'גּ׳וּק', "juk" }, { 'ג׳וּק', "juk" }, { 'גִּ׳ירָאפָה', "jirafa" }, { 'גִ׳ירָאפָה', "jirafa" }, { 'זַ׳רְגוֹן', "zhargon" }, { 'קַפּוּצִ׳ינוֹ', "kapuchino" }, { 'סְקוֹץ׳', "s'koch" }, { 'סְתוֹם תַּ׳פֶּה', "s'tom ta′pe" }, { 'אִמָּא׳לֶה', "'ima′le" }, { 'חָזָ״ל', "khaza″l" }, { 'נַחַ״ל', "nakha″l" }, { 'רה״מ', "rh″m" }, { 'ב״ה', "b″h" }, { 'ת״א', "t″'" }, } self:iterate(examples, self:do_test_translit("modern")) end function tests:test_biblical() local examples = { { "בַּיִת", "bayiṯ" }, { "בֵּית", "bēṯ" }, { "עַכּוֹ‎", ""}, { "בָּתִּים", "bāttīm" }, { "מַחֲנֶה", "maḥăne" }, { "בָּרָא", "bārā" }, { "רֶגֶל", "reḡel" }, { "כֹּהֵן", "kōhēn" }, { "מֶלֶךְ", "meleḵ" }, { "מַמְלָכָה", "mamlāḵā" }, { "הַמַּמְלָכָה", "hammamlāḵā" }, { "הַלְּלוּיָהּ", "halləlūyāh" }, { "הַלְלוּיָהּ", "haləlūyāh" }, { "יָדַע", "yāḏaʿ" }, { "שָׁבוּעַ", "šāḇūaʿ" }, { "רוּחַ", "rūaḥ" }, { "גָּבֹהַּ", "gāḇōah" }, { "מָשִׁיחַ", "māšīaḥ" }, { "רֵיחַ", "rēaḥ" }, { "שָׂדֶה", "śāḏe" }, { "שְׂדֵה", "śəḏē" }, { "בָּנַי", "bānay" }, { "בְּנֵי", "bənē" }, { "צָרְכִּי", "ṣorkī" }, { "חָכְמָה", "ḥāḵəmā", "ambiguous case: could be ḥāḵəmā or ḥoḵmā, but I think ḥāḵəmā is the preferred default" }, { "שִׁפְרָה", "šip̄rā" }, { "שָׁכְבְּךָ", "šoḵbəḵā" }, { "הָפְכָּה", "hop̄kā", "made-up word, but a particular potentially problematic Unicode situation" }, { "קָטְבּוֹ", "qoṭbō", "another particular potentially problematic Unicode situation" }, { "נִשְׂרְפָה", "niśrəp̄ā" }, { "בָּנָיו", "bānāw" }, { "בָּנֶיהָ", "bānehā" }, { "מִצְוֹת", "miṣwōṯ" }, { "זִוּוּג", "ziwwūḡ" }, { "רֹאשׁ", "rōš" }, { "רֵאשִׁית", "rēšīṯ" }, { "רִאשׁוֹן", "rīšōn" }, { "מְלָאכָה", "məlāḵā" }, { "מְלֶאכֶת", "məleḵeṯ" }, { "חֵטְא", "ḥēṭ" }, { "בָּרָאתָ", "bārāṯā" }, { "חַטֹּאות", "ḥaṭṭōṯ" }, { "יְראוּ", "yərū" }, { "וַיֶּאְסֹר", "wayyeʾsōr" }, { "הָחְלַט", "hoḥlaṭ" }, { "וַיֵּבְךְּ", "wayyēḇk" }, { "אַרְאֶךָּ", "ʾarʾekkā" }, { "וַיַּשְׁקְ", "wayyašq" }, { "אַתְּ", "ʾatt" }, { "וּוָווֹ", "ūwāwō" }, { "וָו", "wāw" }, { "תָּו", "tāw" }, { "קַו", "qaw" }, { "לָאו", "lāw" }, { "חַי", "ḥay" }, { "חָי", "ḥāy", "pausal" }, { "פִּיו", "pīw" }, { "כִּסְלֵו", "kislēw" }, { "גּוֹי", "gōy" }, { "גֹּי", "gōy" }, { "גֹּיִים", "gōyīm" }, { "רָאוּי", "rāʾūy" }, { "קִיא", "qī" }, { "יָבִיאוּ", "yāḇīʾū" }, { "יְבִיאוּן", "yəḇīʾūn" }, { "מֵאוּן", "mēʾūn" }, { "מֵיאוּן", "mēʾūn" }, { "בּוֹאוּ", "bōʾū" }, { "בֹּאוּ", "bōʾū" }, { "בּוּאוּ", "būʾū", "made-up word, but may help identify the issue" }, { "אָבִיאָה", "ʾāḇīʾā" }, { "מֵאָה", "mēʾā" }, { "גֵּיאָהּ", "gēʾāh" }, { "אָבוֹאָה", "ʾāḇōʾā" }, { "אָבֹאָה", "ʾāḇōʾā" }, { "נְשׂוּאָה", "nəśūʾā" }, { "קִיאוֹ", "qīʾō" }, { "גֵּאוֹ", "gēʾō" }, { "גֵּיאוֹ", "gēʾō" }, { "בּוֹאוֹ", "bōʾō" }, { "בֹּאוֹ", "bōʾō" }, { "מִלּוּאוֹ", "millūʾō" }, { "מִי", "mī" }, { "אִיִּים", "ʾiyyīm" }, { "אִיּוֹב", "ʾiyyōḇ" }, { "אִיּוּן", "ʾiyyūn" }, { "אַיִן", "ʾayin" }, { "בּוֹא", "bō" }, { "יְפֵהפֶה", "yəp̄ēp̄e" }, { "אֹהֶל", "ʾōhel" }, { "הָאֹהֱלָה", "hāʾōhĕlā" }, { "אָהֳלוֹ", "ʾohŏlō" }, { "אָהָלְךָ", "ʾoholəḵā" }, { "יִשָּׂשכָר", "yiśśāḵār", "Still undecided if this actually needs to be handled" }, { "הוֹשִׁיעָה נָּא", "hōšīʿā nnā" }, { "עַד בֹּאֲךָ", "ʿaḏ bōʾăḵā" }, { "וַיַּשְׁקְ אֶת הַצֹּאן", "wayyašq ʾeṯ haṣṣōn" }, { "בְּנֵי בְרָק", "bənē ḇərāq" }, { "בְרָק", "ḇərāq" }, { "אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּשְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃", "ʾīš yəhūḏī hāyā bəšūšan habbīrā ūšəmō mordŏḵay ben yāʾīr ben-šimʿī ben-qīš ʾīš yəmīnī." }, { "אִ֣ישׁ יְהוּדִ֔י הָיָ֖ה בְּשׁוּשַׁ֣ן הַבִּירָ֑ה וּשְׁמ֣וֹ מָרְדֳּכַ֗י בֶּ֣ן יָאִ֧יר בֶּן־שִׁמְעִ֛י בֶּן־קִ֖ישׁ אִ֥ישׁ יְמִינִֽי׃", "ʾīš yəhūḏī hāyā bəšūšan habbīrā ūšəmō mordŏḵay ben yāʾīr ben-šimʿī ben-qīš ʾīš yəmīnī.", "fully accented verse; stress should not be indicated in the final syllable" }, { "וַיְהִי הַמַּבּוּל אַרְבָּעִים יוֹם עַל־הָאָרֶץ וַיִּרְבּוּ הַמַּיִם וַיִּשְׂאוּ אֶת־הַתֵּבָה וַתָּרָם מֵעַל הָאָרֶץ׃", "wayəhī hammabbūl ʾarbāʿīm yōm ʿal-hāʾā́reṣ wayyirbū hammáyim wayyiśəʾū ʾeṯ-hattēḇā wattā́rom mēʿal hāʾāreṣ.", "a reminder of why this is hard" }, { "וַיְהִ֧י הַמַּבּ֛וּל אַרְבָּעִ֥ים י֖וֹם עַל־הָאָ֑רֶץ וַיִּרְבּ֣וּ הַמַּ֗יִם וַיִּשְׂאוּ֙ אֶת־הַתֵּבָ֔ה וַתָּ֖רָם מֵעַ֥ל הָאָֽרֶץ׃", "wayəhī hammabbūl ʾarbāʿīm yōm ʿal-hāʾā́reṣ wayyirbū hammáyim wayyiśəʾū ʾeṯ-hattēḇā wattā́rom mēʿal hāʾāreṣ.", "fully accented verse version of the above" }, "implicit ktiv/qre that would be nice to have", { "הִוא", "hī" }, { "יְרוּשָׁלִַם", "yərūšālayim" }, { "יְרוּשָׁלִָם", "yərūšālāyim", "pausal form" }, { "יְרוּשָׁלְַמָה", "yərūšālaymā" }, { "יְרוּשָׁלְָמָה", "yərūšālāymā" }, "ktiv male tests", { "חַיָּיב", "ḥayyāḇ" }, { "חַוָּוה", "ḥawwā" }, { "הֱוֵוה", "hĕwē" }, { "הַיְינוּ", "haynū" }, { "הִתְכַּוְּונוּ", "hiṯkawwənū" }, { "גַּוְונָא", "gawnā" }, { "מְייוּחָד", "məyūḥāḏ" , "there is no way to tell that it really should be məyuḥāḏ, but anyway this test is for the double yod"}, { "כְּדַאי", "kəḏay" }, { "כּוּלָּם", "kullām", "shuruk does not necessarily imply a long vowel" }, { "קִידּוּשׁ", "qiddūš", "chiriq male does not necessarily imply a long vowel" }, } self:iterate(examples, self:do_test_translit("biblical")) end return tests ofm0fv58zx1mzbbwuljk1kdokqyhqpl মডিউল:he-translit/old/testcases/special 828 168756 510308 2026-06-07T12:46:54Z RedminBot 9553 [[en:Module:he-translit/old/testcases/special]] থেকে আনা হলো 510308 Scribunto text/plain -- Unit tests for [[Module:he-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local biblical_tr = require('Module:he-translit/old').biblical local full_link = require('Module:links').full_link local lang = require('Module:languages').getByCode('he') local sc = require('Module:scripts').getByCode('Hebr') local function link(term) return full_link{lang = lang, sc = sc, term = term} end function tests:do_test_translit(text, expected_tr) self:equals(link(text), biblical_tr(text), expected_tr, {comment=comment}) end function tests:test_special_cases() local examples = { "כל", { "כָּל", "kol" }, { "כָּל כָּל כָּל", "kol kol kol" }, { "כָּל הַכָּבוֹד", "kol hakkāḇōḏ" }, { "כָל", "ḵol" }, { "בְּלִי כָל מְאוּם", "bəlī ḵol məʾūm" }, { "מִכָּל", "mikkol" }, { "מִכָּל מָקוֹם", "mikkol māqōm" }, { "בְּכָל", "bəḵol" }, { "בְּכָל מָקוֹם", "bəḵol māqōm" }, { "לְכָל", "ləḵol" }, { "לְכָל מָקוֹם", "ləḵol māqōm" }, { "כְּכָל", "kəḵol" }, { "כְּכָל הַנִּרְאֶה", "kəḵol hannirʾe" }, { "שֶׁכָּל", "šekkol" }, { "שֶׁכָּל מָקוֹם", "šekkol māqōm" }, { "שֶׁמִּכָּל", "šemmikkol" }, { "שֶׁמִּכָּל מָקוֹם", "šemmikkol māqōm" }, { "שֶׁבְּכָל", "šebbəḵol" }, { "שֶׁבְּכָל מָקוֹם", "šebbəḵol māqōm" }, { "שֶׁלְּכָל", "šelləḵol" }, { "שֶׁלְּכָל מָקוֹם", "šelləḵol māqōm" }, { "וְכָל", "wəḵol" }, { "וְכָל מָקוֹם", "wəḵol māqōm" }, { "וּבְכָל", "ūḇəḵol" }, { "וּבְכָל מָקוֹם", "ūḇəḵol māqōm" }, { "וּכְכָל", "ūḵəḵol" }, { "וּכְכָל מָקוֹם", "ūḵəḵol māqōm" }, { "הַכָּל", "hakkol" }, { "בַּכָּל", "bakkol" }, { "לַכָּל", "lakkol" }, { "מֵהַכָּל", "mēhakkol" }, { "שֶׁהַכָּל", "šehakkol" }, { "שֶׁבַּכָּל", "šebbakkol" }, { "שֶׁלַּכָּל", "šellakkol" }, { "וְהַכָּל", "wəhakkol" }, { "וּבַכָּל", "ūḇakkol" }, { "וְלַכָּל", "wəlakkol" }, { "וְכַכָּל", "wəḵakkol" }, { "דְּכָל", "dəḵol" }, { "שַׁכָּל", "šakkol" }, { "כָּלָה", "kālā" }, { "הֵיכָל", "hēḵāl" }, { "מַאֲכָל", "maʾăḵāl" }, { "מִיכָל", "mīḵāl" }, { "מְכָל", "məḵāl" }, { "שָׁכָל", "šāḵāl" }, { "שֻׁכָּל", "šukkāl" }, { "מוּכָל", "mūḵāl" }, } self:iterate(examples, "do_test_translit") end return tests i7vzjt7f5eo1bmb63l7nq3woeh0n3tx মডিউল:he-translit/testcases 828 168757 510309 2026-06-07T12:46:54Z RedminBot 9553 [[en:Module:he-translit/testcases]] থেকে আনা হলো 510309 Scribunto text/plain local tests = require("Module:UnitTests") local m_tr = require("Module:he-translit") local lang = require("Module:languages").getByCode("he") local function check_tr(transliterate) return function(self, word, expected) self:equals( require("Module:links").full_link({term = word, lang = lang}, nil, true), mw.ustring.toNFC(transliterate(word)), mw.ustring.toNFC(expected) ) end end function tests:test_BH_tr() local BH_examples = { "Module:he-translit/testcases", { "בַּיִת", "báyiṯ" }, { "בֵּית", "bēṯ" }, { "בָּֽתִּים", "bɔtīm" }, { "מַחֲנֶה", "maḥănɛ̂" }, { "בָּרָא", "bɔrɔʔ" }, { "רֶגֶל", "rɛ́ḡɛl" }, { "תַּחַת", "táḥaṯ" }, { "חֹרֶשׁ", "ḥórɛš"}, { "אֵפֶר", "ʔép̄ɛr"}, {"כְּנַעַן", "kənáʕan" }, { "כֹּהֵן", "kohen" }, { "מֶלֶךְ", "mɛ́lɛḵ" }, { "מַמְלָכָה", "mamlɔḵɔ̂" }, { "הַמַּמְלָכָה", "hammamlɔḵɔ̂" }, { "הַלְּלוּיָהּ", "halləlūyɔh" }, { "הַֽלְלוּיָהּ", "haləlūyɔh" }, { "יָדַע", "yɔḏaʕ" }, { "שָׁבוּעַ", "šɔḇū́aʕ" }, { "רוּחַ", "rū́aḥ" }, { "גָּבֹהַּ", "gɔḇóah" }, { "מָשִׁיחַ", "mɔšī́aḥ" }, { "רֵיחַ", "rḗaḥ" }, { "שָׂדֶה", "śɔḏɛ̂" }, { "שְׂדֵה", "śəḏê" }, { "בָּנַי", "bɔnay" }, { "בְּנֵי", "bənē" }, { "צָרְכִּי", "ṣɔrkī" }, { "שִׁפְרָה", "šip̄rɔ̂" }, { "חָכְמָה", "ḥɔḵmɔ̂" }, { "קָרָא", "qɔrɔʔ" }, { "קָֽרְאָה", "qɔrəʔɔ̂" }, { "שָׁכְבְּךָ", "šɔḵbəḵɔ" }, { "הָפְכָּה", "hɔp̄kɔ̂", "made-up word, but a particular potentially problematic Unicode situation" }, { "קָטְבּוֹ", "qɔṭbō", "another particular potentially problematic Unicode situation" }, { "נִשְׂרְפָה", "niśrəp̄ɔ̂" }, { "בָּנָיו", "bɔnɔw", "not sure about this one, further checks needed" }, { "בָּנֶיהָ", "bɔnɛ̄hɔ" }, { "מִצְוֹת", "miṣwoṯ" }, { "זִוּוּג", "ziwwūḡ" }, { "רֹאשׁ", "roʔš" }, { "רֵאשִׁית", "reʔšīṯ" }, { "רִאשׁוֹן", "riʔšōn" }, { "מְלָאכָה", "məlɔʔḵɔ̂" }, { "מְלֶאכֶת", "məlɛʔḵɛṯ" }, { "חֵטְא", "ḥeṭʔ" }, { "בָּרָאתָ", "bɔrɔʔṯɔ" }, { "חַטָּאוֹת", "ḥaṭṭɔʔōṯ" }, { "יְראוּ", "yərʔū", "masculine plural imperative of יָרֵא, to check" }, { "וַיֶּאְסֹר", "wayyɛʔsor" }, { "הָחְלַט", "hɔḥlaṭ" }, { "וַיֵּבְךְּ", "wayyeḇk", "not sure about this one, further checks needed" }, { "אַרְאֶךָּ", "ʔarʔɛkkɔ" }, { "וַיַּשְׁקְ", "wayyašq", "not sure about this one, further checks needed" }, { "אַתְּ", "ʔat", "not sure about this one, further checks needed. I would transliterate ʔattə" }, { "וּוָווֹ", "ūwɔwō" }, { "וָו", "wɔw" }, { "תָּו", "tɔw" }, { "קַו", "qaw" }, { "לָאו", "lɔʔw" }, { "חַי", "ḥay" }, { "חָי", "ḥɔy", "pausal" }, { "פִּיו", "pīw" }, { "כִּסְלֵו", "kislew" }, { "גּוֹי", "gōy" }, { "גֹּי", "goy" }, { "גֹּיִים", "goyīm" }, { "רָאוּי", "rɔʔūy" }, { "קִיא", "qīʔ" }, { "יָבִיאוּ", "yɔḇīʔū" }, { "יְבִיאוּן", "yəḇīʔūn" }, { "מֵאוּן", "meʔūn" }, { "מֵיאוּן", "mēʔūn" }, { "בּוֹאוּ", "bōʔū" }, { "בֹּאוּ", "boʔū" }, { "בּוּאוּ", "būʔū", "made-up word, but may help identify the issue" }, { "אָבִיאָה", "ʔɔḇīʔɔ̂" }, { "מֵאָה", "meʔɔ̂" }, { "גֵּיאָהּ", "gēʔɔh" }, { "אָבוֹאָה", "ʔɔḇōʔɔ̂" }, { "אָבֹאָה", "ʔɔḇoʔɔ̂" }, { "נְשׂוּאָה", "nəśūʔɔ̂" }, { "קִיאוֹ", "qīʔō" }, { "גֵּאוֹ", "geʔō" }, { "גֵּיאוֹ", "gēʔō" }, { "בּוֹאוֹ", "bōʔō" }, { "בֹּאוֹ", "boʔō" }, { "מִלּוּאוֹ", "millūʔō" }, { "מִי", "mī" }, { "אִיִּים", "ʔiyyīm" }, { "אִיּוֹב", "ʔiyyōḇ" }, { "אִיּוּן", "ʔiyyūn" }, { "אַיִן", "ʔáyin" }, { "בּוֹא", "bōʔ" }, { "יְפֵהפֶה", "yəp̄êp̄ɛ̂" }, { "אֹהֶל", "ʔóhɛl" }, { "הָאֹהֱלָה", "hɔʔohɛ̆lɔ̂" }, { "אָהֳלוֹ", "ʔɔhɔ̆lō" }, { "אָהָלְךָ", "ʔɔhɔləḵɔ", "not sure about this one, further checks needed" }, { "יִשָּׂשכָר", "yiśśɔḵɔr", "Still undecided if this actually needs to be handled" }, { "הוֹשִׁיעָה נָּא", "hōšīʕɔ̂ nnɔʔ" }, { "עַד בֹּאֲךָ", "ʕaḏ boʔăḵɔ" }, { "וַיַּשְׁקְ אֶת הַצֹּאן", "wayyašq ʔɛṯ haṣṣoʔn", "not sure about this one, further checks needed" }, { "בְּנֵי בְרָק", "bənē ḇərɔq" }, { "בְרָק", "ḇərɔq" }, { "קָם", "qɔm" }, { "אֹתְךָ", "ʔoṯəḵɔ" }, { "אֲדְמַתְכֶם", "ʔăḏmaṯəḵɛm"}, { "לָכֶם", "lɔḵɛm"}, { "שֹׁמְרִים", "šomərīm"}, { "כָּל־הַיּוֹם", "kɔl-hayyōm" }, { "אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּשְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃", "ʔīš yəhūḏī hɔyɔ̂ bəšūšan habbīrɔ̂ ūšəmō mɔrdɔ̆ḵay bɛn yɔʔīr bɛn-šimʕī bɛn-qīš ʔīš yəmīnī." }, { "אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּשְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃", "ʔīš yəhūḏī hɔyɔ̂ bəšūšan habbīrɔ̂ ūšəmō mɔrdɔ̆ḵay bɛn yɔʔīr bɛn-šimʕī bɛn-qīš ʔīš yəmīnī." }, { "אִ֣ישׁ יְהוּדִ֔י הָיָ֖ה בְּשׁוּשַׁ֣ן הַבִּירָ֑ה וּשְׁמ֣וֹ מָרְדֳּכַ֗י בֶּ֣ן יָאִ֧יר בֶּן־שִׁמְעִ֛י בֶּן־קִ֖ישׁ אִ֥ישׁ יְמִינִֽי׃", "ʔīš yəhūḏī hɔyɔ̂ bəšūšan habbīrɔ̂ ūšəmō mɔrdɔ̆ḵay bɛn yɔʔīr bɛn-šimʕī bɛn-qīš ʔīš yəmīnī.", "fully accented verse; stress should not be indicated in the final syllable" }, { "וַיְהִי הַמַּבּוּל אַרְבָּעִים יוֹם עַל־הָאָ֫רֶץ וַיִּרְבּוּ הַמַּיִם וַיִּשְׂאוּ אֶת־הַתֵּבָה וַתָּ֫רָם מֵעַל הָאָ֫רֶץ׃", "wayəhī hammabbūl ʔarbɔʕīm yōm ʕal-hɔʔɔ́rɛṣ wayyirbū hammáyim wayyiśʔū ʔɛṯ-hatteḇɔ̂ wattɔ́rɔm meʕal hɔʔɔ́rɛṣ.", "a reminder of why this is hard" }, { "וַיְהִ֧י הַמַּבּ֛וּל אַרְבָּעִ֥ים י֖וֹם עַל־הָאָ֑֫רֶץ וַיִּרְבּ֣וּ הַמַּ֗יִם וַיִּשְׂאוּ֙ אֶת־הַתֵּבָ֔ה וַתָּ֖֫רָם מֵעַ֥ל הָאָ֫רֶץ׃", "wayəhī hammabbūl ʔarbɔʕīm yōm ʕal-hɔʔɔ́rɛṣ wayyirbū hammáyim wayyiśʔū ʔɛṯ-hatteḇɔ̂ wattɔ́rɔm meʕal hɔʔɔ́rɛṣ.", "fully accented verse version of the above" }, "Category:Biblical Hebrew", {"אִבְחָה", "ʔiḇḥɔ̂"}, {"אָבִיב", "ʔɔḇīḇ"}, {"אֲבִיּוֹנָה", "ʔăḇiyyōnɔ̂"}, {"אַבִּיר", "ʔabbīr"}, {"אֶבֶן", "ʔɛ́ḇɛn"}, {"אָהָל", "ʔɔhɔl"}, {"אֵטוּן", "ʔeṭūn"}, {"אִי", "ʔī"}, {"אֵי", "ʔē"}, {"אִלֵּף", "ʔillep̄"}, {"אָכְלָה", "ʔɔḵlɔ̂", "food"}, {"אָֽכְלָה", "ʔɔḵəlɔ̂", "she ate"}, {"אַלּוּף", "ʔallūp̄"}, {"אֻלַי", "ʔulay"}, {"אַף", "ʔap̄"}, {"אַרְגְּוָן", "ʔargəwɔn"}, {"אַרְגָּז", "ʔargɔz"}, {"אִשָּׁה", "ʔiššɔ̂"}, {"אִשֶּׁה", "ʔiššɛ̂"}, {"אַשְׁרֵי", "ʔašrē"}, {"אֵת, אֶת־", "ʔeṯ, ʔɛṯ-"}, {"אֹת", "ʔoṯ"}, { 'שָׁדַדְתְּ', 'šɔḏaḏt', 'penultimate shva not pronounced in BH but pronounced in MH' }, { 'שָֽׁכְחוּ', 'šɔḵəḥū' }, "schwa schwa", { 'אֲפַרְסְכַי', 'ʔăp̄arsəḵay' }, { 'אֶלְיְהוֹעֵינַי', 'ʔɛlyəhōʕēnay' }, { 'אֶשְׁקְלוֹנִי', 'ʔɛšqəlōnī' }, -- { 'אַחְמְתָא', 'ʔaḥməṯɔʔ' }, -- Aramaic { 'אַכְזְרִיּוּת', 'ʔaḵzəriyyūṯ' }, { 'אַשְׁקְלוֹן', 'ʔašqəlōn' }, { 'בֵּלְטְשַׁאצַּר', 'belṭəšáʔṣar' }, { 'הַמַּחְלְקוֹת', 'hammaḥləqōṯ' }, { 'חֲשַׁבְנְיָה', 'ḥăšaḇnəyɔ̂' }, { 'יְקַבְצְאֵל', 'yəqaḇṣəʔel' }, { 'יְרַחְמְאֵל', 'yəraḥməʔel' }, { 'יְרַחְמְאֵלִי', 'yəraḥməʔelī' }, { 'יִבְלְעָם', 'yiḇləʕɔm' }, { 'יִבְנְיָה', 'yiḇnəyɔ̂' }, { 'יִזְרְעֵאל', 'yizrəʕeʔl' }, { 'יִזְרְעֵאלִי', 'yizrəʕeʔlī' }, { 'יִזְרְעֵאלִית', 'yizrəʕeʔlīṯ' }, { 'יִרְמְיָה', 'yirməyɔ̂' }, { 'יִשְׁמְרַי', 'yišməray' }, { 'יִשְׂרְאֵלִי', 'yiśrəʔelī' }, { 'יִשְׂרְאֵלִית', 'yiśrəʔelīṯ' }, { 'יִתְרְעָם', 'yiṯrəʕɔm' }, { 'יַבְנְאֵל', 'yaḇnəʔel' }, { 'יַחְזְיָה', 'yaḥzəyɔ̂' }, { 'יַחְלְאֵל', 'yaḥləʔel' }, { 'יַחְלְאֵלִי', 'yaḥləʔelī' }, { 'יַחְצְאֵל', 'yaḥṣəʔel' }, { 'יַחְצְאֵלִי', 'yaḥṣəʔelī' }, { 'יׇקְדְעָם', 'yɔqḏəʕɔm' }, { 'יׇקְמְעָם', 'yɔqməʕɔm' }, { 'יׇקְנְעָם', 'yɔqnəʕɔm' }, { 'יׇקְתְאֵל', 'yɔqṯəʔel' }, { 'יׇרְקְעָם', 'yɔrqəʕɔm' }, { 'כַּרְמְלִי', 'karməlī' }, { 'כַּרְמְלִית', 'karməlīṯ' }, { 'מִכְמְתָת', 'miḵməṯɔṯ' }, { 'מִשְׂרְפוֹת', 'miśrəp̄ōṯ' }, { 'מִתְרְדָת', 'miṯrəḏɔṯ' }, { 'מַחְלְקָה', 'maḥləqɔ̂' }, { 'מַרְגְלָה', 'marḡəlɔ̂' }, { 'מַרְסְנָא', 'marsənɔʔ' }, { 'מַשְׂמְרָה', 'maśmərɔ̂' }, -- { 'נֶבְרְשָׁא', 'nɛḇrəšɔʔ' }, -- Aramaic { 'קַבְצְאֵל', 'qaḇṣəʔel' }, { 'רַבְרְבָן', 'raḇrəḇɔn' }, { 'רַעְמְסֵס', 'raʕməses' }, { 'שַׂרְסְכִים', 'śarsəḵīm' }, { 'שׇׂכְלְתָנוּ', 'śɔḵləṯɔnū' }, "List for transliteration comparison", "Simple vowels", { "בָּרָא", "bɔrɔʔ" }, { "אַרְגָּמָן", "ʔargɔmɔn" }, { "תַּחַת", "táḥaṯ" }, { "עַיִן", "ʕáyin" }, { "כֹּהֵן", "kohen" }, { "אֵל", "ʔel" }, { "אֶל", "ʔɛl" }, { "נֶפֶשׁ", "nɛ́p̄ɛš" }, { "אִם", "ʔim" }, { "יִשְׂרָאֵל", "yiśrɔʔel" }, { "קֹדֶשׁ", "qóḏɛš" }, { "רֹב", "roḇ" }, { "נְאֻם", "nəʔum" }, { "שֻׁלְחָן", "šulḥɔn" }, "Matres lectionis", { "אָנֹכִי", "ʔɔnoḵī" }, { "אֲנָשִׁים", "ʔănɔšīm" }, { "בֵּין", "bēn" }, { "תֵּימָן", "tēmɔn" }, { "יְהוּדִי", "yəhūḏī" }, { "שְׁמוּאֵל", "šəmūʔel" }, { "גָּדוֹל", "gɔḏōl" }, { "שָׁלוֹם", "šɔlōm" }, { "מַצֵּבָה", "maṣṣeḇɔ̂" }, { "מֶרְכָּבָה", "mɛrkɔḇɔ̂" }, { "יָפֶה", "yɔp̄ɛ̂" }, { "מֹשֶׁה", "mošɛ̂" }, { "אַרְיֵה", "ʔaryê" }, { "אַיֵּה", "ʔayyê" }, { "כֹּה", "kô" }, { "פֹּה", "pô" }, { "מָה‚ מֶה‚ מַה", "mɔ̂‚ mɛ̂‚ mâ" }, "Shwas", { "כְּנַעַן", "kənáʕan" }, { "נְחֹשֶׁת", "nəḥóšɛṯ" }, { "מַחֲשָׁבָה", "maḥăšɔḇɔ̂" }, { "יַאֲקֹב", "yaʔăqoḇ" }, { "אֱדוֹם", "ʔɛ̆ḏōm" }, { "אֱלֹהִים", "ʔɛ̆lohīm" }, { "מָרְדֳּכַי", "mɔrdɔ̆ḵay" }, { "עֳנִי", "ʕɔ̆nī" }, "Pathah furtivum", { "כֹּחַ", "kóaḥ" }, { "רֵיחַ", "rḗaḥ" }, { "יֵשׁוּעַ", "yešū́aʕ" }, "Segolates", { "רֶגֶל", "rɛ́ḡɛl" }, { "תַּחַת", "táḥaṯ" }, { "חֹרֶשׁ", "ḥórɛš" }, { "אֵפֶר", "ʔép̄ɛr" }, "Ability to distinguish spelling", { "כֹּל", "kol" }, { "כּוֹל", "kōl" }, { "נֹגַהּ", "noḡah" }, { "עָלֶה", "ʕɔlɛ̂" }, { "מַרְפֵּא", "marpeʔ" }, { "אֵי", "ʔē" }, { "אֹפֵּה", "ʔoppê" }, { "מְנַשֶּׁה", "mənaššɛ̂" }, { "פֹּה", "pô" }, { "פּוֹ", "pō" }, { "פֹּא", "poʔ" }, } tests:iterate(BH_examples, check_tr(m_tr.BH_tr)) end function tests:test_MH_tr() local MH_examples = { "Modern Hebrew", { 'אָמָּנוּת', "omanút" }, { 'מַקְלֵעַ', "makléa" }, { 'שְׁמַעְיָה', 'shmayá' }, { 'אַבְּסוּרְד', "absúrd"}, -- { 'ביומטריה', ? }, { 'בִּיּוֹמֶ֫טְרִיָּה', "biyométriya" }, { 'קַפְרִיסִין', "kafrisín" }, { 'חֹרֶף', "khóref" }, { 'טוּרְקִיז', "turkíz" }, { 'טַחַב', "tákhav" }, { 'יִוָּלֵד', "yivaléd" }, { 'יָקִינְתּוֹן', "yakintón" }, { 'כֻּתְנָה', "kutná" }, { 'נַגָּרִיָּה', "nagariyá" }, { 'נַעֲלֶה', "na'alé" }, { 'מִצְווֹת', "mitsvót" }, { 'מָקוֹם', "makóm" }, { 'פֶּרוּאָנִי', "peru'aní" }, { 'צִדְפָּה', "tsidpá" }, { 'תׇּכְנָה', "tokhná" }, { 'תָּכְנָה', "tokhná" }, { 'רְאוּ', "re'ú" }, { 'גּ׳וּק', "juk" }, { 'ג׳וּק', "juk" }, { 'גִּ׳ירָ֫אפָה', "jiráfa" }, { 'גִ׳ירָ֫אפָה', "jiráfa" }, { 'זַ׳רְגוֹן', "zhargón" }, { 'קַפּוּצִ֫׳ינוֹ', "kapuchíno" }, { 'סְקוֹץ׳', "skoch" }, { 'סְתוֹם תַּ׳פֶּה', "stom t'apé" }, { 'אִמָּ֫א׳לֶה', "imále" }, { 'שָׁדַדְתְּ', 'shadádet', '2fs past of שָׁדַד' }, { 'שָֽׁכְחוּ', 'shakhekhú', '3pl past of שָׁכַח' }, { "בָּֽתִּים", "batím" }, {"אָכְלָה", "okhlá", "food"}, {"אָֽכְלָה", "akhelá", "she ate"}, { "קָם", "kam" }, { "לֹא", "lo" }, { "הִתְבַּגְּרוּת", "hitbagrút" }, { "מִמְךָ", "mimkhá" }, { "גַּבֹהַּ", "gavóah" }, { 'חָזָ״ל', "khazá″l" }, { 'נַחַ״ל', "nakhá″l" }, { 'רה״מ', "RH″M" }, { 'ב״ה', "B″H" }, "List of romanizations", {"ב בּ ג גּ ג׳ ד דּ ה הּ ו וּ ז זּ ז׳ ח ט טּ י יּ ך כ ךּ כּ ל לּ ם מ מּ ן נ נּ ס סּ ף פ ףּ פּ ץ צ צּ ץ׳ צ׳ ק קּ ר רּ שׁ שּׁ שׂ שּׂ ת תּ ע׳", "v b g g j d d h h v ú z z zh kh t t y y kh kh k k l l m m m n n n s s f f p p ts ts ts ch ch k k r r sh sh s s t t ġ"}, {"טְ חֱ חֲ חֳ טִ טֵ טֶ טַ טָ טֹ טֻ טוּ טֵי טֶי טַי טַיְ טָי טָיְ טֹי טֹיְ טֻי טֻיְ טוּי טוּיְ", "t khe kha kha ti te te ta ta to tu tu te te tay tay tay tay toy toy tuy tuy tuy tuy"}, "schwa schwa", { "אֲפַרְסְכַי", "afarsekháy" }, { "אֶלְיְהוֹעֵינַי", "elyeho'enáy" }, { "אֶשְׁקְלוֹנִי", "eshkeloní" }, -- { "אַחְמְתָא", "akhmetó" }, -- Aramaic { "אַכְזְרִיּוּת", "akhzeriyút" }, { "אַשְׁקְלוֹן", "ashkelón" }, { "בֵּלְטְשַׁאצַּר", "belteshátsar" }, { "הַמַּחְלְקוֹת", "hamakhlekót" }, { "חֲשַׁבְנְיָה", "khashavneyá" }, { "יְקַבְצְאֵל", "yekavtse'él" }, { "יְרַחְמְאֵל", "yerakhme'él" }, { "יְרַחְמְאֵלִי", "yerakhme'elí" }, { "יִבְלְעָם", "yivle'ám" }, { "יִבְנְיָה", "yivneyá" }, { "יִזְרְעֵאל", "yizre'él" }, { "יִזְרְעֵאלִי", "yizre'elí" }, { "יִזְרְעֵאלִית", "yizre'elít" }, { "יִרְמְיָה", "yirmeyá" }, { "יִשְׁמְרַי", "yishmeráy" }, { "יִשְׂרְאֵלִי", "yisre'elí" }, { "יִשְׂרְאֵלִית", "yisre'elít" }, { "יִתְרְעָם", "yitre'ám" }, { "יַבְנְאֵל", "yavne'él" }, { "יַחְזְיָה", "yakhzeyá" }, { "יַחְלְאֵל", "yakhle'él" }, { "יַחְלְאֵלִי", "yakhle'elí" }, { "יַחְצְאֵל", "yakhtse'él" }, { "יַחְצְאֵלִי", "yakhtse'elí" }, { "יׇקְדְעָם", "yokde'ám" }, { "יׇקְמְעָם", "yokme'ám" }, { "יׇקְנְעָם", "yokne'ám" }, { "יׇקְתְאֵל", "yokte'él" }, { "יׇרְקְעָם", "yorke'ám" }, { "כַּרְמְלִי", "karmelí" }, { "כַּרְמְלִית", "karmelít" }, { "מִכְמְתָת", "mikhmetát" }, { "מִשְׂרְפוֹת", "misrefót" }, { "מִתְרְדָת", "mitredát" }, { "מַחְלְקָה", "makhleká" }, { "מַרְגְלָה", "margelá" }, { "מַרְסְנָא", "marsená" }, { "מַשְׂמְרָה", "masmerá" }, -- { "נֶבְרְשָׁא", "nevreshó" }, -- Aramaic { "קַבְצְאֵל", "kavtse'él" }, { "רַבְרְבָן", "ravreván" }, { "רַעְמְסֵס", "ramesés" }, { "שַׂרְסְכִים", "sarsekhím" }, { "שׇׂכְלְתָנוּ", "sokhletanú" }, "From Wikipedia, with schwa", { "שָׁכְחוּ", "shakhekhú" }, { "שָׁדַדְתְּ", "shadádet" }, { "נְמָלִים", "nemalím" }, { "מְנִיָּה", "meniyá" }, { "תְּאָרִים", "te'arím" }, -- Prefixes (with initial schwa as e) cannot be handled by the module. -- { "בְּרֵיחָהּ", "berekhá" }, -- { "בְּחִישָׁה", "bekhishá" }, -- { "וְרוֹדִים", "verodím" }, -- { "כְּרָזָה", "kerazá" }, -- { "לְפָּרִיז", "leparíz" }, -- { "תְּבַלּוּ", "tevalú" }, { "מִצְּעָדִים", "mits'adím" }, -- colloquial: { "מִצְּעָדִים", "mitse'adím" }, -- { "מִרְוָחִים", "mirevakhím" }, -- schwa after prefix, colloquial pronunciation -- { "מֵרְוָחִים", "merevakhím" }, -- schwa after prefix, colloquial pronunciation -- { "לַאֲרָיוֹת וְלְנְמֵרִים יֵשׁ פַּרְוָה", "le'arayót velenemerím ..." }, -- { "וְלִנְמֵרִים", "velinmerím" }, -- { "וְכְּיְלָדִים שִׂחַקְנוּ בַּחוּץ", "vekeyeladím ..." }, -- { "וְכִילָדִים", "vekhiladím" }, { "אִשְׁפְּזוּ", "ishpezú" }, "From Wikipedia, without schwa", -- { "מָכְרוּ", "makhrú" }, { "שָׁלַלְתְּ", "shalált" }, { "גְּמָלִים", "gmalím" }, { "בְּנִיָּה", "bniyá" }, { "מִתְאָרִים", "mit'arím" }, { "תְּמָרִים", "tmarím" }, { "בְּרֵיכָה", "brekhá" }, { "בְּחִישָׁה", "bkhishá" }, { "וְרוּדִים", "vrudím" }, { "כְּרָזָה", "krazá" }, { "תְּבַלּוּל", "tvalúl" }, { "מִצְּמָדִים", "mitsmadím" }, { "מִצְעָדִים", "mits'adím" }, { "מִרְוָחִים", "mirvakhím" }, { "אִישׁ פְּזוּר דַּעַת", "ish pzur dá'at" }, "kol", { "כָּל", "kol" }, -- maybe without stress mark? { "כָּל כָּל כָּל", "kol kol kol" }, { "כָּל הַכָּבוֹד", "kol hakavód" }, { "כָל", "khol" }, -- { "בְּלִי כָל מְאוּם", "belí khol me'úm" }, -- { "מִכָּל", "mikól" }, -- { "מִכָּל מָקוֹם", "mikól makóm" }, -- { "בְּכָל", "bekhól" }, -- { "בְּכָל מָקוֹם", "bekhól makóm" }, -- { "לְכָל", "lekhól" }, -- { "לְכָל מָקוֹם", "lekhól makóm" }, -- { "כְּכָל", "kekhól" }, -- { "כְּכָל הַנִּרְאֶה", "kekhól hanir'é" }, -- { "שֶׁכָּל", "shekól" }, -- { "שֶׁכָּל מָקוֹם", "shekól makóm" }, -- { "שֶׁמִּכָּל", "shemikól" }, -- { "שֶׁמִּכָּל מָקוֹם", "shemikól makóm" }, -- { "שֶׁבְּכָל", "shebekhól" }, -- { "שֶׁבְּכָל מָקוֹם", "shebekhól makóm" }, -- { "שֶׁלְּכָל", "shelekhól" }, -- { "שֶׁלְּכָל מָקוֹם", "shelekhól makóm" }, -- { "וְכָל", "vekhól" }, -- { "וְכָל מָקוֹם", "vekhól makóm" }, -- { "וּבְכָל", "uvekhól" }, -- { "וּבְכָל מָקוֹם", "uvekhól makóm" }, -- { "וּכְכָל", "ukhekhól" }, -- { "וּכְכָל מָקוֹם", "ukhekhól makóm" }, -- { "הַכָּל", "hakól" }, -- { "בַּכָּל", "bakól" }, -- { "לַכָּל", "lakól" }, -- { "מֵהַכָּל", "mehakól" }, -- { "שֶׁהַכָּל", "shehakól" }, -- { "שֶׁבַּכָּל", "shebakól" }, -- { "שֶׁלַּכָּל", "shelakól" }, -- { "וְהַכָּל", "vehakól" }, -- { "וּבַכָּל", "uvakól" }, -- { "וְלַכָּל", "velakól" }, -- { "וְכַכָּל", "vekhakól" }, -- { "דְּכָל", "dekhól" }, -- { "שַׁכָּל", "shakól" }, { "כָּל־הַיּוֹם", "kol-hayóm" }, { "כָּל כָּךְ", "kol kakh" }, -- { "בְּכָל אֹפֶן", "bekhól ófen" }, -- { "לְכָל שַׁבָּת יֵשׁ מוֹצָאֵי שַׁבָּת", "lekhól shabát yesh motsa'é shabát" }, "not kol", { "כָּלָה", "kalá" }, { "הֵיכָל", "hekhál" }, { "מַאֲכָל", "ma'akhál" }, { "מִיכָל", "mikhál" }, { "מְכָל", "mekhál" }, { "שָׁכָל", "shakhál" }, { "שֻׁכָּל", "shukál" }, { "מוּכָל", "mukhál" }, { "סָכָל", "sakhál" }, } tests:iterate(MH_examples, check_tr(m_tr.MH_tr)) end return tests 12lrpnq4mu7p84dehfm2kynilur057l মডিউল:hit-translit/sign-list 828 168758 510310 2026-06-07T12:46:56Z RedminBot 9553 [[en:Module:hit-translit/sign-list]] থেকে আনা হলো 510310 Scribunto text/plain local m_str_utils = require("Module:string utilities") local codepoint = m_str_utils.codepoint local gmatch = m_str_utils.gmatch local m_hit_tag = require("Module:hit-translit/tag") local m_table = require("Module:table") local export = {} --[=[ -- Fields: -- [1] = The Hethitisches Zeichenlexikon (HZL) number(s) -- [2] = The Borger (2003) number(s) -- [3] = the Hittite signs -- [4] = the Sumerian signs -- [5] = the Akkadian signs -- Use "q" in transcriptions. -- ]=] export.sign_list = { ["𒀸"] = { 1, 1, { "aš" }, { "AŠ" }, { "ÀS", "ÀZ", "DIL", "DEL", "INA", "RÙ", "RUM" } }, ["𒄬"] = { 2, 3, { "ḫal" }, { "ḪAL" }, {} }, ["𒉾"] = { 3, { 741, 882 }, {}, { "PÉŠ" }, {} }, ["𒁄"] = { 4, 5, { "pal", "bal" }, { "BAL" }, {} }, ["𒋓"] = { 5, 115, { "šir" }, { "NU₁₁", "SIR₄", "ŠIR" }, {} }, ["𒄈"] = { 6, 6, {}, { "GÍR", "UL₄" }, {} }, ["𒋻"] = { 7, 9, { "tar", "ḫaš" }, { "KU₅", "KUD", "TAR" }, { "DAR₆", "KUD", "KUT", "QUD", "QUT", "ṬAR", "ṬÍR" } }, ["𒀭"] = { 8, 10, { "an" }, { "AN", "DINGIR" }, { "ÌL" } }, ["𒀳"] = { 9, 90, {}, { "APIN", "ENGAR" }, {} }, ["𒈤"] = { 10, 91, { "maḫ" }, { "MAḪ" }, {} }, ["𒉡"] = { 11, 112, { "nu" }, { "NU" }, { "LÀ" } }, ["𒆰"] = { 12, 117, { "kul" }, { "KUL", "NUMUN" }, {} }, ["𒁁"] = { 13, 113, { "pát", "pád", "pít", "píd", "pè", "pì" }, { "BAD", "BE", "SUMUN", "SUN", "TIL", "ÚŠ" }, { "BAD", "BAT", "BAṬ", "BE", "BI₄", "MID", "MIT", "MIṬ" } }, ["𒁴"] = { 14, 167, { "dim", "tim" }, {}, { "DI₁₁", "TÌ" } }, ["𒈾"] = { 15, 110, { "na" }, { "NA" }, {} }, ["𒀴"] = { 16, 18, {}, { "ÀR", "ARAD", "NÍTA" }, {} }, ["𒈬"] = { 17, 98, { "mu" }, { "MU", "MUḪALDIM" }, {} }, ["𒁵"] = { 18, 168, {}, { "MUN" }, {} }, ["𒈜"] = { 19, 570, {}, { "NAR" }, {} }, ["𒈦"] = { 20, 121, { "pár", "bar", "maš" }, { "BÁN", "BAR", "MAŠ", "MÁŠDA" }, { "MAS" } }, ["𒋡"] = { 21, 99, { "qa", "ga₅", "ka₄" }, { "SÀL", "SÀLA", "SAGI" }, {} }, ["𒈮"] = { 22, 12, {}, { "MUG" }, {} }, ["𒍚"] = { 23, 203, {}, { "UZ₆" }, {} }, ["𒄷"] = { 24, 132, { "ḫu" }, { "MUŠEN" }, { "BAG", "BAK", "BAQ" } }, ["𒄷𒋛"] = { 25, 133, {}, { "U₅" }, { "U₅" } }, ["𒄷𒄭"] = { 26, 137, {}, { "MUD" }, { "MUD", "MUT", "MUṬ" } }, ["𒈺"] = { 27, 154, {}, { "SE₂₄", "SÈD", "ŠE₁₂" }, {} }, -- 28 (SIxSÁ) unencoded ["𒋥"] = { 29, 139, { "rat", "rad" }, {}, { "RAṬ", "RÍT" } }, ["𒄀"] = { 30, 141, { "gi", "ge" }, { "GI", "SI₂₂", "SIG₁₇" }, { "KÍ", "KÉ", "QÌ", "QÈ" } }, ["𒄁"] = { 31, 141, {}, {}, {}, hurr = { "geₑ" } }, ["𒊑"] = { 32, 142, { "ri", "re", "tal", "dal" }, { "RI" }, { "DAL<sup>?</sup>" } }, ["𒍣"] = { 33, 140, { "zi", "ze" }, { "ZI" }, { "SÍ", "SÉ", "ṢÍ", "ṢÉ" } }, ["𒉣𒇬"] = { 34, 145, {}, { "TÙR" }, {} }, ["𒆲"] = { 35, 131, {}, { "KUN" }, {} }, ["𒉣"] = { 36, 143, {}, { "NUN" }, {} }, ["𒋾"] = { 37, 118, { "ti", "dì" }, { "TI", "TÌL" }, { "DÌ", "ṬÌ" } }, ["𒈧"] = { 38, 130, {}, { "MÁŠ" }, {} }, ["𒉆"] = { 39, 134, { "nam" }, { "NAM", "SIM", "SÍN" }, {} }, ["𒂗"] = { 40, 164, { "en", "in₄" }, { "EN", "ENSI" }, { "IN₄" } }, ["𒈹"] = { 41, 153, {}, { "INANNA", "INNIN" }, {} }, ["𒋩"] = { 42, 151, { "šur" }, { "SUR", "ŠUR" }, {} }, ["𒊒"] = { 43, 111, { "ru" }, { "RU", "ŠUB" }, { "ŠUB", "ŠUP" } }, ["𒅁"] = { 44, 807, { "ib", "ip", "eb", "ep" }, { "IB", "URAŠ", "URTA" }, {} }, ["𒇇"] = { 45, 766, {}, { "U₈", "US₅", "USDUḪA" }, {} }, ["𒂄"] = { 46, 744, { "zul" }, {}, { "SUL", "ŠUL" } }, ["𒆥"] = { 47, 815, {}, { "GUR₁₀", "KIN" }, { "QI", "QE" } }, ["𒑚"] = { 48, 826, {}, { "ŠUŠANA" }, {} }, ["𒆏"] = { 49, 148, { "kap", "kab", "gáp", "gáb" }, { "GÁB", "GÙB", "KAB" }, { "QÁB", "QÁP" } }, ["𒄸"] = { 49, 148, {}, { "ḪÚB" }, {} }, ["𒄽"] = { 50, 150, { "ḫub", "ḫup" }, { "ḪUB" }, {} }, ["𒌨"] = { 51, 828, { "ur", "lik", "lig" }, { "TÉŠ", "UR" }, { "TAŠ" }, hurr = { "TÍŠ" } }, ["𒄇"] = { 52, 830, {}, { "GIDIM" }, {} }, ["𒌇"] = { 53, 827, {}, { "TUK", "TUKU" }, {} }, ["𒃢"] = { 54, 408, {}, { "SILA₄" }, {} }, ["𒇅"] = { 55, 801, {}, { "BÚGIN", "BÚNIN" }, {} }, ["𒂷"] = { 56, 387, {}, { "GÁ", "MAL", "PISAN" }, { "BA₄", "MÀ" } }, ["𒂼"] = { 57, 392, {}, { "AMA", "DAGAL" }, {} }, ["𒃡"] = { 58, 411, {}, { "ÙR" }, {} }, ["𒃥"] = { 59, 418, {}, { "ÀRAḪ", "ÉSAG" }, {} }, ["𒃌"] = { 60, 431, {}, { "GALGA" }, {} }, ["𒃷"] = { 61, 174, { "gán", "kán" }, { "GÁN", "IKU" }, {} }, ["𒂞"] = { 62, 818, {}, { "ERIN", "EREN" }, {} }, ["𒋁"] = { 63, 821, {}, { "ŠÉŠ" }, {} }, ["𒋗𒆸"] = { 64, 567, {}, { "ŠU-NÍGIN" }, {} }, ["𒋠"] = { 65, 816, {}, { "SÍG", "SÍK", "SIKI" }, {} }, ["𒋠𒊩"] = { 66, 816, {}, { "SÍG-MUNUS" }, {} }, ["𒅅"] = { 67, 136, { "iq", "eq", "ig", "ik", "eg", "ek" }, { "GÁL", "IG" }, {} }, -- I stopped adding Akkadograms here, fyi ["𒋗"] = { 68, 567, { "šu" }, { "ŠU", "GÉŠBU" }, { "KAT₇", "SUₓ" } }, ["𒆬"] = { 69, 745, {}, { "KÙ", "KUG", "AZAG", "GUŠKIN" }, {} }, ["𒊷"] = { 70, 571, {}, { "GIŠIMMAR" }, {} }, ["𒁰"] = { 71, 166, {}, { "DÀRA" }, { "TÀRA" } }, ["𒉌"] = { 72, 380, { "ni", "né" }, { "À", "IÀ", "NI", "ZAL" }, { "LÍ", "ṢAL" } }, ["𒉌𒌓"] = { 73, 385, {}, { "IA₄", "NA₄", "ZÁ" }, {} }, ["𒉏"] = { 74, 690, {}, { "DÀḪ", "ELAM", "NIM" }, { "NIM", "NEM", "NUM" } }, ["𒆕"] = { 75, 379, {}, { "DÙ", "GAG", "RÚ" }, { "QAQ" } }, ["𒉍"] = { 76, 380, {}, {}, {}, hurr = { "néₑ" } }, ["𒅕"] = { 77, 437, { "ir", "er" }, { "IR" }, {} }, ["𒇽"] = { 78, 514, {}, { "LÚ" }, {} }, ["𒋀"] = { 79, 535, {}, { "SES", "ŠEŠ" }, {} }, ["𒀿"] = { 80, 173, {}, { "AŠGAB" }, {} }, ["𒀝"] = { 81, 127, { "ag", "ak", "aq" }, { "AG", "AK" }, {} }, ["𒀞"] = { 82, 129, {}, { "MÈ" }, {} }, ["𒁯"] = { 83, 183, {}, { "GÙN" }, { "TÁR", "ṬÁR" } }, ["𒌗"] = { 84, 20, {}, { "ITI", "ITU" }, {} }, ["𒋒"] = { 85, 162, {}, { "ŠINIG" }, {} }, ["𒋛"] = { 86, 181, { "ší", "šé" }, { "SI" }, { "SI", "SE", "ṢÌ", "ŠÍ", "ŠÉ" }, hatt = { "si" } }, ["𒈣"] = { 87, 201, {}, { "MÁ" }, {} }, ["𒂈"] = { 88, 557, {}, { "ŠÙDUL", "ŠÙDUN" }, {} }, ["𒋛𒀀"] = { 89, 207, {}, { "DIRI", "SA₅" }, { "DIR" } }, ["𒋰"] = { 90, 209, { "tab", "tap" }, { "TAB", "LÍMMU" }, { "DÁB", "DÁP", "ṬAB", "ṬAP" }, hurr = { "taw" } }, ["𒋳"] = { 91, 221, { "šum" }, { "ŠUM", "TAG" }, { "TÀ" } }, ["𒊍"] = { 92, 297, { "az" }, { "AZ" }, { "AS", "AṢ" } }, ["𒊌"] = { 93, 296, { "uq", "ug", "uk" }, { "UG", "PÀRIG" }, {} }, ["𒊋"] = { 94, 295, {}, { "NIB" }, {} }, ["𒆷"] = { 95, 89, { "la" }, { "LA" }, {} }, ["𒂇"] = { 96, 556, {}, { "UKU" }, {} }, ["𒀊"] = { 97, 223, { "ab", "ap" }, { "AB" }, {} }, ["𒌝"] = { 98, 238, { "um" }, { "UM" }, {}, hurr = { "ubₓ" } }, ["𒁾"] = { 99, 242, { "tub", "tup" }, { "DUB", "KIŠIB" }, { "ṬUP" } }, ["𒀮"] = { 100, 246, { "nap", "nab" }, { "AN/AN" }, {} }, ["𒀯"] = { 101, 247, {}, { "MUL" }, { "MUL" } }, ["𒌤"] = { 102, 547, {}, { "DÉ" }, {} }, ["𒉓"] = { 103, 320, { "šàm" }, { "ŠÀM" }, {} }, ["𒉙"] = { 104, 324, {}, { "AZU", "ÚZU" }, {} }, ["𒀜"] = { 105, 258, { "at", "ad" }, { "AD" }, { "AṬ" } }, ["𒆟"] = { 106, 271, {}, { "KÉŠ", "KEŠDA", "SÌR", "ŠÈR", "ŠÌR" }, { "SÌR", "ŠÌR" } }, -- 107 (EZEN₄) unencoded ["𒍢"] = { 108, 259, { "zé", "zí" }, { "ZÍ" }, { "SI₂₀", "SE₂₀", "ṢI", "ṢE", "ZÍ" } }, ["𒍏"] = { 109, 230, {}, { "URUDU", "TABIRA", "ÙMMEDA" }, {} }, ["𒌘"] = { 110, 545, {}, { "MÚRU", "MURUB₄" }, {} }, ["𒀔"] = { 111, 232, {}, { "ERI₁₁", "UNU", "UNUG" }, {} }, ["𒈩"] = { 112, 486, { "miš" }, {}, { "MIS", "MIŠ" } }, ["𒃶"] = { 113, 253, { "ḫé", "ḫí" }, { "GAN", "ḪÉ" }, { "ḪÍ", "KAN" } }, ["𒂦"] = { 114, 272, {}, { "BÀD" }, {} }, ["𒈗"] = { 115, 266, {}, { "LUGAL" }, { "ŠÀR" } }, ["𒊐𒃵"] = { 116, 264, {}, { "DÌM" }, { "DÌM" } }, ["𒅋"] = { 117, 348, { "il", "él" }, {}, { "ÉL" } }, ["𒉼"] = { 118, 685, {}, { "PAN" }, {} }, ["𒉒"] = { 119, 316, {}, { "NÍNDA" }, {} }, ["𒄣"] = { 120, 339, { "kum", "gum" }, {}, { "GUM", "KU₁₃", "QU", "QUM" } }, ["𒉘"] = { 121, 326, {}, { "ÁG", "ÁGA" }, {} }, ["𒄤"] = { 122, 340, { "gaz" }, { "GAZ" }, { "GAS", "GAṢ", "KAṢ" } }, ["𒉚𒀀𒀭"] = { 123, 333, {}, { "ŠÁM" }, {} }, ["𒌫"] = { 124, 341, { "úr" }, { "ÚR" }, {} }, ["𒌈"] = { 125, 354, { "tum", "dum", "tu₄" }, { "ÍB", "TU₄" }, { "DU", "DUM", "ÍB", "ÍP", "ÉB", "ÉP", "ṬU₄", "ṬUM" } }, ["𒂕"] = { 126, 356, {}, { "EGIR" }, {} }, ["𒇸"] = { 127, 544, {}, { "LIL" }, { "LIL" } }, ["𒁺"] = { 128, 350, { "du", "tù" }, { "DU", "GIN", "GUB", "RÁ", "RI₆", "ŠA₄" }, { "TÙ", "ṬÙ" } }, ["𒁽"] = { 129, 352, {}, { "KAŠ₄" }, { "KAS₄" } }, ["𒂀"] = { 130, 565, {}, { "DÚB" }, {} }, ["𒃾"] = { 131, 212, { "wi₅" }, { "GEŠTIN" }, {} }, ["𒍑"] = { 132, 381, { "uš" }, { "NITA", "NITAḪ", "ÚS", "UŠ", "GALA" }, { "ÚS" } }, ["𒅗"] = { 133, 24, { "ka" }, { "DU₁₁", "DUG₄", "GÙ", "INIM", "KA", "KIR₄", "ZÚ" }, { "GA₁₄", "QÀ" } }, ["𒅞"] = { 134, 30, {}, { "UKKIN" }, {} }, ["𒅻"] = { 135, 31, {}, { "NUNDUM" }, {} }, ["𒅾"] = { 136, 32, {}, { "SU₆" }, {} }, -- 137 (KAxÚR) unencoded -- 138 (KAxPA) unencoded -- 139 (KAxGIŠ) unencoded ["𒅯"] = { 140, 38, {}, { "KIR₁₄" }, {} }, ["𒆇"] = { 141, 56, {}, { "KAxU" }, {} }, -- 142 (KAxLUM) unencoded ["𒆉"] = { 143, 51, {}, { "ZU₉" }, {} }, ["𒅮"] = { 144, 54, {}, { "BÚN" }, {} }, ["𒆁"] = { 145, 50, {}, { "TÚKUR" }, {} }, ["𒅲"] = { 146, 26, {}, { "MU₇", "TU₆" }, {} }, ["𒅴"] = { 147, 61, {}, { "EME" }, {} }, ["𒅘"] = { 148, 64, {}, { "NAG" }, {} }, ["𒅥"] = { 149, 65, {}, { "GU₇" }, {} }, -- 150 (KAxÀŠ) unencoded ["𒅖"] = { 151, 357, { "iš", "eš₁₅", "mil", "mel" }, { "KUŠ₇", "SAḪAR" }, { "EŠ₁₅", "ÍS", "ÍṢ", "ÍZ" } }, ["𒌒"] = { 152, 504, { "up", "ub" }, {}, { "ÁR" } }, ["𒁉"] = { 153, 358, { "pí", "pé", "bi", "be", "kaš", "gaš" }, { "BI", "KAŠ" }, {} }, ["𒋆"] = { 154, 362, {}, { "LUNGA", "ŠEM", "ŠIM" }, {} }, ["𒀫"] = { 155, 695, {}, { "AMAR" }, { "ṢÁR", "ṢUR" } }, ["𒀬"] = { 156, 696, {}, { "SISKUR", "SÍSKUR" }, {} }, ["𒄞"] = { 157, 472, {}, { "GU₄", "GUD" }, { "GU₄" } }, ["𒊭"] = { 158, 566, { "ša" }, { "ŠA" }, { "SAₓ" } }, ["𒂵"] = { 159, 491, { "ga" }, { "GA", "KÀ" }, { "KÀ", "QÁ" } }, ["𒋫"] = { 160, 248, { "ta", "dá" }, { "TA" }, { "DÁ", "ṬÁ" } }, ["𒅍"] = { 161, 493, {}, { "ÍL" }, {} }, ["𒂁"] = { 162, 499, {}, { "DUG", "BÁḪAR", "BAḪARÌ" }, { "DUG", "DUK", "DUQ", "TÙK", "TÙQ" } }, ["𒋋"] = { 163, 373, {}, { "BAPPIR" }, {} }, ["𒃮"] = { 164, 298, {}, { "GAB", "GABA" }, { "GAB", "GAP", "QAB", "QAP" } }, ["𒂃"] = { 164, 298, {}, { "DU₈", "DUḪ" }, {} }, ["𒁶"] = { 165, 686, {}, { "DÍM", "GIM" }, { "KIM" } }, ["𒌢"] = { 166, 160, {}, { "UMBIN" }, {} }, ["𒆍"] = { 167, 222, {}, { "KÁ", "ABUL" }, {} }, ["𒄠"] = { 168, 309, { "am" }, { "AM" }, {} }, ["𒂔"] = { 168, 309, {}, { "EDIN" }, {} }, ["𒉈"] = { 169, 313, { "ne", "ni₅" }, { "BAR₇", "BÍ", "BIL", "BIR₉", "IZI", "LÁM", "NE", "ŠEG₆", "ÉRIM" }, { "BÍ", "DÈ", "ṬÈ", "GIBIL₆", "GÌRA" } }, ["𒋭"] = { 170, 170, {}, { "LÀL" }, {} }, ["𒈭"] = { 171, 301, { "taḫ", "daḫ", "túḫ" }, { "TAḪ" }, {} }, ["𒉋"] = { 172, 312, { "píl", "bíl", "pél" }, { "GIBIL" }, { "PÉL" }, hurr = { "li₁₃" } }, ["𒃰"] = { 173, 157, { "gad", "gat", "kad", "kat" }, { "GAD", "GADA" }, { "QÀD", "QÀT" } }, ["𒉺"] = { 174, 464, { "pa", "ḫat", "ḫad" }, { "GIDRU", "PA", "UGULA", "GARZA", "NUSKA" }, { "BÁ", "ḪAṬ", "SÀK" } }, ["𒉺𒅁"] = { 175, 466, { "šab", "šap", "šìp" }, { "ŠAB" }, { "SAB", "SAP" } }, ["𒉺𒁽"] = { 176, 464, {}, { "MAŠKIM" }, {} }, ["𒉺𒇻"] = { 177, 468, {}, { "SIPA", "SIPAD" }, {} }, ["𒄑"] = { 178, 469, { "ez", "iz", "níš" }, { "GIŠ", "GISSU" }, { "IS", "ES", "IṢ", "EṢ", "IŠ₆", "NÍŠ" } }, ["𒆸"] = { 179, 755, { "ḫab", "ḫap" }, { "GUD₈", "GUR₄", "ḪAB", "LAGAB", "LÚGUD", "NÍGIN", "RIN" }, { "KIL", "KEL" } }, ["𒇥"] = { 180, 786, { "túl" }, { "GÍGIR", "PÚ", "TÚL" }, {} }, ["𒇡"] = { 181, 767, {}, { "LAGABxSUM" }, { "ṢAR", "ZAR" } }, ["𒆹"] = { 182, 795, {}, { "AMBAR", "BUGIN", "BUNIN", "SUG" }, {} }, ["𒀠"] = { 183, 474, { "al" }, { "AL" }, {} }, ["𒆯"] = { 184, 171, {}, { "KU₇" }, {} }, ["𒄥"] = { 185, 180, { "gur", "kùr" }, { "GUR" }, { "QUR" } }, ["𒇬"] = { 186, 719, {}, { "LAGAR" }, {} }, ["𒂊"] = { 187, 498, { "e" }, { "E", "GURU₂₁", "SIMUG" }, { "I₁₅" } }, ["𒁟"] = { 188, 452, {}, { "UTUL₅" }, {} }, ["𒁛"] = { 189, 455, {}, { "UBUR" }, {} }, ["𒁗"] = { 190, 461, {}, { "E!-KISIM₅xA-MAŠ" }, {} }, ["𒈥"] = { 191, 483, { "mar" }, { "MAR" }, {} }, ["𒊕"] = { 192, 184, { "šaq", "šag", "šak", "riš" }, { "SAG", "SUR₁₄", "ZARAḪ" }, {} }, ["𒄧"] = { 193, 503, {}, { "GURUN" }, {} }, ["𒆤"] = { 194, 484, {}, { "LÍL", "GÉ", "KE4", "KID" }, { "KID", "KIT", "KIṬ" } }, ["𒌑"] = { 195, 490, { "ú", "šam" }, { "KÙŠ", "Ú", "KIŠI₁₆", "UGA" }, { "ʾUₓ", "ŠAM" } }, ["𒆗"] = { 196, 496, { "kal", "dan", "tan" }, { "ESI", "GURUŠ", "KAL", "KALA", "KALAG", "LAMMA" }, { "GAL₉", "LAB", "LAP", "RIB", "RIP" } }, ["𒌦"] = { 197, 501, { "un" }, { "ÙG", "ÙKU", "UN" }, {} }, ["𒈛"] = { 198, 494, { "luḫ" }, { "LÀḪ", "LUḪ", "SUKKAL" }, { "LÀḪ" } }, ["𒂍"] = { 199, 495, {}, { "É" }, { "É", "PID", "PIT", "PIṬ" } }, ["𒊓"] = { 200, 172, {}, { "SA" }, { "SA" }, hurr = { "sa" } }, ["𒄘"] = { 201, 176, {}, { "GÚ", "GUN" }, {} }, ["𒄙"] = { 202, 178, { "dur", "túr" }, { "DUR" }, { "ṬUR" } }, ["𒍜"] = { 203, 311, {}, { "UZU" }, {} }, ["𒉪"] = { 204, 502, { "nir", "nàr" }, { "NIR" }, {} }, ["𒁀"] = { 205, 14, { "ba", "pá" }, { "BA" }, {} }, ["𒆪"] = { 206, 808, { "ku", "gu₅" }, {}, {} }, ["𒂉"] = { 206, 808, {}, { "DÚR", "DÚRU", "DURUN", "TUKUL", "TUŠ" }, {} }, ["𒆪𒌋𒆕"] = { 207, 755, {}, { "MUD₄" }, {} }, ["𒈠"] = { 208, 552, { "ma" }, { "MA", "PÈŠ" }, {} }, ["𒍪"] = { 209, 15, { "zu" }, { "ZU" }, { "SÚ", "ṢÚ" } }, ["𒂅"] = { 209, 836, {}, { "GÍN" }, {} }, ["𒁳"] = { 210, 812, { "lu" }, { "LU", "UDU" }, {} }, ["𒇻"] = { 210, 813, {}, { "DAB", "DIB", "DUL₈" }, { "DIB", "DIP", "TIB", "TIP" } }, ["𒇯"] = { 211, 721, {}, { "DU₆" }, {} }, ["𒌆"] = { 212, 809, {}, { "TÚG", "ÁZLAG", "GI₇", "ŠÈ", "TU₉", "ZÀ", "ZÍD" }, {} }, ["𒋢"] = { 213, 16, {}, { "KUŠ", "SU" }, { "SU" } }, ["𒁕"] = { 214, 561, { "da", "tá" }, { "DA", "TÁ" }, { "TÁ" } }, ["𒀉"] = { 215, 560, { "it", "id", "et", "ed" }, { "Á", "TI₈" }, { "IṬ", "EṬ" } }, ["𒇉"] = { 216, 756, {}, { "ENGUR" }, {} }, ["𒄿"] = { 217, 252, { "i" }, { "I", "KUN₄" }, { "ʾIₓ" } }, ["𒅀"] = { 218, 260, { "ya" }, { "I-A" }, {} }, ["𒈢"] = { 219, 270, {}, { "ḪAŠḪUR" }, {} }, ["𒈖"] = { { 220, 221, 222 }, { 555, 556 }, {}, { "GÚG", "GAR₅", "LÙ", "NIMGIR" }, {} }, ["𒂆"] = { 223, 836, {}, { "NÍR", "GÍN" }, { "ṬU" } }, ["𒇀"] = { 224, 760, {}, { "GIGIR" }, {} }, ["𒁆"] = { 225, 565, {}, { "BALAG" }, {} }, ["𒀩"] = { 226, 573, {}, { "ALAM" }, {} }, ["𒋺"] = { 227, 106, {}, { "TAG₄", "TAK₄" }, {} }, ["𒆦"] = { 228, 435, {}, { "KISAL" }, {} }, ["𒌷"] = { 229, 71, {}, { "URU", "BANŠUR", "RÍ", "U₁₉" }, {} }, ["𒊿"] = { 230, 17, {}, { "ŠEN", "ALAL", "PÀSAN", "DUR₁₀" }, {} }, ["𒋃"] = { 231, 485, {}, { "SANGA", "ÀKA", "ŠID", "ŠIT", "ŠITA₅", "ŠITI" }, { "LAG", "LAK", "LAQ" } }, ["𒁤"] = { 232, 441, {}, { "LAḪTA" }, {} }, ["𒊏"] = { 233, 511, { "ra" }, { "RA" }, {} }, ["𒄄"] = { 234, 507, {}, { "GI₄", "GE₄" }, {} }, ["𒁈"] = { 235, 554, {}, { "BÁR" }, {} }, ["𒁻"] = { 236, 350, {}, { "LAḪ₄" }, {} }, ["𒌉"] = { 237, 255, {}, { "DUMU", "TUR", "KUN₅" }, { "TUR" } }, ["𒍠"] = { 238, 540, {}, { "ZÀ", "ZAG" }, {} }, ["𒅊"] = { 239, 564, {}, { "SIG₇" }, {} }, ["𒃼"] = { 240, 543, { "gar", "kar" }, { "GÀR" }, { "KÀR", "QAR" } }, ["𒀾"] = { 241, 548, { "tàš", "áš" }, { "ÁŠ", "ZÍZ" }, { "ÁŠ", "ÁZ" } }, ["𒃲"] = { 242, 553, { "gal", "kál" }, { "GAL" }, { "KÁL" } }, ["𒁖"] = { 243, 438, { "táq", "tág", "ták", "daq", "dag", "dak" }, { "BÀR", "DAG" }, { "BÀR" } }, ["𒄫"] = { 244, 558, { "kir", "gir", "piš", "paš", "pùš", "gir", "biš" }, { "ḪA₆" }, { "QIR" } }, ["𒁓"] = { 245, 559, { "bur", "pur" }, { "BUR" }, {} }, ["𒌵"] = { 246, 574, {}, { "URI" }, {} }, ["𒃵"] = { 247, 576, {}, { "GAM" }, { "GAM" } }, ["𒑱"] = { 248, 592, {}, {}, {}, glossenkeil = true }, ["𒋼"] = { 249, 589, { "te" }, { "TE" }, { "DE₄", "DI₁₂", "ṬE₄" } }, ["𒋼𒀀"] = { 250, 590, { "kar", "kir₈" }, { "KAR" }, { "GAR₁₄", "QÁR" } }, ["𒋙"] = { 251, 869, { "šú" }, { "ŠÚ", "ÉN" }, {} }, ["𒇻𒄾𒆲"] = { 252, 812, {}, { "GUKKAL<sup>?</sup>+KUN" }, {} }, ["𒈦𒄘𒃼"] = { 253, 124, {}, { "IDIGNA" }, {} }, ["𒄾"] = { 254, 877, {}, { "ÚKUŠ" }, {} }, ["𒋝"] = { 255, 881, {}, { "SIG" }, {}, hurr = { "šig", "šik", "šiq" } }, ["𒉽"] = { 256, 92, {}, { "KÚR", "PAB", "PA₅" }, { "BAB", "BAP", "KÚR" } }, ["𒉽𒄬"] = { 256, 93, {}, { "PAB-ḪAL" }, { "PÚŠ" } }, ["𒉽𒉽"] = { 257, 94, {}, { "BÙLUG", "DIM₄", "MUNU₈" }, {} }, ["𒄃"] = { 258, 105, {}, { "GILIM" }, { "KÍL" } }, ["𒆜"] = { 259, 302, {}, { "KASKAL", "RAŠ", "DANNA", "ILLAT" }, {} }, ["𒄒"] = { 260, 378, { "kib", "kip" }, { "KIB", "ŠENNUR" }, {} }, ["𒌋"] = { 261, 661, { "u" }, { "U", "BÙR", "UḪ₇" }, {} }, ["𒌋𒌆"] = { 262, 720, {}, { "DUL" }, { "TUL" } }, ["𒌋𒁯"] = { 263, 670, {}, {}, { "IŠTAR" } }, ["𒌋𒈬"] = { 264, 665, {}, { "UDUN" }, {} }, ["𒅇"] = { 265, 731, {}, { "Ù", "LIBIR" }, { "Ù" } }, ["𒌋𒀜"] = { 266, 683, {}, { "GIR₄" }, {} }, ["𒈪"] = { 267, 681, { "mi", "mé" }, { "GE₆", "GI₆", "GÍG", "MI" }, { "MÉ" } }, ["𒂂"] = { 268, 704, {}, { "DUGUD" }, {} }, ["𒈪𒉭"] = { 269, 705, {}, { "GIG" }, { "GIG", "GIQ" } }, ["𒌋𒃶"] = { 270, 684, {}, { "ŠAGAN", "ŠÁMAN" }, {} }, ["𒄢"] = { 271, 682, { "gul" }, { "GUL" }, { "KÚL" } }, ["𒌋𒅗"] = { 272, 663, {}, { "UGU" }, { "MUḪ" } }, ["𒆧"] = { 273, 678, { "kiš" }, { "KIŠ" }, {} }, ["𒂘"] = { 274, 165, {}, { "BURU₁₄", "BAR₈", "SULLIM" }, {} }, ["𒌌"] = { 275, 698, { "ul" }, {}, {} }, -- 276 (AMARxKU₆) unencoded ["𒀖"] = { 277, 672, {}, { "ÁB" }, { "LI₈" } }, ["𒆨"] = { 278, 687, {}, { "KISIM₅" }, {} }, ["𒉐"] = { 279, 691, {}, { "TÙM" }, {} }, -- 280 (KISIM₅xLA) unencoded (see 232) -- 281 (KISIM₅xGU₄) unencoded (see 188) -- 282 (KISIM₅xGA) unencoded (see 189) -- 283 (KISIM₅xÚ-MAŠ) unencoded -- 284 (ÁBxA) unencoded -- 285 (KISIM₅xA-MAŠ) unencoded (see 190) ["𒇺"] = { 286, 591, { "liš", "li₁₂" }, { "DÍLI", "DÍLIM", "LIŠ" }, {} }, ["𒌋𒁹"] = { 287, 661, { "11" }, {}, {} }, ["𒅆"] = { 288, 724, { "ši" }, { "IGI", "LIM", "ŠUKUR" }, { "LÌ", "LIM", "SI₁₇", "ŠE₂₀" } }, ["𒅈"] = { 289, 726, { "ar" }, { "AR" }, {} }, ["𒅆𒌨"] = { 290, 733, { "ḫul" }, { "ḪUL" }, {} }, ["𒅆𒁾"] = { 291, 727, {}, { "AGRIG", "GISKIM", "ISKIM" }, {} }, ["𒅆𒊒"] = { 292, 725, { "pà" }, {}, {} }, ["𒅆𒂟"] = { 293, 729, {}, { "SIG₅" }, {} }, ["𒊮"] = { 294, 599, {}, { "ŠÀ", "ŠAG₄", "TIBULA" }, { "LÌB" } }, ["𒉻"] = { 295, 746, {}, { "PAD" }, { "PAD", "PAT", "PAṬ", "ŠUG", "ŠUK", "ŠUQ" } }, ["𒌋𒌋"] = { 296, 708, { "man", "20" }, { "MÀN", "NEŠ", "NIŠ" }, {} }, ["𒊩"] = { 297, 883, { "šal" }, { "MUNUS", "SAL", "MÍ", "NÀTA" }, { "MIM", "RAG", "RAK", "RAQ", "SAL" } }, ["𒁮"] = { 298, 889, { "dam", "tám" }, { "DAM" }, { "TÁM" } }, ["𒊩𒌆"] = { 299, 887, {}, { "NIN", "EREŠ", "NIN₉" }, { "ERIŠ", "NIN", "NEN" } }, ["𒍮"] = { 300, 884, { "zum" }, { "SÚM", "ZUM" }, { "RÍG", "RÍK", "RÍQ", "SÚM", "ṢU", "ṢUM" } }, ["𒄊"] = { 301, 701, {}, { "GÌR", "GÌRI", "NÈ" }, {} }, ["𒀲"] = { 302, 353, {}, { "ANŠE", "DÙR" }, {} }, ["𒄋"] = { 303, 703, {}, { "ALIM" }, {} }, ["𒄖"] = { 304, 891, { "gu" }, { "GU" }, { "KU₈" } }, ["𒊩𒆳"] = { 305, 890, {}, { "GÉME" }, {} }, ["𒇴"] = { 306, 693, { "lam" }, { "LAM" }, { "LA₁₂" }, hurr = { "libₓ", "lipₓ" } }, ["𒂖"] = { 307, 899, { "el", "il₅" }, { "SIKIL" }, { "IL₅" } }, ["𒉄"] = { 308, 893, {}, { "NAGAR" }, {} }, ["𒋚"] = { 309, 22, { "šaḫ" }, { "ŠAḪ" }, { "ŠIḪ" } }, ["𒈝"] = { 310, 900, { "lum" }, { "GUZ", "ḪUM", "LUM" }, { "LU₄" } }, ["𒋞"] = { 311, 905, {}, { "MUR₇", "MURGU", "SIG₄" }, {} }, ["𒁲"] = { 312, 736, { "di", "de", "ti₄" }, { "DI", "SÁ", "SALIM", "SILIM" }, { "ŠÙL", "TI₄" } }, ["𒆠"] = { 313, 737, { "ki", "ke", "gi₅", "ge₅" }, { "GI₅", "KI", "GUNNI", "KARAŠ", "KISLAḪ", "SUR₇" }, { "GI₅", "GE₅", "QÍ", "QÉ" } }, ["𒈿"] = { 314, 689, {}, { "NÁ", "NÚ" }, {} }, ["𒋽"] = { 315, 88, {}, { "URU₅" }, {} }, ["𒌓"] = { 316, 596, { "ut", "ud", "pir" }, { "BABBAR", "UD", "U₄", "ÁD", "TAM", "UTU", "ZALAG", "BURANUN", "ZIMBIR", "È", "ZABAR" }, { "BÍR", "DÁM", "PAR", "TAM", "ṬÁM", "TÚ", "U₄", "UṬ" } }, ["𒉿"] = { 317, 598, { "wa" }, { "GEŠTU", "GEŠTUG", "TÁL" }, { "À", "AM₇", "AW", "PI", "WI<sup>?</sup>" } }, ["𒊁"] = { 318, 598, {}, {}, {}, hurr = { "waₐₚ" } }, ["𒊅"] = { 319, 598, {}, {}, {}, hurr = { "wiᵢ" }, hatt = { "wiᵢ" } }, ["𒊂"] = { 320, 598, {}, {}, {}, hatt = { "wiₚ<sub>í</sub>" } }, ["𒊈"] = { 321, 598, {}, {}, {}, hurr = { "wu<sub>ú</sub>" }, hatt = { "wu<sub>ú</sub>" } }, ["𒊄"] = { 322, 598, {}, {}, {}, hurr = { "weₑ" }, hatt = { "weₑ" } }, ["𒊇"] = { 323, 598, {}, {}, {}, hurr = { "wuᵤ" }, hatt = { "wuᵤ" } }, ["𒊃"] = { 324, 598, {}, {}, {}, hurr = { "wuₚᵤ" } }, ["𒊆"] = { 325, 598, {}, {}, {}, hurr = { "wiᵢₚ" } }, ["𒊀"] = { 326, 598, {}, {}, {}, hurr = { "waₐ" }, hatt = { "waₐ" } }, ["𒂟"] = { 327, 612, {}, { "ÉRIN", "NUNUS", "RÍN" }, { "ṢAB", "ṢAP", "ZAB", "ZAP" } }, ["𒉭"] = { 328, 614, {}, { "NUNUZ", "ÉRIN", "RÍN" }, {} }, ["𒆳"] = { 329, 578, { "kur" }, { "KUR", "GÀN" }, { "MAD", "MAT", "MAṬ", "ŠAD", "ŠAT", "ŠAṬ" } }, ["𒁷"] = { 330, 119, { "tin", "tén" }, { "KÚRUN", "TIN", "GAMUN" }, { "DIN", "DEN" } }, ["𒌍"] = { 331, 711, { "eš", "ìš", "30" }, { "ÙŠU" }, { "ÉŠ", "ÌŠ", "SIN" } }, ["𒄴"] = { 332, 636, { "aḫ", "eḫ", "iḫ", "uḫ" }, { "AḪ", "UḪ" }, { "ʾA", "ʾE", "ʾI", "ʾU" } }, ["𒄯"] = { 333, 644, { "ḫar", "ḫur", "mur" }, { "ÀR", "ḪAR", "ḪUR", "KÍN", "MUR", "UR₅", "ARA₅" }, { "KÍN" } }, ["𒄵"] = { 334, 643, {}, { "BIR", "ÉLLAG" }, {} }, ["𒄭"] = { 335, 631, { "ḫi", "ḫe" }, { "DU₁₀", "DÙG", "ḪI", "NIMIN", "NIN₅", "ŠÁR", "ḪÁ" }, { "ŠÁR", "TÍ", "TÉ", "ṬÍ", "ṬÉ" } }, ["𒃽"] = { 336, 562, {}, { "GAŠAN" }, {} }, ["𒅎"] = { 337, 641, { "em", "im" }, { "IM", "NÍ", "GUDU₁₂" }, {} }, ["𒊺"] = { 338, 579, { "še" }, { "NIGA", "NIGU", "ŠE" }, {} }, ["𒁍"] = { 339, 580, { "pu", "bu" }, { "BU", "GÍD" }, { "GÍD", "GÍT", "GÍṬ", "QÍD", "QÍT", "ŠÍR" } }, ["𒊻"] = { 340, 583, { "uz" }, {}, { "US", "UṢ", "UŠ₁₀" } }, ["𒋤"] = { 341, 584, {}, { "SUD", "SIR" }, {} }, ["𒈲"] = { 342, 585, {}, { "MUŠ" }, { "MUŠ", "ṢIR<sup>?</sup>" } }, ["𒇷"] = { 343, 85, { "li", "le" }, { "ÉN", "LE", "LI" }, {} }, ["𒌁"] = { 344, 587, { "tir", "ter" }, { "TIR" }, { "DIR₄", "TER", "ṬIR₅" } }, ["𒊺𒉀"] = { 345, { 579, 293 }, {}, { "NIDABA", "NISABA", "TÈ" }, {} }, ["𒌅"] = { 346, 86, { "tu", "dú" }, { "TU" }, { "DÚ", "ṬÚ" } }, ["𒐐"] = { 347, 714, {}, { "NINNU", "50" }, {} }, ["𒄭𒄊"] = { 348, 645, {}, { "ḪUŠ" }, { "ḪUŠ" } }, ["𒋦"] = { 349, 646, {}, { "SUḪUR" }, {} }, ["𒋧"] = { 350, 292, {}, { "SUM", "SUMU", "ŠÚM", "SÍ" }, { "ŠÚM" } }, -- 351 (KA₅) unencoded ["𒉀"] = { 352, 293, {}, { "NAGA", "NÍDABA", "NÍSABA", "DALḪAMUN₄" }, { "NÁG", "NÁK" } }, ["𒅔"] = { 353, 541, { "šar" }, { "KIRI₆", "MÚ", "SAKAR", "SAR" }, { "ŠAR", "ŠER₉" } }, ["𒄰"] = { 354, 261, { "in", "en₆" }, { "IN" }, { "EN₆" } }, ["𒁹"] = { 355, 640, { "kam", "gám" }, { "KAM", "TU₇", "ÚTUL" }, { "GÁM", "QÁM" } }, ["𒁹"] = { 356, 748, { "1", "diš", "tiš", "dáš", "táš" }, { "DIŠ", "GÉŠ", "GÍŠ", "1" }, { "ANA", "GÌ", "ṬIŠ" } }, ["𒈨"] = { 357, 753, { "me", "mi" }, { "ME", "IŠIB", "100" }, { "MÌ", "ŠIB", "ŠIP" } }, ["𒇲"] = { 358, 750, { "lal" }, { "LAL", "LÁ" }, {} }, ["𒁹𒌋"] = { 359, 824, {}, { "70" }, {} }, ["𒈨𒌍"] = { 360, 754, { "meš" }, { "MEŠ" }, {} }, ["𒈫"] = { 361, 825, { "2" }, { "MIN", "2" }, {} }, ["𒇳"] = { 362, 751, {}, { "LA₅" }, { "ŠUR₄" }, hatt = { "lál" } }, ["𒇳𒊬"] = { 363, 751, {}, {}, { "ŠUR₄" } }, ["𒀀"] = { 364, 839, { "a" }, { "A", "DUR₅", "DURU₅", "ÀM", "ÉR", "EŠA", "ÍLDAG" }, { "ʾ", "ʾAₓ" } }, ["𒀀𒇉"] = { 365, 839, {}, { "ÍD", "I₇" }, {} }, ["𒍝"] = { 366, 851, { "za" }, { "ZA", "GUG", "NÍR" }, { "SÀ", "ṢA" } }, ["𒄩"] = { 367, 856, { "ḫa" }, { "ḪA", "KU₆", "ZÁḪ" }, { "ʾA₄" } }, ["𒐈"] = { 368, 834, { "3" }, { "EŠ₅", "3" }, {} }, ["𒃻"] = { 369, 859, { "šá" }, { "GAR", "NÍG", "NINDA", "ŠÁ" }, { "NÌ", "NÍG", "NÍK", "NÍQ" } }, ["𒐉"] = { 370, 860, { "4" }, { "LIMMU" }, {} }, ["𒐼"] = { 370, 860, { "4" }, { "LIMMU" }, {} }, ["𒐊"] = { 371, 861, { "5" }, { "IÁ" }, {} }, ["𒐋"] = { 372, 862, { "6" }, { "ÀŠ" }, {} }, ["𒐌"] = { 373, 863, { "7" }, { "IMIN" }, {} }, ["𒐍"] = { 374, 864, { "8" }, { "USSU" }, {} }, ["𒐎"] = { 375, 868, { "9" }, { "ILIMMU" }, {} }, ["𒑆"] = { 375, 868, { "9" }, { "ILIMMU" }, {} }, } local function prep_cell(cell, func) func = func or function(x) return x end if type(cell) == 'table' then for i, j in pairs(cell) do cell[i] = func(j) end return table.concat(cell, ", ") else return func(cell) end end local function other_stuff(sign) local out = {} if sign.hurr then table.insert(out, "Hurrian: " .. prep_cell(sign.hurr, m_hit_tag.tag_hurrian_tr)) end if sign.hatt then table.insert(out, "(Proto)-Hattic: " .. prep_cell(sign.hatt, m_hit_tag.tag_hattic_tr)) end if sign.glossenkeil then table.insert(out, "The Glossenkeil: " .. m_hit_tag.glossenkeil()) end return table.concat(out, "<br/>") end local function decompose_sign(sign) local out = {} for char in gmatch(sign, ".") do table.insert(out, string.upper(string.format("%x", codepoint(char)))) end return table.concat(out, "+") end local function is_table(x) return type(x) == "table" end local function sort_func(a, b) local hzl_a, hzl_b = (is_table(a[1]) and a[1][1] or a[1]), (is_table(b[1]) and b[1][1] or b[1]) if hzl_a ~= hzl_b then return hzl_a < hzl_b end local borger_a, borger_b = (is_table(a[2]) and a[2][1] or a[2]), (is_table(b[2]) and b[2][1] or b[2]) if borger_a ~= borger_b then return borger_a < borger_b end return a[6] < b[6] end function export.create_table() local sorted_sign_list = {} for sign, content in pairs(export.sign_list) do local new_sign = m_table.deepCopy(content) table.insert(new_sign, sign) table.insert(sorted_sign_list, new_sign) end table.sort(sorted_sign_list, sort_func) local sign_table = { '{| class="wikitable sortable"\n|+Hittite Cuneiform Signs\n! Sign !! HZL number !! Borger number !! Unicode !! Hittite syllables !! Sumerograms !! Akkadograms !! Other\n' } for _, sign in ipairs(sorted_sign_list) do table.insert(sign_table, table.concat({ "|-\n| " .. prep_cell(sign[6], m_hit_tag.tag_hittite), prep_cell(sign[1]), prep_cell(sign[2]), decompose_sign(sign[6]), prep_cell(sign[3], m_hit_tag.tag_hittite_tr), prep_cell(sign[4], m_hit_tag.tag_sumerogram), prep_cell(sign[5], m_hit_tag.tag_akkadogram), other_stuff(sign) .. "\n" }, " || ")) end table.insert(sign_table, "|}") return table.concat(sign_table) end local function quote_syls(syls) local out = {} for _, syl in ipairs(syls) do table.insert(out, '"' .. syl .. '"') end return table.concat(out, ', ') end local function make_table(sign) local out if #sign[3] > 0 then out = quote_syls(sign[3]) .. ', hit = true' elseif #sign[4] > 0 then out = quote_syls(sign[4]) .. ', sum = true' elseif #sign[5] > 0 then out = quote_syls(sign[5]) .. ', akk = true' elseif sign.hurr then out = quote_syls(sign.hurr) .. ', hurr = true' elseif sign.hatt then out = quote_syls(sign.hatt) .. ', hatt = true' elseif sign.glossenkeil then out = 'glossenkeil = true' end return out end function export.create_data_table() local sorted_sign_list = {} for sign, content in pairs(export.sign_list) do local new_sign = m_table.deepCopy(content) table.insert(new_sign, sign) table.insert(sorted_sign_list, new_sign) end table.sort(sorted_sign_list, sort_func) local data_table = { 'local export = {', } for _, sign in ipairs(sorted_sign_list) do table.insert(data_table, table.concat { '\t["', sign[6], '"] = { ', make_table(sign), ' }, -- HZL ', type(sign[1]) == 'table' and table.concat(sign[1], ', ') or sign[1] }) end table.insert(data_table, '}') table.insert(data_table, '') table.insert(data_table, 'return export') return require('Module:debug').highlight(table.concat(data_table, '\n')) end return export liv61cduimpmc0s1xppvbot8fvp6dur মডিউল:hit-translit/testcases 828 168759 510311 2026-06-07T12:46:56Z RedminBot 9553 [[en:Module:hit-translit/testcases]] থেকে আনা হলো 510311 Scribunto text/plain local hit_translit = require('Module:hit-translit') local hit_tag = require('Module:hit-translit/tag') local tests = require('Module:UnitTests') function tests:test_1_tr() local test_tr = { { "𒊭𒁉𒅅𒆪𒍑𒋫", "ša-pí-ik-ku-uš-ta" }, { "𒄿𒅀𒀜𒋫", "i-ya-at-ta" }, { "𒀠𒉺𒀸", "al-pa-aš" }, { "𒆠𒅕", "ke-er" }, { "𒋼𒀀𒋾𒅀𒀸", "kar-ti-ya-aš" }, { "𒊮𒅕", hit_tag.tag_sumerogram("ŠÀ") .. "-er" }, { "𒉺𒄴𒄷𒉿𒅈", "pa-aḫ-ḫu-wa-ar" }, { "𒉺𒄴𒄯", "pa-aḫ-ḫur" }, { "𒉺𒄴𒄷𒌋𒌨", "pa-aḫ-ḫu-u-ur" }, { "𒉺𒄴𒄷𒂊𒈾𒀭𒍝", "pa-aḫ-ḫu-e-na-an-za" }, { "𒉺𒄴𒄷𒂊𒉌", "pa-aḫ-ḫu-e-ni" }, { "𒉺𒄴𒄷𒂊𒉌𒀉", "pa-aḫ-ḫu-e-ni-it" }, { "𒉺𒄴𒄷𒀭𒋫", "pa-aḫ-ḫu-an-ta" }, { "𒄩𒀸𒋼𒅕𒍝", "ḫa-aš-te-er-za" }, { "𒀭𒋫𒊏𒀸", "an-ta-ra-aš" }, { "𒉺𒀀𒄿", "pa-a-i" }, { "𒀀𒀀𒊏", "a-a-ra" }, { "𒀀𒊭𒀀𒀭𒋫𒀭", "a-ša-a-an-ta-an" }, { "𒀀𒊭𒀀𒀭𒋫𒀸", "a-ša-a-an-ta-aš" }, { "𒈗𒍑", hit_tag.tag_sumerogram("LUGAL") .. "-uš" }, { "𒈗𒌑𒉿𒀸", hit_tag.tag_sumerogram("LUGAL") .. "-ú-wa-aš" }, { "𒄯𒁖𒂵𒀸", "ḫar-tág-ga-aš" }, { "𒄯𒁖𒄀", "ḫar-tág-gi" }, { "𒍝𒀊𒍝𒋡𒅀", "za-ap-za-ka₄-ya" }, { "𒄭𒅖𒊭𒀭", "ḫi-iš-ša-an" }, { "𒄯𒁖𒄀𒌍", "ḫar-tág-ge-eš" }, { "𒋼𒊑𒀉𒋾𒌅𒌋𒉌𒅖", "te-ri-it-ti-tu-u-ni-iš" }, { "𒁺𒌓𒋻𒊑𒅀𒋾𒅀𒀸", "tù-ut-tar-ri-ya-ti-ya-aš" }, { "𒀭𒌅𒉿𒄴𒄩𒀸", "an-tu-wa-aḫ-ḫa-aš" }, { "𒋻𒆪𒉿𒀭𒍣", "tar-ku-wa-an-zi" }, { "𒋫𒀀𒊒", "ta-a-ru" }, } tests:iterate(test_tr, function(self, text, tr) self:equals(hit_tag.tag_hittite(text), hit_translit.tr(text, "hit", "Xsux"), hit_tag.tag_hittite_tr(tr)) end) end local test_syls = { { "aš", { "a", "s" } }, { "ḫal", { "h", "l" } }, { "pal", { "p", "l" } }, { "bal", { "b", "l" } }, { "šir", { "s", "r" } }, { "ḫaš", { "h", "s" } }, { "pát", { "p", "t" } }, { "ga₅", { "g", "a" } }, { "ka₄", { "k", "a" } }, { "in₄", { "i", "n" } }, { "né", { "n", "e" } }, { "30", { "3", "0" } }, } function tests:find_seg(func, index) return function(self, syl, lauts) self:equals(syl, func(syl), lauts[index]) end end function tests:test_2_find_onset() tests:iterate(test_syls, tests:find_seg(hit_translit.find_onset, 1)) end function tests:test_3_find_coda() tests:iterate(test_syls, tests:find_seg(hit_translit.find_coda, 2)) end function tests:test_4_hash_sign() local test_signs = { { { "it", "id", "et", "ed", hit = true }, { { "it", o = "i", c = "t" }, { "id", o = "i", c = "d" }, { "et", o = "e", c = "t" }, { "ed", o = "e", c = "d" }, o_hash = 6, c_hash = 192, hit = true, } }, } tests:iterate(test_signs, function(self, sign, initialized) self:equals_deep("-", hit_translit.hash_sign(sign), initialized) end) end function tests:test_5_copy_sign() local test_signs = { { "𒄫", { { "paš", c = "s", o = "p" }, { "pùš", c = "s", o = "p" }, { "piš", c = "s", o = "p" }, { "biš", c = "s", o = "b" }, { "kir", c = "r", o = "k" }, { "gir", c = "r", o = "g" }, { "gir", c = "r", o = "g" }, c_hash = 69632, hit = true, o_hash = 816 } }, } tests:iterate(test_signs, function(self, sign, init_copy) self:equals_deep("-", hit_translit.copy_sign(sign), init_copy) end) end return tests ij86bsv28obhvvu1gfuivt2gcdocas5 মডিউল:hnn-translit 828 168760 510312 2026-06-07T12:46:57Z RedminBot 9553 [[en:Module:hnn-translit]] থেকে আনা হলো 510312 Scribunto text/plain local export = {} local consonants = { ['ᜣ']='k', ['ᜤ']='g', ['ᜥ']='ng', ['ᜦ']='t', ['ᜧ']='d', ['ᜨ']='n', ['ᜩ']='p', ['ᜪ']='b', ['ᜫ']='m', ['ᜬ']='y', ['ᜮ']='l', ['ᜯ']='w', ['ᜰ']='s', ['ᜱ']='h', ['ᜭ']='r', } local diacritics = { ['ᜲ']='i', ['ᜳ']='u', ['᜴']='', } local tt = { -- vowels ['ᜠ']='a', ['ᜡ']='i', ['ᜢ']='u', --punctuation ['᜶']='.', -- kulit and pamudpod ['᜵']=',' -- single kulit and pamudpod } function export.tr(text, lang, sc, override) if sc ~= "Hano" then return nil end local separate_lr = false if string.find(text, 'ᜭ') then separate_lr = true end text = mw.ustring.gsub(text,'([ᜣ-ᜱ][᜴])'..'([ᜠ-ᜢ])','%1-%2') text = mw.ustring.gsub( text, '([ᜣ-ᜱ])'.. '([ᜲᜳ᜴]?)'.. '([ᜠ-ᜢ]?)', function(c, d, e) if d == "" and e ~= "" then if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. '' else return consonants[c] .. 'a' .. tt[e] end elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) --remove hyphen between vowels text = mw.ustring.gsub(text,"([aiu])-([aiu])","%1%2") text = mw.ustring.gsub(text, '([ᜲᜳ᜴])', function(c) return '-' .. diacritics[c] end) text = mw.ustring.gsub(text, "◌", "-a") text = mw.ustring.gsub(text, " ([,.])", "%1") return text end return export cs7q2mgcq2v5668appy1557b0lpyx8p মডিউল:huz-translit/testcases 828 168761 510313 2026-06-07T12:46:57Z RedminBot 9553 [[en:Module:huz-translit/testcases]] থেকে আনা হলো 510313 Scribunto text/plain return require("Module:transliteration module testcases") { module = "huz-translit", examples = { { "гьаод", "hɑd" }, }, sc = "Cyrl", lang = "huz", } jfreacj3ei7uczmlufvu644oud3sb8h মডিউল:ilo-translit 828 168762 510314 2026-06-07T12:46:58Z RedminBot 9553 [[en:Module:ilo-translit]] থেকে আনা হলো 510314 Scribunto text/plain local export = {} local consonants = { ['ᜃ']='k', ['ᜄ']='g', ['ᜅ']='ng', ['ᜆ']='t', ['ᜇ']='d', ['ᜈ']='n', ['ᜉ']='p', ['ᜊ']='b', ['ᜋ']='m', ['ᜌ']='y', ['ᜎ']='l', ['ᜏ']='w', ['ᜐ']='s', ['ᜑ']='h' } local diacritics = { ['ᜒ']='i', ['ᜓ']='u', ['᜔']='', } local tt = { -- vowels ['ᜀ']='a', ['ᜁ']='i', ['ᜂ']='u', --punctuation ['᜶']='.', -- pamudpod ['᜵']=',' -- single pamudpod } function export.tr(text, lang, sc, override) if sc ~= "Tglg" then return nil end text = mw.ustring.gsub(text,'([ᜃ᜔ᜄ᜔ᜅ᜔ᜆ᜔ᜈ᜔ᜉ᜔ᜊ᜔ᜋ᜔ᜌ᜔ᜎ᜔ᜏ᜔ᜐ᜔])'..'([ᜀᜁᜂ])','%1-%2') text = mw.ustring.gsub( text, '([ᜃ-ᜑ])'.. '([ᜒᜓ᜔]?)'.. '([ᜀ-ᜂ]?)', function(c, d, e) if d == "" and e ~= "" then if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. '' else return consonants[c] .. 'a' .. tt[e] end elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) --remove hyphen between vowels text = mw.ustring.gsub(text,"([aiu])-([aiu])","%1%2") return text end return export oa7wpkt8od0pbc7aalz2vnv2qesry9v মডিউল:iru-translit 828 168763 510315 2026-06-07T12:47:01Z RedminBot 9553 [[en:Module:iru-translit]] থেকে আনা হলো 510315 Scribunto text/plain local export = {} local consonants = { ['க']='k' , ['ங']='ṅ' , ['ச']='c' , ['ஞ']='ñ' , ['ட']='ṭ' , ['ண']='ṇ' , ['த']='t' , ['ந']='n' , ['ப']='p', ['ம']='m' , ['ய']='y' , ['ர']='r' , ['ல']='l' , ['வ']='v' , ['ழ']='ḻ' , ['ள']='ḷ' , ['ற']='ṟ' , ['ன']='ṉ' , ['ஶ']='ś' , ['ஜ']='j' , ['ஷ']='ṣ' , ['ஸ']='s' , ['ஹ']='h' , ['ஃப']='f' , ['ஃஜ']='z', ['ஃஸ']='ks' , ['ஃக ']='x', ['ஃ']='ḥ' , ['ௐ']='о̄m', } local diacritics = { ['ா']= 'ā' , ['ி']='i' , ['ீ']='ī' , ['ு']='u' , ['ூ']='ū' , ['ெ']='e' , ['ே']='ē' , ['ை']='ai' , ['ொ']='o' , ['ோ']='ō' , ['ௌ']='au', ['்']='', --halant, supresses the inherent vowel "a" -- no diacritic [''] = 'a' } local nonconsonants = { -- vowels ['அ']='’a' , ['ஆ']='’ā' , ['இ']='’i' , ['ஈ']='’ī' , ['உ']='’u' , ['ஊ']='’ū' , ['எ']='’e' , ['ஏ']='’ē' , ['ஐ']='’ai' , ['ஒ']='’o' , ['ஓ']='’ō' , ['ஔ']='’au' , ['ௐ']='о̄m', -- other symbols -- ['ஃ']='' , ['ௐ']='о̄m', } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '(ஃ?)([க-ஹ])([ா-்]?)', function(h, c, d) return (consonants[h..c] or consonants[h] .. (consonants[c] or c)) .. diacritics[d] end) text = mw.ustring.gsub(text, '[அ-ஔ]', nonconsonants) text = mw.ustring.gsub(text, '^’', '') text = mw.ustring.gsub(text, '([%s%p])’', '%1') return text end return export 1tdrlq195gqw6iwjth3j9qjz5mbokf0 মডিউল:itk-translit 828 168764 510316 2026-06-07T12:47:01Z RedminBot 9553 [[en:Module:itk-translit]] থেকে আনা হলো 510316 Scribunto text/plain local export = {} --Based on [[Module:he-translit]] by Malku H₂n̥rés, Sartma, Erutuon, Metaknowledge local m_str_utils = require("Module:string utilities") local gcodepoint = m_str_utils.gcodepoint local match = m_str_utils.match local s = m_str_utils.gsub local U = m_str_utils.char local bidirectional_control_characters = U(0x061C) .. U(0x200E) .. U(0x200F) .. U(0x202A) .. "-" .. U(0x202E) .. U(0x2066) .. "-" .. U(0x2069) local word_end = "%f[%s%z" .. bidirectional_control_characters .. "%-]" local word_start = "%f[^%s%z" .. bidirectional_control_characters .. "%-]" -- Bidirectional control characters should be avoided as much as possible, -- but they are easily picked up when copying and pasting, so the module needs -- to account for them. -- This list is from [[w:Bidirectional control character]]. local V = "[aɔɛeiăəou‌āēīōūêôáéíóúḗṓếố][̂̄̆]?́?" local C = "[ʔḇḡḏhwzḥṭylsʕqrśšṯ'ḵmnfṣbdgptkjc″vḫẓġTZCDK]" local c = { --direct translit --full char ie. C ["א"] = "ʔ", ["ב"] = "b", ["ג"] = "g", ["ד"] = "d", ["ה"] = "h", ["ו"] = "w", ["ז"] = "z", ["ח"] = "ḥ", ["ט"] = "ṭ", ["י"] = "y", ["ײ"] = "yy", ["ל"] = "l", ["ס"] = "s", ["ע"] = "ʕ", ["פ"] = "p", ["ק"] = "q", ["ר"] = "r", ["ש"] = "š", ["ת"] = "ṯ", --miscellaneous: ["׳"] = "'", --geresh ["־"] = "-", --hyphen ["׃"] = " .", --dot ["ׂ"] = "ˊ", --sin dot ["ׁ"] = "ˇ", --shin dot ["ּ"] = "·", --dagesh ["֫"] = "^", --oleh ["ֽ"] = "+", --meteg ["ֿ"] = "–", --rafe --niqqud ie. V ["ַ"] = "a", ["ָ"] = "ɔ", ["ֶ"] = "ɛ", ["ֵ"] = "e", ["ִ"] = "i", ["ֳ"] = "ɔ̆", ["ֲ"] = "ă", ["ֱ"] = "ɛ̆", ["ְ"] = "ə", ["ֹ"] = "o", ["ֺ"] = "o", ["ֻ"] = "u", ["ׇ"] = "ɔ", } local b = { --BH --when different final form {"[כך]", "ḵ"}, {"[מם]", "m"}, {"[נן]", "n"}, {"[פף]", "p"}, {"[צץ]", "ṣ"}, {"(" .. V .. ")(–?)(·?)(+?)(^?)([ˊˇ]?'?)", "%5%2%1%4%3"}, --order: s(h)in dot, geresh, dagesh, vowel (niqqud), oleh, meteg --p + rafe {"p–", "f"}, {"–", ""}, --s(h)in dot {"ß(·?)ˇ", "š%1"}, {"ß(·?)ˊ", "ś%1"}, --vowel lengthenings {"i([+^]?)y", "ī%1"}, --V > long / _{jw}{no V no dagesh} {"ī([+^]?" .. V .. ")", "iy%1"}, {"ī·", "iy·"}, {"e([+^]?)y", "ē%1"}, {"ē([+^]?" .. V .. ")", "ey%1"}, {"ɛ([+^]?)y", "E%1"}, --see E > ɛ̄ below {"E([+^]?" .. V .. ")", "ɛy%1"}, {"(" .. C .. "·?)wo", "%1ō"}, {"(" .. V .. "[+^]?)w·", "%1U"}, {"w·", "ū"}, {"U", "w·"}, {"(" .. C .. "·?)y·", "%1ī"}, --h > circumflex / V_{no V no dagesh} {"(" .. V .. "[+^]?)h", "%1H"}, {"H(" .. V .. ")", "h%1"}, {"H·", "h"}, {"e([+^]?)H", "ê%1"}, {"o([+^]?)H", "ô%1"}, {"ɛ([+^]?)H", "ɛ̂%1"}, {"ɔ([+^]?)H", "ɔ̂%1"}, {"a([+^]?)H", "â%1"}, {"(" .. V .. "[+^]?%s?)(.)·(%s?" .. V .. ")", "%1%2%2%3"}, --dagesh gemination {"[·ß]", ""}, --deletion of unpointed s(h)ins and useless dageshim --schwa: Ə means "kept" {"ə" .. word_end, ""}, {"ə([ḇḡḏḵfṯ])", "Ə%1"}, {"([+‌āēīōūoE])(" .. C .. ")ə", "%1%2Ə"}, {"E", "ɛ̄"}, --see >E above {"(" .. C .. "ə?" .. C .. ")ə", "%1Ə"}, {"(" .. C .. ")Ə(" .. C .. ")([Əə])", "%1ə%2Ə"}, {word_start .. "([ūw]?a?" .. C .. ")ə", "%1Ə"}, {"ə", ""}, {"Ə", "ə"}, {"([ʕhḥ])a(" .. word_end .. ")", "^a%1%2"}, --final /a/-guttural inversion --penultimate stress: segolates & -áyiC {"(" .. C .. "[eɛo])(%+?".. C .. "ɛ" .. C .. ")" .. word_end, "%1^%2"}, {"(" .. C .. "a)(%+?".. C .. C .. "?a" .. C ..")" .. word_end, "%1^%2"}, {"ayi(" .. C .. ")" .. word_end, "a^yi%1"}, --stress marking {"a^", "á"}, {"e^", "é"}, {"i^", "í"}, {"o^", "ó"}, {"u^", "ú"}, {"ɛ^", "ɛ́"}, {"ɔ^", "ɔ́"}, {"ā^", "ā́"}, {"ē^", "ḗ"}, {"ī^", "ī́"}, {"ō^", "ṓ"}, {"ū^", "ū́"}, {"ɛ̄^", "ɛ̄́"}, {"ɔ̄^", "ɔ̄́"}, {"ê^", "ế"}, {"ô^", "ố"}, {"ɛ̂^", "ɛ̂́"}, {"ɔ̂^", "ɔ̂́"}, {"ɔyw(" .. word_end .. ")", "ɔw%1"}, --irregular… {"f", "p̄"}, --bc p̄ are 2 chars {"%s%.", "."}, --quotes: " ." > "." (esthetics) } --MH local m = { --direct change ["ḏ"] = "d", ["ḡ"] = "g", ["ś"] = "s", ["״"] = "″", --gershayim ["q"] = "k", ["ī"] = "i", ["ū"] = "u", ["́"] = "^", --stress marking conversion below } local l = { --indirect {"p̄", "f"}, {"[̂̆̄]", ""}, {"ḥ'", "ḫ"}, {"ṯ'", "T"}, {"ṭ'", "ẓ"}, {"g'", "j"}, {"z'", "Z"}, {"ṣ'", "C"}, {"d'", "D"}, {"[rʕ]'", "ġ"}, {"(.)%1", "%1"}, {"[ḇw]", "v"}, {"[ḵḥ]", "K"}, {"[ṯṭ]", "t"}, {"'", ""}, {"[ʔʕ]", "'"}, --above: loss of vowel length, loss of gemination, turning n-grams into 1 char, MH mergers. --schwa --prefixes -- {word_start .. "([bvkKlšdm])ə", "%1e"}, -- {"(u[bvkKlšdm])ə", "%1e"}, --initial C clusters {word_start .. "([rnmly])ə", "%1e"}, {word_start .. "(" .. C .. ")ə([h'])", "%1e%2"}, --internal {"([ə+]" .. C .. ")ə", "%1e"}, {"(" .. C .. C .. ")ə", "%1e"}, {"[ə+]", ""}, --deletion of remaining schwa and metegim --put here not above to avoid e/ə confusion {"[āâă]", "a"}, {"[ēêɛ]", "e"}, {"[ōô]", "o"}, {"[ḗế]", "é"}, {"[ṓố]", "ó"}, {"(" .. word_start .. "[^áéíóú^]-[aeiouɔ])(" .. C .. "?" .. C .. "?)" .. word_end, "%1^%2"}, --module-explicit default final stress... --same articulation > schwa insertion {"([bp])([bp])", "%1e%2"}, {"([vf])([vf])", "%1e%2"}, {"([dt])([dt])", "%1e%2"}, {"([DTṣ])([DTṣ])", "%1e%2"}, {"([zs])([zs])", "%1e%2"}, {"([Zš])([Zš])", "%1e%2"}, {"([jC])([jC])", "%1e%2"}, {"([gk])([gk])", "%1e%2"}, {"(K)(K)", "%1e%2"}, {"(r)(r)", "%1e%2"}, {"''", "'e'"}, --a/o, including kol {"ɔ(" .. C .. C .. ")", "o%1"}, {"ɔ(" .. C .. ")" .. word_end, "o%1"}, {"(" .. word_start .. "[kK])ɔ(^l" .. word_end .. ")", "%1o%2"}, {"([bvkKlšd][ea][kK])ɔ(^l" .. word_end .. ")", "%1o%2"}, -- {"(m[ei][kK])ɔ(^l" .. word_end .. ")", "%1o%2"}, {"(" .. word_start .. "u[kK])ɔ(^l" .. word_end .. ")", "%1o%2"}, {"(ha[kK])ɔ(^l" .. word_end .. ")", "%1o%2"}, {"ɔ", "a"}, {"(" .. word_start .. C .. C .. "?" .. V .. ")^(" .. C .. "?" .. C .. "?" .. word_end .. ")", "%1%2"}, --…reader-implicit acute accent in monosyllabic --stress marking {"a^", "á"}, {"e^", "é"}, {"i^", "í"}, {"o^", "ó"}, {"u^", "ú"}, --glottal stops: kept when {CV}'V, {"(" .. word_start .. ")'", "%1"}, {"'(" .. C .. ")", "%1"}, {"'(" .. word_end .. ")", "%1"}, --fake digraphs {"([szck])h", "%1'h"}, --one char > displaying {"ṣ", "ts"}, {"š", "sh"}, {"T", "t'"}, {"Z", "zh"}, {"C", "ch"}, {"D", "d'"}, {"K", "kh"}, } function export.BH(text) text = s(s(text, '.', c), "[֣֖֣֑֣֣֧֛֖֥֧֛֥֖֑֣֖֥֔֗֗֙֔]", "") --remove cantillation marks so that it works for quotes too for a = 1, #b do text = s(text, b[a][1], b[a][2]) end return text end function export.BH_tr(text) return (s(export.BH(text), "+", "")) --metegim kept for MH end function export.MH_tr(text) local acronym = false text = s(export.BH(text), '.', m) --.BH() to keep metegim, m is applied if match(text, "″") and not match(text, V) then --acronym = gershayim & no V text = s(s(s(text, "p̄", "p"), "ḇ", "b"), "ḵ", "k") acronym = true end for a = 1, #l do --in any case, l is applied text = s(text, l[a][1], l[a][2]) end if acronym == true then text = mw.ustring.upper(text) end return text end function export.tr(text, lang, sc) if not sc then sc = require("Module:languages").getByCode(lang, nil, true):findBestScript(text):getCode() end if sc ~= "Hebr" or not match(text, "[ְ-ֻ־ׇ״]") then return nil elseif lang == "itk" then --though useless return export.BH_tr(text) end end function export.tr_all(frame) return export.BH_tr(frame.args[1]) .. ", " .. export.MH_tr(frame.args[1]) end --Erutuon's code for code points below --[[ local Array = require "Module:array" local function show_code_point_names(text) if not text then return "" end local names = Array() for cp in gcodepoint(text) do -- Remove HEBREW LETTER, HEBREW POINT, etc. local name = require "Module:Unicode data".lookup_name(cp) :gsub( "^HEBREW (%w+) ", function(type) if type == "ACCENT" then return "ACCENT " else return "" end end) :lower() names:insert(name) end return names:concat ", " end local old_s = s function s(...) local old = ... local new = old_s(...) if old ~= new then mw.log(show_code_point_names(old), show_code_point_names(new), ...) end return new end --]] return export 6swymgf17crh286v82z4tjhsafhec4o মডিউল:iu-translit/testcases 828 168765 510317 2026-06-07T12:47:01Z RedminBot 9553 [[en:Module:iu-translit/testcases]] থেকে আনা হলো 510317 Scribunto text/plain local export = {} local result = "" local function _add(t) return function(text) table.insert(t, "* [["..text.."#Inuktitut|"..text.."]]: " .. require("Module:iu-translit").tr(text, "iu", "Cans")) end end function export.show() local output = {} local add = _add(output) add("ᐁᕕᖃ") add("ᐃᐦᐃᑉᕆᐅᖅᑐᖅ") add("ᐃᐱᕋᐅᑕᖅ") add("ᐃᑉᐸᒃᓴᖅ") add("ᐃᒡᓕᖅ") add("ᐃᒡᓗ") add("ᐃᒥᖅ") add("ᐃᒥᖅᑐᖅ") add("ᐃᒪᖅ") add("ᐃᒻᒧᒃ") add("ᐃᒻᒪᖄ") add("ᐃᓄᒃ") add("ᐃᓄᒃᑎᑐᑦ") add("ᐃᓄᒃᓱᒃ") add("ᐃᓄᖅ") add("ᐃᓕᔅᓯ") add("ᐃᓗ") add("ᐃᓪᓗ") add("ᐃᓴᕈᖅ") add("ᐃᔨ") add("ᐃᕐᒥᐅᑦ") add("ᐃᕐᓂᖅ") add("ᐃᕝᕕᑦ") add("ᐃᖃᓗᐃᑦ") add("ᐃᖃᓗᒃ") add("ᐄ") add("ᐅᐃᒃ") add("ᐅᐃᕖᑎᑐᓪᓗ") add("ᐅᐱᕐᓐᖄᖅ") add("ᐅᑭᐅᖅ") add("ᐅᒃᐱᒃ") add("ᐅᒥᒃ") add("ᐅᓈᖅ") add("ᐅᓐᓄᖅ") add("ᐅᓗ") add("ᐅᓪᓗᒥ") add("ᐅᓪᓗᕆᐊᖅ") add("ᐅᓵᐃᐅ") add("ᐅᕙᒍᑦ") add("ᐅᕙᖓ") add("ᐅᖃᐅᓯᖅ") add("ᐅᖅᓱᖅ") add("ᐆᒪᔪᖅ") add("ᐆᒻᒪᑎ") add("ᐊᐅᒃ") add("ᐊᐅᔪᐃᑦᑐᖅ") add("ᐊᐅᔭ") add("ᐊᐳᑦ") add("ᐊᑎᖅᐳᖅ") add("ᐊᑖᑕ") add("ᐊᑭᓯᖅ") add("ᐊᒡᒐᒃ") add("ᐊᒡᓘᒃᑲᖅ") add("ᐊᒥᐃᐅᓕᐅᕈ") add("ᐊᒪᕈᖅ") add("ᐊᓄᕆ") add("ᐊᓇᐅᓪᓚᐅᑦ") add("ᐊᓈᓇ") add("ᐊᓘᑦ") add("ᐊᓪᓕᖅ") add("ᐊᕐᓇᖅ") add("ᐊᕐᕕᒃ") add("ᐊᕕᙵᖅ") add("ᐊᖏᖅᑲᖅᑐᖅ") add("ᐊᖑᑦ") add("ᐊᖑᓇᓱᒃᑐᖅ") add("ᐊᖓᔪᖅ") add("ᐋᒃᑲ") add("ᐯᑉᐹᖅ") add("ᐱ") add("ᐱᓱᒃ") add("ᐳᐊᓘᒃ") add("ᐸᓂᖅ") add("ᑎᑎᕋᐅᑦ") add("ᑎᑭᖅ") add("ᑎᒥ") add("ᑎᕆᒐᓂᐊᖅ") add("ᑎᕆᒐᓐᓂᐊᖅ") add("ᑎᖕᒥᐊᖅ") add("ᑎᖕᒥᓲᖅ") add("ᑏ") add("ᑐᐊᐸᑦ") add("ᑐᑐ") add("ᑐᒃᑐ") add("ᑐᕙᖅ") add("ᑑᒑᓕᒃ") add("ᑑᒑᖅ") add("ᑕᒃᑐᒃ") add("ᑕᓪᓗ") add("ᑕᓯᖅ") add("ᑕᕆᐅᖅ") add("ᑕᕝᕙ") add("ᑭᓇ") add("ᑭᖓᖅ") add("ᑮᓇᐅᔭᖅ") add("ᑮᓇᖅ") add("ᑰᒃ") add("ᑲᒥᒃ") add("ᑲᓇᑕ") add("ᑳᐱ") add("ᑳᒃᑐᖅ") add("ᒪᐅᔭ") add("ᒪᒻᒪᓛᑎᒃ") add("ᓂᐅ") add("ᓂᐅᒃ") add("ᓂᐊᖁᖅ") add("ᓂᐊᖂᔮᖅ") add("ᓂᕆᔪᖅ") add("ᓂᕿ") add("ᓄᑲᖅ") add("ᓄᓇ") add("ᓄᓇᑐᑲᕗᑦ") add("ᓄᓇᑦᓯᐊᕗᑦ") add("ᓄᓇᕕᒃ") add("ᓄᓇᕕᒻᒥᐅᑦ") add("ᓄᓇᕗᑦ") add("ᓄᓇᕗᒻᒥᐅᖅ") add("ᓄᓕᐊᖅ") add("ᓄᔭᑦ") add("ᓇᓂ") add("ᓇᓄᒃ") add("ᓇᓄᖅ") add("ᓕᐅᓇ") add("ᓯᐅᑦ") add("ᓯᐱᓂᖅ") add("ᓯᓈ") add("ᓯᓚ") add("ᓯᓚᒥ") add("ᓯᕿᓂᖅ") add("ᓱᓇᒐᖅ") add("ᓲᓴᓐ") add("ᓴᐃᒧ") add("ᓴᑯ") add("ᓴᕕᒃ") add("ᔪᐊᑕᓐ") add("ᔭᓐᓄᐊᓕ") add("ᕼᐊᓐᑕ") add("ᕼᐋᑭ") add("ᕿᒃᑐᕆᐊᖅ") add("ᕿᒃᑐᕆᐊᖅᑕᐅᓂᖅ") add("ᕿᒻᒥᒃ") add("ᕿᒻᒧᒃᓯᑦ") add("ᕿᓚᓗᒐᖅ") add("ᕿᓯᒃ") add("ᕿᖓᖅ") add("ᖁᑭᐅᑦ") add("ᖁᔭᓐᓇᒦᒃ") add("ᖃᐅᒃᐸᑦ") add("ᖃᐅᓯᖅᑐᖅ") add("ᖃᐅᔨᒪᓂᑐᖃᖏᑦ") add("ᖃᐅᔨᒪᔭᑐᖃᖏᑦ") add("ᖃᒧᑏᒃ") add("ᖃᓂᖅ") add("ᖃᓪᓗᓈᖅ") add("ᖃᔭᖅ") add("ᖃᖓ") add("ᖄᓐᕿᔭᐅᑦ") return table.concat(output, "\n") end return export 09lv3lve83jacjkkimjgtxpc1udzvnf মডিউল:kfa-Knda-translit 828 168766 510318 2026-06-07T12:47:03Z RedminBot 9553 [[en:Module:kfa-Knda-translit]] থেকে আনা হলো 510318 Scribunto text/plain local export = {} local consonants = { ['ಕ']='k', ['ಖ']='kh', ['ಗ']='g', ['ಘ']='gh', ['ಙ']='ṅ', ['ಚ']='c', ['ಛ']='ch', ['ಜ']='j', ['ಝ']='jh', ['ಞ']='ñ', ['ಟ']='ṭ', ['ಠ']='ṭh', ['ಡ']='ḍ', ['ಢ']='ḍh', ['ಣ']='ṇ', ['ತ']='t', ['ಥ']='th', ['ದ']='d', ['ಧ']='dh', ['ನ']='n', ['ಪ']='p', ['ಫ']='ph', ['ಬ']='b', ['ಭ']='bh', ['ಮ']='m', ['ಯ']='y', ['ರ']='r', ['ಱ']='ṟ', ['ಲ']='l', ['ವ']='v', ['ಶ']='ś', ['ಷ']='ṣ', ['ಸ']='s', ['ಹ']='h', ['ಳ']='ḷ', ['ೞ']='ḻ', ['ಫ಼']='f', ['ಜ಼']='z', ['ಳ಼']='ḻ', } local diacritics = { ['ಾ']= 'ā' , ['ಿ']='i' , ['ೀ']='ī' , ['ು']='u' , ['ೂ']='ū' , ['ೃ']='ṛ' , ['ೄ']='r̥̄' , ['ೆ']='e' , ['ೇ']='ē' , ['ೈ']='ai' , ['ೊ']='o' , ['ೋ']='ō' , ['ೌ']='au' } local nonconsonants = { -- vowels ['ಅ']='a' , ['ಆ']='ā' , ['ಇ']='i' , ['ಈ']='ī' , ['ಉ']='u' , ['ಊ']='ū' , ['ಋ']='ṛ' , ['ೠ']='r̥̄' , ['ಌ']='l̥' , ['ೡ']='l̥̄', ['ಎ']='e' , ['ಏ']='ē' , ['ಐ']='ai' , ['ಒ']='o' , ['ಓ']='ō' , ['ಔ']='au' , ['ಅಂ']='aṃ' , ['ಅಃ']='ah' , -- other symbols ['ಂ']='ṃ', -- anusvara ['ಃ']='ḥ', -- visarga --halant, supresses the inherent vowel "a" ['್']='', -- digits ['೦'] = '0', ['೧'] = '1', ['೨'] = '2', ['೩'] = '3', ['೪'] = '4', ['೫'] = '5', ['೬'] = '6', ['೭'] = '7', ['೮'] = '8', ['೯'] = '9', } -- translit any words or phrases function export.tr(text, lang, sc) local UKARA= 'ು' -- final ï text = mw.ustring.gsub(text, UKARA.. "([%,%.%!%?%:%;]?)$", UKARA.. "ï%1") text = mw.ustring.gsub(text, UKARA.. "([%,%.%!%?%:%;]?) ", UKARA.. "ï%1 ") text = mw.ustring.gsub( text, '([ಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನಪಫಬಭಮಯರಱಲವಶಷಸಹಳೞಕಖ][಼]?)'.. '([ಾಿೀುೂೃೆೇೈೊೋೌ್]?)', function(c, d) -- mw.log('match', c, d) c = consonants[c] or c if d == "" then return c .. 'a' else return c .. (diacritics[d] or d) end end) text = mw.ustring.gsub(text, '.', nonconsonants) -- anusvara text = mw.ustring.gsub(text, 'ṃ([kgṅ])', 'ṅ%1') text = mw.ustring.gsub(text, 'ṃ([cjñ])', 'ñ%1') text = mw.ustring.gsub(text, 'ṃ([ṭḍṇ])', 'ṇ%1') text = mw.ustring.gsub(text, 'ṃ([tdn])', 'n%1') text = mw.ustring.gsub(text, 'ṃ([pbm])', 'm%1') -- final ï text = mw.ustring.gsub(text, '([%s%p])u', '%1ï') return text end return export 411cm7nb41ajimqqfsribu1v0crwvtr মডিউল:kfa-Knda-translit/testcases 828 168767 510319 2026-06-07T12:47:04Z RedminBot 9553 [[en:Module:kfa-Knda-translit/testcases]] থেকে আনা হলো 510319 Scribunto text/plain -- Unit tests for [[Module:kfa-Knda-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local kfa_translit = require('Module:kfa-Knda-translit') --TO DO function tests:do_test_translit(knda, roman, comment) self:equals( '<span class="Knda" lang="gon">[[' .. knda .. '#Kodava|' .. knda .. ']]</span>', kfa_translit.tr(knda, 'kfa', 'Knda'), roman, { comment = comment }) end function tests:test_translit_kodava() local examples = { { 'ದಂಡು', 'daṇḍï', 'word-final u is /ɨ/'}, } self:iterate(examples, 'do_test_translit') end return tests 38opvgv4p7jgl9xzti42ftr0ctvehyc মডিউল:kfb-Deva-translit 828 168768 510320 2026-06-07T12:47:04Z RedminBot 9553 [[en:Module:kfb-Deva-translit]] থেকে আনা হলো 510320 Scribunto text/plain local export = {} local consonants = { ['क']='k', ['ख']='kh', ['ग']='g', ['घ']='gh', ['ङ']='ṅ', ['च']='c', ['छ']='ch', ['ज']='j', ['झ']='jh', ['ञ']='ñ', ['ट']='ṭ', ['ठ']='ṭh', ['ड']='ḍ', ['ढ']='ḍh', ['ण']='ṇ', ['त']='t', ['थ']='th', ['द']='d', ['ध']='dh', ['न']='n', ['प']='p', ['फ']='ph', ['ब']='b', ['भ']='bh', ['म']='m', ['य']='y', ['र']='r', ['ल']='l', ['व']='v', ['ळ']='ḷ', ['श']='ś', ['ष']='ṣ', ['स']='s', ['ह']='h', ['क़'] = 'q', ['ख़'] = 'x', ['ग़'] = 'ġ', ['फ़'] = 'f', ['ज़'] = 'z', ['झ़'] = 'ź', ['ड़'] = 'ṛ', ['ढ़'] = 'ṛh', } local diacritics = { ['ा']='ā', ['ि']='i', ['ी']='ī', ['ु']='u', ['ू']='ū', ['ृ']='ṛ', ['ॄ']='ṝ', ['ॢ']='ḷ', ['ॣ']='ḹ', ['े']='e', ['ै']='ai', ['ो']='o', ['ौ']='au', ['्']='', } local tt = { -- vowels ['अ']='a', ['आ']='ā', ['इ']='i', ['ई']='ī', ['उ']='u', ['ऊ']='ū', ['ऋ']='ṛ', ['ॠ']='ṝ', ['ऌ']='ḷ', ['ॡ']='ḹ', ['ए']='e', ['ऐ']='ai', ['ओ']='o', ['औ']='au', -- chandrabindu ['ँ']='m̐', --until a better method is found -- anusvara ['ं']='ṃ', --until a better method is found -- visarga ['ः']='ḥ', -- avagraha ['ऽ']='ʼ', --numerals ['०']='0', ['१']='1', ['२']='2', ['३']='3', ['४']='4', ['५']='5', ['६']='6', ['७']='7', ['८']='8', ['९']='9', --punctuation ['॥']='.', --double danda ['।']='.', --danda --Om ['ॐ']='oṃ', } function export.tr(text, lang, sc) if sc ~= "Deva" then return nil end text = mw.ustring.gsub( text, '([क-ह])'.. '([ािीुूृॄॢॣेैोौ्]?)'.. '([अ-औ]?)', function(c, d, e) if d == "" and e ~= "" then if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. '̈' else return consonants[c] .. 'a' .. tt[e] end elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) return text end return export 9s4w3if4plbyn6m3pdpcm9q0xzuvv9x মডিউল:kfb-Telu-translit 828 168769 510321 2026-06-07T12:47:04Z RedminBot 9553 [[en:Module:kfb-Telu-translit]] থেকে আনা হলো 510321 Scribunto text/plain local export = {} local consonants = { ['క']='k' , ['ఖ']='kh' , ['గ']='g' , ['ఘ']='gh' , ['ఙ']='ṅ' , ['చ']='c' , ['ఛ']='ch' , ['జ']='j' , ['ఝ']='jh' , ['ఞ']='ñ' , ['ట']='ṭ' , ['ఠ']='ṭh' , ['డ']='ḍ' , ['ఢ']='ḍh' , ['ణ']='ṇ' , ['త']='t' , ['థ']='th' , ['ద']='d' , ['ధ']='dh' , ['న']='n' , ['ప']='p' , ['ఫ']='ph' , ['బ']='b' , ['భ']='bh' , ['మ']='m' , ['య']='y' , ['ర']='r' , ['ల']='l' , ['వ']='v' , ['ళ']='ḷ' , ['శ']='ś' , ['ష']='ṣ' , ['స']='s' , ['హ']='h' , ['ఱ']='ṟ' , ['ఴ']='ḻ' , ['ౘ']='ĉ' , ['ౙ']='ẑ' , ['ౚ']='ṟ̄' , ['క఼']='q' , ['ఖ఼']='x' , ['గ఼']='ġ' , ['జ఼']='z', ['ఝ఼']='ź', ['ఫ఼']='f', ['డ఼']='ṛ', ['ఢ఼']='ṛh', ['న఼']='ṉ', } local diacritics = { ['ా']= 'ā' , ['ి']='i' , ['ీ']='ī' , ['ు']='u' , ['ూ']='ū' , ['ృ']='r̥' , ['ౄ']='r̥̄' , ['ౢ']='l̥' , ['ౣ']='l̥̄' , ['ె']='e' , ['ే']='ē' , ['ై']='ai' , ['ొ']='o' , ['ో']='ō' , ['ౌ']='au' , ['్']='' , } local tt = { -- vowels ['అ']='a' , ['ఆ']='ā' , ['ఇ']='i' , ['ఈ']='ī' , ['ఉ']='u' , ['ఊ']='ū' , ['ఋ']='r̥' , ['ౠ']='r̥̄' , ['ఌ']='l̥' , ['ౡ']='l̥̄', ['ఎ']='e' , ['ఏ']='ē' , ['ఐ']='ai' , ['ఒ']='o' , ['ఓ']='ō' , ['ఔ']='au' , ['అం']='aṁ' , ['అఁ']='an̆' , ['అః']='aḥ' , -- other symbols ['ం']='ṁ',-- anusvara ['ః']='ḥ' , -- visarga ['ఁ']='n̆' , -- candrabindu/arthanusvāra/aranusa ['ఀ']='m̐' , -- combining candrabindu ['ఽ']='’' , -- avagraha -- digits ['౦'] = '0', ['౧'] = '1', ['౨'] = '2', ['౩'] = '3', ['౪'] = '4', ['౫'] = '5', ['౬'] = '6', ['౭'] = '7', ['౮'] = '8', ['౯']= '9', ['౸']='0⁄4', ['౹']='¼', ['౺']='2⁄4', ['౻']='¾', ['౦']='0⁄16', ['౼']='1⁄16', ['౽']='2⁄16', ['౾']='3⁄16' , } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '([కఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరలవళశషసహఱఴౘౙౚ])'.. '([ాిీుూృ̥ౄ̥̄ెేైొోౌ్]?)', function(c, d) if d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) -- anusvara text = mw.ustring.gsub(text, 'ṁ([kqxgġṅ])', 'ṅ%1') text = mw.ustring.gsub(text, 'ṁ([cjźñ])', 'ñ%1') text = mw.ustring.gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = mw.ustring.gsub(text, 'ṁ([tdnĉẑz])', 'n%1') text = mw.ustring.gsub(text, 'ṁ([pfbm])', 'm%1') return text end return export eztvkjvbw8doh740obx0dgijw6w11p8 মডিউল:kfc-translit 828 168770 510322 2026-06-07T12:47:05Z RedminBot 9553 [[en:Module:kfc-translit]] থেকে আনা হলো 510322 Scribunto text/plain local export = {} local consonants = { ['క']='k' , ['ఖ']='kh' , ['గ']='g' , ['ఘ']='gh' , ['ఙ']='ṅ' , ['చ']='c' , ['ఛ']='ch' , ['జ']='j' , ['ఝ']='jh' , ['ఞ']='ñ' , ['ట']='ṭ' , ['ఠ']='ṭh' , ['డ']='ḍ' , ['ఢ']='ḍh' , ['ణ']='ṇ' , ['త']='t' , ['థ']='th' , ['ద']='d' , ['ధ']='dh' , ['న']='n' , ['ప']='p' , ['ఫ']='ph' , ['బ']='b' , ['భ']='bh' , ['మ']='m' , ['య']='y' , ['ర']='r' , ['ల']='l' , ['వ']='v' , ['ళ']='ḷ' , ['శ']='ś' , ['ష']='ṣ' , ['స']='s' , ['హ']='h' , ['ఱ']='ṟ' , ['ఴ']='ḻ' , ['ౘ']='ĉ' , ['ౙ']='ẑ' , ['ౚ']='ṟ̄' , ['క఼']='q' , ['ఖ఼']='x' , ['గ఼']='ġ' , ['జ఼']='z', ['ఝ఼']='ź', ['ఫ఼']='f', ['డ఼']='ṛ', ['ఢ఼']='ṛh', ['న఼']='ṉ', } local diacritics = { ['ా']= 'ā' , ['ి']='i' , ['ీ']='ī' , ['ు']='u' , ['ూ']='ū' , ['ృ']='r̥' , ['ౄ']='r̥̄' , ['ౢ']='l̥' , ['ౣ']='l̥̄' , ['ె']='e' , ['ే']='ē' , ['ై']='ai' , ['ొ']='o' , ['ో']='ō' , ['ౌ']='au' , ['్']='' , } local tt = { -- vowels ['అ']='a' , ['ఆ']='ā' , ['ఇ']='i' , ['ఈ']='ī' , ['ఉ']='u' , ['ఊ']='ū' , ['ఋ']='r̥' , ['ౠ']='r̥̄' , ['ఌ']='l̥' , ['ౡ']='l̥̄', ['ఎ']='e' , ['ఏ']='ē' , ['ఐ']='ai' , ['ఒ']='o' , ['ఓ']='ō' , ['ఔ']='au' , ['అం']='aṁ' , ['అఁ']='an̆' , ['అః']='aḥ' , -- other symbols ['ం']='ṁ',-- anusvara ['ః']='ḥ' , -- visarga ['ఁ']='n̆' , -- candrabindu/arthanusvāra/aranusa ['ఀ']='m̐' , -- combining candrabindu ['ఽ']='’' , -- avagraha -- digits ['౦'] = '0', ['౧'] = '1', ['౨'] = '2', ['౩'] = '3', ['౪'] = '4', ['౫'] = '5', ['౬'] = '6', ['౭'] = '7', ['౮'] = '8', ['౯']= '9', ['౸']='0⁄4', ['౹']='¼', ['౺']='2⁄4', ['౻']='¾', ['౦']='0⁄16', ['౼']='1⁄16', ['౽']='2⁄16', ['౾']='3⁄16' , } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '([కఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరలవళశషసహఱఴౘౙౚ])'.. '([ాిీుూృ̥ౄ̥̄ెేైొోౌ్]?)', function(c, d) if d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) -- anusvara text = mw.ustring.gsub(text, 'ṁ([kqxgġṅ])', 'ṅ%1') text = mw.ustring.gsub(text, 'ṁ([cjźñ])', 'ñ%1') text = mw.ustring.gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = mw.ustring.gsub(text, 'ṁ([tdnĉẑz])', 'n%1') text = mw.ustring.gsub(text, 'ṁ([pfbm])', 'm%1') return text end return export eztvkjvbw8doh740obx0dgijw6w11p8 মডিউল:kfe-translit 828 168771 510323 2026-06-07T12:47:05Z RedminBot 9553 [[en:Module:kfe-translit]] থেকে আনা হলো 510323 Scribunto text/plain local export = {} local consonants = { ['க']='k' , ['ங']='ṅ' , ['ச']='c' , ['ஞ']='ñ' , ['ட']='ṭ' , ['ண']='ṇ' , ['த']='t' , ['ந']='n' , ['ப']='p', ['ம']='m' , ['ய']='y' , ['ர']='r' , ['ல']='l' , ['வ']='v' , ['ழ']='ḻ' , ['ள']='ḷ' , ['ற']='ṟ' , ['ன']='ṉ' , ['ஶ']='ś' , ['ஜ']='j' , ['ஷ']='ṣ' , ['ஸ']='s' , ['ஹ']='h' , ['ஃப']='f' , ['ஃஜ']='z' , ['ஃஸ']='x' , ['ஃ']='ḥ' , ['ௐ']='о̄m', } local diacritics = { ['ா']= 'ā' , ['ி']='i' , ['ீ']='ī' , ['ு']='u' , ['ூ']='ū' , ['ெ']='e' , ['ே']='ē' , ['ை']='ai' , ['ொ']='o' , ['ோ']='ō' , ['ௌ']='au', ['்']='', --halant, supresses the inherent vowel "a" -- no diacritic [''] = 'a' } local nonconsonants = { -- vowels ['அ']='’a' , ['ஆ']='’ā' , ['இ']='’i' , ['ஈ']='’ī' , ['உ']='’u' , ['ஊ']='’ū' , ['எ']='’e' , ['ஏ']='’ē' , ['ஐ']='’ai' , ['ஒ']='’o' , ['ஓ']='’ō' , ['ஔ']='’au' , ['ௐ']='о̄m', -- other symbols -- ['ஃ']='' , ['ௐ']='о̄m', } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '(ஃ?)([க-ஹ])([ா-்]?)', function(h, c, d) return (consonants[h..c] or consonants[h] .. (consonants[c] or c)) .. diacritics[d] end) text = mw.ustring.gsub(text, '[அ-ஔ]', nonconsonants) text = mw.ustring.gsub(text, '^’', '') text = mw.ustring.gsub(text, '([%s%p])’', '%1') return text end return export a3qf9zv94w61d336tlc71zm9r1dix7p মডিউল:kff-translit 828 168772 510324 2026-06-07T12:47:05Z RedminBot 9553 [[en:Module:kff-translit]] থেকে আনা হলো 510324 Scribunto text/plain local export = {} local consonants = { ['క']='k' , ['ఖ']='kh' , ['గ']='g' , ['ఘ']='gh' , ['ఙ']='ṅ' , ['చ']='c' , ['ఛ']='ch' , ['జ']='j' , ['ఝ']='jh' , ['ఞ']='ñ' , ['ట']='ṭ' , ['ఠ']='ṭh' , ['డ']='ḍ' , ['ఢ']='ḍh' , ['ణ']='ṇ' , ['త']='t' , ['థ']='th' , ['ద']='d' , ['ధ']='dh' , ['న']='n' , ['ప']='p' , ['ఫ']='ph' , ['బ']='b' , ['భ']='bh' , ['మ']='m' , ['య']='y' , ['ర']='r' , ['ల']='l' , ['వ']='v' , ['ళ']='ḷ' , ['శ']='ś' , ['ష']='ṣ' , ['స']='s' , ['హ']='h' , ['ఱ']='ṟ' , ['ఴ']='ḻ' , ['ౘ']='ĉ' , ['ౙ']='ẑ' , ['ౚ']='ṟ̄' , ['క఼']='q' , ['ఖ఼']='x' , ['గ఼']='ġ' , ['జ఼']='z', ['ఝ఼']='ź', ['ఫ఼']='f', ['డ఼']='ṛ', ['ఢ఼']='ṛh', ['న఼']='ṉ', } local diacritics = { ['ా']= 'ā' , ['ి']='i' , ['ీ']='ī' , ['ు']='u' , ['ూ']='ū' , ['ృ']='r̥' , ['ౄ']='r̥̄' , ['ౢ']='l̥' , ['ౣ']='l̥̄' , ['ె']='e' , ['ే']='ē' , ['ై']='ai' , ['ొ']='o' , ['ో']='ō' , ['ౌ']='au' , ['్']='' , } local tt = { -- vowels ['అ']='a' , ['ఆ']='ā' , ['ఇ']='i' , ['ఈ']='ī' , ['ఉ']='u' , ['ఊ']='ū' , ['ఋ']='r̥' , ['ౠ']='r̥̄' , ['ఌ']='l̥' , ['ౡ']='l̥̄', ['ఎ']='e' , ['ఏ']='ē' , ['ఐ']='ai' , ['ఒ']='o' , ['ఓ']='ō' , ['ఔ']='au' , ['అం']='aṁ' , ['అఁ']='an̆' , ['అః']='aḥ' , -- other symbols ['ం']='ṁ',-- anusvara ['ః']='ḥ' , -- visarga ['ఁ']='n̆' , -- candrabindu/arthanusvāra/aranusa ['ఀ']='m̐' , -- combining candrabindu ['ఽ']='’' , -- avagraha -- digits ['౦'] = '0', ['౧'] = '1', ['౨'] = '2', ['౩'] = '3', ['౪'] = '4', ['౫'] = '5', ['౬'] = '6', ['౭'] = '7', ['౮'] = '8', ['౯']= '9', ['౸']='0⁄4', ['౹']='¼', ['౺']='2⁄4', ['౻']='¾', ['౦']='0⁄16', ['౼']='1⁄16', ['౽']='2⁄16', ['౾']='3⁄16' , } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '([కఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరలవళశషసహఱఴౘౙౚ])'.. '([ాిీుూృ̥ౄ̥̄ెేైొోౌ్]?)', function(c, d) if d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) -- anusvara text = mw.ustring.gsub(text, 'ṁ([kqxgġṅ])', 'ṅ%1') text = mw.ustring.gsub(text, 'ṁ([cjźñ])', 'ñ%1') text = mw.ustring.gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = mw.ustring.gsub(text, 'ṁ([tdnĉẑz])', 'n%1') text = mw.ustring.gsub(text, 'ṁ([pfbm])', 'm%1') return text end return export eztvkjvbw8doh740obx0dgijw6w11p8 মডিউল:kgj-translit 828 168773 510325 2026-06-07T12:47:06Z RedminBot 9553 [[en:Module:kgj-translit]] থেকে আনা হলো 510325 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local match = mw.ustring.match local conv = { -- consonants ["क"] = "k", ["ख"] = "kh", ["ग"] = "g", ["घ"] = "gh", ["ङ"] = "ṅ", ["च"] = "c", ["छ"] = "ch", ["ज"] = "j", ["झ"] = "jh", ["ञ"] = "ñ", ["ट"] = "ṭ", ["ठ"] = "ṭh", ["ड"] = "ḍ", ["ढ"] = "ḍh", ["ण"] = "ṇ", ["त"] = "t", ["थ"] = "th", ["द"] = "d", ["ध"] = "dh", ["न"] = "n", ["प"] = "p", ["फ"] = "ph", ["ब"] = "b", ["भ"] = "bh", ["म"] = "m", ["य"] = "y", ["र"] = "r", ["ल"] = "l", ["व"] = "w", ["ळ"] = "ḷ", ["श"] = "ś", ["ष"] = "ṣ", ["स"] = "s", ["ह"] = "h", ["ज़"] = "z", ["झ़"] = "zh", ["व़"] = "ẏ", -- ["क़"] = "q", ["ख़"] = "x", ["ग़"] = "ġ", ["ऴ"] = "ḻ", ["ड़"] = "ṛ", ["ढ़"] = "ṛh", ["फ़"] = "f", ["थ़"] = "θ", ["द़"] = "ð", ["ऩ"] = "ṉ", ["ऱ"] = "ṟ", ["स़"] = "z", ["च़"] = "c", ["छ़"] = "ch", ["ॹ"] = "ž", ["श़"] = "ž", -- vowel diacritics ["ि"] = "i", ["ु"] = "u", ["े"] = "e", ["ो"] = "o", ["ा"] = "ā", ["ी"] = "ī", ["ू"] = "ū", ["ृ"] = "r̥", ["ॄ"] = "r̥̄", ["ॢ"] = "l̥", ["ॣ"] = "l̥̄", ["ै"] = "ai", ["ौ"] = "au", ["ॉ"] = "ŏ", ["ॅ"] = "ĕ", ["ॆ"] = "e", ["ॊ"] = "o", -- vowel signs ["अ"] = "a", ["इ"] = "i", ["इ़"] = "ü", ["उ"] = "u", ["उ़"] = "ï", ["ए"] = "e", ["ए़"] = "ø", ["ओ"] = "o", ["आ"] = "ā", ["ई"] = "ī", ["ऊ"] = "ū", ["ऋ"] = "r̥", ["ॠ"] = "r̥̄", ["ऌ"] = "l̥", ["ॡ"] = "l̥̄", ["ऐ"] = "ai", ["औ"] = "au", ["ऑ"] = "ŏ", ["ॲ"] = "ĕ", ["ऍ"] = "ĕ", ["ऎ"] = "e", ["ऒ"] = "o", -- chandrabindu ["ँ"] = "̃", -- anusvara ["ं"] = "̃", -- visarga ["ः"] = "ḥ", -- virama ["्"] = "", -- glottal stop ["ॽ"] = "’", -- high spacing dot ["ॱ"] = "'", -- avagraha ["ऽ"] = "'", --- dot ["."] = "'", -- ["°"] = "'", -- numerals ["०"] = "0", ["१"] = "1", ["२"] = "2", ["३"] = "3", ["४"] = "4", ["५"] = "5", ["६"] = "6", ["७"] = "7", ["८"] = "8", ["९"] = "9", -- punctuation ["।"] = ".", -- danda ["॥"] = ".", -- double danda ["+"] = "", -- compound separator -- abbreviation sign ["॰"] = "." } local all_cons, special_cons = "कखगघङचछजझञटठडढणतथदधनपफबभमयरलवसशषह", "कखगघचछजझटठडढणतथदधनपफबभमयरलवशषसह" local vowel, vowel_sign = "aिुृेोाीूैौॉॅॆॊॄॢॣॆॊ", "अइउएओआईऊऋॠॡऌऐऔऎऒए़इ़ऑऍ" local function rev_string(text) local result, length = {}, mw.ustring.len(text) for i = length, 1, -1 do table.insert(result, mw.ustring.sub(text, i, i)) end return table.concat(result) end function export.tr(text, lang, sc) text = gsub( text, "([" .. all_cons .. "]़?)([" .. vowel .. "्]?)", function(c, d) return c .. (d == "" and "a" or d) end ) for word in mw.ustring.gmatch(text, "[ऀ-ॿa]+") do local orig_word = word word = rev_string(word) word = gsub( word, "^a(़?)([" .. all_cons .. "])(.)(.?)", function(opt, first, second, third) return (((match(first, "[" .. special_cons .. "]") and match(second, "ं") or match(first, "[" .. special_cons .. "]") and match(second, "्") and not perm_cl[first .. second .. third]) or match(first .. second, "य[aिुृेोाीूैौॉॅॆॊआईउऊइएऐओऔ]") or match(first .. second, "ह[अaिुृेोाीूैौॉॅॆॊआईउऊइएऐओऔ]")) and "a" or "") .. opt .. first .. second .. third end ) local escaped_orig_word = gsub(orig_word, "%+", "") text = gsub(text, orig_word, rev_string(word)) text = gsub(text, "ज्ञ", "gy") text = gsub( text, "ॱ([" .. all_cons .. "])(़?)(्?)([वयरल]?)(़?)([" .. vowel .. "]?)([ँँं]?)(ः?)", "%1%2%3%4%5%6%7%8'" ) end text = gsub(text, ".़?", conv) text = gsub(text, "a([iu])̃", "a͠%1") text = gsub(text, "rh̥", "hr̥") text = gsub(text, "[<>]", "") return mw.ustring.toNFC(text) end return export 06zurrshr9r1hxt6stvb54qejylieln মডিউল:kgj-translit/testcases 828 168774 510326 2026-06-07T12:47:06Z RedminBot 9553 [[en:Module:kgj-translit/testcases]] থেকে আনা হলো 510326 Scribunto text/plain -- Unit tests for [[Module:kgj-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local kgj_translit = require('Module:kgj-translit')-- Unit tests for [[Module:kgj-translit]]. Refresh page to run tests. function tests:do_test_translit(deva, roman, comment) self:equals('<span class="Deva" lang="kgj">[[' .. mw.ustring.gsub(deva, "%+", "") .. '#Kham|' .. mw.ustring.gsub(deva, "%+", "") .. ']]</span>', kgj_translit.tr(deva, 'kgj', 'Deva'), roman, { comment = comment }) end function tests:test_translit_kgj() self:do_test_translit('ज़ा', 'zā') self:do_test_translit('भ्लोङ', 'bhloṅ') self:do_test_translit('ॱको', "ko'") self:do_test_translit('ॱकाः', "kāḥ'") self:do_test_translit('ॱक्या', "kyā'") self:do_test_translit('ॱह्व़िँ', "hẏĩ'") end return tests ktxrva0ofajpn544cd8ii7npntf40wa মডিউল:khv-translit/testcases 828 168775 510327 2026-06-07T12:47:07Z RedminBot 9553 [[en:Module:khv-translit/testcases]] থেকে আনা হলো 510327 Scribunto text/plain return require("Module:transliteration module testcases") { module = "khv-translit", examples = { { "гъодо", "ġodo" }, }, sc = "Cyrl", lang = "khv", } gvoxhcgwbrk7ikri0khc7k94d2jbknn মডিউল:kjp-translit/testcases 828 168776 510328 2026-06-07T12:47:08Z RedminBot 9553 [[en:Module:kjp-translit/testcases]] থেকে আনা হলো 510328 Scribunto text/plain local tests = require('Module:UnitTests') local kjp_translit = require('Module:kjp-translit') function tests:check_tr(Mymr, Latn) self:equals(('<span class="Mymr" lang="kjp">[[%s#ဖၠုံ|%s]]</span>'):format(Mymr, Mymr), kjp_translit.tr(Mymr, 'kjp', 'Mymr'), Latn) end function tests:test_translit() self:check_tr("ကျာ်", "kjài") self:check_tr("ခါန်ႋ", "khāɴ") end return tests 5bmi4esamm3ftgaugq62g3juu1tycy1 মডিউল:kk-Cyrl-Arab-translit/testcases 828 168777 510329 2026-06-07T12:47:09Z RedminBot 9553 [[en:Module:kk-Cyrl-Arab-translit/testcases]] থেকে আনা হলো 510329 Scribunto text/plain -- Unit tests for [[Module:kk-Cyrl-Arab-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local m_translit = require('Module:kk-Cyrl-Arab-translit') local full_link = require('Module:links').full_link local tagged = require('Module:script utilities').tag_text local kk = require('Module:languages').getByCode('kk') local rlm = require("Module:string/char")(0x200F) -- right-to-left mark --[=[ characters that are difficult for me to type as I dont have a kk-Arab keyboard. Needed as I prefer to manually type examples, rather than copy and paste, to avoid incorrect characters ]=] local e = require("Module:string/char")(0x06D5) local u = require("Module:string/char")(0x06C7) local ng = require("Module:string/char")(0x06AD) local hamza_a = require("Module:string/char")(0x0675) local hamza_u = require("Module:string/char")(0x0677) local hamza_i = require("Module:string/char")(0x0678) local hamza_o = require("Module:string/char")(0x0676) local hamza = require("Module:string/char")(0x0674) local function link(word) return full_link{ term = word, lang = kk, tr = "-" } end local function nolink(word) return tagged(word, kk) end local options = {show_difference = true } --TO DO function tests:do_test_translit(cyrl, arab) self:equals(link(cyrl), link(m_translit.tr(cyrl, 'kk', 'Cyrl')), link(arab)) end function tests:do_test_nolink(cyrl, arab) self:equals(nolink(cyrl), nolink(m_translit.tr(cyrl, 'kk', 'Cyrl')), nolink(arab)) end function tests:test_translit_kk_cyrl_arab() local nolink = { { "Барлық адамдар тумысынан азат және қадір-қасиеті мен құқықтары тең болып дүниеге келеді. Адамдарға ақыл-парасат, ар-ождан берілген, сондықтан олар бір-бірімен туыстық, бауырмалдық қарым-қатынас жасаулары тиіс." , "بارلىق ادامدار تۋمىسىنان ازات جانە ٴقادىر-قاسيەتى مەن قۇقىقتارى تەڭ بولىپ دۇنيەگە كەلەدى. ادامدارعا اقىل-پاراسات، ار-وجدان بەرىلگەن، سوندىقتان ولار ٴبىر-بىرىمەن تۋىستىق، باۋىرمالدىق قارىم-قاتىناس جاساۋلارى ٴتيىس." }, } local examples = { { "адамдар", "ادامدار" }, { "-са", "ـسا" }, --should this use kashida or a normal dash { "-се", "ـس" .. e }, { "Алтай", "التاي" }, { "Алматы", "الماتى" }, { "Қазақстан", "قازاقستان" }, { "қазақша", "قازاقشا" }, { "таңғажайып", "تا" .. ng .. "عاجايىپ" }, { "Әзірбайжан", hamza_a .. "زىربايجان" }, { "Үрімжі", hamza_u .. "رىمجى" }, { "Ыстамбұл", "ىستامب" .. u .. "ل" }, { "түйіс", hamza .. "ت" .. u .. "يىس" }, { "түйір", hamza .. "ت" .. u .. "يىر"}, -- gaaf, kaaf and 'e' should cancel hamza { "Әзербайжан", "از" .. e .. "ربايجان" }, { "түйістер", "ت" .. u .. "يىست" .. e .. "ر" }, { "түйірлер", "ت" .. u .. "يىرل" .. e.. "ر"}, { "Гүржістан", "گ" .. u .. "رجىستان"}, { "Айбек", "ايب" .. e .. "ك" }, } self:iterate(nolink, "do_test_nolink") self:iterate(examples, "do_test_translit") end return tests b4b6zjgdugl12rvzlrget80srbqcw8b মডিউল:kk-translit/testcases 828 168778 510330 2026-06-07T12:47:09Z RedminBot 9553 [[en:Module:kk-translit/testcases]] থেকে আনা হলো 510330 Scribunto text/plain local tests = require("Module:UnitTests") local kk_translit = require("Module:kk-translit") function tests:check_translit(Cyrl, Latn) self:equals(('<span lang="kk" class="Cyrl mention">[[%s#Kazakh|%s]]</span>'):format(Cyrl, Cyrl), kk_translit.tr(Cyrl, 'kk', 'Cyrl'), Latn) end function tests:test_translit() local examples = { { "қазақ", "qazaq" }, { "маркетинг", "marketiñ" }, -- final or pre-consonantal positions only { "ангина", "angina" }, { "ядро", "yadro" }, { "яғни", "yağnıy" }, -- this is an exception { "автономия", "avtonomiya" }, { "аялдама", "ayaldama" }, { "щётка", "cotka" }, { "киім", "kiyim" }, { "тиын", "tıyın" }, { "жуу", "juwıw" }, { "білу", "biliw" }, } self:iterate(examples, "check_translit") end return tests 01sfanwbsfe98ukwbkfuqz8a2x5in67 মডিউল:km-translit/testcases 828 168779 510331 2026-06-07T12:47:10Z RedminBot 9553 [[en:Module:km-translit/testcases]] থেকে আনা হলো 510331 Scribunto text/plain local tests = require('Module:UnitTests') local transliterate = require('Module:km-translit').tr local lang = require('Module:languages').getByCode('km') local str_gsub = string.gsub local function link(term) return '<span class="Khmr" lang="km">[[' .. term .. '#Khmer|' .. str_gsub(term, ' ', '') .. ']]</span>' end function tests:check_tr(Khmr, Latn) self:equals(link(Khmr), transliterate(Khmr, 'km', 'Khmr', true), Latn) end function tests:test_translit() local examples = { { "ដីឥដ្ឋ", "dei’ĕdth" }, { "ដ៏", "TEMP" }, { "ព្រហស្បតិ៍", "prɔhoah" }, { "សៅរ៍", "sav" }, { "នំបុ័ង", "numbâng" }, -- in sealang.net Khmer dictionary { "នំប៉័ង", "numbâng" }, -- not in sealang.net Khmer dictionary { "យ៉ៅហន", "yavhân" }, { "ពាក្យ", "pyéak" }, { "ក៏ប៉ុន្តែ", "kɑɑ bŏntê" }, -- pʰiesaa { "ភាសា", "phéasa" }, -- louk { "លោក", "loŭk" }, -- neak { "អ្នក", "ʼnâk" }, -- koat { "គាត់", "kéat" }, -- prummeaʔviʔhie { "ព្រហ្មវិហារ", "TEMP" }, --fək, vək { "ហ្វឹក", "fœ̆k" }, -- kaafee { "កាហ្វេ", "kafé" }, -- vooŋ, fooŋ, pʰooŋ { "ហ្វូង", "TEMP" }, -- yəəŋ { "យើង", "TEMP" }, -- puək neak? { "ពួកអ្នក", "TEMP" }, -- nih { "នេះ", "TEMP" }, -- nuh { "នោះ", "TEMP" }, -- ʔaay { "អាយ", "TEMP" }, -- niey { "នាយ", "TEMP" }, -- neak naa { "អ្នកណា", "TEMP" }, -- nɔɔnaa { "នរណា", "TEMP" }, -- ʔvǝy { "អ្វី", "TEMP" }, { "៛", "riel" }, { "កក", "kâk" }, { "កក្កដា", "gukgădā" }, { "កង្កែប", "kɑgnkaep" }, { "កង្ខើញដៃចូលដាល់", "kɑngkʰaəñ day chool dal" }, { "កង់", "gong" }, { "កញ្ឆា", "kɑñchʰaa" }, { "កញ្ញា", "kăññā" }, { "កណ្ដួយ", "kanduoy" }, { "កន្ត្រៃ", "kon trai" }, { "កន្ទាលត្រអាក", "kɑntiel trɑ’aak" }, { "កន្លះ", "kɑnlah" }, { "កន្សោម", "kɑnsaom" }, { "កន្សោមកិរិយា", "kɑnsaom ke’ri’yaa" }, { "កមល", "kaʔmɑl" }, { "កម្ពុជា", "gəmbpŭjīə" }, { "កម្លាំង", "kɑmleang" }, { "កាមធាតុ", "kaam tʰiet" }, { "ការ", "kaa" }, { "ការកំណត់", "kaa kɑmnɑt" }, { "ការផ្សងព្រេង", "kaa psɑɑng preeng" }, { "ការយល់", "kaa yʊəl" }, { "ការរៀបការ", "kaa riəp kaa" }, { "កាហ្វេ", "kaafee" }, { "កាំបិត", "kabet" }, { "កិរិយាស័ព្ទ", "keriyaa səp" }, { "កុមារភាព", "komā phiep" }, { "កុម្ភៈ", "gŭmpeyă" }, { "កុំ", "kom" }, { "កុំព្យូទ័រ", "kompyuutoa" }, { "កូនង៉ា", "goan ngaa" }, { "កូនង៉ែត", "goan ngait" }, { "កូរ៉ាន", "kooraan" }, { "កូរ៉េ", "kōrē" }, { "កូឡាឡាំពួរ", "kuulaa-laampur" }, { "កែវ", "kaev" }, { "កោះ", "goh" }, { "កោះត្រល់", "koh tral" }, { "ក្ដាម", "kdaam" }, { "ក្តុក", "kdok" }, { "ក្នុង", "knong" }, { "ក្បាច់គុនដំបងវែង", "kbachkun dɑmbɑɑng-vɛɛng" }, { "ក្បាល", "kbaal" }, { "ក្មេង", "kmeeng" }, { "ក្មេងកំព្រា", "kmeing kɑmpria" }, { "ក្រ", "krɑɑ" }, { "ក្រដាស", "grədāh" }, { "ក្របី", "krɑbəy" }, { "ក្រពើ", "krɑpəə" }, { "ក្រមារ", "krɑmaa" }, { "ក្រសាន", "krɑsaan" }, { "ក្រសួង", "krɑsuəng" }, { "ក្រហម", "grăhorm" }, { "ក្រាប", "kraap" }, { "ក្រុកៗ", "krok-krok" }, { "ក្រុង", "grong" }, { "ក្រុងកែប", "krong kaep" }, { "ក្រុងប៉ៃលិន", "krong paylɨn" }, { "ក្រុងព្រៃនគរ", "grong bprēī nokor" }, { "ក្រុងភ្នំពេញ", "grong pnŭṁ bpeuñ" }, { "ក្រុងសៀមរាប", "krong siem riep" }, { "ក្រុមទាហាន", "krom tiehien" }, { "ក្រែ", "grair" }, { "ក្រៃ", "kray" }, { "ក្រៃលែង", "krailaeng" }, { "ក្លាហាន", "klaa haan" }, { "ក្អែក", "k’aek" }, { "កំពង់", "kɑmpʊəng" }, { "កំហុស", "kɑmhoh" }, { "ខម", "kʰɑɑm" }, { "ខាង", "kʰaang" }, { "ខាងក្រោយ", "kāng graoī" }, { "ខួប", "kʰuəp" }, { "ខេត្ត", "kʰaet" }, { "ខេត្តកណ្ដាល", "kʰaet kɑndaal" }, { "ខេត្តកែប", "kʰaet kaep" }, { "ខេត្តកោះកុង", "kʰaet kɑh kong" }, { "ខេត្តក្រចេះ", "kʰaet krɑceh" }, { "ខេត្តកំពង់ចាម", "kʰaet kɑmpʊəng caam" }, { "ខេត្តកំពង់ឆ្នាំង", "kʰaet kɑmpʊəng cnang" }, { "ខេត្តកំពង់ធំ", "kʰaet kɑmpʊəng tʰom" }, { "ខេត្តកំពង់ស្ពឺ", "kʰaet kɑmpʊəng spɨɨ" }, { "ខេត្តកំពត", "kʰaet kɑmpɔɔt" }, { "ខេត្តប៉ៃលិន", "kʰaet paylɨn" }, { "ខេត្តបាត់ដំបង", "kʰaet bat dɑmbɑɑng" }, { "ខេត្តពោធិ៍សាត់", "kʰaet poo sat" }, { "ខេត្តព្រះវិហារ", "kʰaet preah vi’hie" }, { "ខេត្តមណ្ឌលគិរី", "kʰaet mʊəndʊəl ki’rii" }, { "ខេត្តរតនៈគិរី", "kʰaet rea’ta’na’ ki’rii" }, { "ខេត្តសៀមរាប", "kʰaet siem riep" }, { "ខេត្តស្ទឹងត្រែង", "kʰaet stɨng traeng" }, { "ខែ", "kʰae" }, { "ខែសុរិយគតិ", "kʰae so’re’ya’" }, { "ខ្ញុំ", "knyom" }, { "ខ្ទឹមស", "ktɨm sɑɑ" }, { "ខ្ទើយ", "ktəəy" }, { "ខ្នង", "knɑɑng" }, { "ខ្នួច", "knuəc" }, { "ខ្ពង់មេឃ", "kpʊəng meek" }, { "ខ្ពស់", "kpʊəh" }, { "ខ្មាស", "kmaah" }, { "ខ្មែរ", "kmae" }, { "ខ្មែរក្រហម", "kmē grăhorm" }, { "ខ្មៅ", "kmav" }, { "ខ្យល់", "kyol" }, { "ខ្លាច", "klaach" }, { "ខ្លាញ់", "klañ" }, { "ខ្លាញ់ជ្រូក", "klang chrūk" }, { "ខ្លាំង", "klang" }, { "ខ្លឹម", "kləm" }, { "ខ្លុយ", "khloy" }, { "ខ្លួន", "kluən" }, { "ខ្លះ", "klah" }, { "ខ្សែ", "ksai" }, { "គង់", "kʊəng" }, { "គណិតវិទ្យា", "gēyəneuttəwityīə" }, { "គណិតសាស្ត្រ", "gēyəneuttəsāh" }, { "គាត់", "koat" }, { "គីមី", "kiimii" }, { "គីមីវិទូ", "kīmī vitū" }, { "គឺ", "geu" }, { "គុណកិរិយា", "kun keriyaa" }, { "គុណនាម", "kun niem" }, { "គូ", "kuu" }, { "គូត", "gūt" }, { "គោ", "kou" }, { "គោមូត្រ", "koo moot" }, { "គ្នា", "knīə" }, { "គ្មាន", "kmien" }, { "គ្មានទីបញ្ចប់", "kmien tii bɑñchɑp" }, { "គ្រាប់", "kroap" }, { "គ្រាមភាសា", "krīəm pīəsā" }, { "គ្រិស្តសាសនា", "krɨh saasnaa" }, { "គ្រូ", "krū" }, { "គ្រូបង្រៀន", "krū bɑngriən" }, { "គ្រួសារ", "krūəsā" }, { "គ្រឿង", "krɨəng" }, { "គ៖", "kɨː" }, { "ឃាតករ", "kʰiet kɑɑ" }, { "ឃុំ", "kʰum" }, { "ឃើញ", "kʰəəñ" }, { "ឃ្មុំ", "kmum" }, { "ឃ្លេ", "klee" }, { "ចង្កា", "jonggaa" }, { "ចង្កឹះ", "chɑngkəh" }, { "ចម្រៀង", "jomreeung" }, { "ចាការតា", "jaakaata" }, { "ចាន", "chaan" }, { "ចាប", "chaap" }, { "ចាស់", "chah" }, { "ចាំ", "jam" }, { "ចិត្ដអត់ធ្មត់", "jət ɑt tmʊət" }, { "ចិត្ត", "cət" }, { "ចិន", "chən" }, { "ចិនកន្តាំង", "chən kɑntang" }, { "ចិនដីគោក", "cən dəy kook" }, { "ចូរ", "joo" }, { "ចេះ", "cheh" }, { "ចៃ", "cay" }, { "ចៃដន់", "caydɑn" }, { "ចោរ", "jao" }, { "ច្បាប់", "chbap" }, { "ចំណងឈ្នាប់", "chɑmnɑɑng chnoap" }, { "ចំណងធ្នាក់", "chɑmnɑɑng tneak" }, { "ចំបាំង", "jombəng" }, { "ចំរៀង", "jomreeung" }, { "ឆោម", "cʰaom" }, { "ឆ្កែ", "chkae" }, { "ឆ្កែបា", "chkae baa" }, { "ឆ្ងាញ់", "chŋañ" }, { "ឆ្នាំ", "chnam" }, { "ឆ្នេរសមុទ្រ", "ch’nēi səmɔt" }, { "ឆ្មា", "chmā" }, { "ឆ្លាត", "chlāt" }, { "ឆ័ត្រ", "cʰat" }, { "ជនជាតិ", "chɔɔn chiet" }, { "ជនរងគ្រោះ", "chɔɔn rɔɔng krʊək" }, { "ជន្ម", "cʊənmeaʔ" }, { "ជន្មា", "cʊənmie" }, { "ជយោ", "chea’you" }, { "ជលធរ", "cʊəleaʔtʰɔɔ" }, { "ជា", "jie" }, { "ជាខ្មែរ", "jie kmae" }, { "ជាង", "jieng" }, { "ជាដរាប", "jie dɑɑ riep" }, { "ជាតិ", "ciet" }, { "ជានិច្ច", "jie nɨch" }, { "ជីព", "ciip" }, { "ជីវា", "ciivaa" }, { "ជីវិត", "jīweut" }, { "ជួនកាល", "jooǝngaal" }, { "ជឿ", "jɨə" }, { "ជ្រលង", "jrəlorng" }, { "ជ្រលងភ្នំ", "jrəlorng pnŭm" }, { "ជ្រូក", "chrūk" }, { "ជំនួយ", "joonooay" }, { "ជំនឿ", "chumnɨə" }, { "ឈាម", "cʰiem" }, { "ឈឹង", "chʰɨng" }, { "ឈឺ", "chʰɨɨ" }, { "ឈឺចាប់", "chʰɨɨ chap" }, { "ឈូង", "cʰuuŋ" }, { "ឈើ", "chəə" }, { "ឈើគូស", "chergūh" }, { "ឈ្ងប់ឈ្ងុយ", "jngup jnguy" }, { "ឈ្ងុយ", "jnguy" }, { "ឈ្ងុយឈ្ងប់", "jnguy jngup" }, { "ឈ្នាប់", "chnoap" }, { "ឈ្នះ", "cneah" }, { "ឈ្មោល", "chmoul" }, { "ឈ្មោះ", "chmʊəh" }, { "ញញឹម", "ñɔñɨm" }, { "ញី", "ñii" }, { "ញូដេលី", "nyuu delii" }, { "ញូវដេលហ៊ី", "ñuw delhi" }, { "ញ្ជីវ័ន", "saɲciivoan" }, { "ញ័រ", "ɲoa" }, { "ដង្កូវ", "dɑngkəv" }, { "ដប", "dɑɑp" }, { "ដប់", "dop" }, { "ដប់បី", "dop bəi" }, { "ដប់បួន", "dop buən" }, { "ដប់ប្រាំ", "dop pram" }, { "ដប់ប្រាំបី", "dop pram bəi" }, { "ដប់ប្រាំបួន", "dop pram buən" }, { "ដប់ប្រាំពីរ", "dop pram pī" }, { "ដប់ប្រាំមួយ", "dop pram muəy" }, { "ដប់ពីរ", "dop pī" }, { "ដប់មួយ", "dop muəy; colloquial: muəy dondop" }, { "ដាល់", "dal" }, { "ដាវ", "dao" }, { "ដី", "dəy" }, { "ដីគោក", "dəy kook" }, { "ដីស", "dəy sɑɑ" }, { "ដឹង", "dəng" }, { "ដឹងគុណ", "dəng kun" }, { "ដុល្លារ", "dollaa" }, { "ដុំ", "dom" }, { "ដូង", "dōng" }, { "ដើម", "daəm" }, { "ដើមឈើ", "darm cher" }, { "ដើម្បី", "daəmbəy" }, { "ដើរ", "daə" }, { "ដេក", "deek" }, { "ដែល", "dael" }, { "ដៃ", "day" }, { "ដោយ", "daoy" }, { "ដោយគ្មាន", "daoy kmien" }, { "ដ្បិត", "dbət" }, { "ដំឡូង", "damlaung" }, { "ឋិតិ", "tʰeʔteʔ" }, { "ណាស់", "nah" }, { "តក់", "tɑk" }, { "តក់ៗ", "tɑk-tɑk" }, { "តស៊ូ", "tɑɑ suu" }, { "តាប", "taap" }, { "តារា", "daaraa" }, { "តារាង", "taaraang" }, { "តារាងខួបធាតុគីមី", "taaraang kʰuəp tʰiet kiimii" }, { "តារារណប", "dārā rɔnɔːp" }, { "តារាវិទូ", "dārā vitū" }, { "តុលា", "dtolā" }, { "តូក្យូ", "togyo" }, { "តួ", "tuə" }, { "តួអក្សរ", "dtūə əksor" }, { "តោ", "dtao" }, { "ត្រាប់", "trap" }, { "ត្រី", "trəy" }, { "ត្រីឆ្លាម", "trəy chlaam" }, { "ត្រីមឹក", "dtray meuk" }, { "ត្រូវ", "trəw" }, { "តំរិះវិជ្ជា", "tɑmreh vɨcchie" }, { "ថា", "tʰaa" }, { "ថាំង", "tung" }, { "ថា៖", "tʰaː" }, { "ថី", "tʰəy" }, { "ថីមិន", "tʰəy mɨn" }, { "ថៃ", "tʰay" }, { "ថ្ងៃ", "thngai" }, { "ថ្ងៃច័ន្ទ", "tngai jŭn" }, { "ថ្ងៃពុធ", "tngai bpŭt" }, { "ថ្ងៃព្រហស្បតិ៍", "tngai bprăhōăh" }, { "ថ្ងៃសុក្រ", "tngai sok" }, { "ថ្ងៃសៅរ៍", "tngai sao" }, { "ថ្ងៃអង្គារ", "tngai ongīă" }, { "ថ្ងៃអាទិត្យ", "tngai ādteut" }, { "ថ្ម", "thmâ" }, { "ថ្មី", "thməi" }, { "ថ្លៃ", "tlai" }, { "ថ្វាយ", "tvaay" }, { "ទង់", "tʊəng" }, { "ទណ្ឌឃាដ", "tôndâkhéat" }, { "ទទួល", "tɔtuəl" }, { "ទន្ទេញ", "tʊəntɨɲ" }, { "ទន្លេ", "dtūənlēi" }, { "ទន់", "tʊən" }, { "ទស", "tʊəh, tea’sa’, tʊəhsa’" }, { "ទសបញ្ញត្តិ", "tʊəh baññat" }, { "ទា", "tiea" }, { "ទាញយក", "tieñ yɔɔk" }, { "ទាន", "tien" }, { "ទិន្នន័យ", "tinneaney" }, { "ទី", "tii" }, { "ទីក្រុង", "dtī grong" }, { "ទីក្រុងតូក្យូ", "dtī grong togyo" }, { "ទីដប់", "tii dɑp" }, { "ទីប៉ាឆា", "tīpāchā" }, { "ទឹក", "tɨk" }, { "ទឹកកក", "tɨk kɑɑ kɑɑ" }, { "ទឹកខ្មៅ", "dteuk kmao" }, { "ទឹកដោះ", "dteuk doh" }, { "ទឹកនោម", "dteuk noam" }, { "ទឹកប្រាក់", "tik prāk" }, { "ទុកចិត្ត", "dtuk jeut" }, { "ទួរគី", "tuorki" }, { "ទើប", "təəp" }, { "ទៀត", "dtīət" }, { "ទេ", "tei" }, { "ទេព", "teip" }, { "ទេពារក្ស", "teipiereak" }, { "ទេវកថា", "teiveaʔ kaʔtʰaa" }, { "ទ្រសោ", "trɔɔ sao" }, { "ទ្រអ៊ូ", "trɔɔ ’uu" }, { "ទំងន់សុទ្ធ", "tumngʊən sot" }, { "ទំព័រ", "tumpoa" }, { "ទំលាក់", "tumleak" }, { "ទ័យ", "tey" }, { "ធនាគារ", "tʰɔ:’niekie" }, { "ធម៌", "tʰoa" }, { "ធាតុ", "tʰiet" }, { "ធ្ងន់", "tŋʊən" }, { "ធ្នូ", "tnū" }, { "ធ្មេញ", "t’mēiñ" }, { "ធំ", "tʰom" }, { "នគរ", "nokor" }, { "នគរខ្មែរ", "nokor kmē" }, { "នភា", "neaʔpʰie" }, { "នភាល័យ", "neaʔpʰieley" }, { "នយោបាយ", "nəyyoubaay" }, { "នាក់", "neak" }, { "នាគ", "niek" }, { "នាងស្រី", "neeung sray" }, { "នាទី", "nīădtī" }, { "នាម", "niem" }, { "និទាន", "ni’tien" }, { "និយមន័យ", "ni’yum ney" }, { "និយាយ", "niyiey" }, { "និស្សិត", "nihsət" }, { "នឹង", "nyng" }, { "នៃ", "ney" }, { "នោម", "noam" }, { "នៅ", "nɨv" }, { "បកប្រែ", "bɑɑk prae" }, { "បក្សី", "bʌksēi" }, { "បង", "bɑɑng" }, { "បង្រៀន", "bɑng-rīən" }, { "បង្អួច", "bong'ooich" }, { "បញ្ចប់", "bɑñchɑp" }, { "បណ្ណាល័យ", "bŭnnālai" }, { "បន្តិចម្ដង ៗ", "bɑntəch mdɑɑng bɑntəch mdɑɑng" }, { "បន្ទាលត្រអាក", "bɑntiel trɑ’aak" }, { "ប៉ុន្មាន", "bpon-mān?" }, { "ប៉ុម", "pom" }, { "ប៉ុស្តិ៍", "poh" }, { "ប៉េនីស៊ីលីន", "pâyniseelin" }, { "បានជា", "baa nɔɔ jie" }, { "បានទេ", "baa-nɔɔ tee" }, { "បាបចិត្ត", "baapaʔcət" }, { "បាយ", "bāy" }, { "បាយកក", "bāy kɔːk" }, { "បាយក្ដាំង", "bāy kdang" }, { "បាយក្រៀម", "bāy kriem" }, { "បាយចំហុយ", "bāy chamhoy" }, { "បាយឆៅ", "bāy chav" }, { "បារី", "baray" }, { "បី", "bei" }, { "បឹង", "böng" }, { "បុណ្យវិសាខបូជា", "bon visak bochéa" }, { "បួន", "buən" }, { "បើ", "baə" }, { "បើក", "baek" }, { "បេះដូង", "beh dooŋ" }, { "បោកចំបាប់", "baok chɑmbap" }, { "ប្រដាល់សេរី", "prɑdal seɛrǝy" }, { "ប្រទេស", "bprədtēh" }, { "ប្រទេសកម្ពុជា", "bprədtēh gəmbpŭjīə" }, { "ប្រទេសកំណើត", "bprədtēh kɑmnaət" }, { "ប្រទេសថៃ", "bprədtēh tai" }, { "ប្រទេសភូមា", "prɑteih pʰuumie" }, { "ប្រទេសមីយ៉ាន់ម៉ា", "bprədtēh mīyānmā" }, { "ប្រទេសរុស្ស៊ី", "bprədtēh ruhsii" }, { "ប្រទេសលាវ", "bprədtēh līew" }, { "ប្រទេសវៀតណាម", "bprədtēh wīət nām" }, { "ប្រទេសសៀម", "bprədtēh sīəm" }, { "ប្រទេសអង់គ្លេស", "prɑteeh ɑngkleeh" }, { "ប្រព័ន្ធ", "prɑpoan" }, { "ប្រព័ន្ធព្រះអាទិត្យ", "prɑpoan preah aatɨt" }, { "ប្រមូល", "prɑmool" }, { "ប្រសើរ", "prɑsaə" }, { "ប្រហែល", "prɑhael" }, { "ប្រអប់", "prɑ’ɑp" }, { "ប្រាក់", "prak" }, { "ប្រាក់ខែ", "prākkhae" }, { "ប្រាក់ចំណូល", "prāk chamnōl" }, { "ប្រាក់បំណុល", "prāk bɑmnol" }, { "ប្រាជ្ញ", "praach" }, { "ប្រាជ្ញា", "praachñaa" }, { "ប្រាណ", "praan" }, { "ប្រាសាទ", "praasaat" }, { "ប្រាសាទអង្គរវត្ត", "praasaat ɑngkɔɔ voat" }, { "ប្រាំ", "prăm" }, { "ប្រាំបី", "pram bəi" }, { "ប្រាំបួន", "pram buən" }, { "ប្រាំពីរ", "pram pī, pram peul" }, { "ប្រាំមួយ", "pram muəy" }, { "ប្រុងស្នៀត", "prong sniǝt" }, { "ប្រុស", "proh" }, { "ប្រែភាសា", "prae pīăsā" }, { "ប្អូន", "bpaōn" }, { "បំបែក", "bɑmbaek" }, { "បំព្រាង", "bɑmprieŋ" }, { "ផល", "phal" }, { "ផល្លា", "pʰalla" }, { "ផែន", "pʰaen" }, { "ផ្កា", "pkā" }, { "ផ្កាយ", "pgai" }, { "ផ្គរ", "pkɔɔ" }, { "ផ្ទះ", "pteah" }, { "ផ្លាស់ប្ដូរ", "plah-pdoo" }, { "ផ្លូវការ", "pləvkā" }, { "ផ្លេកបន្ទោរ", "pleɛk bɑntou" }, { "ផ្លែ", "phlae" }, { "ផ្សងព្រេង", "psɑɑng preeng" }, { "ផ្សារ", "psaa" }, { "ផ្សិត", "pseut" }, { "ផ្សែង", "psaing" }, { "ពង", "pɔɔng" }, { "ពញា", "pnyie" }, { "ពណ៌", "poa" }, { "ពត៌មាន", "boadaameeun" }, { "ពន្លឺ", "pʊənlɨɨ" }, { "ពពក", "bpobpok" }, { "ពស់", "bpūah" }, { "ពាក្យ", "piek" }, { "ពាក្យក្លាយ", "piek klaay" }, { "ពាក្យឬស", "piek rɨɨh" }, { "ពាក្យសំដី", "bpīək somdēi" }, { "ពាល", "piel" }, { "ពាំង", "bpēiəng" }, { "ពិឃាត", "pi-kʰiet" }, { "ពិឃាតបូជា", "pi’kʰiet boochie" }, { "ពិណពាទ្យ", "pɨn piet" }, { "ពិត", "pɨt" }, { "ពិបាក", "pi’baak" }, { "ពី", "pii" }, { "ពីណា", "pii naa" }, { "ពីព្រោះ", "bpi-bprūah" }, { "ពីរ", "pī" }, { "ពុក", "puk" }, { "ពុកចង្កា", "puk cɑngkaa" }, { "ពុទ្ធ", "bpŭt" }, { "ពួកម៉ាក", "bpūək maak" }, { "ពោត", "pout" }, { "ព្រលឹង", "prɔlɨng" }, { "ព្រៃ", "pryj" }, { "ព្រៃនគរ", "bprēī nokor" }, { "ព្រោះ", "bprūah" }, { "ព្រះ", "preah" }, { "ព្រះច័ន្ទ", "bprēiəh jən" }, { "ព្រះជាម្ចាស់", "preah jie mchah" }, { "ព្រះពុទ្ធ", "bprēiəh bpŭt" }, { "ព្រះយេស៊ូ", "preah yeisuu" }, { "ព្រះរាជាណាចក្រកម្ពុជា", "bprēəh réachéanachəkr gəmbpŭjīə" }, { "ព្រះវររាជបិតា", "preah vɔɔ riechi bəydaa" }, { "ព្រះវររាជមាតា", "preah vɔɔ riechi miedaa" }, { "ព្រះវររាជអយ្យកា", "preah vɔɔ riechi ayyeakaa" }, { "ព្រះអង្គម្ចាស់", "preah ’ɑng mchah" }, { "ព័ត៌មាន", "poatamien" }, { "ព័រទុយហ្គាល់", "poatuykoal" }, { "ភក់", "pʰʊək" }, { "ភព", "pʰup" }, { "ភាព", "pʰiep" }, { "ភាពគង់មាន", "pʰiep kʊəŋ mien" }, { "ភាសា", "pʰiesaa" }, { "ភាសាកូរ៉េ", "pīăsā kō rē" }, { "ភាសាខ្មែរ", "phiesaa kmae" }, { "ភាសាចិន", "pīăsā cən" }, { "ភាសាជប៉ុន", "pīəsā jipun" }, { "ភាសាថៃ", "pʰiesaa tai" }, { "ភាសាបារាំង", "pīăsā baarung" }, { "ភាសាផ្លូវការ", "pīăsā pləv kā" }, { "ភាសារុស្ស៊ី", "pʰiesaa rūssī" }, { "ភាសាលាវ", "pʰiesaa līew" }, { "ភាសាវិទូ", "pīăsā vitū" }, { "ភាសាវៀតណាម", "pʰiesaa wīət-nām" }, { "ភាសាសាស្ត្រ", "pīăsā sāh" }, { "ភាសាអង់គ្លេស", "pʰiesaa ɑngkleeh" }, { "ភាសាអ៊ីតាលី", "pīəsā ītālī" }, { "ភូមរាវិទ្យា", "pʰuumraavityie" }, { "ភូមិ", "pūm" }, { "ភូមិសាស្ដ្រ", "pʰuum saah" }, { "ភោគសម្ប័ទ", "pʰook sɑmbat" }, { "ភ្នែក", "pnɛɛk" }, { "ភ្នំ", "pnŭm" }, { "ភ្នំពេញ", "pnŭṁ bpeuñ" }, { "ភ្លើង", "pləəng" }, { "ភ្លៀង", "plieng" }, { "ភ្លេច", "plɨch" }, { "ភ្លែត", "plairt" }, { "មក", "mɔɔk" }, { "មករា", "meykgărā" }, { "មន", "mɔɔn" }, { "មនុស្ស", "mɔnuh, mɔnɨh" }, { "ម៉ាត់", "mat" }, { "ម៉ាស៊ីន", "maasɨn" }, { "ម៉ាឡេស៊ី", "Maleizi" }, { "ម៉ូតូ", "" }, { "ម៉ែ", "mai" }, { "ម៉ោង", "maong" }, { "មាតុប្រទេស", "mieto bprədtēh" }, { "មាន", "mien" }, { "មាន់", "moan" }, { "មិត្ត", "mɨt" }, { "មិថុនា", "mitonā" }, { "មិន", "mɨn" }, { "មិន...ទេ", "min … teː" }, { "មិនគឺទេ", "min geu teː" }, { "មិនជាទេ", "min jīə teː" }, { "មិនជឿទេ", "mɨn jɨə tei" }, { "មីនា", "mīnīă" }, { "មីយ៉ាន់ម៉ា", "miiyanmaa" }, { "មុខ", "mŭkh" }, { "មុន", "mʊn" }, { "មុនគេ", "mun kee" }, { "មួក", "mūək" }, { "មួយ", "muəy" }, { "មួយពាន់", "muŏy poăn" }, { "មួយម៉ឺន", "muŏy mein" }, { "មួយរយ", "muəy roy" }, { "មួយលាន", "muŏy léan" }, { "មួយសែន", "muŏy sên" }, { "មេឃ", "meek" }, { "មេត្រីភាព", "meetrəy pʰiep" }, { "មេសា", "meysā" }, { "មេអំបៅ", "mēi-ombao" }, { "ម្ចាស់", "mchah" }, { "ម្ដង", "mdɑɑng" }, { "ម្ដងទៀត", "mdɑɑng tiet" }, { "ម្ដាយ", "mdai" }, { "ម្ភៃ", "mpʰey" }, { "ម្រេច", "mric" }, { "ម្ហូប", "mhōp" }, { "យល់", "yūəl" }, { "យានដ្ឋាន", "yienɔttʰaan" }, { "យាយ", "yiey" }, { "យុត្តិធម៌", "yutte’-tʰoa" }, { "យេស៊ូគ្រិស្ត", "yeisuu krɨh" }, { "យោនី", "younii" }, { "ឬ", "rɨɨ" }, { "រក", "rɔɔk, rɔɔ" }, { "រក...ឃើញ", "rɔɔk, rɔɔ ... kʰəəñ" }, { "រងា", "rəŋīə" }, { "រដ្ឋ", "rōŭt" }, { "រដ្ឋធានី", "rōəttətīənī" }, { "រទេះកង់", "radtayh gong" }, { "របស់", "raboh" }, { "របស់ខ្ញុំ", "raboh knyom" }, { "របស់លោក", "raboh lōk" }, { "ឫស", "rɨh" }, { "រសាយនវិទ្យា", "reasaayanavityie" }, { "រស់", "rʊəh" }, { "រហូត", "rahoat" }, { "រាជ", "riech" }, { "រាជធានី", "rīichtīənī" }, { "រាប", "rīəp" }, { "រាវ", "reav" }, { "រាសី", "riesəy" }, { "រុក្ខជាតិ", "rukkha chiet" }, { "រុយ", "ruj" }, { "រុស្ស៊ី", "ruhsii" }, { "រុស្សី", "ruhsii" }, { "រូប", "ruup" }, { "រូបធាតុ", "ruup tʰiet" }, { "រូបសាស្ដ្រ", "ruupsaah" }, { "រូបិយវត្ថុ", "ruupəyyea voattʰo" }, { "រូបិយវត្ថុរុស្សី", "ruupəyyea voattʰo ruhsii" }, { "រឿង", "rɨəng" }, { "រៀន", "rīən" }, { "រៀល", "riəl" }, { "លក្ស្មី", "leaksməy" }, { "លាវ", "līew" }, { "លាវ័ណ្យ", "lievoan" }, { "លិង្គ", "lɨng" }, { "លី", "lee" }, { "លីឡ្នា", "liilhaa" }, { "លុន", "lun" }, { "លុប", "lup" }, { "លើ", "ləə" }, { "លេប", "leip" }, { "លោក", "louk" }, { "លោកខែ", "lōk kai" }, { "លោកស្រី", "lōk sray" }, { "លោកអ្នកឧកញ៉ា", "louk neak ʔokɲaa" }, { "ល្ងង់", "lngʊəng" }, { "ល្បុក្កតោ", "lbok tao" }, { "ល្អ", "l’ɑɑ" }, { "លំអ", "lum’ɑɑ" }, { "វចនានុក្រម", "wachanānūgrom" }, { "វចនានុក្រមវិគី", "wachanānūgrom-vikī" }, { "វត្ត", "wōat" }, { "វាយតប់", "wīē-dtop" }, { "វារ", "vīə" }, { "វាល", "viel" }, { "វាលពិឃាត", "viel pi-kʰiet" }, { "វាសនា", "wee-a-sanaa" }, { "វិគី", "vikī" }, { "វិគីនានុក្រម", "vikī-nānūgrom" }, { "វិគីភីឌា", "vikiiphiidiaa" }, { "វិច្ឆិកា", "weuchăgā" }, { "វិញ", "vɨñ" }, { "វិទ្យា", "vityie" }, { "វិទ្យាសាស្ត្រ", "wityīə sāh" }, { "វិនាទី", "vi’nietii" }, { "វៀងច័ន្ទន៍", "wiang jan" }, { "វៀតណាម", "wīət nām" }, { "ស", "sɑɑ" }, { "សក្តិ", "sak" }, { "សក់", "sɑk" }, { "សង្គ្រាម", "songkrīəm" }, { "សង្គ្រាមលោក", "songkreeum saagoloak" }, { "សង្គ្រាមលោកលើកទី១", "songkreeum saagoloak dee mooay" }, { "សង្គ្រាមលោកលើកទី២", "songkreeum saagoloak dee pee" }, { "សង្ឃឹម", "sɑngkʰɨm" }, { "សង្សារ", "sɑngsaa" }, { "សញ្ជាតិ", "sañciet, sañciete’" }, { "សតិ", "sa’te’" }, { "សត្វ", "sāt" }, { "សត្វព្រៃ", "sāt prəy" }, { "សត្វល្អិត", "sat l’ǝt" }, { "សន្ដិភាព", "sɑnte’ pʰiep" }, { "សន្តិភាព", "sɑnte pʰiep" }, { "សន្លឹក", "sɑnlək" }, { "សប្បាយ", "sapbaay" }, { "សព្វនាម", "sɑp niem" }, { "សមុទ្រ", "səmɔt" }, { "សម្បត្តិ", "sɑmbat" }, { "សម្រស់", "sɑmrɑh" }, { "សម្រាប់", "sɑmrap" }, { "សម្លាប់", "somləp" }, { "សម្លេង", "sɑmlayng" }, { "សរសេរ", "sorsay" }, { "សហ", "sahā" }, { "សហភាពសូវៀត", "sahapʰiep sooviet" }, { "សហរដ្ឋអាមេរិក", "sahā rōŭt āmērik" }, { "ស៊ីដា", "sīdā" }, { "ស៊ុត", "sut" }, { "ស៊ុយ", "suy" }, { "សាច់មាន់", "sach mean" }, { "សាប៊ូ", "sāpū" }, { "សាមគ្គី", "saameakkii" }, { "សាមសិប", "saam səp" }, { "សាលា", "saalaa" }, { "សាលាក្តី", "sālā kdəy" }, { "សាលាក្រុង", "sālā krong" }, { "សាលាខេត្ត", "sālā khaet" }, { "សាលាឃុំ", "sālā khum" }, { "សាលាជំនុំជំរះ", "saalaa jumnum jumreah" }, { "សាលារៀន", "saalaa riən" }, { "សាសនា", "saasnaa" }, { "សាស្ត្រ", "saah" }, { "សិក្សា", "ṡiksā" }, { "សិរិ", "se’rəy" }, { "សិស្ស", "səh" }, { "សីហា", "seyhā" }, { "សឹង្ហ", "seung" }, { "សឹម", "səm" }, { "សឹមៗ", "səm-səm" }, { "សុខ", "sok" }, { "សុទ្ឋាវាស", "sottʰievieh" }, { "សុទ្ធ", "sot" }, { "សុប្រាត", "so’praat" }, { "សុភមង្គល", "so’pʰea’ meangkʊəl" }, { "សូន្យ", "sōn" }, { "សួស្ដី", "soədəy" }, { "សៀម", "sīəm" }, { "សៀមរាប", "siem riep" }, { "សៀវភៅ", "sīəwpıw" }, { "សេក", "sek" }, { "សេចក្ដីស្រឡាញ់", "səchkdəy srɑlañ" }, { "សេចក្តីខ្លាច", "saych gday klaich" }, { "សេព", "saep" }, { "សេរីភាព", "seɛrǝy pʰiep" }, { "សេះ", "seh" }, { "សែន", "saen" }, { "សោភ័ណ", "saopʰoan" }, { "សោយទិវង្គត", "saoy ti’vʊəngkʊət" }, { "ស្ដាយ", "sdaay" }, { "ស្ដេច", "sdach" }, { "ស្ដៅ", "sdav" }, { "ស្ត្រី", "strəy, sa’trəy" }, { "ស្នេហា", "snaehaa" }, { "ស្ពាន", "spīŭn" }, { "ស្មារតីលះបង់", "smaardəy leah bɑng" }, { "ស្មើ", "smaə" }, { "ស្មៅ", "smav" }, { "ស្រមោច", "srə-məoch" }, { "ស្រលាញ់", "sraluñ" }, { "ស្រឡាញ់", "sraluñ" }, { "ស្រឡៃ", "srɑlay" }, { "ស្រី", "srǝy" }, { "ស្រីញី", "srǝy-ñii" }, { "ស្រីស្នំ", "srǝy snɑm" }, { "ស្រុក", "srok" }, { "ស្រុកកំពង់ស្វាយ", "srok kɑmpʊəng svaay" }, { "ស្រុកខ្មែរ", "srok kmae" }, { "ស្រុកវើនសៃ", "srok vəən say" }, { "ស្រួល", "sruəl" }, { "ស្លាបព្រា", "slabaprea" }, { "ស្លាប់", "slap" }, { "ស្វាគមន៍", "swagum" }, { "ស្វាហៈ", "svaaha'" }, { "ស្អី", "s’əy" }, { "សំណាងល្អ", "sɑmnaang l’ɑɑ" }, { "សំបុត្រ", "sombot" }, { "សំរស់", "sɑmrɑh" }, { "ហនុមាន", "ha’nu’maan" }, { "ហាង", "hāng" }, { "ហាងសៀវភៅ", "hāng sīəwpıw" }, { "ហុងកុង", "hong kong" }, { "ហើយ", "haəy" }, { "ហេតុ", "hait" }, { "ហេតុអ្វី", "hait ēi" }, { "ហ្លួង", "luəng" }, { "ហ្វេសប៊ុក", "fees buk" }, { "ឳ", "’əv" }, { "ឧកញ៉ា", "okɲaa" }, { "ឯកឧកញ៉ា", "aek oknyaa" }, { "ឯកឧត្តម", "aek utdɑm" }, { "អក្ខរក្រម", "akkʰara krɑm" }, { "អក្ខរក្រមខេមរភាសា", "âkkhârâkrâm khémâraphéasa" }, { "អក្សរ", "aksɑɑ" }, { "អក្សរខម", "aksɑɑ kʰɑɑm" }, { "អក្សរខ្មែរ", "aksor kmae" }, { "អក្សរមូល", "aksɑɑ muul" }, { "អគ្គីភ័យ", "akkīphey" }, { "អង្កែប", "’ɑɑngkaep" }, { "អង្គ", "’ɑng" }, { "អង្គការ", "ɑng kaa" }, { "អង្គរ", "’ɑngkɔɔ" }, { "អង្គរធំ", "’ɑngkɔɔ tʰom" }, { "អង្គរវត្ត", "anggor wōat" }, { "អង្គុយ", "ɑngkuy" }, { "អង់គ្លេស", "ɑngkleeh" }, { "អញ្ជើញ", "əñjerñ" }, { "ឥដ្ឋ", "ət" }, { "អណ្ដូង", "on-doang" }, { "អត្ថបទ", "attʰa’ bɑt" }, { "ឧទានស័ព្ទ", "utien sap" }, { "អនន្ដភាព", "anandapheeup" }, { "អនុគ្រោះ", "’a’nu’krʊəh" }, { "ឯនេះ", "ae nih" }, { "ឧបទ្វីប", "uˈpaˈtvīp" }, { "ឧបយុវរាជ", "upayuveariech]" }, { "ឧបរាជ", "u’pa’raach" }, { "ឧបាយកល", "ubāy kol" }, { "អប្សរា", "apsa’raa" }, { "ឪពុក", "’əvpuk" }, { "អម្បូរភាសា", "ambō pīăsā" }, { "អរគុណ", "ɑɑ kun" }, { "អរូបធាតុ", "’a’ruup tʰiet" }, { "ឦស", "’iisa’" }, { "អសន្យាណូ", "’a’sɑnyaanou" }, { "អសន្យាណូសារ", "’a’sɑnyaanou saa" }, { "ឧសភា", "ŭsăpīă" }, { "ឦសាន", "’əysaan" }, { "អ-សារ", "’a’-saa" }, { "ឧស្ម័ន", "usman" }, { "អ៊ីតាលី", "ītālī" }, { "អ៊ីនធឺណិត", "intʰɨɨnet" }, { "អ៊ីមែល", "’ii-mɛɛl" }, { "អាកាស", "aakaah" }, { "អាកាសយានដ្ឋាន", "aakaah yiena-taan" }, { "អាច", "’aach" }, { "អាចម៍", "aach" }, { "អាទិត្យ", "ādteut" }, { "អាទិទេព", "aati’ teep" }, { "អាមេរិក", "’āmērik" }, { "អាយុ", "’āyʊ’" }, { "អាយុវែង", "’aayu’ vɛɛng" }, { "អាល្លឺម៉ង់", "āleumong" }, { "អាស៊ី", "asie" }, { "អាស៊ីអគ្នេយ៍", "āsī āknē" }, { "អាហារ", "āhā" }, { "អាហារូបករណ៍", "āhārūpaˈkɔː" }, { "អី", "’əy" }, { "អឺរ៉ូ", "əɨroo" }, { "អូដ្ឋបូកពីរ", "ʾoutboukpii" }, { "អូន", "oun" }, { "អូស្ត្រាលី", "oostraalii" }, { "អេដស៍", "ayd" }, { "អ្នក", "neak" }, { "អ្នកបកប្រែ", "neak bɑɑk prae" }, { "អ្នកវិទ្យាសាស្ត្រ", "nēək wityīə sāh" }, { "អ្នកសម្លាប់", "nay-uk somlup" }, { "អ្នកឧកញ៉ា", "neak okɲaa" }, { "ឱ្យ", "aoy" }, { "ឲ្យ", "aoy" }, { "អ្វី", "’əvəy, əy" }, { "អ្វីៗ", "’əvəy-’əvəy" }, { "អ្វីៗទាំងអស់", "’əvəy-’əvəy teang ’ɑh" }, { "។ល។", "" }, { "៘", "lɑ’, lɑ’nɨŋlɑ’" }, } self:iterate(examples, 'check_tr') end return tests m73vnq8560l7pbjkc0ajyxfvztddkwi মডিউল:kmj-translit 828 168780 510332 2026-06-07T12:47:10Z RedminBot 9553 [[en:Module:kmj-translit]] থেকে আনা হলো 510332 Scribunto text/plain local export = {} local consonants = { ['क']='k', ['ख']='kh', ['ग']='g', ['घ']='gh', ['ङ']='ṅ', ['च']='c', ['छ']='ch', ['ज']='j', ['झ']='jh', ['ञ']='ñ', ['ट']='ṭ', ['ठ']='ṭh', ['ड']='ḍ', ['ढ']='ḍh', ['ण']='ṇ', ['त']='t', ['थ']='th', ['द']='d', ['ध']='dh', ['न']='n', ['प']='p', ['फ']='ph', ['ब']='b', ['भ']='bh', ['म']='m', ['य']='y', ['र']='r', ['ल']='l', ['व']='v', ['ळ']='ḷ', ['श']='ś', ['ष']='ṣ', ['स']='s', ['ह']='h', ['क़'] = 'q', ['ख़'] = 'x', ['ग़'] = 'ġ', ['फ़'] = 'f', ['ज़'] = 'z', ['झ़'] = 'ź', ['ड़'] = 'ṛ', ['ढ़'] = 'ṛh', } local diacritics = { ['ा']='ā', ['ि']='i', ['ी']='ī', ['ु']='u', ['ू']='ū', ['ृ']='ṛ', ['ॄ']='ṝ', ['ॢ']='ḷ', ['ॣ']='ḹ', ['े']='e', ['ै']='ai', ['ो']='o', ['ौ']='au', ['्']='', } local tt = { -- vowels ['अ']='a', ['आ']='ā', ['इ']='i', ['ई']='ī', ['उ']='u', ['ऊ']='ū', ['ऋ']='ṛ', ['ॠ']='ṝ', ['ऌ']='ḷ', ['ॡ']='ḹ', ['ए']='e', ['ऐ']='ai', ['ओ']='o', ['औ']='au', -- chandrabindu ['ँ']='m̐', --until a better method is found -- anusvara ['ं']='ṃ', --until a better method is found -- visarga ['ः']='ḥ', -- avagraha ['ऽ']='ʼ', --numerals ['०']='0', ['१']='1', ['२']='2', ['३']='3', ['४']='4', ['५']='5', ['६']='6', ['७']='7', ['८']='8', ['९']='9', --punctuation ['॥']='.', --double danda ['।']='.', --danda --Om ['ॐ']='oṃ', } function export.tr(text, lang, sc) if sc ~= "Deva" then return nil end text = mw.ustring.gsub( text, '([क-ह])'.. '([ािीुूृॄॢॣेैोौ्]?)'.. '([अ-औ]?)', function(c, d, e) if d == "" and e ~= "" then if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. '̈' else return consonants[c] .. 'a' .. tt[e] end elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) return text end return export 9s4w3if4plbyn6m3pdpcm9q0xzuvv9x মডিউল:kmr-translit/testcases 828 168781 510333 2026-06-07T12:47:11Z RedminBot 9553 [[en:Module:kmr-translit/testcases]] থেকে আনা হলো 510333 Scribunto text/plain return require "Module:transliteration module testcases"( "kmr-translit", { { "ә’к", "'ek" }, { "ә’скәр", "'esker" }, { "щьмаә’т", "cima'et" }, { "балт’ә", "balt’e" }, { "п’ьнщар’", "p’incarr" }, { "р’ож", "roj" }, { "пьр’", "pirr" }, { "ПЬР’", "PIRR" }, { "к’аг’чин", "k’aẍçîn" }, -- Need example of h’. }, "Cyrl", "kmr") dbfa4ovx5ydcpvvsd2dexe2kfaqovsr মডিউল:kn-translit/testcases 828 168782 510334 2026-06-07T12:47:12Z RedminBot 9553 [[en:Module:kn-translit/testcases]] থেকে আনা হলো 510334 Scribunto text/plain -- Unit tests for [[Module:kn-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local kn_translit = require('Module:kn-translit') function tests:check_translit(Knda, roman) self:equals('<span class="Knda mention" lang="kn">[[' .. Knda .. '#Knda|' .. Knda .. ']]</span>', kn_translit.tr(Knda, 'kn', 'Knda'), roman) end function tests:test_translit_kannada() self:check_translit('ಲಲ', 'lala') self:check_translit('ಅಗ್ನಿ', 'agni') self:check_translit('ಪಡಿಯಚ್ಚು', 'paḍiyaccu') self:check_translit('ಕೢಪ್ತ', 'kl̥pta') end return tests glh811pspf122tlerb5hiarm90w7u4d মডিউল:ko-translit/testcases 828 168783 510335 2026-06-07T12:47:13Z RedminBot 9553 [[en:Module:ko-translit/testcases]] থেকে আনা হলো 510335 Scribunto text/plain -- Unit tests for [[Module:ko-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ko_translit = require('Module:ko-translit') function tests:check_translit(hangul, romaja, nolink) self:equals( (nolink and '<span class="Kore mention"><!-- %s -->%s</span>' or '<span class="Kore mention">[[%s#Korean|%s]]</span>'):format( hangul, hangul ), ko_translit.tr_revised(hangul, 'ko', 'Kore'), romaja ) end function tests:test_translit_revised_sentences() self:check_translit( '위키백과는 위키를 이용하여 전 세계 사람들이 함께 만들어가는 웹 기반의 다언어 백과사전입니다.', 'Wikibaekgwaneun wikireul iyonghayeo jeon segye saramdeuri hamkke mandeureoganeun wep gibanui da\'eoneo baekgwasajeonimnida.', true ) self:check_translit( '위키백과는 중립적이고 검증 가능한 자유 콘텐츠 백과사전의 제공을 목적으로 하는 프로젝트로, 누구나 참여하여 문서를 수정하고 발전시킬 수 있습니다.', 'Wikibaekgwaneun jungnipjeogigo geomjeung ganeunghan jayu kontencheu baekgwasajeonui jegong\'eul mokjeogeuro haneun peurojekteuro, nuguna chamyeohayeo munseoreul sujeonghago baljeonsikil su itseumnida.', true ) self:check_translit( '한국어(韓國語)는 주로 한반도에서 쓰이는 언어로, 대한민국에서는 한국어, 한국말이라고 부른다.', 'Han\'gugeoneun juro hanbando\'eseo sseu\'ineun eoneoro, daehanmin\'gugeseoneun han\'gugeo, han\'gungmarirago bureunda.', true ) self:check_translit( '조선민주주의인민공화국에서는 조선어(朝鮮語), 중국(조선족 위주)에서도 조선어(朝鮮語)로 불린다.', 'Joseonminjujuuiinmin\'gonghwagugeseoneun joseoneo, jungguk(joseonjok wiju)eseodo joseoneoro bullinda.', true ) self:check_translit( '카자흐스탄 등 구 소련의 고려인들 사이에서는 고려말(高麗말)로 불린다.', 'Kajaheuseutan deung gu soryeonui goryeoindeul saieseoneun goryeomal(高麗mal)ro bullinda.', true ) self:check_translit( '인간은 천부척으로 이성과 양싱을 부여받았으며 서로 형첸개의 청신으로 헹동하여야 한다.', 'In\'ganeun cheonbucheogeuro iseonggwa yangsing\'eul buyeobadasseumyeo seoro hyeongchen\'gae\'ui cheongsineuro hengdonghayeoya handa.', true ) self:check_translit( '모든 인간은 태어날 때부터 자유로우며 그 존엄과 권리에 있어 동등하다.', 'Modeun in\'ganeun taeeonal ttaebuteo jayuroumyeo geu joneomgwa gwollie isseo dongdeunghada.', true ) self:check_translit( '모든 人間은 태어날 때부터 自由로우며 그 尊嚴과 權利에 있어 同等하다.', 'Modeun 人間eun taeeonal ttaebuteo 自由roumyeo geu 尊嚴gwa 權利e isseo 同等hada.', true ) self:check_translit( '人間은 天賦的으로 理性과 良心을 賦與받았으며 서로 兄弟愛의 精神으로 行動하여야 한다.', '人間eun 天賦的euro 理性gwa 良心eul 賦與badasseumyeo seoro 兄弟愛ui 精神euro 行動hayeoya handa.', true ) self:check_translit( "교수'''법'''(敎授'''法''')", "gyosu'''beop'''", true ) self:check_translit( "사용'''법''' (使用'''法''')", "sayong'''beop'''", true ) self:check_translit( "'''사용'''법 ('''使用'''法)", "'''sayong'''beop", true ) self:check_translit( "'''호적'''산조('''胡笛'''散調)", "'''hojeok'''sanjo", true ) self:check_translit( "'''마네킹'''까지도", "'''maneking'''kkajido", true ) self:check_translit( "저는 ...년 생이에요", "jeo-neun ...nyeon saeng-ieyo", true) -- hyphen gets inserted incorrectly end function tests:test_translit_revised_words() self:check_translit('상-상', 'sang-sang') -- hyphen gets inserted incorrectly self:check_translit('미얀마' , 'miyanma') self:check_translit('버마' , 'beoma') self:check_translit('확인' , 'hwagin') self:check_translit('직접' , 'jikjeop') self:check_translit('있다' , 'itda') self:check_translit('녹말' , 'nongmal') self:check_translit('같이' , 'gachi') self:check_translit('바깥' , 'bakkat') self:check_translit('런던' , 'reondeon') self:check_translit('먹다' , 'meokda') self:check_translit('사무실에서', 'samusireseo') self:check_translit('죄송합니다', 'joesonghamnida') self:check_translit('있습니다' , 'itseumnida') self:check_translit('강홍립' , 'ganghongnip') self:check_translit('메가폰' , 'megapon') self:check_translit('갋' , 'gal') self:check_translit('갌' , 'gal') self:check_translit('갍' , 'gal') self:check_translit('갎' , 'gap') self:check_translit('갏' , 'gal') self:check_translit('갋갌갍갎갏', 'galgalgalgapgal') self:check_translit('갈비뼈', 'galbippyeo') self:check_translit('값', 'gap') self:check_translit('값의', 'gapsui') self:check_translit('갏의', 'garui') self:check_translit('갌의', 'galsui') self:check_translit('있습니다', 'itseumnida') self:check_translit('없다', 'eopda') self:check_translit('그렇다', 'geureota') self:check_translit('굵다', 'gukda') self:check_translit('귀찮다', 'gwichanta') self:check_translit('편찮다', 'pyeonchanta') end return tests bkslsgbly4dlp0de8vg93v52y42f0ww মডিউল:kpt-translit 828 168784 510336 2026-06-07T12:47:13Z RedminBot 9553 [[en:Module:kpt-translit]] থেকে আনা হলো 510336 Scribunto text/plain local u = require("Module:string/char") local export = {} local mapping1 = { ["п"] = "p", ["б"] = "b", ["т"] = "t", ["д"] = "d", ["к"] = "k", ["г"] = "g", ["ц"] = "c", ["ч"] = "č", ["с"] = "s", ["з"] = "z", ["ш"] = "š", ["ж"] = "ž", ["х"] = "x", ["щ"] = "šš", ["м"] = "m", ["н"] = "n", ["р"] = "r", ["л"] = "l", ["в"] = "v", ["й"] = "j", ["и"] = "i", ["е"] = "e", ["э"] = "e", ["а"] = "a", ["о"] = "o", ["у"] = "u", ["ъ"] = "ʾ", ["ь"] = "ʾ", ["ᵸ"] = "̃", ["’"] = "ʾ", } local mapping2 = { ["пӏ"] = "ṗ", ["тӏ"] = "ṭ", ["кӏ"] = "ḳ", ["къ"] = "qq", ["дж"] = "ǯ", ["цӏ"] = "c̣", ["лӏ"] = "ƛ", ["кь"] = "ƛ̣ƛ̣", ["чӏ"] = "č̣", ["хъ"] = "q̇q̇", ["лъ"] = "λ", ["гъ"] = "ġ", ["хӏ"] = "ḥ", ["гӏ"] = "ʕ", ["гь"] = "h", ["хь"] = "ç", ["кьӏ"] = "ƛ̣", ["аᵸ"] = "ã", ["еᵸ"] = "ẽ", ["иᵸ"] = "ĩ", ["оᵸ"] = "õ", ["уᵸ"] = "ũ", ["а̄"] = "aa", ["е̄"] = "ee", ["ӣ"] = "ii", ["о̄"] = "oo", ["ӯ"] = "uu", ["а̄ᵸ"] = "ãã", ["е̄ᵸ"] = "ẽẽ", } function export.tr(text, lang, sc) local str_gsub = string.gsub local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*" -- Convert capital to lowercase palochka. text = str_gsub(text, u(0x4C0), u(0x4CF)) for pat, repl in pairs(mapping2) do text = str_gsub(text, pat, repl) end text = str_gsub(text, UTF8_char, mapping1) return text end return export sfggcdyvvjfdutjdrsntxguac3ekwsg মডিউল:kpt-translit/testcases 828 168785 510337 2026-06-07T12:47:13Z RedminBot 9553 [[en:Module:kpt-translit/testcases]] থেকে আনা হলো 510337 Scribunto text/plain return require("Module:transliteration module testcases") { module = "kpt-translit", examples = { { "ре́кьӏа", "réƛ̣a" }, { "лълъеᵸй", "λλẽj" }, { "лълъеᵸй", "λλẽq" }, }, sc = "Cyrl", lang = "kpt", } 9n9if8mb64qut3f5hsxm8sxte4lzq87 মডিউল:kpy-translit 828 168786 510338 2026-06-07T12:47:14Z RedminBot 9553 [[en:Module:kpy-translit]] থেকে আনা হলো 510338 Scribunto text/plain local export = {} local tab = { ["А"]="A", ["Б"]="B", ["В"]="V", ["Г"]="G", ["Д"]="D", ["Е"]="Je", ["Ё"]="Jo", ["Ж"]="Ž", ["З"]="Z", ["И"]="I", ["Й"]="J", ["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["О"]="O", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["У"]="U", ["Ф"]="F", ["Х"]="X", ["Ц"]="C", ["Ч"]="Č", ["Ш"]="Š", ["Щ"]="Ś", ["Ъ"]="ʺ", ["Ы"]="Ə", ["Ь"]="ʹ", ["Э"]="E", ["Ю"]="Ju", ["Я"]="Ja", ["Ӈ"]="Ŋ", ["Ӄ"]="Q", ['а']='a', ['б']='b', ['в']='v', ['г']='g', ['д']='d', ['е']='je', ['ё']='jo', ['ж']='ž', ['з']='z', ['и']='i', ['й']='y', ['к']='k', ['л']='l', ['м']='m', ['н']='n', ['о']='o', ['п']='p', ['р']='r', ['с']='s', ['т']='t', ['у']='u', ['ф']='f', ['х']='x', ['ц']='c', ['ч']='č', ['ш']='š', ['щ']='ś', ['ъ']='ʺ', ['ы']='ə', ['ь']='ʹ', ['э']='e', ['ю']='ju', ['я']='ya', ["ӈ"]="ŋ", ['ӄ']='q', } function export.tr(text, lang, sc) text = mw.ustring.gsub(text, "Вʼ", "W") text = mw.ustring.gsub(text, "вʼ", "w") text = mw.ustring.gsub(text, "Гʼ", "H") text = mw.ustring.gsub(text, "гʼ", "h") return (mw.ustring.gsub(text, '.' ,tab)) end return export k60rxgf2qtazcf3iv40443945txauhz মডিউল:kru-Beng-translit 828 168787 510339 2026-06-07T12:47:15Z RedminBot 9553 [[en:Module:kru-Beng-translit]] থেকে আনা হলো 510339 Scribunto text/plain local export = {} local consonants = { ['ক']='k', ['খ']='kh', ['গ']='g', ['ঘ']='gh', ['ঙ']='ṅ', ['চ']='c', ['ছ']='ch', ['জ']='j', ['ঝ']='jh', ['ঞ']='ñ', ['ট']='ṭ', ['ঠ']='ṭh', ['ড']='ḍ', ['ঢ']='ḍh', ['ণ']='ṇ', ['ত']='t', ['থ']='th', ['দ']='d', ['ধ']='dh', ['ন']='n', ['প']='p', ['ফ']='ph', ['ব']='b', ['ভ']='bh', ['ম']='m', ['য']='y', ['য়']='y', ['ৰ']='r', ['র']='r', ['ল']='l', ['ল়']='ḷ', ['ৱ']='v', ['শ']='ś', ['ষ']='ṣ', ['স']='s', ['হ']='ḣ', ['য়']='ẏ', ['খ়']='x', } local diacritics = { ['া']='ā', ['ি']='i', ['ী']='ī', ['ু']='u', ['ূ']='ū', ['ৃ']='ṛ', ['ৄ']='ṝ', ['ৢ']='ḷ', ['ৣ']='ḹ', ['ে']='e', ['ৈ']='ai', ['ো']='o', ['ৌ']='au', ['্']='', } local tt = { -- vowels ['অ']='a', ['আ']='ā', ['ই']='i', ['ঈ']='ī', ['উ']='u', ['ঊ']='ū', ['ঋ']='ṛ', ['ৠ']='ṝ', ['ঌ']='ḷ', ['ৡ']='ḹ', ['এ']='e', ['ঐ']='aì', ['ও']='o', ['ঔ']='au', -- chandrabindu ['ঁ']='m̐', --until a better method is found -- anusvara ['ং']='ṃ', --until a better method is found -- visarga ['ঃ']='ḥ', -- ['ৎ']='t', -- avagraha ['ঽ']='’', --numerals ['૦']='০', ['૧']='১', ['૨']='২', ['૩']='৩', ['૪']='৪', ['૫']='৫', ['૬']='৬', ['૭']='৭', ['૮']='৮', ['૯']='৯', --punctuation ['॥']='.', --double danda ['।']='.', --danda --Om ['ওঁ']='oṃ', } function export.tr(text, lang, sc) text = string.gsub(text, '্ব', '্ৱ') text = mw.ustring.gsub( text, '([কখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযৰরলৱশষসহv]়?)'.. -- য় and ল় are composition exclusions! '([ািীুূৃৄৢৣেৈোৌ্]?)', function(c, d) if d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) text = string.gsub(text, "([dgḣmr])v", "%1b") text = string.gsub(text, "ḣ", "h") text = string.gsub(text, "ai", "aï") text = string.gsub(text, "au", "aü") text = string.gsub(text, "aì", "ai") text = string.gsub(text, "aù", "au") return text end return export 0xohoho0xxsqe6su12tz2t5kfq8jk2z মডিউল:kru-Deva-translit 828 168788 510340 2026-06-07T12:47:15Z RedminBot 9553 [[en:Module:kru-Deva-translit]] থেকে আনা হলো 510340 Scribunto text/plain local gsub = mw.ustring.gsub local export = {} local consonants = { ['क']='k', ['ख']='kh', ['ग']='g', ['घ']='gh', ['ङ']='ṅ', ['च']='c', ['छ']='ch', ['ज']='j', ['झ']='jh', ['ञ']='ñ', ['ट']='ṭ', ['ठ']='ṭh', ['ड']='ḍ', ['ढ']='ḍh', ['ण']='ṇ', ['त']='t', ['थ']='th', ['द']='d', ['ध']='dh', ['न']='n', ['प']='p', ['फ']='ph', ['ब']='b', ['भ']='bh', ['म']='m', ['य']='y', ['र']='r', ['ल']='l', ['व']='v', ['ळ']='ḷ', ['श']='ś', ['ष']='ṣ', ['स']='s', ['ह']='h', ['क़'] = 'q', ['ख़'] = 'x', ['ग़'] = 'ġ', ['फ़'] = 'f', ['ज़'] = 'z', ['झ़'] = 'ź', ['ड़'] = 'ṛ', ['ढ़'] = 'ṛh', } local diacritics = { ['ा']='ā', ['ि']='i', ['ी']='ī', ['ु']='u', ['ू']='ū', ['ृ']='ṛ', ['ॄ']='ṝ', ['ॢ']='ḷ', ['ॣ']='ḹ', ['े']='e', ['ै']='ai', ['ो']='o', ['ौ']='au', ['्']='', } local tt = { -- vowels ['अ']='a', ['आ']='ā', ['इ']='i', ['ई']='ī', ['उ']='u', ['ऊ']='ū', ['ऋ']='ṛ', ['ॠ']='ṝ', ['ऌ']='ḷ', ['ॡ']='ḹ', ['ए']='e', ['ऐ']='ai', ['ओ']='o', ['औ']='au', -- chandrabindu ['ँ']='m̐', --until a better method is found -- anusvara ['ं']='ṃ', --until a better method is found -- visarga ['ः']='ḥ', -- avagraha ['ऽ']='ʼ', --numerals ['०']='0', ['१']='1', ['२']='2', ['३']='3', ['४']='4', ['५']='5', ['६']='6', ['७']='7', ['८']='8', ['९']='9', --punctuation ['॥']='.', --double danda ['।']='.', --danda --Om ['ॐ']='oṃ', } function export.tr(text, lang, sc) text = gsub( text, '([क-ह])'.. '([ािीुूृॄॢॣेैोौ्]?)'.. '([अ-औ]?)', function(c, d) if not consonants[c] then return c end if d == "" then return consonants[c] .. "a" else return consonants[c] .. diacritics[d] end end) text = gsub(text, '.', tt) text = gsub(text, 'ṁ([kgṅ])', 'ṅ%1') text = gsub(text, 'ṁ([cjñ])', 'ñ%1') text = gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = gsub(text, 'ṁ([tdn])', 'n%1') text = gsub(text, 'ṁ([pbm])', 'm%1') return text end return export fn8m7o9dln05x6fwb0wk9gh2xkwej4h মডিউল:kru-Deva-translit/testcases 828 168789 510341 2026-06-07T12:47:15Z RedminBot 9553 [[en:Module:kru-Deva-translit/testcases]] থেকে আনা হলো 510341 Scribunto text/plain -- Unit tests for [[Module:kru-Deva-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local kru_translit = require('Module:kru-Deva-translit') --TO DO function tests:do_test_translit(deva, roman, comment) self:equals( '<span class="Deva" lang="kru">[[' .. deva .. '#Kurukh|' .. deva .. ']]</span>', kru_translit.tr(deva, 'kru', 'deva'), roman, { comment = comment }) end function tests:test_translit_kurukh() local examples = { { 'आलार', 'ālār', ''}, {'ए–ड़ा', 'ēṛā',''}, {'ख़ंज्पा','xañjpā',''}, {'निंग्यो','niṅgyo',''}, {'तंबस','taṃbas',''}, {'एम्बस','embas',''}, } self:iterate(examples, 'do_test_translit') end return tests oac8sr7k0vksyg2k82dp2auoc7yyjeg মডিউল:kru-Orya-translit 828 168790 510342 2026-06-07T12:47:16Z RedminBot 9553 [[en:Module:kru-Orya-translit]] থেকে আনা হলো 510342 Scribunto text/plain local export = {} local consonants = { --common ["କ"]="k", ["ଖ"]="kh", ["ଗ"]="g", ["ଘ"]="gh", ["ଙ"]="ṅ", ["ଚ"]="c", ["ଛ"]="ch", ["ଜ"]="j", ["ଝ"]="jh", ["ଞ"]="ñ", ["ଟ"]="ṭ", ["ଠ"]="ṭh", ["ଡ"]="ḍ", ["ଢ"]="ḍh", ["ଣ"]="ṇ", ["ତ"]="t", ["ଥ"]="th", ["ଦ"]="d", ["ଧ"]="dh", ["ନ"]="n", ["ପ"]="p", ["ଫ"]="ph", ["ବ"]="b", ["ଭ"]="bh", ["ମ"]="m", ["ଯ"]="j", ["ୟ"]="y", ["ର"]="r", ["ଲ"]="l", ["ଳ"]="ḷ", ["ଵ"]="v", ["ୱ"]="w", ["ଶ"]="ś", ["ଷ"]="ṣ", ["ସ"]="s", ["ହ"]="h", --nuktas ["କ଼"]="q", ["ଖ଼"]="x", ["ଗ଼"]="ġ", ["ଜ଼"]="z", ["ଝ଼"]="ź", ["ଡ଼"]="ṛ", ["ଢ଼"]="ṛh", ["ଫ଼"]="f", } local diacritics = { ["ା"]="ā", ["ି"]="i", ["ୀ"]="ī", ["ୁ"]="u", ["ୂ"]="ū", ["ୃ"]="ru", ["ୄ"]="rū", ["ୢ"]="lu", ["ୣ"]="lū", ["େ"]="e", ["ୈ"]="ai", ["ୖ"]="ai", ["ୋ"]="o", ["ୌ"]="au", ["ୗ"]="au", ["୍"]="", } local tt = { -- vowels ["ଅ"]="a", ["ଆ"]="ā", ["ଇ"]="i", ["ଈ"]="ī", ["ଉ"]="u", ["ଊ"]="ū", ["ଋ"]="ru", ["ୠ"]="rū", ["ଌ"]="lu", ["ୡ"]="lū", ["ଏ"]="e", ["ଐ"]="ai", ["ଓ"]="o", ["ଔ"]="au", -- chandrabindu ["ଁ"]="m̐", --until a better method is found -- anusvara ["ଂ"]="ṃ", --until a better method is found -- visarga ["ଃ"]="ḥ", -- avagraha ["ଽ"]="’", --numerals ["୦"]="0", ["୧"]="1", ["୨"]="2", ["୩"]="3", ["୪"]="4", ["୫"]="5", ["୬"]="6", ["୭"]="7", ["୮"]="8", ["୯"]="9", ["୲"]="¼", ["୳"]="½", ["୴"]="¾", ["୵"]="¹⁄₁₆", ["୶"]="⅛", ["୷"]="³⁄₁₆", --punctuation ["।"]=".", --danda } function export.tr(text, lang, sc) text = mw.ustring.gsub( text, "([କଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଵଭମଯୟରଲଳୱଶଷସହ]଼?)".. "([ାିୀୁୂୃୄେୈୖୋୌୗ୍ୢୣ]?)", function(c, d) if not consonants[c] then return c end if d == "" then return consonants[c] .. "a" else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, ".", tt) return text end return export 6bq9ek1z2ahlhqdf2qzo4usaww85mcf মডিউল:kru-Tols-translit 828 168791 510343 2026-06-07T12:47:16Z RedminBot 9553 [[en:Module:kru-Tols-translit]] থেকে আনা হলো 510343 Scribunto text/plain local m_str_utils = require("Module:string utilities") local gsub = m_str_utils.gsub local sub = m_str_utils.sub local U = m_str_utils.char local export = {} local tt = { -- vowels ["𑶰"] = "i", ["𑶱"] = "e", ["𑶲"] = "u", ["𑶳"] = "o", ["𑶴"] = "a", ["𑶵"] = "ā", -- consonants ["𑶶"] = "p", ["𑶷"] = "ph", ["𑶸"] = "b", ["𑶹"] = "bh", ["𑶺"] = "m", ["𑶻"] = "t", ["𑶼"] = "th", ["𑶽"] = "d", ["𑶾"] = "dh", ["𑶿"] = "n", ["𑷀"] = "ṭ", ["𑷁"] = "ṭh", ["𑷂"] = "ḍ", ["𑷃"] = "ḍh", ["𑷄"] = "ṇ", ["𑷅"] = "c", ["𑷆"] = "ch", ["𑷇"] = "j", ["𑷈"] = "jh", ["𑷉"] = "ñ", ["𑷊"] = "k", ["𑷋"] = "kh", ["𑷌"] = "g", ["𑷍"] = "gh", ["𑷎"] = "ṅ", ["𑷏"] = "y", ["𑷐"] = "r", ["𑷑"] = "l", ["𑷒"] = "v", ["𑷓"] = "n̤", ["𑷔"] = "s", ["𑷕"] = "h", ["𑷖"] = "x", ["𑷗"] = "ṛ", ["𑷘"] = "ṛh", -- diacritics ["𑷙"] = "̄", ["𑷚"] ="ʻ", -- numerals ["𑷠"] = "0", ["𑷡"] = "1", ["𑷢"] = "2", ["𑷣"] = "3", ["𑷤"] = "4", ["𑷥"] = "5", ["𑷦"] = "6", ["𑷧"] = "7", ["𑷨"] = "8", ["𑷩"] = "9" } -- transliterates any words or phrases function export.tr(text, lang, sc) text = gsub(text, ".", tt) return text end return export 3twekigs3hhvtudm2tssyysy1m6vb86 মডিউল:kru-Tols-translit/testcases 828 168792 510344 2026-06-07T12:47:16Z RedminBot 9553 [[en:Module:kru-Tols-translit/testcases]] থেকে আনা হলো 510344 Scribunto text/plain -- Unit tests for [[Module:kru-Tols-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local kru_Tols_translit = require('Module:kru-Tols-translit') function tests:check_translit(Tols, roman, lang) lang = lang or 'kru' local title = '<span class="Tols" lang="'..lang.. '">[[' .. Tols .. '#Kurukh|' .. Tols .. ']]</span>' if lang ~= 'kru' then title = lang..': '..title end self:equals(title, kru_Tols_translit.tr(Tols, lang, 'Tols'), roman) end local examples = { { "𑷊𑶲𑷗𑶲𑷖", "kũṛux" }, { "𑷔𑶴𑷎𑷔𑷊𑷐𑶰𑶻", "saṅskrit" }, } function tests:test_translit_kurukh() self:iterate(examples, check_translit) end return tests mmzttpe99hn2de4mwfphdcy9g0m1upl মডিউল:ks-Arab-to-Deva-translit/testcases 828 168793 510345 2026-06-07T12:47:17Z RedminBot 9553 [[en:Module:ks-Arab-to-Deva-translit/testcases]] থেকে আনা হলো 510345 Scribunto text/plain -- Unit tests for [[Module:ks-Arab-to-Deva-translit]]. Refresh page to run tests. return require 'Module:transliteration module testcases'( 'ks-Arab-to-Deva-translit', { { 'گُر', 'गुर' }, }, "Deva", "ks") jhl1lo9d2u1zjouk9fy6mgt8pbpsjym মডিউল:ks-Arab-translit/testcases 828 168794 510346 2026-06-07T12:47:17Z RedminBot 9553 [[en:Module:ks-Arab-translit/testcases]] থেকে আনা হলো 510346 Scribunto text/plain -- Unit tests for [[Module:ks-Arab-translit]]. Refresh page to run tests. return require 'Module:transliteration module testcases'( 'ks-Arab-translit', { { 'گُر', 'gur' }, { 'زُرؠو', 'zuryav' }, { 'زُرۍ', 'zur\'' }, { 'مَکانہٕ', 'makānụ' }, { 'آپراوُن', 'āprāvun' }, { 'ہیٚچھُن', 'hechun' }, { 'ژھانٛڈُن', 'ċhānḍun' }, { 'نیٚچوٗ', 'necū' }, { 'ژَتجی', 'ċatjī' }, { 'موجا', 'mōjā' }, { 'کیل', 'kēl' }, {"کیٖل", "kīl"}, { 'اَلہٕ', 'alụ' }, { 'کالَس', 'kālas' }, { 'اوٗر', 'ūr' }, { 'کانٛدُر', 'kāndur' }, { 'وُونٹھ', 'vūnṭh' }, -- from [[camel]] { 'کٔشِیر', 'kạśīr' }, -- from [[Kashmir]] { 'بۆڑ', 'boḍ' }, { 'ژھونٛڈمُت', 'ċhōnḍmut' }, { 'ژھٲنٛڈؠ مٕتؠ', 'ċhạ̄nḍ\' mụt\'' }, { 'اَنٛگریٖزۍ', 'angrīz\'' }, { 'خۄش', 'khọś' }, { 'اٟٹھِم', 'ụ̄ṭhim' }, { 'دَہَو ؤرِیَو پَتٕہ آو سُہ گَرٕ', 'dahav vạriyav patụ āv su garụ' }, {"ؤری", nil}, {"ؤری", "vạrī"}, { 'اوٚڑ', 'oḍ' }, { 'اۆڑ', 'oḍ' }, { 'شیٖن', 'śīn' }, {'کیۆم', "kyom"}, {"کیٛۆم", "kyom"}, {"وۄَدُر", nil}, {"وۄدُر", "vọdur"}, {"زیٛوٗٹھ", "zyūṭh"}, {"أنٛز", "ạnz"}, {"ترٛےٚ", "tre"}, {"ترٕٛہ", "trụh"}, {"بَطُخ", "batukh"}, {"ژےٚ", "ċe"}, {"کیٛازِ", "kyāzi"}, {"کیُٛل", "kyul"}, {"کیٛوٗر", "kyūr"}, {"اَکی", "akī"}, {"زۆر اَچھُر", "zor achur"}, {"بوے", "bōy"}, {"بیٚنہِ", nil}, {"بیٚنِہ", "beni"}, {"کرال", nil}, {"کرٛال", "krāl"}, {"گیۆڈ", "gyoḍ"}, {"ٹاٹھنیٛار", "ṭāṭhnyār"}, {"کَرٛ", nil}, {"اۆنٛ", nil}, {"اٟں", "ụ̄̃"}, {"کیوم", nil} }, "ks-Arab", "ks") 3kkb60xbb4d00jniduom5forp5qavns মডিউল:ks-Deva-translit/testcases 828 168795 510347 2026-06-07T12:47:18Z RedminBot 9553 [[en:Module:ks-Deva-translit/testcases]] থেকে আনা হলো 510347 Scribunto text/plain return require 'Module:transliteration module testcases'( 'ks-Deva-translit', { { 'च़', 'tsa' }, { 'कॉशुर', 'kạ̄śur' }, { 'ॳस्य','ạsy' }, { 'जहाज़', 'jahāz' }, { 'बादाम्', 'bādām' }, {'नऺर','nạr'}, }, "Deva", "ks") 5ya5wn1dusjxk7lsaz6yjbwj6e641a7 মডিউল:ks-translit/testcases 828 168796 510348 2026-06-07T12:47:19Z RedminBot 9553 [[en:Module:ks-translit/testcases]] থেকে আনা হলো 510348 Scribunto text/plain -- Unit tests for [[Module:ks-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ks_translit = require('Module:ks-translit') function tests:do_test_translit(deva, roman, xlit) self:equals('<span class="Deva" lang="ks">[[' .. mw.ustring.gsub(deva, "%+", "") .. '#Kashmiri|' .. mw.ustring.gsub(deva, "%+", "") .. ']]</span>', ks_translit.tr(deva, 'ks', 'Deva'), roman) end function tests:test_translit_ks() self:do_test_translit('च़','tsa') self:do_test_translit('कॉशुर','koshur') self:do_test_translit('जहाज़','jahāz') self:do_test_translit('बादाम्','bādām') end return tests pqn2skf5vky254w27p0syhxbt669440 মডিউল:kum-translit/testcases 828 168797 510349 2026-06-07T12:47:19Z RedminBot 9553 [[en:Module:kum-translit/testcases]] থেকে আনা হলো 510349 Scribunto text/plain return require "Module:transliteration module testcases" { module = "kum-translit", examples = [[ къолай qolay тюгюл tügül юрекден yürekden юхламай yuxlamay кююнде küyünde тёрде törde ёкъму yoqmu ёрмеси yörmesi атъялман atyalman ]], sc = "Cyrl", lang = "kum", } mtsoiogf3cvzly7nbha31wtjh76nq6s মডিউল:kv-translit/testcases 828 168798 510350 2026-06-07T12:47:20Z RedminBot 9553 [[en:Module:kv-translit/testcases]] থেকে আনা হলো 510350 Scribunto text/plain local tests = require("Module:UnitTests") local kv_translit = require("Module:kv-translit") function tests:check_translit(Cyrl, Latn) self:equals(('<span lang="kv" class="Cyrl mention">[[%s#Komi|%s]]</span>'):format(Cyrl, Cyrl), kv_translit.tr(Cyrl, 'kv', 'Cyrl'), Latn) end function tests:test_translit() local examples = { { "аддзыны", "addźyny" }, { "ассьым", "aśśym" }, { "аттьӧ", "aťťö" }, } self:iterate(examples, "check_translit") end return tests aqlw3f9c2cyq9nuv8qd27ltn1whu2ui মডিউল:kxu-translit 828 168799 510351 2026-06-07T12:47:20Z RedminBot 9553 [[en:Module:kxu-translit]] থেকে আনা হলো 510351 Scribunto text/plain local export = {} local consonants = { --common ["କ"]="k", ["ଖ"]="kh", ["ଗ"]="g", ["ଘ"]="gh", ["ଙ"]="ṅ", ["ଚ"]="c", ["ଛ"]="ch", ["ଜ"]="j", ["ଝ"]="jh", ["ଞ"]="ñ", ["ଟ"]="ṭ", ["ଠ"]="ṭh", ["ଡ"]="ḍ", ["ଢ"]="ḍh", ["ଣ"]="ṇ", ["ତ"]="t", ["ଥ"]="th", ["ଦ"]="d", ["ଧ"]="dh", ["ନ"]="n", ["ପ"]="p", ["ଫ"]="ph", ["ବ"]="b", ["ଭ"]="bh", ["ମ"]="m", ["ଯ"]="j", ["ୟ"]="y", ["ର"]="r", ["ଲ"]="l", ["ଳ"]="ḷ", ["ଵ"]="v", ["ୱ"]="w", ["ଶ"]="ś", ["ଷ"]="ṣ", ["ସ"]="s", ["ହ"]="h", --nuktas ["କ଼"]="q", ["ଖ଼"]="x", ["ଗ଼"]="ġ", ["ଜ଼"]="z", ["ଝ଼"]="ź", ["ଡ଼"]="ṛ", ["ଢ଼"]="ṛh", ["ଫ଼"]="f", } local diacritics = { ["ା"]="ā", ["ି"]="i", ["ୀ"]="ī", ["ୁ"]="u", ["ୂ"]="ū", ["ୃ"]="ru", ["ୄ"]="rū", ["ୢ"]="lu", ["ୣ"]="lū", ["େ"]="e", ["ୈ"]="ai", ["ୖ"]="ai", ["ୋ"]="o", ["ୌ"]="au", ["ୗ"]="au", ["୍"]="", } local tt = { -- vowels ["ଅ"]="a", ["ଆ"]="ā", ["ଇ"]="i", ["ଈ"]="ī", ["ଉ"]="u", ["ଊ"]="ū", ["ଋ"]="ru", ["ୠ"]="rū", ["ଌ"]="lu", ["ୡ"]="lū", ["ଏ"]="e", ["ଐ"]="ai", ["ଓ"]="o", ["ଔ"]="au", -- chandrabindu ["ଁ"]="m̐", --until a better method is found -- anusvara ["ଂ"]="ṁ", --until a better method is found -- visarga ["ଃ"]="ḥ", -- avagraha ["ଽ"]="’", --numerals ["୦"]="0", ["୧"]="1", ["୨"]="2", ["୩"]="3", ["୪"]="4", ["୫"]="5", ["୬"]="6", ["୭"]="7", ["୮"]="8", ["୯"]="9", ["୲"]="¼", ["୳"]="½", ["୴"]="¾", ["୵"]="¹⁄₁₆", ["୶"]="⅛", ["୷"]="³⁄₁₆", --punctuation ["।"]=".", --danda } function export.tr(text, lang, sc) text = mw.ustring.gsub( text, "([କଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଵଭମଯୟରଲଳୱଶଷସହ]଼?)".. "([ାିୀୁୂୃୄେୈୖୋୌୗ୍ୢୣ]?)", function(c, d) if not consonants[c] then return c end if d == "" then return consonants[c] .. "a" else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, ".", tt) -- anusvara text = mw.ustring.gsub(text, 'ṁ([kqxgġṅ])', 'ṅ%1') text = mw.ustring.gsub(text, 'ṁ([cjźñ])', 'ñ%1') text = mw.ustring.gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = mw.ustring.gsub(text, 'ṁ([tdnz])', 'n%1') text = mw.ustring.gsub(text, 'ṁ([pfbm])', 'm%1') return text end return export isjlrgl2h5648jtdjdstz895c71p2b4 মডিউল:kxu-translit/testcases 828 168800 510352 2026-06-07T12:47:21Z RedminBot 9553 [[en:Module:kxu-translit/testcases]] থেকে আনা হলো 510352 Scribunto text/plain -- Unit tests for [[Module:kxu-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local or_translit = require('Module:kxu-translit') --TO DO function tests:do_test_translit(orya, roman, xlit) self:equals('<span class="Orya" lang="kxu">[[' .. orya .. '#Odia|' .. orya .. ']]</span>', or_translit.tr(orya, 'kxu', 'Orya'), roman) end function tests:test_translit_oriya() self:do_test_translit('ଓଡ଼ିଆ', 'oṛia') self:do_test_translit('ଓଡ଼ିଶା', 'oṛiśa') self:do_test_translit('ଚାରି', 'cari') self:do_test_translit('ଏକ', 'ekô') self:do_test_translit('ପାଞ୍ଚ', 'pañcô') end return tests jrofzw5uhvksnf4jcwkdp9l1n0r4unt মডিউল:kxv-translit 828 168801 510353 2026-06-07T12:47:21Z RedminBot 9553 [[en:Module:kxv-translit]] থেকে আনা হলো 510353 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local consonants = { --common ["କ"]="k", ["ଖ"]="kh", ["ଗ"]="g", ["ଘ"]="gh", ["ଙ"]="ṅ", ["ଚ"]="c", ["ଛ"]="ch", ["ଜ"]="j", ["ଝ"]="jh", ["ଞ"]="ñ", ["ଟ"]="ṭ", ["ଠ"]="ṭh", ["ଡ"]="ḍ", ["ଢ"]="ḍh", ["ଣ"]="ṇ", ["ତ"]="t", ["ଥ"]="th", ["ଦ"]="d", ["ଧ"]="dh", ["ନ"]="n", ["ପ"]="p", ["ଫ"]="ph", ["ବ"]="b", ["ଭ"]="bh", ["ମ"]="m", ["ଯ"]="j", ["ୟ"]="y", ["ର"]="r", ["ଲ"]="l", ["ଳ"]="ḷ", ["ଵ"]="v", ["ୱ"]="w", ["ଶ"]="ś", ["ଷ"]="ṣ", ["ସ"]="s", ["ହ"]="h", --nuktas ["କ଼"]="q", ["ଖ଼"]="x", ["ଗ଼"]="ġ", ["ଜ଼"]="z", ["ଝ଼"]="ź", ["ଡ଼"]="ṛ", ["ଢ଼"]="ṛh", ["ଫ଼"]="f", } local diacritics = { ["ା"]="a", ["ି"]="i", ["ୀ"]="ī", ["ୁ"]="u", ["ୂ"]="ū", ["ୃ"]="ru", ["ୄ"]="rū", ["ୢ"]="lu", ["ୣ"]="lū", ["େ"]="e", ["ୈ"]="oi", ["ୖ"]="oi", ["ୋ"]="o", ["ୌ"]="ou", ["ୗ"]="ou", ["୍"]="", } local tt = { -- vowels ["ଅ"]="o", ["ଆ"]="a", ["ଇ"]="i", ["ଈ"]="ī", ["ଉ"]="u", ["ଊ"]="ū", ["ଋ"]="ru", ["ୠ"]="rū", ["ଌ"]="lu", ["ୡ"]="lū", ["ଏ"]="e", ["ଐ"]="oi", ["ଓ"]="o", ["ଔ"]="ou", -- chandrabindu ["ଁ"]="̃", --until a better method is found -- anusvara ["ଂ"]="ṁ", --until a better method is found -- visarga ["ଃ"]="ʔ", -- avagraha ["ଽ"]="’", --numerals ["୦"]="0", ["୧"]="1", ["୨"]="2", ["୩"]="3", ["୪"]="4", ["୫"]="5", ["୬"]="6", ["୭"]="7", ["୮"]="8", ["୯"]="9", ["୲"]="¼", ["୳"]="½", ["୴"]="¾", ["୵"]="¹⁄₁₆", ["୶"]="⅛", ["୷"]="³⁄₁₆", --punctuation ["।"]=".", --danda } function export.tr(text, lang, sc) text = gsub( text, "([କଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଵଭମଯୟରଲଳୱଶଷସହ]଼?)".. "([ାିୀୁୂୃୄେୈୖୋୌୗ୍ୢୣ]?)", function(c, d) if not consonants[c] then return c end if d == "" then return consonants[c] .. "o" else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, ".", tt) -- anusvara text = gsub(text, 'ṁ([kqxgġṅ])', 'ṅ%1') text = gsub(text, 'ṁ([cjźñ])', 'ñ%1') text = gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = gsub(text, 'ṁ([tdnz])', 'n%1') text = gsub(text, 'ṁ([pfbm])', 'm%1') -- long vowels text = gsub(text, '([oaāiue])%1', '%1̄') -- VV → V̄ text = gsub(text, '([oea])୕', '%1̄') text = gsub(text, 'oa', 'ā') text = gsub(text, 'aā', 'ā') return mw.ustring.toNFC(text) end return export 3297r6l9aoohypwrnov2kzba9a9tqya মডিউল:kxv-translit/testcases 828 168802 510354 2026-06-07T12:47:21Z RedminBot 9553 [[en:Module:kxv-translit/testcases]] থেকে আনা হলো 510354 Scribunto text/plain -- Unit tests for [[Module:kxv-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local kxv_translit = require('Module:kxv-translit') --TO DO function tests:do_test_translit(orya, roman, comment) self:equals( '<span class="Orya" lang="kxv">[[' .. orya .. '#Kuvi|' .. orya .. ']]</span>', kxv_translit.tr(orya, 'kxv', 'Orya'), roman, { comment = comment }) end function tests:test_translit_kuvi() local examples = { { 'ଅଡୁ', 'oḍu', 'independent ଅ is o'}, { 'ଓଡୁ', 'oḍu', 'independent ଓ is o'}, { 'ଅ୕ଡୁ', 'ōḍu', 'independent ଅ୕ is ō'}, { 'ଓଓଡୁ', 'ōḍu', 'independent ଓଓ is ō'}, { 'ଆକୁ', 'aku', 'independent ଆ is a'}, { 'ଆ୕କୁ', 'āku', 'independent ଆ୕ is ā'}, { 'ଆଆକୁ', 'āku', 'independent ଆଆ is ā'}, { 'ଏସ୍କି', 'eski', 'independent ଏ is e'}, { 'ଏ୕ସ୍କି', 'ēski', 'independent ଏ୕ is ē'}, { 'ଏଏସ୍କି', 'ēski', 'independent ଏଏ is ē'}, { 'କଡି', 'koḍi', 'dependent ଅ/ଓ is o'}, { 'କ୕ଡି', 'kōḍi', 'dependent ଅ୕ is ō'}, { 'କୋଓଡି', 'kōḍi', 'dependent ଓଓ is ō'}, { 'ବାଲା', 'bala', 'dependent ଆ is a'}, { 'ବା୕ଲା', 'bāla', 'dependent ଆ୕ is ā'}, { 'ବଆଲା', 'bāla', 'dependent ଆଆ is ā'}, { 'ମେଣ୍ଡା', 'meṇḍa', 'dependent ଏ is e'}, { 'ମେ୕ଣ୍ଡା', 'mēṇḍa', 'dependent ଏ୕ is ē'}, { 'ମେଏଣ୍ଡା', 'mēṇḍa', 'dependent ଏଏ is ē'}, { 'ଇଇ', 'ī', 'independent ଇଇ is ī'}, { 'ଉଉ', 'ū', 'independent ଉଉ is ū'}, { 'କିଇ', 'kī', 'dependent ଇଇ is ī'}, { 'କୁଉ', 'kū', 'dependent ଉଉ is ū'}, { 'କୁଃଏ', 'kuʔe', 'glottal stop ʔ'}, { 'ବିସେୟିଁ', 'biseyĩ', 'chandrabindu'}, } self:iterate(examples, 'do_test_translit') end return tests 27pgq14j89khej24penhfg93fxtg0oa মডিউল:ky-Cyrl-Arab-translit 828 168803 510355 2026-06-07T12:47:22Z RedminBot 9553 [[en:Module:ky-Cyrl-Arab-translit]] থেকে আনা হলো 510355 Scribunto text/plain local export = {} local tt = { ["ү"] = "ۉ", ["Ү"] = "ۉ", ["т"] = "ت", ["Т"] = "ت", ["р"] = "ر", ["Р"] = "ر", ["ф"] = "ف", ["Ф"] = "ف", ["ө"] = "ۅ", ["Ө"] = "ۅ", ["ю"] = "يۇ", ["Ю"] = "يۇ", ["ш"] = "ش", ["Ш"] = "ش", ["ь"] = "", ["Ь"] = "", ["ъ"] = "", ["Ъ"] = "", ["н"] = "ن", ["Н"] = "ن", ["п"] = "پ", ["П"] = "پ", ["й"] = "ي", ["Й"] = "ي", ["л"] = "ل", ["Л"] = "ل", ["з"] = "ز", ["З"] = "ز", ["е"] = "ە", ["Е"] = "ە", ["г"] = "گ", ["Г"] = "گ", ["б"] = "ب", ["Б"] = "ب", ["у"] = "ۇ", ["У"] = "ۇ", ["с"] = "س", ["С"] = "س", ["х"] = "ح", ["Х"] = "ح", ["ч"] = "چ", ["Ч"] = "چ", ["щ"] = "شچ", ["Щ"] = "شچ", ["я"] = "يا", ["Я"] = "يا", ["ы"] = "ى", ["Ы"] = "ى", ["э"] = "ە", ["Э"] = "ە", ["м"] = "م", ["М"] = "م", ["о"] = "و", ["О"] = "و", ["и"] = "ى", ["И"] = "ئ", -- a bit hacky but this is for vowel harmony ["ё"] = "يو", ["Ё"] = "يو", ["ж"] = "ج", ["Ж"] = "ج", ["к"] = "ك", ["К"] = "ك", ["д"] = "د", ["Д"] = "د", ["в"] = "ۋ", ["В"] = "ۋ", ["ц"] = "تس", ["Ц"] = "تس", ["а"] = "ا", ["А"] = "ا", ["ң"] = "ڭ", ["Ң"] = "ڭ", -- not used needed for some conversions ["қ"] = "ق", ["ғ"] = "ع" } local frontvowels = "ЭэЕеИиӨөҮү" local backvowels = "АаЫыОоУуЁёЯяЮю" local novowels = "[^" .. frontvowels .. backvowels .. "]" local consonants = "БбВвГгДдЖжЗзЙйКкЛлМмНнҢңПпРрСсТтФфХхЦцЧчШшЩщЪъЬь" local vc = "КкГг" local e = "Ее" -- hamza isnt used if the naxt syllable has an e function export.tr(text, lang, sc) if type(text) == "table" then options = {} text, script = text.args[1], text.args[2] end if not sc then sc = require("Module:languages").getByCode("ky"):findBestScript(text):getCode() end if sc ~= "Cyrl" then return nil end text = mw.ustring.gsub( text, "([АОӨҮУЫЕЯЁЮИЕаоөүуыэяёюиеъь%A][́̀]?)([Ее])", function(a, e) return a .. (e == "е" and "йе" or "Йе") end ):gsub("^Е", "Йе"):gsub("^е", "йе") -- conversons for КкГг -> ғқ text = mw.ustring.gsub(text, "К", "к") text = mw.ustring.gsub(text, "Г", "г") text = mw.ustring.gsub(text, "кк", "КК") text = mw.ustring.gsub(text, "гг", "ГГ") text = mw.ustring.gsub(text, "к([" .. frontvowels .. "])", "К%1") text = mw.ustring.gsub(text, "г([" .. frontvowels .. "])", "Г%1") text = mw.ustring.gsub(text, "к([" .. backvowels .. "])", "қ%1") text = mw.ustring.gsub(text, "г([" .. backvowels .. "])", "ғ%1") text = mw.ustring.gsub(text, "([" .. backvowels .. "])г", "%1ғ") text = mw.ustring.gsub(text, "([" .. backvowels .. "])к", "%1қ") -- other methods dont work at the end of the string -- so were gonna be lazy and capitals letters that shouldnt convert -- marking of Ии text = mw.ustring.gsub(text, "И", "и") text = mw.ustring.gsub( text, "([^" .. frontvowels .. consonants .. "])([" .. consonants .. "])и([" .. consonants .. "])([^" .. e .. "])", "%1%2И%3%4" ) text = mw.ustring.gsub(text, "^([" .. consonants .. "])и([" .. consonants .. "])([^" .. e .. "])", "%1И%2%3") text = mw.ustring.gsub(text, "([" .. backvowels .. "])([" .. consonants .. "])и", "%1%2И") text = mw.ustring.gsub(text, "^и([" .. consonants .. "])([^" .. e .. "])", "И%1%2") text = mw.ustring.gsub(text, "([^" .. frontvowels .. "])([" .. consonants .. "])([" .. consonants .. "])и", "%1%2%3И") return (mw.ustring.gsub(text, ".", tt)) end return export 0r99pt8hem5baavuuuhvmx27wmcu04b মডিউল:ky-Cyrl-Arab-translit/testcases 828 168804 510356 2026-06-07T12:47:22Z RedminBot 9553 [[en:Module:ky-Cyrl-Arab-translit/testcases]] থেকে আনা হলো 510356 Scribunto text/plain -- Unit tests for [[Module:ky-Cyrl-Arab-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local m_translit = require('Module:ky-Cyrl-Arab-translit') local full_link = require('Module:links').full_link local tagged = require('Module:script utilities').tag_text local ky = require('Module:languages').getByCode('ky') local rlm = require("Module:string/char")(0x200F) -- right-to-left mark local function link(word) return full_link{ term = word, lang = ky, tr = "-" } end local function nolink(word) return tagged(word, ky) end --TO DO function tests:do_test_translit(cyrl, arab) self:equals(link(cyrl), link(m_translit.tr(cyrl, 'ky', 'Cyrl')), link(arab)) end function tests:do_test_nolink(cyrl, arab) self:equals(nolink(cyrl), nolink(m_translit.tr(cyrl, 'ky', 'Cyrl')), nolink(arab)) end local options = {show_difference = true } function tests:test_translit_ky_Cyrl_Arab() local nolink = { { "Бардык адамдар өз беделинде жана укуктарында эркин жана тең укуктуу болуп жаралат. Алардын аң-сезими менен абийири бар жана бири-бирине бир туугандык мамиле кылууга тийиш.", "باردىق ادامدار ۅز بەدەلىندە جانا ۇقۇقتارىندا ەركىن جانا تەڭ ۇقۇقتۇۇ بولۇپ جارالات. الاردىن اڭ-سەزىمى مەنەن ابئيىرى بار جانا بئرى-بئرىنە بئر تۇۇعاندىق مامئلە قىلۇۇعا تئيىش."}, } self:iterate(nolink, "do_test_nolink") --self:iterate(examples, "do_test_translit") end return tests 7y77zyzzxai9u8t2o449q6oj2u8smow মডিউল:lep-translit/testcases 828 168805 510357 2026-06-07T12:47:24Z RedminBot 9553 [[en:Module:lep-translit/testcases]] থেকে আনা হলো 510357 Scribunto text/plain -- Unit tests for [[Module:lep-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local lep_translit = require('Module:lep-translit') function tests:do_test_translit(lepc, roman, xlit) self:equals('<span class="Lepc" lang="lep">[[' .. mw.ustring.gsub(lepc, "%+", "") .. '#Lepcha|' .. mw.ustring.gsub(lepc, "%+", "") .. ']]</span>', lep_translit.tr(lepc, 'lep', 'Lepc'), roman) end function tests:test_translit_lepcha() self:do_test_translit('ᰕᰧ', 'mi') self:do_test_translit('ᰈᰬᰲ', 'jer') self:do_test_translit('ᰎᰪᰰᰈᰬᰵ', 'punjeng') self:do_test_translit('ᰀᰁᰂᰃᰄᰅ','kaklakhagaglanga') self:do_test_translit('ᰆᰇᰈᰉ','cachajanya') self:do_test_translit('ᰊᰋᰌᰍ','tathadana') self:do_test_translit('ᰎᰏᰐᰑᰒᰓᰔᰕᰖ','paplaphafaflabablamamla') self:do_test_translit('ᰗᰘᰙ','tsatshadza') self:do_test_translit('ᰚᰛᰜᰝᰞᰟᰠᰡᰢᰣ','yaralahahlavasashawaʔa') self:do_test_translit('ᱍᱎᱏ', 'ttatthadda') self:do_test_translit('ᰜᰜᰶᰜᰦᰜᰧᰜᰧᰶᰜᰨᰜᰩᰜᰪᰜᰫᰜᰬ', 'lalâlálilílolólulúle') self:do_test_translit('ᰜᰭᰜᰮᰜᰯᰜᰰᰜᰱᰜᰲᰜᰳᰜᰫᰴᰜᰫᰵ', 'laklamlallanlaplarlatlúnglúng') self:do_test_translit('ᰣᰣᰶᰣᰦᰣᰧᰣᰧᰶᰣᰨᰣᰩᰣᰪᰣᰫᰣᰬ', 'ʔaʔâʔáʔiʔíʔoʔóʔuʔúʔe') self:do_test_translit('᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉', '0123456789') self:do_test_translit('ᰜᰤᰜᰥ', 'lyalra') self:do_test_translit('ᰀᰪᰕᰨ', 'kumo') self:do_test_translit('ᰀᰩᰰ', 'kón') self:do_test_translit('ᰌᰧᰶ', 'dí') self:do_test_translit('ᰋᰩᰭ', 'thók') self:do_test_translit('ᰁᰩᰱ', 'klóp') self:do_test_translit('ᰕᰩ', 'mó') self:do_test_translit('ᰀᰥᰫᰳ', 'krút') self:do_test_translit('ᰍᰩᰵ', 'nóng') self:do_test_translit('ᰜᰩᰵ', 'lóng') self:do_test_translit('ᰋᰤᰨᰲ', 'thyor') self:do_test_translit('ᰜᰤᰩᰭ', 'lyók') self:do_test_translit('ᰊᰰ', 'tan') self:do_test_translit('ᰣᰦᰕᰧᰭᰶ', 'ʔámík') end return tests j5hs3m71gr0310k1nxo10h1x0uh6waa মডিউল:lif-translit/testcases 828 168806 510358 2026-06-07T12:47:24Z RedminBot 9553 [[en:Module:lif-translit/testcases]] থেকে আনা হলো 510358 Scribunto text/plain -- Unit tests for [[Module:lif-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local lif_translit = require('Module:lif-translit') function tests:check_translit(Limb, roman) self:equals('<span class="Limb mention" lang="lif">[[' .. Limb .. '#Limbu|' .. Limb .. ']]</span>', lif_translit.tr(Limb, 'lif', 'Limb'), roman) end function tests:test_translit_limbu() self:check_translit('ᤏᤡᤱᤄᤢᤶ', 'niṅghum') self:check_translit('ᤐᤠ᤺ᤣᤱᤗ', 'pōṅlô') self:check_translit('ᤔᤧᤴᤈᤠᤣᤰᤏᤠᤒᤠ', 'mênjoknaba') self:check_translit('ᤔᤧᤴᤈᤥᤰᤏᤠᤒᤠ', 'mênjoknaba') self:check_translit('ᤕᤠᤰᤌᤢᤱ', 'yakthuṅ') self:check_translit('ᤐᤠᤴ', 'pan') self:check_translit('ᤁ᤺ᤰ', 'kô̄k') self:check_translit('ᤁᤁ᤻', 'kô̄k') self:check_translit('ᤁ᥄᥅॥', 'kô!?.') self:check_translit('ᤁᤴ', 'kôn') self:check_translit('ᤔᤩᤠᤱ', 'myaṅ') self:check_translit('ᤁᤧᤖᤧᤀᤠᤱ', 'kêrêaṅ') self:check_translit('ᤌᤡᤰᤁᤥ', 'thikko') self:check_translit('ᤏᤠ᤺ᤵᤔᤠ', 'nāpma') end return tests 9li9y1cx947hld6hf11o4qal62g6lq9 মডিউল:lo-translit/testcases 828 168807 510359 2026-06-07T12:47:25Z RedminBot 9553 [[en:Module:lo-translit/testcases]] থেকে আনা হলো 510359 Scribunto text/plain local tests = require('Module:UnitTests') local lo_translit = require('Module:lo-translit') function tests:check_tr(Laoo, Latn) return self:equals( ('<span class="Laoo" lang="lo">[[%s#Lao|%s]]</span>'):format(Laoo, Laoo), lo_translit.tr(Laoo, 'lo', 'Laoo', true), Latn ) end function tests:check_tr_syll(Laoo, syllables) return self:equals( ('<span class="Laoo" lang="lo">[[%s#Lao|%s]]</span>'):format(Laoo, Laoo), lo_translit.split_syll(Laoo, true), syllables ) end local examples = { { "ໃຫຍ່", "ໃຫຍ່", "ngai" }, { "ຫ້ອງ", "ຫ້ອງ", "hǭng" }, { "ຫວຍ", "ຫວຍ", "hūai" }, { "ອາຫານວ່າງ", "ອາ-ຫານ-ວ່າງ", "ʼā hān wāng" }, { "ກິໂລກຼາມ", "ກິ-ໂລ-ກຼາມ", "ki lō krām" }, { "ອຸບັດເຫດ", "ອຸ-ບັດ-ເຫດ", "ʼu bat hēt" }, { "ຫອຍນ້ຳຈືດ", "ຫອຍ-ນ້ຳ-ຈືດ", "hǭi nam chư̄t" }, { "ຫອຍ", "ຫອຍ", "hǭi" }, { "ຫອຽ", "ຫອຽ", "hǭi" }, { "ກະໂຫລກ", "ກະ-ໂຫລກ", "ka lōk" }, { "ມາເຊດວນ", "ມາ-ເຊ-ດວນ", "mā sē dūan" }, { "ຄຸຍ", "ຄຸຍ", "khui" }, { "ແລ້ວ", "ແລ້ວ", "lǣu" }, { "ຮ້ອຽແກ້ວ", "ຮ້ອຽ-ແກ້ວ", "hǭi kǣu" }, { "ເຂົ້າຈີ່ຝຣັ່ງ", "ເຂົ້າ-ຈີ່-ຝ-ຣັ່ງ", "khao chī fa rang" }, { "ຫວຍທວາຍ", "ຫວຍ-ທວາຍ", "hūai thuāi" }, { "ການປະຕິວັດ", "ການ-ປະ-ຕິ-ວັດ", "kān pa ti wat" }, { "ດ້າຽ", "ດ້າຽ", "dāi" }, { "ກາບຫອຍທະເລ", "ກາບ-ຫອຍ-ທະ-ເລ", "kāp hǭi tha lē" }, { "ຄາວຽກ", "ຄາ-ວຽກ", "khā wīak" }, { "ເຂົ້າຊອຍ", "ເຂົ້າ-ຊອຍ", "khao sǭi" }, { "ຂາຽ", "ຂາຽ", "khāi" }, { "ຫ້ອງ", "ຫ້ອງ", "hǭng" }, { "ຫອຍນາງລົມ", "ຫອຍ-ນາງ-ລົມ", "hǭi nāng lom" }, { "ຄວາຍ", "ຄວາຍ", "khuāi" }, { "ເປືອຍ", "ເປືອຍ", "pư̄ai" }, { "ແຈ່ວບອງ", "ແຈ່ວ-ບອງ", "chǣu bǭng" }, { "ແຫ້ງ", "ແຫ້ງ", "hǣng" }, { "ສົງກຣານ", "ສົງ-ກຣານ", "song krān" }, { "ອິ່ມແລ້ວ", "ອິ່ມ-ແລ້ວ", "ʼim lǣu" }, { "ຄືນຫລັໍງ", "ຄືນ-ຫລັໍງ", "khư̄n lang" }, { "ນິວັດ", "ນິ-ວັດ", "ni wat" }, { "ແນວໃດ", "ແນວ-ໃດ", "nǣu dai" }, { "ໝໍປົວແຂ້ວ", "ໝໍ-ປົວ-ແຂ້ວ", "mǭ pūa khǣu" }, { "ແຫນງ", "ແຫນງ", "nǣng" }, { "ແກ້ວ", "ແກ້ວ", "kǣu" }, { "ຕຸ້ຍ", "ຕຸ້ຍ", "tui" }, { "ຫນ່ອຍ", "ຫນ່ອຍ", "nǭi" }, { "ຫ້ອງເຢັນ", "ຫ້ອງ-ເຢັນ", "hǭng yen" }, { "ອານຸສາວະລີ", "ອາ-ນຸ-ສາ-ວະ-ລີ", "ʼā nu sā wa lī" }, { "ກ້ວຍ", "ກ້ວຍ", "kuāi" }, { "ເວັບເບຣົາວ໌ເຊີຣ໌", "ເວັບ-ເບ-ຣົາວ໌-ເຊີຣ໌", "wep bē rua<small><del>u</del></small> sœ̄<small><del>n</del></small>" }, { "ແຂວງ", "ແຂວງ", "khuǣng" }, { "ຍ່ອຽ", "ຍ່ອຽ", "nyǭi" }, { "ກີ່ວ", "ກີ່ວ", "kīu" }, { "ກົວລາລໍາເປີ", "ກົວ-ລາ-ລໍາ-ເປີ", "kūa lā lam pœ̄" }, { "ສະຫະລັດອະເມລິກາ", "ສະ-ຫະ-ລັດ-ອະ-ເມ-ລິ-ກາ", "sa ha lat ʼa mē li kā" }, { "ປະເທດອິນເດຍ", "ປະ-ເທດ-ອິນ-ເດຍ", "pa thēt ʼin dīa" }, { "ສຍາມ", "ສ-ຍາມ", "sa nyām" }, { "ການເມືອງ", "ການ-ເມືອງ", "kān mư̄ang" }, { "ຊົນນະບົດ", "ຊົນ-ນະ-ບົດ", "son na bot" }, { "ທິດຕາເວັນອອກ", "ທິດ-ຕາ-ເວັນ-ອອກ", "thit tā wen ʼǭk" }, { "ທະນາຄານ", "ທະ-ນາ-ຄານ", "tha nā khān" }, { "ຄວາມໝາຍ", "ຄວາມ-ໝາຍ", "khuām māi" }, { "ພະໂພທິສັດ", "ພະ-ໂພ-ທິ-ສັດ", "pha phō thi sat" }, { "ທາງຫຼວງ", "ທາງ-ຫຼວງ", "thāng lūang" }, { "ມຶງ", "ມຶງ", "mưng" }, { "ເຂົາ", "ເຂົາ", "khao" }, { "ເຂືອ", "ເຂືອ", "khư̄a" }, { "ຂ້ອຍ", "ຂ້ອຍ", "khǭi" }, { "ກວຽນ", "ກວຽນ", "kuīan" }, { "ກະດານ", "ກະ-ດານ", "ka dān" }, { "ຈະເຣີນອາຫານ", "ຈະ-ເຣີນ-ອາ-ຫານ", "cha rœ̄n ʼā hān" }, { "ເຈົ້າ", "ເຈົ້າ", "chao" }, { "ໃນເວລາທີ່", "ໃນ-ເວ-ລາ-ທີ່", "nai wē lā thī" }, { "ໂຮງຫັດຖະກັມ", "ໂຮງ-ຫັດ-ຖະ-ກັມ", "hōng hat tha kam" }, { "ການຕໍ່ສູ້ກັບ", "ການ-ຕໍ່-ສູ້-ກັບ", "kān tǭ sū kap" }, { "ພາສາໄຕ", "ພາ-ສາ-ໄຕ", "phā sā tai" }, { "ພາສາລາວສືບທອດມາຈາກ", "ພາ-ສາ-ລາວ-ສືບ-ທອດ-ມາ-ຈາກ", "phā sā lāo sư̄p thǭt mā chāk" }, { "ຢູ່ພາກໃຕ້ຂອງຈີນເຊິ່ງເປັນຈຸດດັ່ງເດີມຂອງຫຼາຍພາສາຕ່າງໆ", "ຢູ່-ພາກ-ໃຕ້-ຂອງ-ຈີນ-ເຊິ່ງ-ເປັນ-ຈຸດ-ດັ່ງ-ເດີມ-ຂອງ-ຫຼາຍ-ພາ-ສາ-ຕ່າງໆ", "yū phāk tai khǭng chīn sœng pen chut dang dœ̄m khǭng lāi phā sā tāng <small><u>tāng</u></small>" }, { "ທີ່ຍັງໃຊ້ແລະເວົ້າຢູ່ໂດຍຫຼາຍຊົນເຜົ່າ", "ທີ່-ຍັງ-ໃຊ້-ແລະ-ເວົ້າ-ຢູ່-ໂດຍ-ຫຼາຍ-ຊົນ-ເຜົ່າ", "thī nyang sai læ wao yū dōi lāi son phao" }, { "ເນື່ອງຈາກຖືກຄວາມກົດດັນຈາກການຂະຫຍາຍຕົວຂອງອານາຈັກຈີນ", "ເນື່ອງ-ຈາກ-ຖືກ-ຄວາມ-ກົດ-ດັນ-ຈາກ-ການ-ຂະ-ຫຍາຍ-ຕົວ-ຂອງ-ອາ-ນາ-ຈັກ-ຈີນ", "nư̄ang chāk thư̄k khuām kot dan chāk kān kha nyāi tūa khǭng ʼā nā chak chīn" }, { "ວຽງຈັນ", "ວຽງ-ຈັນ", "wīang chan" }, { "ວຽງຈັນທນ໌", "ວຽງ-ຈັນ-ທນ໌", "wīang chan tha<small><del>n</del></small>" }, { "ລັດເຊັຽ", "ລັດ-ເຊັຽ", "lat sīa" }, { "໌", "໌", "" }, { "ຯ", "ຯ", "〃" }, } function tests:test_tr() local translit_examples = {} for _, example in ipairs(examples) do table.insert(translit_examples, { example[1], example[3] }) end return self:iterate(translit_examples, "check_tr") end function tests:test_tr_syll() local tr_syll_examples = {} for _, example in ipairs(examples) do table.insert(tr_syll_examples, { example[1], example[2] }) end return self:iterate(tr_syll_examples, "check_tr_syll") end return tests 40dnv7dzsp5r153pd1mu3e6mrmgpkqp মডিউল:lzz-translit 828 168808 510360 2026-06-07T12:47:25Z RedminBot 9553 [[en:Module:lzz-translit]] থেকে আনা হলো 510360 Scribunto text/plain local m_str_utils = require("Module:string utilities") local codepoint = m_str_utils.codepoint local gsub = m_str_utils.gsub local u = m_str_utils.char local upper = m_str_utils.upper local export = {} local tt = { ["ა"]="a", ["ბ"]="b", ["გ"]="g", ["დ"]="d", ["ე"]="e", ["ვ"]="v", ["ზ"]="z", ["თ"]="t", ["ი"]="i", ["კ"]="ǩ", ["ლ"]="l", ["მ"]="m", ["ნ"]="n", ["ჲ"]="y", ["ო"]="o", ["პ"]="p̌", ["ჟ"]="j", ["რ"]="r", ["ს"]="s", ["ტ"]="ť", ["უ"]="u", ["ფ"]="p", ["ქ"]="k", ["ღ"]="ğ", ["ყ"]="q", ["შ"]="ş", ["ჩ"]="ç", ["ც"]="ʒ", ["ძ"]="ż", ["წ"]="ǯ", ["ჭ"]="ç̌", ["ხ"]="x", ["ჯ"]="c", ["ჰ"]="h", ["ჶ"]="f", }; function export.tr(text, lang, sc) -- Transliterate uppercase characters from the Georgian Extended block as -- the uppercase version of the transliteration of the lowercase characters -- from the Georgian block. -- U+10D0: start of Georgian block -- U+1C90: start of Georgian Extended block text = gsub( text, '[' .. u(0x1C90) .. '-' .. u(0x1CBF) .. ']', function (char) local translit = tt[u(codepoint(char) - 0x1C90 + 0x10D0 )] return translit and upper(translit) end) text = gsub(text, '.', tt) return text end return export fo1052lga4nx3bzm3koghvmmuuc4zyi মডিউল:mai-Tirh-translit/testcases 828 168809 510361 2026-06-07T12:47:26Z RedminBot 9553 [[en:Module:mai-Tirh-translit/testcases]] থেকে আনা হলো 510361 Scribunto text/plain local tests = require("Module:UnitTests") local m_translit = require("Module:mai-Tirh-translit") local sc = require("Module:scripts").getByCode("Tirh") local lang = require("Module:languages").getByCode("mai") function link(term) return require("Module:links").full_link {term = term, lang = lang, tr = "-", sc = sc} end function tests:check_translit(term, expected) tests:equals(link(term), m_translit.tr(term), expected) end function tests:test_translit() local examples = { {"𑒂𑒨𑒺", "āye"}, {"𑒑𑒰𑒖𑒩", "gājar"}, {"𑒏𑒩𑒢𑒰", "karnā"}, } tests:iterate(examples, "check_translit") end return tests pooz96ny31yzvloazf8nidyxx9n4ef1 মডিউল:mai-translit/testcases 828 168810 510362 2026-06-07T12:47:27Z RedminBot 9553 [[en:Module:mai-translit/testcases]] থেকে আনা হলো 510362 Scribunto text/plain local tests = require("Module:UnitTests") local m_translit = require("Module:mai-translit") local sc = require("Module:scripts").getByCode("Deva") local lang = require("Module:languages").getByCode("mai") function link(term) return require("Module:links").full_link {term = term, lang = lang, tr = "-", sc = sc} end function tests:check_translit(term, expected) tests:equals(link(term), m_translit.tr(term), expected) end function tests:test_translit() local examples = { {"आयॆ", "āye"}, {"आऒ", "āo"}, {"इऒ", "io"}, {"इऎ", "ie"}, {"अय़", "aë"}, {"चॏमुखऺ", "cǒmukhâ"}, {"चव़मुखऺ", "caömukhâ"}, {"रवि", "ravi"}, } tests:iterate(examples, "check_translit") end return tests 8m40e46adrpkrfk7g5c7v7wpv9z2yky মডিউল:mak-Latn-Bugi-translit 828 168811 510363 2026-06-07T12:47:27Z RedminBot 9553 [[en:Module:mak-Latn-Bugi-translit]] থেকে আনা হলো 510363 Scribunto text/plain local export = {} local tt = { ["Latn"] = { ["ka"]="ᨀ", ["ki"]="ᨀᨗ", ["ku"]="ᨀᨘ", ["ke"]="ᨀᨙ", ["ko"]="ᨀᨚ", ["ga"]="ᨁ", ["gi"]="ᨁᨗ", ["gu"]="ᨁᨘ", ["ge"]="ᨁᨙ", ["go"]="ᨁᨚ", ["pa"]="ᨄ", ["pi"]="ᨄᨗ", ["pu"]="ᨄᨘ", ["pe"]="ᨄᨙ", ["po"]="ᨄᨚ", ["ba"]="ᨅ", ["bi"]="ᨅᨗ", ["bu"]="ᨅᨘ", ["be"]="ᨅᨙ", ["bo"]="ᨅᨚ", ["ma"]="ᨆ", ["mi"]="ᨆᨗ", ["mu"]="ᨆᨘ", ["me"]="ᨆᨙ", ["mo"]="ᨆᨚ", ["ta"]="ᨈ", ["ti"]="ᨈᨗ", ["tu"]="ᨈᨘ", ["te"]="ᨈᨙ", ["to"]="ᨈᨚ", ["da"]="ᨉ", ["di"]="ᨉᨗ", ["du"]="ᨉᨘ", ["de"]="ᨉᨙ", ["do"]="ᨉᨚ", ["na"]="ᨊ", ["ni"]="ᨊᨗ", ["nu"]="ᨊᨘ", ["ne"]="ᨊᨙ", ["no"]="ᨊᨚ", ["ca"]="ᨌ", ["ci"]="ᨌᨗ", ["cu"]="ᨌᨘ", ["ce"]="ᨌᨙ", ["co"]="ᨌᨚ", ["ja"]="ᨍ", ["ji"]="ᨍᨗ", ["ju"]="ᨍᨘ", ["je"]="ᨍᨙ", ["jo"]="ᨍᨚ", ["ya"]="ᨐ", ["yi"]="ᨐᨗ", ["yu"]="ᨐᨘ", ["ye"]="ᨐᨙ", ["yo"]="ᨐᨚ", ["ra"]="ᨑ", ["ri"]="ᨑᨗ", ["ru"]="ᨑᨘ", ["re"]="ᨑᨙ", ["ro"]="ᨑᨚ", ["la"]="ᨒ", ["li"]="ᨒᨗ", ["lu"]="ᨒᨘ", ["le"]="ᨒᨙ", ["lo"]="ᨒᨚ", ["wa"]="ᨓ", ["wi"]="ᨓᨗ", ["wu"]="ᨓᨘ", ["we"]="ᨓᨙ", ["wo"]="ᨓᨚ", ["sa"]="ᨔ", ["si"]="ᨔᨗ", ["su"]="ᨔᨘ", ["se"]="ᨔᨙ", ["so"]="ᨔᨚ", ["ha"]="ᨖ", ["hi"]="ᨖᨗ", ["hu"]="ᨖᨘ", ["he"]="ᨖᨙ", ["ho"]="ᨖᨚ", ["a"]="ᨕ", ["i"]="ᨕᨗ", ["u"]="ᨕᨘ", ["e"]="ᨕᨙ", ["o"]="ᨕᨚ", ["nga"]="ᨂ", ["ngi"]="ᨂᨗ", ["ngu"]="ᨂᨘ", ["nge"]="ᨂᨙ", ["ngo"]="ᨂᨚ", ["nya"]="ᨎ", ["nyi"]="ᨎᨗ", ["nyu"]="ᨎᨘ", ["nye"]="ᨎᨙ", ["nyo"]="ᨎᨚ", ["kà"]="ᨀ", ["kì"]="ᨀᨗ", ["kù"]="ᨀᨘ", ["kè"]="ᨀᨙ", ["kò"]="ᨀᨚ", ["gà"]="ᨁ", ["gì"]="ᨁᨗ", ["gù"]="ᨁᨘ", ["gè"]="ᨁᨙ", ["gò"]="ᨁᨚ", ["pà"]="ᨄ", ["pì"]="ᨄᨗ", ["pù"]="ᨄᨘ", ["pè"]="ᨄᨙ", ["pò"]="ᨄᨚ", ["bà"]="ᨅ", ["bì"]="ᨅᨗ", ["bù"]="ᨅᨘ", ["bè"]="ᨅᨙ", ["bò"]="ᨅᨚ", ["mà"]="ᨆ", ["mì"]="ᨆᨗ", ["mù"]="ᨆᨘ", ["mè"]="ᨆᨙ", ["mò"]="ᨆᨚ", ["tà"]="ᨈ", ["tì"]="ᨈᨗ", ["tù"]="ᨈᨘ", ["tè"]="ᨈᨙ", ["tò"]="ᨈᨚ", ["dà"]="ᨉ", ["dì"]="ᨉᨗ", ["dù"]="ᨉᨘ", ["dè"]="ᨉᨙ", ["dò"]="ᨉᨚ", ["nà"]="ᨊ", ["nì"]="ᨊᨗ", ["nù"]="ᨊᨘ", ["nè"]="ᨊᨙ", ["nò"]="ᨊᨚ", ["cà"]="ᨌ", ["cì"]="ᨌᨗ", ["cù"]="ᨌᨘ", ["cè"]="ᨌᨙ", ["cò"]="ᨌᨚ", ["jà"]="ᨍ", ["jì"]="ᨍᨗ", ["jù"]="ᨍᨘ", ["jè"]="ᨍᨙ", ["jò"]="ᨍᨚ", ["yà"]="ᨐ", ["yì"]="ᨐᨗ", ["yù"]="ᨐᨘ", ["yè"]="ᨐᨙ", ["yò"]="ᨐᨚ", ["rà"]="ᨑ", ["rì"]="ᨑᨗ", ["rù"]="ᨑᨘ", ["rè"]="ᨑᨙ", ["rò"]="ᨑᨚ", ["là"]="ᨒ", ["lì"]="ᨒᨗ", ["lù"]="ᨒᨘ", ["lè"]="ᨒᨙ", ["lò"]="ᨒᨚ", ["wà"]="ᨓ", ["wì"]="ᨓᨗ", ["wù"]="ᨓᨘ", ["wè"]="ᨓᨙ", ["wò"]="ᨓᨚ", ["sà"]="ᨔ", ["sì"]="ᨔᨗ", ["sù"]="ᨔᨘ", ["sè"]="ᨔᨙ", ["sò"]="ᨔᨚ", ["hà"]="ᨖ", ["hì"]="ᨖᨗ", ["hù"]="ᨖᨘ", ["hè"]="ᨖᨙ", ["hò"]="ᨖᨚ", ["à"]="ᨕ", ["ì"]="ᨕᨗ", ["ù"]="ᨕᨘ", ["è"]="ᨕᨙ", ["ò"]="ᨕᨚ", ["ngà"]="ᨂ", ["ngì"]="ᨂᨗ", ["ngù"]="ᨂᨘ", ["ngè"]="ᨂᨙ", ["ngò"]="ᨂᨚ", ["nyà"]="ᨎ", ["nyì"]="ᨎᨗ", ["nyù"]="ᨎᨘ", ["nyè"]="ᨎᨙ", ["nyò"]="ᨎᨚ", } } function export.tr(text, lang, sc) if (sc == "Latn") then -- Lowercase text = mw.ustring.lower(text) -- Sisipkan huruf 'w' jika vokal o/u/ò/ù bertemu vokal a/e/i/à/è/ì text = mw.ustring.gsub(text, "([ouòù])([aeiàèì])", "%1w%2") -- Sisipkan huruf 'y' jika vokal e/i/è/ì bertemu vokal a/o/u/à/ò/ù text = mw.ustring.gsub(text, "([eièì])([aouàòù])", "%1y%2") -- Remove glottal stop (dilakukan setelah penyisipan glide agar kata seperti to'a tidak ikut berubah) text = mw.ustring.gsub(text, "\'", "") text = mw.ustring.gsub(text, "ʼ", "") -- Replace character clusters text = mw.ustring.gsub(text, "ng[aeiouàèìòù]", tt[sc]) text = mw.ustring.gsub(text, "ny[aeiouàèìòù]", tt[sc]) -- Replace the rest of the characters text = mw.ustring.gsub(text, "[kgnpbmtdnrcjyclwsh][aeiouàèìòù]", tt[sc]) -- Replace one-vowel syllables text = mw.ustring.gsub(text, "[aeiouàèìòù]", tt[sc]) -- Remove left-overs text = mw.ustring.gsub(text, "[kgnpbmtdnrcjyclwsh-]", "") end return mw.ustring.toNFC(text) end return export sy5t2l1y8u2orfjd47321pbfh8mlsfv মডিউল:mak-Latn-Bugi-translit/testcases 828 168812 510364 2026-06-07T12:47:27Z RedminBot 9553 [[en:Module:mak-Latn-Bugi-translit/testcases]] থেকে আনা হলো 510364 Scribunto text/plain return require("Module:transliteration module testcases") { module = "mak-Latn-Bugi-translit", examples = { { "goa", "ᨁᨚᨓ" }, { "leang", "ᨒᨙᨐ"}, { "bueʼ", "ᨅᨘᨓᨙ"}, { "tianang", "ᨈᨗᨐᨊ"}, { "boeʼ", "ᨅᨚᨓᨙ" }, { "tea", "ᨈᨙᨐ" }, { "ia", "ᨕᨗᨐ" }, {"luaraʼ", "ᨒᨘᨓᨑ" }, {"tuang", "ᨈᨘᨓ"}, {"kaeng", "ᨀᨕᨙ"}, {"jai", "ᨍᨕᨗ"}, {"agàng", "ᨕᨁ"}, }, sc = "Latn", lang = "mak", } 7y4d7tfevvkc29qmwcoz8pxa5vjufhr মডিউল:mak-Latn-Maka-translit 828 168813 510365 2026-06-07T12:47:28Z RedminBot 9553 [[en:Module:mak-Latn-Maka-translit]] থেকে আনা হলো 510365 Scribunto text/plain local export = {} local tt = { ["Latn"] = { ["ka"]="𑻠", ["ki"]="𑻠𑻳", ["ku"]="𑻠𑻴", ["ke"]="𑻠𑻵", ["ko"]="𑻠𑻶", ["ga"]="𑻡", ["gi"]="𑻡𑻳", ["gu"]="𑻡𑻴", ["ge"]="𑻡𑻵", ["go"]="𑻡𑻶", ["pa"]="𑻣", ["pi"]="𑻣𑻳", ["pu"]="𑻣𑻴", ["pe"]="𑻣𑻵", ["po"]="𑻣𑻶", ["ba"]="𑻤", ["bi"]="𑻤𑻳", ["bu"]="𑻤𑻴", ["be"]="𑻤𑻵", ["bo"]="𑻤𑻶", ["ma"]="𑻥", ["mi"]="𑻥𑻳", ["mu"]="𑻥𑻴", ["me"]="𑻥𑻵", ["mo"]="𑻥𑻶", ["ta"]="𑻦", ["ti"]="𑻦𑻳", ["tu"]="𑻦𑻴", ["te"]="𑻦𑻵", ["to"]="𑻦𑻶", ["da"]="𑻧", ["di"]="𑻧𑻳", ["du"]="𑻧𑻴", ["de"]="𑻧𑻵", ["do"]="𑻧𑻶", ["na"]="𑻨", ["ni"]="𑻨𑻳", ["nu"]="𑻨𑻴", ["ne"]="𑻨𑻵", ["no"]="𑻨𑻶", ["ca"]="𑻩", ["ci"]="𑻩𑻳", ["cu"]="𑻩𑻴", ["ce"]="𑻩𑻵", ["co"]="𑻩𑻶", ["ja"]="𑻪", ["ji"]="𑻪𑻳", ["ju"]="𑻪𑻴", ["je"]="𑻪𑻵", ["jo"]="𑻪𑻶", ["ya"]="𑻬", ["yi"]="𑻬𑻳", ["yu"]="𑻬𑻴", ["ye"]="𑻬𑻵", ["yo"]="𑻬𑻶", ["ra"]="𑻭", ["ri"]="𑻭𑻳", ["ru"]="𑻭𑻴", ["re"]="𑻭𑻵", ["ro"]="𑻭𑻶", ["la"]="𑻮", ["li"]="𑻮𑻳", ["lu"]="𑻮𑻴", ["le"]="𑻮𑻵", ["lo"]="𑻮𑻶", ["wa"]="𑻯", ["wi"]="𑻯𑻳", ["wu"]="𑻯𑻴", ["we"]="𑻯𑻵", ["wo"]="𑻯𑻶", ["sa"]="𑻰", ["si"]="𑻰𑻳", ["su"]="𑻰𑻴", ["se"]="𑻰𑻵", ["so"]="𑻰𑻶", ["a"]="𑻱", ["i"]="𑻱𑻳", ["u"]="𑻱𑻴", ["e"]="𑻱𑻵", ["o"]="𑻱𑻶", ["ha"]="𑻱", ["hi"]="𑻱𑻳", ["hu"]="𑻱𑻴", ["he"]="𑻱𑻵", ["ho"]="𑻱𑻶", ["nga"]="𑻢", ["ngi"]="𑻢𑻳", ["ngu"]="𑻢𑻴", ["nge"]="𑻢𑻵", ["ngo"]="𑻢𑻶", ["nya"]="𑻫", ["nyi"]="𑻫𑻳", ["nyu"]="𑻫𑻴", ["nye"]="𑻫𑻵", ["nyo"]="𑻫𑻶", ["kà"]="𑻠", ["kì"]="𑻠𑻳", ["kù"]="𑻠𑻴", ["kè"]="𑻠𑻵", ["kò"]="𑻠𑻶", ["gà"]="𑻡", ["gì"]="𑻡𑻳", ["gù"]="𑻡𑻴", ["gè"]="𑻡𑻵", ["gò"]="𑻡𑻶", ["pà"]="𑻣", ["pì"]="𑻣𑻳", ["pù"]="𑻣𑻴", ["pè"]="𑻣𑻵", ["pò"]="𑻣𑻶", ["bà"]="𑻤", ["bì"]="𑻤𑻳", ["bù"]="𑻤𑻴", ["bè"]="𑻤𑻵", ["bò"]="𑻤𑻶", ["mà"]="𑻥", ["mì"]="𑻥𑻳", ["mù"]="𑻥𑻴", ["mè"]="𑻥𑻵", ["mò"]="𑻥𑻶", ["tà"]="𑻦", ["tì"]="𑻦𑻳", ["tù"]="𑻦𑻴", ["tè"]="𑻦𑻵", ["tò"]="𑻦𑻶", ["dà"]="𑻧", ["dì"]="𑻧𑻳", ["dù"]="𑻧𑻴", ["dè"]="𑻧𑻵", ["dò"]="𑻧𑻶", ["nà"]="𑻨", ["nì"]="𑻨𑻳", ["nù"]="𑻨𑻴", ["nè"]="𑻨𑻵", ["nò"]="𑻨𑻶", ["cà"]="𑻩", ["cì"]="𑻩𑻳", ["cù"]="𑻩𑻴", ["cè"]="𑻩𑻵", ["cò"]="𑻩𑻶", ["jà"]="𑻪", ["jì"]="𑻪𑻳", ["jù"]="𑻪𑻴", ["jè"]="𑻪𑻵", ["jò"]="𑻪𑻶", ["yà"]="𑻬", ["yì"]="𑻬𑻳", ["yù"]="𑻬𑻴", ["yè"]="𑻬𑻵", ["yò"]="𑻬𑻶", ["rà"]="𑻭", ["rì"]="𑻭𑻳", ["rù"]="𑻭𑻴", ["rè"]="𑻭𑻵", ["rò"]="𑻭𑻶", ["là"]="𑻮", ["lì"]="𑻮𑻳", ["lù"]="𑻮𑻴", ["lè"]="𑻮𑻵", ["lò"]="𑻮𑻶", ["wà"]="𑻯", ["wì"]="𑻯𑻳", ["wù"]="𑻯𑻴", ["wè"]="𑻯𑻵", ["wò"]="𑻯𑻶", ["sà"]="𑻰", ["sì"]="𑻰𑻳", ["sù"]="𑻰𑻴", ["sè"]="𑻰𑻵", ["sò"]="𑻰𑻶", ["à"]="𑻱", ["ì"]="𑻱𑻳", ["ù"]="𑻱𑻴", ["è"]="𑻱𑻵", ["ò"]="𑻱𑻶", ["hà"]="𑻱", ["hì"]="𑻱𑻳", ["hù"]="𑻱𑻴", ["hè"]="𑻱𑻵", ["hò"]="𑻱𑻶", ["ngà"]="𑻢", ["ngì"]="𑻢𑻳", ["ngù"]="𑻢𑻴", ["ngè"]="𑻢𑻵", ["ngò"]="𑻢𑻶", ["nyà"]="𑻫", ["nyì"]="𑻫𑻳", ["nyù"]="𑻫𑻴", ["nyè"]="𑻫𑻵", ["nyò"]="𑻫𑻶", } } function export.tr(text, lang, sc) if (sc == "Latn") then -- Lowercase text = mw.ustring.lower(text) -- Hapus semua spasi text = mw.ustring.gsub(text, "%s+", "") -- Sisipkan huruf 'w' jika vokal o/u/ò/ù bertemu vokal a/e/i/à/è/ì text = mw.ustring.gsub(text, "([ouòù])([aeiàèì])", "%1w%2") -- Sisipkan huruf 'y' jika vokal e/i/è/ì bertemu vokal a/o/u/à/ò/ù text = mw.ustring.gsub(text, "([eièì])([aouàòù])", "%1y%2") -- Remove glottal stop (dilakukan setelah penyisipan glide) text = mw.ustring.gsub(text, "['ʼ]", "") -- Replace character clusters text = mw.ustring.gsub(text, "ng[aeiouàèìòù]", tt[sc]) text = mw.ustring.gsub(text, "ny[aeiouàèìòù]", tt[sc]) -- Replace the rest of the characters text = mw.ustring.gsub(text, "[kgnpbmtdnrcjyclwsh][aeiouàèìòù]", tt[sc]) -- Replace one-vowel syllables text = mw.ustring.gsub(text, "[aeiouàèìòù]", tt[sc]) -- Remove left-overs (konsonan mati yang tidak ditulis pada skrip) text = mw.ustring.gsub(text, "[kgnpbmtdnrcjyclwsh-]", "") -- Logic sistem reduplikasi (Angka Makassar) disesuaikan text = mw.ustring.gsub(text, "([𑻠-𑻶]+)", function(word) local prev_c, prev_v = nil, nil local res = mw.ustring.gsub(word, "([𑻠-𑻱])([𑻳-𑻶]?)", function(c, v) if prev_c then if prev_c == c then if prev_v == v and prev_v ~= "" then -- dudu -> 𑻧𑻴𑻴, tete -> 𑻦𑻵𑻵 prev_c, prev_v = nil, nil return v elseif prev_v == "" and v == "" then -- dada -> 𑻧𑻲 prev_c, prev_v = nil, nil return "𑻲" else -- dadu -> 𑻧𑻲𑻴, duda -> 𑻧𑻴𑻲, dido -> 𑻧𑻳𑻲𑻶 prev_c, prev_v = nil, nil return "𑻲" .. v end else prev_c, prev_v = c, v return c .. v end else prev_c, prev_v = c, v return c .. v end end) return res end) end return mw.ustring.toNFC(text) end return export 63aohz8p7xy0bf1i501opp84zem55sy মডিউল:mak-Latn-Maka-translit/testcases 828 168814 510366 2026-06-07T12:47:28Z RedminBot 9553 [[en:Module:mak-Latn-Maka-translit/testcases]] থেকে আনা হলো 510366 Scribunto text/plain return require("Module:transliteration module testcases") { module = "mak-Latn-Maka-translit", examples = { { "goa", "𑻡𑻶𑻯" }, { "leang", "𑻮𑻵𑻬"}, { "bueʼ", "𑻤𑻴𑻯𑻵"}, { "tianang", "𑻦𑻳𑻬𑻨"}, { "boeʼ", "𑻤𑻶𑻯𑻵" }, { "tea", "𑻦𑻵𑻬" }, { "ia", "𑻱𑻳𑻬" }, {"luaraʼ", "𑻮𑻴𑻯𑻭" }, {"tuang", "𑻦𑻴𑻯"}, {"kaeng", "𑻠𑻱𑻵"}, {"jai", "𑻪𑻱𑻳"}, {"agàng", "𑻱𑻡"}, { "pempeng", "𑻣𑻵𑻵" }, { "bombong", "𑻤𑻶𑻶" }, { "dadi", "𑻧𑻲𑻳" }, { "bambang", "𑻤𑻲" }, { "pepu", "𑻣𑻵𑻲𑻴" }, { "pipi", "𑻣𑻳𑻳" }, }, sc = "Latn", lang = "mak", } b5cky1lw7x99kfrro3tuwlk2thbnio9 মডিউল:mha-translit 828 168815 510367 2026-06-07T12:47:29Z RedminBot 9553 [[en:Module:mha-translit]] থেকে আনা হলো 510367 Scribunto text/plain local export = {} local consonants = { --common ["କ"]="k", ["ଖ"]="kh", ["ଗ"]="g", ["ଘ"]="gh", ["ଙ"]="ṅ", ["ଚ"]="c", ["ଛ"]="ch", ["ଜ"]="j", ["ଝ"]="jh", ["ଞ"]="ñ", ["ଟ"]="ṭ", ["ଠ"]="ṭh", ["ଡ"]="ḍ", ["ଢ"]="ḍh", ["ଣ"]="ṇ", ["ତ"]="t", ["ଥ"]="th", ["ଦ"]="d", ["ଧ"]="dh", ["ନ"]="n", ["ପ"]="p", ["ଫ"]="ph", ["ବ"]="b", ["ଭ"]="bh", ["ମ"]="m", ["ଯ"]="j", ["ୟ"]="y", ["ର"]="r", ["ଲ"]="l", ["ଳ"]="ḷ", ["ଵ"]="v", ["ୱ"]="w", ["ଶ"]="ś", ["ଷ"]="ṣ", ["ସ"]="s", ["ହ"]="h", --nuktas ["କ଼"]="q", ["ଖ଼"]="x", ["ଗ଼"]="ġ", ["ଜ଼"]="z", ["ଝ଼"]="ź", ["ଡ଼"]="ṛ", ["ଢ଼"]="ṛh", ["ଫ଼"]="f", } local diacritics = { ["ା"]="ā", ["ି"]="i", ["ୀ"]="ī", ["ୁ"]="u", ["ୂ"]="ū", ["ୃ"]="ru", ["ୄ"]="rū", ["ୢ"]="lu", ["ୣ"]="lū", ["େ"]="e", ["ୈ"]="ai", ["ୖ"]="ai", ["ୋ"]="o", ["ୌ"]="au", ["ୗ"]="au", ["୍"]="", } local tt = { -- vowels ["ଅ"]="a", ["ଆ"]="ā", ["ଇ"]="i", ["ଈ"]="ī", ["ଉ"]="u", ["ଊ"]="ū", ["ଋ"]="ru", ["ୠ"]="rū", ["ଌ"]="lu", ["ୡ"]="lū", ["ଏ"]="e", ["ଐ"]="ai", ["ଓ"]="o", ["ଔ"]="au", -- chandrabindu ["ଁ"]="m̐", --until a better method is found -- anusvara ["ଂ"]="ṃ", --until a better method is found -- visarga ["ଃ"]="ḥ", -- avagraha ["ଽ"]="’", --numerals ["୦"]="0", ["୧"]="1", ["୨"]="2", ["୩"]="3", ["୪"]="4", ["୫"]="5", ["୬"]="6", ["୭"]="7", ["୮"]="8", ["୯"]="9", ["୲"]="¼", ["୳"]="½", ["୴"]="¾", ["୵"]="¹⁄₁₆", ["୶"]="⅛", ["୷"]="³⁄₁₆", --punctuation ["।"]=".", --danda } function export.tr(text, lang, sc) text = mw.ustring.gsub( text, "([କଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଵଭମଯୟରଲଳୱଶଷସହ]଼?)".. "([ାିୀୁୂୃୄେୈୖୋୌୗ୍ୢୣ]?)", function(c, d) if not consonants[c] then return c end if d == "" then return consonants[c] .. "a" else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, ".", tt) return text end return export 6bq9ek1z2ahlhqdf2qzo4usaww85mcf মডিউল:mjt-translit 828 168816 510368 2026-06-07T12:47:29Z RedminBot 9553 [[en:Module:mjt-translit]] থেকে আনা হলো 510368 Scribunto text/plain local export = {} local consonants = { ['क']='k', ['ख']='kh', ['ग']='g', ['घ']='gh', ['ङ']='ṅ', ['च']='c', ['छ']='ch', ['ज']='j', ['झ']='jh', ['ञ']='ñ', ['ट']='ṭ', ['ठ']='ṭh', ['ड']='ḍ', ['ढ']='ḍh', ['ण']='ṇ', ['त']='t', ['थ']='th', ['द']='d', ['ध']='dh', ['न']='n', ['प']='p', ['फ']='ph', ['ब']='b', ['भ']='bh', ['म']='m', ['य']='y', ['र']='r', ['ल']='l', ['व']='v', ['ळ']='ḷ', ['श']='ś', ['ष']='ṣ', ['स']='s', ['ह']='h', ['क़'] = 'q', ['ख़'] = 'x', ['ग़'] = 'ġ', ['फ़'] = 'f', ['ज़'] = 'z', ['झ़'] = 'ź', ['ड़'] = 'ṛ', ['ढ़'] = 'ṛh', } local diacritics = { ['ा']='ā', ['ि']='i', ['ी']='ī', ['ु']='u', ['ू']='ū', ['ृ']='ṛ', ['ॄ']='ṝ', ['ॢ']='ḷ', ['ॣ']='ḹ', ['े']='e', ['ै']='ai', ['ो']='o', ['ौ']='au', ['्']='', } local tt = { -- vowels ['अ']='a', ['आ']='ā', ['इ']='i', ['ई']='ī', ['उ']='u', ['ऊ']='ū', ['ऋ']='ṛ', ['ॠ']='ṝ', ['ऌ']='ḷ', ['ॡ']='ḹ', ['ए']='e', ['ऐ']='ai', ['ओ']='o', ['औ']='au', -- chandrabindu ['ँ']='m̐', --until a better method is found -- anusvara ['ं']='ṃ', --until a better method is found -- visarga ['ः']='ḥ', -- avagraha ['ऽ']='ʼ', --numerals ['०']='0', ['१']='1', ['२']='2', ['३']='3', ['४']='4', ['५']='5', ['६']='6', ['७']='7', ['८']='8', ['९']='9', --punctuation ['॥']='.', --double danda ['।']='.', --danda --Om ['ॐ']='oṃ', } function export.tr(text, lang, sc) if sc ~= "Deva" then return nil end text = mw.ustring.gsub( text, '([क-ह])'.. '([ािीुूृॄॢॣेैोौ्]?)'.. '([अ-औ]?)', function(c, d, e) if d == "" and e ~= "" then if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. '̈' else return consonants[c] .. 'a' .. tt[e] end elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) return text end return export 9s4w3if4plbyn6m3pdpcm9q0xzuvv9x মডিউল:mnc-translit/testcases 828 168817 510369 2026-06-07T12:47:31Z RedminBot 9553 [[en:Module:mnc-translit/testcases]] থেকে আনা হলো 510369 Scribunto text/plain -- Unit tests for [[Module:mnc-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local mnc_translit = require('Module:mnc-translit') function tests:do_test_translit(mong, roman, xlit) self:equals('<span class="Mong" lang="mnc">[[' .. mong .. '#Manchu|' .. mong .. ']]</span>', mnc_translit.tr(mong, 'mnc', 'Mong'), roman) end function tests:test_translit_manchu() self:do_test_translit('ᠠᠨᡳᠶᠠ', 'aniya') self:do_test_translit('ᠠᡤᠠ', 'aga') self:do_test_translit('ᠣᡵᡳᠨ', 'orin') self:do_test_translit('ᠨᠠᡩᠠᠨ', 'nadan') self:do_test_translit('ᠨᠠᡩᠠᠨᠵᡠ', 'nadanju') self:do_test_translit('ᠨᡳᠨᠵᡠ', 'ninju') self:do_test_translit('ᠨᡳᠩᡤᡠᠨ', 'ninggun') self:do_test_translit('ᠨᡳᡴᠠᠨ', 'nikan') self:do_test_translit('ᠪᡳ', 'bi') self:do_test_translit('ᠪᡳᡵᠠ', 'bira') self:do_test_translit('ᠮᠠᠨᠵᡠ', 'manju') self:do_test_translit('ᠮᠠᠨᠵᡠ ᡤᡳᠰᡠᠨ', 'manju gisun') self:do_test_translit('ᠮᠣᡵᡳᠨ', 'morin') self:do_test_translit('ᠮᡠᠰᡝ', 'muse') self:do_test_translit('ᠮᡠᡴᡝ', 'muke') self:do_test_translit('ᠮᡳᠩᡤᠠᠨ', 'minggan') self:do_test_translit('ᠰᠣᠯᠣᠨᡨᡠ', 'solontu') self:do_test_translit('ᠰᡠᠨᠵᠠ', 'sunja') self:do_test_translit('ᠰᡠᠰᠠᡳ', 'susai') self:do_test_translit('ᠰᡠᠸᡝ', 'suwe') self:do_test_translit('ᠰᡳ', 'si') self:do_test_translit('ᠴᡝ', 'ce') self:do_test_translit('ᠵᠠᡴᡡᠨ', 'jakūn') self:do_test_translit('ᠵᠠᡴᡡᠨᠵᡠ', 'jakūnju') self:do_test_translit('ᠵᡠᠸᠠᠨ', 'juwan') self:do_test_translit('ᠵᡠᠸᡝ', 'juwe') self:do_test_translit('ᡝᠮᡠ', 'emu') self:do_test_translit('ᡠᠰᡳᡥᠠ', 'usiha') self:do_test_translit('ᡠᠶᡠᠨ', 'uyun') self:do_test_translit('ᡠᠶᡠᠨᠵᡠ', 'uyunju') self:do_test_translit('ᡤᡡᠰᡳᠨ', 'gūsin') self:do_test_translit('ᡤᡳᠰᡠᠨ', 'gisun') self:do_test_translit('ᡥᠠᡥᠠ', 'haha') self:do_test_translit('ᡦᠣᡠ', 'pou') self:do_test_translit('ᡧᠣᠯᠣᠨᡨᡠ', 'šolontu') self:do_test_translit('ᡧᡠᠨ', 'šun') self:do_test_translit('ᡨᠠᠩᡤᡡ', 'tanggū') self:do_test_translit('ᡨᠠᠴᡳᡴᡡ', 'tacikū') self:do_test_translit('ᡩᡝᡥᡳ', 'dehi') self:do_test_translit('ᡩᡠᡳᠨ', 'duin') self:do_test_translit('ᡳ', 'i') self:do_test_translit('ᡳᠯᠠᠨ', 'ilan') self:do_test_translit('ᡳᠯᡥᠠ', 'ilha') end return tests qf9bjai1bzxyctvfqcp2bka6qsk9cgo মডিউল:mni-translit 828 168818 510370 2026-06-07T12:47:31Z RedminBot 9553 [[en:Module:mni-translit]] থেকে আনা হলো 510370 Scribunto text/plain -- Transliteration for Manipuri local export = {} local gsub = mw.ustring.gsub local match = mw.ustring.match function export.tr(text, lang, sc, override) text = require("Module:Mtei-translit").tr(text, lang, sc, true) text = mw.ustring.gsub( text, ".", function(c) return conv[c] end) return text end return export 0jw72qfos2v7ug8evqm08c2nrasz8id মডিউল:mni-translit/testcases 828 168819 510371 2026-06-07T12:47:31Z RedminBot 9553 [[en:Module:mni-translit/testcases]] থেকে আনা হলো 510371 Scribunto text/plain -- Unit tests for [[Module:mni-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local bn_translit = require('Module:mni-translit') local function link(word) return '<span class="Mtei" lang="mni">[[' .. word .. '#Manipuri|' .. word .. ']]</span>' end function tests:do_test_translit(mtei, roman, xlit) return self:equals(link(mtei), mni_translit.tr(mtei, 'mni', 'Mtei', 'debug'), roman) end function tests:test_translit_manipuri() local examples = { { 'ꯃꯩꯇꯩ', 'meitei' }, { 'ꯃꯅꯤꯄꯨꯔ', 'monipur' }, } self:iterate(examples, "do_test_translit") end return tests hxpc0n494smzkq7ig7qfkdhp8exd3sl মডিউল:mnw-translit 828 168820 510372 2026-06-07T12:47:32Z RedminBot 9553 [[en:Module:mnw-translit]] থেকে আনা হলো 510372 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local u = require("Module:string/char") local letter_with_mark = "(.["..u(0x0300).."-"..u(0x036F).."]?)" local pre = { ["ျ"] = "္ယ", ["ြ"] = "္ရ", ["ွ"] = "္ဝ", ["ှ"] = "္ဟ", ["ၞ"] = "္န", ["ၟ"] = "္မ", ["ၠ"] = "္လ", } local tt1 = { -- consonants ; Unicode doesn't have exclusive great nya, that looks like ည with another curve, so use ည္ည as it should be. ["က"] = "kᵃ", ["ခ"] = "khᵃ", ["ဂ"] = "gᵃ", ["ဃ"] = "ghᵃ", ["င"] = "ṅᵃ", ["ၚ"] = "ṅᵃ", ["စ"] = "cᵃ", ["ဆ"] = "chᵃ", ["ဇ"] = "jᵃ", ["ၛ"] = "jhᵃ", ["ဉ"] = "ñᵃ", ["ည"] = "ññᵃ", -- ññ -> ñ later ["ဋ"] = "ṭᵃ", ["ဌ"] = "ṭhᵃ", ["ဍ"] = "ḍᵃ", ["ဎ"] = "ḍhᵃ", ["ဏ"] = "ṇᵃ", ["တ"] = "tᵃ", ["ထ"] = "thᵃ", ["ဒ"] = "dᵃ", ["ဓ"] = "dhᵃ", ["န"] = "nᵃ", ["ပ"] = "pᵃ", ["ဖ"] = "phᵃ", ["ဗ"] = "bᵃ", ["ဘ"] = "bhᵃ", ["မ"] = "mᵃ", ["ယ"] = "yᵃ", ["ရ"] = "rᵃ", ["လ"] = "lᵃ", ["ဝ"] = "wᵃ", ["သ"] = "sᵃ", ["ဿ"] = "ssᵃ", ["ဟ"] = "hᵃ", ["ဠ"] = "ḷᵃ", ["ၜ"] = "ṗᵃ", ["အ"] = "ʼᵃ", ["ၝ"] = "ḅᵃ", -- independent vowels (1 char) ["ဣ"] = "ʼi", ["ဥ"] = "ʼu", ["ဨ"] = "ʼe", ["ဩ"] = "ʼo", -- dependent vowels and diacritics (1 char) ["ါ"] = "ā", ["ာ"] = "ā", ["ိ"] = "i", ["ီ"] = "iṃ", ["ဳ"] = "ī", ["ု"] = "u", ["ူ"] = "ū", ["ဲ"] = "ʸ", ["ဴ"] = "ao", ["ေ"] = "e", ["ဵ"] = "e", ["ံ"] = "ṃ", ["း"] = "ḥ", ["္"] = "¡", ["်"] = "¤", -- punctuation marks ["၊"] = ",", ["။"] = ".", -- numerals ["၀"] = "0", ["၁"] = "1", ["၂"] = "2", ["၃"] = "3", ["၄"] = "4", ["၅"] = "5", ["၆"] = "6", ["၇"] = "7", ["၈"] = "8", ["၉"] = "9", -- zero-width space (display it if it hides in a word) [u(0x200B)] = "‼", [u(0x200C)] = "‼", [u(0x200D)] = "‼", } -- ⒶⒽⓄⓂ markup for anusvara. local ahom = { ["ံⒶ"] = "အ်", ["ံⒽ"] = "ĥ", ["ံⓄ"] = "ံ", -- default action, at least for now. ["ံⓂ"] = "ံ", -- default action } local tt2 = { ["ံ[ⒶⒽⓄⓂ]"] = ahom, -- CAUTION: ahom is a table. -- vowels (2 chars) ["ဣဳ"] = "ʼī", ["ဥု"] = "ʼū", ["ေါ"] = "o", ["ော"] = "o", ["ဵု"] = "iuw", } function export.tr(text, lang, sc, debug_mode) if type(text) == "table" then -- called directly from a template text = text.args[1] end --Punctuation text = gsub(text, "( +)", u(0xa0, 0xa0).."%1") -- 2 NBSP before spaces to widen them. text = gsub(text, "<wbr/?>", " ") -- Insert spaces between words. text = gsub(text, "([ှ])(ေ?ါ?ာ?)([်])(ေ?)", function(H,b,A,a) return b..a..'h' end) text = gsub(text, ".", pre) text = gsub(text, "ဲါ", "ါဲ") -- fixed ay+aa to aa+ay; it often occurs for k, v in pairs(tt2) do text = gsub(text, k, v) end text = gsub(text, ".", tt1) text = gsub(text, "([aeiuoāīū])ʸ", "%1y") text = gsub(text, "ᵃʸ", "oa") text = gsub(text, "ᵃ([¡¤]+)", "") text = gsub(text, "([aeiuoāīū])¤", "%1k") text = gsub(text, "ᵃ([aeiuoāīū])", "%1") text = gsub(text, "ᵃ", "a") text = gsub(text, "iṃu", "iuṃ") if lang == "mnw" then --Modern Mon text = gsub(text, "ññ", "ñ") end return text end return export m78xc315rpa7x9pwy0k19dba0ykrayj মডিউল:mnw-translit/testcases 828 168821 510373 2026-06-07T12:47:32Z RedminBot 9553 [[en:Module:mnw-translit/testcases]] থেকে আনা হলো 510373 Scribunto text/plain local tests = require('Module:QFQ/UnitTests') local m_xlit = require('Module:mnw-translit') -- LETTER MODIFIER APOSTROPHE: local function modapo() return mw.ustring.char(0x02bc) end -- if select is 1, the original test from b is performed. -- if select is 2, the replacement test from b is performed. -- if select is 3, both from b are performed local select = 2 -- Summaries in tests: local vom = "vowel of minor syllable misinterpreted as vowel of major syllable" local glottal = "but transliterations do not contain glottal stop characters" local transcription = "test uses transcription instead of transliteration" local unconfirmed = "transliteration not confirmed for this word" local grave = "but transliterations do not contain grave accents" local tma = "တၟံ ends in a glottal stop" local bad_mon = "bad Mon" local mkup = "with markup" indi = { -- Per script tests a = { {"ʼa", "အ"}, {"ka", "က"}, {"kha", "ခ"}, {"ga", "ဂ"}, {"gha", "ဃ"}, {"ṅa", "င"}, {"ṅa", "ၚ"}, {"ca", "စ"}, {"cha", "ဆ"}, {"ja", "ဇ"}, {"jha", "ၛ"}, {"ña", "ည"}, {"ḍa", "ဍ"}, {"ṇa", "ဏ"}, {"na", "န"}, {"ta", "တ"}, {"ṭa", "ဋ"}, {"tha", "ထ"}, {"ṭha", "ဌ"}, {"da", "ဒ"}, {"dha", "ဓ"}, {"pa", "ပ"}, {"pha", "ဖ"}, {"ba", "ဗ"}, {"bha", "ဘ"}, {"ma", "မ"}, {"ya", "ယ"}, {"ra", "ရ"}, {"la", "လ"}, {"ḷa", "ဠ"}, {"wa", "ဝ"}, {"swa", "သွ"}, {"wa", "ဝ"}, {"jwa", "ဇွ"}, {"sa", "သ"}, {"ha", "ဟ"}, {"ṗa", "ၜ"}, {"ḅa", "ၝ"}, }, -- The tests in b as at 5 October 2022 are numbered sequentially, with replacements being -- having the same number but being distinguished by a following letter. The fields arer as follows: -- id test number -- bad What was wrong with the test. There may also be issues with the updated tests. -- gone Non-nil if it has been superseded -- rep if it is the replacement test -- b = { {"kakanon", "ကကနောန်", id=1}, {"kaklu", "ကကၠု"}, {"kaḍiup", "ကဍိုပ်"}, {"kan", "ကန်"}, {"karap", "ကရပ်"}, {"kaleṅhiuṃ", "ကလေၚ်ဟီု"}, {"kaleṅhiuṃ", "ကလေၚ်ဟီု"}, {"kawoasjaṅ", "ကဝဲသ္ဇၚ်"}, {"kasap", "ကသပ်"}, {"ket", "ကေတ်", id = 10}, {"kon", "ကောန်"}, {"konkatāk", "ကောန်ကတာ်"}, {"konkamā", "ကောန်ကမာ"}, {"konkwaḥ", "ကောန်ကွး"}, {"konkni", "ကောန်ကၞိ"}, {"konkni", "ကောန်ကၞိ"}, {"konknitiun", "ကောန်ကၞိတိုန်"}, {"konkmā", "ကောန်ကၟာ"}, {"konklaṅ", "ကောန်ကၠၚ်"}, {"konkhadeṃ", "ကောန်ခဒေံ", id = 20}, {"konkhamān", "ကောန်ခမာန်"}, {"konkhaʼah", "ကောန်ခအဟ်"}, {"kongakū", "ကောန်ဂကူ"}, {"konglu", "ကောန်ဂၠု"}, {"konciut", "ကောန်စိုတ်"}, {"koncaocaḥ", "ကောန်စဴစး"}, {"konjāt", "ကောန်ဇာတ်"}, {"konḍuṅ", "ကောန်ဍုၚ်"}, {"konḍuṅkonkwān", "ကောန်ဍုၚ်ကောန်ကွာန်"}, {"kontoa", "ကောန်တဲ", id = 30}, {"kontwaḥ", "ကောန်တွး"}, {"kontah", "ကောန်တှ်"}, {"kontmaṃ", "ကောန်တၟံ", id = 33, bad = tma, gone = 1}, {"kontma"..modapo(), "ကောန်တၟံ", id = '33a', rep = 1}, {"kontma"..modapo(), "ကောန်တၟံⒶ", id = '33b', bad = mkup, rep = 1}, {"konthaḍoa", "ကောန်ထဍဲ"}, {"konpnān", "ကောန်ပၞာန်"}, {"konpnaṃk", "ကောန်ပၞံက်", id = 36}, {"konpnaṃk", "ကောန်ပၞံⓄက်", id = '36a', bad = mkup}, {"konphyungriuh", "ကောန်ဖျုန်ဂြိုဟ်"}, {"konbnik", "ကောန်ဗၞိက်"}, {"konmat", "ကောန်မတ်"}, {"konmeʼ", "ကောန်မေအ်", id = 40}, {"konmeṃ", "ကောန်မေံ"}, {"konmheṃ", "ကောန်မှေံ"}, {"konrup", "ကောန်ရုပ်"}, {"konroatawswā", "ကောန်ရဲတဝ်သွာ"}, {"konlatāk", "ကောန်လတာ်"}, {"konliṅ", "ကောန်လိၚ်"}, {"konlok", "ကောန်လော်"}, {"konleṅ", "ကောန်လေၚ်"}, {"konlaṃk", "ကောန်လံက်", id = 49}, {"konlaṃk", "ကောန်လံⓄက်", id = '49a', bad = mkup}, {"konwut", "ကောန်ဝုတ်", id = 50}, {"konswiuṃ", "ကောန်သွီု"}, {"konhaḍoa", "ကောန်ဟဍဲ"}, {"konhadeṃ", "ကောန်ဟဒေံ"}, {"konhaʼah", "ကောန်ဟအှ်"}, {"konṅāk", "ကောန်ၚာ်"}, {"konṅāktruṃ", "ကောန်ၚာ်တြုံ"}, {"konṅākbrao", "ကောန်ၚာ်ဗြဴ"}, {"kɒ", "ကဵု", id = 58, bad = transcription, gone=1}, {"kiuw", "ကဵု", id = '58a', bad = unconfirmed, rep=1}, {"kaṃ", "ကံ"}, {"kḍip", "က္ဍိပ်", id = 60}, {"kḍiupkrao", "က္ဍိုပ်ကြဴ"}, {"kiuto", "က္တောဝ်", id = 62, bad = vom, gone = 1}, {"ktow", "က္တောဝ်", id = '62a', rep = 1}, {"ktao", "က္တဴ"}, {"kiutɒ", "က္တဵု", id = 64, bad = vom, gone = 1}, {"ktiuw", "က္တဵု", id = '64a', rep = 1}, {"kṗiup", "က္ၜိုပ်"}, {"kṗiuh", "က္ၜိုဟ်"}, {"kṗī", "က္ၜဳ"}, {"kṗao", "က္ၜဴ"}, {"bɔṅ", "က္ၜံၚ်", id = 69, bad = transcription, gone = 1}, {"kṗaṃṅ", "က္ၜံၚ်", id = '69a', bad = unconfirmed, rep = 1}, {"kṗaṃṅ", "က္ၜံⓄၚ်", id = '69b', bad = mkup, rep = 1}, {"kṗaṅkyā", "က္ၜၚ်ကျာ", id = 70}, {"kyā", "ကျာ"}, {"kyow", "ကျောဝ်"}, {"krāt", "ကြာတ်"}, {"krukkroṃ", "ကြုက်ကြောံ"}, {"krukkhakiuw", "ကြုက်ခကဵု"}, {"krukya", "ကြုက်ယျ", id = 76, bad = 'yy is digraph - clear y', gone = 1}, {"krukyya", "ကြုက်ယျ", id = '76a', rep = 1}, {"krukhakiuw", "ကြုက်ဟကဵု"}, {"krut", "ကြုတ်"}, {"krao", "ကြဴ"}, {"kwāṅgwī", "ကွာင်ဂွဳ", id = 80}, {"kwāṅthakiuw", "ကွာင်ထကဵု"}, {"kwākgāy", "ကွာ်ဂါဲ"}, {"kwāktarao", "ကွာ်တရဴ"}, {"kwākweṅ", "ကွာ်ဝေၚ်"}, {"kwāṅgwī", "ကွာၚ်ဂွဳ"}, {"kwiṅkwāk", "ကွိင်ကွာ်"}, {"kwen", "ကွေန်"}, {"kwoa", "ကွဲ"}, {"kiunɛp", "ကၞိပ်", id = 89, bad = vom, gone = 1}, {"knip", "ကၞိပ်", id = '89a', rep = 1}, {"kmak", "ကၟက်", id = 90}, {"kiumot", "ကၟတ်", id = 91, bad = vom, gone = 1}, {"kmat", "ကၟတ်", id = '91a', bad = unconfirmed, rep = 1}, {"kiumaoˀ", "ကၟု", id = 92, bad = vom, gone = 1}, {"kmu", "ကၟု", id = '92a', rep = 1}, {"klaˀ", "ကၠ", id = 93, bad = glottal, gone = 1}, {"kla", "ကၠ", id = '93a', repo = 1}, {"klandāy", "ကၠန်ဒါဲ"}, {"klah", "ကၠဟ်"}, {"klāt", "ကၠာတ်"}, {"kluṅ", "ကၠုၚ်"}, {"kleṅti", "ကၠေၚ်တိ"}, {"klɜ", "ကၠဵု", id = 99, bad = transcription, gone = 1}, {"kliuw", "ကၠဵု", id = '99a', rep = 1}, {"khaciut", "ခစိုတ်", id = 100}, {"khatāṃ", "ခတာံ"}, {"khataṃ", "ခတံ"}, {"khamāy", "ခမာဲ"}, {"khamhāy", "ခမှာဲ"}, {"khɒh", "ခိုဟ်", id = 105, bad = transcription, gone = 1}, {"khiuh", "ခိုဟ်", id = '105a', bad = unconfirmed, rep = 1}, {"khiuhca", "ခိုဟ်စ"}, {"khāy", "ခဲါ"}, {"kiudɔm", "ခ္ဍံ", id = 108, bad = vom, gone = 1}, {"khḍaṃ", "ခ္ဍံ", id = '108a', bad = unconfirmed, rep = 1}, {"khɔp", "ချပ်", id = 109, bad = transcription, gone = 1}, {"khyap", "ချပ်", id = '109a', rep = 1}, {"khɔh", "ချဟ်", id = 110, bad = transcription, gone = 1}, {"khyah", "ချဟ်", id = '110a', bad = unconfirmed, rep = 1}, {"khyiuṃ", "ချီု"}, {"khoa", "ချဲ", id = 112, bad = transcription, gone = 1}, {"khyoa", "ချဲ", id = '112a', bad = unconfirmed, rep = 1}, {"khrah", "ခြး", id = 113, bad = transcription, gone = 1}, {"khraḥ", "ခြး", id = '113a', rep = 1}, {"kiubet", "ခၜေတ်", id = 114, bad = vom, gone = 1}, {"khaṗet", "ခၜေတ်", id = '114a', bad = unconfirmed, rep = 1}, {"khmāy", "ခၟါဲ"}, {"khmāy", "ခၟာဲ"}, {"gaciut", "ဂစိုတ်"}, {"hiucem", "ဂစေံ", id = 118, bad = vom, gone = 1}, {"gaceṃ", "ဂစေံ", id = '118a', rep = 1}, {"gajoṃ", "ဂဇေါံ"}, {"gajaṃthawāk", "ဂဇံထဝါဲ", bad = 'looks corrupt', id = 120}, {"hiutɔ", "ဂတဝ်", id = 121, bad = vom, gone = 1}, {"gataw", "ဂတဝ်", id = '121a', bad = unconfirmed, rep = 1}, {"gatāgluṅ", "ဂတာဂၠုၚ်"}, {"gatupeṅ", "ဂတုပေၚ်"}, {"gatuʔiut", "ဂတုအိုတ်", id = 124, bad = glottal, gone = 1}, {"gatu"..modapo().."iut", "ဂတုအိုတ်", id = '124a', bad = unconfirmed, gone = 1}, {"gataṃ", "ဂတံ"}, {"gòt", "ဂတ်", id = 126, bad = grave, gone = 1}, {"gat", "ဂတ်", id = '126a', bad = unconfirmed, rep = 1}, {"gamliuṅ", "ဂမၠိုၚ်"}, {"galiuṅ", "ဂလိုၚ်"}, {"hiutaoˀ", "ဂိတု", id = 129, bad = vom, gone = 1}, {"gitu", "ဂိတု", id = '129a', bad = unconfirmed, rep = 1}, {"giuṃ", "ဂီု", id = 130}, {"gèt", "ဂေတ်", id = 131, bad = grave, gone = 1}, {"get", "ဂေတ်", id = '131a', bad = unconfirmed, rep = 1}, {"gòk", "ဂံက်", id = 132, bad = grave, gone = 1}, {"gaṃk", "ဂံက်", id = '132a', bad = unconfirmed, rep = 1}, {"gaṃk", "ဂံⓄက်", id = '132b', bad = mkup, rep = 1}, {"gɛ̀h", "ဂး", id = 133, bad = grave, gone = 1}, {"gaḥ", "ဂး", id = '133a', rep = 1}, {"càṅ", "ဂျိုၚ်", id = 134, bad = grave, gone = 1}, {"gyiuṅ", "ဂျိုၚ်", id = '134a', bad = unconfirmed, rep = 1}, {"grɜ̀p", "ဂြိုပ်", id = 135, bad = grave, gone = 1}, {"griup", "ဂြိုပ်", id = '135a', rep = 1}, {"grɜ̀h", "ဂြိုဟ်", id = 136, bad = grave, gone = 1}, {"griuh", "ဂြိုဟ်", id = '136a', bad = unconfirmed, rep = 1}, {"gràṅ", "ဂြိုၚ်", id = 137, bad = grave, gone = 1}, {"griuṅ", "ဂြိုၚ်", id = '137a', bad = unconfirmed, rep = 1}, {"grɛ̀aṅ", "ဂြၚ်", id = 138, bad = grave, gone = 1}, {"graṅ", "ဂြၚ်", id = '138a', bad = unconfirmed, rep = 1}, {"graṅciṅ", "ဂြၚ်စိၚ်"}, {"graṅtiṃ", "ဂြၚ်တီ", id = 140}, {"gwak", "ဂွက်"}, {"gwàt", "ဂွါတ်", id = 142, bad = grave, gone = 1}, {"gwāt", "ဂွါတ်", id = '142a', bad = unconfirmed, rep = 1}, {"gwùˀ", "ဂွု", id = 143, bad = grave, gone = 1}, {"gwu", "ဂွု", id = '143a', bad = unconfirmed, rep = 1}, {"gahle", "ဂှ်လေ", id = 144, bad = bad_mon, gone = 1}, {"gahlew", "ဂှ်လေဝ်", id = '144a', rep = 1}, -- "ghlew" can be found in exx. for လေဝ်. {"gahlekiuṃ", "ဂှ်လေကီု", id = 145, bad = bad_mon, gone = 1}, {"gahlewkiuṃ", "ဂှ်လေဝ်ကီု", id = '145a', bad = unconfirmed, rep = 1}, {"gnā", "ဂၞာ"}, {"gnākḍiup", "ဂၞာက္ဍိုပ်"}, {"gni", "ဂၞိ"}, {"gnī", "ဂၞဳ"}, {"gnaokit", "ဂၞဴကိတ်", id = 150}, {"gnaokwāk", "ဂၞဴကွာ်"}, {"gnaoḍot", "ဂၞဴဍောတ်"}, {"gnaopu", "ဂၞဴပု"}, {"gnaobiun", "ဂၞဴဗိုန်"}, {"gnaoliuṃ", "ဂၞဴလီု"}, {"gnaoʼā", "ဂၞဴအာ"}, {"glā", "ဂၠါ"}, {"gliṅ", "ဂၠိင်"}, {"gliuṅ", "ဂၠိုၚ်"}, {"gliuṅglaṅ", "ဂၠိုၚ်ဂၠၚ်", id = 160}, {"gliuṅta", "ဂၠိုၚ်တ"}, {"gliuṅtiun", "ဂၠိုၚ်တိုန်"}, {"gliuṅleh", "ဂၠိုၚ်လေဟ်"}, {"gliṅ", "ဂၠိၚ်"}, {"gliṅjṅoa", "ဂၠိၚ်ဇ္ၚဲ"}, {"gliṅsṅoa", "ဂၠိၚ်သ္ၚဲ"}, {"glɜ̀ṅ", "ဂၠုၚ်", id = 167, bad = grave, gone = 1}, {"gluṅ", "ဂၠုၚ်", id = '167a', rep = 1}, {"gluṅgadiuʼ", "ဂၠုၚ်ဂဒိုအ်"}, {"gluṅtoa", "ဂၠုၚ်တဲ"}, {"gluṅpriuṅ", "ဂၠုၚ်ပြိုၚ်", id = 170}, {"gleṃ", "ဂၠေံ"}, {"glòṅ", "ဂၠံၚ်", id = 172, bad = grave, gone = 1}, {"glaṃṅ", "ဂၠံၚ်", id = '172a', bad = unconfirmed, rep = 1}, {"glaṃṅ", "ဂၠံⓄၚ်", id = '172b', bad = mkup, rep = 1}, {"cɛˀ", "စ", id = 173, bad = transcription, gone = 1}, {"ca", "စ", id = '173a', rep = 1}, {"can", "စန်"}, {"capgluṅ", "စပ်ဂၠုၚ်"}, {"ciutkleṃ", "စိုတ်ကၠေံ"}, {"ciutkhiuh", "စိုတ်ခိုဟ်"}, {"ciutgliṅ", "စိုတ်ဂၠိၚ်"}, {"ciutgleṃ", "စိုတ်ဂၠေံ"}, {"ciutḍot", "စိုတ်ဍောတ်", id = 180}, {"ciutprah", "စိုတ်ပြဟ်"}, {"ciutliuṃ", "စိုတ်လီု"}, {"ciutʼon", "စိုတ်အောန်"}, {"coa", "စဲ"}, {"caṅ", "စံၚ်", id = 185, bad = transcription, gone = 1}, {"caṃṅ", "စံၚ်", id = '185a', bad = unconfirmed, rep = 1}, {"caṃṅ", "စံⓄၚ်", id = '185b', bad = mkup, rep = 1}, {"cah", "စး", id = 186, bad = transcription, gone = 1}, {"caḥ", "စး", id = '186a', bad = unconfirmed, rep = 1}, {"cah", "စှ်"}, {"chap", "ဆပ်"}, {"chāṃ", "ဆာံ"}, {"chiṃ", "ဆီ", id = 190}, {"chuˀ", "ဆု", id = 191, bad = transcription, gone = 1}, {"chu", "ဆု", id = '191a', bad = unconfirmed, rep = 1}, {"chuṅ", "ဆုၚ်"}, {"jɛ̀ak", "ဇက်", id = 193, bad = transcription, gone = 1}, {"jak", "ဇက်", id = '193a', bad = unconfirmed, rep = 1}, {"jamnok", "ဇမၞော်"}, {"jamliṅ", "ဇမၠိၚ်"}, {"jaliṅ", "ဇလိၚ်"}, {"jɜ̀t", "ဇိုတ်", id = 197, bad = grave, gone = 1}, {"jiut", "ဇိုတ်", id = '197a', bad = unconfirmed, rep = 1}, {"jàṅ", "ဇိုၚ်", id = 198, bad = grave, gone = 1}, {"jiuṅ", "ဇိုၚ်", id = '198a', rep = 1}, {"jiuṅṗī", "ဇိုၚ်ၜဳ"}, {"jòiṅ", "ဇိၚ်", id = 200, bad = grave, gone = 1}, {"jiṅ", "ဇိၚ်", id = '200a', bad = unconfirmed, rep = 1}, {"jɜ̀k", "ဇုက်", id = 201, bad = grave, gone = 1}, {"juk", "ဇုက်", id = '201a', bad = unconfirmed, rep = 1}, {"jùt", "ဇုတ်", id = 202, bad = grave, gone = 1}, {"jut", "ဇုတ်", id = '202a', rep = 1}, {"jòa", "ဇဲ", id = 203, bad = grave, gone = 1}, {"joa", "ဇဲ", id = '203a', bad = unconfirmed, rep = 1}, {"jɜ̀", "ဇဵု", id = 204, bad = grave, gone = 1}, {"jiuw", "ဇဵု", id = '204a', bad = unconfirmed, rep = 1}, {"jùm", "ဇြုံ", id = 205, bad = grave, gone = 1}, {"jruṃ", "ဇြုံ", id = '205a', rep = 1}, {"jruṃjāt", "ဇြုံဇာတ်"}, {"jruṃjātgayāṅ", "ဇြုံဇာတ်ဂယာၚ်"}, {"jruṃjāttaṅ", "ဇြုံဇာတ်တၚ်"}, {"jruṃjiuwtṅa", "ဇြုံဇဵုတ္ၚ"}, {"jruṃḍāk", "ဇြုံဍာ်", id = 210}, {"jruṃbuy", "ဇြုံဗုဲ"}, {"jruṃblow", "ဇြုံဗၠောဝ်"}, {"jwò", "ဇွောဝ်", id = 213, bad = grave, gone = 1}, {"jwow", "ဇွောဝ်", id = '213a', bad = unconfirmed, rep = 1}, {"jaṅoa", "ဇၚဲ", id = 214, bad = "Intobesa objects, so 528 created"}, {"jnok", "ဇၞော်"}, {"jnokmow", "ဇၞော်မောဝ်"}, {"jliṅ", "ဇၠိၚ်"}, {"ñàt", "ညာတ်", id = 218, bad = grave, gone = 1}, {"ñāt", "ညာတ်", id = '218a', rep = 1}, {"ñātket", "ညာတ်ကေတ်"}, {"ñɛ̀htɔʔ", "ညးတံ", id = 220, bad = grave, gone = 1}, {"ñaḥta"..modapo(), "ညးတံ", id = '220a', bad = unconfirmed, rep = 1}, {"ñaḥta"..modapo(), "ညးတံⒶ", id = '220b', bad = mkup, rep = 1}, -- Another pair to be treated is corrected/wrong {"ñaḥ", "ညး", id = 221, rep = 1}, {"ñɛ̀h", "ညး", id = 222, bad = grave, gone = 1}, {"ḍapdao", "ဍာပ်ဍဴ", id = 223, bad = 'based on a mistranscribed transcription', gone = 1}, {"ḍāpḍao", "ဍာပ်ဍဴ", id = '223a', rep = 1}, {"ḍākkiulɒˀ", "ဍာ်ကၠောံ", id = 224, bad = vom, gone = 1}, {"ḍākklo"..modapo(), "ဍာ်ကၠောံ", id = '224a', bad = unconfirmed, rep = 1}, {"ḍākklo"..modapo(), "ဍာ်ကၠောံⒶ", id = '224b', bad = mkup, rep = 1}, {"ḍākkhrɛk", "ဍာ်ခြက်", id = 225, bad = '2nd syllable used transcription', gone = 1}, {"ḍākkhrak", "ဍာ်ခြက်", id = '225a', bad = unconfirmed, rep = 1}, {"ḍākmìt", "ဍာ်မိတ်", id = 226, bad = grave, gone = 1}, {"ḍākmit", "ဍာ်မိတ်", id = '226a', rep = 1}, {"ḍāk", "ဍာ်"}, {"ḍiup", "ဍိုပ်"}, {"ḍɒpdao", "ဍိုပ်ဍဴ", id = 229, bad = "1st syllable used transcription", gone = 1}, {"ḍiupḍao", "ဍိုပ်ဍဴ", id = '229a', bad = unconfirmed, rep = 1}, {"ḍɜk", "ဍုက်", id = 230, bad = transcription, gone = 1}, {"ḍuk", "ဍုက်", id = '230a', bad = unconfirmed, rep = 1}, {"ḍut", "ဍူတ်", id = 231, bad = transcription, gone = 1}, {"ḍūt", "ဍူတ်", id = '231a', bad = unconfirmed, rep = 1}, {"ḍeak", "ဍေက်", id = 232, bad = transcription, gone = 1}, {"ḍek", "ဍေက်", id = '232a', bad = unconfirmed, rep = 1}, {"ḍot", "ဍောတ်"}, {"ḍɛ̀htɔʔ", "ဍေံတံ", id = 234, bad = grave, gone = 1}, {"ḍeĥta"..modapo(), "ဍေံတံ", id = '234a', bad = unconfirmed, rep = 1}, {"ḍeĥta"..modapo(), "ဍေံⒽတံⒶ", id = '234b', bad = mkup, rep = 1}, {"ḍɛ̀h", "ဍေံ", id = 235, bad = grave, gone = 1}, {"ḍeĥ", "ဍေံ", id = '235a', bad = unconfirmed, rep = 1}, {"ḍeĥ", "ဍေံⒽ", id = '235b', bad = mkup, rep = 1}, {"ḍeṃ", "ဍေံ", id = 236}, {"ḍeṃ", "ဍေံⓂ", id = '236a', bad = mkup}, {"ṇaṃ", "ဏံ"}, {"tɛk", "တက်", id = 238, bad = transcription, gone = 1}, {"tak", "တက်", id = '238a', rep = 1}, {"tarap", "တရပ်"}, {"tɔeˀ", "တိ", id = 240, bad = transcription, gone = 1}, {"ti", "တိ", id = '240a', rep = 1}, {"tɔeˀròtchan", "တိရစ္ဆာန်", id = 241, bad = transcription, gone = 1}, {"tiracchān", "တိရစ္ဆာန်", id = '241a', bad = unconfirmed, rep = 1}, {"tiṅkyāṃ", "တိၚ်ကျာံ"}, {"tɛm", "တီ", id = 243, bad = transcription, gone = 1}, {"tiṃ", "တီ", id = '243a', rep = 1}, {"tiṃgun", "တီဂုန်"}, {"tiṃjaku", "တီဇကု"}, {"tiṃñāt", "တီညာတ်"}, {"tokchaʔ", "တော်ဆ", id = 247, bad = glottal, gone = 1}, {"tokcha", "တော်ဆ", id = '247a', bad = unconfirmed, rep = 1}, {"teṃ", "တေံ"}, {"toa", "တဲ"}, {"toajwi", "တဲဇွိ", id = 250}, {"taṃ", "တံ"}, {"ṅoa", "တ္ၚဲ", id = 252, bad = transcription, gone = 1}, {"tṅoa", "တ္ၚဲ", id = '252a', rep = 1}, {"tṅoaceṅ", "တ္ၚဲစေၚ်"}, {"tṅoatiṅ", "တ္ၚဲတိၚ်"}, {"tṅoapliut", "တ္ၚဲပၠိုတ်"}, {"ṅɔk", "တ္ၚံက်", id = 256, bad = transcription, gone = 1}, {"tṅaṃk", "တ္ၚံက်", id = '256a', bad = unconfirmed, rep = 1}, {"tṅaṃk", "တ္ၚံⓄက်", id = '256b', bad = mkup, rep = 1}, {"traoh", "တြုံ", id = 257, bad = transcription, gone = 1}, {"truĥ", "တြုံ", id = '257a', rep = 1}, {"truĥ", "တြုံⒽ", id = '257b', bad = mkup, rep = 1}, --Treat the next pair as wrong test and correct test. {"tiurem", "တြေံ", id = 258, bad = vom, gone = 1}, {"treṃ", "တြေံ", id = 259, rep = 1}, -- Treat the next pair as wrong test and correct test. {"twaik", "တွာ်", id = 260, bad = transcription, gone = 1}, {"twāk", "တွာ်", id = 261, rep = 1}, {"twaḥ", "တွး"}, {"tɔh", "တှ်", id = 263, bad = transcription, gone = 1}, {"tah", "တှ်", id = '263a', rep = 1}, {"tmaʼgacaḥ", "တၟအ်ဂစး"}, {"tiumɔeˀ", "တၟိ", id = 265, bad = vom, gone = 1}, {"tmi", "တၟိ", id = '265a', rep = 1}, {"tmaṃ", "တၟံ", id = 266, bad = tma, gone = 1}, {"tmaṃ", "တၟံ", id = '266a', bad = tma, rep = 1}, {"tmaṃ", "တၟံ", id = '266b', bad = tma, rep = 1}, {"tmaṃgacaḥ", "တၟံဂစး", id = 267, bad = tma, gone = 1}, {"tma"..modapo().."gacaḥ", "တၟံဂစး", id = '267a', rep = 1}, {"tma"..modapo().."gacaḥ", "တၟံⒶဂစး", id = '267b', bad = mkup, rep = 1}, {"tmaṃgaphiuw", "တၟံဂဖဵု", id = 268, bad = tma, gone = 1}, {"tma"..modapo().."gaphiuw", "တၟံဂဖဵု", id = '268a', rep = 1}, {"tma"..modapo().."gaphiuw", "တၟံⒶဂဖဵု", id = '268b', bad = mkup, rep = 1}, {"tmaṃhacaḥ", "တၟံခစး", id = 269, bad = tma, gone = 1}, -- {"tma"..modapo().."hacaḥ", "တၟံဟစး", id = '269a', bad = bad_mon, rep = 1}, -- {"tma"..modapo().."hacaḥ", "တၟံⒶဟစး", id = '269b', bad = bad_mon.."; "..mkup, rep = 1}, {"tma"..modapo().."khacaḥ", "တၟံခစး", id = '269c', bad = unconfirmed, rep = 1}, {"tma"..modapo().."khacaḥ", "တၟံⒶခစး", id = '269d', bad = mkup, rep = 1}, {"tmaṃhapiuw", "တၟံခပဵု", id = 270, bad = tma, gone = 1}, -- {"tma"..modapo().."hapiuw", "တၟံဟပဵု", id = '270a', bad = bad_mon, rep = 1}, -- {"tma"..modapo().."hapiuw", "တၟံⒶဟပဵု", id = '270b', bad = mkup.."; "..mkup, rep = 1}, {"tma"..modapo().."khapiuw", "တၟံခပဵု", id = '270c', bad = unconfirmed, rep = 1}, {"tma"..modapo().."khapiuw", "တၟံⒶခပဵု", id = '270d', bad = mkup, rep = 1}, {"tla", "တၠ"}, {"tiulɛt", "တၠိတ်", id = 272, bad = vom, gone = 1}, {"tlit", "တၠိတ်", id = '272a', bad = unconfirmed, rep = 1}, {"tlɔiṅ", "တၠောၚ်", id = 273, bad = transcription, gone = 1}, {"tloṅ", "တၠောၚ်", id = '273a', rep = 1}, {"theaṅ", "ထေၚ်", id = 274, bad = transcription, gone = 1}, {"theṅ", "ထေၚ်", id = '274a', rep = 1}, {"thɒˀ", "ထွံ", id = 275, bad = transcription, gone = 1}, {"thwa"..modapo(), "ထွံ", id = '275a', bad = unconfirmed, rep = 1}, {"thwa"..modapo(), "ထွံⒶ", id = '275b', bad = mkup, rep = 1}, {"tiunoik", "ထၞိက်", id = 276, bad = vom, gone = 1}, {"thnik", "ထၞိက်", id = '276a', bad= uinconfirmed, rep = 1}, {"diucòˀ", "ဒဇံ", id = 277, bad = transcription, gone = 1}, {"daja"..modapo(), "ဒဇံ", id = '277a', bad = unconfirmed, rep = 1}, {"daja"..modapo(), "ဒဇံⒶ", id = '277b', bad = mkkup, rep = 1}, {"diupɒt", "ဒပိုတ်", id = 278, bad = transcription, gone = 1}, {"dapiut", "ဒပိုတ်", id = '278a', rep = 1}, {"diurɜ̀h", "ဒရိုဟ်", id = 279, bad = transcription, gone = 1}, {"dariuh", "ဒရိုဟ်", id = '279a', bad = unconfirmed, rep = 1}, {"dunkarāp", "ဒုန်ကရာပ်", id = 280}, {"dunkasaṅ", "ဒုန်ကသၚ်"}, {"dunkrāp", "ဒုန်ကြာပ်"}, {"dunkhyū", "ဒုန်ချူ"}, {"dundhala", "ဒုန်ဓလ"}, {"dunʼasaṅ", "ဒုန်အသၚ်"}, {"tɜ̀", "ဒဵု", id = 286, bad = transcription, gone = 1}, {"diuw", "ဒဵု", id = 286, bad = unconfirmed, rep = 1}, {"tɛ̀ha", "ဒးအာ", id = 287, bad = transcription, gone = 1}, {"daḥ"..modapo().."ā", "ဒးအာ", id = '287a', bad = transcription, gone = 1}, {"daḥ", "ဒး"}, {"daḥkmik", "ဒးကၟိက်"}, {"daḥkhyāṃ", "ဒးချာံ", id = 290}, {"daḥciut", "ဒးစိုတ်"}, {"daḥchāṃ", "ဒးဆာံ"}, {"daḥduh", "ဒးဒုဟ်"}, {"daḥpmik", "ဒးပၟိက်"}, {"daḥphacap", "ဒးဖစပ်"}, {"daḥphacap", "ဒးဖစပ်"}, {"daḥbacap", "ဒးဗစပ်"}, {"daḥbacap", "ဒးဗစပ်"}, {"dwaḥ", "ဒွး"}, {"dah", "ဒှ်", id = 300}, {"dliṅ", "ဒၠိၚ်"}, {"dlao", "ဒၠဴ"}, {"nā", "နာ"}, {"num", "နုမ်"}, {"nao", "နဴ"}, {"naobiun", "နဴဗိုန်"}, {"nwaṃkiuwciut", "နွံကဵုစိုတ်", id = 307}, {"nwaṃkiuwciut", "နွံⓂကဵုစိုတ်", id = '307a', bad = mkup}, {"nwaṃciut", "နွံစိုတ်"}, {"nwaṃpiun", "နွံပိုန်"}, {"nwaṃmuknwaṃmat", "နွံမုက်နွံမတ်", id = 310}, {"nwaṃyamu", "နွံယမု"}, {"nwaṃymu", "နွံယၟု"}, {"paḍoa", "ပဍဲ"}, {"pateṅ", "ပတေင်"}, {"pap", "ပပ်"}, {"piurom", "ပရောမ်", id = 316, bad = vom, gone = 1}, {"parom", "ပရောမ်", id = '316a', bad = unconfirmed, rep = 1}, {"piulaṅ", "ပလိုၚ်", id = 317, bad = vom, gone = 1}, {"paliuṅ", "ပလိုၚ်", id = '317a', rep = 1}, {"pa", "ပဝ်", id = 318, bad = "User input error", gone = 1}, {"paw", "ပဝ်", id = '318a', rep = 1}, {"pāpaˀ", "ပါပ", id = 319, bad = transcription, gone = 1}, {"pāpa", "ပါပ", id = '319a', bad = unconfirmed, rep = 1}, {"pāpa", "ပါပါ", id = 320, bad = transcription, gone = 1}, {"pāpā", "ပါပါ", id = '320a', rep = 1}, {"pāik", "ပါ်", id = 321, bad = transcription, gone = 1}, {"pāk", "ပါ်", id = '321a', bad = unconfirmed, rep = 1}, {"pāiṅ", "ပါၚ်", id = 322, bad = transcription, gone = 1}, {"pāṅ", "ပါၚ်", id = '322a', rep = 1}, {"pāṅknak", "ပါၚ်ကၞက်"}, {"pāṅphao", "ပါၚ်ဖဴ"}, {"pi", "ပိ"}, {"piuy", "ပိုဲ"}, {"puṅ", "ပုၚ်"}, {"pūkleh", "ပူကၠေဟ်"}, {"pūti", "ပူတိ"}, {"pūdak", "ပူဒက်", id = 330}, {"pūpā", "ပူပါ"}, {"pūbiuk", "ပူဗိုက်"}, {"pūbiun", "ပူဗိုန်"}, {"pūlaṅet", "ပူလၚေတ်"}, {"poṅ", "ပေါၚ်"}, {"pɔiṅ", "ပေၚ်", id = 336, bad = transcription, gone = 1}, {"peṅ", "ပေၚ်", id = '336a', rep = 1}, {"peṅkḍat", "ပေၚ်က္ဍတ်"}, {"peṅciut", "ပေၚ်စိုတ်"}, {"peṅbaw", "ပေၚ်ဗဝ်"}, {"peṅsū", "ပေၚ်သူ", id = 340}, {"peṅʼā", "ပေၚ်အာ"}, {"paṃṅgluṅ", "ပံၚ်ဂၠုၚ်", id = 342}, {"paṃṅgluṅ", "ပံⓄၚ်ဂၠုၚ်", id = '342a', bad = mkup}, {"kao", "ပ္ကဴ", id = 343, bad = transcription, gone = 1}, {"pkao", "ပ္ကဴ", id = '343a', bad = unconfirmed, rep = 1}, {"pḍoakiuw", "ပ္ဍဲကဵု"}, {"piutɔiṅ", "ပ္တေၚ်", id = 345, bad = vom, gone = 1}, {"pteṅ", "ပ္တေၚ်", id = '345a', bad = unconfirmed, rep = 1}, {"piuṅao", "ပ္ၚူ", id = 346, bad = vom, gone = 1}, {"pṅū", "ပ္ၚူ", id = 346, bad = unconfirmed, rep = 1}, {"prap", "ပြပ်"}, {"prah", "ပြဟ်"}, {"pre", "ပြေ"}, {"piureˀ", "ပြေံ", id = 350, bad = vom, gone = 1}, {"pre"..modapo(), "ပြေံ", id = '350a', bad = unconfirmed, rep = 1}, {"pre"..modapo(), "ပြေံⒶ", id = '350b', bad = mkup, rep = 1}, {"kiumot", "ပၟတ်", id = 351, bad = vom, gone = 1}, {"pmat", "ပၟတ်", id = '351a', bad = unconfirmed, rep = 1}, {"phataṃ", "ဖတံ"}, {"hiuram", "ဖရာံ", id = 353, bad = vom, gone = 1}, {"pharāṃ", "ဖရာံ", id = '353a', bad = unconfirmed, rep = 1}, {"phɔik", "ဖေက်", id = 354, bad = transcription, gone = 1}, {"phek", "ဖေက်", id = '354a', bad = unconfirmed, rep = 1}, {"hiuɔˀ", "ဖ္အံ", id = 355, bad = vom, gone = 1}, {"ph"..modapo().."a"..modapo(), "ဖ္အံ", bad = unconfirmed, id = '355a', rep = 1}, {"ph"..modapo().."a"..modapo(), "ဖ္အံⒶ", bad = mkup, id = '355b', rep = 1}, {"phyihciut", "ဖျိဟ်စိုတ်"}, {"phyun", "ဖျုန်"}, {"phyehciut", "ဖျေဟ်စိုတ်"}, {"biutaˀ", "ဗတ", id = 359, bad = vom, gone = 1}, {"bata", "ဗတ", id = '359a', bad = unconfirmed.."; Intobesa objects, so 529 created", rep = 1}, {"batāṃ", "ဗတာံ", id = 360}, {"biutak", "ဗတိုက်", id = 361, bad = vom, gone = 1}, {"batiuk", "ဗတိုက်", id = '361a', bad = unconfirmed, rep = 1}, {"bataṃ", "ဗတံ", id = 362, bad = bad_mon, gone = 1}, {"btaṃ", "ဗ္တံ", id = '362a', rep = 1}, {"bùˀ", "ဗု", id = 363, bad = transcription, gone = 1}, {"bu", "ဗု", id = '363a', rep = 1}, {"bɜ̀ṅ", "ဗုၚ်", id = 364, bad = transcription, gone = 1}, {"buṅ", "ဗုၚ်", id = '364a', bad = unconfirmed, rep = 1}, {"bīmhaṅ", "ဗဳမှၚ်"}, {"biuw", "ဗဵု"}, {"biuket", "ဗ္ကေတ်", id = 367, bad = vom, gone = 1}, {"bket", "ဗ္ကေတ်", id = '367a', bad = unconfirmed, rep = 1}, {"baca", "ဗ္စ", id = 368, bad = "transliteration misspelt", gone = 1}, {"bca", "ဗ္စ", id = '368a', bad = unconfirmed, rep = 1}, {"biutɔe", "ဗ္တဳ", id = 369, bad = vom, gone = 1}, {"btī", "ဗ္တဳ", id = '369a', rep = 1}, {"biutɔm", "ဗ္တံ", id = 370, bad = vom, gone = 1}, {"btaṃ", "ဗ္တံ", id = '370a', rep = 1}, {"btaṃsagā", "ဗ္တံသဂါ"}, {"bdaḥ", "ဗ္ဒး"}, {"byùˀ", "ဗျု", id = 373, bad = grave, gone = 1}, {"byu", "ဗျု", id = '373a', rep = 1}, {"brātkwa", "ဗြာတ်ကွ"}, {"brātḍāktah", "ဗြာတ်ဍာ်တှ်"}, {"brātma", "ဗြာတ်မ"}, {"brātsla", "ဗြာတ်သၠ"}, {"bròa", "ဗြဲ", id = 378, bad = grave, gone = 1}, {"broa", "ဗြဲ", id = '378a', bad = unconfirmed, rep = 1}, {"brɛ̀a", "ဗြဴ", id = 379, bad = grave, gone = 1}, {"brao", "ဗြဴ", id = '379a', rep = 1}, {"bɛ̀htɔʔ", "ဗှ်ေတံ", id = 380, bad = grave.."; corrected by b-383", gone = 1}, -- {"behta"..modapo(), "ဗှ်ေတံ", id = '380a', bad = unconfirmed, rep = 1}, -- Next two interpreted as corrected/uncorrected pair {"beh", "ဗှ်ေ", id = 381, rep = 1}, {"bɛ̀h", "ဗှ်ေ", id = 382, bad = grave, gone = 1}, {"behtaʼ", "ဗှ်ေတံ", id = 383, bad = "corrects b-380"}, {"behtaʼ", "ဗှ်ေတံⒶ", id = '383a', bad = mkup}, {"blɛ̀aṅ", "ဗၠေၚ်", id = 384, bad = grave, gone = 1}, {"bleṅ", "ဗၠေၚ်", id = '384a', bad = unconfirmed, rep = 1}, {"bhɛ̀ʔpiulaʔ", "ဘပၠ", id = 385, bad = glottal, gone = 1}, {"bhapla", "ဘပၠ", id = '385a', bad = uunconfirmed, rep = 1}, {"mɛ̀ʔhiune", "မဗၞး", id = 386, bad = glottal, gone = 1}, {"mabnaḥ", "မဗၞး", id = '386a', bad = unconfirmed, rep = 1}, {"mɛ̀ˀ", "မ", id = 387, bad = glottal, gone = 1}, {"ma", "မ", id = '387a', rep = 1}, {"mòt", "မတ်", id = 388, bad = grave, gone = 1}, {"mat", "မတ်", id = '388a', rep = 1}, -- Jenny thesis p6 {"matciṅ", "မတ်စိၚ်"}, {"matbroa", "မတ်ဗြဲ", id = 390}, {"mìˀ", "မိ", id = 391, bad = glottal, gone = 1}, {"mi", "မိ", id = '391a', rep = 1}, {"mùh", "မိုဟ်", id = 392, bad = grave, gone = 1}, {"miuh", "မိုဟ်", id = '392a', bad = unconfirmed, rep = 1}, {"mèmè", "မေမေ", id = 393, bad = grave, gone = 1}, {"meme", "မေမေ", id = '393a', bad = uunconfirmed, rep = 1}, {"mɛ̀a", "မဴ", id = 394, bad = grave, gone = 1}, {"mao", "မဴ", id = '394a', bad = unconfirmed, rep = 1}, {"mgaḥ", "မ္ဂး"}, {"piurùn", "မြုန်", id = 396, bad = vom, gone = 1}, {"mrun", "မြုန်", id = '396a', bad = unconfirmed, rep = 1}, {"mwoa", "မွဲ"}, {"mòiṅ", "မှိၚ်", id = 398, bad = transcription, gone = 1}, {"mhiṅ", "မှိၚ်", id = '398a', bad = unconfirmed, rep = 1}, {"hmɛṅ", "မှၚ်", id = 399, bad = transcription, gone = 1}, {"mhaṅ", "မှၚ်", id = '399a', rep = 1}, {"nìh", "မၞိဟ်", id = 400, bad = transcription, gone = 1}, {"mnih", "မၞိဟ်", id = '400a', rep = 1}, {"mnuṃ", "မၞုံ"}, {"mnaḥ", "မၞး"}, {"mnaḥtaṃ", "မၞးတံ"}, {"yɛ̀ak", "ယက်", id = 404, bad = transcription, gone = 1}, {"yak", "ယက်", id = '404a', bad = unconfirmed, rep = 1}, {"yiuṃ", "ယီု"}, {"yiuṃtiun", "ယီုတိုန်"}, {"yùṅ", "ယုၚ်", id = 407, bad = grave, gone = 1}, {"yuṅ", "ယုၚ်", id = '407a', bad = unconfirmed, rep = 1}, {"yoakaloṃkalen", "ယဲကလောံကလေန်"}, {"yoakāla", "ယဲကာလ", id = 409, bad = "Intobesa disbelieves, so commoner 530 added."}, {"yoaklaṅkmat", "ယဲကၠၚ်ကၟတ်", id = 410}, {"yoakhāydut", "ယဲခာဲဒုတ်"}, {"yoagnao", "ယဲဂၞဴ"}, {"yoaciut", "ယဲစိုတ်"}, {"yoacok", "ယဲစေါ်"}, {"yoataṇiṃ", "ယဲတဏီ"}, {"yoamat", "ယဲမတ်"}, {"yoamhat", "ယဲမှတ်"}, {"yoasṅikmat", "ယဲသ္ၚိကၟတ်"}, {"hiuyèh", "ယှေ်", id = 419, bad = vom.."and there is an encoding problem", gone = 1}, {"yeh", "ယှ်ေ", id = '419a', bad = unconfirmed, rep = 1}, {"ran", "ရန်", id = 420}, {"ròp", "ရပ်", id = 421, bad = grave, gone = 1}, {"rap", "ရပ်", id = '421a', bad = unconfirmed, rep = 1}, {"rɜ̀h", "ရိုဟ်", id = 422, bad = grave, gone = 1}, {"riuh", "ရိုဟ်", id = '422a', rep = 1}, {"tiukah", "လကး", id = 423, bad = vom, gone = 1}, {"lakaḥ", "လကး", id = '423a', rep = 1}, {"liutaik", "လတာ်", id = 424, bad = vom, gone = 1}, {"latāk", "လတာ်", id = '424a', bad = unconfirmed, rep = 1}, {"liucɔk", "လမ္စံက်", id = 425, bad = vom, gone = 1}, {"lamcaṃk", "လမ္စံက်", id = '425a', bad = unconfirmed, rep = 1}, {"lamcaṃk", "လမ္စံⓄက်", id = '425b', bad = mkup, rep = 1}, {"lamyiuṃ", "လမျီု"}, {"lawiuṃ", "လဝီု"}, {"liuk", "လိုက်"}, {"liuṃciut", "လီုစိုတ်"}, {"liuṃdraṅbaṃk", "လီုဒြၚ်ဗံက်", id = 430}, {"liuṃdraṅbaṃk", "လီုဒြၚ်ဗံⓄက်", id = '430a', bad = mkup}, {"liuṃmhā", "လီုမှာ"}, {"liuṃlāk", "လီုလာ်"}, {"lop", "လောပ်"}, {"loy", "လောဲ"}, {"loyswā", "လောဲသွာ"}, {"lèˀ", "လေံ", id = 436, bad = grave, gone = 1}, {"le"..modapo(), "လေံ", id = '436a', bad = unconfirmed, rep = 1}, {"le"..modapo(), "လေံⒶ", id = '436b', bad = mkup, rep = 1}, {"loa", "လဲ"}, {"loaswā", "လဲသွာ"}, {"lao", "လဴ"}, {"liucɔk", "လ္စံက်", id = 440, bad = vom, gone = 1}, {"lcaṃk", "လ္စံက်", id = '440a', bad = unconfirmed, rep = 1}, {"lcaṃk", "လ္စံⓄက်", id = '440b', bad = mkup, rep = 1}, {"liuwàk", "လွိုက်", id = 441, bad = vom, gone = 1}, {"lwiuk", "လွိုက်", id = '441a', bad = unconfirmed, rep = 1}, {"lhā", "လှာ"}, {"liunɛ̀aròp", "လၞာရပ်", id = 443, bad = vom, gone = 1}, {"lnārap", "လၞာရပ်", id = '443a', bad = unconfirmed, rep = 1}, {"wat", "ဝတ်"}, {"wātkhāy", "ဝါတ်ခါဲ"}, {"wātgāt", "ဝါတ်ဂါတ်"}, {"wòiṅ", "ဝေၚ်", id = 447, bad = transcription, gone = 1}, {"weṅ", "ဝေၚ်", id = '447a', bad = uunconfirmed, rep = 1}, {"keak", "သကေက်", id = 448, bad = transcription, gone = 1}, {"sakek", "သကေက်", id = '448a', bad = unconfirmed, rep = 1}, {"sagiuṃ", "သဂီု"}, {"sat", "သတ်", id = 450}, {"satchusatdun", "သတ်ဆုသတ်ဒုန်"}, {"kiureak", "သမြေက်", id = 452, bad = vom, gone = 1}, {"samrek", "သမြေက်", id = '452a', bad = unconfirmed, rep = 1}, {"suṅ", "သုၚ်"}, {"sok", "သော်"}, {"sokskaṃ", "သော်သ္ကံ"}, {"kɔh", "သ္ကဟ်", id = 456, bad = transcription, gone = 1}, {"skah", "သ္ကဟ်", id = '456a', bad = unconfirmed, rep = 1}, {"kit", "သ္ကိတ်", id = 457, bad = transcription, gone = 1}, {"skit", "သ္ကိတ်", id = '457a', bad = unconfirmed, rep = 1}, {"siuko", "သ္ကောဝ်", id = 459, bad = vom, gone = 1}, {"skow", "သ္ကောဝ်", id = '459a', bad = unconfirmed, rep = 1}, {"sgaḥ", "သ္ဂး", id = 460}, {"sjiuh", "သ္ဇိုဟ်"}, {"sjiuṅ", "သ္ဇိုၚ်"}, {"tɔp", "သ္တပ်", id = 463, bad = transcription, gone = 1}, {"stap", "သ္တပ်", id = '463a', bad = unconfirmed, rep = 1}, {"toik", "သ္တိက်", id = 464, bad = transcription, gone = 1}, {"stik", "သ္တိက်", id = '464a', rep = 1}, {"iu", "သ္အုဲ", id = 465, bad = transcription, gone = 1}, {"s"..modapo().."uy", "သ္အုဲ", id = '465a', bad = unconfirmed, rep = 1}, {"sòt", "သြောတ်", id = 466, bad = grave, gone = 1}, {"srot", "သြောတ်", id = '466a', bad = uuncomfirmed, rep = 1}, {"sraṅ", "သြၚ်"}, {"swa", "သွ"}, {"snam", "သၞာံ", id = 469, bad = transcription, gone = 1}, {"snāṃ", "သၞာံ", id = '469a', bad = unconfirmed, rep = 1}, {"siunem", "သၞေံ", id = 470, bad = vom, gone = 1}, {"sneṃ", "သၞေံ", id = '470a', bad = unconfirmed, rep = 1}, {"sneaṅ", "သၞေၚ်", id = 471, bad = transcription, gone = 1}, {"sneṅ", "သၞေၚ်", id = '471a', bad = unconfirmed, rep = 1}, {"siunok", "သၞံက်", id = 472, bad = vom, gone = 1}, {"snaṃk", "သၞံက်", id = '472a', bad = unconfirmed, rep = 1}, {"snaṃk", "သၞံⓄက်", id = '472b', bad = mkup, rep = 1}, {"snɔṅ", "သၞံၚ်", id = 473, bad = transcription, gone = 1}, {"snaṃṅ", "သၞံၚ်", id = '473a', bad = unconfirmed, rep = 1}, {"snaṃṅ", "သၞံⓄၚ်", id = '473b', bad = mkup, rep = 1}, {"slaˀ", "သၠ", id = 474, bad = transcription, gone = 1}, {"sla", "သၠ", id = '474a', rep = 1}, {"sloiṅ", "သၠိၚ်", id = 475, bad = transcription, gone = 1}, {"sliṅ", "သၠိၚ်", id = '475a', bad = unconfirmed, rep = 1}, {"haciut", "ဟစိုတ်"}, {"hacep", "ဟစေပ်"}, {"hajoṃ", "ဟဇေါံ"}, {"hajaṃ", "ဟဇံ"}, {"hatāṃ", "ဟတာံ", id = 480}, {"hataṃ", "ဟတံ"}, {"hamāy", "ဟမာဲ"}, {"hamhāy", "ဟမှာဲ"}, {"hɒm", "ဟီု", id = 484, bad = transcription, gone = 1}, {"hiuṃ", "ဟီု", id = '484a', bad = unconfirmed, rep = 1}, {"hiuṃkhlew", "ဟီုခၠေဝ်"}, {"hiuṃgaḥ", "ဟီုဂး"}, {"hiuṃjiuṃ", "ဟီုဇီု"}, {"hi", "ဟဳ", id = 488, bad = transcription, gone = 1}, {"hī", "ဟဳ", id = '488a', bad = uunconfirmed, rep = 1}, {"haṃsā", "ဟံသာ"}, {"hwaṃ", "ဟွံ", id = 490}, {"iupa", "အပါ", id = 491, bad = vom, gone = 1}, {modapo().."apā", "အပါ", id = '491a', rep = 1}, {"iumè", "အမေ", id = 492, bad = vom, gone = 1}, {modapo().."ame", "အမေ", id = '492a', bad = unconfirmed, rep = 1}, {"ʼahān", "အဟာန်"}, {"ʼā", "အာ"}, {"ʼiutsiuṃ", "အိုတ်သီု"}, {"ʼon", "အောန်"}, {"ʼonciut", "အောန်စိုတ်"}, -- Treat following pair as bad and replacement. {"ʔuiu", "အဲ", id = 498, bad = transcription, gone = 1}, {"ʼoa", "အဲ", id = 499, rep = 1}, {"utuḅiuh", "ဥတုၜိုဟ်", bad = "more traditional transcription", id = 500, gone = 1}, {modapo().."utuṗiuh", "ဥတုၜိုဟ်", id = 500, rep = 1}, {"ṅuy", "ၚုယ်"}, {"ṅuydagoṅ", "ၚုဲဒဂေါၚ်"}, {"ṅɛ̀ak", "ၚေက်", id = 503, bad = grave, gone = 1}, {"ṅek", "ၚေက်", id = '503a', rep = 1}, {"ṗawkadāt", "ၜဝ်ကဒါတ်"}, {"ṗā", "ၜါ"}, {"ṗiup", "ၜိုပ်"}, {"ṗiupkṗaṅ", "ၜိုပ်က္ၜၚ်"}, {"ṗiupthaw", "ၜိုပ်ထဝ်"}, {"ṗiupmā", "ၜိုပ်မာ"}, {"ṗiupme", "ၜိုပ်မေ", id = 510}, {"ṗɒh", "ၜိုဟ်", id = 511, bad = transcription, gone = 1}, {"ṗiuh", "ၜိုဟ်", id = '511a', bad = unconfirmed, rep = 1}, {"ṗiuhgaṃk", "ၜိုဟ်ဂံက်", id = 512}, {"ṗiuhgaṃk", "ၜိုဟ်ဂံⓄက်", id = '512a', bad = mkup}, {"ṗiuhciut", "ၜိုဟ်စိုတ်"}, {"ṗiuhsiuh", "ၜိုဟ်သိုဟ်"}, {"ṗiuhsba", "ၜိုဟ်သ္ဗ"}, {"ṗiuhsriuh", "ၜိုဟ်သြိုဟ်"}, {"ṗoiṅ", "ၜိၚ်", id = 517, bad = transcription, gone = 1}, {"ṗiṅ", "ၜိၚ်", id = '517a', bad = unconfirmed, rep = 1}, {"ṗɒm", "ၜီု", id = 518, bad = transcription, gone = 1}, {"ṗiuṃ", "ၜီု", id = 518, bad = unconfirmed, rep = 1}, {"ṗuṅ", "ၜုၚ်"}, {"ṗo", "ၜေါ", id = 520}, {"ṗi", "ၜဳ", id = 521, bad = transcription, gone = 1}, {"ṗī", "ၜဳ", id = '521a', rep = 1}, {"ṗījnok", "ၜဳဇၞော်"}, {"ṗao", "ၜဴ"}, {"ṗaoluppāṅciṅ", "ၜဴလုပ်ပါၚ်စိၚ်"}, {"ṗɜ", "ၜဵု", id =525, bad = transcription, gone = 1}, {"ṗiuw", "ၜဵု", id ='525a', rep = 1}, {"ḅāy", "ၝာဲ", id = 526}, {"coh", "စှော်", id = 527}, {"jṅoa", "ဇ္ၚဲ", id = 528}, {"bta", "ဗ္တ", id = 529, bad = "Mon unconfirmed"}, {"kālayoa", "ကာလယဲ", id = 530}, } } function tests:test_indi() options = {} local scripts = { "a", "b", "c", "d" } for _, i in ipairs(scripts) do for iw, tpair in ipairs(indi[i] or {}) do local word = tpair[1] local sword = tpair[2] local bword = m_xlit.tr(sword, 'mnw', 'Mymr') or '(nil)' local ishow = i if i == "b" and tpair.id then ishow = i..'-'..tostring(tpair.id) end if tpair.bad then ishow = ishow..' '.. tpair.bad end local doit = false if i ~= "b" then doit = true elseif select == 3 then doit = true elseif select == 1 then doit = not tpair.rep else doit = not tpair.gone end if doit then tests:equals(ishow, sword..' = '..bword, sword..' = '..word, {show_difference = true}) if i == "b" then tests:tryfix(i, word, '\t\t{"' .. bword .. '", "' .. sword .. '"},' , '\t\t{"' .. word .. '", "' .. sword .. '"},' , 's', 'h') end end end end end return tests dqxcjgg7ag8gk58zv2hvm9xzloanb1e মডিউল:mr-Modi-translit/testcases 828 168822 510374 2026-06-07T12:47:33Z RedminBot 9553 [[en:Module:mr-Modi-translit/testcases]] থেকে আনা হলো 510374 Scribunto text/plain -- Unit tests for [[Module:mr-Modi-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local mr_translit = require('Module:mr-Modi-translit') --TO DO function tests:do_test_translit(modi, roman, comment) self:equals( '<span class="Modi" lang="mr">[[' .. modi .. '#Marathi|' .. modi .. ']]</span>', mr_translit.tr(modi, 'mr', 'Modi'), roman, { comment = comment }) end function tests:test_translit_marathi() local examples = { --Fundamental tests { '𑘥𑘰𑘨𑘝', 'bhārat' }, { '𑘦𑘨𑘰𑘙𑘲', 'marāṭhī' }, { '𑘮𑘵𑘟𑘧', 'hruday' }, } self:iterate(examples, 'do_test_translit') end return tests 0q1y8nnp7ok71zuqhvnzbr7lj215nvs মডিউল:mr-translit/testcases 828 168823 510375 2026-06-07T12:47:34Z RedminBot 9553 [[en:Module:mr-translit/testcases]] থেকে আনা হলো 510375 Scribunto text/plain -- Unit tests for [[Module:mr-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local mr_translit = require('Module:mr-translit') --TO DO function tests:do_test_translit(deva, roman, comment) self:equals( '<span class="Deva" lang="mr">[[' .. deva .. '#Marathi|' .. deva .. ']]</span>', mr_translit.tr(deva, 'mr', 'Deva'), roman, { comment = comment }) end function tests:test_translit_marathi() local examples = { --Weird schwa dropping (need to fix!) { 'दगड', 'dagaḍ', 'weird schwa dropping in first syllable of words beginning with d (should be impossible!)'}, { 'दहशत', 'dahśat'}, { 'दहशत', 'dahśat'}, { 'दऱ्या', 'daryā' }, --‘दऱ्या’ is the plural of ‘दरी’ { 'दहा', 'dahā'}, { 'दही', 'dahī'}, { 'दचकणे', 'dacakṇe'}, --Final clusters/geminates (need to fix!) { 'खुद्द', 'khudda', 'geminates/clusters finally force a schwa'}, { 'शुद्ध', 'śuddha' }, { 'घट्ट', 'ghaṭṭa' }, { 'भिन्न', 'bhinna' }, { 'मार्ग', 'mārga' }, { 'कर्म', 'karma' }, { 'शब्द', 'śabda' }, { 'पत्र', 'patra' }, { 'वृक्ष', 'vrukṣa' }, { 'महाराष्ट्र', 'mahārāṣṭra' }, --Fundamental tests { 'भारत', 'bhārat' }, { 'मराठी', 'marāṭhī' }, { 'हृदय', 'hruday' }, --Homorganic nasal assimilation { 'गंगा', 'gaṅgā', "anusvara before ग' is its homorganic nasal ('ṅ')" }, { 'लंड', 'laṇḍa' }, --anusvara before 'ड' is its homorganic nasal ('ṇ') { 'कंबल', 'kambal' }, --anusvara before 'ब' is its homorganic nasal ('m') --The following two categories could be problematic since they could interfere with cases without schwa deletion --such as English borrowings (ऑगस्ट) --Word-final consonant clusters with no schwa deletion { 'रक्त', 'rakta' }, { 'काव्य', 'kāvya' }, --य-final is a subcase --Word-final nasal assimilation consonant clusters with no schwa deletion (where nasal is न) { 'मंद', 'manda' }, --Sanskrit borrowing { 'उंच़', 'unċa', 'phonological ċ'}, --Tests individual letters { 'कृपा', 'krupā', [=[‘ऋ’ is ‘ru’]=] }, { 'ज्ञान', 'dnyān' }, --‘ज्ञ’ is ‘dny’ (even word initially such as Dnyaneshwar) --Eyelash र { 'ऱ्हास', 'rhās' }, { 'दऱ्या', 'daryā' }, --‘दऱ्या’ is the plural of ‘दरी’ { 'दर्या', 'daryā' }, --Ensures औ and ऐ remain diphthongs { 'कैरी', 'kairī' }, --‘ऐ’ is a diphthong { 'हौस', 'haus' }, --‘औ’ is a diphthong --Anusvāra before र, श, ष, स: Provincial Class { 'संरक्षण', 'saurakṣaṇ' }, --Anusvāra transliterated before र is ‘u’ { 'संशय', 'sauśay' }, { 'दंष्ट्र', 'dauṣṭra' }, --Word-final ‘a’ { 'हंस', 'haus' }, --Anusvāra before य, ल, व: Classical Class { 'संयोग', 'saiyog' }, --Anusvāra transliterated before य is ‘i’ { 'संलग्न', 'sallagna' }, --Anusvāra transliterated before ल is ‘u’ + Word-final ‘a’ { 'संवाद', 'sauvād' }, --Anusvāra is transliterated before व is ‘u’ --Anusvāra: Other { 'सिंह', 'siuha' }, --Anusvāra before ‘ह’ and after ‘इ’ + Word-final ‘a’ { 'संहार', 'sauhār' }, --Anusvāra before ‘ह’ { 'संज्ञा', 'sandnyā' }, --Anusvāra before ‘ज्ञ’ { 'माझं', 'mājha' }, --Anusvara to stop schwa dropping --English borrowings { 'बॅट', 'bĕṭ' }, --‘ ॅ‘ is IPA /æ/ (बॅट = bat) { 'बँक', 'bĕṅk' }, -- ‘ँ’ = ‘ॅ’ + ‘ं’, chandrabindu is never used as in Hindi --Rurally ‘ॅ’ is ‘yā’, so बँक becomes ‘byāṅk’ { 'ॲप', 'ĕp' }, --Independent form of ‘ ॅ‘ (ॲप = app) { 'ऍप', 'ĕp' }, --Another independent form of ‘ ॅ‘ (ऍप = app) { 'कॉट', 'kŏṭ' }, --‘ॉ‘ is IPA /ɔ/ (कॉट = cot), RP ‘ɒ’ and ‘ɔ’ are both represented with ‘ॉ‘ --Rurally ‘ॉ‘ is ‘ā’, so डॉकटर becomes ‘ḍākṭar’ { 'हाँग काँग', 'hŏṅg kŏṅg' }, --‘ॉ’ = ‘ॉ’ + ‘ं (हाँग काँग = Hong Kong) { 'ऑस्ट्रेलिया', 'ŏsṭreliyā' }, --Independent form of ‘ ॉ‘ (ऑस्ट्रेलिया = Australia) --The remaining tests concern: c and ċ, j and j̈, jh and j̈h --य denotes palatalisation and has no independent realisation (Perhaps this should be in Mod:mr-IPA instead) { 'च्या', 'cā' }, --‘ċ’ palatalised to ‘c’ in genitive oblique { 'तुझ्या', 'tujhā' }, --‘j̈h’ palatalised to ‘jh’ in genitive oblique --च word-initial minimal pair { 'च़ार', 'ċār' }, --Word-initial voiceless alveolar affricate, ‘चार’ means ‘four’ { 'चार', 'cār' }, --Word-initial voiceless palato-alveolar affricate, ‘चार’ means ‘graze’ or ‘young green grass’ --च word-medial minimal pair { 'काच़ा', 'kāċā' }, --Word-medial voiceless alveolar affricate, ‘काचा’ is the plural form of ‘काच’ kāċ, which means ‘glass’ { 'काचा', 'kācā' }, --Word-medial voiceless palato-affricate, ‘काचा’ means ‘button-hole’ or ‘tuck’ --च word-initial and word-medial minimal pair { 'च़राच़र', 'ċarāċar' }, --Word-medial voiceless alveolar affricate, ‘चराचर’ is an onomatopoeia that means ‘tearing sound’ or ‘rapidly’ { 'चराचर', 'carācar' }, --Word-medial voiceless palato-affricate, ‘चराचर’ means ‘every created thing, animate or inanimate‘ --ज word-initial minimal pair { 'ज़प', 'j̈ap' }, --Word-initial voiced alveolar affricate, ‘जप’ is an imperative that means ‘be careful’ { 'जप', 'jap' }, --Word-initial voiced palato-affricate, ‘जप’ means ‘counting beads’ --ज alveolar affricate word-medial { 'मोज़णे', 'moj̈ṇe' }, --Word-medial voiced alveolar affricate --ज alveolar affricate word-final { 'लाज़', 'lāj̈' }, --Word-final voiced alveolar affricate --झ word-initial and word-medial two minimal pairs { 'झ़कझ़क', 'j̈hakj̈hak' }, --Word-initial and word-medial breathy-voiced alveolar affricate, means ‘bright light’ { 'झकझक', 'jhakjhak' }, --Word-initial and word-medial breathy-voiced palato-alveolar affricate, means ‘complaining’ { 'झ़ापड', 'j̈hāpaḍ' }, --Word-initial and word-medial breathy-voiced alveolar affricate, means ‘drowsiness’ { 'झापड', 'jhāpaḍ' }, --Word-initial and word-medial breathy-voiced palato-alveolar affricate, means ‘slap’ --One alveolar affricate and one palato-alveolar affricate in a single word { 'झीज़', 'jhīj̈' }, --‘झीज’ means ‘erosion’, see Wiktionary entry for ‘झिजणे’ { 'चीज़', 'cīj̈' }, --‘चीज’ means ‘thing’, see Wiktionary entry for ‘चीज़’ --anusvar word final, e.g. as a neuter plural marker -> nasalisation of vowel { 'अंग', 'aṅga'}, { 'अंगे', 'aṅge'}, { 'अंगं', 'aṅga'}, } self:iterate(examples, 'do_test_translit') end return tests g4vl8uyvakz22s02qy4tpfpyhfr5r3l মডিউল:mu-translit 828 168824 510376 2026-06-07T12:47:34Z RedminBot 9553 [[en:Module:mu-translit]] থেকে আনা হলো 510376 Scribunto text/plain local export = {} local replacements = { ["aa"] = "A", ["ee"] = "E", ["ii"] = "I", ["oo"] = "O", ["ch"] = "C", ["sh"] = "S", ["zh"] = "Z", ["kw"] = "K", ["gw"] = "G", ["ng"] = "N", ["nd"] = "D", ["mb"] = "B", ["nZ"] = "X", ["nz"] = "M" } function export.tr(text) local output = text -- Perform all replacements for key, value in pairs(replacements) do output = output:gsub(key, value) end return output end return export q94dgo9c88iag8a7svfcfmm0ieec45u মডিউল:mxi-translit 828 168825 510377 2026-06-07T12:47:34Z RedminBot 9553 [[en:Module:mxi-translit]] থেকে আনা হলো 510377 Scribunto text/plain local export = {} function export.tr(text, lang, sc) local replacements if (sc == "Arab") then return (mw.ustring.gsub(mw.ustring.gsub(text, ".", { -- consonants -- ["ا"]="ə", ["ب"]="b", ["ت"]="t", ["ث"]="ṯ", ["ج"]="j", ["ح"]="ḥ", ["خ"]="ḵ", ["د"]="d", ["ذ"]="ḏ", ["ر"]="r", ["ز"]="z", ["س"]="s", ["ش"]="š", ["ص"]="ṣ", ["ض"]="ḍ", ["ط"]="ṭ", ["ظ"]="ẓ", ["ع"]="ʕ", ["غ"]="ḡ", ["ڢ"]="f", ["ڧ"]="q", ["ك"]="k", ["ل"]="l", ["م"]="m", ["ࢽ"]="n", ["ه"]="h", ["و"]="w", ["ی"]="y", -- [ق], [ف] and [ي] should not occur, but [ن] sometimes does ["ن"]="n", -- [ے] should likely be used in quotes at least ["ے"]="y", -- tashkil -- ["َ"]="a", ["ُ"]="u", ["ِ"]="i", ["ّ"]="ː", ["ْ"]="°", }), "([btṯjḥḵdḏrzsšṣḍṭẓʕḡfqklmnhwyuiː°])ə", "%1ā"):gsub("aə", "ā")) elseif (sc == "Hebr") then return (mw.ustring.gsub(text, ".", { -- consonants -- ["א"] = "ʔ", ["ב"] = "b", ["ג"] = "g", ["ד"] = "d", ["ה"] = "h", ["ו"] = "w", ["ז"] = "z", ["ח"] = "ḥ", ["ט"] = "ṭ", ["י"] = "y", ["כ"] = "k", ["ל"] = "l", ["מ"] = "m", ["נ"] = "n", ["ס"] = "s", ["ע"] = "ʕ", ["פ"] = "f", ["צ"] = "ṣ", ["ק"] = "q", ["ר"] = "r", ["ש"] = "š", ["ת"] = "t", -- sofit -- ["ך"] = "k", ["ם"] = "m", ["ן"] = "n", ["ף"] = "f", ["ץ"] = "ṣ", -- nikud ? })) end return end return export d8k63n0wzdd9ww74uxia0kc596hmumu মডিউল:my-translit/testcases 828 168826 510378 2026-06-07T12:47:35Z RedminBot 9553 [[en:Module:my-translit/testcases]] থেকে আনা হলো 510378 Scribunto text/plain local tests = require('Module:UnitTests') local my_translit = require('Module:my-translit') function tests:check_tr(Mymr, Latn) self:equals(('<span class="Mymr" lang="my">[[%s#Burmese|%s]]</span>'):format(Mymr, Mymr), my_translit.tr(Mymr, 'my', 'Mymr'), Latn) end function tests:test_translit() self:check_tr("သျှိုး", "") self:check_tr("ယောက်ျား", "yaukya:") self:check_tr("ပြဿနာ", "pra.ssa.na") self:check_tr("ဩစတြီးယား", "au:ca.tri:ya:") self:check_tr("အီကွေဒေါ", "i-kwedau:") self:check_tr("ဘင်္ဂလားဒေ့ရှ်", "bhangga.la:de.hr") self:check_tr("ဘလော့ဂ်", "bha.laug.") self:check_tr("အကျဉ်းထောင်", "a.kyany:htaung") self:check_tr("တာ့ခ်မင်နစ္စတန်", "tahk.mangnacca.tan") self:check_tr("နှစ်သစ်ကူး မင်္ဂလာပါ", "hnacsacku: mangga.lapa") self:check_tr("ဆယ့်လေး", "hcai.le:") self:check_tr("ဗော့ဒ်ကာ၏", "baud.kae") self:check_tr("သမီး၏", "sa.mi:e") self:check_tr("အီးမေးလ်၏", "i:mel:e") self:check_tr("ကြိုဆိုပါ၏", "kruihcuipae") self:check_tr("ဥက္ကဌ", "ukka.hta.") self:check_tr("၊", "&#124;") self:check_tr("။", "&#124;&#124;") self:check_tr("ထိုင်းနိုင်ငံ", "htuing:nuingngam") self:check_tr("ယိုးဒယားနိုင်ငံ", "yui:da.ya:nuingngam") self:check_tr("ကိုယ့်မင်းကိုယ့်ချင်း", "kuiy.mang:kuiy.hkyang:") self:check_tr("ကမ်းခြေ", "kam:hkre") self:check_tr("ဝိဇ္ဇာ", "wijja") self:check_tr("ဒုက္ခ", "dukhka.") self:check_tr("ကဏ္ဍ", "kanda.") self:check_tr("မန္တလေး", "manta.le:") self:check_tr("ပိဿာ", "pi.ssa") self:check_tr("ကြက်ဆင်", "krakhcang") self:check_tr("မြန်မာဘာသာ", "mranmabhasa") self:check_tr("ဒူးရင်းသီး", "du:rang:si:") self:check_tr("ကျောင်းသူ", "kyaung:su") self:check_tr("အင်္ဂလိပ်", "angga.lip") self:check_tr("ကမ္ဘာ", "kambha") self:check_tr("ရင်ဘတ်", "rangbhat") self:check_tr("ရုပ်ရှင်ရုံ", "ruphrang-rum") self:check_tr("နွေဦးပေါက်", "nweu:pauk") self:check_tr("စာကြည့်တိုက်", "ca-krany.tuik") self:check_tr("နှာခေါင်း", "hnahkaung:") self:check_tr("ဆောင်းဦး", "hcaung:u:") self:check_tr("ဗမာစကား", "ba.maca.ka:") self:check_tr("သန်ကောင်", "sankaung") self:check_tr("သည်းခြေ", "sany:hkre") self:check_tr("သင်္ချိုင်း", "sanghkyuing:") self:check_tr("နာမည်", "namany") self:check_tr("ဒေါင်း", "daung:") self:check_tr("ရင်ပတ်", "rangpat") self:check_tr("မျောက်", "myauk") self:check_tr("မျက်စိ", "myakci.") self:check_tr("မိန်းမ", "min:ma.") self:check_tr("လွတ်လပ်ခွင့်", "lwatlaphkwang.") self:check_tr("လှေ", "hle") self:check_tr("ဆေးရုံ", "hce:rum") self:check_tr("ဘာသာဗေဒ", "bhasabeda.") self:check_tr("ဘူတာရုံ", "bhutarum") self:check_tr("တက္ကသိုလ်", "takka.suil") self:check_tr("တရုတ်စကား", "ta.rutca.ka:") self:check_tr("ဗုဒ္ဓ", "buddha.") self:check_tr("ဂြိုဟ်", "gruih") self:check_tr("အင်္ဂလိပ်ဘာသာ", "angga.lipbhasa") self:check_tr("အဏ္ဏဝါ", "anna.wa") self:check_tr("ဦးချို", "u:hkyui") self:check_tr("အိပ်ရာ", "ip-ra") self:check_tr("အဘိဓာန်", "a.bhi.dhan") self:check_tr("လမ်းလျှောက်", "lam:hlyauk") self:check_tr("ရန်ဖြစ်", "ranhprac") self:check_tr("အော့အန်", "au.an") self:check_tr("ပြည်ထောင်စု မြန်မာ နိုင်ငံတော်", "pranyhtaungcu. mranma nuingngamtau") self:check_tr("အိန္ဒိယနိုင်ငံ", "indi.ya.nuingngam") self:check_tr("ရန်ကုန်မြို့", "rankunmrui.") self:check_tr("ထိုင်ဝမ်", 'htuing-wam') self:check_tr("အီတလီနိုင်ငံ", 'ita.linuingngam') self:check_tr("ရွှေဖရုံသီး", 'hrwehpa.rumsi:') self:check_tr("ဖြစ်ခေါင့်ဖြစ်ခဲ", 'hprachkaung.hprachkai:') self:check_tr("ခေါင့်", "hkaung.") self:check_tr("ဝက်အူ", "wak-u") self:check_tr("ဥစ်", "uc") self:check_tr("မလာနိုင်ပါဘူး။", "ma.lanuingpabhu:&#124;&#124;") end return tests 07ia3m3ya8pe7ndyz8f17owp68x4fws মডিউল:ne-IPA/translit 828 168827 510379 2026-06-07T12:47:36Z RedminBot 9553 [[en:Module:ne-IPA/translit]] থেকে আনা হলো 510379 Scribunto text/plain -- Transliteration for Nepali local export = {} local gsub = mw.ustring.gsub local match = mw.ustring.match local conv = { -- consonants ["क"] = "k", ["ख"] = "kʰ", ["ग"] = "ɡ", ["घ"] = "ɡʱ", ["ङ"] = "ŋ", ["च"] = "ʦ", ["छ"] = "ʦʰ", ["ज"] = "ʣ", ["झ"] = "ʣʱ", ["ञ"] = "n", ["ट"] = "ʈ", ["ठ"] = "ʈʰ", ["ड"] = "ɖ", ["ढ"] = "ɖʱ", ["ण"] = "ɳ", ["त"] = "t̪", ["थ"] = "t̪ʰ", ["द"] = "d̪", ["ध"] = "d̪ʱ", ["न"] = "n", ["प"] = "p", ["फ"] = "pʰ", ["ब"] = "b", ["भ"] = "bʱ", ["म"] = "m", ["य"] = "j", ["र"] = "r", ["ल"] = "l", ["व"] = "w", ["श"] = "s", ["ष"] = "ʂ", ["स"] = "s", ["ह"] = "ɦ", ["क़"] = "q", ["ख़"] = "x", ["ग़"] = "ɣ", ["ऴ"] = "ɭ", ["ळ"] = "ɭ", ["ज़"] = "z", ["श़"] = "ʒ", ["झ़"] = "ʒ", ["ड़"] = "ɽ", ["ढ़"] = "ɽʱ", ["फ़"] = "f", ["थ़"] = "θ", ["द़"] = "ð", ["ऩ"] = "n̪", ["ऱ"] = "ɹ", ["ॽ"] = "ʔ", ["व़"] = "v", ["ॹ"] = "ʒ", -- vowel diacritics ["ि"] = "i", ["ु"] = "u", ["े"] = "e", ["ो"] = "o", ["ा"] = "ä", ["ी"] = "i", ["ू"] = "u", ["ृ"] = "ri", ["ॄ"] = "ri", ["ॢ"] = "liɾi", ["ॣ"] = "liɾi", ["ै"] = "ʌi̯", ["ौ"] = "ʌu̯", ["ॉ"] = "ɔ", ["ॅ"] = "æ", -- vowel signs ["अ"] = "ʌ", ["इ"] = "i", ["उ"] = "u", ["ए"] = "e", ["ओ"] = "o", ["आ"] = "ä", ["ई"] = "i", ["ऊ"] = "u", ["ऋ"] = "ri", ["ॠ"] = "ri", ["ऌ"] = "liɾi", ["ॡ"] = "liɾi", ["ऐ"] = "ʌi̯", ["औ"] = "ʌu̯", ["ऑ"] = "ɔ", ["ॲ"] = "æ", ["ऍ"] = "æ", -- chandrabindu ["ँ"] = "̃", -- anusvara ["ं"] = "ṃ", -- visarga ["ः"] = "ː", -- virama ["्"] = "", -- om ["ॐ"] = "oːm", -- zero-width non joiner ["‌"] = " ͜ ", -- zero-width joiner ["‍"] = "ʌ", -- diphthong marker ["ॱ"] = "̯", -- numerals ["०"] = "0", ["१"] = "1", ["२"] = "2", ["३"] = "3", ["४"] = "4", ["५"] = "5", ["६"] = "6", ["७"] = "7", ["८"] = "8", ["९"] = "9", -- punctuation ["।"] = ".", -- danda ["॥"] = ".", -- double danda ["+"] = "", -- compound separator -- abbreviation sign ["॰"] = "." } local nasal_assim = { ["क"] = "ङ", ["ख"] = "ङ", ["ग"] = "ङ", ["घ"] = "ङ", ["च"] = "ञ", ["छ"] = "ञ", ["ज"] = "ञ", ["झ"] = "ञ", ["ट"] = "ण", ["ठ"] = "ण", ["ड"] = "ण", ["ढ"] = "ण", ["प"] = "म", ["फ"] = "म", ["ब"] = "म", ["भ"] = "म", ["म"] = "म", ["त"] = "न", ["थ"] = "न", ["द"] = "न", ["ध"] = "न", ["न"] = "न", ["ष"] = "न", ["श"] = "ङ", ["स"] = "न", ["य"] = "म", ["र"] = "म", ["ल"] = "ँ", ["व"] = "म", ["ह"] = "ङ" } local perm_cl = { ["ज्न"] = true, ["ज्ञ"] = true, ["ट्र"] = true, ["ड्र"] = true, ["ट्स"] = true, ["ड्स"] = true, ["स्ड"] = true } local all_cons, special_cons = "कखगघङचछजझञटठडढणतथदधनपफबभमयरलवसशषह", "कखगघचछजझटठडढणतथदधनपफबभमयरलवशषसह" local vowel, vowel_sign = "aिुृेोाीूैौॉॅॆॊॄॢॣ", "अइउएओआईऊऋॠॡऌऐऔऑऍ" local syncope_pattern = "(़?[" .. all_cons .. "])([ंँ]?[" .. vowel .. vowel_sign .. "])(़?[" .. all_cons .. "])([ंँ]?[" .. vowel .. vowel_sign .. "])(़?[" .. all_cons .. "])ʌ(़?[" .. all_cons .. "])([ंँ]?[" .. vowel .. vowel_sign .. "])(़?[" .. all_cons .. "])([ंँ]?[" .. vowel .. vowel_sign .. "])" local nor_cons, sp_cons = "कखगघङचछजझञटठडढतथदधपफबभशषसयरलवणनमयरलवनम", "कलम" local vowel, vowel_sign = "aिुृेोाीूैौॉॅॆॊॄॢॣ", "अइउएओआईऊऋॠॡऌऐऔऑऍ" local koka_sign = "ोीाैे" local koka_pattern = "([" .. koka_sign .. "])(़?[" .. sp_cons .. "])ʌ(़?[" .. gsub(nor_cons, "य", "") .. "])([ंँ]?[" .. vowel .. vowel_sign .. "])" local function rev_string(text) local result, length = {}, mw.ustring.len(text) for i = length, 1, -1 do table.insert(result, mw.ustring.sub(text, i, i)) end return table.concat(result) end function export.tr(text, lang, sc) text = gsub( text, "([" .. all_cons .. "]़?)([" .. vowel .. "्]?)", function(c, d) return c .. (d == "" and "ʌ" or d) end ) for word in mw.ustring.gmatch(text, "[ऀ-ॿʌ]+") do local orig_word = word word = rev_string(word) word = gsub( word, "^ʌ(़?)([" .. all_cons .. "])(.)(.?)", function(opt, first, second, third) return (((match(first, "[" .. special_cons .. "]") and match(second, "ं") or match(first, "[" .. special_cons .. "]") and match(second, "्") and not perm_cl[first .. second .. third]) or match(first .. second, "य[aिुृेोाीूैौॉॅॆॊआईउऊइएऐओऔʌ]") or match(first .. second, "ह[अaिुृेोाीूैौॉॅॆॊआईउऊइएऐओऔʌ]")) and "ʌ" or "") .. opt .. first .. second .. third end ) while match(word, syncope_pattern) do word = gsub(word, syncope_pattern, "%1%2%3%4%5%6%7%8%9") end while match(word, koka_pattern) do word = gsub(word, koka_pattern, "%1%2%3%4") end word = gsub( word, "(.?)ं(.)", function(succ, prev) return succ .. (succ .. prev == "ʌ" and "्म" or (succ == "" and match(prev, "[" .. vowel .. "]") and "̃" or nasal_assim[succ] or "̃")) .. prev end ) local escaped_orig_word = gsub(orig_word, "%+", "") text = gsub(text, orig_word, rev_string(word)) text = gsub(text, "ईन$", "inʌ") text = gsub(text, "(...)ईन ", "%1inʌ ") text = gsub(text, "इन$", "inʌ") text = gsub(text, "(...)इन ", "%1inʌ ") text = gsub(text, "ैन$", "ʌi̯nʌ") text = gsub(text, "(...)ैैैैन ", "%1ʌi̯nʌ ") text = gsub(text, "उन$", "unʌ") text = gsub(text, "(...)उन ", "%1unʌ ") text = gsub(text, "ुन$", "unʌ") text = gsub(text, "(...)ुन ", "%1unʌ ") text = gsub(text, "िन$", "inʌ") text = gsub(text, "(...)िन ", "%1inʌ ") text = gsub(text, "िछ$", "içʰʌ") text = gsub(text, "(...)िछ ", "%1iʦʰʌ ") text = gsub(text, "उछ$", "uʦʰʌ") text = gsub(text, "(...)उछ ", "%1uʦʰʌ ") text = gsub(text, "इछ$", "iʦʰʌ") text = gsub(text, "(...)इछ ", "%1iʦʰʌ ") text = gsub(text, "एछ$", "eʦʰʌ") text = gsub(text, "ेछ$", "eʦʰʌ") text = gsub(text, "(...)ेछ ", "%1eʦʰʌ ") text = gsub(text, "(...)ेन ", "%1enʌ ") text = gsub(text, "ेन$", "enʌ") text = gsub(text, "(...)एन ", "%1enʌ ") text = gsub(text, "एर$", "eɾʌ") text = gsub(text, "(...)एर ", "%1eɾʌ ") text = gsub(text, "ेर$", "eɾʌ") text = gsub(text, "(...)ेर ", "%1eɾʌ ") text = gsub(text, "एन$", "enʌ") text = gsub(text, "उँछ$", "ũʦʰʌ") text = gsub(text, "(...)उँछ ", "%1ũʦʰʌ ") text = gsub(text, "ज्ञ", "ɡj") end text = gsub(text, ".़?", conv) text = gsub(text, "ʌ([iu])̯̃", "ʌ̃%1̯̃") text = gsub(text, "([ʌ])̃([iu])̯", "%1̃%2̯") text = gsub(text, "[<>]", "") text = gsub(text, "ॱ", "") text = gsub(text, "dʌʦʰ$", "dʌʦʰʌ") text = gsub(text, "(...)dʌʦʰ ", "%1dʌʦʰʌ ") text = gsub(text, "ʌi̯n$", "ʌi̯nʌ") text = gsub(text, "(...)ʌi̯n ", "%1ʌi̯nʌ ") text = gsub(text, "nʌʦʰ$", "nʌʦʰʌ") text = gsub(text, "(...)nʌʦʰ ", "%1nʌʦʰʌ ") text = gsub(text, "wʌi̯", "bʌi̯") text = gsub(text, "w$", "b") text = gsub(text, "(...)w ", "%1b ") text = gsub(text, "([rʌäiueo])([r])w", "%1rb") text = gsub(text, "w([iewuojr])", "b%1") text = gsub(text, "([w])ʌ([krɾjtcʦʣçʐṅñysśdpɦhn])([tnrṇṣcśkghjɦsçʐueoʌayd])", "bʌ%2%3") text = gsub( text, "([śsnlcçʦʣʐjzkʰʱɦhpɡtdgb])([w])([aʌäāiīuūeoŏĕɔæɛʌ̃ä̃ĩũī̃ū̃ẽõɔ̃e̤])([cspdtçʐnɡgkʦʣbɾrjyṇṣśṇɾṅñṃ])", "%1w%3%4" ) text = gsub(text, "([w])ä([cgjṇtdçʐʦʣmyshɦśṣn])", "bä%2") text = gsub(text, "([w])ä([rɾ])([tdābuṇɦṣh])", "bä%2%3") text = gsub(text, "([w])ä([l])([m])", "bä%2%3") text = gsub(text, "([w])ʌ([sśṣṅñṃyjʦʣpdtnçʐc])", "bʌ%2") text = gsub(text, "([ʌäiueoŏĕ])([nl])([td]̪)", "%1%2̪%3") -- dental assimilation text = gsub(text, "([ʌäiueoŏĕ])n([ʈɖ])", "%1ɳ%2") -- retroflex aassimilation text = gsub(text, "([l])([ʈɖ])", "ɭ%2") text = gsub(text, "([ʌʌ̃äaāiuūəãā̃ī̃ĩũū̃ẽõeeo̯o ̤])r([ʌʌ̃äaāiīuūəãā̃ī̃ĩũū̃ẽõeeyo̯o])", "%1ɾ%2") text = gsub(text, "([śsnlcjzʐçʦʣkhptdgb])([vw])([aāäiīuūoeĩ])([cspdtngkbrjyṇṣśṇɾṅñṃ])", "%1w%3%4") text = gsub(text, "([n])([ʌ])ʣ([ʱ]?)([ʌäiueo])", "%1%2ʣ%3%4") text = gsub(text, "([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤ː])([k])([ʰ])", "%1kʰ") --text = gsub(text, '([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤ː])([d]͡)(z)([ʱ]?)', '%1(d)z') text = gsub(text, "([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤ː])b(ʱ?)([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤jː])", "%1b%3") text = gsub(text, "([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤ː])pʰ", "%1ɸ") text = gsub(text, "([ʌäiueoɔæɛʌ̃ä̃ĩũẽõjɔ̃e̤ː])d̪ʱ", "%1d̪") text = gsub(text, "([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃je̤ː])ɡ(ʱ?)", "%1ɡ") --text = gsub(text, 't͡st͡s(ʰ?)', 't̚t͡s%1') --text = gsub(text, 'd͡zd͡z(ʱ?)', 'd̚d͡z%1') text = gsub(text, "([ spdtzʱʰɦgkbçʦʣʐrjyɖʈṇṣśṇɾṅñṃ̪])([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤])ɦ%2", "%1%2̤ː") text = gsub(text, "([ʌä])ɦä", "ä̤ː") text = gsub(text, "([ʌʌ̃])ɦä̃", "ä̤̃ː") text = gsub(text, "äɦ([äʌ])", "ä̤ː") text = gsub(text, "([ʌäeoɔæɛʌ̃ä̃ẽõɔ̃e̤])ɦ([iuĩũ])", "%1%2") text = gsub(text, "([iĩ])ɦ([ũu])", "%1%2") text = gsub(text, "([uũ])ɦ([iĩ])", "%1%2") text = gsub(text, "([uũ])ɦ([äʌ])", "%1%2") text = gsub(text, "([ʌʌ̃iĩ])ɦ([eẽoõ])", "%1%2̤") text = gsub(text, "([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̯e̤ː])ɖ(ʱ?)(j?)", "%1ɽ%3") text = gsub(text, "([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤ː])ɦr([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤ː])", "%1ɾ%2") text = gsub(text, "([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤ː])ɦ([n])([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤ː])", "%1̤ː%2%3") text = gsub(text, "([aʌäāiīuūeoŏĕɔæɛʌ̃ä̃ĩũī̃ū̃ẽõɔ̃e̤])ɦ([ml])", "%1%2%2") text = gsub(text, "(#)([spdtzʱʰɦgkbrṇṣśʂʈɖçʐʦʣnṇʌäiuoɔæɛʌ̃ä̃ĩũõɔ̃e̤ːɾṅñ]?)jʌ", "%2e") text = gsub(text, "(#)([spdtzʱʰɦgkbrṇṣśʂʈɖçʦʣʐnʌäiuoɔæɛʌ̃ä̃ĩũõɔ̃e̤ːṇṅɾñ]?)wʌ", "%2o") text = gsub(text, "([aʌäāiīuūeoŏĕɔæɛʌ̃ä̃ĩũī̃ū̃ẽõɔ̃e̤])kʂ([ʌe])", "%1k̚t͡sʰe") -- kṣ ligature text = gsub(text, "()kʂ", "t͡sʰ") -- kṣ initial text = gsub(text, "([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤ː])([spdtzɦgɡkbrṇṣśʃʂʈɖʦʣçʐnṇɾṅñ])(̪?)(ʰʱ?)wʌ", "%1%2%2%3%4o") text = gsub(text, "([ʌäiueoɔæɛʌ̃ä̃ĩũẽõɔ̃e̤ː])([spdtzɦgɡkbrṇṣśʂʃʈɖçʐʦʣnṇɾṅñ])(̪?)([ʰʱ]?)jʌ", "%1%2%2%3%4e") text = gsub(text, "ʂ", "s") text = gsub(text, "ɦri", "ri") text = gsub(text, "kʌn$", "kʌnʌ") text = gsub(text, "(...)kʌn ", "%1kʌnʌ ") text = gsub(text, "nʌʌ$", "nʌ") text = gsub(text, "ä̤ː̃", "ä̤̃ː") text = gsub(text, "nɡj", "ŋɡj") return mw.ustring.toNFC(text) end return export 442kw29sgpk1qf123tt7ur9xn7vw1kl মডিউল:ne-IPA/translit/testcases 828 168828 510380 2026-06-07T12:47:36Z RedminBot 9553 [[en:Module:ne-IPA/translit/testcases]] থেকে আনা হলো 510380 Scribunto text/plain phoiac9h4m842xq45sp7s6u21eteeq1 মডিউল:ne-translit/testcases 828 168829 510381 2026-06-07T12:47:37Z RedminBot 9553 [[en:Module:ne-translit/testcases]] থেকে আনা হলো 510381 Scribunto text/plain -- Unit tests for [[Module:ne-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ne_translit = require('Module:ne-translit')-- Unit tests for [[Module:ne-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ne_translit = require('Module:ne-translit') function tests:do_test_translit(deva, roman, comment) self:equals('<span class="Deva" lang="ne">[[' .. mw.ustring.gsub(deva, "%+", "") .. '#Nepali|' .. mw.ustring.gsub(deva, "%+", "") .. ']]</span>', ne_translit.tr(deva, 'ne', 'Deva'), roman, { comment = comment }) end function tests:test_translit_nepali() self:do_test_translit('गर्नुभएन', 'garnubhaena') self:do_test_translit('एवं', 'evam') self:do_test_translit('गरीकन', 'garīkana') self:do_test_translit('गर्दछ', 'gardacha') self:do_test_translit('लगाउन', 'lagāuna' , "Schwa retention in certain verb forms unless the presence of halanta") self:do_test_translit('सकेन', 'sakena', "Schwa retention in certain verb forms") self:do_test_translit('बसेर', 'basera') self:do_test_translit('गईन', 'gaīna', "Schwa retention in certain verb forms unless the presence of halanta") self:do_test_translit('गईन्', 'gaīn') self:do_test_translit('लगाउँछ', 'lagāũcha', "Schwa retention in certain verb forms") self:do_test_translit('टिपनटापन', 'ṭipanṭāpan', "Combination of different words") self:do_test_translit('संयोजक', 'samyojak') self:do_test_translit('संरचना', 'samracanā') self:do_test_translit('संलग्न', 'samlagna') self:do_test_translit('संवाद', 'samvād') self:do_test_translit('संसार', 'sansār') self:do_test_translit('संहार', 'saṅhār') self:do_test_translit('संज्ञा', 'saṅgyā') self:do_test_translit('सयौंको', 'saya͠uko') self:do_test_translit('तपाईंको', 'tapāīṃko') self:do_test_translit('अं', 'aṃ') self:do_test_translit('अंक', 'aṅka', "Nasal assimilation") self:do_test_translit('अंचल', 'añcal', "Nasal assimilation") self:do_test_translit('अंडा', 'aṇḍā', "Nasal assimilation") self:do_test_translit('अंत', 'anta', "Nasal assimilation") self:do_test_translit('अंबे', 'ambe', "Nasal assimilation") self:do_test_translit('ज्ञान', 'gyān') self:do_test_translit('अंग्रेज़', 'aṅgrez') self:do_test_translit('भारतीय', 'bhāratīya') self:do_test_translit('सय', 'saya') self:do_test_translit('सत्य', 'satya') self:do_test_translit('सुख', 'sukha', "Schwa retention in certain noun") self:do_test_translit('आज', 'āja', "Schwa retention in final syllable of certain postpositions") self:do_test_translit('गर', 'gara', "Schwa retention in final syllable of second person imperative form of verb unless the halanta is present") self:do_test_translit('तिर', 'tira', "Schwa retention in final syllable of certain postpositions") self:do_test_translit('श्याम', 'śyām') self:do_test_translit('चीन', 'cīn', "No Schwa retention in non verb") self:do_test_translit('कामहरू', 'kāmharū', "Schwa cancellation before हरू") self:do_test_translit('अर्थ', 'artha', "Schwa retention when syllable is a conjuct consonant" ) self:do_test_translit('हचुवा', 'hacuwā') self:do_test_translit('रक्तचाप', 'raktacāp') self:do_test_translit('आहा', 'āhā') self:do_test_translit('सल्लाह', 'sallāha') self:do_test_translit('सलह', 'salaha', "Schwa retention when final is ह") self:do_test_translit('अह', 'aha') self:do_test_translit('अहँ', 'ahã') self:do_test_translit('प्रमेय', 'prameya', "Schwa retention when final is य") self:do_test_translit('गरम', 'garam') self:do_test_translit('कस्को', 'kasko') self:do_test_translit('कसको', 'kasko') self:do_test_translit('घरको', 'gharko', "Schwa cancellation when succeeded by genitival suffix") self:do_test_translit('घरलाई', 'gharlāī', "Schwa cancellation when succeeded by preposition") self:do_test_translit('घरमा', 'gharmā') self:do_test_translit('सहरकी', 'saharkī') self:do_test_translit('चर्म', 'carma') self:do_test_translit('प्लीज़', 'plīz') self:do_test_translit('ज़िनदगनम', 'zinadganam') self:do_test_translit('ज़िनदगीन', 'zinadagīn') self:do_test_translit('ज़िनदगी', 'zinadagī') self:do_test_translit('ज़िनदग', 'zinadag') self:do_test_translit('ज़िनद', 'zinad') self:do_test_translit('उपयोग', 'upayog') self:do_test_translit('ज़िन्दगी', 'zindagī') self:do_test_translit('अस्पताल', 'aspatāl') self:do_test_translit('देवनागरी', 'devanāgarī') self:do_test_translit('राम', 'rām') self:do_test_translit('रचनरम', 'racanaram') self:do_test_translit('सुलोचना', 'sulocanā') self:do_test_translit('तिरस्कार', 'tiraskār') self:do_test_translit('टमाटरम', 'ṭamāṭaram') self:do_test_translit('अनुमति', "anumati") self:do_test_translit('नाइँ', "nāĩ") self:do_test_translit('अन्तराष्ट्रिय', 'antarāṣṭriya') self:do_test_translit('अन्तर्राष्ट्रीय', 'antarrāṣṭrīya') self:do_test_translit('संगठन', 'saṅgaṭhan') self:do_test_translit('दुरूपयोग', 'durūpayog') self:do_test_translit('ढ', 'ḍha') end return tests 3cxwu56zybq9evagk2cp3nw0icsanlk মডিউল:new-Newa-translit/testcases 828 168830 510382 2026-06-07T12:47:38Z RedminBot 9553 [[en:Module:new-Newa-translit/testcases]] থেকে আনা হলো 510382 Scribunto text/plain -- Unit tests for [[Module:new-Newa-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local new_translit = require('Module:new-Newa-translit') --TO DO function tests:do_test_translit(sans, roman, xlit) return self:equals('<span class="Newa" lang="new">[[' .. sans .. '#Newari|' .. sans .. ']]</span>', new_translit.tr(sans, 'new', 'Newa'), roman) end function tests:test_translit_newari() local examples = { { '𑐣𑐾𑐥𑐵𑐮 𑐨𑐵𑐲𑐵', 'nepāla bhāṣā' }, { '𑐳𑑂𑐎𑐩𑑂𑐨', 'skambha' }, } return self:iterate(examples, "do_test_translit") end return tests opyptkkbignz3nluofg2csilavdfbks মডিউল:new-translit/testcases 828 168831 510383 2026-06-07T12:47:38Z RedminBot 9553 [[en:Module:new-translit/testcases]] থেকে আনা হলো 510383 Scribunto text/plain -- Unit tests for [[Module:new-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local new_translit = require('Module:new-translit') --TO DO function tests:do_test_translit(sans, roman, xlit) return self:equals('<span class="Deva" lang="new">[[' .. sans .. '#Newari|' .. sans .. ']]</span>', new_translit.tr(sans, 'new', 'Deva'), roman) end function tests:test_translit_newari() local examples = { { 'नेवाः भाय्', 'newā: bhæ' }, { 'सर्गः', 'sarga:' }, { 'सँक्वः', 'sãkwa:' }, { 'प्याखं', 'pyākhaṃ' }, { 'नवःघाँय्', 'nawa:ghæ̃' }, { 'छेँ', 'chẽ' }, } return self:iterate(examples, "do_test_translit") end return tests cjsev23p9hzl86vq3e8d64ckia9ebty মডিউল:nio-translit 828 168832 510384 2026-06-07T12:47:39Z RedminBot 9553 [[en:Module:nio-translit]] থেকে আনা হলো 510384 Scribunto text/plain local export = {} local tab = { ["А"]="A", ["Б"]="B", ["В"]="V", ["Г"]="G", ["Д"]="D", ["Е"]="Je", ["Ё"]="Jo", ["Ж"]="Ž", ["З"]="Z", ["И"]="I", ["Й"]="J", ["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["Ӈ"]="Ŋ", ["О"]="O", ["Ө"]="Ö", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["У"]="U", ["Ү"]="Ü", ["Ф"]="F", ["Х"]="H", ["Ц"]="C", ["Ч"]="Č", ["Ш"]="Š", ["Щ"]="Šč",["Ъ"]="", ["Ы"]="Y", ["Ь"]="ʹ", ["Э"]="E", ["Ә"]="Ə", ["Ю"]="Ju", ["Я"]="Ja", ["І"]="I", ["Ң"]="Ŋ", ['а']='a', ['б']='b', ['в']='v', ['г']='g', ['д']='d', ['е']='je', ['ё']='jo', ['ж']='ž', ['з']='z', ['и']='i', ['й']='j', ['к']='k', ['л']='l', ['м']='m', ['н']='n', ["ӈ"]="ŋ", ['о']='o', ['ө']='ö', ['п']='p', ['р']='r', ['с']='s', ['т']='t', ['у']='u', ['ү']='ü', ['ф']='f', ['х']='h', ['ц']='c', ['ч']='č', ['ш']='š', ['щ']='šč',['ъ']='', ['ы']='y', ['ь']='ʹ', ['э']='e', ['ә']='ə', ['ю']='ju', ['я']='ja', ["ˮ"]="ʔ", ["і"]="i", ['ң']="ŋ", } function export.tr(text, lang, sc) text = mw.ustring.gsub(text, "З̌", "Ð") text = mw.ustring.gsub(text, "з̌", "ð") text = mw.ustring.gsub(text, "([ТДНтдн])И", "%1Ji") text = mw.ustring.gsub(text, "([ТДНтдн])и", "%1ji") return (mw.ustring.gsub(text, '.' ,tab)) end return export 6x3xigk5y7b471gc1wtak8teoiorvms মডিউল:nit-Deva-translit 828 168833 510385 2026-06-07T12:47:39Z RedminBot 9553 [[en:Module:nit-Deva-translit]] থেকে আনা হলো 510385 Scribunto text/plain local export = {} local consonants = { ['क']='k', ['ख']='kh', ['ग']='g', ['घ']='gh', ['ङ']='ṅ', ['च']='c', ['छ']='ch', ['ज']='j', ['झ']='jh', ['ञ']='ñ', ['ट']='ṭ', ['ठ']='ṭh', ['ड']='ḍ', ['ढ']='ḍh', ['ण']='ṇ', ['त']='t', ['थ']='th', ['द']='d', ['ध']='dh', ['न']='n', ['प']='p', ['फ']='ph', ['ब']='b', ['भ']='bh', ['म']='m', ['य']='y', ['र']='r', ['ल']='l', ['व']='v', ['ळ']='ḷ', ['श']='ś', ['ष']='ṣ', ['स']='s', ['ह']='h', ['क़'] = 'q', ['ख़'] = 'x', ['ग़'] = 'ġ', ['फ़'] = 'f', ['ज़'] = 'z', ['झ़'] = 'ź', ['ड़'] = 'ṛ', ['ढ़'] = 'ṛh', } local diacritics = { ['ा']='ā', ['ि']='i', ['ी']='ī', ['ु']='u', ['ू']='ū', ['ृ']='ṛ', ['ॄ']='ṝ', ['ॢ']='ḷ', ['ॣ']='ḹ', ['े']='e', ['ै']='ai', ['ो']='o', ['ौ']='au', ['्']='', } local tt = { -- vowels ['अ']='a', ['आ']='ā', ['इ']='i', ['ई']='ī', ['उ']='u', ['ऊ']='ū', ['ऋ']='ṛ', ['ॠ']='ṝ', ['ऌ']='ḷ', ['ॡ']='ḹ', ['ए']='e', ['ऐ']='ai', ['ओ']='o', ['औ']='au', -- chandrabindu ['ँ']='m̐', --until a better method is found -- anusvara ['ं']='ṃ', --until a better method is found -- visarga ['ः']='ḥ', -- avagraha ['ऽ']='ʼ', --numerals ['०']='0', ['१']='1', ['२']='2', ['३']='3', ['४']='4', ['५']='5', ['६']='6', ['७']='7', ['८']='8', ['९']='9', --punctuation ['॥']='.', --double danda ['।']='.', --danda --Om ['ॐ']='oṃ', } function export.tr(text, lang, sc) if sc ~= "Deva" then return nil end text = mw.ustring.gsub( text, '([क-ह])'.. '([ािीुूृॄॢॣेैोौ्]?)'.. '([अ-औ]?)', function(c, d, e) if d == "" and e ~= "" then if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. '̈' else return consonants[c] .. 'a' .. tt[e] end elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) return text end return export 9s4w3if4plbyn6m3pdpcm9q0xzuvv9x মডিউল:nit-Telu-translit 828 168834 510386 2026-06-07T12:47:39Z RedminBot 9553 [[en:Module:nit-Telu-translit]] থেকে আনা হলো 510386 Scribunto text/plain local export = {} local consonants = { ['క']='k' , ['ఖ']='kh' , ['గ']='g' , ['ఘ']='gh' , ['ఙ']='ṅ' , ['చ']='c' , ['ఛ']='ch' , ['జ']='j' , ['ఝ']='jh' , ['ఞ']='ñ' , ['ట']='ṭ' , ['ఠ']='ṭh' , ['డ']='ḍ' , ['ఢ']='ḍh' , ['ణ']='ṇ' , ['త']='t' , ['థ']='th' , ['ద']='d' , ['ధ']='dh' , ['న']='n' , ['ప']='p' , ['ఫ']='ph' , ['బ']='b' , ['భ']='bh' , ['మ']='m' , ['య']='y' , ['ర']='r' , ['ల']='l' , ['వ']='v' , ['ళ']='ḷ' , ['శ']='ś' , ['ష']='ṣ' , ['స']='s' , ['హ']='h' , ['ఱ']='ṟ' , ['ఴ']='ḻ' , ['ౘ']='ĉ' , ['ౙ']='ẑ' , ['ౚ']='ṟ̄' , ['క఼']='q' , ['ఖ఼']='x' , ['గ఼']='ġ' , ['జ఼']='z', ['ఝ఼']='ź', ['ఫ఼']='f', ['డ఼']='ṛ', ['ఢ఼']='ṛh', ['న఼']='ṉ', } local diacritics = { ['ా']= 'ā' , ['ి']='i' , ['ీ']='ī' , ['ు']='u' , ['ూ']='ū' , ['ృ']='r̥' , ['ౄ']='r̥̄' , ['ౢ']='l̥' , ['ౣ']='l̥̄' , ['ె']='e' , ['ే']='ē' , ['ై']='ai' , ['ొ']='o' , ['ో']='ō' , ['ౌ']='au' , ['్']='' , } local tt = { -- vowels ['అ']='a' , ['ఆ']='ā' , ['ఇ']='i' , ['ఈ']='ī' , ['ఉ']='u' , ['ఊ']='ū' , ['ఋ']='r̥' , ['ౠ']='r̥̄' , ['ఌ']='l̥' , ['ౡ']='l̥̄', ['ఎ']='e' , ['ఏ']='ē' , ['ఐ']='ai' , ['ఒ']='o' , ['ఓ']='ō' , ['ఔ']='au' , ['అం']='aṁ' , ['అఁ']='an̆' , ['అః']='aḥ' , -- other symbols ['ం']='ṁ',-- anusvara ['ః']='ḥ' , -- visarga ['ఁ']='n̆' , -- candrabindu/arthanusvāra/aranusa ['ఀ']='m̐' , -- combining candrabindu ['ఽ']='’' , -- avagraha -- digits ['౦'] = '0', ['౧'] = '1', ['౨'] = '2', ['౩'] = '3', ['౪'] = '4', ['౫'] = '5', ['౬'] = '6', ['౭'] = '7', ['౮'] = '8', ['౯']= '9', ['౸']='0⁄4', ['౹']='¼', ['౺']='2⁄4', ['౻']='¾', ['౦']='0⁄16', ['౼']='1⁄16', ['౽']='2⁄16', ['౾']='3⁄16' , } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '([కఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరలవళశషసహఱఴౘౙౚ])'.. '([ాిీుూృ̥ౄ̥̄ెేైొోౌ్]?)', function(c, d) if d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) -- anusvara text = mw.ustring.gsub(text, 'ṁ([kqxgġṅ])', 'ṅ%1') text = mw.ustring.gsub(text, 'ṁ([cjźñ])', 'ñ%1') text = mw.ustring.gsub(text, 'ṁ([ṭḍṇ])', 'ṇ%1') text = mw.ustring.gsub(text, 'ṁ([tdnĉẑz])', 'n%1') text = mw.ustring.gsub(text, 'ṁ([pfbm])', 'm%1') return text end return export eztvkjvbw8doh740obx0dgijw6w11p8 মডিউল:niv-translit/testcases 828 168835 510387 2026-06-07T12:47:40Z RedminBot 9553 [[en:Module:niv-translit/testcases]] থেকে আনা হলো 510387 Scribunto text/plain local tests = require("Module:UnitTests") local translit = require("Module:niv-translit") function tests:check_translit(Cyrl, Latn) self:equals(('<span lang="niv" class="Cyrl mention">[[%s#Nivkh|%s]]</span>'):format(Cyrl, Cyrl), translit.tr(Cyrl, 'niv', 'Cyrl'), Latn) end function tests:test_translit() local examples = { { "ераӄ", "jeraq" }, { "маёдь", "majod̦" }, { "поезд", "pojezd" }, { "няӽ", "ņaẋ" }, { "няӻр", "ņaꜧ̇r" }, { "атьх", "ațx" }, { "кʼеӄ", "kʼeq" }, { "иф урладьғугирпарк ескидь", "if urlad̦ꜧugirpark jeskid̦" }, { "нюдь", "ņud̦" }, { "ӿилх", "hilx" }, } self:iterate(examples, "check_translit") end return tests pz4az65mnhj5sz48vu2teqqkj05ohlo মডিউল:oaa-translit 828 168836 510388 2026-06-07T12:47:41Z RedminBot 9553 [[en:Module:oaa-translit]] থেকে আনা হলো 510388 Scribunto text/plain local export = {} local single_letter_replacements = { ["А"]='A', ["а"]='a', ["Б"]='B', ["б"]='b', ["В"]='V', ["в"]='v', ["Е"]='E', ["е"]='e', ["Ё"]='Jo', ["ё"]='jo', ["Г"]='G', ["г"]='g', ["Д"]='D', ["д"]='d', ["Ӡ"]='Ʒ', ["ӡ"]='ʒ', ["И"]='I', ["и"]='i', ["Ӣ"]='Ī', ["ӣ"]='ī', ["Й"]='J', ["й"]='j', ["К"]='K', ["к"]='k', ["Л"]='L', ["л"]='l', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["Ӈ"]='Ŋ', ["ӈ"]='ŋ', ["Ԩ"]='Ń', ["ԩ"]='ń', ["О"]='O', ["о"]='o', ["Ө"]='Ö', ["ө"]='ö', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Ӯ"]='Ū', ["ӯ"]='ū', ["Х"]='H', ["х"]='h', ["Ч"]='Č', ["ч"]='č', ["Ы"]='Y', ["ы"]='y', ["Э"]='Ə', ["э"]='ə', ["Ю"]='Ju', ["ю"]='ju', ["Я"]='Ja', ["я"]='ja', ['Ъ']='ʺ', ['ъ']='ʺ', -- NOT PRESENT IN THE ORIGINAL LATINISATION -- -- non-native letters ["Ж"]='Ž', ["ж"]='ž', ["З"]='Z', ["з"]='z', ["Ц"]='C', ["ц"]='c', ["Ш"]='Š', ["ш"]='š', ["Щ"]='Šč', ["щ"]='šč', ["Ь"]="’", ["ь"]="’", ["Ф"]='F', ["ф"]='f', -- non-standard letters ["Ҥ"]='Ŋ', ["ҥ"]='ŋ', } function export.tr(text, lang, sc) return (mw.ustring.gsub(text, ".", single_letter_replacements)) end return export 1jqwuc9q0huyquwiz7ss3pldy2ifcx0 মডিউল:okm-translit/testcases 828 168837 510389 2026-06-07T12:47:41Z RedminBot 9553 [[en:Module:okm-translit/testcases]] থেকে আনা হলো 510389 Scribunto text/plain local tests = require('Module:UnitTests') local m = require('Module:okm-translit') local lang local sc function tests:rom(text, expected) local rom = m.tr(text, lang, sc) rom = mw.ustring.toNFC(rom) return self:equals(text, rom, expected, { show_difference = true, }) end function tests:test_rom() self:rom( "달->g아〮 됴〯->ᄒᆞᆯᄊᆡ〮", "tàlG-á tywǒh-òlssóy" ) self:rom( "아ᄅᆞᆷ다->오며 자->피-다", "alomtaw-omye cap-hi-ta" ) self:rom( "->>>큰〮 구->데〮 가도〮-고〮 飮食(음〯식〮) 아니〮 주-더〮니〮", "khú-n kwùt-éy kàtwó-kwó ǓM.SÍK àní cwù-téní" ) self:rom( "어듸 가->>져-->>간다?", "etuy kacy-e-ka-nta?" ) self:rom( "->>>>ᄃᆞᇌ-ᄣᅢ 엄-->쏘리", "tolk-s-pstay em-s-swoli" ) self:rom( "憔悴(쵸ᄎᆒ)", "CHYWO.CHYWEY" ) self:rom( "나->>랏〮 말〯ᄊᆞ->미〮 中(듀ᇰ)國(귁〮)-에〮 달g아〮", "nàlá-s mǎlssòm-í TYWÙNG.KWÚYK-éy tàlGá" ) self:rom( "正(져ᇰ〮)音(ᅙᅳᆷ)-은〮 百(ᄇᆡᆨ〮)姓(셔ᇰ〮) ᄀᆞᄅᆞ치〮시논〮 正(져ᇰ〮)ᄒᆞᆫ 소리〮-라〮", "CYÉNG.QÙM-ún PÓYK.SYÉNG kòlòchísìnwón CYÉNGhòn swòlí-lá" ) self:rom( "나->>랏〮 어비〮ᄆᆞᆮ-내〮-ᄅᆞᆯ〮 모도〮아〮 니ᄅᆞ샤〮ᄃᆡ〮", "nàlá-s èpímòt-náy-lól mwòtwóá nìlòsyátóy" ) self:rom( "ᄀᆞᇫg애〮", "kòzGáy" ) self:rom( "가ᄫᆞᆫ〮ᄃᆡ〮", "kàWóntóy" ) self:rom( "文(문)字(ᄍᆞᆼ〮) 文字(문ᄍᆞᆼ〮)", "MWÙN.CCÓ MWÙN.CCÓ" ) self:rom( "遠(원)方(방) 遠方(원방)", "WEN.PANG WEN.PANG" ) self:rom( "字(아아아아) 注乙(줄)", "A.A.A.A CWUL" ) self:rom( "使(ᄉᆞᆼ〯)-ᄂᆞᆫ〮 ᄒᆡ〯ᅇᅧ〮-ᄒᆞ〮논 마〮->리라〮", "SǑ-nón hǒyOOyé-hónwòn mál-ìlá" ) self:rom( "가-괙〮 가->괙〮 가->>괙〮 가->>>괙〮 가->>>>괙〮 가-->->>->>>->>>>괙〮", "kà-kwáyk kàk-wáyk kàkw-áyk kàkwá-yk kàkwáy-k kà-k-w-á-y-k" ) self:rom( "->>내〮", "ná-y" ) self:rom( "->>내", "na-y" ) self:rom( "어〮마->>>니ᇝ〯", "émànǐm-s" ) self:rom( "하->>>ᄂᆞᆳ〮 하->>>ᄂᆞᇙ〮", "hànól-s hànól-q" ) self:rom( "시->>>긧", "sikuy-s" ) self:rom( "시->>>긧 시->>>긧-벼ᇰ〯", "sìkùy-s sìkùy-s-pyěng" ) self:rom( "子(ᄌᆞ)ㅣ 子(ᄌᆞ)ᅵ 子(ᄌᆞ)ᅟᅵ", -- standalone letter i; jungseong i; choseong filler + jungseong i "COy COy COy" ) self:rom( "子(ᄌᆞ)-ㅣ 子(ᄌᆞ)-ᅵ 子(ᄌᆞ)ᅟ-ᅵ", -- standalone letter i; jungseong i; choseong filler + jungseong i "CO-y CO-y CO-y" ) self:rom( "與(여)ᅟᅵᆫ", -- choseong filler + jungseong i + jongseong n "YEyn" ) self:rom( "젹ᄃᆞᆯ '''長霾(쟝마)'''-ㅣ 젹ᄃᆞᆯ '''쟝마(長霾)'''-ㅣ", "cyektol '''CYANG.MA'''-y cyektol '''cyangma'''-y" ) self:rom( "ᄂᆞᆷ-도 우리 ᄀᆞ티 서ᄅᆞ 에엿ᄲᅵ 녀겨 ᄉᆞ라ᇰ-ᄒᆞ리 ᄂᆞᆷ-도 우리 ᄀᆞᄐᆞᆫ가", "nom-two wuli kothi selo eyyesspi nyekye solang-holi nom-two wuli kothonka" ) end function tests:test_rom_legacy() self:rom( "나---랏〮 말〯ᄊᆞ--미〮 中(듀ᇰ)國(귁〮)-에〮 달g아〮", "nàlá-s mǎlssòm-í TYÙNG.KWÚYK-éy tàlGá" ) self:rom( "正(져ᇰ〮)音(ᅙᅳᆷ)-은〮 百(ᄇᆡᆨ〮)姓(셔ᇰ〮) ᄀᆞᄅᆞ치〮시논〮 正(져ᇰ〮)ᄒᆞᆫ 소리〮-라〮", "CYÉNG.QÙM-ún PÓYK.SYÉNG kòlòchísìnwón CYÉNGhòn swòlí-lá" ) self:rom( "나---랏〮 어비〮ᄆᆞᆮ-내〮-ᄅᆞᆯ〮 모도〮아〮 니ᄅᆞ샤〮ᄃᆡ〮", "nàlá-s èpímòt-náy-lól mwòtwóá nìlòsyátóy" ) self:rom( "ᄀᆞᇫg애〮", "kòzGáy" ) self:rom( "가ᄫᆞᆫ〮ᄃᆡ〮", "kàWóntóy" ) self:rom( "文(문)字(ᄍᆞᆼ〮) 文字(문ᄍᆞᆼ〮)", "MWÙN.CCÓ MWÙN.CCÓ" ) self:rom( "遠(원)方(방) 遠方(원방)", "WEN.PANG WEN.PANG" ) self:rom( "字(아아아아) 注乙(줄)", "A.A.A.A CWUL" ) self:rom( "使(ᄉᆞᆼ〯)-ᄂᆞᆫ〮 ᄒᆡ〯ᅇᅧ〮-ᄒᆞ〮논 마〮--리라〮", "SǑ-nón hǒyOOyé-hónwòn mál-ìlá" ) self:rom( "가-괙〮 가--괙〮 가---괙〮", "kà-kwáyk kàk-wáyk kàkwáy-k" ) self:rom( "----내〮", "ná-y" ) self:rom( "----내", "na-y" ) self:rom( "어〮마---니ᇝ〯", "émànǐm-s" ) self:rom( "하---ᄂᆞᆳ〮 하---ᄂᆞᇙ〮", "hànól-s hànól-q" ) self:rom( "시---긧", "sikuy-s" ) self:rom( "시---긧 시---긧-벼ᇰ〯", "sìkùy-s sìkùy-s-pyěng" ) self:rom( "子(ᄌᆞ)ㅣ 子(ᄌᆞ)ᅵ 子(ᄌᆞ)ᅟᅵ", -- standalone letter i; jungseong i; choseong filler + jungseong i "COy COy COy" ) self:rom( "子(ᄌᆞ)-ㅣ 子(ᄌᆞ)-ᅵ 子(ᄌᆞ)ᅟ-ᅵ", -- standalone letter i; jungseong i; choseong filler + jungseong i "CO-y CO-y CO-y" ) self:rom( "與(여)ᅟᅵᆫ", -- choseong filler + jungseong i + jongseong n "YEyn" ) self:rom( "젹ᄃᆞᆯ '''長霾(쟝마)'''-ㅣ 젹ᄃᆞᆯ '''쟝마(長霾)'''-ㅣ", "cyektol '''CYANG.MA'''-y cyektol '''cyangma'''-y" ) self:rom( "ᄂᆞᆷ-도 우리 ᄀᆞ티 서ᄅᆞ 에엿ᄲᅵ 녀겨 ᄉᆞ라ᇰ-ᄒᆞ리 ᄂᆞᆷ-도 우리 ᄀᆞᄐᆞᆫ가", "nom-two wuli kothi selo eyyesspi nyekye solang-holi nom-two wuli kothonka" ) self:rom( "藥(약) 든 가ᄉᆞᆷ-을 맛초ᄋᆞᆸ사이다", "YAK tun kasom-ul maschwoopsa[ng]ita" ) end return tests bsk6pypiv6dvypb0j9nu3dbjogltov8 মডিউল:or-translit/testcases 828 168838 510390 2026-06-07T12:47:43Z RedminBot 9553 [[en:Module:or-translit/testcases]] থেকে আনা হলো 510390 Scribunto text/plain -- Unit tests for [[Module:or-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local or_translit = require('Module:or-translit') --TO DO function tests:do_test_translit(orya, roman, xlit) self:equals('<span class="Orya" lang="or">[[' .. orya .. '#Odia|' .. orya .. ']]</span>', or_translit.tr(orya, 'or', 'Orya'), roman) end function tests:test_translit_oriya() self:do_test_translit('ଓଡ଼ିଆ', 'oṛia') self:do_test_translit('ଓଡ଼ିଶା', 'oṛiśa') self:do_test_translit('ଚାରି', 'cari') self:do_test_translit('ଏକ', 'ekô') self:do_test_translit('ପାଞ୍ଚ', 'pañcô') end return tests jwvgm0su1frbv5apb9tl2d77h0dq6ih মডিউল:ota-Armn-translit 828 168839 510391 2026-06-07T12:47:43Z RedminBot 9553 [[en:Module:ota-Armn-translit]] থেকে আনা হলো 510391 Scribunto text/plain local export = {} -- Used to transliterate the [[w:Armeno-Turkish alphabet]] local gsub = require("Module:string utilities").gsub local mapping = { ["ա"]="a", ["գ"]="k", ["ե"]="y", ["զ"]="z", ["է"]="e", ["ը"]="ı", ["թ"]="t", ["ժ"]="j", ["ի"]="i", ["լ"]="l", ["խ"]="h", ["կ"]="g", ["հ"]="h", ["ղ"]="ğ", ["ճ"]="c", ["մ"]="m", ["յ"]="y", ["ն"]="n", ["շ"]="ş", ["ո"]="o", ["չ"]="ç", ["պ"]="b", ["ս"]="s", ["վ"]="v", ["տ"]="d", ["ր"]="r", ["փ"]="p", ["ք"]="k", ["և"]="ew", ["օ"]="o", ["ֆ"]="f", ["Ա"]="A", ["Գ"]="K", ["Ե"]="Y", ["Զ"]="Z", ["Է"]="E", ["Ը"]="I", ["Թ"]="T", ["Ժ"]="J", ["Ի"]="İ", ["Լ"]="L", ["Խ"]="H", ["Կ"]="G", ["Հ"]="H", ["Ղ"]="Ğ", ["Ճ"]="C", ["Մ"]="M", ["Յ"]="Y", ["Ն"]="N", ["Շ"]="Ş", ["Ո"]="O", ["Չ"]="Ç", ["Պ"]="B", ["Ս"]="S", ["Վ"]="V", ["Տ"]="D", ["Ր"]="R", ["Փ"]="P", ["Ք"]="K", ["Օ"]="O", ["Ֆ"]="F", -- turning RIGHT SINGLE QUOTATION MARK (U+2019) into MODIFIER LETTER APOSTROPHE (U+02BC) -- the encoding ARMENIAN APOSTROPHE (U+055A) is dispreferred by the Unicode standard ["’"]="ʼ", -- not used in Turkish words ["բ"]="p", ["դ"]="t", ["ծ"]="dz", ["ձ"]="ts", ["ջ"]="ç", ["ռ"]="r", ["ց"]="ts", ["Բ"]="P", ["Դ"]="T", ["Ծ"]="Dz", ["Ձ"]="Ts", ["Ջ"]="Ç", ["Ռ"]="R", ["Ց"]="Ts", -- punctuation ["՝"]=",", ["։"]=".", ["․"]=";", ["՛"]="́", ["՜"]="<sup>!</sup>", ["՞"]="<sup>?</sup>", ["՟"]=".", ["֊"]="-", ['«']='“', ['»']='”', } local replacements = { ['([ՔԿ])ԵԱ'] = '%1Â', ['([ՔքԿկ])եա'] = '%1â', -- լեա is lya ['Ո[ւՒ]'] = 'U', ['ու'] = 'u', ['Ի[ւՒ]'] = 'Ü', ['իւ'] = 'ü', ['Է[օՕ]'] = 'Ö', ['էօ'] = 'ö', ['Ո՛[ւՒ]'] = 'Ú', ['ո՛ւ'] = 'ú', ['Ո՜[ւՒ]'] = 'U<sup>!</sup>', ['ո՜ւ'] = 'u<sup>!</sup>', ['Ո՞[ւՒ]'] = 'U<sup>?</sup>', ['ո՞ւ'] = 'u<sup>?</sup>', -- ['Ն[ԿՂ]'] = 'Ñ', these cannot be handled automatically -- ['ն[կղ]'] = 'ñ', these cannot be handled automatically } function export.tr(text, lang, sc) if sc and sc ~= "Armn" then return nil end for regex, replacement in pairs(replacements) do text = gsub(text, regex, replacement) end text = gsub(text, '.', mapping) return text end return export f9iwg5kz5g8ymvrxkzr8ajy2oz8uo8s মডিউল:oty-translit 828 168840 510392 2026-06-07T12:47:43Z RedminBot 9553 [[en:Module:oty-translit]] থেকে আনা হলো 510392 Scribunto text/plain local export = {} local u = mw.ustring.char local consonants = { --consonants ['𑀓']='k', ['𑀔']='kh', ['𑀕']='g', ['𑀖']='gh', ['𑀗']='ṅ', ['𑀘']='c', ['𑀙']='ch', ['𑀚']='j', ['𑀛']='jh', ['𑀜']='ñ', ['𑀝']='ṭ', ['𑀞']='ṭh', ['𑀟']='ḍ', ['𑀠']='ḍh', ['𑀡']='ṇ', ['𑀢']='t', ['𑀣']='th', ['𑀤']='d', ['𑀥']='dh', ['𑀦']='n', ['𑀧']='p', ['𑀨']='ph', ['𑀩']='b', ['𑀪']='bh', ['𑀫']='m', ['𑀬']='y', ['𑀭']='r', ['𑀮']='l', ['𑀯']='v', ['𑀴']='ḷ', ['𑀰']='ś', ['𑀱']='ṣ', ['𑀲']='s', ['𑀳']='h', -- Old Tamil [u(0x11075)] = 'ḷ', ['𑀵']='ḻ', ['𑀶']='ṟ', ['𑀷'] ='ṉ', } local diacritics = { --matras ['𑀸']='ā', ['𑀺']='i', ['𑀻']='ī', ['𑀼']='u', ['𑀽']='ū', ['𑀾']='ṛ', ['𑀿']='ṝ', ['𑁀']='l̥', ['𑁁']='l̥̄', ['𑁂']='e', ['𑁃']='ai', ['𑁄']='o', ['𑁅']='au', ['𑁆']='', --bhattiprolu aa ['𑀹']='ā', --Old Tamil ['𑁳']='ĕ', ['𑁴']='ŏ', [u(0x11070)]='', -- Old Tamil up to and including Unicode 13.0 ['𑁂𑁆']='ĕ', ['𑁄𑁆']='ŏ', -- Two character vowels! } local diatrema = { ['𑀇']='ï', ['𑀉']='ü', } local tt = { --vowels ['𑀅']='a', ['𑀆']='ā', ['𑀇']='i', ['𑀈']='ī', ['𑀉']='u', ['𑀊']='ū', ['𑀋']='ṛ', ['𑀌']='ṝ', ['𑀍']='l̥', ['𑀎']='l̥̄', ['𑀏']='e', ['𑀐']='ai', ['𑀑']='o', ['𑀒']='au', ['𑁱']='ĕ', ['𑁲']='ŏ', --Old Tamil -- chandrabindu ['𑀀']='m̐', --until a better method is found -- anusvara ['𑀁']='ṃ', --until a better method is found -- visarga ['𑀂']='ḥ', --numerals ['𑁦']='0', ['𑁧']='1', ['𑁨']='2', ['𑁩']='3', ['𑁪']='4', ['𑁫']='5', ['𑁬']='6', ['𑁭']='7', ['𑁮']='8', ['𑁯']='9', --punctuation ['𑁇']='.', --danda ['𑁈']='.' --double danda } function export.tr(text, lang, sc) if sc ~= "Brah" then return nil end if lang == "pra" then -- Route contextually shortened Prakrit vowels through Old Tamil short vowels text = mw.ustring.gsub(text, '(𑁂)([𑀅-𑀳]?)(𑁆)([𑀅-𑀳]?)', '𑁳%2%3%4') text = mw.ustring.gsub(text, '(𑀏)([𑀅-𑀳]?)(𑁆)([𑀅-𑀳]?)', '𑁱%2%3%4') text = mw.ustring.gsub(text, '(𑁄)([𑀅-𑀳]?)(𑁆)([𑀅-𑀳]?)', '𑁴%2%3%4') text = mw.ustring.gsub(text, '(𑀑)([𑀅-𑀳]?)(𑁆)([𑀅-𑀳]?)', '𑁲%2%3%4') end text = mw.ustring.gsub( text, '([𑀓-𑀷'..u(0x11075)..'])'.. '([𑀸𑀺𑀺𑀻𑀼𑀽𑀾𑀿𑁀𑁁𑁂𑁃𑁄𑁅𑁆𑀹𑁳𑁴'..u(0x11070)..']?𑁆?)'.. '([𑀇𑀉]?)', function(c, d, e) if d == "" and e ~= "" then return consonants[c] .. 'a' .. diatrema[e] elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) -- Adjacent vowel letters needing dieresis text = mw.ustring.gsub(text, '([𑀅])([𑀇𑀉])', function(a, b) return tt[a]..diatrema[b] end) text = mw.ustring.gsub(text, '.', tt) if (lang == 'sa' or lang == 'pi') and mw.ustring.match(text, 'l̥') then text = mw.ustring.gsub(text, 'l̥', 'ḷ') text = mw.ustring.toNFC(text) end -- Old Tamil uses macron v. plain for 'e' and 'o'. if (lang == 'oty') then text = mw.ustring.gsub(text, '.', {e='ē', o='ō', ['ĕ']='e', ['ŏ']='o'}) end return text end return export ri9vieoe7mvlnm8vup2821b7858cvwa মডিউল:pci-Deva-translit 828 168841 510393 2026-06-07T12:47:44Z RedminBot 9553 [[en:Module:pci-Deva-translit]] থেকে আনা হলো 510393 Scribunto text/plain local export = {} local consonants = { ['क']='k', ['ख']='kh', ['ग']='g', ['घ']='gh', ['ङ']='ṅ', ['च']='c', ['छ']='ch', ['ज']='j', ['झ']='jh', ['ञ']='ñ', ['ट']='ṭ', ['ठ']='ṭh', ['ड']='ḍ', ['ढ']='ḍh', ['ण']='ṇ', ['त']='t', ['थ']='th', ['द']='d', ['ध']='dh', ['न']='n', ['प']='p', ['फ']='ph', ['ब']='b', ['भ']='bh', ['म']='m', ['य']='y', ['र']='r', ['ल']='l', ['व']='v', ['ळ']='ḷ', ['श']='ś', ['ष']='ṣ', ['स']='s', ['ह']='h', ['क़'] = 'q', ['ख़'] = 'x', ['ग़'] = 'ġ', ['फ़'] = 'f', ['ज़'] = 'z', ['झ़'] = 'ź', ['ड़'] = 'ṛ', ['ढ़'] = 'ṛh', } local diacritics = { ['ा']='ā', ['ि']='i', ['ी']='ī', ['ु']='u', ['ू']='ū', ['ृ']='ṛ', ['ॄ']='ṝ', ['ॢ']='ḷ', ['ॣ']='ḹ', ['े']='e', ['ै']='ai', ['ो']='o', ['ौ']='au', ['्']='', } local tt = { -- vowels ['अ']='a', ['आ']='ā', ['इ']='i', ['ई']='ī', ['उ']='u', ['ऊ']='ū', ['ऋ']='ṛ', ['ॠ']='ṝ', ['ऌ']='ḷ', ['ॡ']='ḹ', ['ए']='e', ['ऐ']='ai', ['ओ']='o', ['औ']='au', -- chandrabindu ['ँ']='m̐', --until a better method is found -- anusvara ['ं']='ṃ', --until a better method is found -- visarga ['ः']='ḥ', -- avagraha ['ऽ']='ʼ', --numerals ['०']='0', ['१']='1', ['२']='2', ['३']='3', ['४']='4', ['५']='5', ['६']='6', ['७']='7', ['८']='8', ['९']='9', --punctuation ['॥']='.', --double danda ['।']='.', --danda --Om ['ॐ']='oṃ', } function export.tr(text, lang, sc) if sc ~= "Deva" then return nil end text = mw.ustring.gsub( text, '([क-ह])'.. '([ािीुूृॄॢॣेैोौ्]?)'.. '([अ-औ]?)', function(c, d, e) if d == "" and e ~= "" then if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. '̈' else return consonants[c] .. 'a' .. tt[e] end elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, '.', tt) return text end return export 9s4w3if4plbyn6m3pdpcm9q0xzuvv9x মডিউল:pci-Orya-translit 828 168842 510394 2026-06-07T12:47:44Z RedminBot 9553 [[en:Module:pci-Orya-translit]] থেকে আনা হলো 510394 Scribunto text/plain local export = {} local consonants = { --common ["କ"]="k", ["ଖ"]="kh", ["ଗ"]="g", ["ଘ"]="gh", ["ଙ"]="ṅ", ["ଚ"]="c", ["ଛ"]="ch", ["ଜ"]="j", ["ଝ"]="jh", ["ଞ"]="ñ", ["ଟ"]="ṭ", ["ଠ"]="ṭh", ["ଡ"]="ḍ", ["ଢ"]="ḍh", ["ଣ"]="ṇ", ["ତ"]="t", ["ଥ"]="th", ["ଦ"]="d", ["ଧ"]="dh", ["ନ"]="n", ["ପ"]="p", ["ଫ"]="ph", ["ବ"]="b", ["ଭ"]="bh", ["ମ"]="m", ["ଯ"]="j", ["ୟ"]="y", ["ର"]="r", ["ଲ"]="l", ["ଳ"]="ḷ", ["ଵ"]="v", ["ୱ"]="w", ["ଶ"]="ś", ["ଷ"]="ṣ", ["ସ"]="s", ["ହ"]="h", --nuktas ["କ଼"]="q", ["ଖ଼"]="x", ["ଗ଼"]="ġ", ["ଜ଼"]="z", ["ଝ଼"]="ź", ["ଡ଼"]="ṛ", ["ଢ଼"]="ṛh", ["ଫ଼"]="f", } local diacritics = { ["ା"]="ā", ["ି"]="i", ["ୀ"]="ī", ["ୁ"]="u", ["ୂ"]="ū", ["ୃ"]="ru", ["ୄ"]="rū", ["ୢ"]="lu", ["ୣ"]="lū", ["େ"]="e", ["ୈ"]="ai", ["ୖ"]="ai", ["ୋ"]="o", ["ୌ"]="au", ["ୗ"]="au", ["୍"]="", } local tt = { -- vowels ["ଅ"]="a", ["ଆ"]="ā", ["ଇ"]="i", ["ଈ"]="ī", ["ଉ"]="u", ["ଊ"]="ū", ["ଋ"]="ru", ["ୠ"]="rū", ["ଌ"]="lu", ["ୡ"]="lū", ["ଏ"]="e", ["ଐ"]="ai", ["ଓ"]="o", ["ଔ"]="au", -- chandrabindu ["ଁ"]="m̐", --until a better method is found -- anusvara ["ଂ"]="ṃ", --until a better method is found -- visarga ["ଃ"]="ḥ", -- avagraha ["ଽ"]="’", --numerals ["୦"]="0", ["୧"]="1", ["୨"]="2", ["୩"]="3", ["୪"]="4", ["୫"]="5", ["୬"]="6", ["୭"]="7", ["୮"]="8", ["୯"]="9", ["୲"]="¼", ["୳"]="½", ["୴"]="¾", ["୵"]="¹⁄₁₆", ["୶"]="⅛", ["୷"]="³⁄₁₆", --punctuation ["।"]=".", --danda } function export.tr(text, lang, sc) text = mw.ustring.gsub( text, "([କଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଵଭମଯୟରଲଳୱଶଷସହ]଼?)".. "([ାିୀୁୂୃୄେୈୖୋୌୗ୍ୢୣ]?)", function(c, d) if not consonants[c] then return c end if d == "" then return consonants[c] .. "a" else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, ".", tt) return text end return export 6bq9ek1z2ahlhqdf2qzo4usaww85mcf মডিউল:peg-translit 828 168843 510395 2026-06-07T12:47:45Z RedminBot 9553 [[en:Module:peg-translit]] থেকে আনা হলো 510395 Scribunto text/plain local export = {} local consonants = { --common ["କ"]="k", ["ଖ"]="kh", ["ଗ"]="g", ["ଘ"]="gh", ["ଙ"]="ṅ", ["ଚ"]="c", ["ଛ"]="ch", ["ଜ"]="j", ["ଝ"]="jh", ["ଞ"]="ñ", ["ଟ"]="ṭ", ["ଠ"]="ṭh", ["ଡ"]="ḍ", ["ଢ"]="ḍh", ["ଣ"]="ṇ", ["ତ"]="t", ["ଥ"]="th", ["ଦ"]="d", ["ଧ"]="dh", ["ନ"]="n", ["ପ"]="p", ["ଫ"]="ph", ["ବ"]="b", ["ଭ"]="bh", ["ମ"]="m", ["ଯ"]="j", ["ୟ"]="y", ["ର"]="r", ["ଲ"]="l", ["ଳ"]="ḷ", ["ଵ"]="v", ["ୱ"]="w", ["ଶ"]="ś", ["ଷ"]="ṣ", ["ସ"]="s", ["ହ"]="h", --nuktas ["କ଼"]="q", ["ଖ଼"]="x", ["ଗ଼"]="ġ", ["ଜ଼"]="z", ["ଝ଼"]="ź", ["ଡ଼"]="ṛ", ["ଢ଼"]="ṛh", ["ଫ଼"]="f", } local diacritics = { ["ା"]="ā", ["ି"]="i", ["ୀ"]="ī", ["ୁ"]="u", ["ୂ"]="ū", ["ୃ"]="ru", ["ୄ"]="rū", ["ୢ"]="lu", ["ୣ"]="lū", ["େ"]="e", ["ୈ"]="ai", ["ୖ"]="ai", ["ୋ"]="o", ["ୌ"]="au", ["ୗ"]="au", ["୍"]="", } local tt = { -- vowels ["ଅ"]="a", ["ଆ"]="ā", ["ଇ"]="i", ["ଈ"]="ī", ["ଉ"]="u", ["ଊ"]="ū", ["ଋ"]="ru", ["ୠ"]="rū", ["ଌ"]="lu", ["ୡ"]="lū", ["ଏ"]="e", ["ଐ"]="ai", ["ଓ"]="o", ["ଔ"]="au", -- chandrabindu ["ଁ"]="m̐", --until a better method is found -- anusvara ["ଂ"]="ṃ", --until a better method is found -- visarga ["ଃ"]="ḥ", -- avagraha ["ଽ"]="’", --numerals ["୦"]="0", ["୧"]="1", ["୨"]="2", ["୩"]="3", ["୪"]="4", ["୫"]="5", ["୬"]="6", ["୭"]="7", ["୮"]="8", ["୯"]="9", ["୲"]="¼", ["୳"]="½", ["୴"]="¾", ["୵"]="¹⁄₁₆", ["୶"]="⅛", ["୷"]="³⁄₁₆", --punctuation ["।"]=".", --danda } function export.tr(text, lang, sc) text = mw.ustring.gsub( text, "([କଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଵଭମଯୟରଲଳୱଶଷସହ]଼?)".. "([ାିୀୁୂୃୄେୈୖୋୌୗ୍ୢୣ]?)", function(c, d) if not consonants[c] then return c end if d == "" then return consonants[c] .. "a" else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, ".", tt) return text end return export 6bq9ek1z2ahlhqdf2qzo4usaww85mcf মডিউল:peo-translit/testcases 828 168844 510396 2026-06-07T12:47:46Z RedminBot 9553 [[en:Module:peo-translit/testcases]] থেকে আনা হলো 510396 Scribunto text/plain return require "Module:transliteration module testcases"( require "Module:peo-translit".tr, { 'Words', { "𐎫𐎼𐎿𐎫𐎡𐎹", "t-r-s-t-i-y" }, { "𐎭𐎭𐎠𐎬𐎢𐎺", "d-d-a-tu-u-v" }, { "𐎱𐎠𐎮𐎹", "p-a-di-y" }, { "𐎪", "ji" }, { "𐎲𐎼𐏀𐎶𐎴𐎡𐎹", "b-r-z-m-n-i-y" }, { "𐎩𐎮𐎡𐎹𐎠𐎷𐎡𐎹", "j-di-i-y-a-mi-i-y" }, { "𐎠𐎼𐎫𐎠𐎨𐎠", "a-r-t-a-c-a" }, { "'''𐎭𐎭𐎠𐎬𐎢𐎺''' 𐎠𐎼𐎫𐎠𐎨𐎠", "'''d-d-a-tu-u-v''' a-r-t-a-c-a" }, 'Numbers', { "𐏕", "100" }, { "𐏕𐏒𐏑", "103" }, --[[ Copy this to add more examples: { "", "" }, --]] }, "Xpeo", "peo") bdv4cqug7whml4zomlcud6gu2qor43o মডিউল:pgl-translit/testcases 828 168845 510397 2026-06-07T12:47:46Z RedminBot 9553 [[en:Module:pgl-translit/testcases]] থেকে আনা হলো 510397 Scribunto text/plain return require("Module:transliteration module testcases")( require("Module:pgl-translit").tr, { { "ᚊᚓᚅᚒᚃᚓᚅᚇᚐᚅᚔ", "qenuvendani" }, { "ᚋᚐᚊᚔ", "maqi" }, }, "Ogam", "pgl" ) q3o996dc0th6f05kjgam9sfv9x8ynyd মডিউল:pi-Latn-translit/testcases 828 168846 510398 2026-06-07T12:47:47Z RedminBot 9553 [[en:Module:pi-Latn-translit/testcases]] থেকে আনা হলো 510398 Scribunto text/plain local tests = require('Module:UnitTests') tr = require('Module:pi-Latn-translit').tr -- A single letter field is the principal transliteration to the script, encoded as the lowercase letter usable for Template pi-alt. -- (No transliteration, no test.) An explanation for the choice of transliteration may be given in the field whose name is formed -- by suffix '_just', e.g fields 'l' and 'l_just' for the script encoded as 'Lana'. The explanation is printed out if the test is -- deemed to have failed. -- The field aborts is set to a true value if converting the string causes a test terminating error condition to be reported. local cases = { {"vulhati", l = "ᩅᩩᩃ᩠ᩉᨲᩥ"}, {"khalvapi", l = "ᨡᩃ᩠ᩅᨷᩥ"}, -- Clusters with final 'y': {"vākyaṃ", l = "ᩅᩤᨠ᩠ᨿᩴ"}, {"kyāhaṃ", l = "ᨠ᩠ᨿᩣᩉᩴ"}, {"khyāte", l = "ᨡ᩠ᨿᩣᨲᩮ"}, {"mukhyato", l = "ᨾᩩᨡ᩠ᨿᨲᩮᩣ"}, {"saṅkhyāvāro", l = "ᩈᩘᨡ᩠ᨿᩣᩅᩤᩁᩮᩣ", aborts = 1}, {"asaṅkhyeyyāni", l = "ᩋᩈᩘᨡ᩠ᨿᩮᨿ᩠ᨿᩣᨶᩥ", aborts = 1}, {"gyadā", l = "ᨣ᩠ᨿᨴᩤ", l_just = "Cf. NT ᨴᩤ"}, {"ārogyaṃ", l = "ᩋᩣᩁᩮᩣᨣ᩠ᨿᩴ"}, {"ghyaṇa", l = "ᨥ᩠ᨿᨱ"}, {"māghya", l = "ᨾᩣᨥ᩠ᨿ"}, {"laṅghyate", l = "ᩃᩘᨥ᩠ᨿᨲᩮ", aborts = 1}, {"cyatthe", l = "ᨧ᩠ᨿᨲ᩠ᨳᩮ"}, {"ucyate", l = "ᩏᨧ᩠ᨿᨲᩮ"}, {"jyādīhi", l = "ᨩ᩠ᨿᩣᨴᩦᩉᩥ"}, {"pavvajyanti", l = "ᨷᩅ᩠ᩅᨩ᩠ᨿᨶ᩠ᨲᩥ"}, {"nāṭyaṃ", l = "ᨶᩣᨭ᩠ᨿᩴ"}, {"saṭhye", l = "ᩈᨮ᩠ᨿᩮ"}, {"chaṭṭhyatthe", l = "ᨨᨭᩛ᩠ᨿᨲ᩠ᨳᩮ"}, {"kaḍyādīhi", l = "ᨠᨯ᩠ᨿᩣᨴᩦᩉᩥ"}, {"tuṇḍyādīhi", l = "ᨲᩩᨱ᩠ᨯ᩠ᨿᩣᨴᩦᩉᩥ", aborts = 1}, {"ṇyamhi", l = "ᨱ᩠ᨿᨾ᩠ᩉᩥ"}, {"āṇaṇyaṃ", l = "ᩋᩣᨱᨱ᩠ᨿᩴ"}, {"tyāhaṃ", l = "ᨲ᩠ᨿᩣᩉᩴ"}, {"ratyā", l = "ᩁᨲ᩠ᨿᩣ"}, {"thyaṃpañcantehidādhikā", l = "ᨳ᩠ᨿᩴᨷᨬ᩠ᨧᨶ᩠ᨲᩮᩉᩥᨴᩤᨵᩥᨠᩣ"}, {"kathyate", l = "ᨠᨳ᩠ᨿᨲᩮ"}, {"titthyā", l = "ᨲᩥᨲ᩠ᨳ᩠ᨿᩣ"}, {"dyassa", l = "ᨴ᩠ᨿᩔ"}, {"syādyuppatti", l = "ᩈ᩠ᨿᩣᨴ᩠ᨿᩩᨷ᩠ᨷᨲ᩠ᨲᩥ"}, {"dhyādīhi", l = "ᨵ᩠ᨿᩣᨴᩦᩉᩥ", l_just="Cf. NT ᨻ᩠ᨿᩣᨵᩥ from Pali byādhi"}, {"osadhyo", l = "ᩋᩰᩈᨵ᩠ᨿᩮᩣ", l_just="Cf. NT ᨻ᩠ᨿᩣᨵᩥ from Pali byādhi"}, {"nyādayo", l = "ᨶ᩠ᨿᩣᨴᨿᩮᩣ"}, {"atthantaranyāso", l = "ᩋᨲ᩠ᨳᨶ᩠ᨲᩁᨶ᩠ᨿᩣᩈᩮᩣ"}, {"pyatha", l = "ᨷ᩠ᨿᨳ"}, {"ṇiṇāpyāpīhi", l = "ᨱᩥᨱᩣᨷ᩠ᨿᩣᨷᩦᩉᩥ", l_just="Cf. NT ᨻ᩠ᨿᩣᨵᩥ from Pali byādhi"}, {"phyasīnāmake", l = "ᨹ᩠ᨿᩈᩦᨶᩣᨾᨠᩮ"}, {"byākāsi", l = "ᨻ᩠ᨿᩣᨠᩣᩈᩥ", l_just="Cf. NT ᨻ᩠ᨿᩣᨵᩥ from Pali byādhi"}, {"abyākato", l = "ᩋᨻ᩠ᨿᩣᨠᨲᩮᩣ", l_just="Cf. NT ᨻ᩠ᨿᩣᨵᩥ from Pali byādhi"}, {"bhyādīhi", l = "ᨽ᩠ᨿᩣᨴᩦᩉᩥ"}, {"nabhyā", l = "ᨶᨽ᩠ᨿᩣ"}, {"myāyaṃ", l = "ᨾ᩠ᨿᩣᨿᩴ"}, {"paṇamāmyahaṃ", l = "ᨷᨱᨾᩣᨾ᩠ᨿᩉᩴ"}, {"seyyathāpi", l = "ᩈᩮᨿ᩠ᨿᨳᩣᨷᩥ"}, {"ryamhi", l = "ᩁ᩠ᨿᨾ᩠ᩉᩥ"}, {"kalyāṇaṃ", l = "ᨠᩃ᩠ᨿᩣᨱᩴ"}, {"vyaggha", l = "ᩅ᩠ᨿᨣ᩠ᨥ"}, {"syādyantaṃ", l = "ᩈ᩠ᨿᩣᨴ᩠ᨿᨶ᩠ᨲᩴ"}, {"ālasyaṃ", l = "ᩋᩣᩃᩈ᩠ᨿᩴ"}, {"bāhye", l = "ᨻᩤᩉ᩠ᨿᩮ"}, -- Clusters with final v {"kvaci", l = "ᨠ᩠ᩅᨧᩥ"}, {"yāvatakvassa", l = "ᨿᩣᩅᨲᨠ᩠ᩅᩔ"}, {"khvāhaṃ", l = "ᨡ᩠ᩅᩣᩉᩴ"}, {"yadākhvāhaṃ", l = "ᨿᨴᩤᨡ᩠ᩅᩣᩉᩴ", l_just = "Pali dāna is loaned into NT as ᨴᩤ᩠ᨶ"}, {"cakkhvādito", l = "ᨧᨠ᩠ᨡ᩠ᩅᩣᨴᩥᨲᩮᩣ"}, {"tiṭṭhagvādīni", l = "ᨲᩥᨭᩛᨣ᩠ᩅᩣᨴᩦᨶᩥ"}, {"laghvāhārova", l = "ᩃᨥ᩠ᩅᩣᩉᩣᩁᩮᩣᩅ"}, {"paṭilaṅvarappadāno", l = "ᨷᨭᩥᩃᩘᩅᩁᨷ᩠ᨷᨴᩤᨶᩮᩣ", l_just = "Pali dāna is loaned into NT as ᨴᩤ᩠ᨶ"}, {"cve", l = "ᨧ᩠ᩅᩮ"}, {"kyecvā", l = "ᨠ᩠ᨿᩮᨧ᩠ᩅᩣ"}, {"jvā", l = "ᨩ᩠ᩅᩣ"}, {"sajjva", l = "ᩈᨩ᩠ᨩ᩠ᩅ"}, {"nañvacanena", l = "ᨶᨬ᩠ᩅᨧᨶᩮᨶ"}, {"ṇvu", l = "ᨱ᩠ᩅᩩ"}, {"ṇvādi", l = "ᨱ᩠ᩅᩣᨴᩥ"}, {"tvaṃ", l = "ᨲ᩠ᩅᩴ"}, {"nikkhamitvā", l = "ᨶᩥᨠ᩠ᨡᨾᩥᨲ᩠ᩅᩣ"}, {"vatthvettha", l = "ᩅᨲ᩠ᨳ᩠ᩅᩮᨲ᩠ᨳ"}, {"dve", l = "ᨴ᩠ᩅᩮ", c = "𑄘𑄳𑄤𑄬"}, {"vidvā", l = "ᩅᩥᨴ᩠ᩅᩣ"}, {"anveti", l = "ᩋᨶ᩠ᩅᩮᨲᩥ"}, {"nānvāgameyya", l = "ᨶᩣᨶ᩠ᩅᩣᨣᨾᩮᨿ᩠ᨿ"}, {"nvajja", l = "ᨶ᩠ᩅᨩ᩠ᨩ"}, {"pvā", l = "ᨷ᩠ᩅᩤ", l_just="Cf. NT ᨣ᩠ᩅᩤ᩠ᨯ"}, {"pubvenivāsoti", l = "ᨷᩩᨻ᩠ᩅᩮᨶᩥᩅᩤᩈᩮᩣᨲᩥ"}, {"ambvādīhi", l = "ᩋᨾᩛ᩠ᩅᩣᨴᩦᩉᩥ", aborts = 1}, {"bhvāpā", l = "ᨽ᩠ᩅᩣᨷᩤ"}, {"pubbanipātabhvassa", l = "ᨷᩩᨻᩛᨶᩥᨷᩤᨲᨽ᩠ᩅᩔ"}, {"mve", l = "ᨾ᩠ᩅᩮ"}, {"yvāyaṃ", l = "ᨿ᩠ᩅᩣᨿᩴ"}, -- See above for -vv-. I didn't trust vv- example. {"svāssa", l = "ᩈ᩠ᩅᩣᩔ"}, {"disvā", l = "ᨴᩥᩈ᩠ᩅᩣ"}, {"hvayati", l = "ᩉ᩠ᩅᨿᨲᩥ"}, {"juhvati", l = "ᨩᩩᩉ᩠ᩅᨲᩥ"}, {"bahvābādho", l = "ᨻᩉ᩠ᩅᩣᨻᩤᨵᩮᩤ", l_just = "Cf. NT ᨵᩤᨲᩩ from Pali dhātu."}, -- Clusters with final h {"mayhaṃ", l = "ᨾᨿ᩠ᩉᩴ"}, {"mūḷho", l = "ᨾᩪᩊ᩠ᩉᩮᩣ"}, {"nhatvā", l = "ᨶ᩠ᩉᨲ᩠ᩅᩣ"}, {"nhāru", l = "ᨶ᩠ᩉᩣᩁᩩ"}, {"sāyanhe", l = "ᩈᩣᨿᨶ᩠ᩉᩮ"}, -- Clusters with initial niggahita {"tasmiṃyeva", l = "ᨲᩈ᩠ᨾᩥᩴᨿᩮᩅ"}, {"evaṃrūpo", l = "ᩑᩅᩴᩁᩪᨷᩮᩤ"}, {"evaṃladdhanāmo", l = "ᩑᩅᩴᩃᨴ᩠ᨵᨶᩣᨾᩮᩣ"}, {"saṃvattati", l = "ᩈᩴᩅᨲ᩠ᨲᨲᩥ"}, {"āhaṃsu", l = "ᩋᩣᩉᩴᩈᩩ"}, {"taṃhetu", l = "ᨲᩴᩉᩮᨲᩩ"}, {"taṃḷīkaṃ", l = "ᨲᩴᩊᩦᨠᩴ"}, -- Clusters with final r {"kriyā", l = "ᨠᩕᩥᨿᩣ"}, {"ukre", l = "ᩏᨠᩕᩮ"}, {"nigrodha", l = "ᨶᩥᨣᩕᩮᩣᨵ", l_just = "Cf. NT ᨣᩕᩣ."}, {"saṃghraṭṭhaṃ", l = "ᩈᩴᨥᩕᨭᩛᩴ"}, {"jrā", l = "ᨩᩕᩣ"}, {"tre", l = "ᨲᩕᩮ"}, {"tatra", l = "ᨲᨲᩕ"}, {"dravatā", l = "ᨴᩕᩅᨲᩣ"}, {"indriyā", l = "ᩍᨶ᩠ᨴᩕᩥᨿᩣ", aborts = 1}, {"bhadro", l = "ᨽᨴᩕᩮᩣ", l_just="Cf. NT ᨴᩕᩣ᩠ᨶ Round AA is the commoner, not universal. Borrowed into NT as ᨽᨴᩕ."}, {"tanra", l = "ᨲᨶᩕ"}, {"prānadassī", l = "ᨷᩕᩣᨶᨴᩔᩦ", ["l_just"]="Cf. NT ᨷᩕᩣᨠᩣ᩠ᩁ"}, {"kaphrū", l = "ᨠᨹᩕᩪ"}, {"brāhmaṇo", l = "ᨻᩕᩣᩉ᩠ᨾᨱᩮᩣ", ["l_just"]="Cf. NT ᨻᩕᩣᩉ᩠ᨾᨱ᩺"}, {"bhrūnahā", l = "ᨽᩕᩪᨶᩉᩣ"}, {"mrā", l = "ᨾᩕᩣ"}, {"kalrāṇa", l = "ᨠᩃᩕᩣᨱ"}, {"srī", l = "ᩈᩕᩦ"}, -- hapax legomen! -- Clusters with initial s {"slā", l = "ᩈᩖᩣ"}, {"tasmiṃ", l = "ᨲᩈ᩠ᨾᩥᩴ"}, {"sthita", l = "ᩈ᩠ᨳᩥᨲ"}, {"sneho", l = "ᩈ᩠ᨶᩮᩉᩮᩣ"}, {"viddhastā", l = "ᩅᩥᨴ᩠ᨵᩈ᩠ᨲᩣ"}, {"vanaspatī", l = "ᩅᨶᩈ᩠ᨷᨲᩦ"}, -- Clusters with final l {"kleso", l = "ᨠᩖᩮᩈᩮᩣ"}, {"uklāpo", l = "ᩏᨠᩖᩣᨷᩮᩤ"}, {"gloso", l = "ᨣᩖᩮᩤᩈᩮᩣ", ["l_just"]="Cf. NT ᨣᩖᩤ"}, -- Want to cite reference named MFL {"sabbaglā", l = "ᩈᨻᩛᨣᩖᩤ", ["l_just"]="Cf. NT ᨣᩖᩤ"}, {"nlā", l = "ᨶᩖᩣ"}, {"plavanti", l = "ᨷᩖᩅᨶ᩠ᨲᩥ"}, {"niplavitaṃ", l = "ᨶᩥᨷᩖᩅᩥᨲᩴ"}, {"pallaṅkaṃ", l = "ᨷᩃᩖᩘᨠᩴ"}, -- Conceivable stem variation here! -- Clusters not covered above {"buddhuppāda", l = "ᨻᩩᨴ᩠ᨵᩩᨷ᩠ᨷᩣᨴ", l_just = "Borrowed into NT in this form."}, {"buddhānussati", l = "ᨻᩩᨴ᩠ᨵᩤᨶᩩᩔᨲᩥ", l_just = "Borrowed into NT in this form."}, -- Other special combinations. {"dhātu", l = "ᨵᩤᨲᩩ", l_just = "Loaned into NT as ᨵᩤᨲᩩ"}, -- Sometime inflection issues {"pacanto", l = "ᨷᨧᨶ᩠ᨲᩮᩣ", c = "𑄛𑄌𑄚𑄴𑄖𑄮"}, {"pacant", l = "ᨷᨧᨶ᩠ᨲ᩺", c = "𑄛𑄌𑄚𑄴𑄖𑄴"}, {"⌫⌫nt", l = "⌫⌫ᨶ᩠ᨲ᩺", c = "⌫⌫𑄚𑄴𑄖𑄴"}, {"pāpin", c = "𑄛𑄂𑄛𑄨𑄚𑄴"}, -- Random Chakma tests {"akaraṇaṃ", c = "𑄃𑄇𑄢𑄕𑄁"}, {"bhikkhave", c = "𑄞𑄨𑄇𑄴𑄈𑅇𑄬"}, {"maggassa", c = "𑄟𑄉𑄴𑄉𑄥𑄴𑄥"}, {"ākaṅkhamānena", c = "𑄃𑄂𑄇𑄋𑄴𑄈𑄟𑄂𑄚𑄬𑄚"}, {"pañcamaduke", c = "𑄛𑄐𑄴𑄌𑄟𑄘𑄪𑄇𑄬"}, {"kālaparicchedaṃ", c = "𑄇𑄂𑄣𑄛𑄢𑄨𑄌𑄴𑄍𑄬𑄘𑄁"}, {'vijjatī"ti', c = '𑅇𑄨𑄎𑄴𑄎𑄖𑄩"𑄖𑄨'}, {"chaṭṭhaduke", c = "𑄍𑄑𑄴𑄒𑄘𑄪𑄇𑄬"}, {"taṇhānissayo", c = "𑄖𑄕𑄴𑄦𑄂𑄚𑄨𑄥𑄴𑄥𑄠𑄮"}, {"atthi", c = "𑄃𑄖𑄴𑄗𑄨"}, {"duvidhaṃ", c = "𑄘𑄪𑅇𑄨𑄙𑄁"}, {"ārabbha", c = "𑄃𑄂𑄢𑄝𑄴𑄞"}, {"katvā", c = "𑄇𑄖𑄳𑄤𑄂"}, {'hotī"ti', c = '𑄦𑄮𑄖𑄩"𑄖𑄨'}, {"idaṃ", c = "𑄃𑄨𑄘𑄁"}, {"uttamasamācāro", c = "𑄃𑄪𑄖𑄴𑄖𑄟𑄥𑄟𑄂𑄌𑄂𑄢𑄮"}, } --[[ here be the tests ]] function tests:test_Tai_Tham() local res; for ia, va in pairs({false, true}) do va = not not va for ic, vc in ipairs(cases) do if va == not not vc.aborts then if vc.l then res = tr(vc[1], "Lana") -- equals(name, actual, expected, options) if res == vc.l then tests:equals(vc[1], res, vc.l) elseif vc.l_just then tests:equals(vc[1], res, vc.l.."<br>("..vc.l_just..")") else tests:equals(vc[1], res, vc.l) end end end end end end function tests:test_Chakma() local res; for ia, va in pairs({false, true}) do va = not not va for ic, vc in ipairs(cases) do if va == not not vc.aborts then if vc.c then res = tr(vc[1], "Cakm") -- equals(name, actual, expected, options) if res == vc.c then tests:equals(vc[1], res, vc.c) elseif vc.c_just then tests:equals(vc[1], res, vc.c.."<br>("..vc.c_just..")") else tests:equals(vc[1], res, vc.c) end end end end end end return tests bns03ju2w0cp7f63gufh9ug1yz0mhr7 মডিউল:pi-translit/testcases 828 168847 510399 2026-06-07T12:47:47Z RedminBot 9553 [[en:Module:pi-translit/testcases]] থেকে আনা হলো 510399 Scribunto text/plain local tests = require('Module:UnitTests') local m_xlit = require('Module:pi-translit') local m_Latn = require('Module:pi-Latn-translit') -- aThai and aLaoo use explicit vowels, but the transliterator has to deduce that for itself. -- eThai and eLaoo use explicit vowels, and the transliterator is told that the words do. local scripts = {"Beng", "Brah", "Deva", "Khmr", "Lana", "Laoo", "Mymr", "Shan", "Sinh", "Thai", "aThai", "aLaoo", "eThai", "eLaoo"} -- words[1] are fed to abugidas and aThai and aLaoo. -- words[2] are fed to abugidas and eThai and eLaoo. local toohard = false -- Whether words to be fed to eThai and eLaoo are instead -- fed to aThai and aLaoo. Hack it to see if ESP now works. local words = {} words[1] = {"kukhīgaṅghā", "ṭaṭṭhoḍḍhaṇḍīḍhant", "jacchuṃsajjhejña", "ipaṇṭhambiphabho", "vyabboraḷhaḷinā", "puṃliṅga", "āsnoklatvāyhalo", "ugayho", "nigrodha", "pacavho", "agaṃchiṃ", "pāpo", "nibbāna", "ūkatabbo", "okāsamhi", "ehi"} words[2] = {"ītreddhothūnim", "ḷhāsāḷūṃ"} indi = { -- Per script tests Beng = { {"vaṃśa", "ৱংশ"}, {"baṃśa", "বংশ"}, {"viṣṇu", "ৱিষ্ণু"}, {"biṣṇu", "বিষ্ণু"}, {"gauḥ", "গৌঃ"}, {"jaina", "জৈন"}, {"ṛṣḷmṝṇī", "ঋষৢমৄণী"}, {"ṝkṣūpḹta", "ৠক্ষূপৣত"}, {"ḷpṛ", "ঌপৃ"}, {"ḹnā", "ৡনা"}, {"aiśbarya", "ঐশ্বর্য"}, {"aiśvarya", "ঐশ্ৱর্য"}, {"aiśvarya", "ঐশ্ৰর্য"}, {"auṣadha", "ঔষধ"}, }, Brah = { {"vaṃśa", "𑀯𑀁𑀰"}, {"viṣṇu", "𑀯𑀺𑀱𑁆𑀡𑀼"}, {"gauḥ", "𑀕𑁅𑀂"}, {"jaina", "𑀚𑁃𑀦"}, {"ṛṣḷmṝṇī", "𑀋𑀱𑁀𑀫𑀿𑀡𑀻"}, {"ṝkṣūpḹta", "𑀌𑀓𑁆𑀱𑀽𑀧𑁁𑀢"}, {"ḷpṛ", "𑀍𑀧𑀾"}, {"ḹnā", "𑀎𑀦𑀸"}, {"aiśvarya", "𑀐𑀰𑁆𑀯𑀭𑁆𑀬"}, {"auṣadha", "𑀒𑀱𑀥"}, }, Deva = { {"gauḥ", "गौः"}, {"ṛṣḷmṝṇī", "ऋषॢमॄणी"}, {"ṝkṣūpḹta", "ॠक्षूपॣत"}, {"ḷpṛ", "ऌपृ"}, {"ḹnā", "ॡना"}, {"rṛ", "रृ"}, -- {"rṛ", "र्अ"}, -- Microsoft Devanagari - disallow! {"aiśvarya", "ऐश्वर्य"} , {"auṣadha", "औषध"}, }, Khmr = { {"vaṃśa", "វំឝ"}, {"viṣṇu", "វិឞ្ណុ"}, {"gauḥ", "គៅះ"}, {"jaina", "ជៃន"}, {"ṛṣḷmṝṇī", "ឫឞ្ឭម្ឬណី"}, {"ṝkṣūpḹta", "ឬក្ឞូប្ឮត"}, {"ḷpṛ", "ឭប្ឫ"}, {"aiśvarya", "ឰឝ្វយ៌"}, {"aiśvarya", "ឰឝ្វរ្យ"}, {"auṣadha", "ឳឞធ"}, }, Lana = { {"vaṃśa", "ᩅᩴᩆ"}, {"viṣṇu", "ᩅᩥᩇ᩠ᨱᩩ"}, {"gauḥ", "ᨣᩮᩢᩣᩡ"}, {"gauḥ", "ᨣᩮᩫᩢᩣᩡ"}, {"gauḥ", "ᨣᩮᩫᩣᩡ"}, {"gauḥ", "ᨣᩮᩢᩤᩡ"}, {"gauḥ", "ᨣᩮᩫᩢᩤᩡ"}, {"gauḥ", "ᨣᩮᩫᩣᩡ"}, {"jaina", "ᨩᩱᨶ"}, {"ḷpṛ", "ᩄᨷᩂ"}, {"nigrodha", "ᨶᩥᨣᩕᩮᩤᨵ"}, {"nigrodha", "ᨶᩥᨣᩕᩮᩣᨵ"}, {"nigrodha", "ᨶᩥᨣᩕᩰᨵ"}, {"pacavho", "ᨷᨧᩅ᩠ᩉᩮᩤ"}, {"pacavho", "ᨷᨧᩅ᩠ᩉᩮᩣ"}, {"pāpo", "ᨷᩣᨷᩮᩣ"}, {"pāpo", "ᨷᩤᨷᩮᩤ"}, {"pāpo", "ᨸᩣᨸᩮᩣ"}, {"nibbāna", "ᨶᩥᨻᩛᩣᨶ"}, {"nibbāna", "ᨶᩥᨻᩛᩤᨶ"}, {"nibbāna", "ᨶᩥᨻ᩠ᨻᩣᨶ"}, {"nibbāna", "ᨶᩥᨻ᩠ᨻᩤᨶ"}, {"katabbo", "ᨠᨲᨻᩛᩮᩣ"}, {"katabbo", "ᨠᨲᨻᩛᩮᩤ"}, {"okāsa", "ᩒᨠᩣᩈ"}, {"okāsa", "ᩋᩰᨠᩣᩈ"}, {"au", "ᩐᩣ"}, {"karont", "ᨠᩁᩮᩣᨶ᩠ᨲ᩼"}, {"ṛṣḷ", "ᩂᩇᩄ"}, -- {"ṛṣḷmṝṇī", "ၒၑၘမၗဏီ"}, -- {"ṝkṣūpḹta", "ၓက္ၑူပၙတ"}, {"ḷpṛ", "ᩄᨷᩂ"}, -- {"ḹnā", "ၕနာ"}, -- {"aiśvarya", "ᩑᩮᩆ᩠ᩅᩁ᩠ᨿ"}, -- TBC {"aiśvarya", "ᩋᩱᩆ᩠ᩅᩁ᩠ᨿ"}, -- Dodgy {"auṣadha", "ᩐᩣᩇᨵ"}, }, Mymr = { {"vaṃśa", "ဝံၐ"}, {"viṣṇu", "ဝိၑ္ဏု"}, {"gauḥ", "ဂော်း"}, {"jaina", "ဇဲန"}, {"ṛṣḷmṝṇī", "ၒၑၘမၗဏီ"}, {"ṝkṣūpḹta", "ၓက္ၑူပၙတ"}, {"ḷpṛ", "ၔပၖ"}, {"ḹnā", "ၕနာ"}, {"aiśvarya", "အဲၐွရျ"}, {"auṣadha", "ဪၑဓ"}, }, Sinh = { {"ṛṣḷmṝṇī", "ඍෂෟමෲණී"}, {"ṝkṣūpḹta", "ඎක්‍ෂූපෳත"}, {"ḷpṛ", "ඏපෘ"}, {"ḹnā", "ඐනා"}, {"aiśvarya", "ඓශ‍්වර්‍ය"}, {"auṣadha", "ඖෂධ"}, }, Thai = { {"vaṃśa", "วํศ"}, {"viṣṇu", "วิษฺณุ"}, {"gauḥ", "เคาะ"}, {"jaina", "ไชน"}, {"nigrodha", "นิคฺโรธ"}, {"nigrodha", "นิโคฺรธ"}, {"gayho", "คยฺโห"}, {"gayho", "คโยฺห"}, {"ṛṣḷmṝṇī", "ฤษฺฦมฺฤๅณี"}, {"ṝkṣūpḹta", "ฤๅกฺษูปฺฦๅต"}, {"ḷpṛ", "ฦปฺฤ"}, {"ḹnā", "ฦๅนา"}, {"aiśvarya", "ไอศฺวรฺย"}, {"auṣadha", "เอาษธ"}, {"āment", "อาเมนฺต์"}, {"sve", "เสฺว"}, }, aThai = { {"vaṃśa", "วังศะ"}, {"gauḥ", "เคาะ"}, {"jaina", "ไชนะ"}, {"nigrodha", "นิคโรธะ"}, -- {"nigrodha", "นิโครธะ"}, {"gayho", "คัยโห"}, -- {"gayho", "คัโยห"}, {"ṝkṣūpḹta", "ฤๅกษูปฦๅตะ"}, {"ḹnā", "ฦๅนา"}, {"aiśvarya", "ไอศวัรยะ"}, {"auṣadha", "เอาษะธะ"}, {"sve", "เสฺว"}, }, eThai = { {"viṣṇu", "วิษณุ"}, {"ṛṣḷmṝṇī", "ฤษฦมฤๅณี"}, {"ḷpṛ", "ฦปฤ"}, {"āment", "อาเมนต์"}, {"sve", "สเว"}, }, Laoo = { {"vaṃśa", "ວໍຨ"}, {"viṣṇu", "ວິຩ຺ຓຸ"}, {"gauḥ", "ເຄົາະ"}, {"jaina", "ໄຊນ"}, {"nigrodha", "ນິຄ຺ໂຣຘ"}, {"nigrodha", "ນິໂຄ຺ຣຘ"}, {"gayho", "ຄຍ຺ໂຫ"}, {"gayho", "ຄໂຍ຺ຫ"}, {"aiśvarya", "ໄອຨ຺ວຣ຺ຍ"}, {"auṣadha", "ເອົາຩຘ"}, {"āment", "ອາເມນ຺ຕ໌"}, {"sve", "ເສ຺ວ"}, }, aLaoo = { {"vaṃśa", "ວັງຨະ"}, -- {"gauḥ", "ເຄົາະ"}, {"jaina", "ໄຊນະ"}, {"nigrodha", "ນິຄໂຣຘະ"}, -- {"nigrodha", "ນິໂຄຣຘະ"}, {"gayho", "ຄັຍໂຫ"}, -- {"gayho", "ຄັໂຍຫ"}, -- {"gayho", "ຄະໂຍຫ"}, {"aiśvarya", "ໄອຨວັຣຍະ"}, {"auṣadha", "ເອົາຩະຘະ"}, {"dammasmā", "ທັມມັດມາ"}, -- Other Lao systems: {"gassati", "ຄັດສະຕິ"}, {"ñāya", "ຍ຺າຢະ"}, {"paccaya", "ປັຈຈະຍະ"}, {"pāhuṇeyya", "ປາຫຸເນ຺ຢຢະ"}, {"puñña", "ປຸຍ຺ຍ຺ະ"}, {"budda", "ພຸດທະ"}, {"buddha", "ພຸທທ຺ະ"}, {"viññū", "ວິຍ຺ຍ຺ູ"}, {"saṅgha", "ສັງຄ຺ະ"}, {"sandiṭṭhika", "ສັນທິຕ຺ຖ຺ິກະ"}, {"sambudda", "ສັມພຸດທະ"}, {"sambuddha", "ສັມພຸທທ຺ະ"}, {"sāmīcipaṭipanna", "ສາມີຈິປະຕ຺ິປັນນະ"}, {"añjali", "ອັຍ຺ຊະລິ"}, {"sāmīciṃ", "ສາມີຈິງ"}, {"ujuṃ", "ອຸຊຸງ"}, {"svākkhātaṃ", "ສ໌ວາກຂາຕັງ"}, {"sve", "ສ໌ເວ"}, }, eLaoo = { {"viṣṇu", "ວິຩຓຸ"}, {"budde", "ພຸດເທ"}, {"āment", "ອາເມນຕ໌"}, {"pāhuneyyo", "ປາຫຸເນຍໂຍ"}, -- {"sve", "ເສວ"}, -- Disbelieved and unattested. -- Other Lao systems -- {"sve", "ເສ໌ວ"}, -- Disbelieved and unattested. }, } function tests:test_big_bang() --[[ here be the tests ]] --preprocess_equals(text, expected, options) options = {} for _, sc in ipairs(scripts) do local scin = sc local v1, v2 = 0, 0 options.impl = "yes" if scin == "aThai" or scin == "eThai" then sc = "Thai" options.impl = "no" elseif scin == "aLaoo" or scin == "eLaoo" then sc = "Laoo" options.impl = "no" elseif scin == "Mymr" then v2 = 1 elseif scin == "Shan" then v1 = 2 v2 = 3 sc = "Mymr" else options.impl = "yes" end for iset = 1, 2 do local doit = true if scin == "aThai" or scin == "eThai" or scin == "aLaoo" or scin == "eLaoo" then if iset == 1 or iset == 2 and toohard then doit = scin == "aThai" or scin == "aLaoo" else doit = scin == "eThai" or scin == "eLaoo" end end if doit then for iw, word in ipairs(words[iset]) do osword = " never done " for iv = v1, v2 do options.variation = tostring(iv) local sword = m_Latn.tr(word, sc, options) local bword if scin == "eThai" or scin == "eLaoo" then bword = m_xlit.trwo(sword, 'pi', sc, {impl="no"}) or "(nil)" else bword = m_xlit.tr(sword, 'pi', sc) or "(nil)" end if sword ~= osword then tests:equals(scin..':', sword..' = '..bword, sword..' = '..word, {show_difference = true}) end osword = sword if (scin == "aLaoo" or scin == "eLaoo") and string.match(word, 'y') then sword = mw.ustring.gsub(sword, "ຍ", "ຢ") if scin == "eLaoo" then bword = m_xlit.trwo(sword, 'pi', sc, {impl="no"}) or "(nil)" else bword = m_xlit.tr(sword, 'pi', sc) or "(nil)" end tests:equals(scin..':', sword..' = '..bword, sword..' = '..word, {show_difference = true}) end end end end end end end function tests:test_indi() options = {} for _, sc in ipairs(scripts) do local scin = sc if scin == "aThai" or scin == "eThai" then sc = "Thai" elseif scin == "aLaoo" or scin == "eLaoo" then sc = "Laoo" elseif scin == "Shan" then sc = "Mymr" end for iw, tpair in ipairs(indi[scin] or {}) do local word = tpair[1] local sword = tpair[2] local bword if (scin == "eThai" or scin == "eLaoo") and not too_hard then bword = m_xlit.trwo(sword, 'pi', sc, {impl="no"}) or '(nil)' else bword = m_xlit.tr(sword, 'pi', sc) or '(nil)' end tests:equals(scin..':', sword..' = '..bword, sword..' = '..word, {show_difference = true}) end end end return tests 931lvkspzc06v7fs3tetaklc27xtr16 মডিউল:pra-Deva-translit 828 168848 510400 2026-06-07T12:47:48Z RedminBot 9553 [[en:Module:pra-Deva-translit]] থেকে আনা হলো 510400 Scribunto text/plain local export = {} local consonants = { ['क']='k', ['ख']='kh', ['ग']='g', ['घ']='gh', ['ङ']='ṅ', ['च']='c', ['छ']='ch', ['ज']='j', ['झ']='jh', ['ञ']='ñ', ['ट']='ṭ', ['ठ']='ṭh', ['ड']='ḍ', ['ढ']='ḍh', ['ण']='ṇ', ['त']='t', ['थ']='th', ['द']='d', ['ध']='dh', ['न']='n', ['प']='p', ['फ']='ph', ['ब']='b', ['भ']='bh', ['म']='m', ['य']='y', ['र']='r', ['ल']='l', ['व']='v', ['ळ']='ḷ', ['श']='ś', ['ष']='ṣ', ['स']='s', ['ह']='h', ['य़']='ẏ', } local diacritics = { ['ा']='ā', ['ि']='i', ['ी']='ī', ['ु']='u', ['ू']='ū', ['ृ']='ṛ', ['ॄ']='ṝ', ['ॢ']='ḷ', ['ॣ']='ḹ', ['ॆ']='ĕ', ['े']='e', ['ै']='ai', ['ॊ']='ŏ', ['ो']='o', ['ौ']='au', ['्']='', } local diatrema = { -- vowels with diaereis added in transliteration ['इ']='ï', ['उ']='ü', } local tt = { -- vowels ['अ']='a', ['आ']='ā', ['इ']='i', ['ई']='ī', ['उ']='u', ['ऊ']='ū', ['ऋ']='ṛ', ['ॠ']='ṝ', ['ऌ']='ḷ', ['ॡ']='ḹ', ['ऎ']='ĕ', ['ए']='e', ['ऐ']='ai', ['ऒ']='ŏ', ['ओ']='o', ['औ']='au', -- chandrabindu ['ँ']='m̐', --until a better method is found -- anusvara ['ं']='ṃ', --until a better method is found --numerals ['०']='0', ['१']='1', ['२']='2', ['३']='3', ['४']='4', ['५']='5', ['६']='6', ['७']='7', ['८']='8', ['९']='9', --punctuation ['॥']='.', --double danda ['।']='.', --danda --Om ['ॐ']='oṃ', --reconstructed ['*'] = '', } function export.tr(text, lang, sc) if sc ~= "Deva" then return nil end text = mw.ustring.gsub(text, '(े)([अ-ह][़]?)(्)([अ-ह][़]?)', 'ॆ%2%3%4') text = mw.ustring.gsub(text, '(ए)([अ-ह][़]?)(्)([अ-ह][़]?)', 'ऎ%2%3%4') text = mw.ustring.gsub(text, '(ो)([अ-ह][़]?)(्)([अ-ह][़]?)', 'ॊ%2%3%4') text = mw.ustring.gsub(text, '(ओ)([अ-ह][़]?)(्)([अ-ह][़]?)', 'ऒ%2%3%4') text = mw.ustring.gsub( text, '([क-ह][़]?)'.. '([ािीुूृॄॢॣॆेैॊोौ्]?)'.. '([इउ]?)', function(c, d, e) if d == "" and e ~= "" then if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. '̈' else return consonants[c] .. 'a' .. tt[e] end elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) -- Adjacent vowel letters needing dieresis text = mw.ustring.gsub(text, '([अ])([इउ])', function(a, b) return tt[a]..diatrema[b] end) text = mw.ustring.gsub(text, '.', tt) return text end return export 076onl5pfffby6vjcztxfco56dlso1r মডিউল:pra-Deva-translit/testcases 828 168849 510401 2026-06-07T12:47:48Z RedminBot 9553 [[en:Module:pra-Deva-translit/testcases]] থেকে আনা হলো 510401 Scribunto text/plain return require("Module:transliteration module testcases") { module = "pra-Deva-translit", examples = { { "सेट्ठि", "sĕṭṭhi"}, { "एक्क", "ĕkka"}, { "बोल्लइ", "bŏllaï"}, { "ओक्किअ", "ŏkkia"}, { "तेल", "tela"}, { "एसज्ज", "esajja"}, { "तोस", "tosa"}, { "ओहि", "ohi"}, { "अउअ", "aüa"}, { "अइउट्ट", "aïuṭṭa"}, { "अउम", "aüma"}, { "सउण", "saüṇa"}, { "वाअउ", "vāaü"}, }, sc = "Deva", lang = "pra", } hj5bj85a5uzv6wnd0du6wean15udl5z মডিউল:pra-Knda-translit 828 168850 510402 2026-06-07T12:47:49Z RedminBot 9553 [[en:Module:pra-Knda-translit]] থেকে আনা হলো 510402 Scribunto text/plain local export = {} local consonants = { --consonants ['ಕ']='k', ['ಖ']='kh', ['ಗ']='g', ['ಘ']='gh', ['ಙ']='ṅ', ['ಚ']='c', ['ಛ']='ch', ['ಜ']='j', ['ಝ']='jh', ['ಞ']='ñ', ['ಟ']='ṭ', ['ಠ']='ṭh', ['ಡ']='ḍ', ['ಢ']='ḍh', ['ಣ']='ṇ', ['ತ']='t', ['ಥ']='th', ['ದ']='d', ['ಧ']='dh', ['ನ']='n', ['ಪ']='p', ['ಫ']='ph', ['ಬ']='b', ['ಭ']='bh', ['ಮ']='m', ['ಯ']='y', ['ರ']='r', ['ಲ']='l', ['ವ']='v', ['ಳ']='ḷ', ['ಶ']='ś', ['ಷ']='ṣ', ['ಸ']='s', ['ಹ']='h', ['ಯ಼']='ẏ', } local diacritics = { --matras ['ಾ']='ā', ['ಿ']='i', ['ೀ']='ī', ['ು']='u', ['ೂ']='ū', ['ೃ']='ṛ', ['ೄ']='ṝ', ['ೢ']='l̥', ['ೣ']='l̥̄', ['ೆ']='ĕ', ['ೇ']='e', ['ೈ']='ai', ['ೊ']='ŏ', ['ೋ']='o', ['ೌ']='au', ['್']='', } local tt = { --vowels ['ಅ']='a', ['ಆ']='ā', ['ಇ']='i', ['ಈ']='ī', ['ಉ']='u', ['ಊ']='ū', ['ಋ']='ṛ', ['ೠ']='ṝ', ['ಌ']='l̥', ['ೡ']='l̥̄', ['ಎ']='ĕ', ['ಏ']='e', ['ಐ']='ai', ['ಒ']='ŏ', ['ಓ']='o', ['ಔ']='au', -- chandrabindu ['ಁ']='m̐', --until a better method is found -- anusvara ['ಂ']='ṃ', --until a better method is found -- visarga ['ಃ']='ḥ', --numerals ['೦']='0', ['೧']='1', ['೨']='2', ['೩']='3', ['೪']='4', ['೪']='5', ['೬']='6', ['೭']='7', ['೮']='8', ['೯']='9', --punctuation ['।']='.', --danda ['॥']='.' --double danda } local ttrema = { -- With diaeresis ['ಇ']='ï', ['ಉ']='ü', } function export.tr(text, lang, sc) if sc ~= "Knda" then return nil end text = mw.ustring.gsub( text, '([ಕ-ಹ][಼]?)'.. '([ಾ-ೣ]?)'.. '([ಇಉ]?)', function(c, d, e) if d == "" and e ~= "" then return consonants[c] .. 'a' .. ttrema[e] elseif e ~= "" then return consonants[c] .. diacritics[d] .. tt[e] elseif d == "" then return consonants[c] .. 'a' else return consonants[c] .. diacritics[d] end end) -- Adjacent vowel letters needing dieresis text = mw.ustring.gsub( text, '([ಅ])([ಇಉ])', function(a, b) return tt[a]..ttrema[b] end) text = mw.ustring.gsub(text, '.', tt) return text end return export 4nmfjbakz7am4wab3s077hjya6uqmbi মডিউল:ps-translit 828 168851 510403 2026-06-07T12:47:49Z RedminBot 9553 [[en:Module:ps-translit]] থেকে আনা হলো 510403 Scribunto text/plain local m_str_utils = require("Module:string utilities") local U = m_str_utils.char local gsub = m_str_utils.gsub local export = {} local zwar = U(0x64E) local zer = U(0x650) local pesh = U(0x64F) local tashdid = U(0x651) -- also called shadda local zwarakay = U(0x659) -- Pashto /ə/ local jazm = "ْ" local he = "ه" local ain = 'ع' local alif = 'ا' local ye = 'ي' local ye2 = "ےی" local ye3 = 'ې' local waw = "و" local nasal = 'ں' local consonants = "بپتټثجځچڅحخدډذرړزژږسشښصضطظعغفقکګلمنڼوه" local consonantS = "بپتټثجځچڅحخدډذرړزژږسشښصضطظعغفقکګلمنڼه" local consonantS2 = "بپتټثجځچڅحخدډذرړزژږسشښصضطظعغفقکګلمنڼوهي" local vowels = "اآیېيۍئےو" local vowels2 = "آیېيۍئےو" local semivowels = "وي" local hes = "هح" local diacritics = "َُِّْٰٙ" local ZZPZ = "َُِٙ" local mapping = { ["آ"] = 'â', ["ب"] = 'b', ["پ"] = 'p', ["ت"] = 't', ["ټ"] = 'ṭ', ["ث"] = 's̱', ["ج"] = 'j', ["ځ"] = 'ź', ["چ"] = 'č', ["څ"] = 'ś', ["ح"] = 'ḥ', ["خ"] = 'x', ["د"] = 'd', ["ډ"] = 'ḍ', ["ذ"] = 'ẕ', ["ر"] = 'r', ['ړ'] = "ṛ", ["ز"] = 'z', ["ژ"] = 'ž', ["ږ"] = 'ǵ', ["س"] = 's', ["ش"] = 'š', ["ښ"] = 'x̌', ["ص"] = 'ṣ', ["ض"] = 'ẓ', ["ط"] = 't̤', ["ظ"] = 'z̤', ["ع"] = 'ʻ', ["غ"] = 'ǧ', ["ف"] = 'f', ["ق"] = 'q', ["ک"] = 'k', ["ګ"] = 'g', ["ڼ"] = 'ṇ', ["ل"] = 'l', ["م"] = 'm', ["ن"] = 'n', ["و"] = 'w', ["ه"] = 'h', ["ي"] = 'y', ["ں"] = 'ṉ', ["ؤ"] = "wə", ["ۍ"] = "əy", ["ئ"] = 'əy', ["ې"] = 'e', ["ۀ"] = 'ə', ["ی"] = 'y', ["ے"] = 'y', -- diacritics [zwar] = "a", [zer] = "ĭ", [pesh] = "ŭ", [zwarakay] = "ə", [jazm] = "", -- also sukun - no vowel [U(0x200C)] = "-", -- ZWNJ (zero-width non-joiner) -- ligatures ["ﻻ"] = "lā", ["ﷲ"] = "allāh", -- kashida ["ـ"] = "-", -- kashida, no sound -- numerals ["۱"] = "1", ["۲"] = "2", ["۳"] = "3", ["۴"] = "4", ["۵"] = "5", ["۶"] = "6", ["۷"] = "7", ["۸"] = "8", ["۹"] = "9", ["۰"] = "0", -- punctuation (leave on separate lines) ["؟"] = "?", -- question mark ["،"] = ",", -- comma ["؛"] = ";", -- semicolon ["«"] = '“', -- quotation mark ["»"] = '”', -- quotation mark ["٪"] = "%", -- percent ["؉"] = "‰", -- per mille ["٫"] = ".", -- decimals ["٬"] = ",", -- thousand } function export.tr(text, lang, sc) --define the "end" of a word text = gsub(text, "#", "HASHTAG") text = gsub(text, " | ", "# | #") text = gsub(text, "\n" , "#".."\n" .. "#") text = "##" .. gsub(text, " ", "# #") .. "##" -- hastags now mark the beginning and end of a word -- EXCEPTIONS - leave as they are, unless they have been sorted out elsewhere text = gsub(text, "ن٘", "ṉ") text = gsub(text, "الله", "allâh") -- diacritics text = gsub(text, pesh .. waw .. jazm .. "", "u") text = gsub(text, jazm .. alif, "â") -- Initial alif text = gsub(text, alif .. zwar .. '([' .. consonantS .. '])', "a%1") text = gsub(text, alif .. zer .. ye .. jazm .. "", "i") text = gsub(text, alif .. zer, "ĭ") text = gsub(text, alif .. waw .. jazm .. "", "o") text = gsub(text, alif .. pesh .. waw, "u") text = gsub(text, alif .. pesh .. waw .. jazm .. "", "u") text = gsub(text, alif .. pesh, "ŭ") -- Tashdeed text = gsub(text, '([' .. consonantS2 .. '])' .. tashdid, "%1%1") text = gsub(text, '([' .. consonantS2 .. '])' .. tashdid .. '([' .. ZZPZ .. '])', "%1%1%2") text = gsub(text, '([' .. ZZPZ .. '])' .. ye .. '([' .. ZZPZ .. '])' .. tashdid, "%1yy%2") text = gsub(text, '([' .. ZZPZ .. '])' .. waw .. '([' .. ZZPZ .. '])' .. tashdid, "%1ww%2") -- For some reason the tashdeed gets pushed after the other diacritics, so this line is necessary for tashdeed to work with other diacritics text = gsub(text, '([' .. consonants .. '])' .. '([' .. ZZPZ .. '])' .. tashdid, "%1%1%2") -- tanween diacritic / no need to mess about text = gsub(text, '([' .. consonants .. '])' .. 'ً' .. alif, "%1an") text = gsub(text, alif .. 'ً', "an") text = gsub(text, '([' .. consonants .. '])' .. 'ً', "%1an") -- tall zwar -- / no need to mess about text = gsub(text, '([' .. vowels .. '])' .. 'ٰ', "á") text = gsub(text, '([' .. consonants .. '])' .. 'ٰ' .. '([' .. vowels .. '])', "%1á") -- ‘ain text = gsub(text, alif .. ain , "â‘") text = gsub(text, ain .. alif .. '([' .. consonants .. '])', "ʻâ%1") text = gsub(text, '([' .. consonants .. '])' .. ain .. he, "%1ʻa") text = gsub(text, '([' .. consonants .. '])' .. '([' .. zer .. pesh .. ']?)' .. ain, "%1%2ʻ") text = gsub(text, ain .. zer .. '([' .. consonants .. '])', "ʻĭ%1") text = gsub(text, ain .. pesh .. '([' .. consonants .. '])', "ʻŭ%1") text = gsub(text, ain .. zer .. ye .. '([' .. consonants .. '])', "ʻi%1") text = gsub(text, ain .. pesh .. waw .. '([' .. consonantS .. '])', "ʻu%1") --- alif text = gsub(text, '([' .. consonants .. '])' .. zwar .. alif, "%1â") text = gsub(text, '([' .. consonantS2 .. '])' .. alif, "%1â") text = gsub(text, '([' .. consonants .. '])' .. tashdid .. alif, "%1%1â") text = gsub(text, "#" .. alif .. ye, "i") text = gsub(text, "#" .. alif .. waw, "o") text = gsub(text, "#" .. alif .. ye3, "e") text = gsub(text, '([' .. consonantS2 .. '])' .. alif .. ye .. waw, "%1âyo") -- waw text = gsub(text, waw .. '([' .. ZZPZ .. '])', "w%1") text = gsub(text, 'ُو', "u") -- medial/final consonants --- (e) -- works text = gsub(text, '([' .. consonants .. '])' .. ye .. jazm .. '([' .. consonants .. '])', "%1i%2") --- he text = gsub(text, '([' .. consonantS2 .. '])' .. zwar .. he .. zer .. ye, "%1ahi") text = gsub(text, '([' .. consonantS2 .. '])' .. zwar .. he .. alif, "%1ahâ") text = gsub(text, zwar .. he .. '([' .. consonants .. vowels .. '])', "ah%1") text = gsub(text, '([' .. consonantS2 .. '])' .. zwar .. he, "%1ah") text = gsub(text, '([' .. consonantS .. '])' .. he .. "#", "%1a") text = gsub(text, jazm .. waw .. he, "wa") text = gsub(text, jazm .. ye .. he, "ya") text = gsub(text, '([' .. vowels2 .. diacritics .. '])' .. '([' .. semivowels .. '])' .. he .. "#", "%1%2a") text = gsub(text, '([' .. consonantS .. '])' .. waw .. he .. "#", "%1oh") text = gsub(text, '([' .. consonantS .. '])' .. ye .. he .. "#", "%1ih") --- waw text = gsub(text, '([' .. consonants .. '])' .. waw, "%1o") text = gsub(text, '([' .. consonantS2 .. '])' .. tashdid .. waw, "%1%1o") text = gsub(text, zer .. ye .. waw, "io") text = gsub(text, '([' .. consonantS2 .. '])' .. ye .. waw .. jazm, "%1iw") text = gsub(text, '([' .. consonantS2 .. '])' .. ye .. waw .. "#", "%1yo") text = gsub(text, '([' .. consonantS2 .. '])' .. ye .. waw .. '([' .. consonantS .. '])', "%1yo%2") text = gsub(text, '([' .. diacritics .. '])' .. '([' .. semivowels .. '])' .. waw, "%1%2o") text = gsub(text, ye .. waw, "yo") text = gsub(text, "#" .. ye .. waw, "yo") text = gsub(text, '([' .. consonants .. '])' .. tashdid .. zer .. ye .. jazm .. alif, "%1%1iyâ") text = gsub(text, '([' .. consonants .. '])' .. zer .. ye .. alif, "%1iâ") --- ye --text = gsub(text, '([' .. consonantS2 .. '])' .. ye .. waw .. ye, "%1iwi") --text = gsub(text, '([' .. consonantS2 .. '])' .. waw .. ye .. jazm, "%1oy") text = gsub(text, ye .. zwar .. alif, "yâ") text = gsub(text, '([' .. consonants .. zer .. '])' .. ye .. '([' .. consonantS .. '])', "%1i%2") text = gsub(text, '([' .. consonants .. zer .. '])' .. ye .. "#", "%1i") text = gsub(text, '([' .. consonantS .. '])' .. '([' .. ye2 .. '])', "%1a%2") text = gsub(text, '([' .. diacritics .. '])' .. '([' .. semivowels .. '])' .. '([' .. ye2 .. '])', "%1%2a%3") text = gsub(text, "#" .. '([' .. semivowels .. '])' .. '([' .. ye2 .. '])', "%1a%2") -- get rid of hashtags (not needed) text = gsub(text, "#", "") text = gsub(text, "HASHTAG", "#") text = gsub(text, '.', mapping) text = gsub(text, 'ĭy', "i") text = gsub(text, 'ŭw', "u") text = gsub(text, 'ĭi', "i") text = gsub(text, 'ŭu', "u") text = gsub(text, "اa", "a") text = gsub(text, 'aa', "â") -- return text end return export o7wwwzvgbl6z0n3nlqvgop3ddp4a8gt মডিউল:ps-translit/testcases 828 168852 510404 2026-06-07T12:47:50Z RedminBot 9553 [[en:Module:ps-translit/testcases]] থেকে আনা হলো 510404 Scribunto text/plain -- Unit tests for [[Module:ps-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ps_translit = require('Module:ps-translit') local full_link = require('Module:links').full_link local ps = require('Module:languages').getByCode('ps') local function link(word) return full_link{ term = word, lang = ps, tr = "-" } end --TO DO function tests:do_test_translit(arabic, roman) self:equals(link(arabic), ps_translit.tr(arabic, 'ps', 'ps-Arab'), roman) end function tests:test_translit_arabic() local examples = { -- h sematnics {"الله", "allâh"}, {"اَذهان", "aẕhân"}, {"اَژدَهار", "aždahâr"}, {"غَټه", "ǧaṭa"}, {"غَټَه", "ǧaṭah"}, {"غَټَهْ", "ǧaṭah"}, {"غَټْه", "ǧaṭh"}, {"دْوه", "dwa"}, {"دوه", "doh"}, {"دُوه", "duh"}, {"اوه", "oh"}, {"اَوه", "awa"}, {"کْيه", "kya"}, {"کيه", "kih"}, {"ايه", "ih"}, {"اَيه", "aya"}, -- inital alif {"ايمان", "imân"}, {"اوسيږې", "osiǵe"}, {"اېران", "erân"}, -- final y dipthongs {"دُوی", "duy"}, {"زوی", "zoy"}, {"ځای", "źây"}, {"يُوسٙفزی", "yusəfzay"}, {"دے", "day"}, {"بېی", "bey"}, {"څْوی", "śway"}, {"شْيی", "šyay"}, {"وی", "way"}, {"وي", "wi"}, {"يی", "yay"}, {"يئ", "yəy"}, -- other dipthongs {"پَلَو", "palaw"}, {"اُووۀ", "uwə"}, {"نِيا", "niâ"}, {"ؤ", "wə"}, -- u/y stuff {"يو", "yo"}, {"بايو", "bâyo"}, {"باوي", "bâwi"}, {"وايُو", "wâyu"}, {"بَيوت", "bayot"}, {"کِيوډ", "kioḍ"}, {"کيوْډ", "kiwḍ"}, {"کيوډ", "kyoḍ"}, {"کْيوډ", "kyoḍ"}, {"کُوِيډ", "kuiḍ"}, {"کويْډ", "koyḍ"}, {"کُويْډ", "kuyḍ"}, {"کْويډ", "kwiḍ"}, {"کويډ", "koyḍ"}, {"کيوي", "kiwi"}, {"کِيوي", "kioy"}, {"کْيوي", "kyoy"}, {"وو", "wo"}, -- short vowels {"پِنځۀ", "pĭnźə"}, {"ګُلُونه", "gŭluna"}, -- miscellaneous {"حِسّه", "ḥĭssa"}, {"بيزو", "bizo"}, {"پٙښتو", "pəx̌to"}, {"خوَړٙل", "xwaṛəl"}, {"خَلاص", "xalâṣ"}, {"دْرې", "dre"}, {"ډَير", "ḍayr"}, {"سپين", "spin"}, {"کَچالُو", "kačâlu"}, {"دوبي", "dobi"}, {"نْجٙلۍ", "njələy"}, {"وايئ", "wâyəy"}, {"ورور", "wror"}, {"هَلٙک", "halək"}, } self:iterate(examples, "do_test_translit") end return tests 9evvff893fl9ucql6tknwsf9vgf0gwg মডিউল:rjs-translit 828 168853 510405 2026-06-07T12:47:50Z RedminBot 9553 [[en:Module:rjs-translit]] থেকে আনা হলো 510405 Scribunto text/plain -- Transliteration for Rajbanshi local export = {} function export.tr(text, lang, sc) text = mw.ustring.gsub(text, 'म़', 'mh') text = mw.ustring.gsub(text, 'ऩ', 'nh') text = mw.ustring.gsub(text, 'ऱ', 'rh') return require("Module:sa-translit").tr(text, lang, sc) end return export ahgpnz0z3fsxvquazs3kckheiu6riix মডিউল:ro-translit 828 168854 510406 2026-06-07T12:47:50Z RedminBot 9553 [[en:Module:ro-translit]] থেকে আনা হলো 510406 Scribunto text/plain local concat = table.concat local explode = require("Module:string utilities").explode_utf8 local insert = table.insert local gsub = mw.ustring.gsub local match = mw.ustring.match local uupper = string.uupper -- Note: ё, ъ and щ only exist in borrowings. local letters = { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["д"] = "d", ["е"] = "e", ["ё"] = "io", ["ж"] = "j", ["ӂ"] = "gi", ["з"] = "z", ["и"] = "i", ["й"] = "i", ["к"] = "c", ["л"] = "l", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "p", ["р"] = "r", ["с"] = "s", ["т"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "h", ["ц"] = "ț", ["ч"] = "ci", ["ш"] = "ș", ["щ"] = "șc", ["ъ"] = "ă", ["ы"] = "î", ["ь"] = "i", ["э"] = "ă", ["ю"] = "iu", ["я"] = "ia" } local vowel = { ["а"] = true, ["е"] = true, ["ё"] = true, ["и"] = true, ["й"] = true, ["о"] = true, ["у"] = true, ["ъ"] = true, ["ы"] = true, ["ь"] = true, ["э"] = true, ["ю"] = true, ["я"] = true } local i_vowel_prev = { ["и"] = true, ["й"] = true, ["ь"] = true } local ei_vowel_nxt = { ["е"] = true, ["ё"] = true, ["и"] = true, ["ь"] = true, ["ю"] = true, ["я"] = true } local soft_cons = { ["ӂ"] = "g", ["ч"] = "c" } local ea_cons = { ["ж"] = true, ["ӂ"] = true, ["л"] = true, ["н"] = true, ["р"] = true, ["т"] = true, ["ш"] = true } local function is_letter(this) return this and match(this, "%w") and true or false end local export = {} function export.tr(text, lang, sc) -- Only support modern Cyrillic (for now). if sc ~= "Cyrl" then return nil end local caps = {} text = gsub(text, "()(%u)", function(pos, this) caps[pos] = true return this:ulower() end) text = explode(text) local output, i, prev, this, nxt = {}, 0 while i <= #text do prev, this, nxt = text[i - 1], text[i], text[i + 1] if soft_cons[this] then if ei_vowel_nxt[nxt] then this = soft_cons[this] elseif nxt == "а" then this = soft_cons[this] .. "e" end elseif this == "ё" and i_vowel_prev[prev] then this = "o" elseif this == "г" and ei_vowel_nxt[nxt] then this = "gh" elseif this == "и" and prev == "и" and not is_letter(nxt) then this = "ii" elseif this == "к" then if ei_vowel_nxt[nxt] then this = "ch" elseif nxt == "з" or nxt == "с" then this = "x" i = i + 1 end elseif this == "ю" and i_vowel_prev[prev] then this = "u" elseif this == "я" then if i_vowel_prev[prev] then this = "a" elseif ea_cons[prev] then this = "ea" end end this = letters[this] or this insert(output, caps[i] and gsub(this, "^.", uupper) or this) i = i + 1 end return concat(output) end return export kfgsp3hr4buy8id75a9bf921h40je7g মডিউল:rsk-translit 828 168855 510407 2026-06-07T12:47:51Z RedminBot 9553 [[en:Module:rsk-translit]] থেকে আনা হলো 510407 Scribunto text/plain local export = {} local tt = { ["А"]='A', ["а"]='a', ["Б"]='B', ["б"]='b', ["В"]='V', ["в"]='v', ["Г"]='H', ["г"]='h', ["Ґ"]='G', ["ґ"]='g', ["Д"]='D', ["д"]='d', ["Е"]='E', ["е"]='e', ["Є"]='Je', ["є"]='je', ["Ж"]='Ž', ["ж"]='ž', ["З"]='Z', ["з"]='z', ["И"]='I', ["и"]='i', ["Ї"]='Ji', ["ї"]='ji', ["Й"]='J', ["й"]='j', ["К"]='K', ["к"]='k', ["Л"]='L', ["л"]='l', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["О"]='O', ["о"]='o', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Ф"]='F', ["ф"]='f', ["Х"]='X', ["х"]='x', ["Ц"]='C', ["ц"]='c', ["Ч"]='Č', ["ч"]='č', ["Ш"]='Š', ["ш"]='š', ["Щ"]='Šč', ["щ"]='šč', ["Ь"]='ʹ', ["ь"]='ʹ', ["Ю"]='Ju', ["ю"]='ju', ["Я"]='Ja', ["я"]='ja', ["Њ"]='Nj', ["њ"]='nj', ["Љ"]='Lj', ["љ"]='lj', } function export.tr(text, lang, sc) return (mw.ustring.gsub(text, '.', tt)) end return export i1z56tbtlkoqtkvaon8fjmlmtfucedt মডিউল:ru-translit/testcases 828 168856 510408 2026-06-07T12:47:51Z RedminBot 9553 [[en:Module:ru-translit/testcases]] থেকে আনা হলো 510408 Scribunto text/plain return require("Module:transliteration module testcases")( require("Module:ru-translit").tr, { { "'''б'''ез", "'''b'''ez" }, { "То́го", "Tógo" }, { "того́", "tovó" }, }, "Cyrl", "ru" ) 9e0ec8q3ocxom7isve5z7omlyg43xfo মডিউল:rut-translit 828 168857 510409 2026-06-07T12:47:52Z RedminBot 9553 [[en:Module:rut-translit]] থেকে আনা হলো 510409 Scribunto text/plain local gsub = mw.ustring.gsub local u = require("Module:string utilities").char local export = {} local tt = { ["б"]="b", ["п"]="p", ["ф"]="f", ["д"]="d", ["т"]="t", ["ц"]="c", ["з"]="z", ["с"]="s", ["ч"]="č", ["ж"]="ž", ["ш"]="š", ["г"]="g", ["к"]="k", ["х"]="ꭓ", ["ъ"]="ʔ", ["м"]="m", ["н"]="n", ["р"]="r", ["л"]="l", ["в"]="v", ["й"]="j", ["ю"]="ju", ["я"]="ja", ["ё"]="jo", ["и"]="i", ["е"]="je", ["э"]="e", ["а"]="a", ["ы"]="ɨ", ["о"]="o", ["у"]="u", ["Б"]="B", ["П"]="P", ["Ф"]="F", ["Д"]="D", ["Т"]="T", ["Ц"]="C", ["З"]="Z", ["С"]="S", ["Ч"]="Č", ["Ж"]="Ž", ["Ш"]="Š", ["Г"]="G", ["К"]="K", ["Х"]="Ꭓ", ["Ъ"]="ʔ", ["М"]="M", ["Н"]="N", ["Р"]="R", ["Л"]="L", ["В"]="V", ["Й"]="J", ["Ю"]="Ju", ["Я"]="Ja", ["Ё"]="Jo", ["И"]="I", ["Е"]="Je", ["Э"]="E", ["А"]="A", ["Ы"]="Ɨ", ["О"]="O", ["U"]="U", } local roundings = { '([тцчкТЦЧК]ӏ)в', '([кхгКХГ]ъ)в', '([цсшчгкхЦСШЧГКХ])в', '([дД]ж)в', '([хХ]ь)в', } local digraphs = { ['пӏ'] = 'ṗ', ['Пӏ'] = 'Ṗ', ['тӏ'] = 'ṭ', ['Тӏ'] = 'Ṭ', ['дз'] = 'ʒ', ['Дз'] = 'Ʒ', ['цӏ'] = 'c̣', ['Цӏ'] = 'C̣', ['дж'] = 'ǯ', ['Дж'] = 'Ǯ', ['чӏ'] = 'č̣', ['Чӏ'] = 'Č̣', ['кӏ'] = 'ḳ', ['Кӏ'] = 'Ḳ', ['гӏ'] = 'ɣ', ['Гӏ'] = 'Ɣ', ['хь'] = 'x', ['Хь'] = 'X', ['хӏ'] = 'ħ', ['Хӏ'] = 'Ħ', ['къ'] = 'q:', ['Къ'] = 'Q:', ['хъ'] = 'q', ['Хъ'] = 'Q', ['кь'] = 'q̇', ['Кь'] = 'Q̇', ['гъ'] = 'ʁ', ['Гъ'] = 'ʁ', ['гь'] = 'h', ['Гь'] = 'H', ['аь'] = 'ä', ['Аь'] = 'Ä', ['уь'] = 'ü', ['Уь'] = 'Ü', ['([ауыАУЫ])ӏ'] = '%1ˤ', } function export.tr(text, lang, sc) if sc ~= "Cyrl" then return nil end -- Convert capital to lowercase palochka. Lowercase is found in tables -- above. text = gsub(text, u(0x4C0), u(0x4CF)) -- Non-initial е is not je. text = gsub(text, "([Ё-ӏ])е", "%1e") for _, rounding in ipairs(roundings) do text = gsub(text, rounding, "%1ʷ") end for digraph, translit in pairs(digraphs) do text = gsub(text, digraph, translit) end text = gsub(text, "[Ё-ӏ]", tt) return text end return export 5p650u7pxvsg7ms0wy7p63ty5btpmao মডিউল:saz-translit/testcases 828 168858 510410 2026-06-07T12:48:04Z RedminBot 9553 [[en:Module:saz-translit/testcases]] থেকে আনা হলো 510410 Scribunto text/plain -- Unit tests for [[Module:saz-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local saz_translit = require('Module:saz-translit') function tests:check_translit(Saur, roman) self:equals('<span class="Saur mention" lang="saz">[[' .. Saur .. '#Saur|' .. Saur .. ']]</span>', saz_translit.tr(Saur, 'saz', 'Saur'), roman) end function tests:test_translit_saurashtra() self:check_translit('ꢦꢥꢶ', 'pani') self:check_translit('ꢮꢵꢔ꣄', 'vāg') self:check_translit('ꢪꢛ꣄ꢙꢶꢬꢶ', 'mañjiri') self:check_translit('ꢕꣁꢞꣁ', 'ghoḍo') self:check_translit('ꢣꢸꢒ꣄ꢒꢬ꣄', 'dukkar') self:check_translit('ꢭꢴꣁꢒꢠ꣄','lhokaṇ') end return tests nvble29ho0dtqkrw4btu6osa1jmhv4d মডিউল:sel-nor-translit 828 168859 510411 2026-06-07T12:48:06Z RedminBot 9553 [[en:Module:sel-nor-translit]] থেকে আনা হলো 510411 Scribunto text/plain local export = {} local tab = { ["А"]="A", ["а"]="a", ["Б"]="B", ["б"]="b", ["В"]="W", ["в"]="w", ["Г"]="G", ["г"]="g", ["Д"]="D", ["д"]="d", ["Е"]="Je", ["е"]="je", ["Ё"]="Jo", ["ё"]="jo", ["Ж"]="Ž", ["ж"]="ž", ["З"]="Z", ["з"]="z", ["И"]="I", ["и"]="i", ["Й"]="J", ["й"]="j", ["К"]="K", ["к"]="k", ["Ӄ"]="Q", ["ӄ"]="q", ["Л"]="L", ["л"]="l", ["М"]="M", ["м"]="m", ["Н"]="N", ["н"]="n", ["Ӈ"]="Ŋ", ["ӈ"]="ŋ", ["О"]="O", ["о"]="o", ["Ө"]="Å", ["ө"]="å", ["П"]="P", ["п"]="p", ["Р"]="R", ["р"]="r", ["С"]="S", ["с"]="s", ["Т"]="T", ["т"]="t", ["У"]="U", ["у"]="u", ["Ӱ"]="Ü", ["ӱ"]="ü", ["Ф"]="F", ["ф"]="f", ["Х"]="X", ["х"]="x", ["Ц"]="C", ["ц"]="c", ["Ч"]="Ć", ["ч"]="ć", ["Ш"]="Š", ["ш"]="š", ["Щ"]="Ś", ["щ"]="ś", ["Ы"]="Y", ["ы"]="y", ["Э"]="E", ["э"]="e", ["Ю"]="Ju", ["ю"]="ju", ["Я"]="Ja", ["я"]="ja", ["ъ"]="", ["ь"]="j" } function export.tr(text, lang, sc) return (mw.ustring.gsub(text, '.' ,tab)) end return export oy9c33ete48n9es6c0hi4guyz6puzol মডিউল:sel-sou-translit 828 168860 510412 2026-06-07T12:48:06Z RedminBot 9553 [[en:Module:sel-sou-translit]] থেকে আনা হলো 510412 Scribunto text/plain local export = {} local u = mw.ustring.char local macron = u(0x0304) local acute = u(0x0300) local tt = { ["А"]='A', ["а"]='a', ["Ӓ"]="’a", ["ӓ"]="’a", ["Б"]='B', ["б"]='b', ["В"]='W', ["в"]='w', ["Г"]='G', ["г"]='g', ["Ӷ"]='Ģ', ["ӷ"]='ģ', ["Д"]='D', ["д"]='d', ["Е"]='Je', ["е"]='je', ["Ё"]="Jo", ["ё"]="jo", ["Ж"]='Ž', ["ж"]='ž', ["Җ"]='Ǯ', ["җ"]='ǯ', ["З"]='Z', ["з"]='z', ["И"]='I', ["и"]='i', ["И̇"]="Ï", ["и̇"]="ї", ["Й"]="J", ["й"]="j", ["К"]='K', ["к"]='k', ["Ӄ"]='Q', ["ӄ"]='q', ["Л"]='L', ["л"]='l', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["Ӈ"]="Ŋ", ["ӈ"]="ŋ", ["О"]='O', ["о"]='o', ["Ӧ"]='Ö', ["ӧ"]='ö', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Ӱ"]='Ü', ["ӱ"]='ü', ["Ӯ"]="Ū", ["ӯ"]="ū", ["Ф"]='F', ["ф"]='f', ["Х"]='X', ["х"]='x', ["Ҳ"]="X", ["ҳ"]="x", ["Ц"]='C', ["ц"]='c', ["Ч"]='Č', ["ч"]='č', ["Ш"]='Š', ["ш"]='š', ["Щ"]="Šč", ["щ"]="šč", ["Ы"]="Y", ["ы"]="y", ["Ъ"]="", ["ъ"]="", ["Ь"]="’", ["ь"]="’", ["Э"]="E", ["э"]="e", ["Ю"]="Ju", ["ю"]="ju", ["Я"]="Ja", ["я"]="ja", } local vowel = "аӓеёиӣоӧуӱӯыэюяАӒЕЁИӢОӦУӰӮЫЭЮЯ" function export.tr(text, lang, sc) -- initial j + vowels text = mw.ustring.gsub(text, "^" .. "я" .. macron, "jā") text = mw.ustring.gsub(text, "^" .. "е" .. macron, "je") text = mw.ustring.gsub(text, "^" .. "ӣ", "jī") text = mw.ustring.gsub(text, "^" .. "ю" .. macron, "jū") text = mw.ustring.gsub(text, "^" .. "Я" .. macron, "Jā") text = mw.ustring.gsub(text, "^" .. "Е" .. macron, "Jē") text = mw.ustring.gsub(text, "^" .. "Ӣ", "Jī") text = mw.ustring.gsub(text, "^" .. "Ю" .. macron, "Jū") text = mw.ustring.gsub(text, " " .. "я" .. macron, "jā") text = mw.ustring.gsub(text, " " .. "е" .. macron, "je") text = mw.ustring.gsub(text, " " .. "ӣ", "jī") text = mw.ustring.gsub(text, " " .. "ю" .. macron, "jū") text = mw.ustring.gsub(text, " " .. "Я" .. macron, "Jā") text = mw.ustring.gsub(text, " " .. "Е" .. macron, "Jē") text = mw.ustring.gsub(text, " " .. "Ӣ", "Jī") text = mw.ustring.gsub(text, " " .. "Ю" .. macron, "Jū") return (mw.ustring.gsub(text, '.', tt)) end return export 9u7bwzo2lficrxjhqb6nc39imhyad0x মডিউল:shi-Latn-Arab-translit 828 168861 510413 2026-06-07T12:48:07Z RedminBot 9553 [[en:Module:shi-Latn-Arab-translit]] থেকে আনা হলো 510413 Scribunto text/plain local export = {} local tt = { ["b"] = "ب", ["g"] = "ڭ", ["d"] = "د", ["ḍ"] = "ض", ["f"] = "ف", ["k"] = "ك", ["h"] = "ه", ["ḥ"] = "ح", ["ɛ"] = "ع", ["x"] = "خ", ["q"] = "ق", ["j"] = "ج", ["l"] = "ل", ["m"] = "م", ["n"] = "ن", ["p"] = "پ", ["r"] = "ر", ["ṛ"] = "ر", ["ɣ"] = "غ", ["s"] = "س", ["ṣ"] = "ص", ["t"] = "ت", ["c"] = "ش", ["ṭ"] = "ط", ["v"] = "ڤ", ["w"] = "و", ["y"] = "ي", ["z"] = "ز", ["ẓ"] = "ژ", ["ʷ"] = "ُ", ["e"] = "", } function export.tr(text, lang, sc) if not sc then sc = require("Module:languages"):getByCode("shi"):findBestScript(text):getCode() end if sc == "Latn" then text = mw.ustring.lower(text) local words = mw.text.split(text, '%s+') local result_words = {} for _, word in ipairs(words) do local word = mw.ustring.gsub(word, "([^aiu])%1", "%1ّ") word = mw.ustring.gsub(word, '.', tt) word = mw.ustring.gsub(word, "^a", "آ") word = mw.ustring.gsub(word, "^u", "او") word = mw.ustring.gsub(word, "^i", "اي") word = mw.ustring.gsub(word, "a", "ا") word = mw.ustring.gsub(word, "u", "و") word = mw.ustring.gsub(word, "i", "ي") table.insert(result_words, word) end text = table.concat(result_words, ' ') else text = nil end return text end return export h8brynzw63jvvkk2x67eb7i5lcacmib মডিউল:shn-translit/testcases 828 168862 510414 2026-06-07T12:48:07Z RedminBot 9553 [[en:Module:shn-translit/testcases]] থেকে আনা হলো 510414 Scribunto text/plain -- Unit tests for [[Module:shn-translit]]. Refresh page to run tests. return require("Module:transliteration module testcases")( require('Module:shn-translit').tr, { { "ၵဝ်ႈ", "kāo" }, { "ၵိမ်း", "kím" }, { "ၵုင်ႈ", "kūng" }, { "ၸႂ်", "tsǎue" }, { "ၸဵတ်း", "tsáet" }, { "တွင်ႉမႆႈသႆႈလိူတ်ႇ", "tâ̰ung māi sāi lòet" }, { "တိၼ်", "tǐn" }, { "တၢင်း", "táang" }, { "ထူ", "thǔu" }, { "ၼႃး", "náa" }, { "ၼိုင်ႈ", "nūeng" }, { "ပီ", "pǐi" }, { "ပူ", "pǔu" }, { "ပႅတ်ႇ", "pèt" }, { "ၽြႃး", "phráa" }, { "ၽႃႉ", "phâ̰a" }, { "ၽႃႉ", "phâ̰a" }, { "ၽိုင်ႈ", "phūeng" }, { "ၽူၼ်", "phǔun" }, { "မွၼ်း", "máun" }, { "မႃ", "mǎa" }, { "မႃႉ", "mâ̰a" }, { "မိူဝ်ႈၼႃႈထႃႇလိုၼ်း", "mōe nāa thàa lúen" }, { "မီ", "mǐi" }, { "မူ", "mǔu" }, { "ယွၵ်ႈလိၼ်ႉပိၼ်ႈတႃ", "yāuk lḭ̂n pīn tǎa" }, { "လွင်ႈလုၵ်ႉၽိုၼ်ႉ", "lāung lṵ̂k phṵ̂en" }, { "လိၵ်ႈတႆး", "līk tái" }, { "လုမ်ႈၽႃႉ", "lūm phâ̰a" }, { "လႆ", "lǎi" }, { "ဝၢႆ", "wǎai" }, { "ဝၢႆး", "wáai" }, { "ဝၢႆႇ", "wàai" }, { "ဝၢႆႉ", "wâ̰ai" }, { "ဝႆ", "wǎi" }, { "သိပ်း", "síp" }, { "သီႇ", "sìi" }, { "သူၼ်", "sǔun" }, { "သၢမ်", "sǎam" }, { "ႁတရႃႉ", "hǎ tǎ râ̰a" }, { "ႁႃႈ", "hāa" }, { "ႁူၵ်း", "húuk" }, { "ဢႃႇၵႃႇသႃႉ", "ʼàa kàa sâ̰a" }, { "ဢေႃႇၸတြေးလီးယိူဝ်း", "ʼàu tsǎ trée líi yóe" }, { "ရူႇ", "rùu" }, { "ပ", "pǎ" }, { "ရူႇပ", "rùu pǎ" }, { "ပရူႇ", "pǎ rùu" }, }, "Mymr", "shn", { func_before_link = function(text) return text:gsub("ฺ", ""):gsub("%-", "") end } ) lqwc2rsgwgceoz54zew9eypw9qpgny2 মডিউল:si-translit/testcases 828 168863 510415 2026-06-07T12:48:08Z RedminBot 9553 [[en:Module:si-translit/testcases]] থেকে আনা হলো 510415 Scribunto text/plain -- Unit tests for [[Module:si-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local si_translit = require('Module:si-translit') function tests:check_translit(Sinh, roman, lang) lang = lang or 'si' local title = '<span class="Sinh" lang="'..lang.. '">[[' .. Sinh .. '#Sinhalese|' .. Sinh .. ']]</span>' if lang ~= 'si' then title = lang..': '..title end self:equals(title, si_translit.tr(Sinh, lang, 'Sinh'), roman) end function tests:test_translit_sinhalese() self:iterate( { { 'කරනවා', 'karanawā' }, --kərənəwa' }, { "ඍෂෟමෲණී", "r̥ṣl̥mr̥̄ṇī" }, { "ඎක්‍ෂූපෳත", "r̥̄kṣūpl̥̄ta" }, { "ඏපෘ", "l̥pr̥" }, { "ඐනා", "l̥̄nā" }, { "ඖෂධ", "auṣadha" }, { "ඓශ‍්වර්‍ය", "aiśwarya" }, { "ඍෂෟමෲණී", "ṛṣḷmṝṇī", "sa"}, { "ඎක්‍ෂූපෳත", "ṝkṣūpḹta", "sa" }, { "ඏපෘ", "ḷpṛ", "sa" }, { "ඐනා", "ḹnā", "sa" }, { "ඖෂධ", "auṣadha", "sa" }, { "ඓශ‍්වර්‍ය", "aiśvarya", "pi" }, -- Conceivable leak from Sanskrit to Pali. { "කුඛීගඞ‍්ඝා", "kukhīgaṅghā" }, { "ටට‍්ඨොඩ‍්ඪණ‍්ඩීඪන‍්ත්", "ṭaṭṭhoḍḍhaṇḍīḍhant" }, { "ජච‍්ඡුංසජ‍්ඣෙජ‍්ඤ", "jacchuṃsajjhejña", "pi" }, { "ජච‍්ඡුංසජ‍්ඣෙජ‍්ඤ", "jacchuṁsajjhejña", "si" }, -- Spelling may not be Sinhalese. { "ඉපණ‍්ඨම‍්බිඵභො", "ipaṇṭhambiphabho" }, { "ව්‍යබ‍්බොරළ‍්හළිනා", "vyabboraḷhaḷinā", "pi" }, { "ව්‍යබ‍්බොරළ‍්හළිනා", "wyabboraḷhaḷinā", "si" }, -- Spelling may not be Sinhalese. { "පුංලිඞ‍්ග", "puṃliṅga", "pi" }, { "පුංලිඞ‍්ග", "puṁliṅga", "si" }, -- Check Sinh spelling. { "ආස‍්නොක‍්ලත්‍වාය‍්හලො", "āsnoklatvāyhalo", "pi" }, { "ආස‍්නොක‍්ලත්‍වාය‍්හලො", "āsnoklatwāyhalo", "si" }, -- Check Sinh spelling. { "උගය‍්හො", "ugayho" }, { "නිග්‍රොධ", "nigrodha" }, { "පචව‍්හො", "pacavho", "pi" }, { "පචව‍්හො", "pacawho", "si" }, -- Check Sinh spelling { "අගංඡිං", "agaṃchiṃ", "pi" }, { "අගංඡිං", "agaṁchiṁ", "si" }, -- Check Sinh spelling. { "පාපො", "pāpo" }, { "නිබ‍්බාන", "nibbāna" }, { "ඌකතබ‍්බො", "ūkatabbo" }, { "ඔකාසම‍්හි", "okāsamhi" }, { "එහි", "ehi" }, { "ඊත්‍රෙද‍්ධොථූනිම්", "ītreddhothūnim" }, { "ඊත්‍රෙද‍්ධොථූනිම්", "ītreddhothūnim" }, { "ළ‍්හාසාළූං", "ḷhāsāḷūṃ", "pi" }, { "ළ‍්හාසාළූං", "ḷhāsāḷūṃ", "sa" }, { "ළ‍්හාසාළූං", "ḷhāsāḷūṁ", "si" }, }, "check_translit" ) end return tests 3ql917i5qus5e2087qc02hk6gcf7n08 মডিউল:sia-translit 828 168864 510416 2026-06-07T12:48:08Z RedminBot 9553 [[en:Module:sia-translit]] থেকে আনা হলো 510416 Scribunto text/plain local export = {} local U = mw.ustring.char local rsubn = mw.ustring.gsub local macron = U(0x0304) local tt = { ["А"]='A', ["а"]='a', ["Ӓ"]="Ä", ["ӓ"]="ä", ["А̊"]="Å", ["а̊"]="å", ["Б"]='B', ["б"]='b', ["В"]='V', ["в"]='v', ["Ѵ"]='W', ["ѵ"]='w', ["Г"]='G', ["г"]='g', ["Д"]='D', ["д"]='d', ["Е"]='Je', ["е"]='je', ["Ё"]="Jo", ["ё"]="jo", ["Ж"]='Ž', ["ж"]='ž', ["З"]='Z', ["з"]='z', ["Һ"]="H", ["һ"]="h", ["ʼ"]="h", ["И"]='I', ["и"]='i', ["Ӣ"]="Ī", ["ӣ"]="ī", ["Й"]="J", ["й"]="j", ["Ј"]="J̥", ["ј"]="j̥", ["Ҋ"]="J̥", ["ҋ"]="j̥", ["К"]='K', ["к"]='k', ["К̌"]='Ǩ', ["к̌"]='ǩ', ["Л"]='L', ["л"]='l', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["Ӊ"]="N̥", ["ӊ"]="n̥", ["Ӈ"]="Ŋ", ["ӈ"]="ŋ", ["О"]='O', ["о"]='o', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Ӯ"]="Ū", ["ӯ"]="ū", ["Ф"]='F', ["ф"]='f', ["Х"]='X', ["х"]='x', ["Ц"]='C', ["ц"]='c', ["Ч"]='Č', ["ч"]='č', ["Ш"]='Š', ["ш"]='š', ["Щ"]="Šč", ["щ"]="šč", ["Ы"]="Y", ["ы"]="y", ["Ӹ"]="Ï", ["ӹ"]="ï", ["Ъ"]="", ["ъ"]="", ["Ь"]="’", ["ь"]="’", ["Ҍ"]= "’", ["ҍ"]="’", ["Э"]="E", ["э"]="e", ["Ӭ"]="’E", ["ӭ"]="’e", ["Ю"]="Ju", ["ю"]="ju", ["Я"]="Ja", ["я"]="ja", } local vowel = "аӓеёиӣоуӯыӹэӭюяАӒЕЁИӢОУӮЫӸЭӬЮЯ" function export.tr(text, lang, sc) text = rsubn(text, "^" .. "я" .. macron, "jā") text = rsubn(text, "^" .. "е" .. macron, "jē") text = rsubn(text, "^" .. "Я" .. macron, "Jā") text = rsubn(text, "^" .. "Е" .. macron, "Jē") text = rsubn(text, " " .. "я" .. macron, " jā") text = rsubn(text, " " .. "e" .. macron, " jē") text = rsubn(text, " " .. "Я" .. macron, " jā") text = rsubn(text, " " .. "E" .. macron, " jē") text = rsubn(text, "([^" .. vowel .. "НнЪъЬьҌҍ])е", "%1ьэ") text = rsubn(text, "([^" .. vowel .. "НнЪъЬьҌҍ])ё", "%1ьо") text = rsubn(text, "([^" .. vowel .. "НнЪъЬьҌҍ])ю", "%1ьу") text = rsubn(text, "([^" .. vowel .. "НнЪъЬьҌҍ])я", "%1ьа") text = rsubn(text, "([^" .. vowel .. "НнЪъЬьҌҍ])Е", "%1ЬЭ") text = rsubn(text, "([^" .. vowel .. "НнЪъЬьҌҍ])Ё", "%1ЬО") text = rsubn(text, "([^" .. vowel .. "НнЪъЬьҌҍ])Ю", "%1ЬУ") text = rsubn(text, "([^" .. vowel .. "НнЪъЬьҌҍ])Я", "%1ЬА") text = rsubn(text, "([нН])ь", "%1й") text = rsubn(text, "НЬ", "НЙ") text = rsubn(text, "([лЛ])ҍ", "%1й") text = rsubn(text, "Лҍ", "ЛЙ") text = rsubn(text, '.', tt) return text end return export 22m240ghx8zuopxb9yrqsnmue00sfqk মডিউল:sjt-translit 828 168865 510417 2026-06-07T12:48:09Z RedminBot 9553 [[en:Module:sjt-translit]] থেকে আনা হলো 510417 Scribunto text/plain local export = {} local u = mw.ustring.char local macron = u(0x0304) local tt = { ["А"]='A', ["а"]='a', ["Ӓ"]="’a", ["ӓ"]="’a", ["Б"]='B', ["б"]='b', ["В"]='V', ["в"]='v', ["Г"]='G', ["г"]='g', ["Д"]='D', ["д"]='d', ["Е"]='Je', ["е"]='je', ["Ё"]="Jo", ["ё"]="jo", ["Ж"]='Ž', ["ж"]='ž', ["З"]='Z', ["з"]='z', ["Һ"]="H", ["һ"]="h", ["ʼ"]="h", ["И"]='I', ["и"]='i', ["Ӣ"]="Ī", ["ӣ"]="ī", ["Ӥ"]="’Ï", ["ӥ"]="’ï", ["Й"]="J", ["й"]="j", ["Ј"]="J̥", ["ј"]="j̥", ["Ҋ"]="J̥", ["ҋ"]="j̥", ["К"]='K', ["к"]='k', ["Л"]='L', ["л"]='l', ["Ӆ"]='L̥', ["ӆ"]='l̥', ["М"]='M', ["м"]='m', ["Ӎ"]="M̥", ["ӎ"]="m̥", ["Н"]='N', ["н"]='n', ["Ӊ"]="N̥", ["ӊ"]="n̥", ["Ӈ"]="Ŋ", ["ӈ"]="ŋ", ["О"]='O', ["о"]='o', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["Ҏ"]="R̥", ["ҏ"]="r̥", ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Ӯ"]="Ū", ["ӯ"]="ū", ["Ф"]='F', ["ф"]='f', ["Х"]='H', ["х"]='x', ["Ц"]='C', ["ц"]='c', ["Ч"]='Č', ["ч"]='č', ["Ш"]='Š', ["ш"]='š', ["Щ"]="Šč", ["щ"]="šč", ["Ы"]="Ï", ["ы"]="ï", ["Ӹ"]="’Ï", ["ӹ"]="’ï", ["Ъ"]="", ["ъ"]="", ["Ь"]="ʼ", ["ь"]="ʼ", ["Ҍ"]= "ʼ", ["ҍ"]="ʼ", ["Э"]="E", ["э"]="e", ["Ӭ"]="’E", ["ӭ"]="’e", ["Ю"]="Ju", ["ю"]="ju", ["Я"]="Ja", ["я"]="ja", } local vowel = "аӓеёиӥӣоуӯыӹэӭюяАӒЕЁӤӢОУӮЫӸЭӬЮЯ" local consonant = "БбВвГгДдЖжЗзКкЛлӅӆМмӍӎНнӉӊӇӈПпРрҎҏСсТтХхҺһЦцЧчШшЩщ" function export.tr(text, lang, sc) -- initial palatal n + long vowel text = mw.ustring.gsub(text, "([Нн])я" .. macron, "%1jā") text = mw.ustring.gsub(text, "([Нн])ёа" .. macron, "%1jåå") text = mw.ustring.gsub(text, "([Нн])ёа", "%1jå") -- digraphs ie and ea text = mw.ustring.gsub(text, "([" .. consonant .. "])е" .. macron, "%1ie") text = mw.ustring.gsub(text, "([" .. consonant .. "])я" .. macron, "%1ea") -- initial ни → njï, if followed by two consonants text = mw.ustring.gsub(text, "^ни([".. consonant .."][".. consonant .."])", "njï%1") -- combinations text = mw.ustring.gsub(text, "^айй([".. consonant .."])а", "ajj%1a") text = mw.ustring.gsub(text, "^аҋҋ([".. consonant .."])", "aj̥j̥%1") text = mw.ustring.gsub(text, "^([".. consonant .."])айй([".. consonant .."])а", "%1ajj%2a") text = mw.ustring.gsub(text, "^([".. consonant .."])аҋҋ([".. consonant .."])", "%1aj̥j̥%2") text = mw.ustring.gsub(text, "^([".. consonant .."])а$", "%1a") -- initial х → h text = mw.ustring.gsub(text, "^" .. "х", "h") text = mw.ustring.gsub(text, "^" .. "Х", "H") text = mw.ustring.gsub(text, " " .. "х", " h") text = mw.ustring.gsub(text, " " .. "Х", " H") -- initial j + vowels text = mw.ustring.gsub(text, "^" .. "ю" .. macron, "jū") text = mw.ustring.gsub(text, "^" .. "я" .. macron, "jā") text = mw.ustring.gsub(text, "^" .. "ӣ", "ji") text = mw.ustring.gsub(text, "^" .. "е" .. macron, "jie") text = mw.ustring.gsub(text, "^" .. "ё" .. macron, "jō") text = mw.ustring.gsub(text, "^" .. "Ю" .. macron, "Jū") text = mw.ustring.gsub(text, "^" .. "Я" .. macron, "Jā") text = mw.ustring.gsub(text, "^" .. "Ӣ", "Ji") text = mw.ustring.gsub(text, "^" .. "Е" .. macron, "Jie") text = mw.ustring.gsub(text, "^" .. "ё" .. macron, "Jō") text = mw.ustring.gsub(text, " " .. "ю" .. macron, " jū") text = mw.ustring.gsub(text, " " .. "я" .. macron, " jea") text = mw.ustring.gsub(text, " " .. "ӣ", " ji") text = mw.ustring.gsub(text, " " .. "e" .. macron, " jie") text = mw.ustring.gsub(text, " " .. "ё" .. macron, " jō") text = mw.ustring.gsub(text, " " .. "Ю" .. macron, " jū") text = mw.ustring.gsub(text, " " .. "Я" .. macron, " jea") text = mw.ustring.gsub(text, " " .. "Ӣ", " ji") text = mw.ustring.gsub(text, " " .. "E" .. macron, " jie") text = mw.ustring.gsub(text, " " .. "Ё" .. macron, " jō") text = mw.ustring.gsub(text, "че", "če") text = mw.ustring.gsub(text, "йе", "jje") -- hard sign between same consonants text = mw.ustring.gsub(text, "във", "v'v") text = mw.ustring.gsub(text, "лъл", "l'l") text = mw.ustring.gsub(text, "мъм", "m'm") text = mw.ustring.gsub(text, "нън", "n'n") text = mw.ustring.gsub(text, "със", "s's") text = mw.ustring.gsub(text, "тът", "t't") -- soft/semi-soft/hard signs text = mw.ustring.gsub(text, "([".. consonant .."])([ьҍъ])е", "%1%2je") text = mw.ustring.gsub(text, "([".. consonant .."])([ьҍъ])ё", "%1%2jo") text = mw.ustring.gsub(text, "([".. consonant .."])([ьҍъ])ю", "%1%2ju") text = mw.ustring.gsub(text, "([".. consonant .."])([ьҍъ])я", "%1%2ja") -- long a text = mw.ustring.gsub(text, "а" .. macron, "ā") text = mw.ustring.gsub(text, "А" .. macron, "Ā") -- final а text = mw.ustring.gsub(text, "([".. consonant .."])%1" .. "а" .. "$", "%1%1a") text = mw.ustring.gsub(text, "([".. consonant .."])%1([".. consonant .."])" .. "а" .. "$", "%1%1%2a") text = mw.ustring.gsub(text, "йй([".. consonant .."])" .. "а" .. "$", "jj%1a") text = mw.ustring.gsub(text, "ҋҋ([".. consonant .."])" .. "а" .. "$", "j̥j̥%1a") text = mw.ustring.gsub(text, "йя" .. "$", "jja") -- endings text = mw.ustring.gsub(text, "адҍ" .. "$", "ad’") text = mw.ustring.gsub(text, "эдҍ" .. "$", "âd’") text = mw.ustring.gsub(text, "чедҍ" .. "$", "čâd’") text = mw.ustring.gsub(text, "йедҍ" .. "$", "jâd’") text = mw.ustring.gsub(text, "([БбВвГгДдЖжЗзКкЛлӅӆМмӍӎӉӊӇӈПпРрҎҏСсТтХхЦцШшЩщ])ем" .. "$", "%1’âm") text = mw.ustring.gsub(text, "([БбВвГгДдЖжЗзКкЛлӅӆМмӍӎӉӊӇӈПпРрҎҏСсТтХхЦцШшЩщ])эм" .. "$", "%1âm") text = mw.ustring.gsub(text, "чем" .. "$", "čâm") text = mw.ustring.gsub(text, "эл" .. "$", "âl") text = mw.ustring.gsub(text, "ас" .. "$", "as") text = mw.ustring.gsub(text, "ань" .. "$", "anj") text = mw.ustring.gsub(text, "ант" .. "$", "ant") -- palatalization text = mw.ustring.gsub(text, "([БбВвГгДдЖжЗзКкЛлӅӆМмӍӎӇӈПпРрҎҏСсТтХхЦцШшЩщ])е", "%1’e") text = mw.ustring.gsub(text, "([БбВвГгДдЖжЗзКкЛлӅӆМмӍӎӇӈПпРрҎҏСсТтХхЦцШшЩщ])ё", "%1’o") text = mw.ustring.gsub(text, "([БбВвГгДдЖжЗзКкЛлӅӆМмӍӎӇӈПпРрҎҏСсТтХхЦцШшЩщ])ю", "%1’u") text = mw.ustring.gsub(text, "([БбВвГгДдЖжЗзКкЛлӅӆМмӍӎӇӈПпРрҎҏСсТтХхЦцШшЩщ])я", "%1’a") -- palatal н text = mw.ustring.gsub(text, "([НнӉӊ])е", "%1je") text = mw.ustring.gsub(text, "([НнӉӊ])ё", "%1jo") text = mw.ustring.gsub(text, "([НнӉӊ])ю", "%1ju") text = mw.ustring.gsub(text, "([НнӉӊ])я", "%1ja") -- дз → ʒ text = mw.ustring.gsub(text, "дз", "ʒ") -- дж → ǯ text = mw.ustring.gsub(text, "дж", "ǯ") -- oa text = mw.ustring.gsub(text, "оа", "oa") -- а (before final consonants and й) text = mw.ustring.gsub(text, "а([".. consonant .."])" .. "$", "a%1") text = mw.ustring.gsub(text, "ай" .. "$", "aj") -- replacing the remaining (cyrillic) a's with â's text = mw.ustring.gsub(text, "а", "â") return (mw.ustring.gsub(text, '.', tt)) end return export latc2rw2iuhfmd9dv7en0mkigdysodv মডিউল:sle-translit 828 168866 510418 2026-06-07T12:48:09Z RedminBot 9553 [[en:Module:sle-translit]] থেকে আনা হলো 510418 Scribunto text/plain local export = {} local consonants = { ['ಕ']='k', ['ಖ']='kh', ['ಗ']='g', ['ಘ']='gh', ['ಙ']='ṅ', ['ಚ']='c', ['ಛ']='ch', ['ಜ']='j', ['ಝ']='jh', ['ಞ']='ñ', ['ಟ']='ṭ', ['ಠ']='ṭh', ['ಡ']='ḍ', ['ಢ']='ḍh', ['ಣ']='ṇ', ['ತ']='t', ['ಥ']='th', ['ದ']='d', ['ಧ']='dh', ['ನ']='n', ['ಪ']='p', ['ಫ']='ph', ['ಬ']='b', ['ಭ']='bh', ['ಮ']='m', ['ಯ']='y', ['ರ']='r', ['ಱ']='ṟ', ['ಲ']='l', ['ವ']='v', ['ಶ']='ś', ['ಷ']='ṣ', ['ಸ']='s', ['ಹ']='h', ['ಳ']='ḷ', ['ೞ']='ḻ', ['ಫ಼']='f', ['ಜ಼']='z', ['ಳ಼']='ḻ', } local diacritics = { ['ಾ']= 'ā' , ['ಿ']='i' , ['ೀ']='ī' , ['ು']='u' , ['ೂ']='ū' , ['ೃ']='ṛ' , ['ೄ']='r̥̄' , ['ೆ']='e' , ['ೇ']='ē' , ['ೈ']='ai' , ['ೊ']='o' , ['ೋ']='ō' , ['ೌ']='au' } local nonconsonants = { -- vowels ['ಅ']='a' , ['ಆ']='ā' , ['ಇ']='i' , ['ಈ']='ī' , ['ಉ']='u' , ['ಊ']='ū' , ['ಋ']='ṛ' , ['ೠ']='r̥̄' , ['ಌ']='l̥' , ['ೡ']='l̥̄', ['ಎ']='e' , ['ಏ']='ē' , ['ಐ']='ai' , ['ಒ']='o' , ['ಓ']='ō' , ['ಔ']='au' , ['ಅಂ']='aṃ' , ['ಅಃ']='ah' , -- other symbols ['ಂ']='ṃ', -- anusvara ['ಃ']='ḥ', -- visarga --halant, supresses the inherent vowel "a" ['್']='', -- digits ['೦'] = '0', ['೧'] = '1', ['೨'] = '2', ['೩'] = '3', ['೪'] = '4', ['೫'] = '5', ['೬'] = '6', ['೭'] = '7', ['೮'] = '8', ['೯'] = '9', } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '([ಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನಪಫಬಭಮಯರಱಲವಶಷಸಹಳೞಕಖ][಼]?)'.. '([ಾಿೀುೂೃೆೇೈೊೋೌ್]?)', function(c, d) -- mw.log('match', c, d) c = consonants[c] or c if d == "" then return c .. 'a' else return c .. (diacritics[d] or d) end end) text = mw.ustring.gsub(text, '.', nonconsonants) -- anusvara text = mw.ustring.gsub(text, 'ṃ([kgṅ])', 'ṅ%1') text = mw.ustring.gsub(text, 'ṃ([cjñ])', 'ñ%1') text = mw.ustring.gsub(text, 'ṃ([ṭḍṇ])', 'ṇ%1') text = mw.ustring.gsub(text, 'ṃ([tdn])', 'n%1') text = mw.ustring.gsub(text, 'ṃ([pbm])', 'm%1') return text end return export mxi4oniiqh5nb9q5gbnyfc13drc97v6 মডিউল:su-Latn-Sund-translit 828 168867 510419 2026-06-07T12:48:10Z RedminBot 9553 [[en:Module:su-Latn-Sund-translit]] থেকে আনা হলো 510419 Scribunto text/plain local export = {} -- Sign definitions local panyakra = "ᮢ" -- medial -r- local panglayar = "ᮁ" -- final -r- local virama = "᮪" -- cancels inherent vowel -- Latin to Sundanese mappings local consonants = {"k","g","c","j","t","d","n","p","b","m","y","l","w","s","h","f","q","v","x","z","ny","ng","kh","sy"} local mapping = { ["k"] = "ᮊ", ["g"] = "ᮌ", ["c"] = "ᮎ", ["j"] = "ᮏ", ["ny"] = "ᮑ", ["ng"] = "ᮍ", ["t"] = "ᮒ", ["d"] = "ᮓ", ["n"] = "ᮔ", ["p"] = "ᮕ", ["b"] = "ᮘ", ["m"] = "ᮙ", ["y"] = "ᮚ", ["l"] = "ᮜ", ["w"] = "ᮝ", ["s"] = "ᮞ", ["h"] = "ᮠ", ["f"] = "ᮖ", ["q"] = "ᮋ", ["v"] = "ᮗ", ["x"] = "ᮟ", ["z"] = "ᮐ", ["kh"] = "ᮮ", ["sy"] = "ᮯ", -- Vowels ["a"] = "ᮃ", ["é"] = "ᮆ", ["i"] = "ᮄ", ["o"] = "ᮇ", ["u"] = "ᮅ", ["e"] = "ᮈ", ["eu"] = "ᮉ", } -- Latin vowel set local latinVowels = {a=true, ["é"]=true, e=true, i=true, o=true, u=true} -- Diacritics for vowels following a consonant local diacritics = { ["i"]="ᮤ", ["u"]="ᮥ", ["é"]="ᮦ", ["o"]="ᮧ", ["e"]="ᮨ", ["eu"]="ᮩ" } -- Finals (isolated after vowels) local finals = { ["ng"]="ᮀ", ["r"]=panglayar, ["h"]="ᮂ", ["k"]="ᮾ", ["m"]="ᮿ" } -- Transliterate a single word local function transliterate_word(tok) local out = "" local i = 1 while i <= #tok do -- Check consonant+r cluster local cluster for _, c in ipairs(consonants) do if mw.ustring.sub(tok, i, i+#c-1) == c and mw.ustring.sub(tok, i+#c, i+#c) == 'r' then cluster = c break end end if cluster then out = out .. mapping[cluster] .. panyakra i = i + #cluster + 1 -- skip inherent 'a' or attach diacritic if next is vowel local v = mw.ustring.sub(tok, i, i) if diacritics[v] then out = out .. diacritics[v] i = i + 1 elseif v == 'a' then i = i + 1 end else -- Normal mapping local matched = false for _, c in ipairs(consonants) do if mw.ustring.sub(tok, i, i+#c-1) == c then local glyph = mapping[c] i = i + #c -- Check for diacritic local v2 = mw.ustring.sub(tok, i, i) if diacritics[v2] then glyph = glyph .. diacritics[v2] i = i + 1 else -- Only add inherent vowel if next Latin char is vowel local nextChar = mw.ustring.sub(tok, i, i) if latinVowels[nextChar] then glyph = glyph .. "ᮃ" end end out = out .. glyph matched = true break end end if not matched then -- Vowel or other local ch = mw.ustring.sub(tok, i, i) if mapping[ch] then out = out .. mapping[ch] else out = out .. ch end i = i + 1 end end end -- Post-processing -- Vowel + r -> panglayar out = mw.ustring.gsub(out, '([ᮃᮆᮄᮇᮅᮈᮉ])r', '%1'..panglayar) -- Append virama to bare final consonants out = mw.ustring.gsub(out, '([ᮊᮌᮍᮎᮏᮑᮒᮓᮔᮕᮘᮙᮚᮛᮜᮝᮞᮠᮖᮋᮗᮟᮐᮮᮯ])$', '%1'..virama) return out end function export.tr(text) return mw.ustring.gsub(text, '%w+', transliterate_word) end return export crugag4juw6huh74idmdx1wz6e8jagp মডিউল:syl-translit/testcases 828 168868 510420 2026-06-07T12:48:11Z RedminBot 9553 [[en:Module:syl-translit/testcases]] থেকে আনা হলো 510420 Scribunto text/plain -- Unit tests for [[Module:syl-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local syl_translit = require('Module:syl-translit') local lang = require('Module:languages').getByCode('syl') local m_links = require('Module:links') local function link(term) return m_links.full_link { lang = lang, term = term, tr = '-' } end function tests:do_test_translit(sylo, roman, xlit) self:equals(link(sylo), syl_translit.tr(sylo, 'syl', 'Sylo'), roman) end function tests:test_translit_sylheti() self:do_test_translit('ꠀꠘ꠆ꠗꠣꠁꠞ', 'andair') self:do_test_translit('ꠉꠣꠠꠤꠀ', 'gaṛia') self:do_test_translit('ꠇꠚꠟ', 'xofol') self:do_test_translit('ꠇꠂꠚꠟ', 'xoifol') self:do_test_translit('ꠛꠤꠍ꠆ꠘꠣ', 'bisna') self:do_test_translit('ꠙꠣꠈ', 'fax') self:do_test_translit('ꠝꠣꠍ', 'mas') self:do_test_translit('ꠇꠌꠥꠀ', 'xosua') self:do_test_translit('ꠇꠣꠑ', 'xaṭ') self:do_test_translit('ꠌꠇꠞ', 'soxor') end function tests:test_translit_TONE() self:do_test_translit('ꠊꠣꠝ', 'ɡám') self:do_test_translit('ꠊꠞ', 'gór') self:do_test_translit('ꠊꠥꠠꠣ', 'gúṛa') self:do_test_translit('ꠃ’ꠜꠣꠘꠤ', 'úbáni') self:do_test_translit('ꠀ’ꠅꠞ', 'áor') self:do_test_translit('ꠅ’ꠄ', 'óe') self:do_test_translit('ꠇꠣꠑꠟ', 'xaṭól') self:do_test_translit('ꠈꠣꠟꠤ', 'xáli') self:do_test_translit('ꠉꠣꠜꠤꠘ', 'gabín') self:do_test_translit('ꠀꠁꠌ꠆ꠍꠣ', 'aiccá') self:do_test_translit('ꠙꠣꠑꠣ', 'faṭá') self:do_test_translit('ꠇꠥꠑꠣ', 'kuṭá') self:do_test_translit('ꠙꠣꠈꠣ', 'faxá') end return tests j1md06s2k0md59x31kcf854v3voj0fb মডিউল:ta-colloquial-translit 828 168869 510421 2026-06-07T12:48:11Z RedminBot 9553 [[en:Module:ta-colloquial-translit]] থেকে আনা হলো 510421 Scribunto text/plain local export = {} local consonants = { ['க']='k' , ['ங']='ṅ' , ['ச']='c' , ['ஞ']='ñ' , ['ட']='ṭ' , ['ண']='ṇ' , ['த']='t' , ['ந']='n' , ['ப']='p', ['ம']='m' , ['ய']='y' , ['ர']='r' , ['ல']='l' , ['வ']='v' , ['ழ']='ḻ' , ['ள']='ḷ' , ['ற']='ṟ' , ['ன']='ṉ' , ['ஶ']='ś' , ['ஜ']='j' , ['ஷ']='ṣ' , ['ஸ']='s' , ['ஹ']='h' , ['ஃப']='f' , ['ஃஜ']='z', ['ஃஸ']='ks' , ['ஃக ']='x', ['ஃ']='ḥ' , ['ௐ']='о̄m', } local diacritics = { ['ா']= 'ā' , ['ி']='i' , ['ீ']='ī' , ['ு']='u' , ['ூ']='ū' , ['ெ']='e' , ['ே']='ē' , ['ை']='ai' , ['ொ']='o' , ['ோ']='ō' , ['ௌ']='au', ['்']='', --halant, supresses the inherent vowel "a" -- no diacritic [''] = 'a', } local nonconsonants = { -- vowels ['அ']='’a' , ['ஆ']='’ā' , ['இ']='’i' , ['ஈ']='’ī' , ['உ']='’u' , ['ஊ']='’ū' , ['எ']='’e' , ['ஏ']='’ē' , ['ஐ']='’ai' , ['ஒ']='’o' , ['ஓ']='’ō' , ['ஔ']='’au' , ['ௐ']='о̄m', -- other symbols -- ['ஃ']='' , ['ௐ']='о̄m', } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '(ஃ?)([க-ஹ])([ா-்]?)', function(h, c, d) return (consonants[h..c] or consonants[h] .. (consonants[c] or c)) .. diacritics[d] end) text = mw.ustring.gsub(text, '[அ-ஔ]', nonconsonants) text = mw.ustring.gsub(text, '^’', '') text = mw.ustring.gsub(text, '([%s%p])’', '%1') text = mw.ustring.gsub(text, "^([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)i([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ])a", '%1e%2a') text = mw.ustring.gsub(text, "([%s%p])([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)i([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ])a", '%1%2e%3a') text = mw.ustring.gsub(text, "^([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)u([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ])a", '%1o%2a') text = mw.ustring.gsub(text, "([%s%p])([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)u([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ])a", '%1%2o%3a') text = mw.ustring.gsub(text, "([iī])tt", '%1cc') text = mw.ustring.gsub(text, "([iī])nt", '%1ñc') text = mw.ustring.gsub(text, 'ṅk', 'ṅg') text = mw.ustring.gsub(text, 'ñc', 'ñj') text = mw.ustring.gsub(text, 'ṇṭ', 'ṇḍ') text = mw.ustring.gsub(text, 'nt', 'nd') text = mw.ustring.gsub(text, 'mp', 'mb') text = mw.ustring.gsub(text, 'ṟṟ', 'tt') text = mw.ustring.gsub(text, '([aeiouāīūēō])k([aeiouāīūēō])', '%1h%2') text = mw.ustring.gsub(text, '([aeiouāīūēō])c([aeiouāīūēō])', '%1s%2') text = mw.ustring.gsub(text, '([aeiouāīūēō])ṭ([aeiouāīūēō])', '%1ḍ%2') text = mw.ustring.gsub(text, '([aeiouāīūēō])t([aeiouāīūēō])', '%1d%2') text = mw.ustring.gsub(text, '([aeiouāīūēō])p([aeiouāīūēō])', '%1b%2') text = mw.ustring.gsub(text, '^c', 's') text = mw.ustring.gsub(text, '([%s%p])c', '%1s') text = mw.ustring.gsub(text, '([lḷṇr])$', '%1u') text = mw.ustring.gsub(text, '([lḷṇr])([%s%p])', '%1u%2') text = mw.ustring.gsub(text, "^([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)([aeiou])([lḷṇ])u$", '%1%2%3%3u') text = mw.ustring.gsub(text, "([%s%p])([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)([aeiou])([lḷṇ])u$", '%1%2%3%4%4u') text = mw.ustring.gsub(text, "^([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)([aeiou])([lḷṇ])u([%s%p])", '%1%2%3%3u%4') text = mw.ustring.gsub(text, "([%s%p])([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)([aeiou])([lḷṇ])u([%s%p])", '%1%2%3%4%4u%5') text = mw.ustring.gsub(text, "^([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)ai$", '%1ayyi') text = mw.ustring.gsub(text, "([%s%p])([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)ai$", '%1%2ayyi') text = mw.ustring.gsub(text, "^([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)ai([%s%p])", '%1ayyi%2') text = mw.ustring.gsub(text, "([%s%p])([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)ai([%s%p])", '%1%2ayyi%3') text = mw.ustring.gsub(text, 'aiy', 'ayy') text = mw.ustring.gsub(text, 'ai', 'e') text = mw.ustring.gsub(text, "^([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)([aeiouāīūēō])y$", '%1%2yyi') text = mw.ustring.gsub(text, "([%s%p])([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)([aeiouāīūēō])y$", '%1%2%3yyi') text = mw.ustring.gsub(text, "^([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)([aeiouāīūēō])y([%s%p])", '%1%2yyi%3') text = mw.ustring.gsub(text, "([%s%p])([kgṅcñṭḍṇtdnpbmyrlvḻḷṟṉśjṣshfzḥ]?)([aeiouāīūēō])y([%s%p])", '%1%2%3yyi%4') text = mw.ustring.gsub(text, '([aeiouāīūēō])([lḷrṟ])([kcṭtp])', '%1%3%3') text = mw.ustring.gsub(text, '([aeiouāīūēō])([lḷrṟ])([ṅnñṇm]?)([gjḍdbs])', '%1%3%4') text = mw.ustring.gsub(text, '([ṭṟ])k', 'kk') return text end return export 9glmoag4sjbrme4ubadqtk8b8ihdvsw মডিউল:ta-translit/testcases 828 168870 510422 2026-06-07T12:48:12Z RedminBot 9553 [[en:Module:ta-translit/testcases]] থেকে আনা হলো 510422 Scribunto text/plain -- Unit tests for [[Module:ta-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ta_translit = require('Module:ta-translit') function tests:check_translit(Taml, roman) self:equals('<span class="Taml" lang="ta">[[' .. Taml .. '#Tamil|' .. Taml .. ']]</span>', ta_translit.tr(Taml, 'ta', 'Taml'), roman) end function tests:test_translit_tamil() self:check_translit('அஃகம்', 'aḥkam') self:check_translit('கஞ்சாவை', 'kañcāvai') self:check_translit('இடியாப்பம்', 'iṭiyāppam') self:check_translit('காடைக்கண்ணி', 'kāṭaikkaṇṇi') self:check_translit("ரெஃஸ்","rex") self:check_translit("அசிஃப்","acif") self:check_translit("ஔவை", "auvai") end return tests 2zw9khsu44k3kng6crb46b4e1zjgpj9 মডিউল:tcy-Tutg-translit 828 168871 510423 2026-06-07T12:48:12Z RedminBot 9553 [[en:Module:tcy-Tutg-translit]] থেকে আনা হলো 510423 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local consonants = { ['𑎒'] = 'k', ['𑎓'] = 'kh', ['𑎔'] = 'g', ['𑎕'] = 'gh', ['𑎖']='ṅ', ['𑎗'] = 'c', ['𑎘'] = 'ch', ['𑎙'] = 'j', ['𑎚'] = 'jh', ['𑎛']='ñ', ['𑎜'] = 'ṭ', ['𑎝'] = 'ṭh', ['𑎞'] = 'ḍ', ['𑎟'] = 'ḍh', ['𑎠']='ṇ', ['𑎡'] = 't', ['𑎢'] = 'th', ['𑎣'] = 'd', ['𑎤'] = 'dh', ['𑎥']='n', ['𑎦'] = 'p', ['𑎧'] = 'ph', ['𑎨'] = 'b', ['𑎩'] = 'bh' , ['𑎪']='m', ['𑎫'] = 'y', ['𑎬'] = 'r', ['𑏑'] = 'r', ['𑎭'] = 'l', ['𑎳'] = 'ḷ', ['𑎮'] = 'v', ['𑎯'] = 'ś', ['𑎰'] = 'ṣ', ['𑎱'] = 's', ['𑎲'] = 'h', } local diacritics = { ['𑎸'] = 'ā', ['𑎹'] = 'i', ['𑎺'] = 'ī',['𑎻'] = 'u', ['𑎼'] = 'ū', ['𑎽'] = 'r̥', ['𑎾'] ='r̥̄', ['𑎿'] ='l̥', ['𑏀'] = 'l̥̄', ['𑏂'] = 'ē', ['𑏅'] = 'ai', ['𑏇'] = 'ō', ['𑏈'] = 'au', ['𑏎'] = '', ['𑏏'] = '', } local tt = { -- vowels ['𑎀'] = 'a', ['𑎁'] ='ā' , ['𑎂'] ='i' , ['𑎃'] = 'ī' , ['𑎄'] = 'u' , ['𑎅'] = 'ū' , ['𑎆'] = 'r̥', ['𑎇'] ='r̥̄', ['𑎈'] ='l̥', ['𑎉'] = 'l̥̄', ['𑎋'] = 'ē', ['𑎎'] ='ai', ['𑎐'] ='ō', ['𑎑'] = 'au', -- other symbols ['𑎷'] = 'ṁ',-- avagraha ['𑏌'] = 'ṁ',-- anusvara ['𑏍'] = 'ḥ' , -- visarga ['𑏗'] = 'ōm' , -- om } -- translit any words or phrases function export.tr(text, lang, sc) local VIRAMA = '𑏎' -- final virama rules if lang == "tcy" then text = gsub(text, VIRAMA .. "([%,%.%!%?%:%;]?)$", VIRAMA .. "ŭ%1") text = gsub(text, VIRAMA .. "([%,%.%!%?%:%;]?) ", VIRAMA .. "ŭ%1 ") end text = gsub( text, '([𑎒𑎓𑎔𑎕𑎖𑎗𑎘𑎙𑎚𑎛𑎜𑎝𑎞𑎟𑎠𑎡𑎢𑎣𑎤𑎥𑎦𑎧𑎨𑎩𑎪𑎫𑎬𑎭𑎮𑎯𑎰𑎱𑎲𑎳𑎴])'.. '([𑎸𑎹𑎺𑎻𑎼𑎽𑎾𑎿𑏀𑏅𑏅𑎸𑏈𑏎𑏏]?)', function(c, d) if d == "" then return consonants[c] ..'a' else return consonants[c] .. diacritics[d] end end) text = gsub(text,'.', tt) -- anusvara text = gsub(text,'ṁ([kgṅ])','ṅ%1') text = gsub(text,'ṁ([cjñ])','ñ%1') text = gsub(text,'ṁ([ṭḍṇ])','ṇ%1') text = gsub(text,'ṁ([tdn])','n%1') text = gsub(text,'ṁ([pbm])','m%1') return text end return export jlnpzeijd3e6kqt3drw729vm7i3w918 মডিউল:tcy-Tutg-translit/testcases 828 168872 510424 2026-06-07T12:48:13Z RedminBot 9553 [[en:Module:tcy-Tutg-translit/testcases]] থেকে আনা হলো 510424 Scribunto text/plain -- Unit tests for [[Module:tcy-Tutg-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local tcy_translit = require('Module:tcy-Tutg-translit') --TO DO function tests:do_test_translit(tutg, roman, comment) self:equals( '<span class="Tutg" lang="tcy">[[' .. tutg .. '#Tulu|' .. tutg .. ']]</span>', tcy_translit.tr(tutg, 'tcy', 'tutg'), roman, { comment = comment }) end function tests:test_translit_tulu() local examples = { { '𑎦𑎮𑎳', 'pavaḷa' }, { '𑎦𑏌𑎙𑎹', 'pañji' }, { '𑎒𑎞𑎭𑏎', 'kaḍalŭ', 'virama ŭ'}, { '𑎀𑎞𑎒𑏏𑎒𑏎', 'aḍakkŭ', 'virama ŭ and regular virama'}, } self:iterate(examples, 'do_test_translit') end return tests slxgl0fp3ij6cc8ya6vu673350w1ibf মডিউল:te-translit/testcases 828 168873 510425 2026-06-07T12:48:13Z RedminBot 9553 [[en:Module:te-translit/testcases]] থেকে আনা হলো 510425 Scribunto text/plain -- Unit tests for [[Module:te-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local te_translit = require('Module:te-translit') --TO DO function tests:do_test_translit(telu, roman, xlit) self:equals('<span class="Telu" lang="te">[[' .. telu .. '#Telugu|' .. telu .. ']]</span>', te_translit.tr(telu, 'te', 'Telu'), roman) end function tests:test_translit_telugu() self:do_test_translit('అంకపాళి', 'aṅkapāḷi') self:do_test_translit('పా', 'pā') self:do_test_translit('ళి', 'ḷi') self:do_test_translit('నొప్పింౘు', 'noppinĉu') self:do_test_translit('ౙమకట్టు', 'zamakaṭṭu') self:do_test_translit('కౢప్తం', 'kl̥ptaṁ') end return tests aztvq0tsimgr76cp2sm8eq630x2ixhf মডিউল:tg-Latn-Cyrl-translit/testcases 828 168874 510426 2026-06-07T12:48:14Z RedminBot 9553 [[en:Module:tg-Latn-Cyrl-translit/testcases]] থেকে আনা হলো 510426 Scribunto text/plain -- Unit tests for [[Module:tg-Latn-Cyrl-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local m_translit = require('Module:tg-Latn-Cyrl-translit') local tag_text = require('Module:script utilities').tag_text local tg = require('Module:languages').getByCode('tg') local options = {show_difference = true } local function tag(word) return tag_text(word, tg) end function tests:do_test_translit(input, expected) self:equals(tag(input), m_translit.tr(input), expected, options) end function tests:test_translit_tg_Latn_Cyrl() local examples = { { "Zabon-i tojiki (dar solho-yi 1989—1991 — zabon-i forsi-yi tojiki; 1991—1999 – zabon-i tojiki-yi forsi, dari: زبان تاجیکی) — zabon-i davlati-yi kišvarho-yi Tojikiston, Eron (variant-i forsi) va Afġoniston (dari) mebošad. In zabon ba xonavoda-yi zabonho-yi hindu avrupoyi doxil mešavad. Dar majmü': porsigüyon-i asil (forsi, tojiki, dari) ziyoda az 122 mln nafar mebošand. Faqat ba güyiš-i tojiki (bidun-i dari) ziyoda az 16 million (2022) nafar harf mezanand.", "Забони тоҷикӣ (дар солҳои 1989—1991 — забони форсии тоҷикӣ; 1991—1999 – забони тоҷикии форсӣ, дарӣ: زبان تاجیکی) — забони давлатии кишварҳои Тоҷикистон, Эрон (варианти форсӣ) ва Афғонистон (дарӣ) мебошад. Ин забон ба хонаводаи забонҳои ҳинду аврупоӣ дохил мешавад. Дар маҷмӯъ: порсигӯёни асил (форсӣ, тоҷикӣ, дарӣ) зиёда аз 122 млн нафар мебошанд. Фақат ба гӯиши тоҷикӣ (бидуни дарӣ) зиёда аз 16 миллион (2022) нафар ҳарф мезананд."}, } self:iterate(examples, "do_test_translit") end return tests psql5pep96btjjvocwuecs03ii0bcmf মডিউল:th-translit/testcases 828 168875 510427 2026-06-07T12:48:15Z RedminBot 9553 [[en:Module:th-translit/testcases]] থেকে আনা হলো 510427 Scribunto text/plain -- Unit tests for [[Module:th-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local th_translit = require('Module:th-pron') function tests:do_test_translit(thai, roman, xlit) self:equals('<span class="Thai" lang="th">[[' .. mw.ustring.gsub(mw.ustring.gsub(thai, "ฺ", ""), "%-", "") .. '#Thai|' .. mw.ustring.gsub(mw.ustring.gsub(thai, "ฺ", ""), "%-", "") .. ']]</span>', th_translit.translit(thai, 'th', 'Thai', 'paiboon', 'translit-module'), roman) end function tests:test_translit_thai() self:do_test_translit('เฮิ็้ย', 'hə́i') self:do_test_translit('เฉิ็ย', 'chə̌i') self:do_test_translit('เงิ็น', 'ngən') self:do_test_translit('เกดส', 'gèets') --เกตส์ (Gates) self:do_test_translit('มันส', 'mans') --มันส์ self:do_test_translit('ไอ๊ส', 'áis') --ไอซ์ (ice) self:do_test_translit('เซ็กส', 'séks') --เซ็กส์ (sex) self:do_test_translit('เอ็๊กส', 'éks') --เอกซ์ & เอ็กซ์ & เอ๊กซ์ (ex) self:do_test_translit('เฮ้าส', 'háos') --เฮาส์ & เฮ้าส์ (house) self:do_test_translit('เม้าส', 'máos') --เมาส์ & เม้าส์ (mouse) self:do_test_translit('ทฺรำ-เป็ด', 'tram-bpèt') --ทรัมเป็ต self:do_test_translit('ห็อย', 'hɔ̌i') self:do_test_translit('หฺม็อย', 'mɔ̌i') self:do_test_translit('หฺมั่น-โถว', 'màn-tǒow') self:do_test_translit('เด๊ด-สะ-มอ-เร่', 'déet-sà-mɔɔ-rêe') self:do_test_translit('เห', 'hěe') self:do_test_translit('แคฺล', 'klɛɛ') self:do_test_translit('แคล', 'kɛɛl') self:do_test_translit('เพฺล', 'plee') self:do_test_translit('เพล', 'peel') self:do_test_translit('เปฺล', 'bplee') self:do_test_translit('เปล', 'bpeel') self:do_test_translit('เบล', 'beel') self:do_test_translit('เซล', 'seel') self:do_test_translit('โพล', 'pool') self:do_test_translit('รา-ชา-ทิ-ราด', 'raa-chaa-tí-râat') self:do_test_translit('ขฺวน-ขฺวาย', 'kwǒn-kwǎai') --ขวนขวาย Only the word ขวน read as kwǒn instead of kǔuan. self:do_test_translit('ข่วน', 'kùuan') self:do_test_translit('หอน', 'hɔ̌ɔn') self:do_test_translit('โหน', 'hǒon') -- ห้อยโหน homograph issue self:do_test_translit('สะ-โหฺน', 'sà-nǒo') -- โสน homograph issue self:do_test_translit('แหน', 'hɛ̌ɛn') -- หวงแหน homograph issue self:do_test_translit('แหฺน', 'nɛ̌ɛ') -- จอกแหน homograph issue self:do_test_translit('แถ็ว', 'tɛ̌o') -- แถว self:do_test_translit('ซวง', 'suuang') self:do_test_translit('น้ำ', 'nám') self:do_test_translit('หฺมาย', 'mǎai') self:do_test_translit('แห็่ง', 'hɛ̀ng') self:do_test_translit('หน', 'hǒn') self:do_test_translit('เหด-สุด-วิ-ไส', 'hèet-sùt-wí-sǎi') self:do_test_translit('ไหฺย่', 'yài') self:do_test_translit('หก', 'hòk') self:do_test_translit('หอย', 'hɔ̌ɔi') self:do_test_translit('กับ', 'gàp') self:do_test_translit('ธรรม', 'tam') self:do_test_translit('ปฺระ-ชา', 'bprà-chaa') self:do_test_translit('นะ-คอน', 'ná-kɔɔn') self:do_test_translit('บาด', 'bàat') self:do_test_translit('บ้า', 'bâa') self:do_test_translit('แข็ง', 'kɛ̌ng') self:do_test_translit('แกะ', 'gɛ̀') self:do_test_translit('แดง', 'dɛɛng') self:do_test_translit('แปฺล', 'bplɛɛ') self:do_test_translit('ผฺล็อง', 'plɔ̌ng') self:do_test_translit('เกาะ', 'gɔ̀') self:do_test_translit('นอน', 'nɔɔn') self:do_test_translit('พ่อ', 'pɔ̂ɔ') self:do_test_translit('เห็ด', 'hèt') self:do_test_translit('เล็่น', 'lên') self:do_test_translit('เตะ', 'dtè') self:do_test_translit('เพฺลง', 'pleeng') self:do_test_translit('เท-วี', 'tee-wii') self:do_test_translit('เยอะ', 'yə́') self:do_test_translit('เดิน', 'dəən') self:do_test_translit('เผฺลอ', 'plə̌ə') self:do_test_translit('ตก', 'dtòk') self:do_test_translit('โต๊ะ', 'dtó') self:do_test_translit('โชค', 'chôok') self:do_test_translit('โม-โห', 'moo-hǒo') self:do_test_translit('คิด', 'kít') self:do_test_translit('มิ-ถุน', 'mí-tǔn') self:do_test_translit('หิ-มะ', 'hì-má') self:do_test_translit('อีก', 'ìik') self:do_test_translit('จี้', 'jîi') self:do_test_translit('ลึก', 'lʉ́k') self:do_test_translit('รึ', 'rʉ́') self:do_test_translit('กฺลืน', 'glʉʉn') self:do_test_translit('ชื่อ', 'chʉ̂ʉ') self:do_test_translit('คุก', 'kúk') self:do_test_translit('จุ-ฬา', 'jù-laa') self:do_test_translit('ลูก', 'lûuk') self:do_test_translit('ปู', 'bpuu') self:do_test_translit('เดี๊ยะ', 'día') self:do_test_translit('เปาะ-เปี๊ยะ', 'bpɔ̀-bpía') self:do_test_translit('ปอ-เปี๊ยะ', 'bpɔɔ-bpía') self:do_test_translit('เปฺรี๊ยะ', 'bpría') self:do_test_translit('เตียง', 'dtiiang') self:do_test_translit('เมีย', 'miia') self:do_test_translit('เอือะ', 'ʉ̀a') self:do_test_translit('เรื่อง', 'rʉ̂ʉang') self:do_test_translit('เรือ', 'rʉʉa') self:do_test_translit('ผฺลัวะ', 'plùa') self:do_test_translit('นวด', 'nûuat') self:do_test_translit('ตัว', 'dtuua') self:do_test_translit('ไม่', 'mâi') self:do_test_translit('ใส่', 'sài') self:do_test_translit('วัย', 'wai') self:do_test_translit('ไทย', 'tai') self:do_test_translit('ไม้', 'mái') self:do_test_translit('หาย', 'hǎai') self:do_test_translit('ผฺล็อย', 'plɔ̌i') self:do_test_translit('ซอย', 'sɔɔi') self:do_test_translit('เลย', 'ləəi') self:do_test_translit('โดย', 'dooi') self:do_test_translit('ทุย', 'tui') self:do_test_translit('เหฺนื่อย', 'nʉ̀ai') self:do_test_translit('สวย', 'sǔai') self:do_test_translit('เรา', 'rao') self:do_test_translit('ขาว', 'kǎao') self:do_test_translit('แมว', 'mɛɛo') self:do_test_translit('เกอว', 'gəəo') self:do_test_translit('เร็ว', 'reo') self:do_test_translit('เอว', 'eeo') self:do_test_translit('หิว', 'hǐu') self:do_test_translit('เขียว', 'kǐao') self:do_test_translit('ทำ', 'tam') end return tests 6rqn9v36974bupc0e1wdasljs2j1fgl মডিউল:tkr-translit 828 168876 510428 2026-06-07T12:48:15Z RedminBot 9553 [[en:Module:tkr-translit]] থেকে আনা হলো 510428 Scribunto text/plain local gsub = mw.ustring.gsub local u = require("Module:string utilities").char local export = {} function export.tr(text, lang, sc) if sc ~= "Cyrl" then return nil end -- Convert capital to lowercase palochka. Lowercase is found in tables. text = gsub(text, u(0x4C0), u(0x4CF)) -- Digraphs with soft and hard sign. text = gsub(text, "([хХ])х([ьъ])", "%1%2:") text = gsub(text, "[гкхГКХ][ьъ]", { ["гь"]="h", ["Гь"]="H", ["гъ"]="ʁ", ["Гъ"]="ʁ", ["кь"]="qӏ", ["Кь"]="Qӏ", ["къ"]="q:", ["Къ"]="Q:", ["хь"]="x", ["Хь"]="X", ["хъ"]="q", ["Хъ"]="Q", }) -- Дж and гӏ digraphs. text = gsub(gsub(text, "дж", "ǯ"), "Дж", "Ǯ") text = gsub(gsub(text, "гӏ", "ɣ"), "Гӏ", "Ɣ") -- Geminate consonants. text = gsub(text, "[птцчксхПТЦЧКСХ][птцчксх]", { ["пп"]="п:", ["Пп"]="П:", ["тт"]="т:", ["Тт"]="Т:", ["цц"]="ц:", ["Цц"]="Ц:", ["чч"]="ч:", ["Чч"]="Ч:", ["кк"]="к:", ["Кк"]="К:", ["сс"]="с:", ["Сс"]="С:", ["хх"]="х:", ["Хх"]="Х:", }) -- General consonants. text = gsub(text, "[птцчксшщхнлдзжгъбфмрвПТЦЧКСШЩХНЛДЗЖГЪБФМРВ]", { ["п"]="p", ["П"]="P", ["т"]="t", ["Т"]="T", ["ц"]="c", ["Ц"]="C", ["ч"]="č", ["Ч"]="Č", ["к"]="k", ["К"]="K", ["с"]="s", ["С"]="S", ["ш"]="š", ["Ш"]="Š", ["щ"]="š:", ["Щ"]="Š:", ["х"]="ꭓ", ["Х"]="Ꭓ", ["н"]="n", ["Н"]="N", ["л"]="l", ["Л"]="L", ["д"]="d", ["Д"]="D", ["з"]="z", ["З"]="Z", ["ж"]="ž", ["Ж"]="Ž", ["г"]="g", ["Г"]="G", ["ъ"]="ʔ", ["Ъ"]="ʔ", ["б"]="b", ["Б"]="B", ["ф"]="f", ["Ф"]="F", ["м"]="m", ["М"]="M", ["р"]="r", ["Р"]="R", ["в"]="v", ["В"]="V", }) -- Palatised consonants. text = gsub(text, "([tckdgszxnlTCKDGSZXNL]ӏ?)(:?)([иеёюя])", function (con, gem, vow) return con .. "ʲ" .. gem .. (({ ["ё"]="о", ["ю"]="у", ["я"]="a" })[vow] or vow) end) -- Rounded consonants. text = gsub(text, "([tcčkqǯgzšžxꭓʁTCČKQǮGZŠŽXꞳ]ӏ?:?)v", "%1ʷ") -- Iotated е. text = gsub(text, "%f[%a]е", "je") text = gsub(text, "%f[%a]Е", "Je") -- Ejective consonants. text = gsub(text, "[ptcčkgqPTCČKGQ]ӏ", { ["pӏ"]="ṗ", ["Pӏ"]="Ṗ", ["tӏ"]="ṭ", ["Tӏ"]="Ṭ", ["cӏ"]="c̣", ["Cӏ"]="C̣", ["čӏ"]="č̣", ["Čӏ"]="Č̣", ["kӏ"]="ḳ", ["Kӏ"]="Ḳ", ["qӏ"]="q̇", ["Qӏ"]="Q̇", }) -- Umlaut vowels. text = gsub(text, "[аоуАОУ]ь", { ["аь"]="ä", ["Аь"]="Ä", ["оь"]="ö", ["Оь"]="Ö", ["уь"]="ü", ["Уь"]="Ü", }) -- Glottalised vowels. text = gsub(text, "([аоуыАОУЫ])ӏ", "%1ˤ") -- Long и. text = gsub(gsub(text, "ий", "ī"), "Ий", "Ī") -- General vowels. text = gsub(text, "[йиеэаыоуюяё’ЙИЕЭАЫОУЮЯЁ]", { ["й"]="j", ["Й"]="J", ["и"]="i", ["И"]="I", ["е"]="e", ["Е"]="E", ["э"]="e", ["Э"]="E", ["а"]="a", ["А"]="A", ["ы"]="ɨ", ["Ы"]="Ɨ", ["о"]="o", ["О"]="O", ["у"]="u", ["У"]="U", ["ю"]="ju", ["Ю"]="Ju", ["я"]="ja", ["Я"]="Ja", ["ё"]="jo", ["Ё"]="Jo", ["’"]="ʲ", }) return text end return export cvzxfe6l70s4ce6iyomvkmbnn7xxdli মডিউল:tl-translit/testcases 828 168877 510429 2026-06-07T12:48:16Z RedminBot 9553 [[en:Module:tl-translit/testcases]] থেকে আনা হলো 510429 Scribunto text/plain -- Unit tests for [[Module:tl-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local tl_translit = require('Module:tl-translit') --TO DO function tests:do_test_translit(tgl, roman, xlit) self:equals('<span class="Tglg" lang="tl">[[' .. tgl .. '#Tagalog|' .. tgl .. ']]</span>', tl_translit.tr(tgl, 'tl', 'Tglg'), roman) end function tests:test_translit_tagalog() self:do_test_translit('ᜀᜋ', 'ama') self:do_test_translit('ᜇᜒᜏ', 'diwa') self:do_test_translit('ᜇᜓᜄᜓ', 'dugo') self:do_test_translit('ᜐᜎ', 'sala') self:do_test_translit('ᜉᜀ', 'paa') self:do_test_translit('ᜅᜎᜈ᜔', 'ngalan') self:do_test_translit('ᜎᜑᜆ᜔', 'lahat') self:do_test_translit('ᜐᜇᜒᜏ', 'sariwa') self:do_test_translit('ᜉᜄ᜔ᜁᜊᜒᜄ᜔', 'pag-ibig') self:do_test_translit('ᜐᜋ ᜈᜅ᜔ ᜎᜓᜂᜊ᜔', 'sama nang luob') end return tests 5h5i88422e5r2ojk8dt5ih5a8lm3amo মডিউল:transliteration module testcases 828 168878 510430 2026-06-07T12:48:16Z RedminBot 9553 [[en:Module:transliteration_module_testcases]] থেকে আনা হলো 510430 Scribunto text/plain local library_util = require('libraryUtil') local check_type = library_util.checkType local gline = require("Module:string/gline") local is_callable = require("Module:fun").is_callable -- Allow examples to be a string in a sort of TSV format, -- consisting of one or more lines with two or three non-empty arguments -- separated by one or more tabs. Single-line Lua comments are stripped, as well as -- whitespace at the beginning and end of each line. -- Empty lines and lines consisting of whitespace are skipped. local function examples_string_to_array(examples) examples = examples:gsub("%s*%-%-[^\n]*", "") local array = {} for line in gline(examples, "BLANK") do line = mw.text.trim(line) local original, expected, sc = line:match("^([^\t]+)\t+([^\t]+)\t-([^\t]-)$") if not original then error("The following line did not consist of two or three arguments separated by tabs:\n" .. line) end if sc == "" then sc = nil end table.insert(array, { original, expected, sc }) end return array end local function _check(funcName) return function(argIndex, arg, expectType, nilOk) check_type(funcName, argIndex, arg, expectType, nilOk) end end local function get_translit_function(module_name) local success, translit_module = pcall(require, 'Module:' .. module_name) if not success then error('Error requiring Module:' .. module_name .. ': ' .. tostring(translit_module)) end local translit_function = translit_module.tr if not is_callable(translit_function) then error('Module:' .. module_name .. ' does not contain the function or callable table \'tr\'.') end return translit_function end return function(translit_function, examples, sc_code, lang_code, options) local module_name if type(translit_function) == 'table' then local args = translit_function module_name, examples, sc_code, lang_code = args.module, args.examples, args.sc, args.lang options = {} for k, v in pairs(args) do if not (k == 'module' or k == 'examples' or k == 'sc' or k == 'lang') then options[k] = v end end elseif type(translit_function) == 'string' then module_name, translit_function = translit_function, nil end if module_name then translit_function = get_translit_function(module_name) end -- C H E C K P A R A M E T E R S -- local check_type = _check('translit_module_testcases') check_type(1, translit_function, 'function') check_type(3, sc_code, 'string') check_type(4, lang_code, 'string') check_type(5, options, 'table', true) options = options or {} if type(examples) == "table" then if not require('Module:table').isArray(examples) then error('Third argument or "examples" argument to translit_module_testcases should be an array.') end elseif type(examples) == "string" then examples = examples_string_to_array(examples) else error('Third argument or "examples" argument to translit_module_testcases should be an array or string.') end -- Get canonical name and validate language code. local lang_object = require('Module:languages').getByCode(lang_code) or error('The language code ' .. lang_code .. ' is not valid.') local canonical_name = lang_object:getCanonicalName() -- Validate script code. if not mw.loadData('Module:scripts/data')[sc_code] then error('The script code ' .. sc_code .. ' is not valid.') end -- M A K E T E S T F U N C T I O N -- local tests = require('Module:UnitTests') local normalize = mw.ustring.toNFD local opening_tag = '<span class="' .. sc_code .. '" lang="' .. lang_code .. '">' local template if options.nolink then template = opening_tag .. '&</span>' else template = opening_tag .. '[[&#' .. canonical_name .. '|&]]</span>' end local format_text if options.func_with_link then format_text = options.func_with_link if not is_callable(format_text) then error("func_with_link in options table should be a function or callable table") end elseif options.func_before_link then local func = options.func_before_link if not is_callable(func) then error("func_before_link in options table should be a function or callable table") end function format_text(text) return template:gsub('&', (func(text))) end else function format_text(text) return template:gsub('&', text) end end local self_equals_options = { display = options.output_display } function tests:check(example, expected, manual_sc, manual_lang) local ex_tr = translit_function(example, manual_lang or lang_code, manual_sc or sc_code) or 'NIL' -- Handle transliteration function returning nil, a valid function value. self:equals(format_text(example, expected, manual_sc, manual_lang), normalize(ex_tr), expected and normalize(expected), self_equals_options ) end function tests:test() self:iterate(examples, 'check') end if module_name then tests["testcases for <code>tr</code> function in [[Module:" .. module_name .. "]]"], tests.test = tests.test, nil end return tests end 8wq6e3iedgs34qtpxqqr09ylvmm3kj6 মডিউল:transliteration policy 828 168879 510431 2026-06-07T12:48:17Z RedminBot 9553 [[en:Module:transliteration_policy]] থেকে আনা হলো 510431 Scribunto text/plain local require_when_needed = require("Module:require when needed") local format_categories = require_when_needed("Module:utilities", "format_categories") local format_shortcuts = require_when_needed("Module:shortcut box", "format_shortcuts") local insert = table.insert local new_title = mw.title.new local process_params = require_when_needed("Module:parameters", "process") local export = {} function export.show(frame) local args = process_params(frame:getParent().args, { [1] = {required = true, type = "language", list = true, default = "und"}, })[1] local shortcuts, language_links, categories = {}, {}, {} for _, lang in ipairs(args) do insert(shortcuts, new_title("WT:" .. lang:getFullCode():upper() .. " TR")) insert(language_links, lang:makeCategoryLink()) insert(categories, lang:getCategoryName()) end return format_shortcuts(shortcuts) .. "These are the rules concerning transliteration in " .. mw.text.listToText(language_links) .. " entries." .. (#categories > 0 and mw.title.getCurrentTitle().namespace == 4 and (format_categories(categories, nil, "Transliteration", nil, true) .. "[[Category:Transliteration policies]]") or "") end return export ltgv3j2mhw94429d6obtgcl3emxtxoq মডিউল:tru-translit/testcases 828 168880 510432 2026-06-07T12:48:17Z RedminBot 9553 [[en:Module:tru-translit/testcases]] থেকে আনা হলো 510432 Scribunto text/plain local lang = require("Module:languages").getByCode("tru") local function link(word) return require("Module:links").full_link {term = word, lang = lang, tr = "-"} end return require("Module:transliteration module testcases") { module = "tru-translit", examples = { { "ܐܰܕܡܐ", "admo" }, { "ܐܰܒܪܐ", "abro" }, { "ܐܰܕ݂ܢܐ", "aḏno" }, { "ܐܷܫܬܐ", "ëšto"}, { "ܫܰܘܥܐ", "šawco"}, { "ܬܡܰܢܝܐ", "tmanyo"}, { "ܬܷܫܥܐ", "tëšco"}, { "ܚܰܡܫܐ", "ḥamšo"}, { "ܐܰܪܒܥܐ", "arbco"}, { "ܬܠܳܬ݂ܐ", "tloṯo"}, { "ܬܪܶܐ", "tre"}, { "ܚܰܐ", "ḥa"}, { "ܬܡܝܢܳܝܐ", "tminoyo"}, { "ܕܰܬ ܬܡܰܢܝܐ", "dat tmanyo"}, { "ܬܡܳܢܰܥܣܰܪ", "tmonacsar"}, { "ܐܰܕܥܰܨܪܝـܝܶܐ", "adcaṣriye"}, { "ܐܰܕܠܰܠܝܐ", "adlalyo"}, { "ܐܰܕܨܰܦܪܐ", "adṣafro"}, { "ܐܰܕܝܰܘܡܰܐ", "adyawma"}, { "ܐܰܬ݂ܡܷܠ", "aṯmël"}, { "ܐܰܬ݂ܝܳܢܐ", "aṯyono"}, { "ܐܰܙܙܝ", "azzi"}, { "ܒܰܛܝܠܶܐ ܢܶܐ", "baṭile ne"}, { "ܒܢܳܝܐ", "bnoyo"}, { "ܕܰܪܓ݂ܶܐ", "darġe"}, { "ܕܘܥܪܝܢܰܐ", "ducrina" }, { "ܕܘܪܳܫܶܐ ܓܘܫܡܳܢܳܝܶܐ", "duroše gušmonoye" }, { "ܦܰܠܩܐ", "falqo" }, { "ܠܰܫܰܢ", "lašan"}, { "ܡܶܐ ܙܰܒܢܐ ܠܙܰܒܢܐ", "me zabno lzabno"}, { "ܩܷܛܪܐ", "qëṭro"}, { "ܣܚܳܝܐ", "sḥoyo"}, { "ܬܰܡܐ", "tamo"}, { "ܘܰܥܕܐ", "wacdo"}, { "ܙܰܒܢܐ", "zabno"}, { "ܢܚܝܪܐ", "nḥiro"}, { "ܢܳܫܐ", "nošo"}, { "ܪܝܫܐ", "rišo"}, { "ܫܰܒܬ݂ܐ", "šabṯo"}, { "ܐܘܥܕܐ", "ucdo"}, { "ܘܳܠܝܬ݂ܐ", "woliṯo"}, { "ܙܥܘܪܐ", "zcuro"}, { "ܙܥܘܪܬܐ", "zcurto"}, { "ܕܰܫܷܫܬܐ", "dašëšto"}, { "ܥܷܢܘܶܐ", "cënwe"}, { "ܨܷܪܬܐ", "ṣërto"}, { "ܘܰܟ݂ܰܡ", "waxam"}, { "ܙܷܒܕܐ", "zëbdo"}, { "ܐܰܝ ܝܰܘܡܰܢܝ", "ay yawmani"}, { "ܫ̰ܰܢܛܰܐ", "čanṭa"}, { "ܙ̰ܱܒܰܫܶܐ", "žäbaše"}, -- COMBINING_TILDE_BELOW then PTHAHA { "ܙܱ̰ܒܰܫܶܐ", "žäbaše"}, -- PTHAHA then COMBINING_TILDE_BELOW { "ܦ݁ܠܰܢ", "plan"}, { "ܒ݂ܝܠܠܰܐ", "villa"}, { "ܐܳܢܳܐ", "ono"}, { "ܗܰܬܘ", "hatu"}, { "ܐܝـܝܰܪ", "iyar"}, { "ܐܰܘ", "aw"}, { '”ܝܐ.“', '“yo.”'}, { "ܒܷܬ݂ܷܪ", 'bëṯër'}, -- RUKKAKHA then RBASA { "ܒܷܬܷ݂ܪ", 'bëṯër'}, -- RBASA then RUKKAKHA { "ܐܰܘܪܘܦ݁ܰܐ", 'awrupa'}, -- QUSHSHAYA then PTHAHA { "ܐܰܘܪܘܦܰ݁ܐ", 'awrupa'}, -- PTHAHA then QUSHSHAYA { '(ܣܘܪܝܳܝܐ)', '(suryoyo)'}, { 'ܣܘܪܝܳܝܐ܆', 'suryoyo;'}, { 'ܡܳܪܝ', 'mor'}, { 'ܕܡܳܪܝ', 'dmor'}, {'ܛܒܷܥܥܶܗ', 'ṭbëceh'}, {'ܦܬܷܚܚܶܗ', 'ftëḥeh'}, {'ܘܡܰܠܘܰܫܫܶܗ', 'umalwašeh'}, {'ܝܘܠܦܳܢܰܬ݂ܬ݂ܶܗ', 'yulfonaṯeh'}, {'ܡܰܠܰܟ݂ܟ݂ܶܗ', 'malaxeh'}, {'ܡ̈ܶܠܐ', 'melo'}, }, sc = "Syrc", lang = "tru", func_with_link = link } sqb5lz32lj99dw9bzgx3flg5fl2anob মডিউল:tt-translit/testcases 828 168881 510433 2026-06-07T12:48:18Z RedminBot 9553 [[en:Module:tt-translit/testcases]] থেকে আনা হলো 510433 Scribunto text/plain local tests = require("Module:UnitTests") local tt_translit = require("Module:tt-translit") function tests:check_translit(Cyrl, Latn) self:equals(('<span lang="tt" class="Cyrl mention">[[%s#Tatar|%s]]</span>'):format(Cyrl, Cyrl), tt_translit.tr(Cyrl, 'tt', 'Cyrl'), Latn, { show_difference = true }) end function tests:check_translit_Arab_New(Arab, Cyrl) self:equals(('<span lang="tt" class="tt-Arab">%s</span>'):format(Arab), tt_translit.tr(Arab, 'tt', 'tt-Arab'), tt_translit.tr(Cyrl, 'tt', 'Cyrl'), { show_difference = true }) end function tests:test_translit() local examples = { { "тәэсир", "täʹsir" }, { "Коръән", "Qörʹän" }, { "мәсьәлә", "mäsʹälä" }, { "һәйәт", "häyʹät" }, { "сөаль", "söalʹ" }, { "сөале", "söale" }, -- w { "сау бул", "saw bul" }, { "Мәскәү", "Mäskäw" }, -- loans -- [[w:tt:MediaWiki:Common.js]] isRussianWord()? { "пунктуация", "punktuatsiyä" }, { "пунктуациянең", "punktuatsiyäneñ" }, { "Миңнеханов", "Miñnexanov" }, { "Миңнехановның", "Miñnexanovnıñ" }, { "гармун", "garmun" }, { "гыйнвар", "ğinwar" }, -- y/w { "биибез", "biyibez" }, { "ууы", "uwuwı" }, -- q/ğ { "кардәш", "qärdäş" }, { "кара", "qara" }, { "гарәп", "ğäräp" }, { "гасыр", "ğasır" }, { "туган тел", "tuğan tel" }, { "лөгать", "löğät" }, { "шигырь", "şiğer" }, { "гыйлем", "ğilem" }, { "гыйльми", "ğilmi" }, { "бәгырь", "bäğer" }, { "бәгърем", "bäğrem" }, { "кагыйдә", "qağidä" }, { "кәгазь", "käğäz" }, { "кагарга", "qağarğa" }, { "ак", "aq" }, { "нәкъ", "näq" }, { "пакь", "pak" }, { "ук", "uq" }, { "үк", "ük" }, { "хокук", "xoquq" }, { "Агыйдел", "Ağidel" }, { "әссәламү галәйкүм", "ässälamü ğäläyküm" }, { "кулъяулык", "qulyawlıq" }, { "Илһам Шакиров", "İlham Şakirov" }, { "гыйбарә", "ğibarä" }, { "юкка чыккан", "yuqqa çıqqan" }, -- iotated series { "ел", "yıl" }, { "яшь", "yäş" }, { "яшьлек", "yäşlek" }, { "яшел", "yäşel" }, { "бәя", "bäyä" }, { "елан", "yılan" }, { "егет", "yeget" }, { "ясарга", "yasarğa" }, { "яшел", "yäşel" }, { "җөмһүрият", "cömhüriyät" }, { "әкият", "äkiyät" }, { "әүлия", "äwliya" }, -- ??? { "әдәбият", "ädäbiyat" }, -- ??? -- iotated series + q/ğ { "каен", "qayın" }, { "Корбан гаете", "Qorban ğäyete" }, { "гает", "ğäyet" }, -- iotated series + y/w { "буй", "buy" }, { "буенда", "buyında" }, { "буын", "buwın" }, { "сабантуй", "sabantuy" }, { "сабан туе", "saban tuyı" }, { "кою", "qoyu" }, { "коюы", "qoyuwı" }, { "сөю", "söyü" }, { "сөюе", "söyüwe" }, -- iotated series: blocked by ь { "дөнья", "dönʹya" }, { "төньяк", "tönʹyaq" }, -- Poppe { "егерме", "yegerme" }, { "биек", "biyek" }, { "ерак", "yıraq" }, { "каен", "qayın" }, { "кеше", "keşe" }, { "кулъязма", "qul-yazma" }, { "съезд", "syezd" }, { "алъяпкыч", "al-yapqıç" }, { "мәгънә", "mäğnä" }, { "игътибар", "iğtibar" }, { "тәкъдим", "täqdim" }, { "семья", "semʹya" }, { "семя", "semya" }, { "альбом", "alʹbom" }, { "автомобиль", "avtomobilʹ" }, { "мәкаль", "mäqäl" }, { "мәкальләр", "mäqällär" }, { "шигырь", "şiğer" }, { "шигырьләр", "şiğerlär" }, { "табигать", "tabiğät" }, { "табигатькә", "tabiğätkä" }, { "ямь", "yäm" }, { "юнь", "yün" }, { "алъяпкыч", "al-yapqıç" }, { "төньяк", "tön-yaq" }, { "бишьеллык", "biş-yıllıq" }, { "эш", "eş" }, { "эз", "ez" }, { "тәэмин", "täʹmin" }, { "тәэсир", "täʹsir" }, { "ял", "yal" }, { "ямь", "yäm" }, } self:iterate(examples, "check_translit") end function tests:test_translit_Arab_New() local examples = { -- яңә имля { "مۇعەللیم", "мөгаллим" }, { "كۇتبحانە", "көтепханә" }, { "ࢭسییر", "сыер" }, { "بییك", "биек" }, { "سووق", "суык" }, { "برنچىُ", "беренче" }, { "ئرمچك", "эремчек" }, { "م. قۇربانعەلییف ھەم حوجا بەدیع.", "м. корбангалиев һәм хуҗа бәдигъ." }, -- [[s:mul:Page:Рус мәктәпләре өчен татар теле дәреслеге (беренче китап).pdf/6]] -- [[s:mul:Page:Рус мәктәпләре өчен татар теле дәреслеге (беренче китап).pdf/tt-Cyrl/6]] { "تاتارستان ساتسییال - ساۋیتلار جۇمھورییەتندە تاتار تلن عەمەلگە قویو مەسئەلەسىُ حۇكومەت تارافندان قوزعالو بلەن روسلار ھەم باشقا واق حالقلار ئاراسندا تاتار تلن كیرەكسىُنوچىُلەر، ئوقرعا تلەوچىُلەر، ئانىُ عەمەلی بلرگە ئمتىُلوچىُلار كوبەیدىُ. حەزرگىُ كۇندە تاتار تلىُ باشقا حالق مەكتەبلەرندە ئایىُرم بر دەرس رەوىُشندە ئوقىُتىُلا باشلاندىُ، تۇرلىُ مۇئەسسەسەلەردە حزمەت ئیتوچىُ ئشچىُلەر عاممەسىُنە تاتار تلن ئوقىُتو ئۇچن واقتلىُ كورسلار ئاچلدىُ. شولای ئیتب، تاتار تلىُ حۇكومەتنڭ جیددی تەدبیرلەرىُ ئارقاسندا ئەكىُرنلەب عەمەلگە قویىُلابارا، لاكین ࢭبو ئشنىُ تلەگەنچە ئالب بارو ئۇچن بزدە مۇڭا حەزرلك ئاز ئیدىُ، بزدە حەزرگە قەدەر تلىُبزنىُ باشقا حالقلارعا ئوقىُتو ئۇچن ئاتاب تۇزلگەن دەرسلكلەر ھەم قوللانمالار ھیچ یوق ئیدىُ. منە حەزر بولارعا ࢭزور ئیحتییاچ ࢭتودىُ. ࢭشول ئیحتییاجنىُ كوز ئالدندا ࢭتۇتب، ࢭئۇشبو 1923 نچىُ یلدا تاتارستان ماعاریف حالق كامیسارییاتىُ یاننداعىُ عیلمی مەركەز تارافندان روس مەكتەبلەرىُنڭ تۇرلىُ باسقچلارىُنا قاراتب تاتار تلىُ دەرسلكلەرىُ حەزرلەو ئۇچن ئۇچ كشىُلك بر ھەیئەت تۇزلدىُ. ࢭبو ھەیئەتنڭ ئاعزالارىُ توبەندەگىُ كشىُلەر: 1) مۇحیتدین قۇربانعەلی، 2) عالیمجان شەرەف، 3) حوجا بەدیع.", "татарстан сациял-савитлар җөмһүриятендә татар телен гамәлгә кую мәсьәләсе хөкүмәт тарафыннан кузгалу белән руслар һәм башка вак халыклар арасында татар телен кирәксенүчеләр, укырга теләүчеләр, аны гамәли белергә омтылучылар күбәйде. хәзерге көндә татар теле башка халык мәктәпләрендә аерым бер дәрес рәвешендә укытыла башланды, төрле мөәссәсәләрдә хезмәт итүче эшчеләр гаммәсенә татар телен укыту өчен вакытлы курслар ачылды. шулай итеп, татар теле хөкүмәтнең җитди тәдбирләре аркасында әкренләп гамәлгә куела бара, ләкин бу эшне теләгәнчә алып бару өчен бездә моңа хәзерлек аз иде, бездә хәзергә кадәр телебезне башка халыкларга укыту өчен атап төзелгән дәреслекләр һәм кулланмалар һич юк иде. менә хәзер боларга зур ихтыяҗ туды. шул ихтыяҗны күз алдында тотып, ошбу 1923нче елда татарстан мәгариф халык камисарияты янындагы гыйльми мәркәз тарафыннан рус мәктәпләренең төрле баскычларына каратып татар теле дәреслекләре хәзерләү өчен өч кешелек бер һәйәт төзелде. бу һәйәтнең әгъзалары түбәндәге кешеләр: 1) мөхетдин корбангали, 2) галимҗан шәрәф, 3) хуҗа бәдигъ." }, } self:iterate(examples, "check_translit_Arab_New") end return tests p78cbtr25gxsb5snfowa5sklwsogab3 মডিউল:txg-translit 828 168882 510434 2026-06-07T12:48:19Z RedminBot 9553 [[en:Module:txg-translit]] থেকে আনা হলো 510434 Scribunto text/plain local export = {} local LFW2008 = mw.loadData("Module:txg/data/LFW2008") local meta = { [" "] = true, ["-"] = true, ["…"] = true } local meta_concat = {} for char in pairs(meta) do table.insert(meta_concat, char) end meta_concat = require("Module:string utilities").pattern_escape(table.concat(meta_concat)) function export.tr(text, lang, sc) local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*" local trtab = {} local i = 0 for char in mw.ustring.gmatch(text, ".") do i = i + 1 if meta[char] then table.insert(trtab, char) elseif char == "𖿠" and i > 1 then table.insert(trtab, trtab[i-1]) else table.insert(trtab, LFW2008[char] or "?") end end text = table.concat(trtab, " ") text = text:gsub(" ?([" .. meta_concat .. "]) ?", "%1") local _, count = mw.ustring.gsub(text, "[" .. meta_concat .. "%?]", "") if count == mw.ustring.len(text) then return nil else return "*" .. text end end return export kcu2v60rciwrv55987vhvcwsi6yzmtw মডিউল:uby-translit 828 168883 510435 2026-06-07T12:48:19Z RedminBot 9553 [[en:Module:uby-translit]] থেকে আনা হলো 510435 Scribunto text/plain local u = require("Module:string/char") local export = {} local GRAVE, ACUTE, CIRC, BREVE, CARON, DOTBELOW = u(0x300), u(0x301), u(0x302), u(0x306), u(0x30C), u(0x323) local accent = "[" .. GRAVE .. ACUTE .. CIRC .. BREVE .. CARON .. DOTBELOW .. "]" local tt = { ["а"] = "a", ["б"] = "b", ["в"] = "v", ["г"] = "g", ["ӷ"] = "ğ", ["ҕ"] = "ğ", ["д"] = "d", ["е"] = "e", ["ё"] = "jo", ["ж"] = "ẑ", ["з"] = "z", ["ҙ"] = "ź", ["ӡ"] = "dz", ["и"] = "i", ["й"] = "j", ["к"] = "kʼ", ["қ"] = "k", ["ҟ"] = "qʼ", ["ӄ"] = "q", ["л"] = "l", ["ԯ"] = "lˢ", ["м"] = "m", ["н"] = "n", ["о"] = "o", ["п"] = "pʼ", ["ԥ"] = "p", ["ҧ"] = "p", ["р"] = "r", ["с"] = "s", ["ҫ"] = "ś", ["т"] = "tʼ", ["ҭ"] = "t", ["у"] = "u", ["ф"] = "f", ["х"] = "x", ["ҳ"] = "h", ["ц"] = "c", ["ҵ"] = "cʼ", ["ч"] = "č", ["ҷ"] = "čʼ", ["ҽ"] = "ĉ", ["ҿ"] = "ĉʼ", ["ш"] = "ŝ", ["ы"] = "ə", ["ҩ"] = "jʷ", ["џ"] = "dẑ", ["ь"] = "ʲ", ["ә"] = "ʷ", ["э"] = "e", ["ю"] = "ju", ["я"] = "ja", ["ӏ"] = "ʔ", ["А"] = "A", ["Б"] = "B", ["В"] = "V", ["Г"] = "G", ["Ӷ"] = "Ğ", ["Ҕ"] = "Ğ", ["Д"] = "D", ["Е"] = "E", ["Ё"] = "Jo", ["Ж"] = "Ẑ", ["З"] = "Z", ["Ҙ"] = "Ź", ["Ӡ"] = "Dz", ["И"] = "I", ["Й"] = "J", ["К"] = "Kʼ", ["Қ"] = "K", ["Ҟ"] = "Qʼ", ["Ӄ"] = "Q", ["Л"] = "L", ["Ԯ"] = "Lˢ", ["М"] = "M", ["Н"] = "N", ["О"] = "O", ["П"] = "Pʼ", ["Ԥ"] = "P", ["Ҧ"] = "P", ["Р"] = "R", ["С"] = "S", ["Ҫ"] = "Ś", ["Т"] = "Tʼ", ["Ҭ"] = "T", ["У"] = "U", ["Ф"] = "F", ["Х"] = "X", ["Ҳ"] = "H", ["Ц"] = "C", ["Ҵ"] = "Cʼ", ["Ч"] = "Č", ["Ҷ"] = "Čʼ", ["Ҽ"] = "Ĉ", ["Ҿ"] = "Ĉʼ", ["Ш"] = "Ŝ", ["Ы"] = "Ə", ["Ҩ"] = "Jʷ", ["Џ"] = "Dẑ", ["Ь"] = "ʲ", ["Ә"] = "ʷ", ["Э"] = "E", ["Ю"] = "Ju", ["Я"] = "Ja", ["Ӏ"] = "Ɂ" } local digraphs = { ["б'"] = "ḅ", ["в'"] = "ṿ", ["ӷ'"] = "ğ̣", ["ҕ'"] = "ğ̣", ["жь"] = "ž", ["ӡь"] = "dź", ["ӡ'"] = "dź", ["ҟ'"] = "q̣ʼ", ["ӄ'"] = "q̣", ["ԯь"] = "lˢʼ", ["м'"] = "ṃ", ["п'"] = "p̣ʼ", ["ԥ'"] = "p̣", ["ф'"] = "fʼ", ["х'"] = "x̣", ["ць"] = "ć", ["ц'"] = "ć", ["ҵь"] = "ćʼ", ["ҵ'"] = "ćʼ", ["шь"] = "š", ["џь"] = "dž", ["Б'"] = "Ḅ", ["В'"] = "Ṿ", ["Ӷ'"] = "Ğ̣", ["Ҕ'"] = "Ğ̣", ["Жь"] = "Ž", ["Ӡь"] = "Dź", ["Ӡ'"] = "Dź", ["Ҟ'"] = "Q̣ʼ", ["Ӄ'"] = "Q̣", ["Ԯь"] = "Lˢʼ", ["М'"] = "Ṃ", ["П'"] = "P̣ʼ", ["Ԥ'"] = "P̣", ["Ф'"] = "Fʼ", ["Х'"] = "X̣", ["Ць"] = "Ć", ["Ц'"] = "Ć", ["Ҵь"] = "Ćʼ", ["Ҵ'"] = "Ćʼ", ["Шь"] = "Š", ["Џь"] = "Dž" } function export.tr(text, lang, sc) local UTF8_char = "[%z\1-\127\194-\244][\128-\191]*" -- Convert uppercase palochka to lowercase, along with any "false" palochkas (entered as Latin "I" or "l", Greek "Ι" or Cyrillic "І"). Lowercase palochka is found in tables above. text = mw.ustring.gsub(text, "[IlΙІӀ]", "ӏ") -- Contextual substitution of "w" for "у", "j" for "и" and "j" before "е". NOTE: These break with string.gsub, so must use mw.ustring.gsub. text = mw.ustring.gsub(text, "у([аеиоуыэ])", "w%1") text = mw.ustring.gsub(text, "У([аеиоуыэ])", "W%1") text = mw.ustring.gsub(text, "([аеёиоуыэюяАЕЁИОУЫЭЮЯ])у", "%1w") text = mw.ustring.gsub(text, "и([аеиоуыэ])", "j%1") text = mw.ustring.gsub(text, "И([аеиоуыэ])", "J%1") text = mw.ustring.gsub(text, "([аеёиоуыэюяАЕЁИОУЫЭЮЯ])и", "%1j") text = mw.ustring.gsub(text, "([аеёиоуыэюяАЕЁИОУЫЭЮЯ])е", "%1jе") for digraph, replacement in pairs(digraphs) do text = string.gsub(text, digraph, replacement) end text = string.gsub(text, UTF8_char, tt) -- Reposition apostrophes then decompose. text = mw.ustring.toNFD(mw.ustring.gsub(mw.ustring.gsub(text, "ʼʲ", "ʲʼ"), "ʼʷ", "ʷʼ")) -- When double letters both have a modifier letter and/or an apostrophe, only show on the second for readability purposes. for letter in string.gmatch("abcdefghijklmnopqrstuvxzəʔABCDEFGHIJKLMNOPQRSTUVXZƏɁ", UTF8_char) do text = mw.ustring.gsub(text, letter .. "(" .. accent .. "?" .. accent .. "?)([ʲˢʷ]?[ʲʷ]?ʼ?)" .. mw.ustring.lower(letter) .. "%1%2", letter .. "%1" .. mw.ustring.lower(letter) .. "%1%2") end -- Remove consecutive j/ʲ and w/ʷ then recompose. return mw.ustring.toNFC(mw.ustring.gsub(mw.ustring.gsub(text, "ʲ?([Jj])ʲ?", "%1"), "ʷ?([Ww])ʷ?", "%1")) end return export oz8w4gaxiftrrt9c9rbsncq79frev4v মডিউল:uby-translit/testcases 828 168884 510436 2026-06-07T12:48:19Z RedminBot 9553 [[en:Module:uby-translit/testcases]] থেকে আনা হলো 510436 Scribunto text/plain return require("Module:transliteration module testcases") { module = 'uby-translit', examples = { { "ҭыҭб'ыҟә", 'tətḅəqʷʼ' }, }, sc = 'Cyrl', lang = 'uby', nolink = true, } dkn7i6blco0mrnq4fjxjle3m45lvdem মডিউল:ug-translit/testcases 828 168885 510437 2026-06-07T12:48:21Z RedminBot 9553 [[en:Module:ug-translit/testcases]] থেকে আনা হলো 510437 Scribunto text/plain -- Unit tests for [[Module:ug-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ug_translit = require('Module:ug-translit') local m_links = require('Module:links') local ug = require('Module:languages').getByCode('ug') local function link(term) return m_links.full_link{term = term, lang = ug} end function tests:do_test_translit(Uyghur, roman, xlit) self:equals(link(Uyghur), ug_translit.tr(Uyghur, 'ug', 'ug-Arab'), roman) end function tests:test_translit_uyghur() local examples = { { "ئادەم", "adem" }, { "ب د ت", "b d t" }, { "بوغۇم", "boghum" }, { "ئائىلە", "a'ile" }, { "ئىنئام", "in'am" }, { "چاڭئەن", "chang'en" }, { "دېڭىز", "dë'ngiz" }, { "تەنگە", "ten'ge" }, { "ۋىجدانغا", "wijdan'gha" }, { "مەزھەپ", "mez'hep" }, } self:iterate(examples, "do_test_translit") end return tests aqy3uyuroq3uuopogouc7bvm40lb5du মডিউল:uk-translit/testcases 828 168886 510438 2026-06-07T12:48:21Z RedminBot 9553 [[en:Module:uk-translit/testcases]] থেকে আনা হলো 510438 Scribunto text/plain local tests = require("Module:UnitTests") local uk_translit = require("Module:uk-translit") function tests:check_translit(Cyrl, Latn) self:equals(('<span lang="uk" class="Cyrl mention">[[%s#Ukrainian|%s]]</span>'):format(Cyrl, Cyrl), uk_translit.tr(Cyrl, 'uk', 'Cyrl'), Latn) end function tests:test_translit() local examples = { { "Алушта" , "Alušta" }, { "Андрій" , "Andrij" }, { "Борщагівка" , "Borščahivka" }, { "Борисенко" , "Borysenko" }, { "Вінниця" , "Vinnycja" }, { "Володимир" , "Volodymyr" }, { "Гадяч" , "Hadjač" }, { "Богдан" , "Bohdan" }, { "Згурський" , "Zhursʹkyj" }, { "Згорани" , "Zhorany" }, { "Розгон" , "Rozhon" }, { "Ґалаґан" , "Galagan" }, { "Ґорґани" , "Gorgany" }, { "Донецьк" , "Donecʹk" }, { "Дмитро" , "Dmytro" }, { "Рівне" , "Rivne" }, { "Олег" , "Oleh" }, { "Есмань" , "Esmanʹ" }, { "Єнакієве" , "Jenakijeve" }, { "Гаєвич" , "Hajevyč" }, { "Короп’є" , "Koropʺje" }, { "Коропʼє" , "Koropʺje" }, { "Короп'є" , "Koropʺje" }, { "Житомир" , "Žytomyr" }, { "Жанна" , "Žanna" }, { "Жежелів" , "Žeželiv" }, { "Закарпаття" , "Zakarpattja" }, { "Казимирчук" , "Kazymyrčuk" }, { "Медвин" , "Medvyn" }, { "Михайленко" , "Myxajlenko" }, { "Іванків" , "Ivankiv" }, { "Іващенко" , "Ivaščenko" }, { "Їжакевич" , "Jižakevyč" }, { "Кадиївка" , "Kadyjivka" }, { "Мар’їне" , "Marʺjine" }, { "Марʼїне" , "Marʺjine" }, { "Мар'їне" , "Marʺjine" }, { "Йосипівка" , "Josypivka" }, { "Стрий" , "Stryj" }, { "Олексій" , "Oleksij" }, { "Київ" , "Kyjiv" }, { "Коваленко" , "Kovalenko" }, { "Лебедин" , "Lebedyn" }, { "Леонід" , "Leonid" }, { "Миколаїв" , "Mykolajiv" }, { "Маринич" , "Marynyč" }, { "Ніжин" , "Nižyn" }, { "Наталія" , "Natalija" }, { "Одеса" , "Odesa" }, { "Онищенко" , "Onyščenko" }, { "Полтава" , "Poltava" }, { "Петро" , "Petro" }, { "Решетилівка" , "Rešetylivka" }, { "Рибчинський" , "Rybčynsʹkyj" }, { "Суми" , "Sumy" }, { "Соломія" , "Solomija" }, { "Тернопіль" , "Ternopilʹ" }, { "Троць" , "Trocʹ" }, { "Ужгород" , "Užhorod" }, { "Уляна" , "Uljana" }, { "Фастів" , "Fastiv" }, { "Філіпчук" , "Filipčuk" }, { "Харків" , "Xarkiv" }, { "Христина" , "Xrystyna" }, { "Біла Церква" , "Bila Cerkva" }, { "Стеценко" , "Stecenko" }, { "Чернівці" , "Černivci" }, { "Шевченко" , "Ševčenko" }, { "Шостка" , "Šostka" }, { "Кишеньки" , "Kyšenʹky" }, { "Щербухи" , "Ščerbuxy" }, { "Гоща" , "Hošča" }, { "Гаращенко" , "Haraščenko" }, { "Юрій" , "Jurij" }, { "Корюківка" , "Korjukivka" }, { "Яготин" , "Jahotyn" }, { "Ярошенко" , "Jarošenko" }, { "Костянтин" , "Kostjantyn" }, { "Знам’янка" , "Znamʺjanka" }, { "Знамʼянка" , "Znamʺjanka" }, { "Знам'янка" , "Znamʺjanka" }, { "Феодосія" , "Feodosija" }, { "переноситцьа", "perenosytcʹa"}, { "јагодоју" , "jahodoju"}, } self:iterate(examples, "check_translit") end return tests myyq5it3mje6tvm2hcqst40kpc41t46 মডিউল:ulc-translit 828 168887 510439 2026-06-07T12:48:22Z RedminBot 9553 [[en:Module:ulc-translit]] থেকে আনা হলো 510439 Scribunto text/plain local export = {} local u = mw.ustring.char local gsub = mw.ustring.gsub local RING = u(0x030A) local single_letter_replacements = { ["А"]='A', ["а"]='a', ["А̄"]='Ā', ["а̄"]='ā', ["В"]='V', ["в"]='v', ["Е"]='E', ["е"]='e', ["Ё"]='Jo', ["ё"]='jo', ["Е̄"]='Ē', ["е̄"]='ē', ["Ё̄"]='Jō', ["ё̄"]='jō', ["Г"]='G', ["г"]='g', ["Ф"]='F', ["ф"]='f', ["Б"]='B', ["б"]='ʙ', ["Д"]='D', ["д"]='d', ["И"]='I', ["и"]='i', ["Ӣ"]='Ī', ["ӣ"]='ī', ["Ц"]='C', ["ц"]='c', ["Й"]='J', ["й"]='j', ["К"]='K', ["к"]='k', ["Л"]='L', ["л"]='l', ["Ӄ"]='Q', ["ӄ"]='q', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["Ӈ"]='Ŋ', ["ӈ"]='ŋ', ["О"]='O', ["о"]='o', ["О̄"]='Ō', ["о̄"]='ō', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Х"]='H', ["х"]='h', ["Ӯ"]='Ū', ["ӯ"]='ū', ["Ч"]='Č', ["ч"]='č', ["Ӽ"]='X̌', ["ӽ"]='x̌', ["Ы"]='Y', ["ы"]='y', ["Э"]='Ə', ["э"]='ə', ["Ю"]='Ju', ["ю"]='ju',["Я"]='Ja', ["я"]='ja', ['Ъ']='ʺ', ['ъ']='ʺ', ["Э̄"]='Ē', ["э̄"]='е̄', ["Ю̄"]='Jū', ["ю̄"]='jū',["Я̄"]='Jā', ["я̄"]='jā', -- NOT PRESENT IN THE ORIGINAL LATINISATION -- -- non-native letters ["Ь"]="’", ["ь"]="’", ["Ж"]='Ž', ["ж"]='ž', ["З"]='Z', ["з"]='z', ["Ш"]='Š', ["ш"]='š', ["Щ"]='Šč', ["щ"]='šč', -- non-standard letters ["Ҕ"]='Γ', ["ҕ"]='γ', ["Ҥ"]='Ŋ', ["ҥ"]='ŋ', ["Ӄ"]='Q', ["ӄ"]='q', ["Ҕ"]='Ǧ', ["ҕ"]='ǧ', } function export.tr(text, lang, sc) text = gsub(text, ".", single_letter_replacements) return text end return export bhljrz34volnunmpcmfq2i1kq4dshr9 মডিউল:umu-translit 828 168888 510440 2026-06-07T12:48:22Z RedminBot 9553 [[en:Module:umu-translit]] থেকে আনা হলো 510440 Scribunto text/plain local export = {} local replacements = { ["aa"] = "ā", ["ee"] = "ē", ["ii"] = "ī", ["oo"] = "ō", ["ch"] = "č", ["sh"] = "š", ["zh"] = "ž" } function export.tr(text) local output = text -- Perform all replacements for key, value in pairs(replacements) do output = output:gsub(key, value) end return output end return export oc6ijq3r882fw7q0vu72ckwkjo5a2b2 মডিউল:urj-koo-translit 828 168889 510441 2026-06-07T12:48:23Z RedminBot 9553 [[en:Module:urj-koo-translit]] থেকে আনা হলো 510441 Scribunto text/plain local export = {} local tab = { -- Anbur ["𐍐"]="a", ["𐍑"]="b", ["𐍒"]="g", ["𐍓"]="d", ["𐍔"]="e", ["𐍕"]="ž", ["𐍖"]="ǯ", ["𐍗"]="z", ["𐍘"]="ʒ́", ["𐍙"]="j", ["𐍚"]="k", ["𐍛"]="l", ["𐍜"]="m", ["𐍝"]="n", ["𐍞"]="ô", ["𐍟"]="p", ["𐍠"]="r", ["𐍡"]="s", ["𐍢"]="t", ["𐍣"]="v", ["𐍤"]="č", ["𐍥"]="š", ["𐍦"]="č", ["𐍧"]="ju", ["𐍨"]="y", ["𐍩"]="o", ["𐍪"]="o", ["𐍫"]="f", ["𐍬"]="x", ["𐍭"]="ʒ́", ["𐍮"]="v", ["𐍯"]="y", ["𐍰"]="je", ["𐍱"]="ê", ["𐍲"]="jê", ["𐍳"]="ju", ["𐍴"]="ja", ["𐍵"]="ja", ["𐍶"]="a", ["𐍷"]="d", ["𐍸"]="z", ["𐍹"]="n", ["𐍺"]="s", ["̀"]="", -- capital Cyrillic ["А"]="A", ["Б"]="B", ["В"]="V", ["Г"]="G", ["Д"]="D", ["Е"]="E", ["Ж"]="Ž", ["З"]="Z", ["Ѕ"]="Ʒ́", ["И"]="I", ["І"]="I", ["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["О"]="O", ["Ѡ"]="O", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["Ꙋ"]="U", ["У"]="U", ["Ф"]="F", ["Х"]="X", ["Ц"]="C", ["Ч"]="Č", ["Ш"]="Š", ["Щ"]="Št", ["Ъ"]="", ["Ꙑ"]="Y", ["Ы"]="Y", ["Ь"]="ʹ", ["Ѣ"]="E", ["Ю"]="Ju", ["Ꙗ"]="Ja", ["Я"]="Ja", ["Ѧ"]="Ja", -- lowercase Cyrillic ["а"]="a", ["б"]="b", ["в"]="v", ["г"]="g", ["д"]="d", ["е"]="e", ["ж"]="ž", ["з"]="z", ["ѕ"]="ʒ́", ["и"]="i", ["і"]="i", ["к"]="k", ["л"]="l", ["м"]="m", ["н"]="n", ["о"]="o", ["ѡ"]="o", ["п"]="p", ["р"]="r", ["с"]="s", ["т"]="t", ["ꙋ"]="u", ["у"]="u", ["ф"]="f", ["х"]="x", ["ц"]="c", ["ч"]="č", ["ш"]="š", ["щ"]="št", ["ъ"]="", ["ꙑ"]="y", ["ы"]="y", ["ь"]="ʹ", ["ѣ"]="e", ["ю"]="ju", ["ꙗ"]="ja", ["я"]="ja", ["ѧ"]="ja" } function export.tr(text, lang, sc) local language = lang -- palatalisation text = mw.ustring.gsub(text, "𐍓̀", "ď") text = mw.ustring.gsub(text, "𐍕̀", "ź") text = mw.ustring.gsub(text, "𐍛̀", "ľ") text = mw.ustring.gsub(text, "𐍝̀", "ň") text = mw.ustring.gsub(text, "𐍥̀", "ś") text = mw.ustring.gsub(text, "𐍢̀", "ť") text = mw.ustring.gsub(text, "𐍤̀", "ć") text = mw.ustring.gsub(text, "𐍙̈", "i") text = mw.ustring.gsub(text, "𐍣̈", "u") return (mw.ustring.gsub(text,'.',tab)) end return export omykwjfihjuy3vvt4w6d0xigaanh841 মডিউল:urk-translit 828 168890 510442 2026-06-07T12:48:23Z RedminBot 9553 [[en:Module:urk-translit]] থেকে আনা হলো 510442 Scribunto text/plain local export = {} local urk = require("Module:urk-common") local match = mw.ustring.match local initials = { ["ก"] = "k", ["กฺ"] = "g", ["ค"] = "kh", ["ง"] = "ng", ["จ"] = "c", ["ช"] = "ch", ["ซ"] = "s", ["ฌ"] = "ch", -- nonstandard spellling ["ญ"] = "ny", ["ด"] = "d", ["ต"] = "t", ["ท"] = "th", ["น"] = "n", ["บ"] = "b", ["ป"] = "p", ["พ"] = "ph", ["ฟ"] = "f", ["ม"] = "m", ["ย"] = "y", ["ยฺ"] = "j", ["ร"] = "r", ["ล"] = "l", ["ว"] = "w", ["อ"] = "ʼ", ["ฮ"] = "h" } local medials = { ["ร"] = "r", ["ล"] = "l" } local vowels = { ["อ"] = "ö", ["เ"] = "ë", ["เว"] = "aw", ["เอ"] = "e", ["เิ"] = "e", ["เีย"] = "ia", ["แ"] = "ä", ["โ"] = "o", ["ั"] = "a", ["ัว"] = "ua", ["า"] = "a", ["ิ"] = "i", ["ี"] = "i", ["ึ"] = "e", -- nonstandard spelling ["ื"] = "e", ["ุ"] = "u", ["ู"] = "u" } local finals = { ["ก"] = "k", ["ง"] = "ng", ["จ"] = "c", -- alterative spelling ["ด"] = "t", ["น"] = "n", ["บ"] = "p", ["ม"] = "m", ["ย"] = "y", ["ยจ"] = "c", ["ยฮ"] = "s", ["ยํ"] = "l", -- variable pronunciation ["ล"] = "l", -- only in phuket ["ว"] = "w", ["ฮ"] = "h", ["ะ"] = "q", ["ะฮ"] = "h" -- alterative spelling } -- main function function export.tr(text, lang, sc) local translit = "" local respelt = urk.syllabise(text, true) for _, segment in ipairs(respelt) do if match(segment, "[ก-๎]") then local v_pref, i, m, v_suf, f_pref, f_suf = match(segment, urk.syllable_pattern) local v = v_pref .. v_suf -- special case for "เีย" if v_pref == "เ" and v_suf == "ี" and f_pref == "ย" then v = "เีย" f_pref = "" end local f = f_pref .. f_suf -- join components together translit = translit .. (initials[i] or "") .. (medials[m] or "") .. (vowels[v] or "") .. (finals[f] or "") else translit = translit .. segment end end return translit end return export 1fw50xpwn46zkurwregqqvfxuow5dfo মডিউল:urk-translit/testcases 828 168891 510443 2026-06-07T12:48:24Z RedminBot 9553 [[en:Module:urk-translit/testcases]] থেকে আনা হলো 510443 Scribunto text/plain -- Unit tests for [[Module:urk-translit]]. Refresh page to run tests. return require("Module:transliteration module testcases")( require('Module:urk-translit').tr, { "test_general", { "อูรักลาโวยจ", "ʼuraklawoc" }, { "อูรัก ลาโวยจ", "ʼurak lawoc" }, { "ดูวาเบอลัยฮ", "duwabelas" }, { "ดูวา เบอลัยฮ", "duwa belas" }, { "ซาโวะฮ", "sawoh" }, { "เซอโนะ", "senoq" }, { "เจรอเมน", "cremën" }, { "บวยจ", "buac" }, { "เมียว", "miaw" }, "test_respell", { "พุพุ", "phuqphuq" }, { "กะ", "kaq" }, { "จะจะ", "caqcaq" }, { "ตรก", "trok" }, { "กก", "kok" }, }, "Thai", "urk" ) ksjpbvt1ywpjebmj1cv9wecn0ngtkrx মডিউল:uz-Latn-Cyrl-translit 828 168892 510444 2026-06-07T12:48:24Z RedminBot 9553 [[en:Module:uz-Latn-Cyrl-translit]] থেকে আনা হলো 510444 Scribunto text/plain local export = {} local tt = { ["t"] = "т", ["T"] = "Т", ["r"] = "р", ["R"] = "Р", ["f"] = "ф", ["F"] = "Ф", ["oʻ"] = "ў", ["Oʻ"] = "Ў", ["yu"] = "ю", ["Yu"] = "Ю", ["sh"] = "ш", ["Sh"] = "Ш", ["n"] = "н", ["N"] = "Н", ["p"] = "п", ["p"] = "П", ["u"] = "у", ["U"] = "У", ["l"] = "л", ["L"] = "Л", ["z"] = "з", ["Z"] = "З", ["е"] = "е", ["E"] = "Э", ["Ye"] = "Е", ["g"] = "г", ["G"] = "Г", ["b"] = "б", ["B"] = "Б", ["s"] = "с", ["S"] = "С", ["x"] = "х", ["X"] = "Х", ["ch"] = "ч", ["Ch"] = "Ч", ["ya"] = "я", ["Ya"] = "Я", ["h"] = "ҳ", ["H"] = "Ҳ", ["E"] = "Э", ["m"] = "м", ["m"] = "М", ["о"] = "و", ["О"] = "و", ["i"] = "и", ["I"] = "И", ["yo"] = "ё", ["Yo"] = "Ё", ["j"] = "ж", ["J"] = "Ж", ["k"] = "к", ["K"] = "К", ["d"] = "д", ["D"] = "Д", ["v"] = "в", ["V"] = "В", ["s"] = "с", ["S"] = "С", ["a"] = "а", ["A"] = "А", ["ng"] = "нг", ["Ng"] = "Нг", ["q"] = "қ", ["Q"] = "Қ", ["gʻ"] = "ғ", ["Gʻ"] = "Ғ" } local vowels = "AaEeIiOoUuOʻoʻ" local consonants = "BbChchDdGgGʻgʻHhJjKkLlMmNnNgngPpRrSsShshTtVvХхYyZz" function export.tr(text, lang, sc) if type(text) == "table" then options = {} text, script = text.args[1], text.args[2] end if not sc then sc = require("Module:languages").getByCode("ky"):findBestScript(text):getCode() end if sc ~= "Cyrl" then return nil end text = mw.ustring.gsub( text, "([АОӨҮУЫЕЯЁЮИЕаоөүуыэяёюиеъь%A][́̀]?)([Ее])", function(a, e) return a .. (e == "е" and "йе" or "Йе") end ):gsub("^Е", "Йе"):gsub("^е", "йе") text = mw.ustring.gsub(text, "^([" .. consonants .. "])и([" .. consonants .. "])([^" .. e .. "])", "%1И%2%3") text = mw.ustring.gsub(text, "([" .. vowels .. "])([" .. consonants .. "])и", "%1%2И") text = mw.ustring.gsub(text, "^и([" .. consonants .. "])([^" .. e .. "])", "И%1%2") text = mw.ustring.gsub(text, "([^" .. vowels .. "])([" .. consonants .. "])([" .. consonants .. "])и", "%1%2%3И") return (mw.ustring.gsub(text, ".", tt)) end return export 1dnps0jmzqwat4jvhntj5pbfqxyxd5x মডিউল:uz-afg-translit 828 168893 510445 2026-06-07T12:48:25Z RedminBot 9553 [[en:Module:uz-afg-translit]] থেকে আনা হলো 510445 Scribunto text/plain local export = {} local m_str_utils = require("Module:string utilities") local gcodepoint = m_str_utils.gcodepoint local rfind = m_str_utils.find local rsubn = m_str_utils.gsub local rmatch = m_str_utils.match local rsplit = m_str_utils.split local U = m_str_utils.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- assigned below local has_diacritics -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local zwnj = U(0x200C) -- zero-width non-joiner local alif_madda = U(0x622) local alif_hamza_below = U(0x625) local alif = U(0x627) local taa_marbuuTa = U(0x629) local laam = U(0x644) local waaw = U(0x648) local alif_maqSuura = "یٰ" local yaa = "ی" local fatHataan = U(0x64B) local Dammataan = U(0x64C) local kasrataan = U(0x64D) local fatHa = U(0x64E) local Damma = U(0x64F) local kasra = U(0x650) local shadda = U(0x651) local sukuun = U(0x652) local waaw_maj = "ۉ" local yaa_maj = "ې" local dagger_alif = U(0x670) local alif_waSl = U(0x671) --local zwj = U(0x200D) -- zero-width joiner local lrm = U(0x200E) -- left-to-right mark local rlm = U(0x200F) -- right-to-left mark -- Occurs after al- in allaḏī and variants so that we can implement elision of -- a- after a preceding vowel, after which we remove the marker. local alladi_marker = U(0xFFF0) local tt = { -- consonants ["ب"]="b", ["پ"]="p", ["ت"]="t", ["ث"]="s", ["ج"]="j", ["چ"]="ch", ["ح"]="h", ["خ"]="x", ["د"]="d", ["ذ"]="z", ["ر"]="r", ["ز"]="z", ["ژ"]="zh", ["س"]="s", ["ش"]="sh", ["ص"]="s", ["ض"]="z", ["ط"]="t", ["ظ"]="z", ["ع"]="", ["غ"]="gʻ", ["ف"]="f", ["ق"]="q", ["ک"]="k", ["گ"]="g", ["ل"]="l", ["م"]="m", ["ن"]="n", ["ه"]="h", -- toʾ marbūta (special) - always after a fátḥa (a), silent at the end of -- an utterance, "t" in ʾizofa or with pronounced tanwīn. We catch -- most instances of toʾ marbūta before we get to this stage. [taa_marbuuTa]="t", -- toʾ marbūta = ة -- control characters [zwnj]="-", -- ZWNJ (zero-width non-joiner) -- [zwj]="", -- ZWJ (zero-width joiner) -- rare letters -- semivowels or long vowels, alif, hamza, special letters ["ا"]="o", -- ʾalif -- hamzated letters ["أ"]="ʼ", -- hamza over alif [alif_hamza_below]="ʼ", -- hamza under alif ["ؤ"]="ʼ", -- hamza over wow ["ئ"]="ʼ", -- hamza over yo ["ء"]="ʼ", -- hamza on the line -- long vowels [waaw]="v", --"ū" after zamma (u) and not before diacritic [yaa]="y", --"ī" after kasra (i) and not before diacritic [alif_maqSuura]="o", -- ʾalif maqsūra [alif_madda]="o", -- ʾalif madda [alif_waSl]= "", -- hamzatu l-wasl [dagger_alif] = "o", -- ʾalif xanjariyya = dagger ʾalif (Koranic diacritic) -- short vowels, šádda and sukūn [fatHataan]="an", -- fatḥatan [Dammataan]="un", -- zammatan [kasrataan]="in", -- kasratan [fatHa]="a", -- fatḥa [Damma]="u", -- zamma [kasra]="i", -- kasra [waaw_maj]="oʻ", [yaa_maj]="e", -- šadda - doubled consonant [sukuun]="", --sukūn - no vowel -- ligatures ["ﻻ"]="lo", ["ﷲ"]="lloh", -- tatwīl ["ـ"]="", -- tatwīl, no sound -- numerals ["۱"]="1", ["۲"]="2", ["۳"]="3", ["۴"]="4", ["۵"]="5", ["۶"]="6", ["۷"]="7", ["۸"]="8", ["۹"]="9", ["۰"]="0", -- punctuation (leave on separate lines) ["؟"]="?", -- question mark ["«"]='“', -- quotation mark ["»"]='”', -- quotation mark ["٫"]=".", -- decimal point ["٬"]=",", -- thousands separator ["٪"]="%", -- percent sign ["،"]=",", -- comma ["؛"]=";" -- semicolon } local he = "ه" local sun_letters = "تثدذرزسشصضطظلن" -- For use in implementing sun-letter assimilation of ال (al-) local ttsun1 = {} local ttsun2 = {} local ttsun3 = {} for cp in gcodepoint(sun_letters) do local ch = U(cp) ttsun1[ch] = tt[ch] ttsun2["l-" .. ch] = tt[ch] .. "-" .. ch table.insert(ttsun3, tt[ch]) end -- For use in implementing elision of al- local sun_letters_tr = table.concat(ttsun3, "") local consonants_needing_vowels = "بتثجحخدذرزسشصضطظعغفقکلمنهپچژڤگڨڧڢںأإؤئءةﷲ" -- consonants on the right side; includes alif madda local rconsonants = consonants_needing_vowels .. "ویآ" -- consonants on the left side; does not include alif madda local lconsonants = consonants_needing_vowels .. "وی" -- Arabic semicolon, comma, question mark; tatwīl; period, exclamation point, -- single quote for bold/italic, double quotes for quoted material local punctuation = "؟،؛" .. "ـ" .. ".!'" .. '"' local space_like = "%s'" .. '"' .. zwnj .. "\n" .. "%p" local space_like_class = "[" .. space_like .. "]" local numbers = "۱۲۳۴۵۶۷۸۹۰" local before_diacritic_checking_subs = { ------------ transformations prior to checking for diacritics -------------- -- random Koranic marks and presentation forms {U(0x06E1), sukuun}, -- "Small High Dotless Head of Khah" (variant of sukūn) {U(0x06DA), ""}, -- "Small High Jeem" {U(0x06DF), ""}, -- "Small High Rounded Zero" (FIXME: correct?) {U(0x08F0), U(0x64B)}, -- "Open Fathatan" {U(0x08F1), U(0x64C)}, -- "Open Dammatan" {U(0x08F2), U(0x64D)}, -- "Open Kasratan" {U(0x06E4), ""}, -- "Small High Madda" (FIXME: correct?) {U(0x06D6), ""}, -- "Small High Ligature Sad with Lam with Alef Maksura" (FIXME: there are others we need to do) {U(0x06E5), "و"}, {U(0x06E6), "ی"}, -- convert llh for alloh into ll+shadda+dagger-alif+h {"لله", "للّٰه"}, -- shadda+short-vowel (including tanwīn vowels, i.e. -an -in -un) gets -- replaced with short-vowel+shadda during NFC normalisation, which -- MediaWiki does for all Unicode strings; however, it makes the -- transliteration process inconvenient, so undo it. {"([" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. dagger_alif .. "])" .. shadda, shadda .. "%1"}, -- ignore Koranic gemination at beginning of word due to assimilation of preceding consonant {" ([" .. lconsonants .. "])" .. shadda, " %1"}, -- ignore alif jamīla (otiose alif in 3pl verb forms) -- alif_madda, ayn {"(" .. sukuun .. ")" .. alif_madda , "%1" .. "ء" .. fatHa .. alif}, {"([" .. lconsonants .. sukuun .. "])" .. "ع" , "%1" .. "ء" }, { "ع" .. sukuun , "ء" .. sukuun }, -- final he {"([" .. fatHa .. Damma .. kasra .. "])" .. "ه" .. "(" .. space_like_class .. ")" , "%1%2" }, {"([" .. fatHa .. Damma .. kasra .. "])" .. "ه" .. "$" , "%1" }, {"([" .. fatHa .. Damma .. kasra .. "])" .. he .. "$" , "%1%2" }, -- #1: handle zamma + wow + alif (final -ū) {Damma .. waaw .. alif, Damma .. waaw}, -- #2: handle wow + sukūn + alif (final -w in -aw in defective verbs) -- this must go before the generation of w, which removes the waw here. {waaw .. sukuun .. alif, waaw .. sukuun}, -- ignore final alif or alif maqsūra following fatḥatan (e.g. in accusative -- singular or words like عَصًا "stick" or هُدًى "guidance"; this is called -- tanwin nasb) {"(" .. fatHa .. "?)" .. yaa .. dagger_alif, "%1" .. alif}, {fatHataan .. "[" .. alif .. alif_maqSuura .. "]", fatHataan}, -- same but with the fatḥatan placed over the alif or alif maqsūra -- instead of over the previous letter (considered a misspelling but -- common) {"[" .. alif .. alif_maqSuura .. "]" .. fatHataan, fatHataan}, -- toʾ marbūta should always be preceded by fatḥa, alif, alif madda or -- dagger alif; infer fatḥa if not {"([^" .. fatHa .. alif .. alif_madda .. dagger_alif .. "])" .. taa_marbuuTa, "%1" .. fatHa .. taa_marbuuTa}, -- similarly for alif between consonants, possibly marked with shadda -- (does not apply to initial alif, which is silent when not marked with -- hamza, or final alif, which might be pronounced as -an) {"([" .. lconsonants .. "]" .. shadda .. "?)" .. alif .. "([" .. rconsonants .. "])", "%1" .. fatHa .. alif .. "%2"}, -- infer fatḥa in case of non-fatḥa + alif/alif-maqsūra + dagger alif {"([^" .. fatHa .. "])([" .. alif .. alif_maqSuura .. "]" .. dagger_alif .. ")", "%1" .. fatHa .. "%2"}, -- infer kasra in case of hamza-under-alif not + kasra {alif_hamza_below .. "([^" .. kasra .. kasrataan .. "])", alif_hamza_below .. kasra .. "%1"}, -- ignore dagger alif placed over regular alif or alif maqsūra {"([" .. alif .. alif_maqSuura .. "])" .. dagger_alif, "%1"}, ----------- rest of these concern definite article alif-lom ---------- -- in kasra/zamma + alif + lam, make alif into hamzatu l-wasl, so we -- handle cases like بِالتَّوْفِیق (bi-t-tawfīq) correctly {"([" .. Damma .. kasra .. "])" .. alif .. laam, "%1" .. alif_waSl .. laam}, -- al + consonant + shadda (only recognize word-initially if regular alif): remove shadda {"^(" .. alif .. fatHa .. "?" .. laam .. "[" .. lconsonants .. "])" .. shadda, "%1"}, {"(" .. space_like_class .. alif .. fatHa .. "?" .. laam .. "[" .. lconsonants .. "])" .. shadda, "%1"}, {"(" .. alif_waSl .. fatHa .. "?" .. laam .. "[" .. lconsonants .. "])" .. shadda, "%1"}, -- handle l- hamzatu l-wasl or word-initial al- {"^" .. alif .. fatHa .. "?" .. laam, "al-"}, {"(" .. space_like_class .. ")" .. alif .. fatHa .. "?" .. laam, "%1al-"}, -- next one for bi-t-tawfīq {"([" .. Damma .. kasra .. "])" .. alif_waSl .. fatHa .. "?" .. laam, "%1-l-"}, -- next one for remaining hamzatu l-wasl (at beginning of word) {alif_waSl .. fatHa .. "?" .. laam, "l-"}, -- special casing if the l in al- has a shadda on it (as in الَّذِی "that"), -- so we don't mistakenly double the dash; insert a special marker here so -- that we know later to elide the a- after a vowel {"l%-" .. shadda, "l" .. alladi_marker .. "l"}, -- implement assimilation of sun letters {"l%-[" .. sun_letters .. "]", ttsun2}, } -- Transliterate the word(s) in TEXT. LANG (the language) and SC (the script) -- are ignored. OMIT_I3RAAB means leave out final short vowels (ʾiʿrob). -- GRAY_I3RAAB means render transliterate short vowels (ʾiʿrob) in gray. -- FORCE_TRANSLIT causes even non-vocalized text to be transliterated -- (normally the function checks for non-vocalized text and returns nil, -- since such text is ambiguous in transliteration). function export.tr(text, lang, sc, omit_i3raab, gray_i3raab, force_translit) -- make it possible to call this function from a template if type(text) == "table" then local function f(x) return (x ~= "") and x or nil end text, lang, sc, omit_i3raab, force_translit = f(text.args[1]), f(text.args[2]), f(text.args[3]), f(text.args[4]), f(text.args[5]) end for _, sub in ipairs(before_diacritic_checking_subs) do text = rsub(text, sub[1], sub[2]) end if not force_translit and not has_diacritics(text) then require("Module:debug").track("ar-translit/lacking diacritics") return nil end ------------ transformations after checking for diacritics -------------- -- Replace plain alif with hamzatu l-wasl when followed by fatḥa/zamma/kasra. -- Must go after handling of initial al-, which distinguishes alif-fatḥa -- from alif w/hamzatu l-wasl. Must go before generation of ū and ī, which -- eliminate the zamma/kasra. text = rsub(text, alif .. "([" .. fatHa .. Damma .. kasra .. waaw_maj .. yaa_maj .. "])", alif_waSl .. "%1") -- zamma + waw not followed by a diacritic is ū, otherwise w text = rsub(text, Damma .. waaw .. "([^" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. shadda .. sukuun .. dagger_alif .. waaw_maj .. yaa_maj .. "])", "ū%1") text = rsub(text, Damma .. waaw .. "$", "ū") -- kasra + yaa not followed by a diacritic (or ū from prev step) is ī, otherwise y text = rsub(text, kasra .. yaa .. "([^" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. shadda .. sukuun .. dagger_alif .. waaw_maj .. yaa_maj .. "ū])", "ī%1") text = rsub(text, kasra .. yaa .. "$", "ī") -- final he text = rsub(text, "([" .. fatHa .. Damma .. kasra .. "])" .. he .. "$", "%1") text = rsub(text, "([" .. fatHa .. Damma .. kasra .. "])" .. he .. "(" .. space_like_class .. zwnj .. ")", "%1%2") text = rsub(text, zwnj, "") -- convert shadda to double letter. text = rsub(text, "(.)" .. shadda, "%1%1") if not omit_i3raab and gray_i3raab then -- show ʾiʿrob grayed in transliteration -- decide whether to gray out the t in ﺓ. If word begins with al- or l-, yes. -- Otherwise, no if word ends in a/i/u, yes if ends in an/in/un. text = rsub(text, "^(a?l%-[^%s]+)" .. taa_marbuuTa .. "([" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. "])", '%1<span style="color: var(--wikt-palette-grey-8,#888)">t</span>%2') text = rsub(text, "(" .. space_like_class .. "a?l%-[^%s]+)" .. taa_marbuuTa .. "([" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. "])", '%1<span style="color: var(--wikt-palette-grey-8,#888)">t</span>%2') text = rsub(text, taa_marbuuTa .. "([" .. fatHa .. Damma .. kasra .. "])", "t%1") text = rsub(text, taa_marbuuTa .. "([" .. fatHataan .. Dammataan .. kasrataan .. "])", '<span style="color: var(--wikt-palette-grey-8,#888)">t</span>%1') text = rsub(text, ".", { [fatHataan] = '<span style="color: var(--wikt-palette-grey-8,#888)">an</span>', [kasrataan] = '<span style="color: var(--wikt-palette-grey-8,#888)">in</span>', [Dammataan] = '<span style="color: var(--wikt-palette-grey-8,#888)">un</span>' }) text = rsub(text, "([" .. fatHa .. Damma .. kasra .. "])(" .. space_like_class .. ")", function(vowel, space) vowel_repl = { [fatHa] = '<span style="color: var(--wikt-palette-grey-8,#888)">a</span> ', [kasra] = '<span style="color: var(--wikt-palette-grey-8,#888)">i</span> ', [Damma] = '<span style="color: var(--wikt-palette-grey-8,#888)">u</span> ' } return vowel_repl[vowel] .. space end ) text = rsub(text, "[" .. fatHa .. Damma .. kasra .. "]$", { [fatHa] = '<span style="color: var(--wikt-palette-grey-8,#888)">a</span>', [kasra] = '<span style="color: var(--wikt-palette-grey-8,#888)">i</span>', [Damma] = '<span style="color: var(--wikt-palette-grey-8,#888)">u</span>' }) text = rsub(text, '</span><span style="color: var(--wikt-palette-grey-8,#888)">', "") elseif omit_i3raab then -- omit ʾiʿrob in transliteration text = rsub(text, "[" .. fatHataan .. Dammataan .. kasrataan .. "]", "") text = rsub(text, "[" .. fatHa .. Damma .. kasra .. "](" .. space_like_class .. ")", "%1") text = rsub(text, "[" .. fatHa .. Damma .. kasra .. "]$", "") end -- toʾ marbūta should not be rendered by -t if word-final even when -- ʾiʿrob (desinential inflection) is shown; instead, use (t) before -- whitespace, nothing when final; but render final -ﺍﺓ and -ﺁﺓ as -oh, -- consistent with Wehr's dictionary -- Left-to-right or right-to-left mark at end of text will prevent toʾ marbūta -- from being transliterated correctly. text = string.gsub(text, lrm, "") text = string.gsub(text, rlm, "") text = rsub(text, "([" .. alif .. alif_madda .. "])" .. taa_marbuuTa .. "$", "%1h") -- Ignore final toʾ marbūta (it appears as "a" due to the preceding -- short vowel). Need to do this after graying or omitting word-final -- ʾiʿrob. text = rsub(text, taa_marbuuTa .. "$", "") text = rsub(text, taa_marbuuTa .. "(%p)", "%1") if not omit_i3raab then -- show ʾiʿrob in transliteration text = rsub(text, taa_marbuuTa .. "(" .. space_like_class .. ")", "(t)%1") else -- When omitting ʾiʿrob, show all non-absolutely-final instances of -- toʾ marbūta as (t), with trailing ʾiʿrob omitted. text = rsub(text, taa_marbuuTa, "(t)") end -- tatwīl should be rendered as - at beginning or end of word. It will -- be rendered as nothing in the middle of a word (FIXME, do we want -- this?) text = rsub(text, "^ـ", "-") text = rsub(text, "(" .. space_like_class .. ")ـ", "%1-") text = rsub(text, "ـ$", "-") text = rsub(text, "ـ(" .. space_like_class .. ")", "-%1") -- Now convert remaining Arabic chars according to table. text = rsub(text, ".", tt) text = rsub(text, "ao", "o") -- Implement elision of al- after a final vowel. We do this -- conservatively, only handling elision of the definite article and related -- terms (specifically, relative pronoun الَّذِی (allaḏī) and variants) rather -- than elision in other cases of hamzat al-wasl (e.g. form-I imperatives -- or form-VII and above verbal nouns) partly because elision in -- these cases isn't so common in MSA and partly to avoid excessive -- elision in case of words written with initial bare alif instead of -- properly with hamzated alif. Possibly we should reconsider. text = rsub(text, "([aiuoīū]'* +'*)a([" .. sun_letters_tr .. "][%-" .. alladi_marker .. "])", "%1%2") if gray_i3raab then text = rsub(text, "([aiuoīū]'*</span>'* +'*)a([" .. sun_letters_tr .. "][%-" .. alladi_marker .. "])", "%1%2") end -- remove indicator of allaḏī, which has served its purpose text = rsub(text, alladi_marker, "") -- Special-case the transliteration of alloh, without the hyphen. text = rsub(text, "^(a?)l%-loh", "%1lloh") text = rsub(text, "(" .. space_like_class .. "a?)l%-loh", "%1lloh") -- Compress multiple spaces, which may occur e.g. when removing Koranic diacritics. text = rsub(text, "(%s)%s+", "%1") -- Remove length (not native in uzbek) text = rsub(text, "ī", "i") text = rsub(text, "ū", "u") return text end local has_diacritics_subs = { -- FIXME! What about lam-alif ligature? -- remove punctuation and shadda -- must go before removing final consonants {"[" .. punctuation .. shadda .. "]", ""}, {zwnj, " "}, -- Remove consonants at end of word or utterance, so that we're OK with -- words lacking iʿrob (must go before removing other consonants). -- If you want to catch places without iʿrob, comment out the next two lines. {"[" .. lconsonants .. "]$", ""}, {"[" .. lconsonants .. "]([%)%]}]?" .. space_like_class .. ")", "%1"}, -- remove consonants (or alif) when followed by diacritics -- must go after removing shadda -- do not remove the diacritics yet because we need them to handle -- long-vowel sequences of diacritic + pseudo-consonant {"[" .. lconsonants .. alif .. "]([" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. sukuun .. dagger_alif .. waaw_maj .. yaa_maj .. "])", "%1"}, -- the following two must go after removing consonants w/diacritics because -- we only want to treat vocalic wow/yo' in them (we want to have removed -- wow/yo' followed by a diacritic) -- remove zamma + wow {Damma .. waaw, ""}, -- remove kasra + yo' {kasra .. yaa, ""}, -- remove majhuls {waaw_maj, ""}, {yaa_maj, ""}, -- remove fatḥa/fatḥatan + alif/alif-maqsūra {"[" .. fatHataan .. fatHa .. "][" .. alif .. alif_maqSuura .. "]", ""}, -- remove diacritics {"[" .. fatHataan .. Dammataan .. kasrataan .. fatHa .. Damma .. kasra .. sukuun .. dagger_alif .. "]", ""}, -- remove numbers, hamzatu l-wasl, alif madda {"[" .. numbers .. "ٱ" .. "آ" .. "]", ""}, -- remove non-Arabic characters {"[^" .. U(0x0600) .. "-" .. U(0x06FF) .. U(0x0750) .. "-" .. U(0x077F) .. U(0x08A0) .. "-" .. U(0x08FF) .. U(0xFB50) .. "-" .. U(0xFDFF) .. U(0xFE70) .. "-" .. U(0xFEFF) .. "]", ""} } -- declared as local above function has_diacritics(text) local orig_text = text local count text, count = rsubn(text, "[" .. lrm .. rlm .. "]", "") if count > 0 then require("Module:debug").track("ar-translit/lrm or rlm") end for _, sub in ipairs(has_diacritics_subs) do text = rsub(text, unpack(sub)) end if #text > 0 then mw.log(("Check for missing diacritics failed; original text '%s', text without diacritics '%s'"):format( orig_text, text)) end return #text == 0 end -- Return true if transliteration TR is an irregular transliteration of -- ARABIC. Return false if ARABIC can't be transliterated. For purposes of -- establishing regularity, hyphens are ignored and word-final toʾ marbūta -- can be transliterated as "(t)", "" or "t". function export.irregular_translit(arabic, tr) if not arabic or arabic == "" or not tr or tr == "" then return false end local regtr = export.tr(arabic) if not regtr or regtr == tr then return false end local arwords = rsplit(arabic, " ") local regwords = rsplit(regtr, " ") local words = rsplit(tr, " ") if #regwords ~= #words or #regwords ~= #arwords then return true end for i=1,#regwords do local regword = regwords[i] local word = words[i] local arword = arwords[i] -- Resolve final (t) in auto-translit to t, h or nothing if rfind(regword, "%(t%)$") then regword = rfind(word, "oh$") and rsub(regword, "%(t%)$", "h") or rfind(word, "t$") and rsub(regword, "%(t%)$", "t") or rsub(regword, "%(t%)$", "") end -- Resolve clitics + short a + alif-lom, which may get auto-transliterated -- to contain long o, to short a if the manual translit has it; note -- that currently in cases with assimilated l, the auto-translit will -- fail, so we won't ever get here and don't have to worry about -- auto-translit l against manual-translit assimilated char. local clitic_chars = "^[وفیییل]" -- separate line to avoid L2R display weirdness if rfind(arword, clitic_chars .. fatHa .. "?[" .. alif .. alif_waSl .. "]" .. laam) and rfind(word, "^[wfkl]a%-") then regword = rsub(regword, "^([wfkl])o", "%1a") end -- Ignore hyphens when comparing if rsub(regword, "%-", "") ~= rsub(word, "%-", "") then return true end end return false end return export 7nk3vws2cin8v9jkuzhglx5gnnjt2xm মডিউল:uz-afg-translit/testcases 828 168894 510446 2026-06-07T12:48:25Z RedminBot 9553 [[en:Module:uz-afg-translit/testcases]] থেকে আনা হলো 510446 Scribunto text/plain local tests = require('Module:UnitTests') local uz_afg_translit = require('Module:uz-afg-translit') local full_link = require('Module:links').full_link local uz = require('Module:languages').getByCode('uz') local rlm = require("Module:string/char")(0x200F) -- right-to-left mark local function link(word) return full_link{ term = word, lang = uz, tr = "-" } end --TO DO function tests:do_test_translit(arab, roman) self:equals(link(arab), uz_afg_translit.tr(arab, 'uz', 'Uzbek'), roman) end function tests:test_translit_uzbek() local examples = { { 'بۉلْماق', "boʻlmoq" }, { 'اُورْغَاچِی', "urgʻochi" }, { 'اۉزْبېک', "oʻzbek"}, { 'اُوخْلَه‌مَاق', "uxlamoq"}, { 'تَکَلُّف', 'takalluf'}, { 'تَلَه‌مَاق', 'talamoq'}, { 'تَلْتَه‌یْمَاق', 'taltaymoq'}, { 'تۉقَی' , 'toʻqay'}, { 'اِجْرائِیَه', 'ijroiya' }, } self:iterate(examples, "do_test_translit") end return tests njk33jjnl4ftcxywgv99q59t0lhhss5 মডিউল:xal-translit/testcases 828 168895 510447 2026-06-07T12:48:26Z RedminBot 9553 [[en:Module:xal-translit/testcases]] থেকে আনা হলো 510447 Scribunto text/plain local tests = require('Module:UnitTests') local tr = require('Module:xal-translit').tr local tag = mw.text.tag local function tag_Kalmyk(text) return tag("span", { class = "Cyrl", lang = "xal" }, text) end function tests:check_translit(example, expected) self:equals( tag_Kalmyk(example), tr(example), expected) end function tests:test_translit() local examples = { { "Хальмг Таңһч", "Xal'mg Tañhç" }, { "мөрн", "mörn" }, { "Әрәсә", "Äräsä" }, } self:iterate(examples, "check_translit") end return tests eekpoonjwnwbod0f7kfm6un1iu41vk4 মডিউল:xas-translit 828 168896 510448 2026-06-07T12:48:26Z RedminBot 9553 [[en:Module:xas-translit]] থেকে আনা হলো 510448 Scribunto text/plain local export = {} local tab = { ["А"]="A", ["а"]="a", ["Б"]="B", ["б"]="b", ["Г"]="G", ["г"]="g", ["Д"]="D", ["д"]="d", ["Е"]="E", ["е"]="e", ["Ж"]="Ž", ["ж"]="ž", ["З"]="Z", ["з"]="z", ["И"]="I", ["и"]="i", ["Й"]="J", ["й"]="j", ["К"]="K", ["к"]="k", ["Л"]="L", ["л"]="l", ["М"]="M", ["м"]="m", ["Н"]="N", ["н"]="n", ["Ӈ"]="Ŋ", ["ӈ"]="ŋ", ["О"]="O", ["о"]="o", ["Ӧ"]="Ö", ["ӧ"]="ö", ["Ө"]="Ə̂", ["ө"]="ə̂", ["П"]="P", ["п"]="p", ["Р"]="R", ["р"]="r", ["С"]="S", ["с"]="s", ["Т"]="T", ["т"]="t", ["У"]="U", ["у"]="u", ["Ӱ"]="Ü", ["ӱ"]="ü", ["Х"]="X", ["х"]="x", ["Ч"]="Ć", ["ч"]="ć", ["Ш"]="Š", ["ш"]="š", ["ь"]="", ["ʼ"]="ʔ", ["Ы"]="I̭", ["ы"]="i̭", ["В"]="W", ["в"]="w", ["Ә"]="Ə", ["ә"]="ə", ["Я"]="A", ["я"]="a", ["Ё"]="O", ["ё"]="o", ["Ю"]="U", ["ю"]="u", } function export.tr(text, lang, sc) local language = lang -- soft consonants text = mw.ustring.gsub(text, "С([ь])", "Ś%1") text = mw.ustring.gsub(text, "с([ь])", "ś%1") text = mw.ustring.gsub(text, "З([ь])", "Ź%1") text = mw.ustring.gsub(text, "з([ь])", "ź%1") text = mw.ustring.gsub(text, "Н([ь])", "Ń%1") text = mw.ustring.gsub(text, "н([ь])", "ń%1") text = mw.ustring.gsub(text, "Л([ь])", "Ĺ%1") text = mw.ustring.gsub(text, "л([ь])", "ĺ%1") text = mw.ustring.gsub(text, "Дж", "Ʒ́") text = mw.ustring.gsub(text, "дж", "ʒ́") text = mw.ustring.gsub(text, "([ПпТтКк])х", "%1ʰ") return (mw.ustring.gsub(text,'.',tab)) end return export 0jnx6wqhc4tfjlgljhzgap0gusg350f মডিউল:xcv-translit 828 168897 510449 2026-06-07T12:48:27Z RedminBot 9553 [[en:Module:xcv-translit]] থেকে আনা হলো 510449 Scribunto text/plain local u = mw.ustring.char local ACUTE = u(0x0301) local MACRON = u(0x0304) local DOTABOVE = u(0x0307) local DIAER = u(0x0308) local CARON = u(0x030C) local str_gsub, ugsub = string.gsub, mw.ustring.gsub local unpack = unpack or table.unpack -- Lua 5.2 compatibility local UTF8char = '[\1-\127\194-\244][\128-\191]*' local export = {} local tab = { ["А"]='A', ["а"]='a', ["Б"]='B', ["б"]='b', ["В"]='W', ["в"]='w', ["Г"]='G', ["г"]='g', ["Д"]='D', ["д"]='d', ["Е"]='Je', ["е"]='je', ["Ё"]='Jo', ["ё"]='jo', ["Ж"]='Ž', ["ж"]='ž', ["З"]='Z', ["з"]='z', ["І"]='Ï', ["і"]='ï', ["И"]='I', ["и"]='i', ["Й"]='J', ["й"]='j', ["К"]='K', ["к"]='k', ["Л"]='L', ["л"]='l', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["О"]='O', ["о"]='o', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Ф"]='F', ["ф"]='f', ["Х"]='Q', ["х"]='q', ["Ц"]='C', ["ц"]='c', ["Ч"]='Č', ["ч"]='č', ["Ш"]='Š', ["ш"]='š', ["Щ"]='Ś', ["щ"]='ś', ["Ъ"]='ʺ', ["ъ"]='ʺ', ["Ы"]='Y', ["ы"]='y', ["Ь"]='ʹ', ["ь"]='ʹ', ["Э"]='E', ["э"]='e', ["Ю"]='Ju', ["ю"]='ju', ["Я"]='ja', ["я"]='ja', ["Ѣ"]='Ě', ["ѣ"]='ě', } local other = { { 'Аа', 'Ā' }, { 'аа', 'ā' }, --long "а" { 'Ее', 'Jē'}, { 'ее', 'jē'}, --long "е" { 'Ии', 'Ī' }, { 'ии', 'ī' }, --long "и" { 'Оо', 'Ō' }, { 'оо', 'ō' }, --long "о" { 'Уу', 'Ū' }, { 'уу', 'ū' }, --long "у" { 'Ээ', 'Ē' }, { 'ээ', 'ē' }, --long "э" { 'Ъ%-', '%-' }, { 'ъ%-', '%-' }, --final "ъ" { 'Ъ ', ' ' }, { 'ъ ', ' ' }, --final "ъ" { 'Ъ$', '' }, { 'ъ$', '' }, --final "ъ" { '([БВГДЖЗЙКЛМНПРСТФХЦЧШЩбвгджзйклмнпрстфхцчшщ])Е', '%1E'}, --post-consonantal E { '([БВГДЖЗЙКЛМНПРСТФХЦЧШЩбвгджзйклмнпрстфхцчшщ])е', '%1e'}, --post-consonantal e { '([БВГДЖЗЙКЛМНПРСТФХЦЧШЩбвгджзйклмнпрстфхцчшщ])Ее', '%1Ē'}, --post-consonantal long E { '([БВГДЖЗЙКЛМНПРСТФХЦЧШЩбвгджзйклмнпрстфхцчшщ])ее', '%1ē'}, --post-consonantal long e } function export.tr(text, lang, sc) for i, replacement in ipairs(other) do text = str_gsub(text, unpack(replacement)) end return (str_gsub(text, UTF8char, tab)) end return export h6c46gv4zj2t1aqtn5gf2zeamlbxtf9 মডিউল:xdq-translit 828 168898 510450 2026-06-07T12:48:27Z RedminBot 9553 [[en:Module:xdq-translit]] থেকে আনা হলো 510450 Scribunto text/plain local export = {} local m_str_utils = require("Module:string utilities") local gsub = m_str_utils.gsub local sub = m_str_utils.sub local upper = m_str_utils.upper local lower = m_str_utils.lower local len = m_str_utils.len local letters = { ["м"] = "m", ["н"] = "n", ["б"] = "b", ["д"] = "d", ["г"] = "g", ["п"] = "p", ["т"] = "t", ["к"] = "k", ["ҡ"] = "q", ["ъ"] = "ʼ", ["ц"] = "c", ["ч"] = "č", ["в"] = "v", ["з"] = "z", ["ж"] = "ž", ["ғ"] = "ɣ", ["с"] = "s", ["ш"] = "š", ["ҳ"] = "x", ["х"] = "χ", ["ь"] = "h", ["р"] = "r", ["л"] = "l", ["й"] = "y", ["и"] = "i", ["у"] = "u", ["е"] = "e", ["а"] = "a", ["о"] = "o", ["я"] = "æ", -- Ejectives ["пь"] = "ṗ", ["ть"] = "ṭ", ["кь"] = "ḳ", ["ҡь"] = "q̇", ["ць"] = "c̣", ["чь"] = "č̣", -- Dialectal letters ["гӏ"] = "ʡ", ["хӏ"] = "ħ", } -- Generate upper-case and title-case variants local mappings = {} for k, v in pairs(letters) do mappings[k] = v mappings[upper(k)] = upper(v) if len(k) == 2 then mappings[gsub(k, "^.", upper)] = gsub(v, "^.", upper) end end function export.tr(text, lang, sc) local result = {} local i = 1 while i <= len(text) do local one = sub(text, i, i) local two = one .. sub(text, i + 1, i + 1) local mapped = one if two ~= one and mappings[two] then mapped = mappings[two] i = i + 1 -- Skip next character if digraph matched elseif mappings[one] then mapped = mappings[one] end table.insert(result, mapped) i = i + 1 end return table.concat(result) end return export 94sf5p6ly4c1xd66qnnrribk1jrotum মডিউল:xis-Orya-translit 828 168899 510451 2026-06-07T12:48:28Z RedminBot 9553 [[en:Module:xis-Orya-translit]] থেকে আনা হলো 510451 Scribunto text/plain local export = {} local consonants = { --common ["କ"]="k", ["ଖ"]="kh", ["ଗ"]="g", ["ଘ"]="gh", ["ଙ"]="ṅ", ["ଚ"]="c", ["ଛ"]="ch", ["ଜ"]="j", ["ଝ"]="jh", ["ଞ"]="ñ", ["ଟ"]="ṭ", ["ଠ"]="ṭh", ["ଡ"]="ḍ", ["ଢ"]="ḍh", ["ଣ"]="ṇ", ["ତ"]="t", ["ଥ"]="th", ["ଦ"]="d", ["ଧ"]="dh", ["ନ"]="n", ["ପ"]="p", ["ଫ"]="ph", ["ବ"]="b", ["ଭ"]="bh", ["ମ"]="m", ["ଯ"]="j", ["ୟ"]="y", ["ର"]="r", ["ଲ"]="l", ["ଳ"]="ḷ", ["ଵ"]="v", ["ୱ"]="w", ["ଶ"]="ś", ["ଷ"]="ṣ", ["ସ"]="s", ["ହ"]="h", --nuktas ["କ଼"]="q", ["ଖ଼"]="x", ["ଗ଼"]="ġ", ["ଜ଼"]="z", ["ଝ଼"]="ź", ["ଡ଼"]="ṛ", ["ଢ଼"]="ṛh", ["ଫ଼"]="f", } local diacritics = { ["ା"]="ā", ["ି"]="i", ["ୀ"]="ī", ["ୁ"]="u", ["ୂ"]="ū", ["ୃ"]="ru", ["ୄ"]="rū", ["ୢ"]="lu", ["ୣ"]="lū", ["େ"]="e", ["ୈ"]="ai", ["ୖ"]="ai", ["ୋ"]="o", ["ୌ"]="au", ["ୗ"]="au", ["୍"]="", } local tt = { -- vowels ["ଅ"]="a", ["ଆ"]="ā", ["ଇ"]="i", ["ଈ"]="ī", ["ଉ"]="u", ["ଊ"]="ū", ["ଋ"]="ru", ["ୠ"]="rū", ["ଌ"]="lu", ["ୡ"]="lū", ["ଏ"]="e", ["ଐ"]="ai", ["ଓ"]="o", ["ଔ"]="au", -- chandrabindu ["ଁ"]="m̐", --until a better method is found -- anusvara ["ଂ"]="ṃ", --until a better method is found -- visarga ["ଃ"]="ḥ", -- avagraha ["ଽ"]="’", --numerals ["୦"]="0", ["୧"]="1", ["୨"]="2", ["୩"]="3", ["୪"]="4", ["୫"]="5", ["୬"]="6", ["୭"]="7", ["୮"]="8", ["୯"]="9", ["୲"]="¼", ["୳"]="½", ["୴"]="¾", ["୵"]="¹⁄₁₆", ["୶"]="⅛", ["୷"]="³⁄₁₆", --punctuation ["।"]=".", --danda } function export.tr(text, lang, sc) text = mw.ustring.gsub( text, "([କଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଵଭମଯୟରଲଳୱଶଷସହ]଼?)".. "([ାିୀୁୂୃୄେୈୖୋୌୗ୍ୢୣ]?)", function(c, d) if not consonants[c] then return c end if d == "" then return consonants[c] .. "a" else return consonants[c] .. diacritics[d] end end) text = mw.ustring.gsub(text, ".", tt) return text end return export 6bq9ek1z2ahlhqdf2qzo4usaww85mcf মডিউল:xsr-Deva-translit 828 168900 510452 2026-06-07T12:48:28Z RedminBot 9553 [[en:Module:xsr-Deva-translit]] থেকে আনা হলো 510452 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local match = mw.ustring.match local conv = { -- consonants ['क'] = 'k', ['ख'] = 'kh', ['ग'] = 'g', ['ङ'] = 'ng', ['च'] = 'ts', ['छ'] = 'tsh', ['ज'] = 'dz', ['ञ'] = 'ny', ['ट'] = 'ṭ', ['ठ'] = 'ṭh', ['ड'] = 'ḍ', ['त'] = 't', ['थ'] = 'th', ['द'] = 'd', ['न'] = 'n', ['प'] = 'p', ['फ'] = 'ph', ['ब'] = 'b', ['म'] = 'm', ['य'] = 'y', ['र'] = 'r', ['ल'] = 'l', ['व'] = 'w', ['ळ'] = 'ḷ', ['श'] = 'sh', ['स'] = 's', ['ह'] = 'h', ['श़'] = 'zh', ['स़'] = 'z', ['ॽ'] = "'", ['च़'] = 'c', ['छ़'] = 'ch', -- ['घ'] = 'gh', ['झ'] = 'dzh', ['ढ'] = 'ḍh', ['ण'] = 'ṇ', ['ध'] = 'dh', ['भ'] = 'bh', ['ष'] = 'ṣ', ['क़'] = 'q', ['ख़'] = 'x', ['ग़'] = 'ġ', ['ऴ'] = 'ḻ', ['ज़'] = 'z', ['झ़'] = 'ž', ['ड़'] = 'ṛ', ['ढ़'] = 'ṛh', ['फ़'] = 'f', ['थ़'] = 'θ',['द़'] = 'ð', ['ऩ'] = 'ṉ', ['ऱ'] = 'ṟ', ['व़'] = 'V', ['ॹ'] = 'ž', -- vowel diacritics ['ि'] = 'i', ['ु'] = 'u', ['े'] = 'e', ['ो'] = 'o', ['ा'] = 'ā', ['ी'] = 'ī', ['ू'] = 'ū', ['ृ'] = 'r̥', ['ॄ'] = 'r̥̄', ['ॢ'] = 'l̥', ['ॣ'] = 'l̥̄', ['ै'] = 'ai', ['ौ'] = 'au', ['ॉ'] = 'ŏ', ['ॅ'] = 'ĕ', -- vowel signs ['अ'] = 'a', ['इ'] = 'i', ['उ'] = 'u', ['ए'] = 'e', ['ओ'] = 'o', ['आ'] = 'ā', ['ई'] = 'ī', ['ऊ'] = 'ū', ['ऋ'] = 'r̥', ['ॠ'] = 'r̥̄', ['ऌ'] = 'l̥', ['ॡ'] = 'l̥̄', ['ऐ'] = 'ai', ['औ'] = 'au', ['ऑ'] = 'ŏ', ['ॲ'] = 'ĕ', ['ऍ'] = 'ĕ', -- chandrabindu ['ँ'] = '̃', -- anusvara ['ं'] = '̃', -- visarga ['ः'] = 'ḥ', -- virama ['्'] = '', -- numerals ['०'] = '0', ['१'] = '1', ['२'] = '2', ['३'] = '3', ['४'] = '4', ['५'] = '5', ['६'] = '6', ['७'] = '7', ['८'] = '8', ['९'] = '9', -- punctuation ['।'] = '.', -- danda ['॥'] = '.', -- double danda ['+'] = '', -- compound separator -- abbreviation sign ['॰'] = '.', } local perm_cl = { ['ज्ञ'] = true, } local all_cons, special_cons = 'कखगघङचछजझञटठडढणतथदधनपफबभमयरलवसशषह', 'कखगघचछजझटठडढणतथदधनपफबभमयरलवशषसह' local vowel, vowel_sign = 'aिुृेोाीूैौॉॅॆॊॄॢॣ', 'अइउएओआईऊऋॠॡऌऐऔऑऍ' local function rev_string(text) local result, length = {}, mw.ustring.len(text) for i = length, 1, -1 do table.insert(result, mw.ustring.sub(text, i, i)) end return table.concat(result) end function export.tr(text, lang, sc) text = gsub(text, '([' .. all_cons .. ']़?)([' .. vowel .. '्]?)', function(c, d) return c .. (d == "" and 'a' or d) end) for word in mw.ustring.gmatch(text, "[ऀ-ॿa]+") do local orig_word = word word = rev_string(word) word = gsub(word, '^a(़?)([' .. all_cons .. '])(.)(.?)', function(opt, first, second, third) return (((match(first, '[' .. special_cons .. ']') and match(second, 'ं') or match(first, '[' .. special_cons .. ']') and match(second, '्') and not perm_cl[first..second..third]) or match(first .. second, 'य[aिुृेोाीूैौॉॅॆॊआईउऊइएऐओऔ]') or match(first .. second, 'ह[अaिुृेोाीूैौॉॅॆॊआईउऊइएऐओऔ]')) and 'a' or "") .. opt .. first .. second .. third end) word = gsub(word, '(.?)ं(.)', function(succ, prev) return succ .. (succ..prev == "" and "्म" or (succ == "" and match(prev, '[' .. vowel .. ']') and "̃" or nasal_assim[succ] or "ṃ")) .. prev end) local escaped_orig_word = gsub(orig_word, "%+", "") text = gsub(text, orig_word, rev_string(word)) text = gsub(text, "च्य", "c") text = gsub(text, "छ्य", "ch") text = gsub(text, "ज्य", "j") text = gsub(text, "झ्य", "jh") text = gsub(text, "ङ्य", "ny") text = gsub(text, "श्य", "zh") end text = gsub(text, '.़?', conv) text = gsub(text, 'a([iu])̃', 'a͠%1') text = gsub(text, "[<>]", "") return mw.ustring.toNFC(text) end return export p09zggo6pb3j8i9dg6dwjuag94mvjpj মডিউল:xsr-Deva-translit/testcases 828 168901 510453 2026-06-07T12:48:29Z RedminBot 9553 [[en:Module:xsr-Deva-translit/testcases]] থেকে আনা হলো 510453 Scribunto text/plain -- Unit tests for [[Module:xsr-Deva-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local xsr_translit = require('Module:xsr-Deva-translit') function tests:do_test_translit(deva, roman, comment) self:equals('<span class="Deva" lang="xsr">[[' .. mw.ustring.gsub(deva, "%+", "") .. '#Sherpa|' .. mw.ustring.gsub(deva, "%+", "") .. ']]</span>', xsr_translit.tr(deva, 'xsr', 'Deva'), roman, { comment = comment }) end function tests:test_translit_sherpa() self:do_test_translit('ख्योरो', 'khyoro') self:do_test_translit('अच्यू', 'acū') end return tests jmsla09i9p2t3ggvqm3m7iksn71dhiv মডিউল:yah-translit 828 168902 510454 2026-06-07T12:48:29Z RedminBot 9553 [[en:Module:yah-translit]] থেকে আনা হলো 510454 Scribunto text/plain local export = {} local tt = { ["а"] = "a", ["А"] = "A", ["ā"] = "ā", ["Ā"] = "Ā", ["б"] = "b", ["Б"] = "B", ["в"] = "v", ["В"] = "V", ["г"] = "g", ["Г"] = "G", ["ѓ"] = "ǵ", ["Ѓ"] = "Ǵ", ["ғ"] = "ɣ", ["Ғ"] = "Ɣ", ["д"] = "d", ["Д"] = "D", ["е"] = "e", ["Е"] = "E", ["ә"] = "ə", ["Ә"] = "Ə", ["ж"] = "ž", ["Ж"] = "Ž", ["з"] = "z", ["З"] = "Z", ["и"] = "i", ["И"] = "I", ["й"] = "y", ["Й"] = "Y", ["к"] = "k", ["К"] = "K", ["ќ"] = "ḱ", ["Ќ"] = "Ḱ", ["қ"] = "q", ["Қ"] = "Q", ["л"] = "l", ["Л"] = "L", ["м"] = "m", ["М"] = "M", ["н"] = "n", ["Н"] = "N", ["о"] = "o", ["О"] = "O", ["п"] = "p", ["П"] = "P", ["р"] = "r", ["Р"] = "R", ["с"] = "s", ["С"] = "S", ["т"] = "t", ["Т"] = "T", ["у"] = "u", ["У"] = "U", ["ф"] = "f", ["Ф"] = "F", ["х"] = "x", ["Х"] = "X", ["ҳ"] = "h", ["Ҳ"] = "H", ["ц"] = "c", ["Ц"] = "C", ["ч"] = "č", ["Ч"] = "Č", ["ҷ"] = "ǰ", ["Ҷ"] = "J̌", ["ш"] = "š", ["Ш"] = "Š", ["э"] = "e", ["Э"] = "E", } local mapping = { ["а̄"] = "ā", ["А̄"] = "Ā", ["в̌"] = "w", ["В̌"] = "W", ["д̌"] = "δ", ["Д̌"] = "Δ", ["ѓ"] = "ǵ", ["Ѓ"] = "Ǵ", ["й"] = "y", ["Й"] = "Y", ["ќ"] = "ḱ", ["Ќ"] = "Ḱ", ["т̌"] = "θ", ["Т̌"] = "Θ", } function export.tr(text, lang, sc) if sc == "Latn" then return nil end for char, translit in pairs(mapping) do text = mw.ustring.gsub(text, char, translit) end text = mw.ustring.gsub(text, '.', tt) return text end return export cgu08aouzz7yy0ac9bnhciy19qlz7p1 মডিউল:ybh-translit/testcases 828 168903 510455 2026-06-07T12:48:30Z RedminBot 9553 [[en:Module:ybh-translit/testcases]] থেকে আনা হলো 510455 Scribunto text/plain -- Unit tests for [[Module:ybh-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ybh_translit = require('Module:ybh-translit')-- Unit tests for [[Module:ybh-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ybh_translit = require('Module:ybh-translit') function tests:do_test_translit(deva, roman, comment) self:equals('<span class="Deva" lang="ybh">[[' .. mw.ustring.gsub(deva, "%+", "") .. '#Yakkha|' .. mw.ustring.gsub(deva, "%+", "") .. ']]</span>', ybh_translit.tr(deva, 'ybh', 'Deva'), roman, { comment = comment }) end function tests:test_translit_yakkha() self:do_test_translit('छिम्योक', "chimyoka") end return tests pwrqfza155uzul0cp755mlg0ibjmqpv মডিউল:ybi-translit/testcases 828 168904 510456 2026-06-07T12:48:30Z RedminBot 9553 [[en:Module:ybi-translit/testcases]] থেকে আনা হলো 510456 Scribunto text/plain -- Unit tests for [[Module:ybi-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ybi_translit = require('Module:ybi-translit')-- Unit tests for [[Module:ybi-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local ybi_translit = require('Module:ybi-translit') function tests:do_test_translit(deva, roman, comment) self:equals('<span class="Deva" lang="ybi">[[' .. mw.ustring.gsub(deva, "%+", "") .. '#Yamphu|' .. mw.ustring.gsub(deva, "%+", "") .. ']]</span>', ybi_translit.tr(deva, 'ybi', 'Deva'), roman, { comment = comment }) end function tests:test_translit_yamphu() self:do_test_translit('लेॽआप्मे़', "le'āpmê") self:do_test_translit('असे़ॽए़', "asê'ê") end return tests 6l8iy7yi9b3y0ez7w747tbw4yzik2x1 মডিউল:ykh-translit 828 168905 510457 2026-06-07T12:48:31Z RedminBot 9553 [[en:Module:ykh-translit]] থেকে আনা হলো 510457 Scribunto text/plain local export = {} local tt = { ["А"]='A', ["а"]='a', ["Б"]='B', ["б"]='b', ["В"]='V', ["в"]='v', ["Г"]='G', ["г"]='g', ["Д"]='D', ["д"]='d', ["Е"]='E', ["е"]='e', ["Ё"]='Yo', ["ё"]='yo', ["Ж"]='Ž', ["ж"]='ž', ["З"]='Z', ["з"]='z', ["И"]='I', ["и"]='i', ["Й"]='J', ["й"]='j', ["К"]='K', ["к"]='k', ["Л"]='L', ["л"]='l', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["О"]='O', ["о"]='o', ["Ө"]='Ö', ["ө"]='ö', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Ү"]='Ü', ["ү"]='ü', ["Ф"]='F', ["ф"]='f', ["Х"]='X', ["х"]='x', ["Ц"]='Ts', ["ц"]='ts', ["Ч"]='Č', ["ч"]='č', ["Ш"]='Š', ["ш"]='š', ["Щ"]='Šč', ["щ"]='Šč', ['Ъ']='ʺ', ['ъ']='ʺ', ["Ы"]='Y', ["ы"]='y', ["Ь"]="’", ["ь"]="’", ["Э"]='E', ["э"]='e', ["Ю"]='Ju', ["ю"]='ju', ["Я"]='Ja', ["я"]='ja', }; function export.tr(text, lang, sc) return (mw.ustring.gsub(text, '.', tt)) end return export lz0c2scwyy2dkwm3v4gtolo0sdrcb9x মডিউল:yrk-for-translit 828 168906 510458 2026-06-07T12:48:32Z RedminBot 9553 [[en:Module:yrk-for-translit]] থেকে আনা হলো 510458 Scribunto text/plain local export = {} local tab = { ["А"]="A", ["Б"]="B", ["В"]="W", ["Г"]="G", ["Д"]="D", ["Е"]="Ye", ["Ё"]="Yo", ["Ж"]="Ž", ["З"]="Z", ["И"]="Yi", ["Й"]="Y", ["Ӑ"]="Ă", ["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["О"]="O", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["У"]="U", ["Ф"]="F", ["Ӣ"]="Yī", ["Х"]="X", ["Ц"]="C", ["Ч"]="Ć", ["Ш"]="Š", ["Щ"]="Ś", ["Ъ"]="ʺ", ["Ы"]="I", ["Ь"]="ʹ", ["Э"]="E", ["Ю"]="Yu", ["Я"]="Ya", ["Ӈ"]="Ŋ", ["Ԓ"]="Ł", ['а']='a', ['б']='b', ['в']='w', ['г']='g', ['д']='d', ['е']='ye', ['ё']='yo', ['ж']='ž', ['з']='z', ['и']='yi', ['й']='y', ["ӑ"]="ă", ["Ӭ"]="Ä", ['к']='k', ['л']='l', ['м']='m', ['н']='n', ['о']='o', ['п']='p', ['р']='r', ['с']='s', ['т']='t', ['у']='u', ['ф']='f', ["ӣ"]="yī", ['х']='x', ['ц']='c', ['ч']='ć', ['ш']='š', ['щ']='ś', ['ъ']='ʺ', ['ы']='i', ['ь']='ʹ', ['э']='e', ['ю']='yu', ['я']='ya', ["ӈ"]="ŋ", ["ԓ"]="ł", ["ˮ"]="q", ["ʼ"]="h", ['Ӯ']='Ū', ['ӯ']='ū', ["ӭ"]="ä", } function export.tr(text, lang, sc) return (mw.ustring.gsub(text, '.' ,tab)) end return export paxpoju06o7ty1hhq26e30assydyp7f মডিউল:yrk-tun-translit 828 168907 510459 2026-06-07T12:48:32Z RedminBot 9553 [[en:Module:yrk-tun-translit]] থেকে আনা হলো 510459 Scribunto text/plain local export = {} local tab = { ["А"]="A", ["Б"]="B", ["В"]="W", ["Г"]="G", ["Д"]="D", ["Е"]="Ye", ["Ё"]="Yo", ["Ж"]="Ž", ["З"]="Z", ["И"]="Yi", ["Й"]="Y", ["Ӑ"]="Ă", ["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["О"]="O", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["У"]="U", ["Ф"]="F", ["Ӣ"]="Yī", ["Х"]="X", ["Ц"]="C", ["Ч"]="Ć", ["Ш"]="Š", ["Щ"]="Ś", ["Ъ"]="ʺ", ["Ы"]="I", ["Ь"]="ʹ", ["Э"]="E", ["Ю"]="Yu", ["Я"]="Ya", ["Ӈ"]="Ŋ", ['а']='a', ['б']='b', ['в']='w', ['г']='g', ['д']='d', ['е']='ye', ['ё']='yo', ['ж']='ž', ['з']='z', ['и']='yi', ['й']='y', ["ӑ"]="ă", ['к']='k', ['л']='l', ['м']='m', ['н']='n', ['о']='o', ['п']='p', ['р']='r', ['с']='s', ['т']='t', ['у']='u', ['ф']='f', ["ӣ"]="yī", ['х']='x', ['ц']='c', ['ч']='ć', ['ш']='š', ['щ']='ś', ['ъ']='ʺ', ['ы']='i', ['ь']='ʹ', ['э']='e', ['ю']='yu', ['я']='ya', ["ӈ"]="ŋ", ["ˮ"]="q", ["ʼ"]="h", ['Ӯ']='Ū', ['ӯ']='ū', } function export.tr(text, lang, sc) text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])$", "%1°") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ]) ", "%1° ") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])[ˮʼ]$", "%1") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])[ˮʼ] ", "%1 ") return (mw.ustring.gsub(text, '.' ,tab)) end return export q1kv1lcd5uy44cw8g2rio41k8bpbjt3 মডিউল:ysr-translit 828 168908 510460 2026-06-07T12:48:33Z RedminBot 9553 [[en:Module:ysr-translit]] থেকে আনা হলো 510460 Scribunto text/plain local export = {} local u = mw.ustring.char local gsub = mw.ustring.gsub local RING = u(0x030A) local single_letter_replacements = { ["А"]='A', ["а"]='a', ["В"]='V', ["в"]='v', ["Е"]='E', ["е"]='e', ["Ё"]='Jo', ["ё"]='jo', ["Г"]='G', ["г"]='g', ["Ў"]='W',["ў"]='w', ["Ԝ"]='W',["ԝ"]='w', ["Ӷ"]='Ǧ',["ӷ"]='ǧ', ["И"]='I', ["и"]='i', ["Ӣ"]='Ī', ["ӣ"]='ī', ["Й"]='J', ["й"]='j', ["К"]='K', ["к"]='k', ["Л"]='L', ["л"]='l', ["Ӄ"]='Q', ["ӄ"]='q', ["М"]='M', ["м"]='m', ["Н"]='N', ["н"]='n', ["Ӈ"]='Ŋ', ["ӈ"]='ŋ', ["О"]='O', ["о"]='o', ["П"]='P', ["п"]='p', ["Р"]='R', ["р"]='r', ["С"]='S', ["с"]='s', ["Т"]='T', ["т"]='t', ["У"]='U', ["у"]='u', ["Х"]='H', ["х"]='h', ["Ч"]='Č', ["ч"]='č', ["Ӽ"]='X̌', ["ӽ"]='x̌',["Ы"]='Y', ["ы"]='y', ["Э"]='Ə', ["э"]='ə', ["Ю"]='Ju', ["ю"]='ju',["Я"]='Ja', ["я"]='ja', ['Ъ']='ʺ', ['ъ']='ʺ', -- NOT PRESENT IN THE ORIGINAL LATINISATION -- -- non-native letters ["Ж"]='Z', ["ж"]='z', ["З"]='Ž', ["з"]='ž', ["Ц"]='C', ["ц"]='c', ["Ш"]='Š', ["ш"]='š', ["Щ"]='Šč', ["щ"]='šč', ["Ь"]="’", ["ь"]="’",["Ф"]='F', ["ф"]='f', ["Б"]='B', ["б"]='ʙ',["Д"]='D', ["д"]='d', -- non-standard letters ["Ҕ"]='Γ', ["ҕ"]='γ', ["Ҥ"]='Ŋ', ["ҥ"]='ŋ', ["Ӄ"]='Q', ["ӄ"]='q', ["Ҕ"]='Ǧ', ["ҕ"]='ǧ', } function export.tr(text, lang, sc) text = gsub(text, ".", single_letter_replacements) text = gsub(text, "([ЙйЛлНн])ъ", "%1" .. RING) return text end return export fvuvo5mmpnxoy2jq1sf091w6xmhxdtv মডিউল:ysr-translit/testcases 828 168909 510461 2026-06-07T12:48:33Z RedminBot 9553 [[en:Module:ysr-translit/testcases]] থেকে আনা হলো 510461 Scribunto text/plain phoiac9h4m842xq45sp7s6u21eteeq1 মডিউল:zkt-translit 828 168910 510462 2026-06-07T12:48:34Z RedminBot 9553 [[en:Module:zkt-translit]] থেকে আনা হলো 510462 Scribunto text/plain local export = {} local data = mw.loadData("Module:zkt-translit/data") function export.tr(text, lang, sc) -- Remove text formatting. text = text:gsub("\244[\128-\191][\128-\191][\128-\191]", "") local trtab = {} i = 0 for char in mw.ustring.gmatch(text, ".") do i = i + 1 if char == "𘬀" and i > 1 then table.insert(trtab, trtab[i-1]) else table.insert(trtab, data[char] or "?") end end local check = table.concat(trtab) _, count = mw.ustring.gsub(check, "?", "") if count == mw.ustring.len(check) then return nil else return "*" .. table.concat(trtab, " ") end end return export sb1ro22i3p1hud8bcw1vfuwajgwgy73 মডিউল:zkt-translit/data 828 168911 510463 2026-06-07T12:48:34Z RedminBot 9553 [[en:Module:zkt-translit/data]] থেকে আনা হলো 510463 Scribunto text/plain return { ["𘬆"] = "tś", ["𘬐"] = "an", ["𘬓"] = "hur", ["𘬕"] = "jau", ["𘬗"] = "od", ["𘬘"] = "sỏ", ["𘬚"] = "in", ["𘬛"] = "iu", ["𘬜"] = "ei", ["𘬝"] = "mó", ["𘬞"] = "cau", ["𘬠"] = "iủ", ["𘬡"] = "ẻr", ["𘬢"] = "xỉ", ["𘬥"] = "ś", ["𘬨"] = "ts", ["𘬩"] = "tẻn", ["𘬭"] = "xu", ["𘬮"] = "di", ["𘬰"] = "kải", ["𘬱"] = "zải", ["𘬷"] = "kả", ["𘬾"] = "hor", ["𘬿"] = "nẻn", ["𘭁"] = "lỉ", ["𘭂"] = "ha", ["𘭅"] = "qa", ["𘭆"] = "mủ", ["𘭊"] = "xo", ["𘭋"] = "mỉ", ["𘭌"] = "uni", ["𘭍"] = "kẻ", ["𘭎"] = "kẻ", ["𘭏"] = "iáŋ", ["𘭑"] = "lu", ["𘭔"] = "tủ", ["𘭕"] = "eu", ["𘭖"] = "us", ["𘭗"] = "rí", ["𘭘"] = "w", ["𘭙"] = "oŋ", ["𘭚"] = "deu", ["𘭛"] = "ên", ["𘭜"] = "tir", ["𘭝"] = "hoŋ", ["𘭞"] = "ho", ["𘭢"] = "ii", ["𘭨"] = "y", ["𘭩"] = "ss", ["𘭪"] = "ra", ["𘭯"] = "tz", ["𘭱"] = "zủ", ["𘭲"] = "ó", ["𘭴"] = "yủ", ["𘭵"] = "gẻ", ["𘭶"] = "ud", ["𘭷"] = "uŋ", ["𘭸"] = "oi", ["𘭺"] = "e", ["𘭽"] = "ge", ["𘭾"] = "ï", ["𘭿"] = "i", ["𘮀"] = "dả", ["𘮄"] = "qú", ["𘮅"] = "al", ["𘮇"] = "ad", ["𘮈"] = "én", ["𘮉"] = "deu", ["𘮊"] = "cu", ["𘮋"] = "us", ["𘮏"] = "tź", ["𘮒"] = "úr", ["𘮗"] = "po", ["𘮘"] = "áŋ", ["𘮚"] = "fẻi", ["𘮛"] = "k", ["𘮠"] = "bun", ["𘮡"] = "iú", ["𘮢"] = "án", ["𘮦"] = "siỏ", ["𘮧"] = "p", ["𘮪"] = "pú", ["𘮫"] = "co", ["𘮯"] = "il", ["𘮰"] = "iŋ", ["𘮱"] = "gỏ", ["𘮲"] = "rỏ", ["𘮶"] = "hó", ["𘮽"] = "b", ["𘯀"] = "iaŋ", ["𘯁"] = "iảŋ", ["𘯆"] = "go", ["𘯌"] = "yỏ", ["𘯍"] = "yô", ["𘯎"] = "ón", ["𘯏"] = "qi", ["𘯐"] = "üan", ["𘯑"] = "dẻn", ["𘯖"] = "au", ["𘯗"] = "gu", ["𘯛"] = "qo", ["𘯜"] = "qó", ["𘯝"] = "bải", ["𘯞"] = "da", ["𘯟"] = "uh", ["𘯡"] = "êŋ", ["𘯢"] = "as", ["𘯣"] = "bú", ["𘯤"] = "rả", ["𘯥"] = "ku", ["𘯨"] = "úd", ["𘯩"] = "sh", ["𘯰"] = "iúŋ", ["𘯲"] = "car", ["𘯴"] = "am", ["𘯵"] = "ảm", ["𘯶"] = "o", ["𘯹"] = "zỏ", ["𘯺"] = "a", ["𘯻"] = "à", ["𘯽"] = "mú", ["𘯾"] = "śï", ["𘰁"] = "ủ", ["𘰂"] = "bu", ["𘰄"] = "ae", ["𘰆"] = "aŋ", ["𘰊"] = "tu", ["𘰍"] = "de", ["𘰎"] = "lí", ["𘰐"] = "lu", ["𘰒"] = "aú", ["𘰓"] = "mú", ["𘰕"] = "ń", ["𘰗"] = "mu", ["𘰘"] = "bi", ["𘰙"] = "ü", ["𘰜"] = "lỏ", ["𘰝"] = "ta", ["𘰞"] = "jỉn", ["𘰡"] = "kú", ["𘰢"] = "rẻŋ", ["𘰣"] = "ri", ["𘰥"] = "ur", ["𘰦"] = "du", ["𘰨"] = "bả", ["𘰩"] = "pu", ["𘰪"] = "fu", ["𘰫"] = "û", ["𘰬"] = "heu", ["𘰭"] = "n", ["𘰮"] = "ô", ["𘰱"] = "cẻn", ["𘰴"] = "d", ["𘰵"] = "mû", ["𘰷"] = "s", ["𘰹"] = "qu", ["𘰺"] = "t", ["𘰻"] = "dû", ["𘰼"] = "ô", ["𘰽"] = "or", ["𘱀"] = "em", ["𘱁"] = "z", ["𘱂"] = "hur", ["𘱃"] = "dur", ["𘱄"] = "l", ["𘱆"] = "ui", ["𘱇"] = "ui", ["𘱊"] = "ŋ", ["𘱏"] = "xỉ", ["𘱑"] = "êm", ["𘱓"] = "ie", ["𘱔"] = "oŋ", ["𘱕"] = "ün", ["𘱖"] = "ź", ["𘱗"] = "neu", ["𘱘"] = "nai", ["𘱙"] = "qatủn", ["𘱚"] = "g", ["𘱛"] = "ia", ["𘱞"] = "j", ["𘱢"] = "i'i", ["𘱤"] = "i", ["𘱥"] = "x", ["𘱦"] = "er", ["𘱪"] = "ud", ["𘱫"] = "uŋ", ["𘱭"] = "oi", ["𘱮"] = "e", ["𘱯"] = "ge", ["𘱲"] = "î", ["𘱳"] = "ï", ["𘱴"] = "dź", ["𘱵"] = "ordu", ["𘱶"] = "úŋ", ["𘱷"] = "poŋ", ["𘱸"] = "én", ["𘱹"] = "iau", ["𘱿"] = "qid", ["𘲀"] = "ul", ["𘲁"] = "źuŋ", ["𘲆"] = "û", ["𘲈"] = "tai", ["𘲉"] = "ca", ["𘲋"] = "oh", ["𘲌"] = "dau", ["𘲐"] = "ai", ["𘲑"] = "ar", ["𘲓"] = "ió", ["𘲕"] = "an", ["𘲘"] = "xa", ["𘲚"] = "ú", ["𘲜"] = "m", ["𘲡"] = "dỏ", ["𘲢"] = "rẻn", ["𘲣"] = "iû", ["𘲤"] = "na", ["𘲦"] = "en", ["𘲪"] = "xua", ["𘲫"] = "ún", ["𘲭"] = "giủ", ["𘲮"] = "ju", ["𘲯"] = "ju", ["𘲰"] = "ju", ["𘲱"] = "ja", ["𘲲"] = "hu", ["𘲳"] = "ji", ["𘲴"] = "ji", ["𘲵"] = "on", ["𘲻"] = "giỏ", ["𘲼"] = "au", ["𘲽"] = "c", ["𘲾"] = "ki", ["𘳃"] = "to", ["𘳄"] = "da", ["𘳇"] = "do", ["𘳈"] = "doro", ["𘳊"] = "da", ["𘳍"] = "iá", ["𘳔"] = "bú", ["𘳕"] = "un", } 4e5x7e6pld30denf1tqoh6lh4s2r37u মডিউল:zle-ort-Arab-translit 828 168912 510464 2026-06-07T12:48:35Z RedminBot 9553 [[en:Module:zle-ort-Arab-translit]] থেকে আনা হলো 510464 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local match = mw.ustring.match local sub = mw.ustring.sub local U = mw.ustring.char -- Arabic diacritics local fatha = U(0x64E) local damma = U(0x64F) local kasra = U(0x650) local shadda = U(0x651) local sukun = U(0x652) local sup_alif = U(0x670) local sub_alif = U(0x656) local vowels = fatha..sup_alif..kasra..sub_alif..damma -- Arabic and Arabic-Extended A local range = string.format("%s-%s%s-%s", U(0x600), U(0x6FF), U(0x8A0), U(0x8FF)) -- Latin diacritics local dot_above = U(0x0307) local replacements = { -- vowels ["آ"] = "ã", [sup_alif] = "ȧ", [sub_alif] = "i", [fatha] = "e", [kasra] = "i", [damma] = "u", [sukun] = "", -- consonants ["ب"] = "b", ["و"] = "v", ["ه"] = "h", ["غ"] = "g", ["د"] = "d", ["ج"] = "dž", ["ࢮ"] = "dzʹ", ["ژ"] = "ž", ["ض"] = "z", ["ظ"] = "ẓ", ["ز"] = "zʹ", ["ذ"] = "ẓʹ", ["ي"] = "j", ["ى"] = "j", ["ق"] = "k", ["ك"] = "kʹ", ["ل"] = "l", ["م"] = "m", ["ن"] = "n", ["پ"] = "p", ["ر"] = "r", ["ص"] = "s", ["ث"] = "sʹ", ["س"] = "ṣʹ", ["ڛ"] = "s̱ʹ", ["ط"] = "t", ["ت"] = "tʹ", ["ف"] = "f", ["ح"] = "x", ["خ"] = "x̣", ["ࢯ"] = "c", ["چ"] = "č", ["ش"] = "š", ["ا"] = "", ["ع"] = "ʽ", ["ء"] = "ʼ", ["ـ"] = "", ["ڬ"] = "g̣", ["ڭ"] = "nʹ", ["ة"] = "ṭʹ", } local long_vowels = { [fatha.."ا"] = "a", [fatha.."و"] = "o", [damma.."و"] = "ū", [fatha.."ي"] = "ā", [fatha.."ى"] = "ā", [kasra.."ي"] = "ī", [kasra.."ى"] = "ī", [sup_alif.."ي"] = "ā"..dot_above, [sup_alif.."ى"] = "ā"..dot_above, [sub_alif.."ي"] = "ī"..dot_above, [sub_alif.."ى"] = "ī"..dot_above, } function export.tr(text, lang, sc) -- Reorder the shadda before other harakat. text = gsub(text, "(["..vowels.."])"..shadda, shadda.."%1") -- The only three-character replacement, damma + waw + alif, is handled separately. text = gsub(text, damma.."وا", damma.."و"..dot_above) -- Convert long vowels. local match_diacritic = "["..vowels..sukun.."]" text = gsub(text, "(["..vowels.."][اويى])()", function (from, pos) -- Only convert if the long vowel letter has no diacritic on top of it. if not match(sub(text, pos, pos), match_diacritic) then return long_vowels[from] end end) -- Initial alif + fatha transcribed as [a]. text = gsub(text, "%f["..range.."aoūāī"..dot_above.."]ا"..fatha, "a") -- Preceding alif palatises [l], [m] and [n]. text = gsub(text, "ا([لمن])", "%1ʹ") text = gsub(text, ".", replacements) text = gsub(text, "(.)"..shadda, "%1%1") return text end return export 26z8q8zxw3g9k3oezyz42slr4e8ms3z মডিউল:zle-ort-Arab-translit/testcases 828 168913 510465 2026-06-07T12:48:35Z RedminBot 9553 [[en:Module:zle-ort-Arab-translit/testcases]] থেকে আনা হলো 510465 Scribunto text/plain return require("Module:transliteration module testcases") { module = 'zle-ort-Arab-translit', examples = { {"اِاميَا", "imʹja"}, {"بَوالْشِيْ", "bolʹšij"}, {"دَاژْجْ", "daždž"}, {"دٰشْجْ", "dȧšdž"}, {"دَشْجْ", "dešdž"}, {"دَوشْجْ", "došdž"}, {"دَژْچَمْ", "dežčem"}, {"دَوژْجِ", "doždži"}, {"صَابَاقَا", "sabaka"}, {"صَابَاقَايُ", "sabakaju"}, {"صَابَاقَيُوا", "sabakejū̇"}, {"صَابَاكِ", "sabakʹi"}, {"چُولُووَقْ", "čūlūvek"}, {"چَولُووَقْ", "čolūvek"}, {"اَودَّاوَاطِ", "oddavati"}, {"نَوِنِّييْ", "nevinnīj"}, {"صِينْ", "sīn"}, {"صِنْ", "sin"}, {"نَاوُقَا", "navuka"}, {"نَااُوقَا", "naūka"}, {"نَااُقَا", "nauka"}, {"اُبَوهِيْ", "ubohij"}, {"وُبَوهِيْ", "vubohij"}, {"پَانْ", "pan"}, {"اِضْمَااَلَا", "izmaela"}, {"اِضْمَاءَلَا", "izmaʼela"}, {"اَبَو", "abo"}, {"اَيْ", "aj"}, {"خْرِبَتْ", "x̣ribetʹ"}, {"ذْ", "ẓʹ"}, {"ڛْ", "s̱ʹ"}, {"سْ", "ṣʹ"}, {"ظْ", "ẓ"}, {"بٰ", "bȧ"}, {"آبْ", "ãb"}, {"عَابْ", "ʽab"}, {"عَوبْ", "ʽob"}, {"عِبْ", "ʽib"}, {"عُبْ", "ʽub"}, {"عُوبْ", "ʽūb"}, {"بٰي", "bā̇"}, {"بٖى", "bī̇"}, {"اِضْرَاءَلْ", "izraʼel"}, {"اِظْرٰءَلَووِحْ", "iẓrȧʼelovix"}, {"وُعْلَاصْ", "vuʽlas"}, {"عَاهَونْ", "ʽahon"}, {"عَنْهَلْ", "ʽenhel"}, }, sc = 'Arab', lang = 'zle-ort', nolink = true, } 9p204f1v82vkphmyepr71hg1l4o27ue মডিউল:zle-ort-translit/testcases 828 168914 510466 2026-06-07T12:48:35Z RedminBot 9553 [[en:Module:zle-ort-translit/testcases]] থেকে আনা হলো 510466 Scribunto text/plain return require("Module:transliteration module testcases")( require("Module:zle-ort-translit").tr, { { "глазъ", "hlaz" }, { "ґрунтъ", "grunt" }, { "кгрунтъ", "grunt" }, { "дѧ́кчиненье", "djákčinenʹje" }, { "объѣ́здъ", "obʺjě́zd" }, { "обезъꙗ́на", "obezʺjána" }, { "ѣда", "jěda" }, { "іа", "ja" }, { "аѵ", "av" }, { "звѣрѧ", "zvěrja" }, { "хвоꙗ", "xvoja" }, { "дѧкꙋю", "djakuju" }, { "хвойный", "xvojnyj" }, { "хвойныи", "xvojnyj" }, { "оу", "u" }, }, "Cyrs", "zle-ort" ) kkruh3nb061csp3jpx0o5ct4844lgg3 Islam 0 168915 510469 2026-06-07T12:59:05Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L479970-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510469 wikitext text/x-wiki {{লে|L479970}} qthaqinu2suv715suynqx3ry1f8urir 510479 510469 2026-06-07T13:01:18Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L36825-এর সাথে সংযোগ তৈরি করছি 510479 wikitext text/x-wiki {{লে|L479970}} {{লে|L36825}} 40tg0bk4uzs3k7rxvv1kc8vj21snxk9 510480 510479 2026-06-07T13:02:55Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L623528-এর সাথে সংযোগ তৈরি করছি 510480 wikitext text/x-wiki {{লে|L479970}} {{লে|L36825}} {{লে|L623528}} 0mu3yz9ge0moc8rz60a4dn3grvyrho9 اسلم 0 168916 510475 2026-06-07T13:00:36Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1142565-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510475 wikitext text/x-wiki {{লে|L1142565}} born4cfgr47fgizhtlnj4ar5181p0cn رضي ٱلله عنه 0 168917 510483 2026-06-07T13:03:32Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1567603-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510483 wikitext text/x-wiki {{লে|L1567603}} b0cv4yrojay98x709bofixak83vtufv abara 0 168918 510486 2026-06-07T15:10:13Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L703791-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510486 wikitext text/x-wiki {{লে|L703791}} frznc7nhjh83q6k45n1u0rc4lptuciq 𒀀𒁇𒊏 0 168919 510487 2026-06-07T15:10:15Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L703791-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510487 wikitext text/x-wiki {{লে|L703791}} frznc7nhjh83q6k45n1u0rc4lptuciq يࣦ 0 168920 510488 2026-06-07T15:10:34Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1333370-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510488 wikitext text/x-wiki {{লে|L1333370}} c6du4eucbv8xbzvhrn7i76ra91q4w1r উএক্ষ 0 168921 510489 2026-06-07T15:30:32Z Redmin 6857 লেক্সিম লিংকার এক্সটেনশনের সাহায্যে উইকিউপাত্ত লেক্সিম L1187002-এর জন্য একটি নতুন ভুক্তি তৈরি করছি 510489 wikitext text/x-wiki {{লে|L1187002}} 2f6oqmc62thuaaphq5p3vbnqksmnxbd বিষয়শ্রেণী:বাংলা অনুবাদসহ পাতা 14 168922 510494 2026-06-07T18:09:34Z Redmin 6857 + 510494 wikitext text/x-wiki [[বিষয়শ্রেণী:অনুবাদসহ পাতা]] ocbk2qm0kj7e8l1bhqz9s4szoehf6k6