Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Обсуждение форума > Новый скрипт для транслита :)


Автор: neutrino 17.3.2003, 03:47
Этот пост был переведен этим скриптом.

Приветствую вас, господа, уже на русском языке!
После долгих запарок и анализа команд языка JavaScript, получилось то что вы видите ниже. Вот собственно код (вероятно его стоит хорошо потестировать):

Код

<HTML>
<HEAD>
 <TITLE>Transliteration Convertion v2.0</TITLE>
</HEAD>

<BODY>
<font face="sans-serif">
<FORM NAME = "SENDDATA">
  <TEXTAREA NAME="message" ROWS=18 cols=100% WRAP="VIRTUAL"></TEXTAREA>
  <script language="JavaScript">
    var lat=new Array("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","C","Y","J","H","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","c","'","y","`","j","h");
    var rus=new Array("Ё","Ё","Ж","Ж","Й","Ч","Ч","Ш","Ш","Щ","Щ","Э","Э","Ю","Ю","Я","Я","А","Б","В","Г","Д","Е","З","И","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Ц","Ы","Ж","Х","ё", "ж", "й", "ч", "ш", "щ", "э", "ю", "я", "а","б","в","г","д","е","з","и","к","л","м","н","о","п","р","с","т","у","ф","ц","ь","ы","ъ","ж","х");
    var eng = new Array("[eng]","[/eng]");
    var _num_=lat.length;

    function match(src, pos, str) {
      var i;
      for (i=pos; i<pos+str.length; i++) {
        if (src.charAt(i)!=str.charAt(i-pos)) return 0;
      }
      return 1;
    }

    function transliterate(tex) {
      var i;
      var l;
      var j;
      var result="";
      for (i=0; i<tex.length; i++) {
        switch(tex.charAt(i)) {
          case ':': while(tex.charAt(i)!=' ') {
                      if(i<tex.length) result=result.concat(tex.charAt(i++));
                      else return result;
                    }
                    result=result.concat(" ");
                    break;
          case '[': if (match(tex.toLowerCase(), i, eng[0])) {
                      i+=5;
                      while(!match(tex.toLowerCase(), i, eng[1])) {
                        if (i<tex.length) result=result.concat(tex.charAt(i++));
                        else return;
                      }
                      i+=6;
                    } else {
                      result=result.concat(tex.charAt(i++));
                      while (tex.charAt(i)!=']') {
                        if (i>=tex.length) return;
                        else result=result.concat(tex.charAt(i++));
                      } result=result.concat("]");
                    } break;
          default:  for (j=0; j<_num_; j++) {
                      if (l=match(tex, i, lat[j])) {
                        result=result.concat(rus[j]);
                        i+=lat[j].length-1;
                        break;
                      }
                    } if (l==0) result=result.concat(tex.charAt(i));
        }
      }
      return result;
    }

    function onClickBtnRu(){
      var txt = document.SENDDATA.message.value;
      txt = transliterate(txt);
      document.SENDDATA.message.value = txt;
      document.SENDDATA.message.focus;
    }

  </script>
 <table width="100%" border="0">
   <tr>
     <td align="center">
       <a href="javascript:void(null)" ONCLICK="onClickBtnRu();">
         <img src="d:\ass.bmp" alt = "Translit -> Russian" border = 0>
       </a>
     </td>
   </tr>
 </table>
 <br>
 History: <br>
 I.  v1.0 transliteration convertion, developed by BearBeer <br>
 II. v2.0 added new features by neutrino: <br>
 -  supports [eng]..[/eng] tags <br>
 -  non-translatable smiles (:angry)<br>
 -  non-translatable BBCodes ([quote]..[/quote])<br>
</FORM>
</BODY>
</HTML>


Достоинства этого скрипта:
I. Поддержка тэгов [eng]..[/eng]
II. непереводимые улыбочки (tounge.gif)
III. непереводимые тэги YaBB

Автор: neutrino 17.3.2003, 03:51
Админ, теперь надо добавить этот скрипт и поставить кнопку для тэгов [eng].

Автор: dr.ZmeY 17.3.2003, 03:58
Да, давно пора транслит ставить...

Автор: Medved 17.3.2003, 06:07
Поддерживаю. Мне лучше вообще на анлийском читать, чем транслит переводить. Ужасно неудобочитаемо.

Автор: Wowa 17.3.2003, 07:51
Ok, поставимsmile.gif

Автор: neutrino 17.3.2003, 19:53
2Admin:I v formu dlja bystrogo otveta toje nujno.

P.S. Chto stalo s tvoim krasnen'kim chelovechkom? Povzroslel? smile.gif

Автор: Wowa 23.3.2003, 20:29
Сделано!

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