Создать ответ 
Скрипт перевода текста на транслит
Автор Сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #1
Скрипт перевода текста на транслит
Данная тема создана с ответ на комментарий #1638 к теме Скрипт перевода текста на транслит.

Приведу текст комментария дословно:
(04.05.2014 12:38:12)Сергей писал(а):В соответствии с ГОСТ 7.79-2000 (схема Б) - Ц передается либо латинской С, либо сочетанием CZ. Рекомендуется употреблять С перед буквами I, Е, Y, J, а в остальных случаях — CZ.
Возможно ли это реализовать с помощью javascript?

Теперь ответ.
Да, действительно, в соответствии с ГОСТ-ом 7.79-2000 (схема Б) - Ц передается либо латинской С, либо сочетанием CZ.

Для того чтобы учесть, чтобы С была только перед буквами I, Е, Y, J, а в остальных случаях — CZ, необходимо использовать такой код с дополнительными проверками:

Код:
<script type='text/javascript'>
function send(){
var text=document.getElementById('text').value;
var transl=new Array();
    transl['А']='A';     transl['а']='a';
    transl['Б']='B';     transl['б']='b';
    transl['В']='V';     transl['в']='v';
    transl['Г']='G';     transl['г']='g';
    transl['Д']='D';     transl['д']='d';
    transl['Е']='E';     transl['е']='e';
    transl['Ё']='Yo';    transl['ё']='yo';
    transl['Ж']='Zh';    transl['ж']='zh';
    transl['З']='Z';     transl['з']='z';
    transl['И']='I';     transl['и']='i';
    transl['Й']='J';     transl['й']='j';
    transl['К']='K';     transl['к']='k';
    transl['Л']='L';     transl['л']='l';
    transl['М']='M';     transl['м']='m';
    transl['Н']='N';     transl['н']='n';
    transl['О']='O';     transl['о']='o';
    transl['П']='P';     transl['п']='p';
    transl['Р']='R';     transl['р']='r';
    transl['С']='S';     transl['с']='s';
    transl['Т']='T';     transl['т']='t';
    transl['У']='U';     transl['у']='u';
    transl['Ф']='F';     transl['ф']='f';
    transl['Х']='X';     transl['х']='x';
    transl['Ц']='C';     transl['ц']='c';
    transl['Ч']='Ch';    transl['ч']='ch';
    transl['Ш']='Sh';    transl['ш']='sh';
    transl['Щ']='Shh';    transl['щ']='shh';
    transl['Ъ']='"';     transl['ъ']='"';
    transl['Ы']='Y\'';    transl['ы']='y\'';
    transl['Ь']='\'';    transl['ь']='\'';
    transl['Э']='E\'';    transl['э']='e\'';
    transl['Ю']='Yu';    transl['ю']='yu';
    transl['Я']='Ya';    transl['я']='ya';

    var res='';
    var arr = "IЕYJieyj";
    for(i=0;i<text.length;i++) {
        if(transl[text[i]]!=undefined) {
            if (text[i]=='ц' && arr.indexOf(res.charAt(res.length-1))!=-1) {res+="cz";}
            else if (text[i]=='Ц' && arr.indexOf(res.charAt(res.length-1))!=-1) {res+="CZ";}
            else {res+=transl[text[i]];}
        }
        else { res+=text[i]; }
    }
    document.getElementById('text').value=res;
}
</script>

<div align="center">
<textarea id="text" cols="35" rows="8" style="width:600px; height:150px;
    color:#0C3A45; border:1px solid #CCCCCC; background:#F2F2F2;"></textarea>
<br>
<input id="send" type="button" value="В транслит" onclick="send()">
</div>
04.05.2014 14:05:36
Найти все сообщения Цитировать это сообщение
SerCher Не на форуме
Рядовой
*

Сообщений: 4
У нас с: May 2014
Сообщение: #2
RE: Скрипт перевода текста на транслит
К сожалению, при любом сочетании с (ц) транслитерирует как (cz).
04.05.2014 14:55:06
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #3
RE: Скрипт перевода текста на транслит
Странно, что у Вас не работает. Проверил в двух разных браузерах, и все ОК.

Вот еще немного уменьшил код за счет описания массива:
Код:
<script type='text/javascript'>
function send(){
var text=document.getElementById('text').value;
var transl={А:'A', а:'a', Б:'B', б:'b', В:'V', в:'v', Г:'G', г:'g',
Д:'D', д:'d', Е:'E', е:'e', Ё:'Yo', ё:'yo', Ж:'Zh', ж:'zh', З:'Z', з:'z',
И:'I', и:'i', Й:'J', й:'j',  К:'K', к:'k', Л:'L', л:'l', М:'M', м:'m',
Н:'N', н:'n',  О:'O', о:'o', П:'P', п:'p', Р:'R', р:'r', С:'S', с:'s',
Т:'T', т:'t', У:'U', у:'u', Ф:'F', ф:'f', Х:'X', х:'x', Ц:'C', ц:'c',
Ч:'Ch', ч:'ch', Ш:'Sh', ш:'sh', Щ:'Shh', щ:'shh', Ъ:'"', ъ:'"', Ы:'Y\'', ы:'y\'',
Ь:'\'', ь:'\'', Э:'E\'', э:'e\'',  Ю:'Yu', ю:'yu', Я:'Ya', я:'ya'};


var res='';
var arr = "IЕYJieyj";
for(i=0;i<text.length;i++) {
    if(transl[text[i]]!=undefined) {
        if (text[i]=='ц' && arr.indexOf(res.charAt(res.length-1))!=-1) {res+="cz";}
        else if (text[i]=='Ц' && arr.indexOf(res.charAt(res.length-1))!=-1) {res+="CZ";}
        else {res+=transl[text[i]];}
    }
    else { res+=text[i]; }
}
document.getElementById('text').value=res;
}
</script>

<div align="center">
<textarea id="text" cols="35" rows="8" style="width:600px; height:150px;
    color:#0C3A45; border:1px solid #CCCCCC; background:#F2F2F2;"></textarea>
<br>
<input id="send" type="button" value="В транслит" onclick="send()">
</div>

Проверял работу скрипта строкой Блюдце, Яйцо, Цапля, получил результат: Blyudce, Yajczo, Caplya.
04.05.2014 15:53:41
Найти все сообщения Цитировать это сообщение
SerCher Не на форуме
Рядовой
*

Сообщений: 4
У нас с: May 2014
Сообщение: #4
RE: Скрипт перевода текста на транслит
Отдельные сочетания из двух букв работают, а вот например (цаца) транслитерирует как (czaca).
Почему это происходит не понятно.

Возможно, это можно исправить, добавив код с дополнительными проверками остальных гласных.
К сожалению, не знаю как реализовать (только начал изучать javascript).
PS: Это только моё предположение.

Кстати Цапля должно перевестись как Czaplya, а не как Caplya согласно правил.
(Последний раз сообщение было отредактировано 04.05.2014 в 16:40:36, отредактировал пользователь SerCher.)
04.05.2014 16:30:27
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #5
RE: Скрипт перевода текста на транслит
Упс, теперь понял свою ошибку. Надо было вставлять CZ перед I, Е, Y, J, а я делал после. Короче все напутал. Wall

Скоро переделаю...
04.05.2014 16:43:46
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,279
У нас с: Aug 2011
Сообщение: #6
RE: Скрипт перевода текста на транслит
Вот, сделал в виде отдельной темы на сайте - Скрипт онлайн перевода на транслит.

Думаю это то, что Вам надо.
04.05.2014 18:24:39
Найти все сообщения Цитировать это сообщение
SerCher Не на форуме
Рядовой
*

Сообщений: 4
У нас с: May 2014
Сообщение: #7
RE: Скрипт перевода текста на транслит
Спасибо огромное.
04.05.2014 18:56:54
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)



Mail.ru LiveInternet

© Copyright 2011-2016 by UsefulScript.ru