Сейчас: 16:45:53   29-го марта 2024 г.
UsefulScript.ruСкриптыРазныеПеревод текста на транслит
43
127

Скрипт перевода текста на транслит

В данной теме мы рассмотрим простейший JavaScript код, осуществляющий транслитерацию кириллического текста в траслит (на латинский алфавит) в соответствии с ГОСТ 7.79-2000 (схема Б).


Транслит (сокр. от «транслитерация») это метод написания русского (кириллического) текста латинскими буквами. Транслитерация чаще всего используются при работе на нерусифицированных системах (например, для названий файлов) или для перевода названий, или имен и т.д. (например, названия улиц, станций метро).


Для наглядной демонстрации работы скрипта, введите в поле, расположенное чуть ниже произвольный текст на русском языке (кириллицей) и нажмите на кнопку "В транслит".




Для написания нелатинского текста или слов, латинскими буквами воспользуйтесь следующим JavaScript кодом, который необходимо добавить в начало Вашей странички:

JavaScript код:
<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 
result '';
    for(
i=0;i<text.length;i++) {
        if(
transl[text[i]] != undefined) { result += transl[text[i]]; }
        else { 
result += text[i]; }
    }
    
document.getElementById('text').value result;
}
</script>

Далее необходимо добавить текстовое поле, куда будет вводиться кириллический текст и кнопку, по нажатию на которую будет осуществлен перевод введенного текста на транслит. Делается это следующим образом:

HTML код:
<div style="text-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 type="button" value="В транслит" onclick="send()">
</
div>
Дата создания: 18:45:26 03.12.2011 г.
Дата обновления: 22:36:47 08.03.2012 г.
Посещений: 28116 раз(а).

Комментарии посетителей (43 шт.):
Никита
0
# 889
(00:19:17  29.05.2013 г.)

А как сделать, что бы в одной форме вписал кириллицу, а транслит сразу появился в другой форме - без нажатия кнопки. Такое возможно?
Ответить

Administrator
3
# 891
(13:09:31  29.05.2013 г.)

Конечно возможно. Для этого в первом коде измените document.getElementById('text').value = result; на document.getElementById('text_2').value = result;
А вместо второго кода вставьте следующее:
<textarea id="text" cols="35" rows="8" onKeyUp="send()"></textarea>
<textarea id="text_2" cols="35" rows="8"></textarea>
Ответить

Никита
0
# 892
(14:21:24  29.05.2013 г.)

Тогда ещё один вопрос - как теперь из полученной строки убрать повторяющиеся символы. Видимо нужно какое-то регулярное выражение? Например, сейчас у меня из "сброс - настроек" получилось "sbros---nastroek", а надо было бы заменить три тире на одно, что бы в конечном итоге получилось "sbros-nastroek".
Ответить

Administrator
0
# 893
(14:28:45  29.05.2013 г.)

Ничего подобного у себя не наблюдаю. Возможно, Вы где-то сами изменили скрипт и заменяете символ пробела на дефис.
Ответить

Никита
-1
# 894
(14:31:53  29.05.2013 г.)

Да, я его заменил на дефис, и теперь мне нужно обрезать дополнительные символы, а так предложенный вами скрипт полностью работает. Можете подсказать как поправить мою "проблему"?
Ответить

Administrator
1
# 895
(14:45:48  29.05.2013 г.)

Замените document.getElementById('text_2').value = result; на
document.getElementById('text_2').value = result.replace(/-+/g,'-');
и все повторяющиеся дефисы будут удалены.
Ответить

Никита
0
# 897
(15:39:31  29.05.2013 г.)

Ещё один вопрос - как обрезать дефисы в начале и в конце строки?
Например, есть строка "-vyplatu-s-" надо сделать "vyplatu-s". По-хорошему нужно использовать функцию trim('-'), но куда её дописать что бы всё корректно работало?
Ответить

Administrator
0
# 898
(16:34:40  29.05.2013 г.)

Добавляем функцию - function trim(s) { return s.replace(/(^-*)|(-*$)/g,""); }
И перед выводом в textarea обрезаем лишние дефисы:
document.getElementById('text_2').value = trim(result.replace(/-+/g,'-'));
Ответить

Влад
0
# 1440
(22:32:07  29.01.2014 г.)

Напишите подробнее куда добавить function trim(s) { return s.replace(/(^-*)|(-*$)/g,""); }, а также этим document.getElementById('text_2').value = trim(result.replace(/-+/g,'-')); заменить последнюю строчку?
Ответить

Administrator
0
# 1442
(22:38:12  29.01.2014 г.)

Да, вместо document.getElementById('text').value=result; Но учтите, что в приведенном выше коде подразумевается, что у Вас два поля textarea (второе с id=text_2).
Ответить

Никита
0
# 903
(22:45:46  29.05.2013 г.)

Подскажите, а если изменить имя формы ввода (\'text\') на какое-то другое, какие при этом участки кода нужно заменить, а то я везде text заменяю и скрипт перестаёт работать :(
Ответить

Administrator
0
# 904
(22:51:51  29.05.2013 г.)

Заменить нужно только в трех местах: textarea id="text" и два раза getElementById('text').
Ответить

Саня
0
# 1615
(00:48:53  23.04.2014 г.)

А как сделать три поля с транслитом?
Например, тут вводим русские слова Имя:[ ] Фамилия:[ ] Отчество:[ ]
А ниже было тоже самое в трех полях, только уже транслит.
Ответить

Administrator
0
# 1620
(21:10:41  23.04.2014 г.)

Сделал в виде отдельной темы на форуме - Скрипт перевода текста нескольких полей на транслит.
Ответить

Сергей
0
# 1632
(20:54:26  02.05.2014 г.)

Подскажите, пожалуйста, как сделать, чтобы JavaScript код можно было прикреплять отдельным файлом, а не вписывать в страницу?
Ответить

Administrator
0
# 1633
(21:45:24  02.05.2014 г.)

Скопируйте JavaScript код в отдельный файл с расширением .js (например, site.js). Внутри .js файла не нужно указывать теги <script type="text/javascript"> и </script>.
Далее, в конце странички вставьте код: <script type="text/javascript" src="site.js"></script>
Ответить

Сергей
0
# 1634
(10:21:01  03.05.2014 г.)

Если я правильно, значит надо вставить код <script type="text/javascript" src="site.js"></script> перед тегом </body>?
Ответить

Administrator
0
# 1635
(12:13:26  03.05.2014 г.)

Да, все верно. Вы можете глянуть исходный код данной странички и увидите, что у нас так и сделано.
Ответить

Сергей
0
# 1638
(13:38:12  04.05.2014 г.)

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

Administrator
0
# 1639
(15:06:09  04.05.2014 г.)

Ответить

Алан
0
# 2092
(14:07:25  02.12.2014 г.)

Возможно ли сделать так, чтобы к двум, например, кириллическим символам соответствовал один латинский например так: transl['Къ']='Q'; transl['къ']='q';
Ответить

Administrator
0
# 2093
(20:48:52  02.12.2014 г.)

Возможно. Добавьте после строки var text = document.getElementById('text').value;
строчку text = text.replace(/Къ/g, "Q");
Ответить

Sirojiddin
0
# 2980
(14:48:29  16.01.2016 г.)

Здравствуйте, а как можно сделать и эти буквы?
transl["Ts"]="Ц"; transl["ts"]="ц"; transl["Ch"]="Ч"; transl["ch"]="ч"; transl["Sh"]="Ш"; transl["sh"]="ш";
transl["Yu"]="Ю"; transl["yu"]="ю"; transl["Ya"]="Я"; transl["ya"]="я";
Ответить

Administrator
1
# 2981
(15:31:02  16.01.2016 г.)

Точно так же: text = text.replace(/Ts/g, "Ц"); text = text.replace(/Ch/g, "Ч");
Ответить

Колян
0
# 2813
(00:47:28  12.11.2015 г.)

Есть переменная $text пхп, как ее поместить в вышеописанный javascript код? Просто в моём случае окно input лишнее на этом месте.
Ответить

Administrator
0
# 2814
(20:45:53  12.11.2015 г.)

Скрипт переделал из более актуального из темы Скрипт онлайн перевода на транслит:
<span id="text"></span>

<script type='text/javascript'>
function send(text){
var res = '';
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', Ц:'Cz', ц:'cz', Ч:'Ch', ч:'ch', Ш:'Sh', ш:'sh',
Щ:'Shh', щ:'shh', Ъ:'"', ъ:'"', Ы:'Y\'', ы:'y\'', Ь:'\'', ь:'\'', Э:'E\'', э:'e\'', Ю:'Yu', ю:'yu', Я:'Ya', я:'ya', ' ':'_'};

for(i=0;i<text.length;i++) {
if(transl[text[i]] != undefined) res += transl[text[i]];
else res += text[i];
}
res = res.replace(/Cz(?=i|e|y|j|I|E|Y|J)/g, "C");
res = res.replace(/cz(?=i|e|y|j|I|E|Y|J)/g, "c");
document.getElementById('text').innerHTML = res;
}
send('<?php echo $text;?>');
</script>
Ответить

Кочанов Сергей
0
# 3025
(06:41:23  07.02.2016 г.)

Отличный скрипт!
Решает проблему "крокозябров" на разных почтовиках из-за несовпадения кодировки при отправке из формы обратной связи на сайте.
Ответить

twsparkle
0
# 3390
(20:38:12  26.08.2016 г.)

ГОСТ ерунда, ибо он превращает Й в ДЖ.
Ответить

Vlad
0
# 3534
(21:48:14  02.11.2016 г.)

Скажите пожалуйста какая последовательность записи: сначала теги <html>, <body> а потом <script> and <div>?
Ответить

Administrator
0
# 3535
(22:31:18  02.11.2016 г.)

Да. Можете глянуть исходный код данной странички, чтобы увидеть, как у нас реализован пример для демонстрации работы скрипта.
Ответить

Vlad
0
# 3536
(00:19:52  03.11.2016 г.)

А если я добавлю некоторые буквы в массив, для получения украинского алфавита, мне что-то в скрипте еще нужно менять? Просто я попробовал так сделать (ввел буквы и соответственные транслитеры) но ничего теперь не работает...
Ответить

Administrator
0
# 3538
(17:16:19  03.11.2016 г.)

По идее должно работать.
Ответить

Иван
-1
# 3634
(20:07:17  21.12.2016 г.)

А как сделать - "Выделить результат перевода" на кнопку?
Ответить

Юрий Е.
0
# 3778
(16:05:40  07.03.2017 г.)

День добрый! А реально, чтобы скрипт работал с выделением? Например, выделил я в тексте слово "добрый" и рядом появился тултип "dobry'j"?
Ответить

Дмитрий
0
# 4027
(17:27:03  06.07.2017 г.)

Добрый день, как убрать textarea что бы текст в div переводился?
Ответить

Administrator
1
# 4028
(21:24:29  06.07.2017 г.)

В конце JavaScript кода есть строчка: document.getElementById('text').value = result;
Укажите в ней id блока div вместо 'text'.
Ответить

Ali
0
# 4087
(09:09:15  06.10.2017 г.)

Здравствуйте. Добавляю новые буквы в список - скрипт перестает работать. Если добавить всего пару букв, то всё норм. В чем может быть проблема?
Ответить

Administrator
0
# 4088
(19:08:23  06.10.2017 г.)

Возможно, Вы используете недопустимые спец. символы или кавычки. Неплохо бы сам код посмотреть, тогда и конкретика будет.
Ответить

Манас
0
# 4403
(07:50:37  14.01.2019 г.)

Доброго времени суток! У нас сайт на узбекской кириллице, но уже молодежь просят на латинице. Можно ли на движке Вордпресс установить кнопку, и человеку можно было читать на латинице.
Ответить

Бахтияр
0
# 4810
(13:39:28  23.03.2021 г.)

Заходите сайт ниже. На нём работает транслитератор для кыргызского языка. Попробуйте, может и вам подойдет: qyrgyz.com
Ответить

Barny
0
# 4456
(16:54:19  11.04.2019 г.)

Добрый день.
А как переписать строку так, чтобы "CZ" не перед, а наоборот, после букв I, Е, Y, J читалось как "С", а в остальных случаях - "CZ". Спасибо.
Ответить

Михаил
0
# 4505
(14:02:21  15.08.2019 г.)

Здравствуйте! У меня вот возникло два вопроса, подскажите если можно:
1. При выводе результата во второе поле, можно как-то чтобы автоматически дописывало 'текст переведенный в транслит'@pochta.ru?
2. В транслит у меня переводится поле содержащее полностью Фамилию Имя Отчество, переводит в транслит соответственно Familiya Imya Otchestvo, а можно сделать как-то, чтобы от имени и отчества оставалась только первая буква?
Ответить

Сергей
0
# 4584
(17:46:13  23.12.2019 г.)

Транслит (сокр. от «транслитерация») это метод написания букв (иероглифов) одной языковой системы буквами другой (порой весьма далёкой) языковой системы.
Но это лирика.
Есть вопрос - везде есть скрипты на любой вкус для транслитерации кириллики на латиницу, но никак не могу найти, чтобы наоборот - из латиницы в кириллические символы... Может кто-то сможет помочь?
Ответить

Закрыть
Ваше имя:
113 + 10 =
Добавить комментарий:
Ваше имя:
113 + 10 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 11

Какую CMS для сайта Вы предпочитаете?