AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Request: плагин - переводчик
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  

Будет ли для вас такой плагин полезным?
Да!
50%
 50%  [ 3 ]
Нет!
50%
 50%  [ 3 ]
Total Votes : 6

Author Message
user-id-4576



Joined: 23 Apr 2011
Posts: 9

PostPosted: Sun Apr 24, 2011 12:40 pm    Post subject: Request: плагин - переводчик Reply with quote

Было бы круто сделать плагин - переводчик, работающий по принципу HexShell - экран делиться пополам, вверху оригинал, внизу перевод, при выделении переводиться только выделенное, каретка ездит синхронно. В подсказках при задержке указателя вылазят варианты перевода.

Было б круто работать с документацией на англ языке.
Back to top
View user's profile Send private message
user-id-4576



Joined: 23 Apr 2011
Posts: 9

PostPosted: Tue Apr 26, 2011 9:11 am    Post subject: Reply with quote

Блин неужели настолько бесполезная идея.

Ведь часто попадаются рид ми на английском и иметь под рукой переводчик былобы очень полезно.

Может стоило сделать опрос по другому.....

Что то типа "Имеет ли право на существование такой плагин?"
Back to top
View user's profile Send private message
Deim0s



Joined: 12 Feb 2010
Posts: 139

PostPosted: Tue Apr 26, 2011 10:19 am    Post subject: Reply with quote

user-id-4576,
Quote:
Блин неужели настолько бесполезная идея.

Скорее непонятная. Каков должен быть движок плагина? Из опен-сорсного на ум приходит StarDict, установка которого без словарей, если не изменяет память, занимает более 50 Мб.
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2704
Location: Киев, Русь

PostPosted: Tue Apr 26, 2011 10:23 am    Post subject: Reply with quote

user-id-4576 wrote:
Что то типа "Имеет ли право на существование такой плагин?"
Право на существование имеет любой плагин, только кто его писать будет?

user-id-4576 wrote:
Блин неужели настолько бесполезная идея.
Идея бесполезная, т.к. тексты в основном переводятся с помощью онлайн-переводчиков.

Для открытия словарных статей в Яндекс.Словарях, Википедии в Punto Switcher'е можно настроить комбинации клавиш, например у меня настроено так:
- Win+Я - поиск в Яндексе;
- Win+C - открытие словарной статьи в Яндекс.Словарях;
- Win+W - открытие словарной статьи в русской Википедии; можно ещё в английской настроить.

Для перевода словосочетаний или коротких предложений есть InternetRequest.js.
Длинный текст просто копирую и вставляю в онлайн-переводчик, что неудобно.
Лучше бы сняли ограничение на количество передаваемых символов или, если это невозможно (вроде бы это ограничение WshShell.Run), лучше бы добавили тег, который не просто берёт выделенный текст (\s), а копирует его в буфер обмена, а потом вставляет при формировании запроса целиком, как это сделано в Opera. Пример пункта меню Opera:
Code:
Item, "En -> Ru (Google)" = Go to Page, "javascript:void(window.open('http://translate.google.com/#en|ru|'+encodeURIComponent(function(){var d=document,s=d.getSelection(),t=d.querySelectorAll('textarea,input[type=\x22text\x22],input[type=\x22search\x22],input:not([type])');if(!s)for(var i=0,e;e=t[i];i++){if(s=e.value.substring(e.selectionStart,e.selectionEnd))break}return s}()),'','width=800,height=576,left=100,top=100,scrollbars=yes,location=no'));",,, "lng_ru"
вернее вот так:
Code:
Item, "Грамота.Ru" = Copy, -2,,, "null" & New Page & Go to page, "http://www.gramota.ru/slovari/dic/?word=%c&all=x&lop=x&efr=x&zar=x&ag=x&ab=x&sin=x&lv=x&az=x&pe=x"
Здесь, правда, используется передача через ini-переменную %c, но не поверю, что кроме как Раном больше не передать необходимую строку...
Вот это было бы толково.
А если бы сделать так, чтобы предыдущее значение в буфере восстанавливалось, то вообще было бы здорово.
Back to top
View user's profile Send private message Visit poster's website
user-id-4576



Joined: 23 Apr 2011
Posts: 9

PostPosted: Tue Apr 26, 2011 12:00 pm    Post subject: Reply with quote

Quote:
Идея бесполезная, т.к. тексты в основном переводятся с помощью онлайн-переводчиков.


Под рукой может не быть интернета, к тому же текст (допустим) уже открыт и оказался на другом языке (чаще всего англ) - жмем кнопку сразу видим перевод. Помоему весьма удобно.

Quote:
только кто его писать будет?


Но ведь уже существующие плагины не сами собой появились.)) И за это авторам огромное спасибо, лично я для себя решил что акел это лучший редактор из всего что я видел, очень простой, легко переносимый с компа на комп и очень грамотно сделаный.
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2704
Location: Киев, Русь

PostPosted: Tue Apr 26, 2011 3:29 pm    Post subject: Reply with quote

user-id-4576 wrote:
Под рукой может не быть интернета
Как уже сказал Deim0s - можно воспользоваться программой переводчиком. Проблема та же - не удастся передать большой кусок текста.

user-id-4576 wrote:
Но ведь уже существующие плагины не сами собой появились.))
А этот - нет.
Напишите - появится Smile
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5524

PostPosted: Tue Apr 26, 2011 5:35 pm    Post subject: Reply with quote

VladSh wrote:
Лучше бы сняли ограничение на количество передаваемых символов или, если это невозможно (вроде бы это ограничение WshShell.Run), лучше бы добавили тег, который не просто берёт выделенный текст (\s), а копирует его в буфер обмена, а потом вставляет при формировании запроса целиком, как это сделано в Opera.
Это ограничение на длину URL передаваемую через командную строку как минимум самих браузеров. Лучше напрямую запросить перевод через ActiveX "http://code.google.com/intl/ru/apis/language/translate/overview.html", но это к Infocatcher'у - он тут спец Smile
Back to top
View user's profile Send private message Send e-mail
VladSh



Joined: 29 Nov 2006
Posts: 2704
Location: Киев, Русь

PostPosted: Wed Apr 27, 2011 4:43 pm    Post subject: Reply with quote

Из ЛС (было вставлено позже):
Infocatcher wrote:
VladSh wrote:
Это на комп надо устанавливать какое-то апи и регистрировать его как ActiveX? Может есть какой-нибудь универсальный (уже существующий в Винде) ActiveX, с помощью которого можно было бы передавать запросы в инет и получать результаты?
Нет, ничего дополнительного не требуется.
Фокус в том, что у MS AJAX запросы надо делать через ActiveX. Особенно в WSH – там XMLHttpRequest вообще не реализован, а в IE на него действует ограничение по домену.
Так что в данном случае API – это когда сервер отдает данные в удобном виде.



Instructor wrote:
Лучше напрямую запросить перевод через ActiveX "http://code.google.com/intl/ru/apis/language/translate/overview.html", но это к Infocatcher'у - он тут спец Smile

Infocatcher, помогите! Very Happy
Чё-то badRequest всегда возвращается: май кодэ

Code:
var req = createRequestObject();
if (req)
{       
   var sURL = "https://www.googleapis.com/language/translate/v2?key=INSERT-YOUR-KEY&source=en&target=ru&callback=resultText&q=" + encodeURIComponent(AkelPad.GetSelText());
   
   req.open("GET", sURL, false);
   req.onreadystatechange = processReqChange;
   req.send();
}


function createRequestObject()
{
   if (typeof(XMLHttpRequest) === 'undefined')
   {
      XMLHttpRequest = function()
      {
         try { return new ActiveXObject("Msxml2.XMLHTTP"); }
           catch(e) {}
         try { return new ActiveXObject("Microsoft.XMLHTTP"); }
           catch(e) {}
         throw new Error("Your system does not support XMLHttpRequest.");
      };
   }
   return new XMLHttpRequest();
}


function processReqChange()
{
  try {
    // только при состоянии "complete"
    if (req.readyState == 4)
    {
        // для статуса "OK"
        if (req.status == 200)
        {
            // обработка ответа
            WScript.Echo("|" + req.responseText + "|");
        }
        else {
            WScript.Echo("|" + "Не удалось получить данные:\n" + req.statusText + "|");
        }
    }
  }
  catch( e ) {
      WScript.Echo('Ошибка: ' + e);
  }
}



Last edited by VladSh on Fri Apr 29, 2011 9:42 am; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1648

PostPosted: Thu Apr 28, 2011 8:08 am    Post subject: Reply with quote

Quote:
?key=INSERT-YOUR-KEY

Ммм?

Где-то на http://forum.wincmd.ru/ был скрипт в виде HTA.
Back to top
View user's profile Send private message Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2704
Location: Киев, Русь

PostPosted: Thu Apr 28, 2011 3:37 pm    Post subject: Reply with quote

Infocatcher wrote:
Где-то на http://forum.wincmd.ru/ был скрипт в виде HTA.
Нашёл здесь, но оно жутко бажит, и никакого кода для формирования запроса я не увидел...
Хотелось бы чисто под Акел замутить скриптец.

Infocatcher wrote:
Quote:
?key=INSERT-YOUR-KEY

Ммм?
Mr. Green
на сайте гугла есть такое:
Quote:
Warning: You need your own API key in order to use the Google Loader. In the example below, replace "INSERT-YOUR-KEY" with your own key. Without your own key, these examples won't work.
...
You must have a Google Account to obtain a Google API key, and your API key is tied directly to your Google Account...
Никто не знает, где можно на шару взять такой ключ?

P.S. Не обязательно в Акел результат возвращать, достаточно было бы просто передать большой текст в открывающуюся страницу браузера.. только вот как это сделать?
Back to top
View user's profile Send private message Visit poster's website
FeyFre



Joined: 07 Aug 2007
Posts: 2061
Location: Vinnitsa, Ukraine

PostPosted: Thu Apr 28, 2011 6:39 pm    Post subject: Reply with quote

VladSh
Quote:
Никто не знает, где можно на шару взять такой ключ?
Если это этот ключ http://code.google.com/intl/uk-UA/apis/loader/signup.html то, можно сделать за две минуты:
1. Регистрируемся в гугле(gmail-ом и/или прочими сервисами).
2. Заводим себе где-то халявную страничку(даже на том же гугле).
3. Логинимся в гугл.
4. Переходим по выше указанной ссылке.
5. Вбиваем ссылку на страничку. И получаем ключ.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
KDJ



Joined: 06 Mar 2010
Posts: 1441
Location: Poland

PostPosted: Thu Apr 28, 2011 7:42 pm    Post subject: Reply with quote

VladSh
Your script works.

Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2704
Location: Киев, Русь

PostPosted: Fri Apr 29, 2011 7:37 am    Post subject: Reply with quote

FeyFre wrote:
Если это этот ключ http://code.google.com/intl/uk-UA/apis/loader/signup.html то, можно сделать за две минуты...
Да, этот. Только не хочется региться ещё и на гугле, и так уже столько регистраций, что запутаться можно...

KDJ
Thank you for being tested. Now I know that it works Very Happy


EDITED: друг сгенерил APIkey, я его подставил в скрипт, но всё равно получается вот такая фигня: текст сообщения
Quote:
---------------------------
|resultText({
"error": {
"errors": [
{
"domain": "global",
"reason": "badRequest",
"message": "Bad Request"
}
],
"code": 400,
"message": "Bad Request"
}
}
);|
---------------------------
ОК
---------------------------
Sad
Может гугловский браузер должен стоять на компе? Или может быть это всё работает, когда залогинился на Гугле? Уже не знаю что и думать...
Есть какие-нибудь идеи?

Добавлено: текущая отладочная версия скрипта: ... [ выпилено ]


Ещё раз отредактировано Smile
Решение простое: доку надо было лучше читать - v.2 - тестовая, в ней требуется API_KEY. Пока надо использовать v.1, в которой API_KEY опционален. Будем надеяться, что в финальной v.2 его опять переведут в статус опциональных..

Рабочая версия скрипта: TranslateWithGoogleAPI.js; поддерживаются v.1 и v.2 API.
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5524

PostPosted: Fri Apr 29, 2011 2:36 pm    Post subject: Reply with quote

VladSh
Удобно теперь Smile Только "AkelPad.Command(4101);" закомментировал. Можно добавить новый второй параметр "2" - менять на месте и в таком случае добавить true в методе ReplaceSel, т.к. наглядно видно какой текст был заменен.
Back to top
View user's profile Send private message Send e-mail
VladSh



Joined: 29 Nov 2006
Posts: 2704
Location: Киев, Русь

PostPosted: Fri Apr 29, 2011 3:00 pm    Post subject: Reply with quote

Infocatcher wrote:
VladSh wrote:
у меня почему-то не работает мой код
Я так понимаю, заработало?
Если пустить скрипт в сеть, то у меня работает. Smile
Не, v.2 так и не работает, и не знаю почему ((
Что значит "пустить скрипт в сеть"?

Instructor
Сделано.

Новую вкладку планировал для "больших строк", да не тут-то было... - ещё один трабл обнаружился досадный.. - русского текста можно перевести только 542 символа, а английский - 1400 (( пишет:
Quote:
Unable to retrieve data:
Request-URI Too Large
P.S. Человек пробовал вытянуть аякс-запросы при переводе большого текста (200 тысяч отправил и 50 тысяч получил результата) со страницы гугл-транслейта и заюзать из PHP, то у него получилось. Но там легче, т.к. юзается специальный фреймворк - отдельным методом задаётся url, отдельным методом параметры и т.п... на JS такое не получается, т.к. всё в url'е д.б. или я не разобрался.

И ещё неприятно - съедаются переводы строк.. можно ли что-то с этим сделать?

Поделитесь мыслями! Smile
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group