මාධ්යවිකි:Translit.js
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.
- මෙම script සතුව උපදෙස් උප පිටුවක් නොපවතියි. Please නිර්මාණය කරන්න.
- ප්රයෝජනවත් සබැඳි: උප පිටු ලැයිස්තුව • සබැඳි • යළි යොමු
/*
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 "";
}