Для удобства игроков, у кого нет клавиатуры с русскими буквами, в чате есть система автоматического перевода "транслита" в русский текст. Например, вы пишете: "Privet vsem!" - это будет автоматически преобразовано в "Привет всем!"
В чате кнопка переключатель - переводить вводимый текст с транслита или нет.
В форуме кнопка "Перевести с транслита в русский" переведет заголовок темы и введенный текст.
Теперь внимание, проблема:
Основная проблема со смайликами, они тоже переводятся...как решить не знаю. (например смайлики такого вида(:fie: :rupor: :inv: :susel: :red: )
P.S. Исходник скрипта на JavaScript прилагаю ниж:
- Код: выделить все
<SCRIPT language=JavaScript>
var map_en = new Array("sh'","Sh'",'ye','Ye',"'e","'E",'y0','Y0',"'o","'O",'zh','Zh','ts','Ts','ch','Ch','sh',
'Sh',"`e","`E",'yu','Yu',"'u","'U",'ya','Ya',"'a","'A",'a','A','b','B','v','V','w','W',
'g','G','d','D','e','E','z','Z','i','I','j','J','k','K','l','L','m','M','n','N','o','O','p','P','r',
'R','s','S','t','T','u','U','f','F','h','H','c','C','`','y','Y',"'");
var map_ru = new Array('ù','Ù','å','Å','å','Å','¸',
'¨','¸','¨','æ','Æ','ö','Ö',
'÷','×','ø','Ø','ý','Ý','þ',
'Þ','þ','Þ','ÿ','ß','ÿ','ß',
'à','À','á','Á','â','Â','â',
'Â','ã','Ã','ä','Ä','å','Å',
'ç','Ç','è','È','é','É','ê',
'Ê','ë','Ë','ì','Ì','í','Í',
'î','Î','ï','Ï','ð','Ð','ñ',
'Ñ','ò','Ò','ó','Ó','ô','Ô',
'õ','Õ','ö','Ö','ú','û','Û',
'ü');
function translate() { // translates latin to russian
var str = document.F1.text.value
var str1 = '';
var j;
while (str.indexOf('to [')>=0 || str.indexOf('private [')>=0) {
var j = str.indexOf(']');
if (j<0) break;
str1 = str1 + str.substring(0, j+1);
str = str.substring(j+1, str.length);
}
for(i=0;i<map_en.length;++i)
while(str.indexOf(map_en[i])>=0)
str = str.replace(map_en[i],map_ru[i])
document.F1.text.value = str1+str
}
function sw_translit()
{
top.ChatTranslit = ! top.ChatTranslit;
if (top.ChatTranslit) {
document.all('b___translit').src = b___translit_on.src;
document.all('b___translit').alt = b___translit_on.alt;
} else {
document.all('b___translit').src = b___translit_off.src;
document.all('b___translit').alt = b___translit_off.alt;
}
}
function sw_filter()
{
top.ChatOm = ! top.ChatOm;
if (top.ChatOm) {
document.all('b___filter').src = b___filter_on.src;
document.all('b___filter').alt = b___filter_on.alt;
document.F1.om.value = '1';
} else {
document.all('b___filter').src = b___filter_off.src;
document.all('b___filter').alt = b___filter_off.alt;
document.F1.om.value = '';
}
}
function sw_sys()
{
top.ChatSys = ! top.ChatSys;
if (top.ChatSys) {
document.all('b___sys').src = b___sys_on.src;
document.all('b___sys').alt = b___sys_on.alt;
document.F1.sys.value = '1';
} else {
document.all('b___sys').src = b___sys_off.src;
document.all('b___sys').alt = b___sys_off.alt;
document.F1.sys.value = '';
}
}
function sw_slow()
{
if (top.ChatSlow) {
if (top.ChatTimerID >= 0) { // âûêëþ÷àåì ÷àò
top.StopRefreshChat();
document.all('b___slow').src = b___chat_off.src; document.all('b___slow').alt = b___chat_off.alt;
} else { // Çàïóñêàåì ÷àò íà íîðìàëüíóþ ñêîðîñòü
top.ChatSlow = false;
top.ChatDelay=top.ChatNormDelay;
top.RefreshChat();
document.all('b___slow').src = b___slow_off.src; document.all('b___slow').alt = b___slow_off.alt;
}
} else { // çàìåäëÿåì ÷àò
top.ChatSlow = true;
document.all('b___slow').src = b___slow_on.src; document.all('b___slow').alt = b___slow_on.alt;
top.ChatDelay=top.ChatSlowDelay;
top.RefreshChat();
}
}
function subm()
{
if (top.ChatTranslit) translate()
}
var b___translit_on = new Image; b___translit_on.src="/i/b___translit_on.gif"; b___translit_on.alt="(âêëþ÷å
íî) Ïðåîáðàçî
âûâàòü òðàíñëèò
â ðóññêèé òåêñò";
var b___translit_off = new Image; b___translit_off.src="/i/b___translit_off.gif"; b___translit_off.alt="(âûêëþ÷
åíî) Ïðåîáðàçî
âûâàòü òðàíñëèò
â ðóññêèé òåêñò";
var b___filter_on = new Image; b___filter_on.src="/i/b___filter_on.gif"; b___filter_on.alt="(âêëþ÷å
íî) Ïîêàçûâàò
ü â ÷àòå òîëüêî ñîîáùåíèÿ àäðåñîâàí
íûå ìíå";
var b___filter_off = new Image; b___filter_off.src="/i/b___filter_off.gif"; b___filter_off.alt="(âûêëþ÷
åíî) Ïîêàçûâàò
ü â ÷àòå òîëüêî ñîîáùåíèÿ àäðåñîâàí
íûå ìíå";
var b___sys_on = new Image; b___sys_on.src="/i/b___sys_on.gif"; b___sys_on.alt="(âêëþ÷å
íî) Ïîêàçûâàò
ü â ÷àòå ñèñòåìíûå ñîîáùåíèÿ";
var b___sys_off = new Image; b___sys_off.src="/i/b___sys_off.gif"; b___sys_off.alt="(âûêëþ÷
åíî) Ïîêàçûâàò
ü â ÷àòå ñèñòåìíûå ñîîáùåíèÿ";
var b___slow_on = new Image; b___slow_on.src="/i/b___slow_on.gif"; b___slow_on.alt="(âêëþ÷å
íî) Ìåäëåííîå îáíîâëåíèå ÷àòà (ðàç â ìèíóòó)";
var b___slow_off = new Image; b___slow_off.src="/i/b___slow_off.gif"; b___slow_off.alt="(âûêëþ÷åíî) Ìåäëåííîå îáíîâëåíèå ÷àòà (ðàç â ìèíóòó)";
var b___chat_off = new Image; b___chat_off.src="/i/b___chat_off.gif"; b___chat_off.alt="Îáíîâëåíèå ÷àòà âûêëþ÷åíî!";
function smiles()
{
var x = event.screenX - 150;
var y = event.screenY - 320;
var sFeatures = 'dialogLeft:'+x+'px;dialogTop:'+y+'px;dialogHeight:310px;dialogWidth:300px;help:no;status:no;unadorned:yes';
window.showModelessDialog("smiles.html", window, sFeatures);
}
function rslength() // èçìåíÿåò ðàçìåð ñòðîêè ââîäà òåêñòà
{
var size = document.body.clientWidth-(3*30)-66-256;
if (size<100) { size=100 }
document.F1.text.width = size;
document.all('T2').width = size;
}
window.onresize=rslength;
</SCRIPT>
Всем спасибо за внимание, буду благодарен за любую помощь!
P.S. Задача непростая и не каждому она будет под силу, но и в тоже время довольно интересная!

