Показать сообщение отдельно
  #6 (permalink)  
Старый 10.04.2012, 20:07
Новичок на форуме
Отправить личное сообщение для vaalsh Посмотреть профиль Найти все сообщения от vaalsh
 
Регистрация: 10.04.2012
Сообщений: 4

Сообщение от 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));
Спасибо большое!
Забыл сказать, в исходной строке могут быть латинские символы, которые должны транслироваться без изменения...
Ответить с цитированием