- Offizieller Beitrag
Ich hatte bereits die erste Variante dieses Skriptes im Hilfe-Übersetzung-Thread geposted.
In der Version war nur ANSI-Text übersetzbar. Ich habe das jetzt angepasst, damit auch UTF8 übersetzt werden kann.
DeepL fügt den zu übersetzenden Text mit in die Adresszeile ein, somit ist es möglich den Text vorab aufzubereiten und die Seite mit Text aufzurufen. Der Text wird jedoch nicht nach URL Regeln maskiert, sondern nach einem eigenen System der Website, welches ich auf den Text im Skript anwende.
Zur Anwendung:
- Skript an einen (globalen) Hotkey eurer Wahl binden (für Maus-Freunde geht natürlich auch ein Button auf der Schnellstartleiste )
- zu übersetzenden Text markieren und in die Zwischenablage kopieren
- Hotkey aufrufen (oder Button klicken)
- 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
In der Standardeinstellung wird von Englisch nach Deutsch übersetzt.
Man kann durch Parameteraufruf des Skriptes die Von/Zu-Spracheinstellungen ändern:
Bsp.:
- DeepLConvert.exe switch Die Standardsprachen werden bei Von/Zu getauscht auf: Deutsch zu Englisch.
- DeepLConvert.exe to_sp Die Von-Sprache bleibt Englisch, nur die Zu-Sprache wechselt - hier zu Spanisch. (Suffix "to_" & Sprache)
- DeepLConvert.exe nl Die Zu-Sprache bleibt Deutsch, nur die Von-Sprache wechselt - hier auf: von-Niederländisch.
- DeepLConvert.exe pt it Von- und Zu-Sprache wechseln - hier von Portugiesisch zu Italienisch.
AutoIt: DeepLConvert.au3
;-- 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