Скрипт перевода текста на транслит
В данной теме мы рассмотрим простейший JavaScript код, осуществляющий транслитерацию кириллического текста в траслит (на латинский алфавит) в соответствии с ГОСТ 7.79-2000 (схема Б).
Транслит (сокр. от «транслитерация») это метод написания русского (кириллического) текста латинскими буквами. Транслитерация чаще всего используются при работе на нерусифицированных системах (например, для названий файлов) или для перевода названий, или имен и т.д. (например, названия улиц, станций метро).
Для наглядной демонстрации работы скрипта, введите в поле, расположенное чуть ниже произвольный текст на русском языке (кириллицей) и нажмите на кнопку "В транслит".
Для написания нелатинского текста или слов, латинскими буквами воспользуйтесь следующим 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>
Далее необходимо добавить текстовое поле, куда будет вводиться кириллический текст и кнопку, по нажатию на которую будет осуществлен перевод введенного текста на транслит. Делается это следующим образом:
<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>
Перед публикацией все комментарии проходят обязательную модерацию!
Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
А вместо второго кода вставьте следующее:
<textarea id="text" cols="35" rows="8" onKeyUp="send()"></textarea>
<textarea id="text_2" cols="35" rows="8"></textarea>
document.getElementById('text_2').value = result.replace(/-+/g,'-');
и все повторяющиеся дефисы будут удалены.
Например, есть строка "-vyplatu-s-" надо сделать "vyplatu-s". По-хорошему нужно использовать функцию trim('-'), но куда её дописать что бы всё корректно работало?
И перед выводом в textarea обрезаем лишние дефисы:
document.getElementById('text_2').value = trim(result.replace(/-+/g,'-'));
Например, тут вводим русские слова Имя:[ ] Фамилия:[ ] Отчество:[ ]
А ниже было тоже самое в трех полях, только уже транслит.
Далее, в конце странички вставьте код: <script type="text/javascript" src="site.js"></script>
Возможно ли это реализовать с помощью javascript?
строчку text = text.replace(/Къ/g, "Q");
transl["Ts"]="Ц"; transl["ts"]="ц"; transl["Ch"]="Ч"; transl["ch"]="ч"; transl["Sh"]="Ш"; transl["sh"]="ш";
transl["Yu"]="Ю"; transl["yu"]="ю"; transl["Ya"]="Я"; transl["ya"]="я";
<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>
Решает проблему "крокозябров" на разных почтовиках из-за несовпадения кодировки при отправке из формы обратной связи на сайте.
Укажите в ней id блока div вместо 'text'.
А как переписать строку так, чтобы "CZ" не перед, а наоборот, после букв I, Е, Y, J читалось как "С", а в остальных случаях - "CZ". Спасибо.
1. При выводе результата во второе поле, можно как-то чтобы автоматически дописывало 'текст переведенный в транслит'@pochta.ru?
2. В транслит у меня переводится поле содержащее полностью Фамилию Имя Отчество, переводит в транслит соответственно Familiya Imya Otchestvo, а можно сделать как-то, чтобы от имени и отчества оставалась только первая буква?
Но это лирика.
Есть вопрос - везде есть скрипты на любой вкус для транслитерации кириллики на латиницу, но никак не могу найти, чтобы наоборот - из латиницы в кириллические символы... Может кто-то сможет помочь?