#include <iostream>
#include <sstream>
using namespace std;
std::string gethex( unsigned int c )
{
std::ostringstream stm ;
stm << '%' << std::hex << std::nouppercase << c ;
return stm.str();
}
std::string encode(std::string str)
{
static const std::string unreserved = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"-_.~";
std::string r;
for( unsigned int i = 0; i<str.length(); i+=1)
{
unsigned char c = str.at(i);
if( unreserved.find(c) != -1 ) r += c ; else r += gethex(c) ;
}
return r;
}
std::string str_base = "ie=UTF-8&oe=UTF-8&hl=pt-BR&client=t&sc=2&sl=";
std::string Idiomas[] = { "Portuguese", "Spanish", "English", "Estonian", "French", "German", "Italian" };
std::string Idioms[] = { "pt", "es", "en", "et", "fr", "de", "it"};
/*
std::string getClipboard()
{
std::string strData;
if (OpenClipboard(NULL))
{
HANDLE hClipboardData = GetClipboardData(CF_TEXT);
if (hClipboardData)
{
CHAR *pchData = (CHAR*) GlobalLock(hClipboardData);
if (pchData)
{
strData = pchData;
GlobalUnlock(hClipboardData);
}
}
CloseClipboard();
}
return strData;
}
bool setClipboard(std::string textToclipboard)
{
bool success = true;
if (OpenClipboard(NULL))
{
EmptyClipboard();
size_t size = (textToclipboard.length()+1) * sizeof(CHAR);
HGLOBAL hClipboardData = GlobalAlloc(NULL, size);
if (hClipboardData)
{
CHAR* pchData = (CHAR*) GlobalLock(hClipboardData);
if (pchData)
{
memcpy(pchData, (CHAR*) textToclipboard.c_str(), size);
GlobalUnlock(hClipboardData);
SetClipboardData(CF_TEXT, hClipboardData);
}
}
CloseClipboard();
}
return success;
}*/
bool Translate(unsigned short language1, unsigned short language2)
{
// std::string str (str_base+Idioms[language1]+"&tl="+Idioms[language2]+"&q="+encode(getClipboard()));
std::string str (str_base+Idioms[language1]+"&tl="+Idioms[language2]+"&q="+encode("áéíóú"));
cout << str;
return true;
}
int main()
{
cout << "Press CTRL and SPACE.\n\nCreated by Pedro Henrique.";
unsigned short language1=0, language2=2;
Translate(language1, language2);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RkOjpzdHJpbmcgZ2V0aGV4KCB1bnNpZ25lZCBpbnQgYyApCnsKICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdG0gOwogICAgc3RtIDw8ICclJyA8PCBzdGQ6OmhleCA8PCBzdGQ6Om5vdXBwZXJjYXNlIDw8IGMgOwogICAgcmV0dXJuIHN0bS5zdHIoKTsKfQoKc3RkOjpzdHJpbmcgZW5jb2RlKHN0ZDo6c3RyaW5nIHN0cikKewpzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgdW5yZXNlcnZlZCA9ICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItXy5+IjsKCnN0ZDo6c3RyaW5nIHI7CgogICBmb3IoIHVuc2lnbmVkIGludCBpID0gMDsgaTxzdHIubGVuZ3RoKCk7IGkrPTEpCiAgICB7CiAgICAJdW5zaWduZWQgY2hhciBjID0gc3RyLmF0KGkpOwogICAgICAgIGlmKCB1bnJlc2VydmVkLmZpbmQoYykgIT0gLTEgKSByICs9IGMgOyBlbHNlIHIgKz0gZ2V0aGV4KGMpIDsKICAgIH0KCnJldHVybiByOwp9CgoKCnN0ZDo6c3RyaW5nIHN0cl9iYXNlID0gImllPVVURi04Jm9lPVVURi04JmhsPXB0LUJSJmNsaWVudD10JnNjPTImc2w9IjsKCnN0ZDo6c3RyaW5nIElkaW9tYXNbXSA9IHsgIlBvcnR1Z3Vlc2UiLCAiU3BhbmlzaCIsICJFbmdsaXNoIiwgIkVzdG9uaWFuIiwgIkZyZW5jaCIsICJHZXJtYW4iLCAiSXRhbGlhbiIgfTsKCnN0ZDo6c3RyaW5nIElkaW9tc1tdID0geyAicHQiLCAiZXMiLCAiZW4iLCAiZXQiLCAiZnIiLCAiZGUiLCAiaXQifTsKCi8qCnN0ZDo6c3RyaW5nIGdldENsaXBib2FyZCgpCnsKICAgIHN0ZDo6c3RyaW5nIHN0ckRhdGE7CgogICAgaWYgKE9wZW5DbGlwYm9hcmQoTlVMTCkpCiAgICB7CiAgICAgICAgSEFORExFIGhDbGlwYm9hcmREYXRhID0gR2V0Q2xpcGJvYXJkRGF0YShDRl9URVhUKTsKICAgICAgICBpZiAoaENsaXBib2FyZERhdGEpCiAgICAgICAgewogICAgICAgICAgICBDSEFSICpwY2hEYXRhID0gKENIQVIqKSBHbG9iYWxMb2NrKGhDbGlwYm9hcmREYXRhKTsKICAgICAgICAgICAgaWYgKHBjaERhdGEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHN0ckRhdGEgPSBwY2hEYXRhOwogICAgICAgICAgICAgICAgR2xvYmFsVW5sb2NrKGhDbGlwYm9hcmREYXRhKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBDbG9zZUNsaXBib2FyZCgpOwogICAgfQogICAgcmV0dXJuIHN0ckRhdGE7Cn0KCmJvb2wgc2V0Q2xpcGJvYXJkKHN0ZDo6c3RyaW5nIHRleHRUb2NsaXBib2FyZCkKewogICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKCiAgICBpZiAoT3BlbkNsaXBib2FyZChOVUxMKSkKICAgIHsKICAgICAgICBFbXB0eUNsaXBib2FyZCgpOwogICAgICAgIHNpemVfdCBzaXplID0gKHRleHRUb2NsaXBib2FyZC5sZW5ndGgoKSsxKSAqIHNpemVvZihDSEFSKTsKICAgICAgICBIR0xPQkFMIGhDbGlwYm9hcmREYXRhID0gR2xvYmFsQWxsb2MoTlVMTCwgc2l6ZSk7CiAgICAgICAgaWYgKGhDbGlwYm9hcmREYXRhKQogICAgICAgIHsKICAgICAgICAgICAgQ0hBUiogcGNoRGF0YSA9IChDSEFSKikgR2xvYmFsTG9jayhoQ2xpcGJvYXJkRGF0YSk7CiAgICAgICAgICAgIGlmIChwY2hEYXRhKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBtZW1jcHkocGNoRGF0YSwgKENIQVIqKSB0ZXh0VG9jbGlwYm9hcmQuY19zdHIoKSwgc2l6ZSk7CiAgICAgICAgICAgICAgICBHbG9iYWxVbmxvY2soaENsaXBib2FyZERhdGEpOwogICAgICAgICAgICAgICAgU2V0Q2xpcGJvYXJkRGF0YShDRl9URVhULCBoQ2xpcGJvYXJkRGF0YSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQ2xvc2VDbGlwYm9hcmQoKTsKICAgIH0KICAgIHJldHVybiBzdWNjZXNzOwp9Ki8KCmJvb2wgVHJhbnNsYXRlKHVuc2lnbmVkIHNob3J0IGxhbmd1YWdlMSwgdW5zaWduZWQgc2hvcnQgbGFuZ3VhZ2UyKQp7CiAgICAvLyBzdGQ6OnN0cmluZyBzdHIgKHN0cl9iYXNlK0lkaW9tc1tsYW5ndWFnZTFdKyImdGw9IitJZGlvbXNbbGFuZ3VhZ2UyXSsiJnE9IitlbmNvZGUoZ2V0Q2xpcGJvYXJkKCkpKTsKICAgIHN0ZDo6c3RyaW5nIHN0ciAoc3RyX2Jhc2UrSWRpb21zW2xhbmd1YWdlMV0rIiZ0bD0iK0lkaW9tc1tsYW5ndWFnZTJdKyImcT0iK2VuY29kZSgiw6HDqcOtw7PDuiIpKTsKICAgIGNvdXQgPDwgc3RyOwogICAgcmV0dXJuIHRydWU7Cn0KCmludCBtYWluKCkKewogICAgY291dCA8PCAiUHJlc3MgQ1RSTCBhbmQgU1BBQ0UuXG5cbkNyZWF0ZWQgYnkgUGVkcm8gSGVucmlxdWUuIjsKICAgIHVuc2lnbmVkIHNob3J0IGxhbmd1YWdlMT0wLCBsYW5ndWFnZTI9MjsKICAgIFRyYW5zbGF0ZShsYW5ndWFnZTEsIGxhbmd1YWdlMik7CiAgICByZXR1cm4gMDsKfQo=