function
urlEncode(
const
URL:
WideString
):
AnsiString
;
var
i:
Integer
;
utf8:
AnsiString
;
begin
result :=
''
;
utf8 := UTF8Encode(URL);
for
i :=
1
to
length(utf8)
do
begin
case
(utf8[i])
of
' '
: result := result +
'+'
;
'0'
..
'1'
,
'A'
..
'Z'
,
'a'
..
'z'
,
'-'
,
'_'
: result := result + utf8[i];
else
result := result +
'%'
+
AnsiString
(IntToHex(
byte
(utf8[i]),
2
));
end
;
end
;
end
;
function
TForm1
.
Translate_Google(text, myLang, toLang:
string
):
string
;
var
idHTTP1: TidHTTP;
data: TStringList;
Response: TStringStream;
s:
string
;
k, n:
integer
;
begin
data:= TStringList
.
Create;
idHTTP1:= TIdHTTP
.
Create(
nil
);
text:=URLEncode(text);
text:= StringReplace(StringReplace(StringReplace(text, #
13
#
10
,
' '
, [rfReplaceAll]),
'...'
,
''
,[rfReplaceAll]),
'.'
,
','
, [rfReplaceAll]);
data
.
Add(
'client=x'
);
data
.
Add(
'text='
+ text);
data
.
Add(
'hl=ru'
);
data
.
Add(
'sl='
+myLang);
data
.
Add(
'tl='
+toLang);
data
.
add(
'multires=1'
);
data
.
add(
'otf=1'
);
data
.
add(
'sc=1'
);
Response:= TStringStream
.
Create(
''
);
try
except
ShowMessage(
'ррр'
+ #
13
#
10
+
'ррр'
);
end
;
s:= Response
.
DataString;
k:= Pos(
'trans":"'
, s);
n:= PosEx(
'","'
, s, k);
s:= Copy(s, k +
8
, n - k -
8
);
result:= s;
data
.
Free;
idHTTP1
.
Free;
end
;