මාධ්‍යවිකි:Translit.js

Wiktionary වෙතින්

Note – after saving, you may have to bypass your browser’s cache to see the changes.

  • Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh);
  • Konqueror and Chrome: click Reload or press F5;
  • Opera: clear the cache in Tools → Preferences;
  • Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5.

/*
This script is a modified version of Alex benenson's cyrillic translitarator and this version was created by user Tatari
සිංග්ලිෂ් සඳහා පරිශීලක:බිඟුවා විසින් වෙන්ස් කරන ලදී.  
මෙය ක්‍රියාත්මකවීමට මාධ්‍යවිකි:Monobook.js‎ හි අදාළ වෙනස්කම් කළ යුතුය.
කිසියම් වෙනසක් සිදුකිරීමට අවැසි නම් කරුණාකර පරිපාලකයකුතට හෝ පරිශීලක:බිඟුවාහට දන්වන්න.

මෙහි අකුරු සංයෝජනය භාවිතා කර ඇත.
http://ucsc.cmb.ac.lk/ltrl/services/feconverter/t2.html

a   අ    aa  ආ    A   ඇ    Aa  ඈ   i   ඉ   ii   ඊ  u   උ    uu  ඌ    e   එ    ee  ඒ   o   ඔ    oo  ඕ      ou  ඖ    R  ඍ    Ru  ඍ    I  ඓ

x   ං    X   ඃ

k   ක    
c   ච   
T   ට   
t   ත    
p   ප   
K   ඛ    
ch  ඡ    
Th  ඨ    
th  ථ    
P   ඵ
g   ග    
j   ජ    
D   ඩ    
d   ද    
b   බ 
gh  ඝ    
jh  ඣ   
Dh  ඪ    
dh  ධ    
bh  භ      
KN  ඤ   
N   ණ    
n   න    
m   ම

y   ය    
r   ර    
l   ල    
w   ව
S   ශ    
sh  ෂ    
s   ස    
h   හ    
L   ළ    
f   ෆ

G   ඟ    
DN  ඳ    
dn      
B   ඹ    

kr ක්‍ර
pr ප්‍ර   
dr ද්‍ර
gr ග්‍ර

ඳා 
*/

var amhaHash='{"k":"ක්","ක්a":"ක","කa":"කා","ක්A":"කැ","කැa":"කෑ","ක්i":"කි","කිi":"කී","ක්u":"කු","කුu":"කූ","ක්e":"කෙ","කෙa":"කේ","ක්o":"කො","කොe":"කෝ","කu":"කෞ","ක්R":"කෘ","කෘu":"කෲ","ක්I":"කෛ","ක්Y":"ක්‍ය",';
amhaHash+='"ක්r":"ක්‍ර","ක්‍රa":"ක්‍රා","ක්‍රA":"ක්‍රැ","ක්‍රැa":"ක්‍රෑ","ක්‍රi":"ක්‍රි","ක්‍රිi":"ක්‍රී","ක්‍රu":"කෘ","කෘu":"කෲ","ක්‍රe":"ක්‍රෙ","ක්‍රෙa":"ක්‍රේ","ක්‍රo":"ක්‍රො","ක්‍රොe":"ක්‍රෝ",';amhaHash+='"ක්Y":"ක්‍ය්","ක්‍ය්a":"ක්‍ය","ක්‍යa":"ක්‍යා","ක්‍ය්A":"ක්‍යැ","ක්‍යැa":"ක්‍යෑ","ක්‍ය්i":"ක්‍යි","ක්‍යිi":"ක්‍යී","ක්‍ය්u":"ක්‍යු","ක්‍යුu":"ක්‍යූ","ක්‍ය්e":"ක්‍යෙ","ක්‍යෙa":"ක්‍යේ","ක්‍ය්o":"ක්‍යො","ක්‍යොe":"ක්‍යෝ",';
amhaHash+='"K":"ඛ්","ඛ්a":"ඛ","ඛa":"ඛා","ඛ්A":"ඛැ","ඛැa":"ඛෑ","ඛ්i":"ඛි","ඛිi":"ඛී","ඛ්u":"ඛු","ඛුu":"ඛූ","ඛ්e":"ඛෙ","ඛෙa":"ඛේ","ඛ්o":"ඛො","ඛොe":"ඛෝ","ඛu":"ඛෞ","ඛ්R":"ඛෘ","ඛෘu":"ඛෲ","ඛ්I":"ඛෛ",';
amhaHash+='"g":"ග්","ග්a":"ග","ගa":"ගා","ග්A":"ගැ","ගැa":"ගෑ","ග්i":"ගි","ගිi":"ගී","ග්u":"ගු","ගුu":"ගූ","ග්e":"ගෙ","ගෙa":"ගේ","ග්o":"ගො","ගොe":"ගෝ","ගu":"ගෞ","ග්R":"ගෘ","ගෘu":"ගෲ","ග්I":"ගෛ",';
amhaHash+='"ග්r":"ග්‍ර","ග්‍රa":"ග්‍රා","ග්‍රA":"ග්‍රැ","ග්‍රැa":"ග්‍රෑ","ග්‍රi":"ග්‍රි","ග්‍රිi":"ග්‍රී","ග්‍රu":"ගෘ","ගෘu":"ගෲ","ග්‍රe":"ග්‍රෙ","ග්‍රෙa":"ග්‍රේ","ග්‍රo":"ග්‍රො","ග්‍රොe":"ග්‍රෝ",';
amhaHash+='"ග්Y":"ග්‍ය්","ග්‍ය්a":"ග්‍ය","ග්‍යa":"ග්‍යා","ග්‍ය්A":"ග්‍යැ","ග්‍යැa":"ග්‍යෑ","ග්‍ය්i":"ග්‍යි","ග්‍යිi":"ග්‍යී","ග්‍ය්u":"ග්‍යු","ග්‍යුu":"ග්‍යූ","ග්‍ය්e":"ග්‍යෙ","ග්‍යෙa":"යේ","ග්‍ය්o":"ග්‍යො","ග්‍යොe":"ග්‍යෝ",';

amhaHash+='"ග්h":"ඝ්","ඝ්a":"ඝ","ඝa":"ඝා","ඝ්A":"ඝැ","ඝැa":"ඝෑ","ඝ්i":"ඝි","ඝිi":"ඝී","ඝ්u":"ඝු","ඝුu":"ඝූ","ඝ්e":"ඝෙ","ඝෙa":"ඝේ","ඝ්o":"ඝො","ඝොe":"ඝෝ","ඝu":"ඝෞ","ඝ්R":"ඝෘ","ඝෘu":"ඝෲ","ඝ්I":"ඝෛ",';

amhaHash+='"c":"ච්","ච්a":"ච","චa":"චා","ච්A":"චැ","චැa":"චෑ","ච්i":"චි","චිi":"චී","ච්u":"චු","චුu":"චූ","ච්e":"චෙ","චෙa":"චේ","ච්o":"චො","චොe":"චෝ","චu":"චෞ","ච්R":"චෘ","චෘu":"චෲ","ච්I":"චෛ",';
amhaHash+='"ච්h":"ඡ්","ඡ්a":"ඡ","ඡa":"ඡා","ඡ්A":"ඡැ","ඡැa":"ඡෑ","ඡ්i":"ඡි","ඡිi":"ඡී","ඡ්u":"ඡු","ඡුu":"ඡූ","ඡ්e":"ඡෙ","ඡෙa":"ඡේ","ඡ්o":"ඡො","ඡොe":"ඡෝ","ඡu":"ඡෞ","ඡ්R":"ඡෘ","ඡෘu":"ඡෲ","ඡ්I":"ඡෛ",';
amhaHash+='"j":"ජ්","ජ්a":"ජ","ජa":"ජා","ජ්A":"ජැ","ජැa":"ජෑ","ජ්i":"ජි","ජිi":"ජී","ජ්u":"ජු","ජුu":"ජූ","ජ්e":"ජෙ","ජෙa":"ජේ","ජ්o":"ජො","ජොe":"ජෝ","ජu":"ජෞ","ජ්R":"ජෘ","ජෘu":"ජෲ","ජ්I":"ජෛ",';
amhaHash+='"ජ්h":"ඣ්","ඣ්a":"ඣ","ඣa":"ඣා","ඣ්A":"ඣැ","ඣැa":"ඣෑ","ඣ්i":"ඣි","ඣිi":"ඣී","ඣ්u":"ඣු","ඣුu":"ඣූ","ඣ්e":"ඣෙ","ඣෙa":"ඣේ","ඣ්o":"ඣො","ඣොe":"ඣෝ","ඣu":"ඣෞ","ඣ්R":"ඣෘ","ඣෘu":"ඣෲ","ඣ්I":"ඣෛ",';
amhaHash+='"ඛ්N":"ඤ්","ඤ්a":"ඤ","ඤa":"ඤා","ඤ්A":"ඤැ","ඤැa":"ඤෑ","ඤ්i":"ඤි","ඤිi":"ඤී","ඤ්u":"ඤු","ඤුu":"ඤූ","ඤ්e":"ඤෙ","ඤෙa":"ඤේ","ඤ්o":"ඤො","ඤොe":"ඤෝ","ඤu":"ඤෞ","ඤ්R":"ඤෘ","ඤෘu":"ඤෲ","ඤ්I":"ඤෛ",';

amhaHash+='"T":"ට්","ට්a":"ට","ටa":"ටා","ට්A":"ටැ","ටැa":"ටෑ","ට්i":"ටි","ටිi":"ටී","ට්u":"ටු","ටුu":"ටූ","ට්e":"ටෙ","ටෙa":"ටේ","ට්o":"ටො","ටොe":"ටෝ","ටu":"ටෞ","ට්R":"ටෘ","ටෘu":"ටෲ","ට්I":"ටෛ",';
amhaHash+='"ට්h":"ඨ්","ඨ්a":"ඨ","ඨa":"ඨා","ඨ්A":"ඨැ","ඨැa":"ඨෑ","ඨ්i":"ඨි","ඨිi":"ඨී","ඨ්u":"ඨු","ඨුu":"ඨූ","ඨ්e":"ඨෙ","ඨෙa":"ඨේ","ඨ්o":"ඨො","ඨොe":"ඨෝ","ඨu":"ඨෞ","ඨ්R":"ඨෘ","ඨෘu":"ඨෲ","ඨ්I":"ඨෛ",';
amhaHash+='"D":"ඩ්","ඩ්a":"ඩ","ඩa":"ඩා","ඩ්A":"ඩැ","ඩැa":"ඩෑ","ඩ්i":"ඩි","ඩිi":"ඩී","ඩ්u":"ඩු","ඩුu":"ඩූ","ඩ්e":"ඩෙ","ඩෙa":"ඩේ","ඩ්o":"ඩො","ඩොe":"ඩෝ","ඩu":"ඩෞ","ඩ්R":"ඩෘ","ඩෘu":"ඩෲ","ඩ්I":"ඩෛ",';
amhaHash+='"ඩ්h":"ඪ්","ඪ්a":"ඪ","ඪa":"ඪා","ඪ්A":"ඪැ","ඪැa":"ඪෑ","ඪ්i":"ඪි","ඪිi":"ඪී","ඪ්u":"ඪු","ඪුu":"ඪූ","ඪ්e":"ඪෙ","ඪෙa":"ඪේ","ඪ්o":"ඪො","ඪොe":"ඪෝ","ඪu":"ඪෞ","ඪ්R":"ඪෘ","ඪෘu":"ඪෲ","ඪ්I":"ඪෛ",';
amhaHash+='"N":"ණ්","ණ්a":"ණ","ණa":"ණා","ණ්A":"ණැ","ණැa":"ණෑ","ණ්i":"ණි","ණිi":"ණී","ණ්u":"ණු","ණුu":"ණූ","ණ්e":"ණෙ","ණෙa":"ණේ","ණ්o":"ණො","ණොe":"ණෝ","ණu":"ණෞ","ණ්R":"ණෘ","ණෘu":"ණෲ","ණ්I":"ණෛ",';

amhaHash+='"t":"ත්","ත්a":"ත","තa":"තා","ත්A":"තැ","තැa":"තෑ","ත්i":"ති","තිi":"තී","ත්u":"තු","තුu":"තූ","ත්e":"තෙ","තෙa":"තේ","ත්o":"තො","තොe":"තෝ","තu":"තෞ","ත්R":"තෘ","තෘu":"තෲ","ත්I":"තෛ",';
amhaHash+='"ත්r":"ත්‍ර","ත්‍රa":"ත්‍රා","ත්‍රA":"ත්‍රැ","ත්‍රැa":"ත්‍රෑ","ත්‍රi":"ත්‍රි","ත්‍රිi":"ත්‍රී","ත්‍රu":"තෘ","තෘu":"තෲ","ත්‍රe":"ත්‍රෙ","ත්‍රෙa":"ත්‍රේ","ත්‍රo":"ත්‍රො","ත්‍රොe":"ත්‍රෝ",';
amhaHash+='"ත්h":"ථ්","ථ්a":"ථ","ථa":"ථා","ථ්A":"ථැ","ථැa":"ථෑ","ථ්i":"ථි","ථිi":"ථී","ථ්u":"ථු","ථුu":"ථූ","ථ්e":"ථෙ","ථෙa":"ථේ","ථ්o":"ථො","ථොe":"ථෝ","ථu":"ථෞ","ථ්R":"ථෘ","ථෘu":"ථෲ","ථ්I":"ථෛ",';
amhaHash+='"d":"ද්","ද්a":"ද","දa":"දා","ද්A":"දැ","දැa":"දෑ","ද්i":"දි","දිi":"දී","ද්u":"දු","දුu":"දූ","ද්e":"දෙ","දෙa":"දේ","ද්o":"දො","දොe":"දෝ","දu":"දෞ","ද්R":"දෘ","දෘu":"දෲ","ද්I":"දෛ",';
amhaHash+='"ද්r":"ද්‍ර","ද්‍රa":"ද්‍රා","ද්‍රA":"ද්‍රැ","ද්‍රැa":"ද්‍රෑ","ද්‍රi":"ද්‍රි","ද්‍රිi":"ද්‍රී","ද්‍රu":"දෘ","දෘu":"දෲ","ද්‍රe":"ද්‍රෙ","ද්‍රෙa":"ද්‍රේ","ද්‍රo":"ද්‍රො","ද්‍රොe":"ද්‍රෝ",';
amhaHash+='"ද්h":"ධ්","ධ්a":"ධ","ධa":"ධා","ධ්A":"ධැ","ධැa":"ධෑ","ධ්i":"ධි","ධිi":"ධී","ධ්u":"ධු","ධුu":"ධූ","ධ්e":"ධෙ","ධෙa":"ධේ","ධ්o":"ධො","ධොe":"ධෝ","ධu":"ධෞ","ධ්R":"ධෘ","ධෘu":"ධෲ","ධ්I":"ධෛ",';
amhaHash+='"n":"න්","න්a":"න","නa":"නා","න්A":"නැ","නැa":"නෑ","න්i":"නි","නිi":"නී","න්u":"නු","නුu":"නූ","න්e":"නෙ","නෙa":"නේ","න්o":"නො","නොe":"නෝ","නu":"නෞ","න්R":"නෘ","නෘu":"නෲ","න්I":"නෛ",';

amhaHash+='"න්Y":"න්‍ය්","න්‍ය්a":"න්‍ය","න්‍යa":"න්‍යා","න්‍ය්A":"න්‍යැ","න්‍යැa":"න්‍යෑ","න්‍ය්i":"න්‍යි",';

amhaHash+='"p":"ප්","ප්a":"ප","පa":"පා","ප්A":"පැ","පැa":"පෑ","ප්i":"පි","පිi":"පී","ප්u":"පු","පුu":"පූ","ප්e":"පෙ","පෙa":"පේ","ප්o":"පො","පොe":"පෝ","පu":"පෞ","ප්R":"පෘ","පෘu":"පෲ","ප්I":"පෛ",';
amhaHash+='"ප්r":"ප්‍ර","ප්‍රa":"ප්‍රා","ප්‍රA":"ප්‍රැ","ප්‍රැa":"ප්‍රෑ","ප්‍රi":"ප්‍රි","ප්‍රිi":"ප්‍රී","ප්‍රu":"පෘ","පෘu":"පෲ","ප්‍රe":"ප්‍රෙ","ප්‍රෙa":"ප්‍රේ","ප්‍රo":"ප්‍රො","ප්‍රොe":"ප්‍රෝ",';
amhaHash+='"P":"ඵ්","ඵ්a":"ඵ","ඵa":"ඵා","ඵ්A":"ඵැ","ඵැa":"ඵෑ","ඵ්i":"ඵි","ඵිi":"ඵී","ඵ්u":"ඵු","ඵුu":"ඵූ","ඵ්e":"ඵෙ","ඵෙa":"ඵේ","ඵ්o":"ඵො","ඵොe":"ඵෝ","ඵu":"ඵෞ","ඵ්R":"ඵෘ","ඵෘu":"ඵෲ","ඵ්I":"ඵෛ",';
amhaHash+='"b":"බ්","බ්a":"බ","බa":"බා","බ්A":"බැ","බැa":"බෑ","බ්i":"බි","බිi":"බී","බ්u":"බු","බුu":"බූ","බ්e":"බෙ","බෙa":"බේ","බ්o":"බො","බොe":"බෝ","බu":"බෞ","බ්R":"බෘ","බෘu":"බෲ","බ්I":"බෛ",';
amhaHash+='"බ්h":"භ්","භ්a":"භ","භa":"භා","භ්A":"භැ","භැa":"භෑ","භ්i":"භි","භිi":"භී","භ්u":"භු","භුu":"භූ","භ්e":"භෙ","භෙa":"භේ","භ්o":"භො","භොe":"භෝ","භu":"භෞ","භ්R":"භෘ","භෘu":"භෲ","භ්I":"භෛ",';
amhaHash+='"m":"ම්","ම්a":"ම","මa":"මා","ම්A":"මැ","මැa":"මෑ","ම්i":"මි","මිi":"මී","ම්u":"මු","මුu":"මූ","ම්e":"මෙ","මෙa":"මේ","ම්o":"මො","මොe":"මෝ","මu":"මෞ","ම්R":"මෘ","මෘu":"මෲ","ම්I":"මෛ",';

amhaHash+='"y":"ය්","ය්a":"ය","යa":"යා","ය්A":"යැ","යැa":"යෑ","ය්i":"යි","යිi":"යී","ය්u":"යු","යුu":"යූ","ය්e":"යෙ","යෙa":"යේ","ය්o":"යො","යොe":"යෝ","යu":"යෞ","ය්R":"යෘ","යෘu":"යෲ","ය්I":"යෛ",';
amhaHash+='"r":"ර්","ර්a":"ර","රa":"රා","ර්A":"රැ","රැa":"රෑ","ර්i":"රි","රිi":"රී","ර්u":"රු","රුu":"රූ","ර්e":"රෙ","රෙa":"රේ","ර්o":"රො","රොe":"රෝ","රu":"රෞ","ර්R":"රෘ","රෘu":"රෲ","ර්I":"රෛ",';
amhaHash+='"l":"ල්","ල්a":"ල","ලa":"ලා","ල්A":"ලැ","ලැa":"ලෑ","ල්i":"ලි","ලිi":"ලී","ල්u":"ලු","ලුu":"ලූ","ල්e":"ලෙ","ලෙa":"ලේ","ල්o":"ලො","ලොe":"ලෝ","ලu":"ලෞ","ල්R":"ලෘ","ලෘu":"ලෲ","ල්I":"ලෛ",';
amhaHash+='"w":"ව්","v":"ව්","ව්a":"ව","වa":"වා","ව්A":"වැ","වැa":"වෑ","ව්i":"වි","විi":"වී","ව්u":"වු","වුu":"වූ","ව්e":"වෙ","වෙa":"වේ","ව්o":"වො","වොe":"වෝ","වu":"වෞ","ව්R":"වෘ","වෘu":"වෲ","ව්I":"වෛ",';

amhaHash+='"S":"ශ්","ශ්a":"ශ","ශa":"ශා","ශ්A":"ශැ","ශැa":"ශෑ","ශ්i":"ශි","ශිi":"ශී","ශ්u":"ශු","ශුu":"ශූ","ශ්e":"ශෙ","ශෙa":"ශේ","ශ්o":"ශො","ශොe":"ශෝ","ශu":"ශෞ","ශ්R":"ශෘ","ශෘu":"ශෲ","ශ්I":"ශෛ",';
amhaHash+='"ශ්r":"ශ්‍ර","ශ්‍රa":"ශ්‍රා","ශ්‍රA":"ශ්‍රැ","ශ්‍රැa":"ශ්‍රෑ","ශ්‍රi":"ශ්‍රි","ශ්‍රිi":"ශ්‍රී","ශ්‍රu":"ශෘ","ශෘu":"ශෲ","ශ්‍රe":"ශ්‍රෙ","ශ්‍රෙa":"ශ්‍රේ","ශ්‍රo":"ශ්‍රො","ශ්‍රොe":"ශ්‍රෝ",';
amhaHash+='"ශ්Y":"ශ්‍ය්","ශ්‍ය්a":"ශ්‍ය","ශ්‍යa":"ශ්‍යා","ශ්‍ය්A":"ශ්‍යැ","ශ්‍යැa":"ශ්‍යෑ","ශ්‍ය්i":"ශ්‍යි","ශ්‍යිi":"ශ්‍යී","ශ්‍ය්u":"යු","ශ්‍ය්e":"ශ්‍යෙ","ශ්‍යෙa":"ශ්‍යේ","ශ්‍ය්o":"ශ්‍යො","ශ්‍යොe":"ශ්‍යෝ",';


amhaHash+='"ස්h":"ෂ්","ෂ්a":"ෂ","ෂa":"ෂා","ෂ්A":"ෂැ","ෂැa":"ෂෑ","ෂ්i":"ෂි","ෂිi":"ෂී","ෂ්u":"ෂු","ෂුu":"ෂූ","ෂ්e":"ෂෙ","ෂෙa":"ෂේ","ෂ්o":"ෂො","ෂොe":"ෂෝ","ෂu":"ෂෞ","ෂ්R":"ෂෘ","ෂෘu":"ෂෲ","ෂ්I":"ෂෛ",';
amhaHash+='"s":"ස්","ස්a":"ස","සa":"සා","ස්A":"සැ","සැa":"සෑ","ස්i":"සි","සිi":"සී","ස්u":"සු","සුu":"සූ","ස්e":"සෙ","සෙa":"සේ","ස්o":"සො","සොe":"සෝ","සu":"සෞ","ස්R":"සෘ","සෘu":"සෲ","ස්I":"සෛ",';
amhaHash+='"h":"හ්","හ්a":"හ","හa":"හා","හ්A":"හැ","හැa":"හෑ","හ්i":"හි","හිi":"හී","හ්u":"හු","හුu":"හූ","හ්e":"හෙ","හෙa":"හේ","හ්o":"හො","හොe":"හෝ","හu":"හෞ","හ්R":"හෘ","හෘu":"හෲ","හ්I":"හෛ",';
amhaHash+='"L":"ළ්","ළ්a":"ළ","ළa":"ළා","ළ්A":"ළැ","ළැa":"ළෑ","ළ්i":"ළි","ළිi":"ළී","ළ්u":"ළු","ළුu":"ළුු","ළ්e":"ළෙ","ළෙa":"ළේ","ළ්o":"ළො","ළොe":"ළෝ","ළu":"ළෞ","ළ්R":"ළෘ","ළෘu":"ළෲ","ළ්I":"ළෛ",';
amhaHash+='"f":"ෆ්","ෆ්a":"ෆ","ෆa":"ෆා","ෆ්A":"ෆැ","ෆැa":"ෆෑ","ෆ්i":"ෆි","ෆිi":"ෆී","ෆ්u":"ෆු","ෆුu":"ෆූ","ෆ්e":"ෆෙ","ෆෙa":"ෆේ","ෆ්o":"ෆො","ෆොe":"ෆෝ","ෆu":"ෆෞ","ෆ්R":"ෆෘ","ෆෘu":"ෆෲ","ෆ්I":"ෆෛ",';

amhaHash+='"G":"ඟ්","ඟ්a":"ඟ","ඟa":"ඟා","ඟ්A":"ඟැ","ඟැa":"ඟෑ","ඟ්i":"ඟි","ඟිi":"ඟී","ඟ්u":"ඟු","ඟුu":"ඟූ","ඟ්e":"ඟෙ","ඟෙa":"ඟේ","ඟ්o":"ඟො","ඟොe":"ඟෝ","ඟu":"ඟෞ","ඟ්R":"ඟෘ","ඟෘu":"ඟෲ","ඟ්I":"ඟෛ",';
amhaHash+='"ඩ්n":"ඬ්","ඬ්a":"ඬ","ඬa":"ඬා","ඬ්A":"ඬැ","ඬැa":"ඬෑ","ඬ්i":"ඬි","ඬිi":"ඬී","ඬ්u":"ඬු","ඬුu":"ඬූ","ඬ්e":"ඬෙ","ඬෙa":"ඬේ","ඬ්o":"ඬො","ඬොe":"ඬෝ","ඬu":"ඬෞ","ඬ්R":"ඬෘ","ඬෘu":"ඬෲ","ඬ්I":"ඬෛ",';
amhaHash+='"ඩ්N":"ඬ්හ්","ඬ්හ්a":"ඳ","ඳa":"ඳා","ඬ්හ්A":"ඳැ","ඳැa":"ඳෑ","ඬ්හ්i":"ඳි","ඳිi":"ඳී","ඬ්හ්u":"ඳු","ඳුu":"ඬූ","ඬ්හ්e":"ඳෙ","ඳෙa":"ඳේ","ඬ්හ්o":"ඳො","ඳොe":"ඳෝ","ඳu":"ඳෞ","ඬ්හ්R":"ඳෘ","ඳෘu":"ඳෲ","ඬ්හ්I":"ඳෛ",';




amhaHash+='"B":"ඹ්","ඹ්a":"ඹ","ඹa":"ඹා","ඹ්A":"ඹැ","ඹැa":"ඹෑ","ඹ්i":"ඹි","ඹිi":"ඹී","ඹ්u":"ඹු","ඹුu":"ඹූ","ඹ්e":"ඹෙ","ඹෙa":"ඹේ","ඹ්o":"ඹො","ඹොe":"ඹෝ","ඹu":"ඹෞ","ඹ්R":"ඹෘ","ඹෘu":"ඹෲ","ඹ්I":"ඹෛ",';

amhaHash+='"x":"ං","X":"ඃ",';

amhaHash+='"a":"අ","අa":"ආ","A":"ඇ","ඇa":"ඈ","i":"ඉ","ඉi":"ඊ","u":"උ","උu":"ඌ","e":"එ","එe":"ඒ","I":"ඓ","o":"ඔ","ඔo":"ඕ","ඔu":"ඖ","R":"ඍ","0":"0","1":"1","2":"2","3":"3","4":"4","5":"5","6":"6","7":"7","8":"8","9":"9"}';



// for compatibility with bookmarklets
function cyr_translit(src) {
	return to_cyrillic(src);
}

var conversionHash = undefined;
var maxcyrlength = 0;

function getConversionHash() {
	if (conversionHash == undefined) {
		conversionHash = eval("("+amhaHash+")");
		 maxcyrlength=6;
	}

	return conversionHash;
}


function to_cyrillic(src, output, chunks) {
	if (src == undefined || src == "" || src == null)
		return src;
	if (output == undefined)
		output = new String();

	var hash = getConversionHash();
	
	var location = 0;
	
	while (location < src.length) {
		var len = Math.min(maxcyrlength, src.length - location);
		var arr = undefined;
		var sub;
		while (len > 0) {
			sub = src.substr(location, len);
			arr = hash[sub];
			if (arr != undefined) 
				break;
			else 
				len--;
		}
		
		// need this for translit on the fly
		if (chunks != undefined)
			chunks[chunks.length] = sub;
			
		if (arr == undefined) {
			output += sub;
			location ++;
		}
		else {

			// case analysis
			var newChar = arr;
			
			if (sub.toLowerCase() == sub.toUpperCase() && arr.length > 1 && arr[1] && (newChar.toUpperCase() != newChar.toLowerCase())) {
			
				// need translit hash to determine if previous character (and possibly the one before it) 
				// were converted and are in upper case
				
				// set prevDud to true previous is not a translated character or simply a blank
				// set prevCap to true if previous was translated and was upper case

				var prevCh = output.length == 0 ? null : output.substr(output.length - 1, 1);
				var prevDud = !prevCh || !getTranslitString(prevCh);
				var prevCap = (!prevDud && prevCh == prevCh.toUpperCase());

				// sub is caseless but result isn't. case will depend on lookbehind and lookahead
				if (prevDud || !prevCap) {
					output += newChar.toLowerCase();
					prevCap = false;
				}
				else {
					var next = " ";
					if (location + len < src.length)
						next = src.substr(location + len, 1);

					if (next != next.toUpperCase() && next == next.toLowerCase() ) {
						//next is lowercase (and not caseless)
						output += newChar.toLowerCase();
					}
					else if (next == next.toUpperCase() && next != next.toLowerCase() ) {
						// next is uppercase (and not caseless)
						output += newChar.toUpperCase();
					}
					else {
						// next is caseless. output case determined by the case of output[length - 2]
						var pprevCh = output.length == 1 ? null : output.substr(output.length - 2, 1);
						var pprevDud = !pprevCh || !getTranslitString(pprevCh);
						if (!pprevDud && (pprevCh == pprevCh.toUpperCase())) {
							//pre-prev is in upper case. output is also uppercase
							output += newChar.toUpperCase();
						}
						else {
						    output += newChar.toLowerCase();
						}
						
					}
				}
					
			}
			else if ((sub.toLowerCase() == sub.toUpperCase()) && (arr.length < 2 || !arr[1])) {
				
				// literal treatment of newChar
				output += newChar;

			}
			else if (sub != sub.toLowerCase()) {
			
				// sub not all-lowercase
				output += newChar.toUpperCase();
			}
			else {
					
					
					
				// sub is lowercase
			    output += newChar.toLowerCase();
			}
			location += len;
		}
	}
	
	return output;
}



function convertIt(src,converter){
 var resultbuffer=""; 
	for(var i=0;i<src.length;i++){
	resultbuffer=converter(resultbuffer+src[i]);
	}
        return converter(resultbuffer);

}



var translitHash = undefined;

function initTranslit() {
	if (translitHash == undefined) {
		translitHash = new Array();

		for (var i = 0; i < conversionHash.length; i++) {
			var ch = conversionHash[i][1];
			// if the translit string is not caseless, convert cyr string to upper case
			// otherwise maintain its case
			if (conversionHash[i][0].toUpperCase() != conversionHash[i][0].toLowerCase())
				ch = ch.toUpperCase();
				
			if (translitHash[ch] == undefined)
				translitHash[ch] = conversionHash[i][0];
		}
	}
}




//-- translit on-the-fly -- 

function replaceValue(node, value, stepback) {
	if (stepback == undefined)
		stepback = 0;
		
	if (isExplorer()) {
		var range = document.selection.createRange();
		range.moveStart("character", -stepback);
		range.text = value;
		range.collapse(false);
		range.select();
	}
	else {
		var scrollTop = node.scrollTop;
		var cursorLoc =  node.selectionStart;
		node.value = node.value.substring(0, node.selectionStart - stepback) + value + 
                node.value.substring(node.selectionEnd, node.value.length);
		node.scrollTop = scrollTop;
		node.selectionStart = cursorLoc + value.length - stepback;
		node.selectionEnd = cursorLoc + value.length - stepback;
	}
}


// compare positions
function positionIsEqual(other) {
	if (isExplorer())
		return this.position.isEqual(other.position);
	else
		return this.position == other.position;
  
}

function Position(node) {
  if (node.selectionStart != undefined)
	this.position = node.selectionStart;
  else if (document.selection && document.selection.createRange())
    this.position = document.selection.createRange();
    
  this.isEqual = positionIsEqual;
}

function resetState() {
	this.position = new Position(this.node);
	this.transBuffer = "";
	this.cyrBuffer = "";
}

function StateObject(node) {
	this.node = node;
	this.reset = resetState;
	this.cyrBuffer = "";
	this.transBuffer = "";
	this.position = new Position(node);
}


var stateHash = new Array();

function isExplorer() {
  return (document.selection != undefined && document.selection.createRange().isEqual != undefined);
}

function pressedKey(event) {
  if (isExplorer())
	return event.keyCode;
  else
    return event.which;
}

function translitonkey(event) {
     /*
	if ((event.keyCode == 255 && event.charCode > 0) || event.keyCode == 8) {
		return;
	}
    */
    
    if (event == undefined)
		event = window.event;
    
	var node = null;
	if (event.target)
		node = event.target;
	else if (event.srcElement)
		node = event.srcElement;
		
	
	
	// initialize state
	var state = stateHash[node];
	if (state == null) {
		state = new StateObject(node);
		stateHash[node] = state;
	}
	if ( (pressedKey(event) > 20) && !event.ctrlKey && !event.altKey && !event.metaKey) {

		var c = String.fromCharCode(pressedKey(event));

		// process input
		var result = process_translit(state, c);
		// finish up
		if (c != result.out || result.replace != 0) {
		  if (isExplorer())
			event.returnValue = false;
		  else
		    event.preventDefault();
		  
		  replaceValue(node, result.out, result.replace);
		  
		  state.position = new Position(node);

		}
	}
	
}

function TranslitResult() {
	this.out = "";
	this.replace = 0;
}

function process_translit(state, c) {
	// reset state if position changed
	if (!state.position.isEqual(new Position(state.node)))
		state.reset();
		
	var result = new TranslitResult();
	
	// initial backbuffer. Add to it as characters are converted
	var backbuffer = getBackBuffer(state.node, state.cyrBuffer.length, 2);
	var chunks = new Array();
	
	state.transBuffer = state.transBuffer+ c

	var str = to_cyrillic(state.cyrBuffer+c, backbuffer, chunks);

	// remove backbuffer from output
	str = str.substr(backbuffer.length);
	result.out = str; 
	/* str is now left alone - it has the output matching contents of chunks and 
	   will be used to reinitialize backbuffers, along with chunks and state.transBuffer
	*/
	
	// get the difference between state.cyrBuffer and output
	for (var i = 0; i < Math.min(state.cyrBuffer.length, result.out.length); i++) {
		if (state.cyrBuffer.substr(i, 1) != result.out.substr(i, 1)) {
			result.replace = state.cyrBuffer.length - i;
			result.out = result.out.substr(i);
			break;
		}
	}
	if (result.replace == 0) {
               if(result.out.length<state.cyrBuffer.length)
				result.replace=state.cyrBuffer.length- result.out.length;
		result.out = result.out.substr(Math.min(state.cyrBuffer.length, result.out.length));
                 
                       //    result.out+="\u0008"
                         
	}
	
	// update state: backbuffer, bufferArray
	if (chunks.length > 0 && chunks[chunks.length - 1] == result.out.substr(result.out.length - 1)) {
		// no convertion took place, reset state
		state.reset();
	}
	else {
		while (state.transBuffer.length > maxcyrlength) {
			state.transBuffer = state.transBuffer.substr(chunks[0].length);
			chunks.shift();
			str = str.substr(1);
		}
		state.cyrBuffer = str;
	}
	return result;
}

function getBackBuffer(node, offset, count) {
		
	if (isExplorer()) { //.tagName.toUpperCase() == "EDITOR") {
	
		var range = document.selection.createRange();
		range.moveStart("character", -offset);
		var result = range.text.substr(-count);
		if (!result)
			result = "";
			
		return result;

	} else {
		return node.value.substring(0, node.selectionStart - offset).substr(-count);
	}
}

// need this for bookmarklets
function getSelectedNode() {
  if (document.activeElement)
	return document.activeElement;
  else
    if (window.getSelection && window.getSelection() && window.getSelection().rangeCount > 0) {
		var range = window.getSelection().getRangeAt(0);
		if (range.startContainer && range.startContainer.childNodes && range.startContainer.childNodes.length > range.startOffset)
			return range.startContainer.childNodes[range.startOffset]
    }
  return null;
}

function toggleCyrMode() {
	var node = getSelectedNode();
	if (node) {
		if (stateHash[node]) {
			if (removeKeyEventListener(node))
				delete stateHash[node];
		}
		else {
			if (addKeyEventListener(node))
				stateHash[node] = new StateObject(node);
		}
	}
}

function addKeyEventListener(node) {
	if (node.addEventListener)
		node.addEventListener("keypress", translitonkey, false);
	else if (node.attachEvent)
	    node.attachEvent("onkeypress", translitonkey);
	else return false;
	return true;
}
function removeKeyEventListener(node) {
	if (node.removeEventListener)
		node.removeEventListener("keypress", translitonkey, false);
	else if (node.detachEvent)
		node.detachEvent("onkeypress", translitonkey);
	else return false;
	return true;
}

function getSelectedText() {
	if (isExplorer()) {
		return document.selection.createRange().text;
	}
	else {
		var node = getSelectedNode();
		if (node && node.value && node.selectionStart != undefined && node.selectionEnd != undefined)
			return node.value.substring(node.selectionStart, node.selectionEnd);
	}
	return "";
}
"https://si.wiktionary.org/w/index.php?title=මාධ්‍යවිකි:Translit.js&oldid=8981" වෙතින් සම්ප්‍රවේශනය කෙරිණි