MediaWiki:Common.js: Difference between revisions
No edit summary |
No edit summary |
||
| Line 75: | Line 75: | ||
'५':'5','६':'6','७':'7','८':'8','९':'9', | '५':'5','६':'6','७':'7','८':'8','९':'9', | ||
}, | }, | ||
en: {/* devanagari → IAST */ | |||
'अ':' | 'अ':'a','आ':'ā','इ':'i','ई':'ī','उ':'u','ऊ':'ū', | ||
'ऋ':'ṛ','ॠ':'ṝ','ए':'e','ऐ':'ai','ओ':'o','औ':'au','ऽ':"'", | |||
'क':' | 'क':'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', | ||
'ा':' | 'ा':'ā','ि':'i','ी':'ī','ु':'u','ू':'ū', | ||
'ृ':' | 'ृ':'ṛ','ॄ':'ṝ','े':'e','ै':'ai','ो':'o','ौ':'au', | ||
'ं':' | 'ं':'ṃ','ः':'ḥ','्':'','ँ':'m̐','ॐ':'oṃ', | ||
'०':' | '०':'0','१':'1','२':'2','३':'3','४':'4', | ||
'५':' | '५':'5','६':'6','७':'7','८':'8','९':'9', | ||
} | } | ||
}; | }; | ||
function transliterateText(text, map) { | mw.loader.load('https://cdn.jsdelivr.net/npm/sanscript.js@1.1.2/sanscript.min.js'); | ||
// | |||
// Then in applyScript(), for 'en' script: | |||
function transliterateText(text, map, script) { | |||
if (script === 'en') { | |||
return Sanscript.t(text, 'devanagari', 'iast'); | |||
} | |||
// existing map-based logic for kn/ta | |||
const pre = [ | const pre = [ | ||
[/ङ्क/g,'ंक'],[/ङ्ख/g,'ंख'],[/ङ्ग/g,'ंग'],[/ङ्घ/g,'ंघ'], | [/ङ्क/g,'ंक'],[/ङ्ख/g,'ंख'],[/ङ्ग/g,'ंग'],[/ङ्घ/g,'ंघ'], | ||
| Line 108: | Line 114: | ||
if (!content) return; | if (!content) return; | ||
content.querySelectorAll('[data-deva]').forEach(el => { | content.querySelectorAll('[data-deva]').forEach(el => { | ||
el.textContent = el.getAttribute('data-deva'); | el.textContent = el.getAttribute('data-deva'); | ||
| Line 116: | Line 121: | ||
if (script === 'deva') return; | if (script === 'deva') return; | ||
const map = SCRIPT_MAP[script]; | const map = SCRIPT_MAP[script]; // will be undefined for 'en', handled inside transliterateText | ||
const walker = document.createTreeWalker(content, NodeFilter.SHOW_TEXT); | const walker = document.createTreeWalker(content, NodeFilter.SHOW_TEXT); | ||
const nodes = []; | const nodes = []; | ||
| Line 126: | Line 129: | ||
nodes.forEach(node => { | nodes.forEach(node => { | ||
const orig = node.textContent; | const orig = node.textContent; | ||
const trans = transliterateText(orig, map); | const trans = transliterateText(orig, map, script); | ||
if (trans !== orig) { | if (trans !== orig) { | ||
const span = document.createElement('span'); | const span = document.createElement('span'); | ||
| Line 145: | Line 148: | ||
<a class="gr-script-btn" data-script="kn">ಕನ್ನಡ</a> | <a class="gr-script-btn" data-script="kn">ಕನ್ನಡ</a> | ||
<a class="gr-script-btn" data-script="ta">தமிழ்</a> | <a class="gr-script-btn" data-script="ta">தமிழ்</a> | ||
<a class="gr-script-btn" data-script=" | <a class="gr-script-btn" data-script="en">English</a> | ||
`; | `; | ||