Переводчик 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 закончился. Поэтому переводится только первая строка.

Что с этим можно сделать?

Я вижу минимум два варианта:

  1. Отправлять каждую строку отдельно, и результат перевода поочередно добавлять в Memo2.

  2. Убрать из текста пару символов #13#10. Можно как предлагали выше заменить на пробел. Можно попытаться найти документацию. Можно попытаться подобрать другой символ-разделитель. Велика вероятность, что разделителем должен быть одиночный символ #10

→ Ссылка