Сообщение от GuardCat
|
dmitriymar, зачем же словарь? Есть ГОСТ 7.79-2000, который обеспечивает безошибочную двухстороннюю транслитерацию. Вот пример в лоб:
//Если с английского на русский, то передаём вторым параметром true.
transliterate = (
function() {
var
rus = "щ ш ч ц ю я ё ж ъ ы э а б в г д е з и й к л м н о п р с т у ф х ь".split(/ +/g),
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(/ +/g)
;
return function(text, engToRus) {
var x;
for(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());
}
return text;
}
}
)();
var txt = "Съешь ещё этих мягких французских булок, да выпей же чаю!";
alert(transliterate(txt));
alert(transliterate(transliterate(txt), true));
|
скрипт не плохой но не доработанный автор ссылаясь на Гост забыл его прочесть как следует. а именно примечание с низу к примеру с буквой "Ц"
Однозначная обратимость обеспечивается специфическим употреблением латинских букв h, у, с и символа `. Буквы h, у не означают сами по себе никаких кирилловских букв и употребляются только в буквосочетаниях.
Для кириллических букв Ц и I установлены два варианта транслитерации. Ц передается либо латинской С, либо сочетанием CZ. Рекомендуется употреблять С перед буквами I, Е, Y, J, а в остальных случаях — CZ.