Страница 2 из 3

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 17 июл 2013, 20:33
kulyasov
Lorem Ipsum,
ошибка понятна... там прописано для тега [quote], а тега вида [quote="ник"] скрипт не понимает... поэтому идет сбой... по идее автора то что в цитате не должно переводится в транслит, а то что после окончания цитаты должно... но из-за этого сбоя получается наоборот...

попробуйте поставить транслит тот что в первом сообщении... должен работать

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 18 июл 2013, 23:10
Lorem Ipsum
DeaDRoMeO писал(а):А я ж отредактировал малехо скрипт, должен работать)
он переводит латинские ники в цитате и смайлики.

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 19 июл 2013, 10:00
DeaDRoMeO
Соберусь и допилю его) А твой транслит смайлы не переводит?

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 19 июл 2013, 13:35
Lorem Ipsum
Тоже не переводит.

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 21 июл 2013, 16:58
Lorem Ipsum
установила снова из этой темы.
Со смайликами ладно, я их изначально сделала в виде цифрового кода, цифрам по барабану переводят их или нет)).
Но пара недочётов всё же есть.
1.переводит латинские ники в цитате.
2. Если просто цитата, без ника, то первый (незакрытый) тег выглядит так: [qуоте]

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 21 июл 2013, 18:10
ursego
Lorem Ipsum писал(а):переводит латинские ники в цитате
Ага, у меня тоже. Хотелось бы решить эту проблему. На первый взгляд это не смертельный баг, но глаза юзеров привыкли ведь к латинским никам...

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 21 июл 2013, 18:12
ursego
Лорем Ипсум писал(а):Если просто цитата, без ника, то первый (незакрытый) тег выглядит так: [qуоте]
Опа, только что обнаружил, что у меня тоже... :zvez_ochki:

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 24 июл 2013, 22:24
Lorem Ipsum
Ну так что, есть какое-либо решение для цитаты без ника? Юзеры требуют и ругают меня. И ещё нужно, чтобы переводился только выделенный текст. Иногда пишешь фразу и хочешь, чтоб часть её осталась латинскими буквами. На phpbb2 был такой, поэтому знаю, что возможность существует.

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 24 июл 2013, 23:48
DeaDRoMeO
Lorem Ipsum писал(а):На phpbb2 был такой, поэтому знаю, что возможность существует.
Вот надо найти этот скрипт и позаимствовать нужный кусок

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 24 июл 2013, 23:58
ursego
Lorem Ipsum писал(а):нужно, чтобы переводился только выделенный текст. Иногда пишешь фразу и хочешь, чтоб часть её осталась латинскими буквами
Прямо мои мысли читаете! Это было бы супер-здорово если б кнопка Транслит воздейстаовала только на выделенное (а если ничего не выделено, то на всё сообщение)!

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 25 июл 2013, 02:55
Lorem Ipsum
DeaDRoMeO писал(а):Вот надо найти этот скрипт и позаимствовать нужный кусок
Того форума уже давно не существует, но я успела скоммуниздить

Код: Выделить всё

<SCRIPT language=javascript>
<!--
// Maid for Translit.ru by Igor Iline

var language = (navigator.appName=='Netscape');

var DOM = document.getElementById ? 1 : 0,
        opera = window.opera && DOM ? 1 : 0,
        IE = !opera && document.all ? 1 : 0,
        NN6 = DOM && !IE && !opera ? 1 : 0;

function setfoc(){document.post.message.focus();}

//the core function of the transliteration

var rus_lr2 = ('Ё-Ж-Ч-Ш-Щ-Ъ-Ь-Э-Ю-Ю-Я-Я-ё-ж-ч-ш-щ-э-ю-ю-я-я').split('-');
var lat_lr2 = ('ЙO-ЗH-ЦH-СH-ШH-ъ'+String.fromCharCode(35)+'-ь'+String.fromCharCode(39)+'-ЙE-ЙU-ЫU-ЙA-ЫA-йo-зh-цh-сh-шh-йe-йu-ы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)+'-q').split('-');

function translatesymboltocyrillic(pretxt,txt)
{
	var doubletxt = pretxt+txt;

//	var code = txt.charCodeAt(0);
//	if ((code>123) || (code<64))  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 AkeyIsDown()
{
    if (event.ctrlKey && event.altKey && navigator.appName!='Netscape') changelanguage();
    return false;
}

function translate_letter()
{
	if (navigator.appName=='Netscape') return
  if (language==1) return
  var code = event.keyCode;
	txt=String.fromCharCode(code);
  cursor_pos_selection = document.selection.createRange();
	cursor_pos_selection.text="";
  cursor_pos_selection.moveStart("character",-1);
	pretxt = cursor_pos_selection.text;
	if (pretxt.length>1) {pretxt="";}
	event.keyCode = 0;
	result = translatesymboltocyrillic(pretxt,txt)
	if (pretxt!="") { cursor_pos_selection.select(); cursor_pos_selection.collapse();}
	with(document.selection.createRange()) {text = result; collapse(); select()}
	return;
}

function translateAlltoCyrillic()
{


	var is_skip_transform = false;
	if (navigator.appName=='Netscape')
	{// NN scenario
    var userselection = "";
    var is_selection_flag = 0;
    var txtarea = document.post.message;
    var txt = document.post.message.value;
    txtarea.focus();
    if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0)){
    	var selLength = txtarea.textLength;
    	var selStart = txtarea.selectionStart;
    	var selEnd = txtarea.selectionEnd;
    	if (selEnd == 1 || selEnd == 2)
        selEnd = selLength;
    	var s1 = (txtarea.value).substring(0,selStart);
    	var txt = (txtarea.value).substring(selStart, selEnd)
    	var s3 = (txtarea.value).substring(selEnd, selLength);
    	is_selection_flag = 1;
    	//txtarea.value = s1 + open + s2 + close + s3;
    }



    var txtnew ="";
    if (txt.substr(0,1)!="[")
	        {
    	txtnew = translatesymboltocyrillic("",txt.substr(0,1));
    }
    else{
    	txtnew="[";
    	is_skip_transform = true;
    }

    var symb = "";
    for (kk=1;kk<txt.length;kk++)
    {
    	if (txt.substr(kk,1)=="[")
    	{
        is_skip_transform = true;
    	}
    	if (txt.substr(kk,1)=="]")
    	{
        is_skip_transform = false;
    	}
    	if (is_skip_transform){
        symb = txtnew.substr(txtnew.length-1,1) + txt.substr(kk,1);
    	}
    	else {
        symb = translatesymboltocyrillic(txtnew.substr(txtnew.length-1,1),txt.substr(kk,1));
    	}
    	txtnew = txtnew.substr(0,txtnew.length-1) + symb;
    }
    if (is_selection_flag)
    {
    	document.post.message.value = s1+txtnew+s3;
    }
    else
    {
    	document.post.message.value = txtnew;
    }

    document.post.message.focus();
	} //end NN scenario
	else
	{ // IE scenario
    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 = ""
    var symb = "";
    for (kk=0;kk<txt.length;kk++)
    {	if (txt.substr(kk,1)=="[")
    	{
        is_skip_transform = true;
    	}
    	if (txt.substr(kk,1)=="]")
    	{
        is_skip_transform = false;
    	}
    	if (is_skip_transform)
    	{
        symb = txtnew.substr(txtnew.length-1,1) + txt.substr(kk,1);
    	}
    	else
    	{
        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();
    }
	} //end IE scenario
}


	function CallTrans()
	{


        document.post.method="post";


	document.post.action="http://www.translate.ru/rus/erre.asp";
        document.post.AvailableDirections.value="English-Russian translation,Russian-English translation";
        var i = document.post.directions.value;

	if (i==65538)
	{
    document.post.action="http://www.translate.ru/rus/erre.asp";
	        document.post.AvailableDirections.value="English-Russian translation,Russian-English translation";
    document.post.message.language="ru";
	}
	if (i==131076)
	{
    document.post.action="http://www.translate.ru/rus/grfr.asp";
    document.post.AvailableDirections.value="German-Russian translation,French-Russian translation,Italian-Russian translation";
    document.post.message.language="de";
                document.post.TwoStep.value="true";
	}
	if (i==262146)
	{
    document.post.action="http://www.translate.ru/rus/rgrf.asp";
    document.post.AvailableDirections.value="German-Russian translation,French-Russian translation,Italian-Russian translation";
    document.post.message.language="ru";
                document.post.TwoStep.value="True";
	}
	document.post.source.value=document.post.message.value;
  	document.post.submit();
	return true;
	}



//-->
</SCRIPT>

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 25 июл 2013, 15:16
Lorem Ipsum
Мне кажется, если применять транслит только к выделенному тексту, то добавлять в массив исключений уже ничего не надо. Я правильно думаю или нет?

Но пока... Нужно добавить спойлер тоже, и hide.

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 13 окт 2013, 18:24
ursego
Господа форумчующиеся, кто-нибудь решил проблему с транслитерацией ников в цитате? Ну, в смысле чтоб [quote="Luda"] не переводилось в [quote="Луда"]. По-моему, вообще не надо транслитировать всё, что между [ и ] - это решит проблему транслитерации бибкодов, добавленных к стандартной сборке. Почему вообще столь тривиальная мысль не пришла в голову автору мода?

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 13 окт 2013, 19:34
DeaDRoMeO
Потому что это даже и не мод особо, автор взял готовое в инете и присобачил инструкцию для форумов, а о некоторых тонкостях не позаботился

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 25 окт 2013, 19:46
ursego
ursego писал(а):Господа форумчующиеся, кто-нибудь решил проблему с транслитерацией ников в цитате?
Help!!!!

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 28 окт 2013, 17:44
ursego
Хочу поделиться с публикой некоторыми изменениями, сделанными в моде транслита. Изменений, собсна, два:

1. Транслитерация теперь осуществляется по правилам сайта транслит.ру (например, je -> э, jo -> ё, w -> щ, # -> ъ и т.д.). Этот сайт используется большинством нуждающихся в транслитерации, и люди привыкли к его правилам (я бы сказал, они вошли в кровь), а правила транслитерации, предлагаемые в моде, значительно отличаются когда дело касается сложных букв.

2. Исправлен баг когда не переводились буквы в словах, полностью написанных в верхнем регистре (например, "Sh" переводилось в "Ш", а "SH" уже нет, в результате вместо "США" получалось "ССХА").

Внести изменения несложно. Откройте файл styles/<ваш стиль>/template/translit.js - в его самом начале объявлены 4 массива: lat, cyr, latcap и cyrcap. Просто замените их на следующие:

Код: Выделить всё

var lat = new Array("rajon","majonez","jork","jog","yog"
,"je","jo","aju","oju","oje","oja","oj","yj","ya","ja","ju","ja","juju","aja","y","zh","j","shch","shh","ch","sh","a","b","v","w","g","d","e","z","i","k","l","m","n","o","p","r","s","t","u","f","x","c","'e","'","#","j","h","jaj"
);

var cyr = new Array("район","майонез","йорк","йог","йог"
,"э","ё","aю","ою","ое","оя","ой","ый","я","я","ю","я","юю","ая","ы","ж","й","щ","щ","ч","ш","а","б","в","щ","г","д","е","з","и","к","л","м","н","о","п","р","с","т","у","ф","х","ц","э","ь","ъ","й","х","яй"
);

var latcap = new Array("Rajon","Majonez","Jork","Jog","Yog"
,"Yo","Jo","Ey","Je","Ay","Oy","Oj","Uy","Uj","Ya","YA","Ja","JA","Ju","JU","Yu","YU","Y","Zh","ZH","J","Sch","SCH","Ch","CH","Sh","SH","Tz","A","B","V","W","G","D","E","Z","I","K","L","M","N","O","P","R","S","T","U","F","X","C","EA","J","H","JAJ","''","##"
);

var cyrcap = new Array("Район","Майонез","Йорк","Йог","Йог"
,"Ё","Ё","Ей","Э","Ай","Ой","Ой","Уй","Уй","Я","Я","Я","Я","Ю","Ю","Ю","Ю","Ы","Ж","Ж","Й","Щ","Щ","Ч","Ч","Ш","Ш","Ц","А","Б","В","Щ","Г","Д","Е","З","И","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Э","Й","Х","ЯЙ","Ь","Ъ"
);

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 28 окт 2013, 20:25
DeaDRoMeO
Заодно я победил маленький баг с растягиванием страницы изза такого кода без переноса строк

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 28 окт 2013, 20:58
Lorem Ipsum
Делись.

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 29 окт 2013, 00:07
DeaDRoMeO
Решение не совсем верное, но работает вроде, дай свой bbcode.html

Translit MOD phpbb3 (Транслитерация сообщений)

Добавлено: 29 окт 2013, 00:28
Lorem Ipsum
bbcode.rar
(1.13 КБ) 16 скачиваний