Переводчик Google
Вопрос по переводчику Google. Делаю запрос на перевод текста из Memo1.text в google - переводчик и получаю результат перевода в Memo2.Text.
И вот вопрос: Почему переводится только первая строка Memo1.Text. А не весь текст что есть в Memo1.Text ?
Вот полный, простой код:
procedure TForm1.Button1Click(Sender: TObject);
var
Data: TStringList;
s : String;
begin
IdHTTP1.Request.UserAgent := 'Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.16';
Data := TStringList.Create;
try
Data.Text := ('client=x' + #13#10
+ 'text=' + Memo1.Text + #13#10
+ 'hl=ru' + #13#10
+ 'sl=ru' + #13#10
+ 'tl=en');
s := IdHTTP1.Post('http://translate.google.ru/translate_a/t', Data);
Memo2.Text := s;
finally
Data.Free;
end;
end;
Ответы (1 шт):
Почему переводится только первая строка Memo1.Text. А не весь текст что есть в Memo1.Text?
У вас в коде Data.Text := … видно, что параметры отделены друг от друга символами #13#10, что соответствует разделителю строк. Сервер встречает конец первой строки, и считает что параметр text закончился. Поэтому переводится только первая строка.
Что с этим можно сделать?
Я вижу минимум два варианта:
Отправлять каждую строку отдельно, и результат перевода поочередно добавлять в Memo2.
Убрать из текста пару символов
#13#10. Можно как предлагали выше заменить на пробел. Можно попытаться найти документацию. Можно попытаться подобрать другой символ-разделитель. Велика вероятность, что разделителем должен быть одиночный символ#10