Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2014, 18:03   #1
TUberwer
Форумчанин
 
Регистрация: 01.07.2013
Сообщений: 221
По умолчанию GoogleTranslateAPI и YandexTranslateAPI

Хотел спросить у raxp'a насчет его двух библиотек GoogleTranslateAPI и YandexTranslateAPI.
1) На вашем сайте про библиотеку YandexTranslateAPI.dll написано, что в этой библиотеке есть функция озвучивания переведенного текста. В демке этого нету.. Ну как бы я значение не менял, все равно озвучки нету, в описании написано что она не задействована, ее как-то можно "задействовать"?
2) Можно ли использовать в одной программе сразу две dll'ки? ведь чтобы ними воспользоваться, запросы одинаковые... А нужно сделать например по выбору(например так: создаем глобальную переменную integer, если ее значение равно 0, то используется библиотека GoogleTranslateAPI, если значение равно 1, то используется библиотека YandexTranslateAPI).
Я думал может можно как-то выгружать и подгружать библиотеки? например GoogleTranslateAPI выгружаю, YandexTranslateAPI подгружаю, и наоборот.. Или может еще способы есть?
TUberwer вне форума Ответить с цитированием
Старый 13.01.2014, 21:53   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
На вашем сайте про библиотеку YandexTranslateAPI.dll написано, что в этой библиотеке есть функция озвучивания переведенного текста.
есть.

Цитата:
В демке этого нету.. Ну как бы я значение не менял, все равно озвучки нету
в демке нет. Озвучивание есть, можете установить флаг в true.

Цитата:
Можно ли использовать в одной программе сразу две dll'ки?
никто не запрещает.

Цитата:
ведь чтобы ними воспользоваться, запросы одинаковые
да, это сделано специально для приложений двухуровневой архитектуры.

Есть у меня автопереводчик текста под курсором в браузере, в даташитах PDF, из буфера обмена с автоопределением исходного языка. В случае неработоспособности одного сервиса, DLL можно просто подменить другой. Что и случилось несколько месяцев назад с сервисом YANDEX, когда они сменили API ver.1.0 на ver.1.5 JSON. Но ситуацию поправил и теперь обе функционируют.

p.s.: у YANDEX также есть свой спич-API для распознавания речи, но он доступен для андроид- и винфоне- платформ, API же для HTTP запросов они предоставляют после регистрации ограниченному числу разработчиков с октября-ноября 2013-го. Пока не хочу привязываться, ибо сыро и можно использовать только для себя, гугл вполне устраивает.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 13.01.2014, 22:06   #3
TUberwer
Форумчанин
 
Регистрация: 01.07.2013
Сообщений: 221
По умолчанию

Ну смотрите, вот я в той же демке создал отдельную кнопку, и написал ей такой код, озвучки нету.. Брандмауэр и антивирусы оффнул. Озвучивание не происходит..
PHP код:
procedure TForm1.Button1Click(SenderTObject);
begin
translate
('привет, да',
                            
'en',
                            
'ru',
                            
'',
                            
True);
end
Тоже самое делал и с кнопкой "Перевести, которая уже есть в демке сразу. Текстово переводит, но озвучки нету, хоть и поставил последний аргумент на True..
TUberwer вне форума Ответить с цитированием
Старый 13.01.2014, 22:37   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Код:
translate('привет, да', 
                            'en', 
                            'ru', 
                            'ja-file.mp3', 
                            True);
имя файлу забыли дать, этот параметр у вас пустой остался. Все работает, озвучивает.

Читаем:
Цитата:
В принципе, параметр filename можно считать рудиментом, но он оставлен, чтобы пользователь сам мог задавать путь для сохранения файла. По-умолчанию, без указания каталога, а просто имени - файл создается рядом с либой. Если имя не задавать, то и сохранять не во что.

Еще можно без программирования прямо в блокноте и сохранить как VBS:
Код:
' регистрируем COM объект DynamicWrapperX в тихом режиме
Dim WshShell 
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("regsvr32.exe dynwrapx.dll /s"),3, true

Set Wrap = CreateObject("DynamicWrapperX")
Wrap.Register "YandexTranslateAPI.dll", "translate", "i=ssssc", "f=s", "r=s"
MsgBox(Wrap.translate("The British Museum has one of the largest libraries in the world. Hello", "ru", "auto", "tts.mp3", 1))
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 13.01.2014 в 22:41.
raxp вне форума Ответить с цитированием
Старый 13.01.2014, 22:56   #5
TUberwer
Форумчанин
 
Регистрация: 01.07.2013
Сообщений: 221
По умолчанию

окей, помогло. Вот насчет этого не очень понял.

Цитата:
да, это сделано специально для приложений двухуровневой архитектуры.
Я так и не понял как мне воспользоваться определенной библиотекой в определенной ситуации..
TUberwer вне форума Ответить с цитированием
Старый 14.01.2014, 00:16   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...понял вас, перекачайте архив с YandexTranslateAPI.DLL.

Использовать можно так (рудимент убран):
Код:
var  translate:function(text,                // исходный текст для перевода
                        toLang,              // направление перевода en/ru
                        myLang: pansichar;   // исходный язык текста
                        play: boolean        // флаг аудио-воспроизведения
                        ): pansichar;        // текст после перевода
                        stdcall;
     LibHandle: THandle;

function LinkProc(ProcName: string):Pointer;
begin
  result:= GetProcAddress(LibHandle,PChar(ProcName));
end;

// одно событие на две кнопки со своими TAG=0 и TAG=1 для различения нажатий
procedure TForm1.Button2Click(Sender: TObject);
begin
 memo1.Clear;

 if LibHandle <> 0 then FreeLibrary(LibHandle);
 if (sender as tbutton).tag = 0 then
  LibHandle:= LoadLibrary('YandexTranslateAPI.dll')
   else LibHandle:= LoadLibrary('GoogleTranslateAPI.dll');

 if LibHandle<>0 then begin
  translate:= LinkProc('translate');

  memo1.Lines.Add(translate(memo2.Lines.GetText,
                            pansichar(tolang.Text),
                            pansichar(mylang.Text),
                            true));
 end
end;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.01.2014, 01:04   #7
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Кстати, из интереса, Сергей, а разве Google не закрыл Translate API, его же вроде платным сделали?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 14.01.2014, 01:10   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...давно закрыл (в 2011 еще), но никто не мешает браузером притворяться с ограничением 100 тыс. символов в сутки
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.01.2014, 01:16   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Пример совмещения двух гуглосервисов:

Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.01.2015, 22:33   #10
vBoris
Новичок
Джуниор
 
Регистрация: 20.10.2008
Сообщений: 2
По умолчанию

Уважаемый raxp.
ссылка на архив
vBoris вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GoogleTranslateAPI.dll TUberwer Общие вопросы Delphi 10 07.01.2014 22:12