1 (изменено: serhiyka, 2023-04-06 18:48:32)

Тема: AHK: скрипт для SDL Trados

Есть скрипт, суть которого состоит в переводе выделенного текста в онлайн-переводчике с последующей вставкой перевода. Скрипт частично работает: запускается окошко с выбором исходного и целевого языков. После нажатия горячей клавиши появляется и через секунду исчезает подсказка: "Translating...", а дальше - ничего, скрипт висит в трее, перевод не вставляется. Помогите обнаружить ошибку, в AHK разбираюсь слабо.

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
SetTitleMatchMode, 3

ToolTipVisible = 0
Gui, 1:Add, Text, x10 y15 vTb1, Source language:
Gui, 1:Add, Combobox, x+20 yp-3 vLangIn, auto||en|ru|uk
Gui, 1:Add, Text, x10 y+15 vTb2, Target language:
Gui, 1:Add, Combobox, x+22 yp-3 vLangOut, en|ru|uk||
Gui, 1:Add, Checkbox, x10 y+20 Checked vPaste2CB, Paste translation to clipboard when closing tooltip
Gui, 1:Add, Checkbox, x10 y+15 Checked vHideToolTip, Hide tooltip on mouseclick
Gui, 1:Add, Button, x30 y+20 w80 vB1, &Exit
Gui, 1:Add, Button, x+30 w80 Default vB2, &OK
Gui, 1:Show, Autosize
Return

ButtonExit:
GuiEscape:
GuiClose:
ExitApp

ButtonOK:
Gui, 1:Submit
Return

; [Ctrl]+[Alt]+[F11] shows the little user interface for changing source and target language
^!F11::
Gui, 1:Show, Autosize
Return

~RButton::
~MButton::
~LButton::
If HideToolTip = 0
    Return
If ToolTipVisible = 1
{
    ToolTip
    ToolTipVisible = 0
    Return
}
Return

; [Ctrl]+[F11] runs DeepL translator for selected text or makes the tooltip with the translation disappear if it is visible
^F11::
If ToolTipVisible = 1
{
    ToolTip
    ToolTipVisible = 0
    Return
}
CurrentCB = %Clipboard%
Clipboard =
SendInput, ^c
ClipWait, 5
If ErrorLevel
{
    MsgBox, 48, DeepLTranslateSelection, No text highlighted or problem copying text to clipboard.
    Return
}
Source = %Clipboard%
StringLen, SourceLength, Source
SourceLength := SourceLength * 5
ToolTip, Translating... please wait ☺., % A_CaretX-SourceLength, % A_CaretY+50
Target =
Target := DeepLTranslate(Source,LangIn,LangOut)
ToolTip, %Target%, % A_CaretX-SourceLength, % A_CaretY+50
ToolTipVisible = 1
If Paste2CB = 1
    Clipboard = %Target%
Else
    Clipboard = %CurrentCB%
Return

DeepLTranslate(Source,LangIn,LangOut)
{
    StringReplace, Source, Source, %A_Space%, `%20, All
    Base := "https://www.deepl.com/translator"
    Path := Base . "/" . LangIn . "-" . LangOut . "/" . Source
    IE := ComObjCreate("InternetExplorer.Application") ; Creation of hidden IE instance to look up DeepL Translate and retrieve 

translation
    IE.Navigate(Path)
    While IE.readyState!=4 || IE.document.readyState!="complete" || IE.busy
        Sleep 250
    Result := ""
    btns := IE.document.getElementsByClassName("lmt__translations_as_text__text_btn")
    if (btns.length > 0) {
        Result := btns[0].innerText
    }
    IE.Quit
    Return Result
}

2

Re: AHK: скрипт для SDL Trados

serhiyka, добро пожаловать на форум! Ознакомьтесь, пожалуйста, с Правилами, отредактируйте свой пост. Обратите внимание на составление заголовков.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: скрипт для SDL Trados

teadrinker
Заголовок поправил.

4

Re: AHK: скрипт для SDL Trados

А что такое SDL Trados и как это связано с DeepL?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: скрипт для SDL Trados

teadrinker
SDL Trados - одна из лучших CAT(Computer-Aided Translation)-программ. DeepL - лучший на сегодняшний день онлайн-переводчик, значительно сокращающий время перевода.

6

Re: AHK: скрипт для SDL Trados

Спасибо, а какое отношение SDL Trados имеет к вашему скрипту? И я так и не понял, как она связана с DeepL. Это же вроде разные организации?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: скрипт для SDL Trados

teadrinker
В поисках решения ошибки в скрипте обнаружил, что Вы, в свое время, написали подобный скрипт. Конечно, Ваш скрипт выполнен на высоком профессиональном уровне (Java), имея нулевые навыки программирования, я даже не знаю, как запускаются json-скрипты. Мне нужен более простой скрипт, запускаемый из Trados комбинацией клавиш, с возможностью выбора исходного и целевого языка, отправляющий выделенный текст в DeepL вместо Google, и вставляющий уже переведенный текст по месту курсора.
Мне кажется. ошибка в скрипте связана с использованием IE, но MS Edge привязать не удалось, получалось еще хуже.

8

Re: AHK: скрипт для SDL Trados

Вот есть такой скрипт Malcev'а, может, будет для вас полезен.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: скрипт для SDL Trados

teadrinker
Спасибо. попробую.