Übersetzungstool

  • Hi ,
    Es gibt ein Tool in AUTOHOTKEY geschrieben welches ein markiertes Wort per Hotkey Übersetzt.

    Der AUTOHOTKEY Programmcode sieht so aus:

    Spoiler anzeigen


    ; Skript für Autohotkey - http://autohotkey.com
    ; Funktionen:
    ; 1 Markiertes Wort bei http://leo.org übersetzen
    ; 2 Texteingabefeld öffnen, wenn kein Wort markiert ist
    ; 3 Wenn ein URL markiert ist, diesen URL an Standardbrowser übergeben
    ; Version: 1.0
    ; Erstellt am: 18.12.2005
    ; Autor: Peter Lederer, p.lederer@t-online.de
    ; Anregung: Andreas Borutta, http://borumat.de/kontakt
    ; Tastenkürzel: Win+Ü

    #ü::
    ; Inhalt der Zwischenablage in Variable speichern, anschließend leeren
    temp := ClipboardAll
    Clipboard =
    ; Strg+C senden, Inhalt in Variablen speichern
    Send, ^c
    search := Clipboard

    /*
    Prüfung, ob sich in den ersten 8 Zeichen des markierten Bereichs die durch Komma
    getrennten Begriffe befinden Wenn nicht, Abbruch. Die Liste kann beliebig erweitert
    werden, alle Begriffe müssen durch Komma (ohne Leerzeichen) getrennt werden.
    */

    StringLeft, strTest, search, 8
    If strTest not contains www.,http://,https://,ftp://</a>
    {
    If clipboard <>
    {
    ; ursprüngliche Zwischenablage wiederherstellen
    Clipboard := tmp
    ; Speicher wieder freimachen
    tmp =
    Run, http://dict.leo.org/?search=%Search%
    Return
    }
    Else
    {
    Inputbox, search, Leo.org Übersetzung, Bitte Suchbegriff eingeben, , 300, 140
    If ErrorLevel <> 0
    Exit
    Else
    {
    ; ursprüngliche Zwischenablage wiederherstellen
    Clipboard := tmp
    ; Speicher wieder freimachen
    tmp =
    Run, http://dict.leo.org/?search=%Search%
    Return
    }
    }
    }
    Else
    {
    If clipboard <>
    {
    ; ursprüngliche Zwischenablage wiederherstellen
    Clipboard := temp
    ; Speicher wieder freimachen
    temp =
    ; Festellen, ob an zweit- od. drittletzter Stelle ein Punkt steht
    StringLen, strLaenge2, search
    StringMid, strPunkt2, search, strLaenge2 - 2, 1
    StringLen, strLaenge3, search
    StringMid, strPunkt3, search, strLaenge3 - 3, 1
    StringLen, strLaenge4, search
    StringMid, strPunkt4, search, strLaenge4 - 4, 1
    If strPunkt2 = .
    {
    Run, %search%
    Return
    }
    Else If strPunkt3 = .
    {
    Run, %search%
    Return
    }
    Else If strPunkt4 = .
    {
    Run, %search%
    Return
    }
    Else
    MsgBox, Die URL scheint nicht korrekt zu sein
    }
    Else
    {
    Clipboard := temp
    ; Speicher wieder freimachen
    temp =
    }
    }
    Return

    Das ruft dann einfach die Webseite auf und zeigt die Seite an.
    Es gibt dann eine weiterentwicklung in einem c't Tool "ac'tivAid" welches scheinbar dieses nutzt aber den Browser gar nicht sichtbar aufruft, sondern das Ergebnis elegant als Tooltip anzeigt.

    Hat jemand Lust das vielleicht nachzu programieren ?

    Gruß
    Wolke

    Einmal editiert, zuletzt von wolkenloser (24. Januar 2007 um 09:06)

  • Gut...
    so wie ich das sehe müßte man eine Funktion hinbekommen die einem quase das Suchergebnis von der Webseite außließt so das man das dann in einem Tooltip umleiten kann.

    Da gibt es doch Funktionen für den Internetexplorer.
    Kennst Du dich damit aus ?

    Der zweite Punkt ist der unsichtbare Aufruf der Webseite.
    Auch das habe ich noch nicht gesehen...

    Gruß
    Wolke

  • Dieses Ac'tive aid gibt für das markierte Wort einen Tooltip aus. Bei mehreren Vorschlägen kommen dann die ersten 4-5 Treffer aus den Kategorien von LEO

    unmittelbare Treffer
    adjektiv
    Redewendungen
    Beispiele


    Man müßte halt die Tabelle richtig auslesen.

    Gruß
    Wolke

  • In dem Autohotkey script war ein etwas kürzerer Link..
    []ShellExecute("http://dict.leo.org/?search=" & InputBox("", "") & "&relink=on")[/]

    Wie machst Du das unsichtbar ?

    Gibts da Inetfunktionen um das auszulesen ?

    Gruß
    Wolke

  • also, sucht man nach "großartig" und kopiert einfachdie ganz Seite kommt folgedes raus:

    Spoiler anzeigen

    Werbung
    LEO | Wörterbücher: | Forum
    Suchrichtung: <>
    English Hinweise
    ENGLISCH DEUTSCH
    Unmittelbare Treffer
    m aureate adj. großartig p
    m awesome adj. [Amer.] [sl.] großartig p
    m bodacious adj. großartig p
    m brilliant adj. großartig p
    m capital adj. großartig p
    m consummate adj. großartig p
    m consummately adv. großartig p
    m excellent großartig p
    m grand adj. großartig p
    m grandiose adj. großartig p
    m great adj. [coll.] großartig p
    m great adv. [coll.] großartig p
    m greatly adv. großartig p
    m hot adj. [coll.] großartig p
    m lovely adj. adv. großartig p
    m lush adj. [Brit.] [sl.] großartig p
    m magnificent adj. großartig p
    m marvellousespBE adv. großartig p
    m marvellouslyespBE adv. großartig p
    m marvelousespAE adv. großartig p
    m marvelouslyespAE adv. großartig p
    m splendid [coll.] adj. großartig p
    m splendidly adv. großartig p
    m superb adj. großartig p
    m superbly adv. großartig p
    m swell adj. großartig p
    the cat's paAE großartig p
    the cat's pyjamasBE großartig p
    cracking good [coll.] großartig p
    Verben und Verbzusammensetzungen
    to have the time of one's life sich großartig amüsieren p
    to have a whale of a time sich großartig amüsieren p
    Wendungen und Ausdrücke
    really great wirklich großartig
    Link zu Merriam Webster's (Engl. Definition und Aussprache)
    Link zu PROSER/ATIP (Dt. Aussprache)
    Forumsdiskussion
    Textlink-Werbung
    - Windows Mobile Geräte mit o2 Handyvertrag (XDA und PDA)
    Zu den Handy Angeboten, PDA Zubehör
    - Navigation von Blaupunkt
    - Plasma Fernseher von Quelle.de
    Copyright © LEO GmbH 1995-2006


    Jetzt muß man wohl das ganze noch mit einem ordendlichen Filter bearbeiten.

    Ich frage mich aber immer noch wie man das unsichtbar machen kann.


    Peethebee, hast Du mal eine Vorschlag?

    Gruß
    Wolke

    • Offizieller Beitrag

    Hallo wolkenloser!

    _InetGetSource macht es im Hintergrund. Dann hast du HTML-Quelltext, den du zunächst mit _StringBetween und dann mit StringSplit oder evtl. StringRegExp weiterbearbeiten kannst.
    Ich bin jetzt leider den ganzen Abend weg, mal sehen, vielleicht kann ich morgen was basteln.

    peethebee

    • Offizieller Beitrag

    Hi, vielleicht hilft dir das etwas. In dem Bsp. habe ich Adressdaten von der Web-Site selektiert.
    Leider sehr schlechter html-Code. Mal wird ein Adressblock zwischen <L> und </L> eingefasst, beim nächsten endet er mit <P>.
    Grundsätzlich ist das Filtern recht simpel.
    Wenn du es absolut wasserdicht machen willst, solltest du ein Array mit allen html-Sonderzeichen erstellen und auf jede Zeile anwenden (Ersetzen).
    Die Steuerbefehle kriegst du einfach mit _StringBetween($str, "<", ">") selektiert.
    Schau mal in mein Bsp. .

    Spoiler anzeigen
    [autoit]

    #include <ie.au3>
    #include <file.au3>
    #include <array.au3>
    #include <string.au3>
    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Dim $quelle = "http://www.charite.de/dgsm/dgsm/ger/labors.htm"
    Dim $ziel = "\DGSM_Lab_raw.txt"
    Dim $fh, $line, $n = 1, $str
    Dim $arBlock[1], $arAdressen, $block = 0, $barwidth
    Dim $ae = "&auml;", $oe = "&ouml;", $ue = "&uuml;", $sz = "&szlig;", $ee = "&eacute;"
    $arBlock[0] = 0

    [/autoit] [autoit][/autoit] [autoit]

    $Busy = GUICreate("",160,110,-1,-1,$WS_POPUP)
    GUISetBkColor(0x708090)
    $label_busy = GUICtrlCreateLabel("Einen Moment bitte." & @LF & @LF & "Die notwendigen Daten" _
    & @LF & "werden ermittelt..", 20, 15, 120, 100, $SS_CENTER)
    GUICtrlSetFont(-1, 10, Default,2)
    GUICtrlSetColor(-1, 0xF0E68C)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    InetGet($quelle, $ziel)
    $fh = FileOpen($ziel, 0)
    While 1
    $line = FileReadLine($fh, $n)
    If @error = -1 Then ExitLoop
    $str = StringStripWS($line, 1) ; führende Leerzeichen entfernen
    If $block = 0 Then
    If StringUpper(StringLeft($str, 4)) = "<LI>"Then
    $block = 1
    _Ersetzen()
    _ArrayAdd($arBlock, $str)
    $arBlock[0] += 1
    EndIf
    Else
    If $str <> "" Then
    If StringUpper(StringRight($str, 5)) = "</LI>" Or StringUpper(StringRight($str, 3)) = "<P>" Then
    $block = 0
    _Ersetzen()
    $arBlock[UBound($arBlock)-1] &= "|" & $str
    Else
    _Ersetzen()
    $arBlock[UBound($arBlock)-1] &= "|" & $str
    EndIf
    EndIf
    EndIf
    $n += 1
    WEnd
    FileClose($fh)
    GUISetState(@SW_HIDE, $Busy)
    _ArrayDisplay($arBlock, "Adressen")
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func _Ersetzen()
    $str = StringReplace($str, $ae, "ä")
    $str = StringReplace($str, $oe, "ö")
    $str = StringReplace($str, $ue, "ü")
    $str = StringReplace($str, $sz, "ß")
    $str = StringReplace($str, $ee, "é")
    $tmp = _StringBetween($str, "<", ">")
    If Not @error Then
    For $i = 0 To UBound($tmp)-1
    $str = StringReplace($str, "<" & $tmp[$i] & ">", "")
    Next
    EndIf
    EndFunc

    [/autoit]
  • Ich habe mal ein bischen mit dem Script gespielt, aber irgendwie komme ich nicht zum Ziel.

    Ich habe noch ws anderes gecheckt.
    Wenn ich die LEO Seite aufrufe und einfach die ganze Seite mit STRG +A makiere und kopiere und dies dann wieder in einem Editorfenster einkopiere habe ich zumindest den gewünschten reinen ASCII Text (incl. Umlaute).

    Wie kann ich das "unsichtbar" machen ?

    :help:

    Gruß
    Wolke