/* Übersetzung FinalWriter ARexx Macro zum automatischen Übersetzen mit FLM $VER: 0.9ß (22.10.1995) by olbiSOFT Dieser Script übersetzt ab der aktuellen Cursor-Position bis zum Text-Ende. Der Text wird dabei mit der übersetzung überschrieben. Changed by Denis Unger (16.07.1996) */ /* Nun kommen persönliche Einstellungen ...*/ /************************************************************************/ FLM = 'FLM:FLM' /* Programm FLM */ FWfont = 'SoftSans_BoldItalic' /* Font für nichtgefunden Wörter */ /************************************************************************/ Zeilenumbruch = '0A'X Options Results gestartet = 0 if ~show('PORTS','FLM') then do /* FLM schon gestartet ? */ address command 'run >NIL: ' || FLM /* starte FLM */ address command "SYS:Rexxc/WaitForPort FLM" gestartet = 1 /* FLM wird nach Übersetzung beendet */ end /* Im Moment feste Sprache Englisch und Deutsch*/ ShowMessage 1 0 '"Übersetzungsrichtung ?" "" "" " Deutsch->Englisch " "Englisch->Deutsch" ""' /* in welche Richtung soll übersetzt werden */ Richtung = RESULT if Richtung = '2' then do address FLM SETLANGUAGE englisch end else do address FLM SETLANGUAGE deutsch end ShowMessage 1 0 '"Soll der Text nun von Cursor-Position" "bis zum Dokument-Ende übersetzt werde ?" "" "Ja" "Nein" ""' if RESULT = 2 then exit do forever markiere() /* markiere zwei Worte */ WortOrg = getASCII() /* hole Worte */ if WortOrg = "" then do ShowMessage 1 0 '"Textübersetzung beendet." "" "" "OK" "" ""' leave /* Übersetzung beenden */ end if pos(Zeilenumbruch,WortOrg) ~= 0 then do /* wenn im Text noch ein Zeilenumbruch dann ein Wort weniger anwählen */ demarkiere() WortOrg = getASCII() /* hole den Rest */ end Uebersetzung = uebersetze(WortOrg) /* versuche eine Übersetzung */ if Uebersetzung ~= '' then do /* wenn das Übersetzen erfogreich war */ Type Uebersetzung /* schreibe Übersetzung */ end else do /* falls keine Übersetzung möglich */ if pos(' ',WortOrg) ~= 0 then do /* wenn noch zwei Worte angewählt sind */ demarkiere() /* dann ein Wort weniger anwählen */ WortOrg = getASCII() /* und den Rest holen */ Uebersetzung = uebersetze(WortOrg) /* versuche eine Übersetzung */ end if Uebersetzung ~= '' then do Type Uebersetzung /* schreibe Übersetzung wenn gelungen */ end else do Font FWfont /* Font ändern*/ end end CtrlDown if length(WortOrg) > 0 then Cursor 'Left' Cursor 'Right' /* springe bis zum nächsten Wort */ CtrlUp end if gestartet = 1 then do /* wurde FLM durch das Script gestartet, so wird es nun auch wieder beendet */ address FLM QUIT end exit /* --------------------- Funktionen --------------------- */ /* markiere bis zum übernächsten Wort */ markiere: CtrlDown ShiftDown Cursor 'Right' Cursor 'Right' CtrlUP ShiftUp return '' /* deselektiere das letzte Wort */ demarkiere: CtrlDown ShiftDown Cursor 'Left' CtrlUp ShiftUp return '' /* entfernt alle nicht ASCII Zeichen am ende der Zeichenkette deselektiert diese und liefert den Rest zurück */ getASCII: PROCEDURE ShiftDown Extract Zeichen = RESULT do while length(Zeichen) > 0 ASCII_rechts = C2D(right(Zeichen,1)) if (((ASCII_rechts >= 65) & (ASCII_rechts <= 90)) | ((ASCII_rechts >= 97) & (ASCII_rechts <= 122))) then leave /* solange noch Zeichen da exrahiere von Hinten alles was kein Buchstabe ist */ Cursor 'Left' Zeichen = left(Zeichen,length(Zeichen)-1) end ShiftUp return Zeichen /* versucht das übergebene Wort zu übersetzen und liefert das Ergebnis zurück */ uebersetze: PROCEDURE ARG WortOrg address FLM LOOKWORD WortOrg /* übersetze das Wort */ address FLM FOUND /* teste ob Übersetzung erfolgreich */ gefunden = RESULT if gefunden = '0' then do /* wenn erfolgreich dann */ address FLM TAKEWORD /* hole Übersetzung */ return RESULT end else return '' /* liefere nix wenn keine Übersetzung möglich */