Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум поддержки IPB.SU > Поддержка модификаций > Транслит


Автор: Duka Апр 2 2008, 11:30
Сегодня одна очень хорошая знакомая попросила меня найти транслит на форум ipb.
Нашел, вроде адаптировал.
Есть косяк, говорят в Мазиле не фурычит.
В опере и ИЕ все отлично

Настройка скинов - [скин] - HTML - Topic View Section - quick_reply_box_open

В самое начало вставляет основной скрипт транслита
CODE

<script language=JavaScript>
<!--
var rus_lr2 = ('Е-е-О-о-Ё-Ё-Ё-Ё-Ж-Ж-Ч-Ч-Ш-Ш-Щ-Щ-Ъ-Ь-Э-Э-Ю-Ю-Я-Я-Я-Я-ё-ё-ж-ч-ш-щ-э-ю-я-я').split('-');
var lat_lr2 = ('/E-/e-/O-/o-ЫO-Ыo-ЙO-Йo-ЗH-Зh-ЦH-Цh-СH-Сh-ШH-Шh-ъ'+String.fromCharCode(35)+'-ь'+String.fromCharCode(39)+'-ЙE-Йe-ЙU-Йu-ЙA-Йa-ЫA-Ыa-ыo-йo-зh-цh-сh-шh-йe-йu-йa-ыa').split('-');
var rus_lr1 = ('А-Б-В-Г-Д-Е-З-И-Й-К-Л-М-Н-О-П-Р-С-Т-У-Ф-Х-Х-Ц-Щ-Ы-Я-а-б-в-г-д-е-з-и-й-к-л-м-н-о-п-р-с-т-у-ф-х-х-ц-щ-ъ-ы-ь-ь-я').split('-');
var lat_lr1 = ('A-B-V-G-D-E-Z-I-J-K-L-M-N-O-P-R-S-T-U-F-H-X-C-W-Y-Q-a-b-v-g-d-e-z-i-j-k-l-m-n-o-p-r-s-t-u-f-h-x-c-w-'+String.fromCharCode(35)+'-y-'+String.fromCharCode(39)+'-'+String.fromCharCode(96)+'-q').split('-');
var rus_rl = ('А-Б-В-Г-Д-Е-Ё-Ж-З-И-Й-К-Л-М-Н-О-П-Р-С-Т-У-Ф-Х-Ц-Ч-Ш-Щ-Ъ-Ы-Ь-Э-Ю-Я-а-б-в-г-д-е-ё-ж-з-и-й-к-л-м-н-о-п-р-с-т-у-ф-х-ц-ч-ш-щ-ъ-ы-ь-э-ю-я').split('-');
var lat_rl = ('A-B-V-G-D-E-JO-ZH-Z-I-J-K-L-M-N-O-P-R-S-T-U-F-H-C-CH-SH-SHH-'+String.fromCharCode(35)+String.fromCharCode(35)+'-Y-'+String.fromCharCode(39)+String.fromCharCode(39)+'-JE-JU-JA-a-b-v-g-d-e-jo-zh-z-i-j-k-l-m-n-o-p-r-s-t-u-f-h-c-ch-sh-shh-'+String.fromCharCode(35)+'-y-'+String.fromCharCode(39)+'-je-ju-ja').split('-');
var translitown=0;var language = 0;
if (document.images) {swrus_src = new Image; swrus_src = "pict/swrus.gif";swlat_src = new Image; swlat_src = "pict/swlat.gif";}
function setfoc(){document.post.message.focus();}
function compbelongs(isprivate)
{
translitown = isprivate;
if (translitown==1) {document.post.message.createTextRange().execCommand("Copy");}
document.cookie = "trowncomputer=" + escape(isprivate);
return true;
}
function upgradeclipboard()
{
if (translitown==1) {document.post.message.createTextRange().execCommand("Copy");}
return true;
}
function setlangpicture(){document.ruslat.src = swrus_src;}
function changelanguage(){if (language==1) {language=0; document.images['ruslat'].src = swrus_src; document.post.message.focus();return;}if (language==0) {language=1; document.images['ruslat'].src = swlat_src; document.post.message.focus();return;}}
function AkeyIsDown()
{
if (event.ctrlKey && event.altKey) changelanguage();
if (window.event.keyCode==27) event.returnValue=false;
return false;
}
function translate_letter()
{
if (language==1) return; //no transliteration necessary
//the entered character
var code = event.keyCode;
txt=String.fromCharCode(code);
//make selection
cursor_pos_selection = document.selection.createRange();
//delete something is selected before
cursor_pos_selection.text="";
//get the previous character
cursor_pos_selection.moveStart("character",-1);
pretxt = cursor_pos_selection.text;
if (pretxt.length>1) {pretxt="";}
event.keyCode = 0;
result = translatesymboltocyrillic(pretxt,txt)
//delete the previous symbol if it is exists (if the entered symbol is not the first one)
if (pretxt!="") { cursor_pos_selection.select(); cursor_pos_selection.collapse();}
with(document.selection.createRange()) {text = result; collapse(); select()}
return;
}
function translatesymboltocyrillic(pretxt,txt)
{
var doubletxt = pretxt+txt;
var code = txt.charCodeAt(0);
if (!(((code>=65) && (code<=123))||(code==35)||(code==39))) return doubletxt;
var ii;
for (ii=0; ii<lat_lr2.length; ii++)
{
if (lat_lr2[ii]==doubletxt) return rus_lr2[ii];
}
for (ii=0; ii<lat_lr1.length; ii++)
{
if (lat_lr1[ii]==txt) return pretxt+rus_lr1[ii];
}
return doubletxt;
}
function translatesymboltolatin(symb)
{
var ii;
for (ii=0; ii<rus_rl.length; ii++)
{
if (rus_rl[ii]==symb)
return lat_rl[ii];
}
return symb;
}
function translateAlltoCyrillic()
{
var is_selection_flag = 1;
var userselection = document.selection.createRange();
var txt = userselection.text;
if (userselection==null || userselection.text==null || userselection.parentElement==null || userselection.parentElement().type!="textarea")
{
// no text selected, all the text in the textarea is to be processed
is_selection_flag = 0;
txt = document.post.message.value;
}
var txtnew = translatesymboltocyrillic("",txt.substr(0,1));
var symb = "";
for (kk=1;kk<txt.length;kk++)
{
symb = translatesymboltocyrillic(txtnew.substr(txtnew.length-1,1),txt.substr(kk,1));
txtnew = txtnew.substr(0,txtnew.length-1) + symb;
}
if (is_selection_flag)
{
userselection.text = txtnew; userselection.collapse(); userselection.select();
}
else
{
document.post.message.value = txtnew;
document.post.message.focus();
}
return;
}
function translateAlltoLatin()
{
var is_selection_flag = 1;
var userselection = document.selection.createRange();
var txt = userselection.text;

if (userselection==null || userselection.text==null || userselection.parentElement==null || userselection.parentElement().type!="textarea")
{
// no text selected, all the text in the textarea is to be processed
is_selection_flag = 0;
txt = document.post.message.value;
}
txtnew="";
var symb = "";
for (kk=0;kk<txt.length;kk++)
{
symb = translatesymboltolatin(txt.substr(kk,1));
txtnew = txtnew.substr(0,txtnew.length) + symb;
}
if (is_selection_flag)
{
userselection.text = txtnew; userselection.collapse(); userselection.select();
}
else
{
document.post.message.value = txtnew;
document.post.message.focus();
}
return;
}
//-->
</SCRIPT>

Выводим кнопку в панель быстрых сообщений:
Находим
CODE
<select name='ffont' class='codebuttons' onchange="alterfont(this.options[this.selectedIndex].value, 'FONT')"  onmouseover="hstat('font')">

Вставляем Перед:
CODE
<br /> <INPUT class=button onclick=translateAlltoCyrillic();upgradeclipboard(); type=button value="В кирилицу">&nbsp;&nbsp;&nbsp;
<INPUT class=button onclick=translateAlltoLatin();upgradeclipboard(); type=button value="В латиницу"><br />

Автор: Amira Апр 2 2008, 11:32
QUOTE (Duka @ Апр 2 2008, 00:29)
Сегодня одна очень хорошая знакомая

=) ...

Автор: Добрый Апр 3 2008, 17:05
Закреплено

Автор: Stimaxel Апр 18 2008, 08:04
Duka,
у меня что то не идет, а тут
QUOTE
Выводим кнопку в панель быстрых сообщений:
Находим

обязательно надо тоже поменять?

Автор: Duka Апр 18 2008, 11:06
Stimaxel,Так ничего менять не надо, я написал "Вставляем Перед:"

Автор: Stimaxel Апр 18 2008, 16:32
QUOTE
Выводим кнопку в панель быстрых сообщений:
Находим

а это где найти?

Автор: Alex Okonnor Апр 18 2008, 16:59
QUOTE (Stimaxel @ Апр 18 2008, 16:31)
а это где найти?

Topic View Section
quick_reply_box_open

Автор: Feyd Июн 29 2008, 15:57
QUOTE
Выводим кнопку в панель быстрых сообщений:
Находим
CODE
<select name='ffont' class='codebuttons' onchange="alterfont(this.options[this.selectedIndex].value, 'FONT')"  onmouseover="hstat('font')">

Вставляем Перед:
CODE
<br /> <INPUT class=button onclick=translateAlltoCyrillic();upgradeclipboard(); type=button value="В кирилицу">&nbsp;&nbsp;&nbsp;
<INPUT class=button onclick=translateAlltoLatin();upgradeclipboard(); type=button value="В латиницу"><br />


Ну не могу найти и все smile.gif Это точно в Topic View Section
quick_reply_box_open ?

ctrl+F Не помогает! dry.gif

Автор: Fiona Июн 29 2008, 16:15
Feyd, 8 строка сверху.

Автор: Alex Okonnor Июн 29 2008, 17:03
Так подождите, если "быстрый ответ" не трогали там такова не будет smile.gif
Это если тока уже мод "быстрого ответа" ставили, тогда такое будет smile.gif

Конечно могу и ошибаться laugh.gif

Автор: Feyd Июн 29 2008, 19:11
Попытался установить Мод, Быстрого Ответа, терь вобще БЫСТРЫЕ ОТВЕТЫ не работают! sad.gif

Автор: Vanilla Июл 1 2008, 22:00
Всё работет прекрасно

Один нюанс - после того, как поставлен сам скрипт, кнопочки можно пихать куда угодно - ибо строчки
CODE
select name='ffont' class='codebuttons' onchange="alterfont(this.options[this.selectedIndex].value, 'FONT')"  onmouseover="hstat('font')">
я тоже не нашла в том топике. но оно и без неё прекрасно работает - поставила после тегов.... smile.gif

Автор: joman Сен 3 2009, 10:32
QUOTE (Duka @ Апр 2 2008, 11:31)
Сегодня одна очень хорошая знакомая попросила меня найти транслит на форум ipb.
Нашел, вроде адаптировал.
Есть косяк, говорят в Мазиле не фурычит.
В опере и ИЕ все отлично
...

Нашел и подправил один скрипт транслита в лисе работает. Думаю в других браузерах тоже будет. Если кому интересно, могу выложить.

Автор: Добрый Сен 3 2009, 11:15
QUOTE (joman @ Сегодня, 11:33)
Нашел и подправил один скрипт транслита в лисе работает. Думаю в других браузерах тоже будет. Если кому интересно, могу выложить.
выкладывайте

Автор: joman Сен 3 2009, 18:28
Вставлял по аналогии со скриптом спускающис автора в быстрый ответ
Настройка скинов - [скин] - HTML - Topic View Section - Header
Вставляем:
CODE
<script language='javascript' type='text/javascript'>

var lat=new Array([COLOR=blue]"jo","zh","i'","ch","sh","xh","je","ju","ja","a","b","v","g","d","e","z","i","k","l","m","n","o","p","r","s","t","u","f","x","c","'","      y","`","j","h"[/COLOR]);
var cyr=new Array([COLOR=blue]"ё","ж","й","ч","ш","щ","э","ю","я","а","б","в","г","д","е","з","и","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ь","ы","ъ","ж      ","х"[/COLOR]);
var latcap=new Array([COLOR=blue]"JO","Jo","ZH","Zh","I'","Ch","CH","Sh","SH","Xh","XH","Je","JE","Ju","JU","Ja","JA","A","B","V","G","D","E","Z","I","K","L","M","N","      O","P","R","S","T","U","F","X","C","Y","J","H"[/COLOR]);
var cyrcap=new Array([COLOR=blue]"Ё","Ё","Ж","Ж","Й","Ч","Ч","Ш","Ш","Щ","Щ","Э","Э","Ю","Ю","Я","Я","А","Б","В","Г","Д","Е","З","И","К","Л","М","Н","О","П","Р","С","Т      ","У","Ф","Х","Ц","Ы","Ж","Х"[/COLOR]);

function translate(sText)
{
var buf=sText;
var i;
for (i=0;i<latcap.length;i++)
   {
      buf=replace(buf,latcap[i],cyrcap[i],1,0);
   }

for (i=0;i<lat.length;i++)
   {
      buf=replace(buf,lat[i],cyr[i],1,0);
   }

sText=buf;
return sText;
}

function replace(target,oldTerm,newTerm,caseSens,wordOnly) {

var work = target;
var ind = 0;
var next = 0;

if (!caseSens) {
   oldTerm = oldTerm.toLowerCase();
   work = target.toLowerCase();
   }

while ((ind = work.indexOf(oldTerm,next)) >= 0) {
   if (wordOnly) {
      var before = ind - 1;
      var after = ind + oldTerm.length;
      if (!(space(work.charAt(before)) && space(work.charAt(after)))) {
         next = ind + oldTerm.length;
         continue;
         }
      }
   target = target.substring(0,ind) + newTerm +
   target.substring(ind+oldTerm.length,target.length);
   work = work.substring(0,ind) + newTerm +
   work.substring(ind+oldTerm.length,work.length);
   next = ind + newTerm.length;
   if (next >= work.length) { break; }
   }

return target;

}
</script>

Или можно вставить это же без 1 и последней строчек в уже имеющееся там тело ява скрипта.
Выделенной синим - алфавит. Можно поменять по своему усмотрению. Замена - понятна: 1 буква первого алфавита заменяется на 1-ю букву 2-го алфавита.

Дальше - кнопочка:
Настройка скинов - [скин] - HTML - Topic View Section - quick_reply_box_open
CODE
<input type=button value="Транслит" onclick="document.REPLIER.Post.value=translate(document.REPLIER.Post.value);">

можно вставить перед этим:
CODE
<select name='ffont' class='codebuttons' onchange="alterfont(this.options[this.selectedIndex].value, 'FONT')"  onmouseover="hstat('font')">

Думаю каждый сам сможет разобраться куда кнопку вставлять. У меня расширенный ввод, я вставил после выбора цвета, т.е. после этого куска:
CODE

<select name='fcolor' class='codebuttons' onchange="alterfont(this.options[this.selectedIndex].value, 'COLOR')" onmouseover="hstat('color')">
 <option value='0'>{ibf.lang.ct_color}</option>
 <option value='blue' style='color:blue'>{ibf.lang.ct_blue}</option>
 <option value='red' style='color:red'>{ibf.lang.ct_red}</option>
 <option value='purple' style='color:purple'>{ibf.lang.ct_purple}</option>
 <option value='orange' style='color:orange'>{ibf.lang.ct_orange}</option>
 <option value='yellow' style='color:yellow'>{ibf.lang.ct_yellow}</option>
 <option value='gray' style='color:gray'>{ibf.lang.ct_grey}</option>
 <option value='green' style='color:green'>{ibf.lang.ct_green}</option>
</select>

P.S. переводит все в текстарете и теги тоже. Т.е. сперва лучше набрать текст, перевести его а потом форматировать.

Автор: joman Сен 3 2009, 18:30
Простите, код разъехался. Подправьте пожалуйста как нужно.

Автор: Добрый Сен 4 2009, 01:00
joman, ничего страшного
Скрипт работает во всех браузерах?

Автор: joman Сен 9 2009, 08:28
QUOTE (Добрый @ Сен 4 2009, 01:01)
joman, ничего страшного
Скрипт работает во всех браузерах?

100% работает в Firefox и в IE. В других браузерах не было возможности проверить. Думаю, что работать должен.

Powered by Invision Power Board (//www.invisionboard.com)
© Invision Power Services (//www.invisionpower.com)