Главная » IPB » Статьи IPB » Translit — избавляемся от «кракозяблов»
Распечатать статью

Translit — избавляемся от «кракозяблов»

Вас раздражает, когда пользователи оставляют сообщения, используя транслит? Берегите нервы, этому может быть объяснение: пользователю не доступна иная раскладка клавиатуры, возможно, имеется какие-то несовместимости и проблемы с отображением кириллицы. Возможно из-за привычек, когда тяжело от них отказаться, несмотря на правила форума. Некоторые таким способом пытаются скрыть свою безграмотность, мол, так меньше ошибок. Причин может быть много, а за каждым пользователем следить проблематично.

Несмотря на это, временами такое поведение начинает сильно раздражать, чтобы прочесть некоторые сообщения, приходится напрягаться. Иногда вообще пропадает желание читать текст набранный транслитом, и приходится намеренно пропускать его, оставляя темы без ответа. Часть ответсвенности ложится на администраторов, так как по их вине форум не предоставляет возможности конвертировать текст, набранный транслитом. Но это не снимает вины и с пользователя, который мог бы воспользоваться онлайн сервисами, чтобы привести в должный вид свое сообщение. Для исправления этой оплошности, вам нужно лишь установить небольшой модуль, который добавляет кнопку транслита на страницу с формой ответа.

 

Установка

Модуль устанавливается без проблем, потратив 5 минут, вы предоставите своим пользователям, имеющим проблемы с набором кириллических символов, прекрасный инструмент для корректной конвертации текста.

Открыть файл ./jscripts/ips_text_editor.js, в самый конец добавить:

Код для закодированной версии:

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('-');function translit(){var obj_ta=document.REPLIER.Post;if((ua_vers>=4)&&is_ie&&is_win){if(obj_ta.isTextEdit){obj_ta.focus();var sel=document.selection;var rng=sel.createRange();rng.colapse;if((sel.type=="Text"||sel.type=="None")&&rng!=null){rng.text=dotranslate(rng.text)}}else{obj_ta.value=dotranslate(obj_ta.value)}}else if(obj_ta.selectionEnd){var ss=obj_ta.selectionStart;var st=obj_ta.scrollTop;var es=obj_ta.selectionEnd;if(es<=2){es=obj_ta.textLength}var start=(obj_ta.value).substring(0,ss);var middle=(obj_ta.value).substring(ss,es);var end=(obj_ta.value).substring(es,obj_ta.textLength);if(obj_ta.selectionEnd-obj_ta.selectionStart>0){middle=dotranslate(middle)}obj_ta.value=start+middle+end;var cpos=ss+(middle.length);obj_ta.selectionStart=cpos;obj_ta.selectionEnd=cpos;obj_ta.scrollTop=st}else{obj_ta.value=dotranslate(obj_ta.value)}obj_ta.focus();return}function dotranslate(text){var txtnew="";var symb=0;var subsymb="";var trans=1;for(kk=0;kk<text.length;kk++){subsymb=text.substr(kk,1);if((subsymb=="[")||(subsymb=="<")){trans=0}if((subsymb=="]")||(subsymb==">")){trans=1}if(trans){symb=transsymbtocyr(txtnew.substr(txtnew.length-1,1),subsymb)}else{symb=txtnew.substr(txtnew.length-1,1)+subsymb}txtnew=txtnew.substr(0,txtnew.length-1)+symb}return txtnew}function transsymbtocyr(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}

Открыть АдминцентрВнешний видВыбрать стильИзменить HTMLskin_editorsips_editor, найти:

<td><div id="{$editor_id}_cmd_underline"><img src="{$images_path}rte-underlined.png" alt="{$this->ipsclass->lang['js_tt_underline']}" title="{$this->ipsclass->lang['js_tt_underline']}" ></div></td>

Добавить ниже:
<td><div><a href="javascript:translit()"><img src="{$images_path}rte-translit.gif" alt="Translit" title="Translit" ></a></div></td>

Открыть АдминцентрВнешний видВыбрать стильИзменить HTMLskin_topicquick_reply_box_open, найти:
<td><div id="fast-reply_cmd_ipb_code"><img src="style_images/<#IMG_DIR#>/folder_editor_images/rte-code-button.png"  alt="{$this->ipsclass->lang['js_rte_lite_code']}" title="{$this->ipsclass->lang['js_rte_lite_code']}" /></div></td>

Добавить ниже:

<td><div><a href="javascript:translit()"><img src="style_images/<#IMG_DIR#>/folder_editor_images/rte-translit.gif" alt="Translit" title="Translit" /></a></div></td>

Скопировать иконку rte-translit.gif в папку ./style_images/ваш_скин/folder_editor_images/. Установка окончена, теперь вашим посетителям доступна функция транслитерации своих сообщений.

Дополнение

В браузере Opera вы можете столкнуться с искажением символов при транслите, например, вот с таким:

ѕхыыю љю№ыф

Это происходит из-за того, что файл, содержащий таблицу символов, прикрепляется без указания кодировки. Для нормальной конвертации в Opera, нужно принудительно установить кодировку в «Кириллица — Windows-1251». После этого при транслите слов все будет отображаться правильно. Если возникнут еще какие-либо проблемы с распознаванием символов, можно попробовать прописать кодировку в ссылке на js, например:

<script type=”text/javascript” src=”jscripts/ips_text_editor.js”></script>

Заменить на:

<script type=”text/javascript” charset=”windows-1251″ src=”jscripts/ips_text_editor.js”></script>

Принцип, думаю понятен. В модуле есть небольшой баг, он не работает в «Rich Text» редакторе. За советы благодарим товарища Arhar, с форума поддержки скрипта. Архив содержит две версии скрипта, первый — для версии 2.1.x (Автор: Master), второй — для версий 2.2.x — 2.3.x (Автор: h8)u).

Источник:  ipb-faq.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи