ব্যবহারকারী:Alex brollo/t.js
টীকা: সংরক্ষণ করার পর, পরিবর্তনসমূহ তৎক্ষণাৎ নাও দেখাতে পারে। আপনার ব্রাউজারের ক্যাশ কিভাবে এড়াবেন তা জানতে এখানে ক্লিক করুন।
- ফায়ারফক্স / সাফারি: Shift ধরে রাখা অবস্থায়পুনঃলোড করুন-এ ক্লিক করুন, অথবা Ctrl-F5 বা Ctrl-R (ম্যাক-এ ⌘-R) চাপুন
- গুগল ক্রোম: Ctrl-Shift-R (ম্যাক-এ ⌘-Shift-R) চাপুন
- ইন্টারনেট এক্সপ্লোরার: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 চাপুন
- অপেরা: মেনু → ব্যবস্থাপনাসমূহ-এ যান (ম্যাকে অপেরা → পছন্দসমূহ) এবং এরপর গোপনীয়তা ও সুরক্ষা → ব্রাউজিং-এর তথ্য পরিষ্কার করুন → ক্যাশে করা ছবি ও ফাইলগুলি।
অন্যান্য ব্রাউজার সম্পর্কে বিশদ নির্দেশাবলীর জন্য, উইকিপিডিয়া:আপনার ক্যাশে বাইপাস করুন দেখুন।
/* version 25.11.2016
table is a dictionary where keys are codes/scripts and values are list from a conversion table at ব্যবহারকারী আলাপ:Alex brollo/লিপ্যন্তর
table.ISO.indexOf("m̐") gives 19
table.Bengali[table.ISO.indexOf("m̐")] gives "ঁ"
It is reversible:
table.ISO[table.Bengali.indexOf( "ঁ")] gives "m̐"
Transliteration keeps three steps:
1. Text is splitted into units (characters or double characters as ri, sh....); resulting list is cloned into lista1;
2. The list resulting from step1 is converted into "rought bengali" replacing roman units with bengali units resultin grom table object; resulting list is cloned into lista2;
3. The list resulting from step2 is browsed and edited for changes needed for vowels merging and conjuncts; resulting list is cloned into lista3; finally the edited bengali list
is simply joined by .join(""), and bengali text is got.
Next step will be, to find and fix exceptions using data lista1, lista2, lista3.
*/
var offs={"Bengali":2432,"Devanagari":2304,"lacking":"\u0984\u098d\u098e\u0991\u0992\u09a9\u09b1\u09b3\u09b4\u09b5\u09ba\u09bb"+
"\u09c5\u09c6\u09c9\u09ca\u09cf\u09d1\u09d2\u09d3\u09d4\u09d5\u09d6\u09d8\u09d9\u09da\u09db\u09de\u09e4\u09e5\u09fc\u09fd"+
"\u09fe\u09ff"};
var table={
"ISO":["a","ā","i","ī","u","ū","r̥","r̥̄","l̥","l̥̄","e","ē","ê","ai","o","ō","ô","au","ṁ","m̐","ḥ","k","kh","g","gh","ṅ","c","ch","j","jh","ñ","ṭ","ṭh","ḍ","ṛ","ḍh","ṛh","ṇ","t","th","d","dh","n","p","ph","b","bh","m","y","ẏ","r","l","v","ś","ṣ","s","h","’","q","k͟h","ġ","z","f","x","0","1","2","3","4","5","6","7","8","9",'.'],
"IAST":["a|A","ā|Ā","i|I","ī|Ī","u|U","ū|Ū","ṛ|Ṛ","ṝ|Ṝ","ḷ|Ḷ","ḹ|Ḹ","","e|E","","ai|Ai","","o|O","","au|Au","ṃ|Ṃ","","ḥ|Ḥ","k|K","kh|Kh","g|G","gh|Gh","ṅ|Ṅ","c|C","ch|Ch","j|J","jh|Jh","ñ|Ñ","ṭ|Ṭ","ṭh|Ṭh","ḍ|Ḍ","","ḍh|Ḍh","","ṇ|Ṇ","t|T","th|Th","d|D","dh|Dh","n|N","p|P","ph|Ph","b|B","bh|Bh","m|M","y|Y","","r|R","l|L","v|V","ś|Ś","ṣ|Ṣ","s|S","h|H","","","","","","","x","0","1","2","3","4","5","6","7","8","9",'.'],
"HK":["a","A","i","I","u","U","R","RR","lR","lRR","","e","","ai","","o","","au","M","","H","k","kh","g","gh","G","c","ch","j","jh","J","T","Th","D","","Dh","","N","t","th","d","dh","n","p","ph","b","bh","m","y","","r","l","v","z","S","s","h","","","","","","","x","0","1","2","3","4","5","6","7","8","9",'.'],
"NLK":["a","ā","i","ī","u","ū","ṛ","","","","","ē","","ai","","ō","","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","","","","","","","x","0","1","2","3","4","5","6","7","8","9",'.'],
"ITRANS":["a","aa","i","ii|I","u","uu|U","RRi|R^i","RRI|R^I","LLi|L^i","LLI|L^I","","e","","ai","","o","","au",".m|N",".N","H","k","kh","g","gh","~N","ch","Ch","j","jh","~n","T","Th","D","","Dh","","N","t","th","d","dh","n","p","ph","b","bh","m","y","","r","l","v|w","sh","Sh","s","h",".a","","","","","","x","0","1","2","3","4","5","6","7","8","9",'.'],
"MarkLikhita":["a","á","i","í","u","ú","ri","","","","","e","","ai","","o","","au","","ṇ","","k","kh","g","gh","ṅ","c","ch","j","jh","ñ","ṭ","ṭh","ḍ","ṛ","ḍh","ṛh","n","t","th","d","dh","n","p","ph","b","bh","m","j","y","r","l","v","sh","sh","s","h",'’','q','k͟h','ġ','z','f',"x","0","1","2","3","4","5","6","7","8","9","."],
"Devanagari":["अ","आ|ा","इ|ि","ई|ी","उ|ु","ऊ|ू","ऋ|ृ","ॠ|ॄ","ऌ|ॢ","ॡ|ॣ","ऎ|ॆ","ए|े","ऍ|ॅ","ऐ|ै","ऒ|ॊ","ओ|ो","ऑ|ॉ","औ|ौ","ं","ँ","ः","क्","ख्","ग्","घ्","ङ्","च्","छ्","ज्","झ्","ञ्","ट्","ठ्","ड्","ड़्","ढ्","ढ़्","ण्","त्","थ्","द्","ध्","न्","प्","फ्","ब्","भ्","म्","य्","य़्","र्","ल्","व्","श्","ष्","स्","ह्","ऽ","क़्","ख़्","ग़्","ज़्","फ़्","क्स","०","१","२","३","४","५","६","७","८","९",'।'],
"Bengali":["অ|!","আ|া","ই|ি","ঈ|ী","উ|ু","ঊ|ূ","ঋ|ৃ","ৠ|ৄ","ঌ|ৢ","ৡ|ৣ","","এ|ে","","ঐ|ৈ","","ও|ো","","ঔ|ৌ","ং","ঁ","ঃ","ক্","খ্","গ্","ঘ্","ঙ্","চ্","ছ্","জ্","ঝ্","ঞ্","ট্","ঠ্","ড্","ড়্","ঢ্","ঢ়্","ণ্","ত্","থ্","দ্","ধ্","ন্","প্","ফ্","ব্","ভ্","ম্","য্","য়্","র্","ল্","ব্","শ্","ষ্","স্","হ্","ঽ","ক়্","খ়্","গ়্","জ়্","ফ়্","ক্স","০","১","২","৩","৪","৫","৬","৭","৮","৯",'।']};
// conversion tables for split1()
var doubleVowel=["ri", "ai", "au"];
var doubleVowelC=["α","β","γ"];
var doubleCons=["kh", "gh", "ch", "jh", "th", "bh", "ph", "dh", "sh", "ṭh", "ḍh", "ṛh"];
var doubleConsC=["δ","ε","ζ","η","θ","ι","κ","λ","μ","ν","ξ","ο"];
var lista1,lista2,lista3;
// splits Mark-Likhita text into a list of single, or double, characters, new step 1 of transliteration
function split1(testo) {
testo=testo.toLocaleLowerCase();
$.each(doubleVowel, function (index,value) {
testo=testo.replace(RegExp(value,"g"),doubleVowelC[index]);
});
$.each(doubleCons, function (index,value) {
testo=testo.replace(RegExp(value,"g"),doubleConsC[index]);
});
testo=testo.split("");
var pos,i;
for (i=0;i<testo.length;i+=1) {
pos=doubleVowelC.indexOf(testo[i]);
if (pos!==-1) testo[i]=doubleVowel[pos];
}
for (i=0;i<testo.length;i+=1) {
pos=doubleConsC.indexOf(testo[i]);
if (pos!==-1) testo[i]=doubleCons[pos];
}
lista1=$.extend(true, [], testo);
return testo;
}
function convb(lista) {
var i;
for (i=0;i<lista.length;i+=1) {
if (table.MarkLikhita.indexOf(lista[i])>-1) {
lista[i]=table.Bengali[table.MarkLikhita.indexOf(lista[i])];
if (lista1[i]==="n") lista[i]="ন্"; // general rule for n
}
if (i>0) {
if (lista1[i]==="n") lista[i]="ন্"; // general rule for n
if (lista1[i-1]==="k" && lista1[i]==="sh") lista[i]="ষ্" ; //rule 1
if (lista1[i-1]==="j" && lista1[i]==="n") lista[i]="ঞ্" ; //rule 2
if (lista1[i-1]==="sh" && lista1[i]==="n") { //rule 3
lista[i-1]="ষ্" ;
lista[i]="ণ্";
}
if (lista[i-1].indexOf("্")===1 && lista1[i]==="y") lista[i]="য্" ; // rule 4
if (lista[i-1].indexOf("|")>-1 && lista1[i]==="ri") lista[i]="রি"; // rule 5
if (lista1[i-1]==="n" && lista1[i]==="g") { //rule 6
lista[i-1]="";
lista[i]="ঙ্গ্";
}
if (lista1[i-1]==="ṇ" && lista1[i]==="g") { //rule 7
lista[i-1]="ং";
lista[i]="";
}
if (lista1[i-1]==="sh" && (lista1[i]==="k"||lista1[i]==="p"||lista1[i]==="ph"||lista1[i]==="ṭ"||lista1[i]==="ṭh")) lista[i-1]="ষ্" ; //rule 8-12
// rule 13
if (lista1[i-1]==="sh" && lista1[i]==="t") {
lista[i-1]="ষ্";
lista[i]="ট্" ;
}
// rule 14
if (lista1[i-1]==="sh" && lista1[i]==="th") {
lista[i-1]="ষ্";
lista[i]="ঠ্" ;
}
if (lista1[i-1]==="n" && (lista1[i]==="ṭ"||lista1[i]==="ṭh"||lista1[i]==="ḍ"||lista1[i]==="ḍh")) lista[i-1]="ণ্" ; //rule 15-18
if (lista1[i-1]==="n" && (lista1[i]==="t"||lista1[i]==="th"||lista1[i]==="d"||lista1[i]==="dh")) lista[i-1]="ন্"; // rule 19-22
if (lista1[i-1]==="ri" && lista1[i]==="sh") lista[i]="ষ্"; // rule 23
} if (lista1[i-1]==="ri" && lista1[i]==="n") lista[i]="ণ্"; // rule 24
}
lista2=$.extend(true, [], lista);
return lista;
}
function mergeb(l) {
var i;
var virama="\u09cd";
var zwnj="\u200c";
for (i=0;i<l.length;i+=1) {
// test for a vowel
if (l[i].split("|").length===2) {
// it's a vowel; test for first char of a word
if (i===0 || (i>0 && ! /[\u0995-\u09b9]/.test(l[i-1]) ) ) {
l[i]=l[i].split("|")[0];
} else {
l[i]=l[i].split("|")[1].replace("!","");
l[i-1]=l[i-1].replace(virama+zwnj,"");
}
// it's not a vowel
} else {
// test for a consonant
if (i>0) l[i-1]=l[i-1].replace(zwnj,"");
if (i===l.length-1 || (i>0 && ! /[\u0995-\u09b9]/.test(l[i+1]) )) l[i]=l[i].replace(virama+zwnj,"");
}
}
lista3=$.extend(true,[],l);
return l.join("");
}
function testTrans(testo) {
return mergeb(convb(split1(testo)));
}
function mlbGo() {
var r= /({{tr\|)([^|]+?)(}})/gi;
var testo=$("#wpTextbox1").val();
var lista=testo.match(r);
var temp,newTr;
for (i=0;i<lista.length;i+=1) {
temp= (/({{tr\|)([^|]+?)(}})/g).exec(lista[i]);
newTr=temp[1]+temp[2]+"|"+mergeb(convb(split1(temp[2])))+temp[3];
testo=testo.replace(lista[i],newTr);
console.log(lista[i],newTr);
}
$("#wpTextbox1").val(testo);
}
/* First try of a indic-to-indic transliterator
Uses unicode ranges of characters whose first .codePointAt is stored into the dictionary offs
Accepts three parameters:
* string: string to convert
* to: script into which is to be transliterated (default Deganavari)
* from: script from which is to be transliterated (default Bangali)
Returns transliterated string; only the charachters into the range of language from are tranliterated
*/
function convIndic(ch,to,from) {
if (from===undefined) from="Bengali";
if (to===undefined) to="Devanagari";
var offset=offs[to]-offs[from];
var tr="";
var c="";
$.each(ch.split(""), function(index,value) {
// first: is value into devanagari range?
if (value.codePointAt()>=offs[from] && value.codePointAt()<offs[from]+128) {
c=String.fromCharCode(value.codePointAt()+offset);
// second: is bengali-transformed into the list of lacking characters?
if (to==="Bengali" && offs.lacking.indexOf(c)>-1) {
c="♦";
}
tr+=c;
} else tr+=value;
});
return tr;
}
/* diacritici */
if ( typeof $ != 'undefined' && typeof $.fn.wikiEditor != 'undefined' ) {
$( function() {
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'advanced',
'group': 'format',
'tools': {
'mlb': {
label: 'mlb',
type: 'button',
icon: '//upload.wikimedia.org/wikipedia/commons/thumb/d/da/Tilde_overlay.svg/20px-Tilde_overlay.svg.png',
action: {
type: 'callback',
execute: mlbGo
}
}
}
});
});
}
//$(".tr").click(function() {$(".tr").toggle();});
if ($("#content .tr").length>0) {
mw.util.addPortletLink(
'p-tb',
'javascript:void(0)',
'ToggleChar',
't-toggle',
'Toggle characters Roman - Bengali'
);
$("#t-toggle").click(function() {
$(".tr").toggle();
});
}