Простейший «переводчик» на Javascript


Добавлено: 8 ноября 2010 г.

Позволяет делать прямой и обратный перевод слов и фраз из заранее приготовленного словаря.

Словарь - двумерный массив (массив из массивов ['слово','перевод'] Для перевода нужно вызвать функцию translate(), для обратного перевода translate(1).
Исходное слово берется из элемента с id="trans-from", если там пусто, то берется выделение на странице, перевод помещается в элемент с id="trans-to".

var vcb=[ //словарь

['Привет','Hello'],
['Обезьяна','monkey'],
['Апельсин','orange'],
['Тарелка','plate'],
['Книга','book'],
['мышь','mouse']

];

function translate(direction){
  var selected_text = (
    (window.getSelection && window.getSelection()) ||
    (document.getSelection && document.getSelection()) ||
    (document.selection && document.selection.createRange && document.selection.createRange().text)
  );
  var from= document.getElementById('trans-from');
  var to  = document.getElementById('trans-to');

  if((!from && !selected_text) || !to){ return }

  from= from||{};
  from = from.value || from.innerHTML || selected_text; 
  //from = from.toString().replace(/\s/g,'').toLowerCase();
  from = from.toString().replace(/^\s*|\s*$/g,'').replace(/\s+/g,' ').toLowerCase();

  if(!from) return;

  //проверим наличие свойств у 'trans-to'
  if('value' in to){
    to.value= get_translate();
    return;
  };
  if('innerHTML' in to){
    to.innerHTML= get_translate();
    return;
  };

  function get_translate(){
    for(var i=0; i<vcb.length; i++) {
      if(!direction){ //прямой перевод
        if(vcb[i][0].toLowerCase() == from)
        return vcb[i][1];
      }else{//обратныйй перевод
        if(vcb[i][1].toLowerCase() == from)
        return vcb[i][0];
      };
    };//for
    return 'Нет в словаре';
  };
};

В HTML-коде можно разместить форму с двумя полями input и кнопками, у которых прописать атрибуты onclick. Например, так:

<form>
<input type="text" id="trans-from">
<input type="text" id="trans-to">

<input type="button" value="To English" onclick="translate()">
<input type="button" value="На русский" onclick="translate(1)">
</form>

Тестируем


Вот как это может выглядеть, тестируем! Слово для перевода можно вносить в поле формы или же выделять мышью на странице.


Привет, Обезьяна, Апельсин, Тарелка, Книга, Мышь

Hello, monkey, orange, plate, book, mouse