marathi-transliterate 1.6.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/dictionary.js +368 -2
- package/src/index.js +64 -0
- package/src/phonetics.js +17 -12
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "marathi-transliterate",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.2",
|
|
4
4
|
"description": "Zero-dependency, offline-first Marathi / Devanagari phonetic transliteration library. Converts English typing to Marathi (e.g. sakhar -> साखर) seamlessly in plain JS, Node.js, and frontend frameworks.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
package/src/dictionary.js
CHANGED
|
@@ -1351,14 +1351,380 @@ export const MARATHI_DICTIONARY = {
|
|
|
1351
1351
|
"board": "बोर्ड",
|
|
1352
1352
|
"extensionboard": "एक्स्टेंशन बोर्ड",
|
|
1353
1353
|
|
|
1354
|
-
// Common Marathi vocabulary & items
|
|
1354
|
+
// Common Marathi vocabulary & items - Shanti & Shant Family
|
|
1355
1355
|
"shanti": "शांती",
|
|
1356
1356
|
"shaanti": "शांती",
|
|
1357
1357
|
"shantee": "शांती",
|
|
1358
|
+
"shanta": "शांता",
|
|
1359
|
+
"shaanta": "शांता",
|
|
1360
|
+
"shantata": "शांतता",
|
|
1361
|
+
"shaantata": "शांतता",
|
|
1362
|
+
"shantanu": "शांतनु",
|
|
1363
|
+
"shantiniketan": "शांतीनिकेतन",
|
|
1364
|
+
"sushant": "सुशांत",
|
|
1365
|
+
"nishant": "निशांत",
|
|
1366
|
+
"ashant": "अशांत",
|
|
1367
|
+
"ashanti": "अशांती",
|
|
1368
|
+
|
|
1369
|
+
// Similar Kana + Anusvara (ां) words (-anti, -andhi, -andi, -ande)
|
|
1358
1370
|
"kanti": "कांती",
|
|
1371
|
+
"kaanti": "कांती",
|
|
1372
|
+
"bhranti": "भ्रांती",
|
|
1373
|
+
"danti": "दांती",
|
|
1374
|
+
"chandi": "चांदी",
|
|
1375
|
+
"chaandi": "चांदी",
|
|
1376
|
+
"gandhi": "गांधी",
|
|
1377
|
+
"gaandhi": "गांधी",
|
|
1378
|
+
"bhande": "भांडे",
|
|
1379
|
+
"bhandi": "भांडी",
|
|
1380
|
+
"bhandya": "भांडी",
|
|
1381
|
+
"bhandeghasni": "भांडेघासणी",
|
|
1382
|
+
"tanda": "तांडा",
|
|
1383
|
+
"taanda": "तांडा",
|
|
1384
|
+
"sandhi": "संधी",
|
|
1385
|
+
"sandhya": "संध्या",
|
|
1386
|
+
"jayanti": "जयंती",
|
|
1387
|
+
"damayanti": "दमयंती",
|
|
1388
|
+
"vasanti": "वसंती",
|
|
1389
|
+
"shrimanti": "श्रीमंती",
|
|
1390
|
+
"dhanwantari": "धन्वंतरी",
|
|
1391
|
+
"dhanvantari": "धन्वंतरी",
|
|
1392
|
+
|
|
1393
|
+
// Marathi Shuddhalekhan Dirgha End-Vowel words (-ti / -ti virtues, names & grocery staples)
|
|
1394
|
+
"shakti": "शक्ती",
|
|
1395
|
+
"shaakti": "शक्ती",
|
|
1396
|
+
"bhakti": "भक्ती",
|
|
1397
|
+
"bhaakti": "भक्ती",
|
|
1398
|
+
"mukti": "मुक्ती",
|
|
1399
|
+
"yukti": "युक्ती",
|
|
1400
|
+
"vyakti": "व्यक्ती",
|
|
1401
|
+
"priti": "प्रीती",
|
|
1402
|
+
"preeti": "प्रीती",
|
|
1403
|
+
"kirti": "कीर्ती",
|
|
1404
|
+
"keerti": "कीर्ती",
|
|
1405
|
+
"niti": "नीती",
|
|
1406
|
+
"neeti": "नीती",
|
|
1407
|
+
"riti": "रीती",
|
|
1408
|
+
"reeti": "रीती",
|
|
1409
|
+
"smruti": "स्मृती",
|
|
1410
|
+
"smriti": "स्मृती",
|
|
1411
|
+
"jyoti": "ज्योती",
|
|
1412
|
+
"aarti": "आरती",
|
|
1413
|
+
"arati": "आरती",
|
|
1414
|
+
"murti": "मूर्ती",
|
|
1415
|
+
"moorti": "मूर्ती",
|
|
1416
|
+
"sphurti": "स्फूर्ती",
|
|
1417
|
+
"pankti": "पंक्ती",
|
|
1418
|
+
"sampatti": "संपत्ती",
|
|
1419
|
+
"vibhuti": "विभूती",
|
|
1420
|
+
"vibhooti": "विभूती",
|
|
1421
|
+
"khyati": "ख्याती",
|
|
1422
|
+
"jati": "जाती",
|
|
1423
|
+
"nati": "नाती",
|
|
1424
|
+
"mati": "मती",
|
|
1425
|
+
"sthiti": "स्थिती",
|
|
1426
|
+
"utpatti": "उत्पत्ती",
|
|
1427
|
+
"prakruti": "प्रकृती",
|
|
1428
|
+
"prakriti": "प्रकृती",
|
|
1429
|
+
"sanskruti": "संस्कृती",
|
|
1430
|
+
"sanskriti": "संस्कृती",
|
|
1431
|
+
"vikruti": "विकृती",
|
|
1432
|
+
"vikriti": "विकृती",
|
|
1433
|
+
"jagruti": "जागृती",
|
|
1434
|
+
"jagriti": "जागृती",
|
|
1435
|
+
"trupti": "तृप्ती",
|
|
1436
|
+
"dipti": "दीप्ती",
|
|
1437
|
+
"deepti": "दीप्ती",
|
|
1438
|
+
"dharti": "धरती",
|
|
1439
|
+
"dharati": "धरती",
|
|
1440
|
+
"bhumi": "भूमी",
|
|
1441
|
+
"bhoomi": "भूमी",
|
|
1442
|
+
"srushti": "सृष्टी",
|
|
1443
|
+
"shrushti": "सृष्टी",
|
|
1444
|
+
"drishti": "दृष्टी",
|
|
1445
|
+
"drushti": "दृष्टी",
|
|
1446
|
+
|
|
1359
1447
|
"vati": "वाटी",
|
|
1360
1448
|
"vatya": "वाट्या",
|
|
1361
1449
|
"watti": "वाटी",
|
|
1362
|
-
"wattya": "वाट्या"
|
|
1450
|
+
"wattya": "वाट्या",
|
|
1451
|
+
|
|
1452
|
+
// Anand & names
|
|
1453
|
+
"anand": "आनंद",
|
|
1454
|
+
"aanand": "आनंद",
|
|
1455
|
+
|
|
1456
|
+
// Common customer honorifics, titles, relations and grocery staples
|
|
1457
|
+
"bhaiyya": "भैय्या",
|
|
1458
|
+
"bhaiya": "भैया",
|
|
1459
|
+
"bhayya": "भय्या",
|
|
1460
|
+
"bhaiyys": "भैय्या",
|
|
1461
|
+
"bhaiyas": "भैया",
|
|
1462
|
+
"bhai": "भाई",
|
|
1463
|
+
"bhau": "भाऊ",
|
|
1464
|
+
"mama": "मामा",
|
|
1465
|
+
"kaka": "काका",
|
|
1466
|
+
"nana": "नाना",
|
|
1467
|
+
"bapu": "बापू",
|
|
1468
|
+
"babu": "बाबू",
|
|
1469
|
+
"tai": "ताई",
|
|
1470
|
+
"aai": "आई",
|
|
1471
|
+
"didi": "दीदी",
|
|
1472
|
+
"aaba": "आबा",
|
|
1473
|
+
"aba": "आबा",
|
|
1474
|
+
"saheb": "साहेब",
|
|
1475
|
+
"sahab": "साहेब",
|
|
1476
|
+
"sheth": "शेठ",
|
|
1477
|
+
"seth": "शेठ",
|
|
1478
|
+
"shethji": "शेठजी",
|
|
1479
|
+
"anna": "अण्णा",
|
|
1480
|
+
"appa": "आप्पा",
|
|
1481
|
+
"rao": "राव",
|
|
1482
|
+
"chaha": "चहा",
|
|
1483
|
+
"bhaji": "भाजी",
|
|
1484
|
+
"poha": "पोहे",
|
|
1485
|
+
"pohe": "पोहे",
|
|
1486
|
+
"khari": "खारी",
|
|
1487
|
+
"toast": "टोस्ट",
|
|
1488
|
+
|
|
1489
|
+
// Fast typing & plural slips (ending in s / ys)
|
|
1490
|
+
"bhais": "भाई",
|
|
1491
|
+
"bhaus": "भाऊ",
|
|
1492
|
+
"bhaiyyas": "भैय्या",
|
|
1493
|
+
"bhaiyas": "भैया",
|
|
1494
|
+
"bhayyas": "भय्या",
|
|
1495
|
+
"kakas": "काका",
|
|
1496
|
+
"kakis": "काकी",
|
|
1497
|
+
"mamas": "मामा",
|
|
1498
|
+
"mamis": "मामी",
|
|
1499
|
+
"dadas": "दादा",
|
|
1500
|
+
"nanas": "नाना",
|
|
1501
|
+
"nanis": "नानी",
|
|
1502
|
+
"tais": "ताई",
|
|
1503
|
+
"taais": "ताई",
|
|
1504
|
+
"didis": "दीदी",
|
|
1505
|
+
"sahebs": "साहेब",
|
|
1506
|
+
"sheths": "शेठ",
|
|
1507
|
+
"seths": "शेठ",
|
|
1508
|
+
"annas": "अण्णा",
|
|
1509
|
+
"appas": "आप्पा",
|
|
1510
|
+
"patils": "पाटील",
|
|
1511
|
+
"deshmukhs": "देशमुख",
|
|
1512
|
+
"pawars": "पवार",
|
|
1513
|
+
"shindes": "शिंदे",
|
|
1514
|
+
"jadhavs": "जाधव",
|
|
1515
|
+
|
|
1516
|
+
// Family & Kinship terms
|
|
1517
|
+
"taai": "ताई",
|
|
1518
|
+
"kaki": "काकी",
|
|
1519
|
+
"mami": "मामी",
|
|
1520
|
+
"nani": "नानी",
|
|
1521
|
+
"aaji": "आजी",
|
|
1522
|
+
"aji": "आजी",
|
|
1523
|
+
"aajoba": "आजोबा",
|
|
1524
|
+
"ajoba": "आजोबा",
|
|
1525
|
+
"mavshi": "मावशी",
|
|
1526
|
+
"maushi": "मावशी",
|
|
1527
|
+
"moushi": "मावशी",
|
|
1528
|
+
"vahini": "वहिनी",
|
|
1529
|
+
"wahini": "वहिनी",
|
|
1530
|
+
"bhavji": "भावजी",
|
|
1531
|
+
"bhaoji": "भावजी",
|
|
1532
|
+
"aatya": "आत्या",
|
|
1533
|
+
"atya": "आत्या",
|
|
1534
|
+
"sasre": "सासरे",
|
|
1535
|
+
"sasu": "सासू",
|
|
1536
|
+
"sasubai": "सासूबाई",
|
|
1537
|
+
"javai": "जावई",
|
|
1538
|
+
"dir": "दीर",
|
|
1539
|
+
"tatya": "तात्या",
|
|
1540
|
+
"tatyas": "तात्या",
|
|
1541
|
+
"pant": "पंत",
|
|
1542
|
+
"chota": "छोटा",
|
|
1543
|
+
"chhota": "छोटा",
|
|
1544
|
+
"motha": "मोठा",
|
|
1545
|
+
|
|
1546
|
+
// Titles, prefixes & respectful forms
|
|
1547
|
+
"sau": "सौ.",
|
|
1548
|
+
"smt": "श्रीमती",
|
|
1549
|
+
"shri": "श्री",
|
|
1550
|
+
"shree": "श्री",
|
|
1551
|
+
"chiranjiv": "चिरंजीव",
|
|
1552
|
+
"chi": "चि.",
|
|
1553
|
+
"kumari": "कुमारी",
|
|
1554
|
+
"ku": "कु.",
|
|
1555
|
+
"sir": "सर",
|
|
1556
|
+
"madam": "मॅडम",
|
|
1557
|
+
"sethji": "शेठजी",
|
|
1558
|
+
"bapuji": "बापूजी",
|
|
1559
|
+
"babuji": "बाबूजी",
|
|
1560
|
+
|
|
1561
|
+
// Compound -saheb names
|
|
1562
|
+
"bhausaheb": "भाऊसाहेब",
|
|
1563
|
+
"bhausahebs": "भाऊसाहेब",
|
|
1564
|
+
"dadasaheb": "दादासाहेब",
|
|
1565
|
+
"dadasahebs": "दादासाहेब",
|
|
1566
|
+
"kakasaheb": "काकासाहेब",
|
|
1567
|
+
"kakasahebs": "काकासाहेब",
|
|
1568
|
+
"mamasaheb": "मामासाहेब",
|
|
1569
|
+
"mamasahebs": "मामासाहेब",
|
|
1570
|
+
"nanasaheb": "नानासाहेब",
|
|
1571
|
+
"nanasahebs": "नानासाहेब",
|
|
1572
|
+
"appasaheb": "आप्पासाहेब",
|
|
1573
|
+
"appasahebs": "आप्पासाहेब",
|
|
1574
|
+
"annasaheb": "अण्णासाहेब",
|
|
1575
|
+
"annasahebs": "अण्णासाहेब",
|
|
1576
|
+
"babasaheb": "बाबासाहेब",
|
|
1577
|
+
"babasahebs": "बाबासाहेब",
|
|
1578
|
+
"balasaheb": "बाळासाहेब",
|
|
1579
|
+
"tatyasaheb": "तात्यासाहेब",
|
|
1580
|
+
"patilsaheb": "पाटीलसाहेब",
|
|
1581
|
+
"shethsaheb": "शेठसाहेब",
|
|
1582
|
+
"doctorsaheb": "डॉक्टरसाहेब",
|
|
1583
|
+
|
|
1584
|
+
// Compound -rao names
|
|
1585
|
+
"baburao": "बाबूराव",
|
|
1586
|
+
"anandrao": "आनंदराव",
|
|
1587
|
+
"anandarao": "आनंदराव",
|
|
1588
|
+
"shankarrao": "शंकरराव",
|
|
1589
|
+
"govindrao": "गोविंदराव",
|
|
1590
|
+
"ganpatrao": "गणपतराव",
|
|
1591
|
+
"subhashrao": "सुभाषराव",
|
|
1592
|
+
"madhavrao": "माधवराव",
|
|
1593
|
+
"yashwantrao": "यशवंतराव",
|
|
1594
|
+
"vilasrao": "विलासराव",
|
|
1595
|
+
"chandrakantrao": "चंद्रकांतराव",
|
|
1596
|
+
"ashokrao": "अशोकराव",
|
|
1597
|
+
"rameshrao": "रमेशराव",
|
|
1598
|
+
"sureshrao": "सुरेशराव",
|
|
1599
|
+
"diliprao": "दिलीपराव",
|
|
1600
|
+
"dadarao": "दादाराव",
|
|
1601
|
+
"patilrao": "पाटीलराव",
|
|
1602
|
+
"shinderao": "शिंदेराव",
|
|
1603
|
+
"deshmukhrao": "देशमुखराव",
|
|
1363
1604
|
|
|
1605
|
+
// Common Maharashtra Surnames
|
|
1606
|
+
"patil": "पाटील",
|
|
1607
|
+
"deshmukh": "देशमुख",
|
|
1608
|
+
"pawar": "पवार",
|
|
1609
|
+
"shinde": "शिंदे",
|
|
1610
|
+
"jadhav": "जाधव",
|
|
1611
|
+
"jadhao": "जाधव",
|
|
1612
|
+
"more": "मोरे",
|
|
1613
|
+
"kadam": "कदम",
|
|
1614
|
+
"chavan": "चव्हाण",
|
|
1615
|
+
"gaikwad": "गायकवाड",
|
|
1616
|
+
"joshi": "जोशी",
|
|
1617
|
+
"kulkarni": "कुलकर्णी",
|
|
1618
|
+
"ghadge": "घाडगे",
|
|
1619
|
+
"bhosale": "भोसले",
|
|
1620
|
+
"bhosle": "भोसले",
|
|
1621
|
+
"raut": "राऊत",
|
|
1622
|
+
"kale": "काळे",
|
|
1623
|
+
"salunkhe": "साळुंखे",
|
|
1624
|
+
"thakur": "ठाकूर",
|
|
1625
|
+
"sawant": "सावंत",
|
|
1626
|
+
"mane": "माने",
|
|
1627
|
+
"shelke": "शेळके",
|
|
1628
|
+
"jagtap": "जगताप",
|
|
1629
|
+
"wagh": "वाघ",
|
|
1630
|
+
"shete": "शेटे",
|
|
1631
|
+
"khot": "खोत",
|
|
1632
|
+
"nikam": "निकम",
|
|
1633
|
+
"koli": "कोळी",
|
|
1634
|
+
"sonawane": "सोनवणे",
|
|
1635
|
+
"tamboli": "तांबोळी",
|
|
1636
|
+
"magar": "मगर",
|
|
1637
|
+
"ghorpade": "घोरपडे",
|
|
1638
|
+
"darekar": "दरेकर",
|
|
1639
|
+
"gavande": "गवंडे",
|
|
1640
|
+
"gawande": "गवंडे",
|
|
1641
|
+
"katore": "कटोरे",
|
|
1642
|
+
"borade": "बोराडे",
|
|
1643
|
+
"ghule": "घुले",
|
|
1644
|
+
"landge": "लांडगे",
|
|
1645
|
+
"khule": "खुळे",
|
|
1646
|
+
"bidkar": "बीडकर",
|
|
1647
|
+
"sharma": "शर्मा",
|
|
1648
|
+
"verma": "वर्मा",
|
|
1649
|
+
"gupta": "गुप्ता",
|
|
1650
|
+
"shah": "शाह",
|
|
1651
|
+
"jain": "जैन",
|
|
1652
|
+
"agarwal": "अगरवाल",
|
|
1653
|
+
"singh": "सिंग",
|
|
1654
|
+
|
|
1655
|
+
// Common Given Names
|
|
1656
|
+
"sachin": "सचिन",
|
|
1657
|
+
"rahul": "राहुल",
|
|
1658
|
+
"amit": "अमित",
|
|
1659
|
+
"amol": "अमोल",
|
|
1660
|
+
"atul": "अतुल",
|
|
1661
|
+
"ajay": "अजय",
|
|
1662
|
+
"vijay": "विजय",
|
|
1663
|
+
"sanjay": "संजय",
|
|
1664
|
+
"sunil": "सुनील",
|
|
1665
|
+
"anil": "अनिल",
|
|
1666
|
+
"ramesh": "रमेश",
|
|
1667
|
+
"suresh": "सुरेश",
|
|
1668
|
+
"ganesh": "गणेश",
|
|
1669
|
+
"mahesh": "महेश",
|
|
1670
|
+
"dinesh": "दिनेश",
|
|
1671
|
+
"santosh": "संतोष",
|
|
1672
|
+
"vikas": "विकास",
|
|
1673
|
+
"prakash": "प्रकाश",
|
|
1674
|
+
"pradeep": "प्रदीप",
|
|
1675
|
+
"pradip": "प्रदीप",
|
|
1676
|
+
"sandip": "संदीप",
|
|
1677
|
+
"sandeep": "संदीप",
|
|
1678
|
+
"deepak": "दीपक",
|
|
1679
|
+
"dipak": "दीपक",
|
|
1680
|
+
"rohit": "रोहित",
|
|
1681
|
+
"nitin": "नितीन",
|
|
1682
|
+
"kiran": "किरण",
|
|
1683
|
+
"ashok": "अशोक",
|
|
1684
|
+
"swapnil": "स्वप्निल",
|
|
1685
|
+
"mangesh": "मंगेश",
|
|
1686
|
+
"yogesh": "योगेश",
|
|
1687
|
+
"nilesh": "निलेश",
|
|
1688
|
+
"pravin": "प्रवीण",
|
|
1689
|
+
"prashant": "प्रशांत",
|
|
1690
|
+
"sudhir": "सुधीर",
|
|
1691
|
+
"subhash": "सुभाष",
|
|
1692
|
+
"bhagwan": "भगवान",
|
|
1693
|
+
"vishnu": "विष्णू",
|
|
1694
|
+
"pandurang": "पांडुरंग",
|
|
1695
|
+
"tukaram": "तुकाराम",
|
|
1696
|
+
"dnyaneshwar": "ज्ञानेश्वर",
|
|
1697
|
+
"namdev": "नामदेव",
|
|
1698
|
+
"eknath": "एकनाथ",
|
|
1699
|
+
"maruti": "मारुती",
|
|
1700
|
+
"mahadev": "महादेव",
|
|
1701
|
+
"khandu": "खंडू",
|
|
1702
|
+
"chhabu": "छाबू",
|
|
1703
|
+
|
|
1704
|
+
// Dairy & Grocery Staples
|
|
1705
|
+
"doodh": "दूध",
|
|
1706
|
+
"dudh": "दूध",
|
|
1707
|
+
"toop": "तूप",
|
|
1708
|
+
"tup": "तूप",
|
|
1709
|
+
"taak": "ताक",
|
|
1710
|
+
"tak": "ताक",
|
|
1711
|
+
"dahi": "दही",
|
|
1712
|
+
"lonche": "लोणचे",
|
|
1713
|
+
"loncha": "लोणचे",
|
|
1714
|
+
"papad": "पापड",
|
|
1715
|
+
"kurdaya": "कुरडया",
|
|
1716
|
+
"kurdai": "कुरडई",
|
|
1717
|
+
"sandge": "सांडगे",
|
|
1718
|
+
"shev": "शेव",
|
|
1719
|
+
"farsan": "फरसाण",
|
|
1720
|
+
"chivda": "चिवडा",
|
|
1721
|
+
"ladu": "लाडू",
|
|
1722
|
+
"ladoo": "लाडू",
|
|
1723
|
+
"pedha": "पेढा",
|
|
1724
|
+
"peda": "पेढा",
|
|
1725
|
+
"barfi": "बर्फी",
|
|
1726
|
+
"jalebi": "जिलेबी",
|
|
1727
|
+
"gulabjamun": "गुलाबजाम",
|
|
1728
|
+
"biscuit": "बिस्कीट",
|
|
1364
1729
|
};
|
|
1730
|
+
|
package/src/index.js
CHANGED
|
@@ -53,6 +53,37 @@ export function transliterateWord(word) {
|
|
|
53
53
|
return MARATHI_DICTIONARY[clean];
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
// 1b. Check trailing "s" fast-typing slip (e.g. bhais -> भाई, bhaus -> भाऊ, kakas -> काका)
|
|
57
|
+
if (clean.endsWith("s") && clean.length > 2) {
|
|
58
|
+
const base = clean.replace(/s+$/, "");
|
|
59
|
+
if (MARATHI_DICTIONARY[base]) {
|
|
60
|
+
return MARATHI_DICTIONARY[base];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// 1c. Check compound honorific suffixes (-saheb, -sahab, -rao, -sheth, -seth, -ji, -bai)
|
|
65
|
+
if (clean.endsWith("saheb") && clean.length > 5) {
|
|
66
|
+
return transliterateWord(clean.slice(0, -5)) + "साहेब";
|
|
67
|
+
}
|
|
68
|
+
if (clean.endsWith("sahab") && clean.length > 5) {
|
|
69
|
+
return transliterateWord(clean.slice(0, -5)) + "साहेब";
|
|
70
|
+
}
|
|
71
|
+
if (clean.endsWith("rao") && clean.length > 3) {
|
|
72
|
+
return transliterateWord(clean.slice(0, -3)) + "राव";
|
|
73
|
+
}
|
|
74
|
+
if (clean.endsWith("sheth") && clean.length > 5) {
|
|
75
|
+
return transliterateWord(clean.slice(0, -5)) + "शेठ";
|
|
76
|
+
}
|
|
77
|
+
if (clean.endsWith("seth") && clean.length > 4) {
|
|
78
|
+
return transliterateWord(clean.slice(0, -4)) + "शेठ";
|
|
79
|
+
}
|
|
80
|
+
if (clean.endsWith("ji") && clean.length > 3) {
|
|
81
|
+
return transliterateWord(clean.slice(0, -2)) + "जी";
|
|
82
|
+
}
|
|
83
|
+
if (clean.endsWith("bai") && clean.length > 4) {
|
|
84
|
+
return transliterateWord(clean.slice(0, -3)) + "बाई";
|
|
85
|
+
}
|
|
86
|
+
|
|
56
87
|
// 2. Check local/memory cache
|
|
57
88
|
const cached = getCachedWord(clean);
|
|
58
89
|
if (cached && cached.length > 0) {
|
|
@@ -100,6 +131,12 @@ export const toDevanagari = transliterate;
|
|
|
100
131
|
* @param {boolean} [options.includeOriginal=true]
|
|
101
132
|
* @returns {string[]}
|
|
102
133
|
*/
|
|
134
|
+
function transiterateCompound(prefix, suffix) {
|
|
135
|
+
if (!prefix) return suffix;
|
|
136
|
+
const p = MARATHI_DICTIONARY[prefix] || phoneticTransliterateWord(prefix);
|
|
137
|
+
return p + suffix;
|
|
138
|
+
}
|
|
139
|
+
|
|
103
140
|
export function getSuggestions(word, options = {}) {
|
|
104
141
|
if (!word || !word.trim()) return [];
|
|
105
142
|
const clean = word.toLowerCase().trim();
|
|
@@ -268,6 +305,33 @@ export function getSuggestions(word, options = {}) {
|
|
|
268
305
|
if (withKanaAnusvar.endsWith("ी")) add(withKanaAnusvar.slice(0, -1) + "ि");
|
|
269
306
|
}
|
|
270
307
|
}
|
|
308
|
+
|
|
309
|
+
// 4q. Customer honorifics & bhai/bhau expansions
|
|
310
|
+
if (clean.startsWith("bhai") || clean.startsWith("bhay")) {
|
|
311
|
+
add("भैय्या");
|
|
312
|
+
add("भैया");
|
|
313
|
+
add("भय्या");
|
|
314
|
+
add("भाई");
|
|
315
|
+
}
|
|
316
|
+
if (clean.startsWith("bhau")) {
|
|
317
|
+
add("भाऊ");
|
|
318
|
+
}
|
|
319
|
+
if (clean.endsWith("s") && clean.length > 2) {
|
|
320
|
+
const base = clean.replace(/s+$/, "");
|
|
321
|
+
if (MARATHI_DICTIONARY[base]) {
|
|
322
|
+
add(MARATHI_DICTIONARY[base]);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (clean.endsWith("saheb") && clean.length > 5) {
|
|
326
|
+
add(transiterateCompound(clean.slice(0, -5), "साहेब"));
|
|
327
|
+
}
|
|
328
|
+
if (clean.endsWith("rao") && clean.length > 3) {
|
|
329
|
+
add(transiterateCompound(clean.slice(0, -3), "राव"));
|
|
330
|
+
}
|
|
331
|
+
if (clean.endsWith("sheth") && clean.length > 5) {
|
|
332
|
+
add(transiterateCompound(clean.slice(0, -5), "शेठ"));
|
|
333
|
+
}
|
|
334
|
+
|
|
271
335
|
}
|
|
272
336
|
|
|
273
337
|
// Background fetch to enrich cache if online (non-blocking)
|
package/src/phonetics.js
CHANGED
|
@@ -63,7 +63,12 @@ const CONSONANTS = [
|
|
|
63
63
|
|
|
64
64
|
const INDEPENDENT_VOWELS = [
|
|
65
65
|
{ en: "aa", mr: "आ" },
|
|
66
|
-
{ en: "A", mr: "आ" },
|
|
66
|
+
{ en: "A", mr: "आ", caseSensitive: true },
|
|
67
|
+
{ en: "ai", mr: "ऐ" },
|
|
68
|
+
{ en: "ay", mr: "ऐ" },
|
|
69
|
+
{ en: "au", mr: "औ" },
|
|
70
|
+
{ en: "ou", mr: "औ" },
|
|
71
|
+
{ en: "ow", mr: "औ" },
|
|
67
72
|
{ en: "a", mr: "अ" },
|
|
68
73
|
{ en: "ee", mr: "ई" },
|
|
69
74
|
{ en: "ii", mr: "ई" },
|
|
@@ -71,11 +76,6 @@ const INDEPENDENT_VOWELS = [
|
|
|
71
76
|
{ en: "oo", mr: "ऊ" },
|
|
72
77
|
{ en: "uu", mr: "ऊ" },
|
|
73
78
|
{ en: "u", mr: "उ" },
|
|
74
|
-
{ en: "ai", mr: "ऐ" },
|
|
75
|
-
{ en: "ay", mr: "ऐ" },
|
|
76
|
-
{ en: "au", mr: "औ" },
|
|
77
|
-
{ en: "ou", mr: "औ" },
|
|
78
|
-
{ en: "ow", mr: "औ" },
|
|
79
79
|
{ en: "e", mr: "ए" },
|
|
80
80
|
{ en: "o", mr: "ओ" },
|
|
81
81
|
{ en: "am", mr: "अं" },
|
|
@@ -86,8 +86,14 @@ const INDEPENDENT_VOWELS = [
|
|
|
86
86
|
];
|
|
87
87
|
|
|
88
88
|
const MATRAS = [
|
|
89
|
+
{ en: "ao", mr: "ाव" },
|
|
89
90
|
{ en: "aa", mr: "ा" },
|
|
90
|
-
{ en: "A", mr: "ा" },
|
|
91
|
+
{ en: "A", mr: "ा", caseSensitive: true },
|
|
92
|
+
{ en: "ai", mr: "ै" },
|
|
93
|
+
{ en: "ay", mr: "ै" },
|
|
94
|
+
{ en: "au", mr: "ौ" },
|
|
95
|
+
{ en: "ou", mr: "ौ" },
|
|
96
|
+
{ en: "ow", mr: "ौ" },
|
|
91
97
|
{ en: "a", mr: "" }, // Inherent vowel: cancels halant; at word end becomes kana
|
|
92
98
|
{ en: "ee", mr: "ी" },
|
|
93
99
|
{ en: "ii", mr: "ी" },
|
|
@@ -95,11 +101,6 @@ const MATRAS = [
|
|
|
95
101
|
{ en: "oo", mr: "ू" },
|
|
96
102
|
{ en: "uu", mr: "ू" },
|
|
97
103
|
{ en: "u", mr: "ु" },
|
|
98
|
-
{ en: "ai", mr: "ै" },
|
|
99
|
-
{ en: "ay", mr: "ै" },
|
|
100
|
-
{ en: "au", mr: "ौ" },
|
|
101
|
-
{ en: "ou", mr: "ौ" },
|
|
102
|
-
{ en: "ow", mr: "ौ" },
|
|
103
104
|
{ en: "e", mr: "े" },
|
|
104
105
|
{ en: "o", mr: "ो" },
|
|
105
106
|
{ en: "am", mr: "ं" },
|
|
@@ -153,6 +154,10 @@ export function phoneticTransliterateWord(text) {
|
|
|
153
154
|
res += "ऊ";
|
|
154
155
|
i += 1;
|
|
155
156
|
matchedVowel = true;
|
|
157
|
+
} else if (clean[i].toLowerCase() === "o" && prevChar.toLowerCase() === "a") {
|
|
158
|
+
res += "व";
|
|
159
|
+
i += 1;
|
|
160
|
+
matchedVowel = true;
|
|
156
161
|
} else if (clean[i].toLowerCase() === "a") {
|
|
157
162
|
i += 1;
|
|
158
163
|
matchedVowel = true;
|