Как сделать транскрипцию
Добрый день. Нужно сделать транскрипцию с турецкого языка. Вот 2 textarea:
<textarea id="decoder-form__txt" name="input" placeholder="Ваш текст на турецком языке"></textarea> <textarea id="decoder-form__result" placeholder="Как читается по-русски"></textarea> Вот скрипт: <script> document.getElementById('decoder-form__txt').onkeyup = function() { var text = this.value; // Буква Ğ var tr = "İğ Eğ Öğ Üğ iğ eğ öğ üğ".split(/ +/g); var ru = "Ий Эй Ой Юй ий ей ой юй".split(/ +/g); for(var x = 0; x < tr.length; x++) { text = text.split(tr[x]).join(ru[x]); } // Сочетания Y с гласными var tr = "Ya Ye Yu Yü ya ye yu yü".split(/ +/g); var ru = "Я Е Ю Ю ья ье ю ю".split(/ +/g); for(var x = 0; x < tr.length; x++) { text = text.split(tr[x]).join(ru[x]); } // Циркумфлекс var tr = "Gâ Kâ Lâ gâ kâ lâ Gû Kû Lû gû kû lû".split(/ +/g); var ru = "Гя Кя Ля гя кя ля Гю Кю Лю гю кю лю".split(/ +/g); for(var x = 0; x < tr.length; x++) { text = text.split(tr[x]).join(ru[x]); } // остальные буквы var tr = "A Â B C Ç D E F G Ğ H I İ Î J K L M N O Ö P R S Ş T U Û Ü V Y Z a â b c ç d e f g ğ h ı i î j k l m n o ö p r s ş t u û ü v y z".split(/ +/g); var ru = "А А Б ДЖ Ч Д Е Ф Г Г Х Ы И И Ж К Л М Н О Ё П Р С Ш Т У У Ю М Й З а а б дж ч д е ф г г х ы и и ж к л м н о ё п р с ш т у у ю м й з".split(/ +/g); for(var x = 0; x < tr.length; x++) { text = text.split(tr[x]).join(ru[x]); } document.getElementById('decoder-form__result').innerHTML = text; } </script> Столкнулся с проблемой. При положении в начале слова, буква может иметь другой звук. В частности нужно: 1. В начале слова и после гласных ye → е, ya → я, yu (yü) → ю: Bahtiyar → Бахтияр, сейчас выводит Бахтиьяр 2. В начале слова и после гласной действуют правила e → э, ı → и, ö → о, ü → у Прошу помощи. |
В общем-то всё работает, единственно нужно прописать правила для определения сочетаний букв в начале слова. При этом слова могут начинаться с большой и маленькой букв.
|
Цитата:
|
Нельзя, так как если сочетание букв в центре, то читается как "ья". С этим я разберусь, нужно именно перехватить начало слов. Тестирую:
Etmek - пока Етмек, а надо Этмек |
Янковиц,
делайте через RegExp и обьект замены |
Янковиц,
var obj = {e : 'э'};//дописать в нижнем регистре var reg = /(^|\s+)(e|r)/gim; // r заменить на нужые с|и|м|в|о|л|ы var value = 'Etmek'; function fn(value) { return value.replace(reg, function(a, b, c) { var caps = c.charAt(0) != (c = c.toLowerCase()).charAt(0); if(c in obj) c = obj[c]; if(caps) c = c.toUpperCase(); return b + c }) } value = fn(value); alert(value); value = 'etmek' value = fn(value); alert(value); |
Янковиц,
var obj = {ya : 'я'};//дописать в нижнем регистре var reg = /(i|u|o)(ya|r)/gim; // r заменить на нужые символы var value = 'Bahtiyar'; function fn(value) { return value.replace(reg, function(a, b, c) { var caps = c.charAt(0) != (c = c.toLowerCase()).charAt(0); if(c in obj) c = obj[c]; if(caps) c = c.toUpperCase(); return b + c }) } value = fn(value); alert(value); |
У вас получается, что düğün → дюйюн. Это в каком турецком так?
Цитата:
Цитата:
|
Эта ваша русская транскрипция имеет массу проблем, поскольку русский алфавит не способен передать все тонкости звучания турецкого языка. Используйте для транскрипции Международный Фонетический Алфавит (вы его видели, например, транскрипция в английском словаре) при помощи которого можно указать все тонкости произношения стандартного турецкого языка. Иначе это будет «лец ми спик фром май харт», только по турецки!
|
Часовой пояс GMT +3, время: 12:20. |