пройти авторизацию: 

Сделать онлайн преводчик в транслит на своём сайте
UPD
446 1

Сделать онлайн преводчик в транслит на своём сайте

Сделать на своём сайте онлайн переводчик в транслит и обратно проще простого.

Часто у веб-мастера складывается такая ситуация, когда нужно русский контент перевести на латиницу или наоборот. Это может быть как пара слов (например имена для ЧПУ), так и тексты значительные по объёму.

При поддержке php и javascript установить собственный транслитер на сайте не представляет никакой сложности.

Шаг 1. Создаём файл транслита на JavaScript

Создаём файл translit.js содержащий:

/* Конфигурация */
 
var nameForm = "form1"; // имя формы
var textField = "textarea"; // имя элемента, в котором производится печать
 
var One_imp = 700; // задержка печати символа после нажатия клавиши
var Plural_imp = 30;  // задержка печати в промежутках, во время удержания клавиши
 
//-------------------
 
// переменные режимов
var register = "bottom";
var lang = "RUS";
 
// переменные таймеров
var timerID = null
var timerID0 = null
var timerRunning = false
 
//===         
function StopPress(){
 
   // останавливаем таймеры
   if(timerRunning)
   clearInterval(timerID);
   clearTimeout(timerID0);
   timerRunning = false;
}
//===
function StartPress(to_insert,mode){
 
   // убедиться, что часы остановлены
   StopPress(); 
 
   // запускаем таймер  
   timerID = setInterval("SymbolPress('" + to_insert + "'," + mode + ")",Plural_imp);    
   timerRunning = true;
}
//===
function StartBS(){
 
   // убедиться, что часы остановлены
   StopPress(); 
 
   // запускаем таймер  
   timerID = setInterval("Backspace()",Plural_imp);    
   timerRunning = true;
}
//===
function SymbolPress(to_insert,mode) {
 
// режим печати
if(mode) {
var strform1 = 'document.forms.'+nameForm+'.'+textField+'.value+=to_insert;';
eval(strform1);
} else {
 
// возвращение буквы из кода символа
var onf,sunb;
onf = new String (InstLang(to_insert));
 
// изменение регистра
if(register == "top") {
sunb=onf.toUpperCase();
} else if (register == 'bottom') {
sunb=onf.toLowerCase();
}
 
// печать символа в форме
var strform2 = 'document.forms.'+nameForm+'.'+textField+'.value+=sunb;';
eval(strform2);
 
} // конец режима печати
 
}  
//===
function Backspace(){
 
// стираем символы
var text;
var strform = 'text = new String (document.forms.'+nameForm+'.'+textField+'.value);';
strform += 'document.forms.'+nameForm+'.'+textField+'.value=text.substr(0,text.length-1);';
eval(strform);
 
}
//===
function updateMessage(to_insert,mode) {
 
// печать символа 
SymbolPress(to_insert,mode);
 
// запуск множественой печати
timerID0 = setTimeout("StartPress('"+to_insert+"',"+mode+")", One_imp);
 
}
//===
function msgOption(opt) {
 
switch(opt)
{
case "DEL":
 
// очистка формы, после подтверждения
if (confirm("Вы действительно хотите очистить форму?")) {
 
var strform = 'document.forms.'+nameForm+'.'+textField+'.value="";';
eval(strform);
 
}
 
break;
 
 
case "BS":
 
// удаляем символ
Backspace();
 
// ждём и запускаем, оптовое удаление
timerID0 = setTimeout("StartBS()", One_imp);
 
break;
 
 
case "LAN":
 
// установка языка
if(lang == 'RUS') {
    lang = 'ENG';
    document.getElementById("InsLang").className="lang2";
    document.getElementById("InsLang").innerHTML="English";
 } else if(lang == 'ENG')
   { lang = 'RUS'; 
     document.getElementById("InsLang").className="lang";
     document.getElementById("InsLang").innerHTML="Русский";
}
 
 
for(var i = 0; i < 33; i++) {
 
// возвращение буквы из кода символа
var onk,inb;
onk = new String (InstLang(i));
 
// выбор регистра
if(register == "top") {
inb=onk.toUpperCase();
} else if (register == 'bottom') {
inb=onk.toLowerCase();
}
 
document.forms.keyboard["b" + i].value=inb;
 
} // конец цыкла
 
break;
 
 
case "RGS":
 
// установка регистра
if (register == 'bottom'){
    register = 'top';
    document.getElementById("InsReg").className="register2";
    document.getElementById("InsReg").innerHTML="ВЕРХНИЙ";
} else if (register == 'top'){
    register = 'bottom';
    document.getElementById("InsReg").className="register";
    document.getElementById("InsReg").innerHTML="нижний";
}
 
 
for(var i = 0; i < 32; i++) {
 
// возвращение буквы из кода символа
var ont;
ont = new String (InstLang(i));
 
// выбор регистра
if(register == "top") {
document.forms.keyboard["b" + i].value=ont.toUpperCase();
} else if (register == 'bottom') {
document.forms.keyboard["b" + i].value=ont.toLowerCase();
}
 
} // конец цыкла
 
break;
 
} // конец переключателя
 
}
//===
function InstLang(num) {
 
// массивы с двумя языками       
var  arrRus = new Array('ё','й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю');
 
 var  arrEng = new Array('','q','w','e','r','t','y','u','i','o','p','[',']','a','s','d','f','g','h','j','k','l',';','\'','z','x','c','v','b','n','m','<','>'); 
 
// вывод
if(lang == 'RUS'){ return arrRus[num]; } else if(lang == 'ENG'){ return arrEng[num]; }  
 
}
//===                     
 
var lat_a=new Array()
var cyr_a=new Array()
var latcap_a=new Array()
var cyrcap_a=new Array()
 
lat_a[1]=new Array("jo","zh","i'","ch","sh","sch","je","ju","ja","a","b","v","g","d","e","z","i","k","l","m","n","o","p","r","s","t","u","f","h","c","'","y","`","j","h");
cyr_a[1]=new Array("ё","ж","й","ч","ш","щ","э","ю","я","а","б","в","г","д","е","з","и","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ь","ы","ъ","ж","х");
 
latcap_a[1]=new Array("Jo","JO","Zh","ZH","I'","Ch","CH","Sh","SH","Sch","SCH","Je","JE","Ju","JU","Ja","JA","A","B","V","G","D","E","Z","I","K","L","M","N","O","P","R","S","T","U","F","H","C","Y","J","H","'");
cyrcap_a[1]=new Array("Ё","Ё","Ж","Ж","Й","Ч","Ч","Ш","Ш","Щ","Щ","Э","Э","Ю","Ю","Я","Я","А","Б","В","Г","Д","Е","З","И","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ы","Ж","Х","Ь");
 
lat_a[2]=new Array("yo","zh","y'","ch","sh","sch","ye","yu","ya","a","b","v","g","d","e","z","i","k","l","m","n","o","p","r","s","t","u","f","h","c","'","y","`","j","h");
cyr_a[2]=new Array("ё","ж","й","ч","ш","щ","э","ю","я","а","б","в","г","д","е","з","и","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ь","ы","ъ","ж","х");
 
latcap_a[2]=new Array("Yo","YO","Zh","ZH","Y","Ch","CH","Sh","SH","Sch","SCH","Ye","YE","Yu","YU","Ya","YA","A","B","V","G","D","E","Z","I","K","L","M","N","O","P","R","S","T","U","F","H","C","Y","J","H");
cyrcap_a[2]=new Array("Ё","Ё","Ж","Ж","Й","Ч","Ч","Ш","Ш","Щ","Щ","Э","Э","Ю","Ю","Я","Я","А","Б","В","Г","Д","Е","З","И","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ы","Ж","Х");
 
function translate(tex)
{
var inputs = document.getElementsByName("ttype");
var selectedValue;
for (var i = 0; i < inputs.length; i++) {
    if (inputs[i].checked)
    {
        selectedValue = inputs[i].value;
        break;
    }
}
var ttype=selectedValue;
var buf=tex;
var i;
var latcap=latcap_a[ttype];
var cyrcap=cyrcap_a[ttype];
var lat=lat_a[ttype];
var cyr=cyr_a[ttype];
for (i=0;i<lat.length;i++)
      {
      if (tex.charCodeAt(0) < 128)
         buf=replace(buf,lat[i],cyr[i],1,0);
      else
         buf=replace(buf,cyr[i],lat[i],1,0);
      }
 
for (i=0;i<latcap.length;i++)
      {
      if (tex.charCodeAt(0) < 128)
         buf=replace(buf,latcap[i],cyrcap[i],1,0);
      else
         buf=replace(buf,cyrcap[i],latcap[i],1,0);
      }
 
if (ttype==2)
{
      for (i=0;i<lat.length;i++)
      {
         buf=replace(buf,"'","",1,0);
         buf=replace(buf,"`","",1,0);
      }
}
 
tex=buf;
return tex;
}
 
function replace(target,oldTerm,newTerm,caseSens,wordOnly) {
 
      var work = target;
      var ind = 0;
      var next = 0;
 
      if (!caseSens) {
        oldTerm = oldTerm.toLowerCase();
        work = target.toLowerCase();
      }
 
      while ((ind = work.indexOf(oldTerm,next)) >= 0) {
        if (wordOnly) {
          var before = ind - 1;
          var after = ind + oldTerm.length;
          if (!(space(work.charAt(before)) && space(work.charAt(after)))) {
            next = ind + oldTerm.length;
            continue;
          }
        }
        target = target.substring(0,ind) + newTerm +
        target.substring(ind+oldTerm.length,target.length);
        work = work.substring(0,ind) + newTerm +
        work.substring(ind+oldTerm.length,work.length);
        next = ind + newTerm.length;
        if (next >= work.length) { break; }
      }
 
      return target;
 
}

Шаг 2. Подключение транслит

Добавляем в html код необходимой страницы строку, как в моём примере:

<script type="text/javascript" src="//www.ipmoney.info/scripts/translit.js"></script>

Создаём форму переводчика

<form name="form1" method="post" action="">
Рекомендуется работа через браузеры семейства Opera.
<textarea name="textarea" class="item" height="400" width="500" cols="55" rows="15" wrap="virtual"></textarea>
<br />
<input type="button" class="input" style="width:100px" value="Перевести" onclick="document.form1.textarea.value=translate(document.form1.textarea.value);"> <input type="button" class="input" style="width:100px" value="Очистить" onclick="document.form1.textarea.value='';"> <input type="button" class="input" style="width:100px" value="В буфер" onclick="clipboardData.setData('Text',document.form1.textarea.value);">
 
<b>Стандарт перевода</b>:
ISO 9 - 1995 <input type="radio" value="2" title="Правила 2" name="ttype" checked>
ГОСТ 16876-71 <input type="radio" value="1" title="Правила 1" name="ttype">
</form>

Пример рабочего транслита онлайн

Рекомендуется работа через браузеры семейства Opera.


Стандарт перевода:
ISO 9 - 1995
ГОСТ 16876-71

Опубликовано:
Обсуждение

Чтобы оставить своё мнение, необходимо

пройти авторизацию: 

Комментарии и Отзывы: 1

Андрей

Здрасте! Не работает кнопка ” В буфер”, а она ой как нужна.

0

Чтобы оставить своё мнение, необходимо

пройти авторизацию: