- Offizieller Beitrag
Vielleicht kann man ja mit einem kleinen Tool zur Mithilfe animieren.
Das folgende Skript kompilieren und an einen Hotkey eurer Wahl binden.
Anwendung:
- zu übersetzenden Text markieren und in die Zwischenablage einfügen
- Hotkey aufrufen
- Website (DeepL) öffnet sich mit eurem Text und der Übersetzung
- von der Webseite (ggf. noch händisch korrigiert) über den Copy-Button die Übersetzung holen
- Einfügen >> Fertig!
Grundsätzlich braucht auf DeepL nicht angegeben werden, welche Ausgangssprache übergeben wird (automatische Erkennung). Ich habe EN-DE als Voreinstellung. Mit dem Tool kann aber über Parameteraufruf festgelegt werden, falls andere Sprachen Verwendung finden sollen. Ist aus dem Code ersichtlich, wie die Parameter zu nutzen sind.
Da DeepL eine von üblicher url Maskierung abweichende Schreibweise verwendet, wird das im Skript konvertiert.
EDIT
Da hatte ich doch noch im Parameterblock einen Fehler. Bitte korrigieren - ich habs markiert.
EDIT 2:
Ich habe die aktuelle Version eingefügt.
;-- TIME_STAMP 2020-07-29 13:56:30
Opt('MustDeclareVars', 1)
#cs Liste zu maskierender Zeichen
Zeichen Ascii DeepL-Zeichen
' ' 32 '%20'
'#' 35 '%23'
'$' 36 '%24'
'%' 37 '%25'
'&' 38 '%26'
'+' 43 '%2B'
',' 44 '%2C'
'/' 47 '%5C%2F'
':' 58 '%3A'
';' 59 '%3B'
'=' 61 '%3D'
'?' 63 '%3F'
'[' 91 '%5B'
'\' 92 '%5C%5C'
']' 93 '%5D'
'^' 94 '%5E'
'`' 96 '%60'
'{' 123 '%7B'
'|' 124 '%5C%7C'
'}' 125 '%7D'
#ce
#cs Verfügbare Sprachen
de Deutsch
en Englisch
fr Französisch
sp Spanisch
pt Portugiesisch
it Italienisch
nl Niederländisch
pl Polnisch
ru Russisch
ja Japanisch
zh Chinesisch
#ce
Global $LangFrom = "en"
Global $LangTo = "de"
Global $sConvert = _DeepL_Convert(ClipGet())
Global $sCmd = "https://www.deepl.com/translator#"
Switch $CMDLINE[0]
Case 0 ; Standard: EN-->>DE
; nichts
Case 1
If $CMDLINE[1] = "switch" Then ; Wechsel zwischen From/To, aber Standardsprachen bleiben
$LangFrom = "de"
$LangTo = "en"
ElseIf StringLeft($CMDLINE[1], 2) = "to" Then ; From bleibt EN, nur To wird gesetzt
$LangTo = StringTrimLeft($CMDLINE[1], 3) ; Param übergeben als: "to_" & Language
Else ; anderer Parameter für "From" übergeben, "To" bleibt "DE"
$LangFrom = $CMDLINE[1]
EndIf
Case 2 ; sowohl From als auch To erhalten andere Sprache zugewiesen
$LangFrom = $CMDLINE[1]
$LangTo = $CMDLINE[2]
EndSwitch
; sicher gehen, dass Sprachkürzel als Kleinbuchstaben verwendet werden
$LangFrom = StringLower($LangFrom)
$LangTo = StringLower($LangTo)
; Befehl zum Aufruf der Website bilden
$sCmd &= StringFormat("%s/%s/%s", $LangFrom, $LangTo, $sConvert)
; Seitenaufruf
ShellExecute($sCmd)
Func _DeepL_Convert($s)
; Annehmen, dass $s UTF8 ist und in ANSI wandeln (falls $s ASCII/ANSI ist, schadet es nicht)
Local $sAnsi = BinaryToString(StringToBinary($s, 4), 1)
Local $aData = StringSplit($sAnsi, "")
Local $sRet = '', $asc
For $i = 1 To $aData[0]
$asc = Asc($aData[$i])
Switch $asc
Case 32, 35 To 38, 43, 44, 58, 59, 61, 63, 91, 93, 94, 96, 123, 125
$sRet &= '%' & Hex($asc,2)
Case 47, 92, 124
$sRet &= '%5C%' & Hex($asc,2)
Case Else
$sRet &= $aData[$i]
EndSwitch
Next
; wieder von ANSI in UTF8 wandeln
Return BinaryToString(StringToBinary($sRet, 1), 4)
EndFunc
Alles anzeigen
Tweaky Du kannst ja in deinem Startpost hierauf verlinken.