Войти

Показать полную графическую версию : Пишем JavaScript перекодировки из кириллицы в латиницу


maasja
30-05-2009, 22:12
Здравствуйте дорогие форумчане!!! давайте в режиме онлайн напишем джава скрипт, который делает транслит з кирилицы на латиницу, типа пишем "Привет" , а получается "Privet". Кто со мной? )))

proxy
30-05-2009, 22:32
так есть же, уже....
вариант 1 (http://www.translit.ru/)
вариант 2 (http://www.tigir.com/translit/translit.php)
и т.д. (http://www.google.com/search?client=opera&rls=ru&q=перевод+транслит&sourceid=opera&ie=utf-8&oe=utf-8)

Да и писать то тут то не так много-то:
1. массив замен: А-A, ....Z-З и т.д.
2. и функция:
2.1. переберает текст по буквам
2.3. выясняет в каком языке буква
2.4. переводит в нужный язык / транслит

maasja
30-05-2009, 22:39
У себя на сайте, на странице контактов делаю форму для задания вопроса. Я хочу чтоб вопрос мне выслало смс-кой и на мобильный и на мейл.. Даже знаю как это сделать, я на билайне, и он поддерживает отсылку смс с мейла на телефон, но есть одна проблемка. Писать нужно на латинице.

Вот потому мне нужно чтоб вопрос отправляемый на мэйл был в оригиральном варианте, а той что на смс латиницей. Типа "Privet" , а не "Привет"

proxy
30-05-2009, 23:01
вот пример на js (http://forum.antichat.ru/showthread.php?p=1281463)
и на php (http://www.webfocus.ru/scripts/Stat-i/translite.html)

прикручивайте...

+ вам в этот форум (http://forum.oszone.net/forum-22.html)

maasja
31-05-2009, 02:05
Всё равно есть проблемка со скриптом.А точнее в букве "и", оно не распознает с какой раскладки она писалась, с английской или с украинсой. Что делать?(((

proxy
31-05-2009, 02:24
А точнее в букве "и"
на js скрипте у меня все ок.

Если php, то там пример неудачный, что то не глянул сначала.
Там лучше так же как и на js - на массивах.
С перебором текста, а не всех-всех замен...

maasja
05-06-2009, 04:48
Как скриптом различить украинские буквы от русских? Например если у меня русская раскладка клавы, и я написал "и", то хочу чтоб она виделась как русская буква, а если написал "и" на украинской раскладке, то как украинская. Помогите плиз.

Sham
07-06-2009, 21:24
maasja, браузеры вроде бы не понимают системную раскладку, те невозможно средствами JS определить, какая раскладка... хотя возможно реализовать изменение раскладки (набора символов) внутри страницы (галочкой, радио-кнопкой)...

proxy
07-06-2009, 23:17
maasja, попробуйте вот тут (http://translate.google.com/translate_t?hl=ru&sl=en&tl=ru#) перевод текста с автоопределением языка.
если сработает - то значет можно, тогда думаю найдем....а то у меня только рус-eng - особо не протестю...но работает.

(галочкой, радио-кнопкой)...
и т.д. по выбору пользователя - очень не плохое решение.

maasja
08-06-2009, 03:14
Всё таки Sham, прав. В гугле на каком языке я б не писал (русском, или украинском), оно всё равно распознаёт это как русский. Пробовал любые буквы, вплоть до "ї", и с любыми настройками (Язык интерфейса, Язык поиска), все равно только русский. :cry:

proxy
08-06-2009, 03:59
чёж грустить? это не смертельно ))

окей, тогда, например как тут (http://www.translit.ru/), необходимы select или все те же radio, что бы пользователь сам выбирал - на каком языке пишет, и может, на какой язык переводить.

соостветственно, из учета выбранной опции, ипользовать алфавит для перевода: русский, украинский и т.д....

maasja
08-06-2009, 15:27
Тогда давайте так, у меня будет три кнопки 1 -ая eng - она будет по умолчанию 2 -ая rus и 3-ая ua . А как сделать так чтоб узнать на каком языке напечатана кажда буква отдельно? Например зашел пользователь и пишет первую букву на английском (по умолчанию) "s", потом переключает на русскую и пишет "и", а потом еще й на украинской "ї"? И после нажатия кнопки отправить, текст перебирается по каждой отдельной букве и смотря на то, на каком языке написана буква так оно и перекодировует в латинницу.

Sham
08-06-2009, 17:17
maasja, русский и украинский - это родственные кириллические языки, поэтому любые попытки в плане определения языка ru\ua будут малоэффективны. имхо делаете три набора символов в массивах: латиницу, кириллицу, и смешанную (какие буквы в украинском используются). также нужны будут несколько массивов для транслита (вид массива зависит от задачи)... например, массив транслита ru-en, ua-en и тд...
значение текущей раскладки можно записывать в куки, переменную или скрытое поле input...

maasja
08-06-2009, 20:19
Посмотрите плиз на прикрепленный файл, и поймите чего я хочу (дизайн склепал только что и он еще изменится). Когда пользователь нажмет на кнопку отправить, то всё содержимое из текста скопируется в другую переменную и отправится на мейл. Кроме этого то что будет в первой переменной, должно перекодироватся на латиницу и отправится смс-кой (отсылать буду с мейла, билайн такое поддерживает), перекодировка нужна потому что нельзя смс-кой отправить кириллицу, а только латиницу. Почему я хочу и украинской и русской язык конвертнуть, а не всё под русский? Да потому что хочу сделать всё универсально, даже сказать идеально. Коменты... )))

Sham
08-06-2009, 21:35
пример функции транслита

function translit()
{
var arr =
{
'а':'a',
'б':'b',
'и':'i',
'ш':'sh'
//и так для всех символов
};

var ereg = '';

var txt = document.getElementById('text'); //id тега textarea

var txtvar = txt.value;

for (var k in arr)
{
eval('ereg = /'+ k +'/g;');
txtvar = txtvar.replace(ereg, arr[k]);
}

txt.value = txtvar;
}

maasja
08-06-2009, 21:48
А как сделать так чтоб печаталось на том языке на каком было выбрано? Посмотрите изображение..

Sham
08-06-2009, 22:10
А как сделать так чтоб печаталось на том языке на каком было выбрано? »
проще всего выполнять функцию по событию onkeyup
<textarea id="text" onkeyup="translit()"></textarea>
соответственно, в зависимости от выбранной раскладки подсовывать нужный массив...
определение кода клавиш имхо можно опустить, тк некроссбраузерно (зависит от браузера и системы)...




© OSzone.net 2001-2012