Archiv des LibreOffice- und OpenOffice.org-Wiki

[ÜberSicht] [TitelIndex] [WortIndex] [SeiteFinden

(./) OOo3.2.1

Diese Anleitung erläutert, wie man alle der RechtschreibHilfe unbekannten Wörter aus einem TextDokument auf ein Mal in ein BenutzerWörterbuch übernehmen und so aus einer Liste von Wörtern ein Wörterbuch erzeugen kann.

1. Motivation

Die Wörterbücher der RechtschreibHilfe von OpenOffice.org (seit Version 3.0 als Extensions verfügbar), enthalten nur einen Grundwortschatz der jeweiligen Sprache. Sobald man sich mit einem Spezialthema beschäftigt, stellt man fest, dass viele Fachbegriffe nicht in diesen Wörterlisten enthalten sind. Es besteht natürlich die Möglichkeit, einzelne Begriffe in ein BenutzerWörterbuch aufzunehmen, z.B. über den Punkt Aufnehmen im KontextMenü des unbekannten Wortes (sofern die Funktion Automatisch prüfen aktiviert ist), oder unter Extras → Optionen… → Spracheinstellungen → Linguistik im Bereich Benutzerwörterbücher mit der SchaltFläche Bearbeiten. Für eine große Anzahl von Begriffen und/oder ein Textdokument mit einer ganzen Wörterliste ist dieses Vorgehen jedoch unpraktisch. Im Folgenden wird ein Makro vorgestellt, mit dessen Hilfe man auch eine große Anzahl von Wörtern auf ein Mal in ein Benutzerwörterbuch aufnehmen kann.

2. Anleitung

2.1. Vorbereiten

Zunächst benötigen Sie ein TextDokument, das diejenigen Wörter enthält, die Sie in das Wörterbuch aufnehmen wollen. Das Dokument kann außerdem auch noch andere Wörter enthalten, die sich schon im OpenOffice.org-Standardwörterbuch befinden, sodass Sie im Prinzip jede beliebige Datei verwenden können. Nur darf das Dokument keine falsch geschriebenen Wörter enthalten, da sonst diese auch in Ihr BenutzerWörterbuch mit aufgenommen würden und so nicht mehr als falsch erkannt würden.

Legen Sie unter Extras → Optionen… → Spracheinstellungen → Linguistik im Bereich Benutzerwörterbücher mit der SchaltFläche Neu ein weiteres Benutzerwörterbuch an. Geben Sie diesem einen sinnvollen Namen (z.B. psychologie) und wählen Sie aus der DropDown-Liste die passende Sprache aus (in der Regel Deutsch (Deutschland)).

2.2. Makro

Sie benötigen nun das folgende Makro:

REM Author(s) Winfried Rohr, re‑Solutions Software Test Engineering
REM License   GNU General Public License v. 2 or later
' http://www.oooforum.org/forum/viewtopic.phtml?t=67507

' Erstellung der Liste: Tommy Sun Dec 30, 2007 11:05 am
' http://user.services.openoffice.org/en/forum/viewtopic.php?f=20&t=1222
' ergänzt um die automatische Aufnahme: probe1 Wed Jan 23, 2008 12:22 pm
' http://www.oooforum.org/forum/viewtopic.phtml?t=67507
' hier: deutsche Texte für Meldungen

Dim oDocModel as Variant
Dim oTextCursor as Variant
Dim oLinguSvcMgr as Variant
Dim oSpellChk as Variant
Dim oListDocFrame as Variant
Dim oListDocModel as Variant
Dim sListaPalabras as String
Dim aProp() As New com.sun.star.beans.PropertyValue

' __________________________________________________________________
' 2008-02-10
' Neuformatierung
'
Sub add2dicAuto
' ===============================================
' !!!
' Name des Wörterbuchs
' !!!
sWordBook = "Masse.dic"
' ===============================================

sMakroName = "add2dicAuto"
sMakroVersion = "1.1.0"
sMakroTitel = _
 sMakroName & "-" & sMakroVersion

oDocModel = _
 StarDesktop.CurrentFrame.Controller.getModel()

If IsNull(oDocModel) Then
  ' Kein aktives Dokument
  MsgBox _
  "Kein aktives Dokument gefunden; beende Makro" ,_
  ,_
  sMakroTitel
  ' MsgBox("There's no active document")
  Exit Sub
End If

If Not HasUnoInterfaces ( _
 oDocModel, _
 "com.sun.star.text.XTextDocument") Then

 MsgBox _
 "Kein Textdokument; beende Makro" ,_
 ,_
 sMakroTitel
 ' MsgBox("This document doesn't support the 'XTextDocument' interface." + Chr(13))
 Exit Sub
End If

' service
oWBListe = _
 createUnoService ("com.sun.star.linguistic2.DictionaryList")

' Wörterbuch (WB)
' Name des Standards: standard.dic
oWB = _
 oWBListe.getDictionaryByName( sWordBook )

If IsNull( oWB ) Then
  ' Wörterbuch nicht gefunden
  MsgBox _
  "Wörterbuch " & sWordBook & " nicht gefunden; beende Makro" ,_
  ,_
  sMakroTitel
  ' MsgBox("There's no active document")
  Exit Sub
End If



oTextCursor = oDocModel.Text.createTextCursor()
oTextCursor.gotoStart(False)

oLinguSvcMgr = _
 createUnoService( _
 "com.sun.star.linguistic2.LinguServiceManager" _
 )

If Not IsNull(oLinguSvcMgr) Then
 oSpellChk = oLinguSvcMgr.getSpellChecker()
End If

If IsNull (oSpellChk) Then
 msgbox _
 "Zugriff auf Rechtschreibprüfung fehlgeschlagen; beende Makro",_
 ,_
 sMakroTitel
 ' MsgBox("It's not possible to access to the spellcheck." + Chr(13))
 Exit Sub
End If


' Schleife
Do
 ' Wort markieren
 If oTextCursor.isStartOfWord() Then
        oTextCursor.gotoEndOfWord(True)
    ' Verificar si la palabra está bien escrita
    ' wenn Sprache zugeordnet
    If Not isEmpty _
    (oTextCursor.getPropertyValue("CharLocale")) Then
     '
     If Not _
      oSpellChk.isValid(oTextCursor.getString(), _
      oTextCursor.getPropertyValue("CharLocale").Language, _
      aProp()) Then
      ' Wort zum Wörterbuch
      oWB.add( oTextCursor.getString() , FALSE, "" )
      ' Wort zur Wortliste
      sListaPalabras = _
      sListaPalabras + oTextCursor.getString() + Chr(13)
     End If
    End If

    '
        oTextCursor.collapseToEnd()
 End If

Loop While oTextCursor.gotoNextWord(False)

  If Len(sListaPalabras) = 0 Then
  msgbox "Keine Rechtschreibfehler gefunden; fertig!"
'    MsgBox("There are no errors in the document.")
    Exit Sub
  End If

  ' Fenster
  oListDocFrame = _
  StarDesktop.findFrame( _
  "fListarPalabrasIncorrectas", _
  com.sun.star.frame.FrameSearchFlag.ALL _
  )
  If IsNull(oListDocFrame) Then
    oListDocModel = _
    StarDesktop.loadComponentFromURL("private:factory/swriter", _
     "fListarPalabrasIncorrectas", _
     com.sun.star.frame.FrameSearchFlag.CREATE, _
     aProp() _
     )
     '
     oListDocModel.DocumentInfo.Keywords = _
     "Kontrollliste " & sMakroName &  " " & Now()
    oListDocFrame = oListDocModel.CurrentController.getFrame()
  Else
    oListDocModel = oListDocFrame.Controller.getModel()
  End If

  oTextCursor = oListDocModel.Text.createTextCursor()
  oTextCursor.gotoEnd(False)

  oListDocModel.Text.insertString( _
  oTextCursor, _
  sListaPalabras, _
  False _
  )

  oListDocFrame.activate()

End Sub

Besondere Lizenzbedingungen für Programmcode

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

2.2.1. Makro bearbeiten

Kopieren Sie den obenstehenden Quelltext im Dialog Extras → Makros → Makros verwalten → OpenOffice.org Basic… in das Modul Meine Makros oder – falls Sie sich die Datei von der o.g. Seite heruntergeladen haben – verschieben Sie unter Extras → Makros → Makros verwalten → OpenOffice.org Basic… das Makro add2dicAuto aus der Datei writer_add2dicAuto.odt in das Modul Meine Makros (für Details siehe MakrosInstallieren).

Sie müssen nun in der Zeile 27 des Makros:

sWordBook = "Masse.dic"

„Masse.dic“ durch den Namen des Wörterbuchs ersetzen, das Sie im ersten Schritt angelegt hatten. In diesem Beispiel muss die Zeile also lauten:

sWordBook = "psychologie.dic"

Wenn Sie das Makro nicht per CopyAndPaste von dieser Seite übernommen haben, wählen Sie unter Extras → Makros → Makros verwalten → OpenOffice.org Basic… zunächst das Makro aus und klicken dann auf die SchaltFläche Bearbeiten…, um das Makro zu bearbeiten.

2.3. Wörterbuch füllen

Öffnen Sie nun die Datei, die die Wörter enthält, aus denen Sie ein neues Wörterbuch erzeugen wollen. Wählen Sie aus dem Menü Extras → Makros → Makro ausführen… und dann das (angepasste) Makro aus dem vorigen Schritt; führen Sie das Makro mit einem Klick auf die SchaltFläche Ausführen aus.1 Es werden nun alle unbekannten Wörter (d.h. alle Wörter, die in keinem der momentan verwendeten Wörterbücher vorkommen) in das neue Wörterbuch aufgenommen. Das Makro arbeitet bedeutend schneller wenn sie unter Extras → Optionen… → Spracheinstellungen → Linguistik das Häckchen beim zu füllenden Wörterbuch (in unserem Beispiel psychologie.dic) deaktivieren.

3. Anmerkungen

Die maximale Anzahl der Einträge je BenutzerWörterbuch ist bei OpenOffice.org ab Version 3.0.1 auf 30000 Wörter begrenzt. In den Versionen bis 3.0.0 (einschl.) war die maximale Anzahl der Einträge auf 2000 Wörter je Benutzerwörterbuch begrenzt (Issue 48676).

Sehr große Benutzerwörterbücher (> 5000 Einträge) können aber die Performance der RechtschreibHilfe beeinträchtigen, inbesondere wenn Sie sich Alternativvorschläge zu einem als falsch markierten Wort anzeigen lassen. Erwägen Sie in solchen Fällen statt dessen ein eigenes Wörterbuch als Extension zu erstellen und zu installieren; Hinweise dazu finden Sie auf http://wiki.services.openoffice.org/wiki/Extension_Dictionaries (englisch).

4. Siehe auch


KategorieHowto KategorieWriter KategorieMakro

  1. OpenOffice.org benötigt eine JavaRuntimeEnvironment, um Makros ausführen zu können. (1)


LizenzBedingungen | AnbieterKennzeichnung | DatenschutzErklärung | Stand: 2013-04-28