উইকিঅভিধান
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]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/09|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W09"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৯:০৪, ২৩ ফেব্রুয়ারি ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30119102-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-10</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W10"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/10|Translations]] are available.
'''Weekly highlight'''
* Wikipedia 25 [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments|Birthday mode]] is now live on Betawi, Breton, Chinese, Czech, Dutch, English, French, Gorontalo, Indonesian, Italian, Luxembourgish, Madurese, Sicilian, Spanish, Thai, and Vietnamese Wikipedias! This limited-time campaign feature celebrates 25 years of Wikipedia with a birthday mascot, Baby Globe. When turned on, Baby Globe is shown on [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments/article configuration|~2,500 articles]], waiting to be discovered by readers. Communities can choose to turn Birthday mode on by getting consensus from their community and asking an admin to enable the feature and customize it via [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments#Community Configuration Demo|community configuration]] on the local wiki.
'''Updates for editors'''
* [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Sub-referencing]], a new feature to re-use references with different details has been released to Swedish Wikipedia, Polish Wikipedia and [[:phab:T418209|a couple of other wikis]]. You can [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing#test|try the feature]] on these projects or on testwiki and [https://en.wikipedia.beta.wmcloud.org/wiki/Sub-referencing betawiki]. Learnings from the first pilot wiki German Wikipedia have been [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing/Learnings|published in a report]]. Reach out to the Wikimedia Deutschland team if you are [[:m:Talk:WMDE Technical Wishes/Sub-referencing#Pilot wikis|interested in becoming a pilot wiki]].
* [[mw:Special:MyLanguage/Help:Edit check#Paste check|Paste Check]] will become available at all Wikipedias this week. The feature prompts newcomers who are pasting text they are not likely to have written into VisualEditor to consider whether doing so risks a copyright violation. Paste Check [[mw:Special:MyLanguage/Edit check/Tags|tags]] all edits where it is shown for potential review. Local administrators can configure various aspects of the feature via [[{{#special:EditChecks}}]]. [[mw:Special:MyLanguage/Edit check/Paste Check#A/B Experiment|Research]] across 22 wikis found that Paste Check resulted in an 18% decrease in relative reverted-edits compared to the control group. Translators can [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-visualeditor-ve-mw-editcheck&filter=&optional=1&action=translate help to localize] this and related features.
* The [[mw:Special:MyLanguage/Readers/Reader Experience|Reader Experience team]] will be standardizing the user menu in the top right for all mobile users so that it is closer to the desktop experience. Currently this user menu is only visible to users with Advanced Mobile Controls (AMC) turned on. The only change is that a couple buttons previously in the left-side menu will move to the top right for users who do not have AMC turned on. This change is expected to go out March 9 and seeks to improve the user interface. [https://phabricator.wikimedia.org/T413912]
* Starting in the week of March 2, the emails sent out when an email address was added, removed, or changed for an account will switch to a substantially nicer and clearer HTML email from the prior plaintext one. [https://phabricator.wikimedia.org/T410807]
* Notifications are currently limited to 2,000 historic entries per user, and extend back to 2013 when the feature was released. This is going to be changed to only store Notifications from the last 5 years, but up to 10,000 of them. This will help with long-term infrastructure health and help to prevent more recent notifications from disappearing too soon. [https://phabricator.wikimedia.org/T383948]
* The [[m:Special:GlobalWatchlist|Global Watchlist]] which lets you view your watchlists from multiple wikis on a single page continues to see improvements. The latest update improves label usage experience. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] now allows activating the [[mw:Special:MyLanguage/Manual:Language#Fallback languages|language fallback system]] for Wikidata items without labels in the viewed language, and showing those labels in the user’s preferred Wikidata language if no <code dir=ltr>uselang=</code> URL parameter is provided. [https://phabricator.wikimedia.org/T373686][https://phabricator.wikimedia.org/T416111]
* The Wikipedia Android team has started a beta test of [[mw:Special:MyLanguage/Readers/Information Retrieval/Phase 1|hybrid search]] on Greek Wikipedia. Hybrid search capabilities can handle both semantic and keyword queries enabling readers to find what they’re looking for directly on Wikipedia more easily.
* For security reasons, members of certain user groups are [[m:Special:MyLanguage/Mandatory two-factor authentication for users with some extended rights|required to have two-factor authentication]] (2FA) enabled. Currently, 2FA is required to use the group, but not to be a member of it. Given that this model still has some vulnerabilities, the situation will [[phab:T418580|gradually change in March]]. Members of these groups will be unable to disable last 2FA method on their account, and it will be impossible to add users without 2FA to these groups. Users will still be able to add new authentication methods or remove them, as long as at least one method is continuously enabled. In the second half of March, users without 2FA will be removed from these groups. This applies to: CentralNotice administrators, checkusers, interface administrators, suppressors, Wikidata staff, Wikifunctions staff, WMF Office IT and WMF Trust & Safety. Nothing will change for other users. See the linked task for deployment schedule. [https://phabricator.wikimedia.org/T418580]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:27}} community-submitted {{PLURAL:27|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue preventing users from creating an instance in [https://www.wikibase.cloud/ Wikibase.cloud] has now been fixed. [https://phabricator.wikimedia.org/T416807]
'''Updates for technical contributors'''
* To help ensure [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]], over the next month the Wikimedia Foundation will implement global API rate limits across our APIs. In early March, stricter limits will be applied to unidentified requests from outside Toolforge/WMCS and API requests that are made from web browsers. In April, higher limits will be applied to identified traffic. These limits are intentionally set as high as possible to minimise impact on the community. Bots running in Toolforge/WMCS or with the bot user right on any wiki should not be affected for now. However, all developers are advised to follow updated best practices. For more information, see [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]].
* The Wikidata Query Service Linked Data Fragment (LDF) endpoint will be decommissioned in February. This endpoint served limited traffic, which was successfully migrated to other data access methods that were better suited to support existing use cases. The hardware used to support the LDF endpoint will be reallocated to support the ongoing backend migration efforts. [https://phabricator.wikimedia.org/T415696]
* The new Parsoid parser [[mw:Special:MyLanguage/Parsoid/Parser Unification/Updates|continues to be deployed to additional wikis]], improving platform sustainability and making it easier to introduce new reading and editing features. Parsoid is now the default parser on 488 WMF wikis (268 Wikipedias), now covering more than 10% of all Wikipedia page views.
* The process and criteria for [[Special:MyLanguage/Wikimedia Enterprise#Access|requesting exceptional access]] to the high volume feed of the ''Wikimedia Enterprise'' APIs (at no cost for mission-aligned usecases), [[m:Talk:Wikimedia Enterprise#Exceptional access criteria|have now been published]]. This is to provide more thorough and clearer documentation for users.
* [https://techblog.wikimedia.org/ Tech Blog], the blog dedicated to the Wikimedia technical community [https://techblog.wikimedia.org/2026/02/24/a-tech-blog-diff/ will be migrating] to [[diffblog:|Diff]], the community news and event blog. The migration should be complete in April 2026, after which new posts will be accepted for publishing. Readers will be able to access posts – old and new – on the landing page at https://diff.wikimedia.org/techblog.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.18|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/10|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W10"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৭:৫২, ২ মার্চ ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30137798-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-11</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W11"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/11|Translations]] are available.
'''Weekly highlight'''
* [[m:Special:MyLanguage/Tech/Server switch|All wikis will be read-only]] for a few minutes on Wednesday, 25 March 2026 at [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. This is for the datacenter server switchover backup tests, [[wikitech:Deployments/Yearly calendar|which happen twice a year]]. During the switchover, all Wikimedia website traffic is shifted from one primary data center to the backup data center to test availability and prevent service disruption even in emergencies.
* Last week, all wikis had 2 hours of read-only time, and extended unavailability for user-scripts and gadgets. This was due to a security incident which has since been resolved. Work is ongoing to prevent re-occurrences. For current information please see the [[m:Steward's noticeboard#Statement on Meta about today's user script security incident|post on the Stewards' noticeboard]] ([[m:Special:MyLanguage/Wikimedia Foundation/Product and Technology/Product Safety and Integrity/March 2026 User Script Incident|translations]]).
'''Updates for editors'''
* Users facing multiple blocks on mobile will now see the reasons for each block separately, instead of a generic message. This helps them understand why they are blocked and what steps they can take to resolve the issue. For example, users affected for using common VPNs (such as [[Special:MyLanguage/Apple iCloud Private Relay|iCloud Private Relay]]) will receive clearer guidance on what they need to do to start editing again. [https://phabricator.wikimedia.org/T357118]
* Later this week, [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|Suggestion Mode]] will become available as a beta feature within the visual editor at all Wikipedias. This feature proactively suggests various types of actions that people can consider taking to improve Wikipedia articles, and learn about related guidelines. The feature is locally configurable, and can also be locally expanded with custom Suggestions. Current settings can be seen at [[Special:EditChecks]] and there are [[mw:Special:MyLanguage/Help:Suggestion mode#For administrators %E2%80%93 local customization|instructions for how administrators can customize]] the links to point to local guidelines. The feature is connected to [[mw:Special:MyLanguage/Help:Edit check|Edit check]] which suggests improvements while someone is writing new content. In the future, the Editing team plans to evaluate the feature's impact with newcomers through a controlled experiment. [https://phabricator.wikimedia.org/T404600]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:23}} community-submitted {{PLURAL:23|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue where the cursor became misaligned during the use of CodeMirror’s syntax highlighting, which makes wikitext and code easier to read, has now been fixed. This problem specifically affected users who defined a font rule in a custom stylesheet while creating a new topic with DiscussionTools. [https://phabricator.wikimedia.org/T418793]
'''Updates for technical contributors'''
* API rate limiting update: To help ensure [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|fair use of infrastructure]], global API rate limits will be applied this week to requests without a compliant User-Agent that originate from outside Toolforge/WMCS and to unauthenticated requests made from web browsers. Higher limits will be applied to identified traffic in April. Bots running in Toolforge/WMCS or with the bot user right on any wiki should not be affected for now. However, all developers are advised to follow updated best practices. For more information, see [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|Wikimedia APIs/Rate limits]].
* The new GraphQL API has been released. The API was developed as a flexible alternative to select features of the Wikidata Query Service (WDQS), to improve developer experience and foster adaptability, and efficient data access. Try it out and [[d:Wikidata:Wikibase GraphQL#Feedback and development|give feedback]]. You can also [https://greatquestion.co/wikimediadeutschland/GraphQLAPI/apply sign up for usability tests].
* The [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group|PTAC Unsupported Tools Working Group]] continued improvements to [[commons:Special:MyLanguage/Commons:Video2commons#|Video2Commons]] in February, with fixes addressing authentication errors, large-file handling, task queue visibility, and clearer upload behavior. Work is still ongoing in some areas, including changes related to deprecated server-side uploads. Read [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group#February 2026|this update]] to learn more.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.19|MediaWiki]]
'''In depth'''
* The Article Guidance team invites experienced Wikipedia editors from selected [[mw:Special:MyLanguage/Article guidance/Pilot wikis and collaborators#Collaborators|pilot wikis]] and interested contributors from other Wikipedias to fill out this questionnaire which is available in [https://docs.google.com/forms/d/e/1FAIpQLSfmLeVWnxmsCbPoI_UF2jyRcn73WRGWCVPHzerXb4Cz97X_Ag/viewform English], [https://docs.google.com/forms/d/e/1FAIpQLSd6rzr4XXQw8r4024fE3geTPFe13M_6w7Mitj-YJi0sOlWTAw/viewform?usp=header Arabic], [https://docs.google.com/forms/d/e/1FAIpQLSdok3-RfB18lcugYTUMGkpwmqG_8p760Wv4dCXitOXOszjUDw/viewform?usp=header Bengali], [https://docs.google.com/forms/d/e/1FAIpQLSfjTfYp4jEo0akA4B1e-Nfg3QZPCudUjhJzHzzDi6AHyAaMGA/viewform?usp=header Japanese], [https://docs.google.com/forms/d/e/1FAIpQLScteVoI29Aue4xc72dekk-6RYtvmMgQxzMI900UOawrFrSTWg/viewform?usp=header Portuguese], [https://docs.google.com/forms/d/e/1FAIpQLSetdxnYwL3ub2vqA7awCg5hJZPMIYcDPaiTe12rY9h0GYnVlw/viewform?usp=header Persian], and [https://docs.google.com/forms/d/e/1FAIpQLScNvfJF-Ot-4pzA4qAN771_0QDJ4Li19YcUsaTgSKW8Nc7U_Q/viewform?usp=header Turkish]. Your answers will help the team customize guidance for less experienced editors and help them learn community policies and practices while creating an article. Learn more [[mw:Special:MyLanguage/Article guidance|on the project page]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/11|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W11"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৮:৫৩, ৯ মার্চ ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30213008-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-12</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W12"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/12|Translations]] are available.
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature, also known as [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror 6]], has been used for wikitext syntax highlighting since November 2024. It will be promoted out of beta by May 2026 in order to bring improvements and new [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Features|features]] to all editors who use the standard syntax highlighter. If you have any questions or concerns about promoting the feature out of beta, [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|please share]]. [https://phabricator.wikimedia.org/T259059]
* Some changes to local user groups are performed by stewards on Meta-Wiki and logged there only. Now, interwiki rights changes will be logged both on Meta-Wiki and the wiki of the target user to make it easier to access a full record of user's rights changes on a local wiki. Past log entries for such changes will be backfilled in the coming weeks. [https://phabricator.wikimedia.org/T6055]
* On wikis using [[m:Special:MyLanguage/Flagged Revisions|Flagged Revisions]], the number of pending changes shown on [[{{#Special:PendingChanges}}]] previously counted pages which were no longer pending review, because they have been removed from the system without being reviewed, e.g. due to being deleted, moved to a different namespace, or due to wiki configuration changes. The count will be correct now. On some wikis the number shown will be much smaller than before. There should be no change to the list of pages itself. [https://phabricator.wikimedia.org/T413016]
* Wikifunctions composition language has been rewritten, resulting in a new version of the language. This change aims to increase service stability by reducing the orchestrator's memory consumption. This rewrite also enables substantial latency reduction, code simplification, and better abstractions, which will open the door to later feature additions. Read more about [[f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-11|the changes]].
* Users can now sort search results alphabetically by page title. The update gives an additional option to finding pages more easily and quickly. Previously, results could be sorted by Edit date, Creation date, or Relevance. To use the new option, open 'Advanced Search' on the search results page and select 'Alphabetically' under 'Sorting Order'. [https://phabricator.wikimedia.org/T403775]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:28}} community-submitted {{PLURAL:28|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the bug that prevented UploadWizard on Wikimedia Commons from importing files from Flickr has now been fixed. [https://phabricator.wikimedia.org/T419263]
'''Updates for technical contributors'''
* A new special page, [[{{#special:LintTemplateErrors}}]], has been created to list transcluded pages that are flagged as containing lint errors to help users discover them easily. The list is sorted by the number of transclusions with errors. For example: [[{{#special:LintTemplateErrors}}/night-mode-unaware-background-color]]. [https://phabricator.wikimedia.org/T170874]
* Users of the [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] beta feature have been using [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] instead of [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] for syntax highlighting when editing JavaScript, CSS, JSON, Vue and Lua content pages, for some time now. Along with promoting CodeMirror 6 out of beta, the plan is to replace CodeEditor as the standard editor for these content models by May 2026. [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|Feedback or concerns are welcome]]. [https://phabricator.wikimedia.org/T419332]
* The [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] JavaScript modules will soon be upgraded to CodeMirror 6. Leading up to the upgrade, loading the <code dir=ltr>ext.CodeMirror</code> or <code dir=ltr>ext.CodeMirror.lib</code> modules from gadgets and user scripts was deprecated in July 2025. The use of the <code dir=ltr>ext.CodeMirror.switch</code> hook was also deprecated in March 2025. Contributors can now make their scripts or gadgets compatible with CodeMirror 6. See the [[mw:Special:MyLanguage/Extension:CodeMirror#Gadgets and user scripts|migration guide]] for more information. [https://phabricator.wikimedia.org/T373720]
* The MediaWiki Interfaces team is expanding coverage of REST API module definitions to include [[mw:Special:MyLanguage/API:REST API/Extensions|extension APIs]]. REST API modules are groups of related endpoints that can be independently managed and versioned. Modules now exist for [https://phabricator.wikimedia.org/T414470 GrowthExperiments] and [https://phabricator.wikimedia.org/T419053 Wikifunctions] APIs. As we migrate extension APIs to this structure, documentation will move out of the main MediaWiki OpenAPI spec and REST Sandbox view, and will instead be accessible via module-specific options in the dropdown on the [https://test.wikipedia.org/wiki/Special:RestSandbox REST Sandbox] (i.e., [[{{#Special:RestSandbox}}]], available on all wiki projects).
* The [[mw:Special:MyLanguage/Extension:Scribunto|Scribunto]] extension provides different pieces of information about the wiki where the module is being used via the [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual|mw.site]] library. Starting last week, the library also provides a [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual#mw.site.wikiId|way]] of accessing the [[mw:Special:MyLanguage/Manual:Wiki ID|wiki ID]] that can be used to facilitate cross-wiki module maintenance. [https://phabricator.wikimedia.org/T146616]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.20|MediaWiki]]
'''In depth'''
* The [[m:Special:MyLanguage/Coolest Tool Award|2026 Coolest Tool Award]] celebrating outstanding community tools, is now open for nominations! Nominate your favorite tool using the [https://wikimediafoundation.limesurvey.net/435684?lang=en nomination survey] form by 23 March 2026. For more information on privacy and data handling, please see the [[foundation:Special:MyLanguage/Legal:Coolest_Tool_Award_2026_Survey_Privacy_Statement|survey privacy statement]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/12|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W12"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৯:৩৬, ১৬ মার্চ ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30260505-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-13</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W13"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/13|Translations]] are available.
'''Weekly highlight'''
* Wikimedia site users can now log in without a password using passkeys. This is a secure method supported by fingerprint, facial recognition, or PIN. With this change, all users who opt for passwordless login will find it easier, faster, and more secure to log in to their accounts using any device. The new passkey login option currently appears as an autofill suggestion in the username field. An additional [[phab:T417120|"Log in with passkey" button]] will soon be available for users who have already registered a passkey. This update will improve security and user experience. The [[c:File:Passwordless_login_screencast.webm|screen recording]] demonstrates the passwordless login process step by step.
* [[m:Special:MyLanguage/Tech/Server switch|All wikis will be read-only]] for a few minutes on Wednesday, 25 March 2026 at [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. This is for the datacenter server switchover backup tests, [[wikitech:Deployments/Yearly calendar|which happen twice a year]]. During the switchover, all Wikimedia website traffic is shifted from one primary data center to the backup data center to test availability and prevent service disruption even in emergencies.
'''Updates for editors'''
* Wikimedia site users can now export their notifications older than 5 years using a [[toolforge:echo-chamber|new Toolforge tool]]. This will ensure that users retain their important notifications and avoid them being lost based on the planned change to delete notifications older than 5 years, as previously announced. [https://phabricator.wikimedia.org/T383948]
* Wikipedia editors in Indonesian, Thai, Turkish, and Simple English now have access to Special:PersonalDashboard. This is an [[mw:Special:MyLanguage/Moderator Tools/Dashboard|early version of an experience]] that introduces newer editors to patrolling workflows, making it easier for them to move from making edits to participating in more advanced moderation work on their project. [https://phabricator.wikimedia.org/T402647]
* The [[Special:Block]] now has two minor interface changes. Administrators can now easily perform indefinite blocks through a dedicated radio button in the expiry section. Also, choosing an indefinite expiry provides a different set of common reasons to select from, which can be changed at: [[MediaWiki:Ipbreason-indef-dropdown]]. [https://phabricator.wikimedia.org/T401823]
* Mobile editors [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#Logged-out|at several wikis]] can now see an improved logged-out edit warning, thanks to the recent updates from the Growth team. These changes released last week are part of ongoing efforts and tests to enhance [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|account creation experience on mobile]] and then increase participation. [https://phabricator.wikimedia.org/T408484]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:36}} community-submitted {{PLURAL:36|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the bug that prevented mobile web users from seeing the block information when affected by multiple blocks has been fixed. They can now see messages of all the blocks currently affecting them when they access Wikipedia.
'''Updates for technical contributors'''
* Images built using Toolforge will soon get the upgraded buildpacks version, bringing support for newer language versions and other upstream improvements and fixes. If you use Toolforge Build Service, review the recent [https://lists.wikimedia.org/hyperkitty/list/cloud-announce@lists.wikimedia.org/thread/EMYTA32EV2V5SQ2JIEOD2CL66YFIZEKV/ cloud-announce email] and update your build configuration as necessary to ensure your tools are compatible. [https://wikitech.wikimedia.org/w/index.php?title=Help:Toolforge/Building_container_images&oldid=2392097#Buildpack_environment_upgrade_process][https://phabricator.wikimedia.org/T380127]
* The [https://api.wikimedia.org/wiki/Main_Page API Portal] documentation wiki will shut down in June 2026. API keys created on the API Portal will continue to work normally. api.wikimedia.org endpoints will be deprecated gradually starting in July 2026. Documentation on the API Portal is moving to [[mw:Wikimedia APIs|mediawiki.org]]. Learn more on the [[wikitech:API Portal/Deprecation|project page]].
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.21|MediaWiki]]
'''In depth'''
* [[m:Special:MyLanguage/WMDE Technical Wishes|WMDE Technical Wishes]] is considering improvements to [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names|automatically generated reference names in VisualEditor]]. Please check out the [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names#Proposed solutions|proposed solutions]] and participate in the [[m:Talk:WMDE Technical Wishes/References/VisualEditor automatic reference names#Request for comment|request for comment]].
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/13|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W13"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৬:৫১, ২৩ মার্চ ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30268305-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:UOzurumba (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-14</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W14"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/14|Translations]] are available.
'''Weekly highlight'''
* The Beta version of [[abstract:|Abstract Wikipedia]] a new Wikimedia project which is language-independent, was launched last week. The project allows communities to build Wikipedia articles in their native language, which can be readily accessed by other users in their own languages. The wiki is powered by instructions from Wikifunctions and also based on structured content from Wikidata. [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-26|Read more]].
'''Updates for editors'''
* The Growth team is running an A/B test to evaluate a clearer, more user-friendly message that promotes account creation on wikis. Currently when logged-out mobile users begin editing, they see a jarring warning message that can feel abrupt and discouraging. This also presents temporary account editing as the default rather than encouraging account creation. The test is running on ten Wikipedias, including Arabic, French, Spanish and German. [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#2. Improve logged-out warning message (T415160)|Read more]].
* The Wikimedia Apps team is inviting feedback on [[mw:Special:MyLanguage/Wikimedia Apps/Team/Future of Editing on the Mobile Apps|how editing should work on the Wikipedia mobile apps]]. The discussion focuses on improving how users access editing tools when they tap "Edit". This is part of a broader effort to convert readers who develop an interest in editing, to access a more user-friendly pathway to start contributing.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:45}} community-submitted {{PLURAL:45|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where citation fetching from the large newspaper archive [https://www.newspapers.com Newspapers.com] was no longer working, due to a block in [[mw:Special:MyLanguage/Citoid|Citoid]] requests, has now been fixed. [https://phabricator.wikimedia.org/T419903]
'''Updates for technical contributors'''
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.22|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/14|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W14"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৯:২৬, ৩০ মার্চ ২০২৬ (ইউটিসি)
<!-- https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30329462-এর তালিকা ব্যবহার করে বার্তাটি ব্যবহারকারী:STei (WMF)@metawiki পাঠিয়েছেন -->
== <span lang="en" dir="ltr">Tech News: 2026-15</span> ==
<div lang="en" dir="ltr">
<section begin="technews-2026-W15"/><div class="plainlinks">
Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/15|Translations]] are available.
'''Updates for editors'''
* The [[mw:Special:MyLanguage/Help:Extension:CampaignEvents|CampaignEvents extension]] now includes a new group goal-setting feature, enabling organizers to set and track event goals such as the number of articles created and participating contributors in real time. Similarly, participants can work toward shared targets and see their collective impact as the event unfolds. The feature is now available on all Wikimedia wikis. Learn more in [[mw:Special:MyLanguage/Help:Extension:CampaignEvents/Registration/Collaborative contributions#Goal setting|the documentation]].
* [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Wishlist item]] The new [[mw:Special:MyLanguage/Help:Watchlist labels|watchlist labels]] feature (announced in [[m:Special:MyLanguage/Tech/News/2026/07|Tech News 2026-07]]) is now available via VisualEditor, the source editor, and the 'watchstar' (or watch link, for skins that don't have a star icon). Previously it was only possible to assign labels via [[Special:EditWatchlist|EditWatchlist]]. In all three places it is a new field following the expiry field.
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:23}} community-submitted {{PLURAL:23|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, the issue where talk pages on mobile with Parsoid are unusable after empty section headers, has now been fixed. [https://phabricator.wikimedia.org/T419171]
'''Updates for technical contributors'''
* The [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|sub-referencing feature]], which lets editors add details to an existing reference without duplicating it, will be gradually rolled out to [[phab:T414094|more wikis]] later this year. Wikis using the [[mw:Special:MyLanguage/Reference Tooltips|Reference Tooltips]] gadget are encouraged to update their version (typically at [[m:MediaWiki:Gadget-ReferenceTooltips.js|MediaWiki:Gadget-ReferenceTooltips.js]] as shown [https://en.wikipedia.org/w/index.php?diff=1344408362 here]) to ensure compatibility. Other reference-related gadgets may also be affected. [https://phabricator.wikimedia.org/T416304]
* All Wikinews editions will be closed and switched to read-only mode on 4 May 2026. Content will remain accessible, but no new edits or articles can be added. This closure was approved by the Board of Trustees of the Wikimedia Foundation following extended discussions. [[m:Wikimedia Foundation Board noticeboard#Board of Trustees Approves Closure of Wikinews|Read more]].
* The [[:mw:Special:MyLanguage/API:Action API|Action API]] has had several formats for requested output. One of them, <bdi lang="zxx" dir="ltr"><code><nowiki>format=php</nowiki></code></bdi>, is being removed soon. Please ensure your scripts or bots use the [[mw:Special:MyLanguage/API:Data formats#Output|JSON format]]. This removal should affect very few scripts and bots. [https://phabricator.wikimedia.org/T118538]
* The [[Special:NamespaceInfo|Special:NamespaceInfo]] page now includes namespace aliases. For example "WP" for the "Project" ("Wikipedia") namespace on the German Wikipedia. [https://phabricator.wikimedia.org/T381455]
* [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.46/wmf.23|MediaWiki]]
'''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/15|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W15"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৬:১৯, ৬ এপ্রিল ২০২৬ (ইউটিসি)
<!-- 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]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/16|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W16"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৫:১৯, ১৩ এপ্রিল ২০২৬ (ইউটিসি)
<!-- 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]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/17|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W17"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৫:০১, ২০ এপ্রিল ২০২৬ (ইউটিসি)
<!-- 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]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/18|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W18"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৮:০৬, ২৭ এপ্রিল ২০২৬ (ইউটিসি)
<!-- 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]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/19|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W19"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ২০:৪৩, ৪ মে ২০২৬ (ইউটিসি)
<!-- 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]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/20|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W20"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ১৯:২০, ১১ মে ২০২৬ (ইউটিসি)
<!-- 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]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/21|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W21"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ২০:২২, ১৮ মে ২০২৬ (ইউটিসি)
<!-- 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]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/22|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W22"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ২১:৫২, ২৫ মে ২০২৬ (ইউটিসি)
<!-- 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]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/23|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].''
</div><section end="technews-2026-W23"/>
</div>
<bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> ২১:০৯, ১ জুন ২০২৬ (ইউটিসি)
<!-- 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|আপনার প্রচেষ্টাকে]] স্বাগত জানাচ্ছি। আশা করছি এই প্রচেষ্টাকে সফল করতে আপনার সাহায্য অব্যাহত থাকবে, এবং এই সম্প্রদায়ে আপনার অবস্থান আনন্দপূর্ণ হবে। যেকোনো প্রকার প্রশ্নে নিঃসঙ্কোচে [[ব্যবহারকারী আলাপ:অভ্যর্থনা কমিটি বট|আমার আলাপ পাতায়]] বার্তা রাখার অনুরোধ করছি। উইকিঅভিধানে লেখার ক্ষেত্রে কিছু বিষয় মনে রাখা উত্তম:
* [[উইকিঅভিধান:নীতিমালা ও নির্দেশাবলী|নীতিমালা ও নির্দেশাবলী]] — উইকিঅভিধানের মূল নীতিমালাগুলোতে একবার চোখ বুলিয়ে নিন, ও মেনে চলার চেষ্টা করুন।
* [[উইকিঅভিধান:ভুক্তির কাঠামো ব্যাখ্যা|ভুক্তির কাঠামো ব্যাখ্যা]] — অর্থাৎ একটি ভুক্তিতে যে বিষয়গুলো যোগ করার মাধ্যমে আপনি ভুক্তিটির উন্নয়ন ঘটাতে পারেন।
* [[উইকিঅভিধান:কপিরাইট|কপিরাইট নীতিমালা]] — উইকিঅভিধান আইনের প্রতি শ্রদ্ধাশীল। তাই কপিরাইটের মূল বিষয়গুলো অনুগ্রহপূর্বক দেখে নিন।
* [[উইকিঅভিধান:নতুন শব্দ যোগ|নতুন শব্দ যোগ]] — বাংলা ও ইংরেজীতে নতুন শব্দ যোগ করতে অনুগ্রহপূর্বক [[উইকিঅভিধান:নতুন শব্দ যোগ]] পাতার প্রণালীটি অনুসরণ করুন।
নিজের সম্পর্কে তথ্য আপনি আপনার [[ব্যবহারকারী:Arafat Rahman Tamim|ব্যবহারকারী পাতায়]] রাখতে পারেন। এর মাধ্যমে অন্যরা আপনার সম্পর্কে জানতে পারবে। সাহায্য চাইতে এবং মতামত রাখতে অনুগ্রহপূর্বক সম্পর্কিত পাতার আলাপ পাতা ব্যবহার করুন। <br /><br />
অনুগ্রহপূর্বক আলাপের পাতায় বার্তা রাখার পর সম্পাদনা সরঞ্জামদণ্ডের [[চিত্র:OOjs UI icon signature-ltr.svg|22px|link=|alt=স্বাক্ষর আইকন]] চিহ্নে ক্লিক করার মাধ্যমে অথবা চারটি টিল্ডা (<code><nowiki>~~~~</nowiki></code>) চিহ্ন দিয়ে নাম স্বাক্ষর করুন। এটি স্বয়ংক্রিয় ভাবে আপনার নাম এবং তারিখ যোগ করবে। <br />
আশা করি আপনি বাংলা উইকিঅভিধান সম্প্রদায়ের একজন হয়ে সম্পাদনা করে আনন্দ পাবেন! আবারও স্বাগতম এবং শুভেচ্ছা!
[[উইকিঅভিধান:অভ্যর্থনা কমিটি|উইকিঅভিধান অভ্যর্থনা কমিটি]], [[ব্যবহারকারী:অভ্যর্থনা কমিটি বট|অভ্যর্থনা কমিটি বট]] ([[ব্যবহারকারী আলাপ:অভ্যর্থনা কমিটি বট|আলাপ]]) ১২:৪৫, ২০ আগস্ট ২০২১ (ইউটিসি)
|}
== আল আরাফাত রহমান তামিম ==
আল আরাফাত রহমান তামিম একজন সমাজকর্মী, ঢাকা বিশ্ববিদ্যালয়ের কর্মজীবী। [[বিশেষ:অবদান/~2026-33656-20|~2026-33656-20]] ([[ব্যবহারকারী আলাপ:~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 = " <span class='penicon autoconfirmed-show'>[["
-- " <span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge
.. "File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt="
.. i18n['edit_wikidata']
.. "|link=https://www.wikidata.org/entity/" .. entityID
if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end
if propertyID ~= "" then icon = icon .. "#" .. propertyID end
icon = icon .. "|" .. i18n['edit_wikidata'] .. "]]</span>"
return icon
end
local function getMeanings( frame, args, current_lexeme, senses, references_seen, language_name)
if #senses == 0 then
return {createicon(i18n['content_lang_code'], current_lexeme:getId()) .. "''" .. i18n['text_category_rfdef'] .. "''" .. 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
אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּ‌שְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃ ʾīš 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("‎", "")
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",
[" "] = " ", ["-"] = "–", ["…"] = "…",
}
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), " ") ..
"</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( " " )) ..
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–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',
{ 'καλός καὶ ἀγαθός', 'kalós kaì agathós' },
{ 'καλός καὶ ἀγαθός', 'kalós kaì 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("၊", "|")
self:check_tr("။", "||")
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:||")
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