CODE:#define CP_ACP 0
#define CP_UTF8 65001
#define CRYPT_STRING_HEXRAW 12
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll");
external(INT, "WideCharToMultiByte", "WideCharToMultiByte", "Kernel32.dll");
external(INT, "CryptBinaryToString", "CryptBinaryToStringA", "Crypt32.dll");
string api_key = "trnsl.1.1.20181207T020207Z.5ff9f307abbe30ca.683f64643665089eb5abe1625284bd866e378a1d"; // ключ
string rn=formatic(10)+formatic(13);
string Text = "Перевести этот текст на английский."; // текст, который надо перевести
string result = translate(api_key, "en", Text); // перевести на англ.
messagebox(result);
if(parserjson(Json, result)==1)
{
messagebox(Json.code + rn + Json.lang + rn + Json.text[0]); // тут нормально
}
function translate(string api_key, string lang, string text)
{
char c2[20000], c3[20000];
string s, text2;
// перевод из ansi в utf8
int count_symbol = MultiByteToWideChar(CP_ACP, 0, text, -1, address(#c2[0]), sizearray(c2)); // ansi в utf16
count_symbol=WideCharToMultiByte(CP_UTF8, 0, address(#c2[0]), count_symbol, address(#c3[0]), sizearray(c3), 0, 0); // utf16 в utf8
// перевод символов в HEX
int chString=sizearray(c2);
CryptBinaryToString(address(#c3[0]), count_symbol, CRYPT_STRING_HEXRAW, address(#c2[0]), address(#chString));
regexreplace(-1, #text2, format(#c2[0]), "(..)", "%$1"); // добавить знак %
//messagebox(text2); // текст отправляемый серверу
if (sendgetweb(#s, "", "GET", "https:/"+"/translate.yandex.net", "api/v1.5/tr.json/translate?key="+api_key+"&text="+text2+"&lang="+lang)>0)
{
messagebox (s); // ответ от сервера
if(parserjson(Json, s)==1)
{
messagebox(Json.code + rn + Json.lang + rn + Json.text[0]); // ERROR
return s;
}
}
return "";
} |