Сегодня внес небольшие коррективы в модуль, реализующий возможности переводчика Google (Traslator.pas). Теперь модуль использует вторую версию API со всеми вытекающими отсюда последствиями.
Все изменения выложены в репозитории на GitHub.com. На данный момент компонент имеет те же возможности, что и первая версия, т.е. перевод строк текста на различные языки с использованием GET-запросов. Хотя новая версия API “обросла” несколькими новыми возможностями, которые будут по мере сил реализовываться в компоненте, а именно
1. Возможность использования POST-запросов.
Очень удобная штука. По умолчанию количество символов в GET-запросе не должно превышать 2 000 символов. POST-запрос расширяет это ограничение до 5000.
2. Возможность перевода нескольких строк текста.
Для этого разработчикам API пришлось немного изменить форму ответа. Теперь переведенные строки оформляются в виде JSON-массива.
3. Контроль лимита использования API.
Об этом я писал вчера, но пока ещё не успел протестировать эту возможность и получить ответ от сервера, когда лимит исчерпан. В документации по API Переводчика таких примеров, к сожалению, нет – придётся потестировать самому.
В общем, пока можете скачивать новый модуль с этой страницы репозитория. Обо всех обновлениях, как обычно, буду отписываться в блоге.
Книжная полка
![]() |
Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
|
![]() |
![]() |
Название: О чем не пишут в книгах по Delphi
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
|
![]() |




У меня не компилируется компонент Translator_pack ошибка на этой строке
req := {$IFDEF VER220} CoXMLHTTP {$ELSE} CoXMLHTTPRequest {$ENDIF}.Create;
подскажите в чем дело. у меня Delphi2010.
Опс :) Спасибо за сообщение, забыл эту часть подправить немного. Вам достаточно оставить только
req:=CoXMLHTTP.Create
и всё заработает
Пытаюсь запустить демо в дельфи 2007. При переводе ругается на строку if(index >= FLength) then в function TSuperArray.GetO(const index: Integer): ISuperObject; модуля superobject. В чем может быть дело?
Может стоит попробовать более раннюю версию SuperObject’a?
Где взять и на сколько раннюю?
Ошибка скорее всего в вашем коде, т.к. нашла пример использования GoogleAPI и с той же версией SuperObject’a все работает отлично в D2007. Так что код скорее всего не совместим с некоторыми версиями дельфи.
Как установить это компоненты??зарание спасибо!
Устанавливают равно также как и все другие компоненты — качаете архив с github, распаковываете, запускаете dpk и т.д. и т.п.
Это ППЦ ))))))))))) Оказывается код рабочий! У меня стоит D7. У меня есть панацея для всех, у кого не работает код и ругается на всякую всячину в SuperObject. (Подправить всёравно придётся, но это мелочи) Как бы то ни казалось, но Vlad написал рабочий код. Даже нестыковки в версиях невсчёт — это легко убирается, а вот ругающийся на всё SuperObject это уже надо быть крутым экстрасенсом, что б догадаться ))) Мне «повезло», после 6 часов неприрывных поисков всяких способов у меня в папке с прогой накопилась уйма всего и там, оказалось то, что нужно для работы — это DLLки для SSL,… Подробнее »
HELP! Нужен отзыв того, у кого всё переводит. С английским и подобными языками всё нормально, но вот с «хитрыми» не всё так гладко. Как я говорил, у меня D7. При переводе на китайский в Мемо приходят одни «????». Поставил TNT Unicode Controls, теперь TntMemo1.Lines.Add(#26377); иероглиф добавляет, но перевод выведенный в этот же Мемо всё равно в виде «?????» Пробовал ставить Font.Name:= ‘Arial Unicode MS’; Font.Charset:= CHINESEBIG5_CHARSET; Результата нет. Уже думаю, может при переводе где-то из «?????» превращается в «?????»….. (интересно, схавает ли Вордпресс иероглифы в строке выше) У кого работает китайский (желательно с версией до D2009), расскажите… Подробнее »
Не сочтите за спам…
Я таки оказался прав. Надо было изменить тип данных возвращаемый функцией Translate на WideString и всё стало работать.
Впринципе, и верхний и этот коммменты можно можно стереть.
За спам не сочту :) Проблемы с ????? я не наблюдал по двум причинам — не требовался перевод на «хитрые» языки и использовал минимум D2010 в разработке, а там, как известно, кругом Unicode . В принципе отсюда и появилось решение вашей проблемы. У меня в D2010 string=UnicodeString, а у Вас в D7 — нет :) Вот и каракули в мемо.
Сейчас работаю немного над другой программой и к Google API планирую вернуться через месяц/полтоора. Если будут какие-то ещё проблемы — пишите в комментариях — по мере возможностей буду править.
Здравствуйте , если я компилирую ваш демо код translate_demo , в функции ComboBox1Change и ComboBox2Change появляется ошибка:
Access violation at address 0052940E in module «Project3.exe»/ Write of address 00000039
У меня Delphi Studio 2010
Delphi 2010 не видет класс Ttranslate, он находится в файле GTranslate.pas ( сам файл есть в проекте) . Как нужно его подключать ? Компилируется ваше demo .
подключается обычным образом — через uses
я так и делал , ошибка как на скриншоте. А вы тестировали код на других версиях delphi ? https://img696.imageshack.us/i/delphi.gif/
если выбераем ignore , программа не работает и ошибка Access violation at address ( в 1 моем посте) .
TTranslator = class(TComponent)
Вы перед тем как Demo собирать компонент установили? Пакет лежит в директории packages — устанавливаете компонент, на вкладке WebDelphi появится TTranslator. Открываете демку, компилируете
Спасибо , я установил компонент , программа нормально компилируется . Но сама программа не переводит текст . Выводит «Исходный текст Перевод » . Там какие то проблеммы с SSL ?
Api я прописал
В Delphi Xe код запустился , но не переводит с русского на другие языки . Например если написать в поле Фраза : текст , он не переведется на другой язык. Если нависать text переводится на любой язык .
надо смотреть изменения в API. На момент написания компонента AP был в лаборатории, вполне возможно, что что-нибудь сменили в вызовах
С русского перевод не работал. Метод GetParams надо переписать так (DelphiXE, использую TAzureService): function TTranslator.GetParams(const Text: TStringList): string; var i: integer; source, dest: AnsiString; begin source := »; if SourceLang unknown then begin source := StringReplace (GetEnumName(TypeInfo(TLanguageEnum), Ord(FSourceLang)), ‘_’, ‘-‘, [rfReplaceAll]); Delete(source, 1, 4); end; dest := StringReplace(GetEnumName(TypeInfo(TLanguageEnum), Ord(FDestLang)), ‘_’, ‘-‘, [rfReplaceAll]); Delete(dest, 1, 4); Result := ‘key=’ + Key; for i := 0 to Text.Count — 1 do Result := Result + ‘&q=’ + TAzureService.UrlEncode(Text[i]); if SourceLang unknown then Result := Result + ‘&source=’ + source; if DestLang unknown then Result := Result + ‘&target=’ + dest; end; На… Подробнее »