LINUX.ORG.RU
ФорумTalks

Интерфейс для Google Translate


0

2

ShTH cменил ник на flareguner и ему не хватает немного для постинга в толксы, поэтому согласился ему помочь. Следующий текст будет от его имени:

Написал за несколько дней морду для Google Translate на Qt4. Вроде получилось неплохо, можете потестить. О багах и предложениях писать в мой jabber или мыло в профиле. Для сборки необходимо иметь следующие библиотеки: Qt, Qxt, Qjson. В данный момент cmake сломан, потому собирать следует так:

qmake && make
в директории проекта.

Основные возможности: Перевод текстов с использованием сервиса google translate через Ajax-api, перевод текста из буфера обмена по нажатию глобальной горячей клавиши с последующим показом перевода в уведомлении.

После тестирования flareguner также будет признателен всем, кто вызовется собирать пакеты.

Дополнение: код нужно брать из http://qgt.googlecode.com/svn/branches/1.0 Все исправления будут там!

★★★★★

Последнее исправление: hibou (всего исправлений: 2)

Круто, между прочим. Попробуем-с.

Cancellor ★★★★☆
()

хорошая штука.

mono ★★★★★
()

О, я писал адскую морду для Google Translate. Перводчик, который переводит фразу с одного языка на другой и назад, пока она не перестанет меняться.

GblGbl ★★★★★
()
Ответ на: комментарий от system-root

Суть в том, что это еще тестирование. На то, чтобы можно было скачать, нужны люди умеющие собирать пакеты.

Пока,ее можно собрать из svn. Если багов не будет в ближайшее время, то выйдет релиз и можно будет скачать.

hibou ★★★★★
() автор топика
Ответ на: комментарий от vyazovoi

Наоборот, фразы получались очень далёкие от изначального текста. Но, чаще всего, это только усиливало комический эффект.

http://pastebin.com/qWPqQgd6

GblGbl ★★★★★
()
fox@darkstar:~/Projects/qgt$ /opt/qtsdk/qt/bin/qmake 
Project MESSAGE: Warning: unknown QT: +=

fox@darkstar:~/Projects/qgt$ make
/opt/qtsdk/qt/bin/uic mainwindow.ui -o ui_mainwindow.h
/opt/qtsdk/qt/bin/uic about.ui -o ui_about.h
/opt/qtsdk/qt/bin/uic settings.ui -o ui_settings.h
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/opt/qtsdk/qt/mkspecs/linux-g++ -I. -I/opt/qtsdk/qt/include/QtCore -I/opt/qtsdk/qt/include/QtNetwork -I/opt/qtsdk/qt/include/QtGui -I/opt/qtsdk/qt/include -Ilang -I. -I. -o mainwindow.o mainwindow.cpp
mainwindow.cpp:44:36: ошибка: QxtGui/QxtGlobalShortcut: Нет такого файла или каталога
mainwindow.cpp: In constructor ‘MainWindow::MainWindow(QWidget*)’:
mainwindow.cpp:56: ошибка: invalid use of incomplete type ‘struct QxtGlobalShortcut’
mainwindow.h:40: ошибка: forward declaration of ‘struct QxtGlobalShortcut’
mainwindow.cpp:216: ошибка: нет подходящей функции для вызова ‘MainWindow::connect(QxtGlobalShortcut*&, const char [13], MainWindow* const, const char [23])’
/opt/qtsdk/qt/include/QtCore/qobject.h:209: замечание: претенденты: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType)
/opt/qtsdk/qt/include/QtCore/qobject.h:314: замечание:              bool QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const
mainwindow.cpp: In member function ‘void MainWindow::setEnableHotkey(bool, const QString&)’:
mainwindow.cpp:396: ошибка: invalid use of incomplete type ‘struct QxtGlobalShortcut’
mainwindow.h:40: ошибка: forward declaration of ‘struct QxtGlobalShortcut’
mainwindow.cpp:397: ошибка: invalid use of incomplete type ‘struct QxtGlobalShortcut’
mainwindow.h:40: ошибка: forward declaration of ‘struct QxtGlobalShortcut’
make: *** [mainwindow.o] Ошибка 1

fox@darkstar:~/Projects/qgt$ /opt/qtsdk/qt/bin/qmake --version
QMake version 2.01a
Using Qt version 4.6.2 in /opt/qtsdk/qt/lib
Cancellor ★★★★☆
()
Ответ на: комментарий от Gary

s/маленькое/небольшое/

Там много всего полезного, но оно конечно меньше любого модуля Qt :)

qjson кстати тоже не идёт в комплекте

Gary ★★★★★
()

Неплохо, но я всё равно буду пользоваться этим. (можно запускать отдельно от браузера, да)

AX ★★★★★
()

реквестирую морду для promt (translate.ru)

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от GblGbl

>О, я писал адскую морду для Google Translate. Перводчик, который переводит фразу с одного языка на другой и назад, пока она не перестанет меняться.

Подобное на перле реализуется минут за 15, правда с графикой в перле (пусть даже tk) дела не имел, хотя вроде есть биндинги и к кутям

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от Cancellor

Переводчик у гугла самый отстойный из тех что видел. Даже сократ 97го года заруливает его по всем параметрам

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от hibou

Я сейчас слишком пьяный чтоб кодить.

А вообще библиотека lwp для прасинга веб-страниц и сделана

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от flareguner

Я про другую прогу ответил (которая итерационно перевдит фразу пока дельта между двумя итерациями не станет равна нулю) но если вопрост спердобейся принципиально важен на выходных накодю перл-вариант. С консольным интерфейсом (так как говорю же, необходиости в графических либах пока не испытывал). А вообще если не ошибаюст, в кутях ведь есть поддржка регэкспов и куцый браузер (не вебкит)?

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от DNA_Seq

Не путай парсинг веб-страницы и Ajax-ответ в формали json. Именно через Ajax всё кошерно делается, и парсится той самой QJson. А Qxt нужен для глобальных хоткеев. Как альтернатива - только Xlib, но это не переносимо.

flareguner
()
Ответ на: комментарий от flareguner

С вебом-то все в порядке (ну война браузеров конечно изрядно подпортила совместимость) но вот ajax - прямой путь фтопку

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от DNA_Seq

Ну и занимайся сам сочинением RegExp'ов. В этом случае ajax всяко лучше использовать.

flareguner
()
Ответ на: комментарий от flareguner

А давайте лепить к каждой микроскопической гуёвине или утилите, выполняющей лишь одну задачу, PyQt, Boost и прочие монструозные компоненты в качестве зависимостей. Устроим подобие шляки в своём %distroname%!

Lighting ★★★★★
()
Ответ на: комментарий от Lighting

Нет, давайте лучше к каждой софтине лепить кучу велосипедов.

flareguner
()
Ответ на: комментарий от Cancellor

>То есть, оно не идёт в дефолтной поставке Qt SDK?

не идет, никогда не шло и никогда не будет идти (out of scope)

annulen ★★★★★
()
Ответ на: комментарий от Lighting

>А давайте лепить к каждой микроскопической гуёвине или утилите, выполняющей лишь одну задачу, PyQt, Boost и прочие монструозные компоненты

а ты не боишься выполнять скрипты в две строчки монструозным башем?

annulen ★★★★★
()
Ответ на: комментарий от DNA_Seq

>хотя вроде есть биндинги и к кутям

Не знаю про кути, но к гтк точно есть.

kss ★★★★★
()
Ответ на: комментарий от flareguner

пойдем по стопам busybox!!!1

> Давай линковать всё динамически? Пусть дистр будет одним блобом метров на 600.

DO FAP!

simple_best_world_web_master
()

Ну вот, я только вчера собрал предыдущюю версию.

Zodd ★★★★★
()
Ответ на: комментарий от flareguner
[root@asus ~/qgt-read-only]# qmake-qt4 
Project MESSAGE: Warning: unknown QT: +=
qt.prf:193: Unknown test function: qtAddLibrary
qt.prf:193: Unknown test function: qtAddLibrary
moc.prf:3: Unknown test function: qtPrepareTool
[root@asus ~/qgt-read-only]#

flareguner, я не рублю в qt, я не отличаю значимость qt-core от qt-network, но имею желание скомпилировать вашу утилиту. скажите, эти функции которые не поняла моя FreeBSD, это чьё? что не хватает?

system-root ★★★★★
()
Ответ на: комментарий от flareguner

тоже самое. я подозреваю, что возможно libqxt неправильно установился. под конец он выдал чудеса вроде cp блаблабла в

/usr/local/share/qt/mkspecs:/usr/local/share/qt/features/qxt.prf
/usr/local/share/qt/mkspecs:/usr/local/share/qt/features/qxtvars.prf
т.е. реально блин создал
[root@asus ~/1.0]# ls -lha /usr/local/share/qt/mkspecs:/usr/local/share/qt/features/qxt.prf
-rw-r--r--  1 root  wheel   2.9K Sep 14 23:54 /usr/local/share/qt/mkspecs:/usr/local/share/qt/features/qxt.prf
[root@asus ~/1.0]#
это как-то влияет на «подхватывание» его?

system-root ★★★★★
()
Ответ на: комментарий от system-root

про libqxt осознал, но поздно видимо.
смотрю дальше, мдя, кроссплатформенный этот qt,ага.

system-root ★★★★★
()
Ответ на: комментарий от Lighting

А давайте лепить прочие монструозные компоненты

alias entranslate='python /home/user/script/translate.py en ru'

alias rutranslate='python /home/user/script/translate.py ru en'

#!/usr/bin/env python
from urllib2 import urlopen
from urllib import urlencode
import sys

# The google translate API can be found here:
# code.google.com

lang1=sys.argv[1]
lang2=sys.argv[2]
langpair='%s|%s'%(lang1,lang2)
text=' '.join(sys.argv[3:])
base_url='http://ajax.googleapis.com/ajax/services/language/translate?'
params=urlencode( (('v',1.0),
('q',text),
('langpair',langpair),) )
url=base_url+params
content=urlopen(url).read()
start_idx=content.find('"translatedText":"')+18
translation=content[start_idx:]
end_idx=translation.find('"}, "')
translation=translation[:end_idx]
print translation
kraftello ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.