Code: Select all
; This script translates text.
; Save script as UTF-8 with BOM signature.
; https://www.autohotkey.com/boards/viewtopic.php?f=82&t=127623&p=564800#p564800
; https://developers.deepl.com/docs
#Requires AutoHotkey v2.0
token := token ?? 'My API token'
F8:: {
A_Clipboard := '', Send('^c')
If ClipWait(1) {
If '' != str := translate(A_Clipboard, 'EN')
SendText str
} Else MsgBox 'An error occurred while waiting for the clipboard.', 'Error', 'Icon!'
}
translate(str, lang) {
Static url := 'https://api-free.deepl.com/v2/translate'
, regex := '"text":"(.+?)"'
, ignore := '«»\' ; Special characters to be ignored
Loop Parse ignore
str := StrReplace(str, A_LoopField, '<ignore>' A_LoopField '</ignore>') ; Add XML tags for special chars
str := Trim(RegExReplace(str, '\R', ' ')) ; Change line breaks to spaces
str := StrReplace(str, '\', '\\') ; Fix backslash for XML
; MsgBox str, 'Input'
json := '{"text":["' str '"],"target_lang":"' lang '", "tag_handling": "xml", "ignore_tags": ["ignore"]}'
whr := ComObject('Msxml2.XMLHTTP.6.0')
whr.Open('POST', url, False)
whr.SetRequestHeader('Content-Type', 'application/json')
whr.SetRequestHeader('Authorization', 'DeepL-Auth-Key ' token)
whr.Send(json)
status := whr.status
; MsgBox whr.ResponseText, 'Output'
If RegExMatch(whr.ResponseText, regex, &m) {
str := RegExReplace(m[1], '<ignore>(.+?)</ignore>', '$1') ; Strip XML tags for special chars
Return StrReplace(str, '\\', '\') ; Restore backslashes
}
}
Below is a rough idea of what the glossary management code should do:
Code: Select all
; Create a new glossary
^g::
; Make an HTTP request to create a glossary
; Glossary creation logic
MsgBox, Creating a new glossary...
return
; List all created glossaries
^l::
; Make an HTTP request to list glossaries
; Glossary listing logic
MsgBox, Listing glossaries...
return
; Get details about a specific glossary
^d::
; Make an HTTP request to get glossary details
; Glossary details retrieval logic
MsgBox, Retrieving glossary details...
return
; List entries of a glossary
^e::
; Make an HTTP request to list glossary entries
; Glossary entries listing logic
MsgBox, Listing glossary entries...
return
; Delete a glossary
^x::
; Make an HTTP request to delete a glossary
; Glossary deletion logic
MsgBox, Deleting glossary...
return