Skip to content

Commit

Permalink
Added Microsoft translate functionality. Updated README.md.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ugnius committed Jun 21, 2018
1 parent 8f5d771 commit b5ab38f
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 4 deletions.
7 changes: 7 additions & 0 deletions README.md
Expand Up @@ -19,6 +19,7 @@ Desktop application that is able to translate the content of web pages and dekst

## Supported APIs
* [Google Translate API](https://cloud.google.com/translate/)
* [Microsoft Translator API](https://www.microsoft.com/en-us/translator/translatorapi.aspx)

## How to Use?
### Add an API Key
Expand All @@ -40,6 +41,12 @@ text_type=text
source=lt
target=en

[microsoft]
key=API_KEY
text_type=text/plain
source=lt
target=en

[temp]
key=API_KEY
text_type=text
Expand Down
36 changes: 32 additions & 4 deletions src/apis/microsoftapi.cpp
Expand Up @@ -15,10 +15,39 @@ QString MicrosoftAPI::translate(const QString &input,
}

QSettings settings;
QString key = settings.value("temp/key").toString();
QString format = settings.value("temp/text_type").toString();
QString key = settings.value("microsoft/key").toString();
QString format = settings.value("microsoft/text_type").toString();

// Format GET url string.
QByteArray authorizationHeaderContent = "Bearer " + key.toUtf8();
QString urlString = "https://api.microsofttranslator.com/V2/Http.svc/Translate?";
urlString.append("&from=" + sourceLanguage);
urlString.append("&to=" + targetLanguage);
urlString.append("&format=" + format);
urlString.append("&text=" + input);

QUrl url(urlString);
QNetworkRequest request(url);
request.setRawHeader("Ocp-Apim-Subscription-Key", key.toLocal8Bit());

QNetworkAccessManager *manager = new QNetworkAccessManager();

RequestManager requestManager(nullptr, manager);
requestManager.getRequest(request);

QString translation = "Some translation.";
// Parse the replay.
QByteArray replyByteArray = requestManager.getReply();

QDomDocument domDocument;
domDocument.setContent(replyByteArray);
QDomNodeList domNodeList = domDocument.elementsByTagName("string");

QString translation;
for (int i = 0; i < domNodeList.count(); ++i) {
translation.append(domNodeList.at(i).toElement().text());
}

// TODO(Ugnelis): catch the error.

return translation;
}
Expand All @@ -45,7 +74,6 @@ QStringList MicrosoftAPI::getSupportedLanguages() const {
QDomDocument domDocument;
domDocument.setContent(replyByteArray);
QDomNodeList domNodeList = domDocument.elementsByTagName("string");
QString helloWorld = domNodeList.at(0).toElement().text();

QStringList languagesList;
for (int i = 0; i < domNodeList.count(); ++i) {
Expand Down

0 comments on commit b5ab38f

Please sign in to comment.