Всем Спасибо!
Буду использовать, с некоторой доработкой, 1-й скрипт.
Нашел возможность разделить рус/лат на заглавные/прописные. Еще раз, всем большое спасибо за вашу помощь! Вал. :thanks: |
Цитата:
Однозначная обратимость обеспечивается специфическим употреблением латинских букв h, у, с и символа `. Буквы h, у не означают сами по себе никаких кирилловских букв и употребляются только в буквосочетаниях. Для кириллических букв Ц и I установлены два варианта транслитерации. Ц передается либо латинской С, либо сочетанием CZ. Рекомендуется употреблять С перед буквами I, Е, Y, J, а в остальных случаях — CZ. |
Привет из 2017)
Вот мой вариант транслита Добавил возможность не переводить текст между двумя символами (например []) //Пример: function translit(text, engToRus, replace){ var rus = "щшчцюяёжъыэабвгдезийклмнопрстуфхь".split(""), eng = "shh sh ch cz yu ya yo zh `` y' e` a b v g d e z i j k l m n o p r s t u f x `".split(" ") for(var x = 0; x < rus.length; x++){ text = text.split(engToRus ? eng[x] : rus[x]).join(engToRus ? rus[x] : eng[x]); text = text.split(engToRus ? eng[x].toUpperCase() : rus[x].toUpperCase()).join(engToRus ? rus[x].toUpperCase() : eng[x].toUpperCase()); } if(replace){ r = replace.split(",") try{ pr = new RegExp("([^\\"+r[0]+"]+)(?=\\"+r[1]+")","g") text.match(pr).forEach(function(i){ text=text.split(r[0]+i+r[1]).join(translit(i, engToRus ? "" : true)) }) }catch(e){} } return text; } //с английского на русский alert(translit("text", true)) //тоже самое, но без перевода того, что написано в [ ] alert(translit("text [text]", true, "[,]")) //с русского на английский alert(translit("текст")) //тоже самое, но без перевода того, что написано в {[} {]} alert(translit("текст {[}текст{]}", true, "{[},{]}")) |
Занекропостим:)
Спасибо всем за идеи, подсократил и, возможно, ускорил код. Применяю для создания url из заголовка статьи в нашем издании: function translit(str) { str = str.toLowerCase().replace(/<.+>/, ' ').replace(/\s+/, ' '); var c = { 'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'jo', 'ж':'zh', 'з':'z', 'и':'i', 'й':'j', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o', 'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'c', 'ч':'ch', 'ш':'sh', 'щ':'shch', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'ju', 'я':'ja', ' ':'-', ';':'', ':':'', ',':'', '—':'-', '–':'-', '.':'', '«':'', '»':'', '"':'', "'":'', '@':'' } var newStr = new String(); for (var i = 0; i < str.length; i++) { ch = str.charAt(i); newStr += ch in c ? c[ch] : ch; } return newStr; } |
Часовой пояс GMT +3, время: 13:12. |