LINUX.ORG.RU
Ответ на: комментарий от arsi

Вот код

QString Googletranslate::translate(const QString &text, const QString &from,
				   const QString &to)
{
    const QString detected_lang = detectLanguage(text);
    QString curent_src_lang;
    if(m_auto_detect && !detected_lang.isEmpty())
	curent_src_lang = detected_lang;
    else
	curent_src_lang = from;

    const QString url("http://ajax.googleapis.com/ajax/services/language/translate");

    const QString request = QString("v=%1&langpair=%2&q=%3").
			    arg("1.0").
			    arg(curent_src_lang + '|' + to).
			    arg(text.toUtf8().toPercentEncoding().data());
#ifdef QGT_DEBUG
    qDebug() << "Source text (formed): " << request;
#endif
    QNetworkAccessManager manager;
    QEventLoop loop;

    connect(&manager, SIGNAL(finished(QNetworkReply*)),
            &loop, SLOT(quit()));

    QNetworkReply *reply = manager.post(QNetworkRequest(url), request.toUtf8());
    loop.exec();

    const QByteArray rawdata = reply->readAll();

#ifdef QGT_DEBUG
    qDebug() << rawdata;
#endif
    QxtJSON parser;

//    QVariantMap map = parser.parse(rawdata.data()).toMap();
//    QVariantMap map2 = map["responseData"].toMap();

    const QString result = jsonExtract(rawdata, "responseData",
				       "translatedText");


#ifdef QGT_DEBUG
    qDebug() << Q_FUNC_INFO << result;
#endif

    if(result.isEmpty())
        return QString();


//    QTextCodec *tc = QTextCodec::codecForName("utf8");
//    QTextCodec::setCodecForCStrings(tc);
//QTextDocumentFragment::fromHtml(QString::fromUtf8(result.toLatin1().data())).toPlainText();
//    return result;
    return QString::fromUtf8(QTextDocumentFragment::fromHtml(result).toPlainText().toLatin1().data()).simplified();
}

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

у меня к вам три вопроса: :)

1) зачем «QxtJSON parser;»? (не используется вроде…)

2) что такое jsonExtract()? а то гугль ведёт только на лор и на…

3) при чём тут http://code.google.com/p/qgt/ ? :)

я о чём… если есть возможность получить исходник проекта и локально с него «поиздеваться», то это гораздо эффективнее, чем тыкать пальцем в небо и играть в дистанционно управляемого программиста ;)

arsi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.