[API] Silbentrennung und minimale Wortlaenge

Hi,

in einem Makro möchte ich Wörter trennen. Der angehängte Kode
funktioniert auch, allerdings wird die Einstellung

  Optionen
    Spracheinstellungen
      Linuistik
        Optionen
          Minimale Wortlänge für Silbentrennung

nicht berücksichtigt. Egal welcher Wert eingestellt ist, das
vierbuchstabige Wort 'eine' wird getrennt. Die Einstellungen 'Zeichen
vor dem Zeilenumbruch' und 'Zeichen nach dem Zeilenumbruch' werden
dagegen befolgt. Wird ein Wert auf 3 gesetzt, wird das Wort 'eine'
nicht mehr getrennt. Auch in Dokumenten wird die Einstellung zur
Mindestlänge beachtet.

In der API-Dokumentation zum Interface XHyphenator steht zum Argument
aProperties

Parameter aProperties
provides property values to be used for this function call only. It
is usually empty in order to use the default values supplied with
the property set.

Habe ich irgend etwas übersehen? Was muss ich beachten, damit die
vorgegebene Mindestlänge von Wörtern bei der Silbentrennung
berücksichtigt wird?

Viele Grüße
Stephan Hennig

Option Explicit
Sub Main
  Dim oHyphen As Object
  Dim oLocale As New com.sun.star.lang.Locale
  Dim emptyArgs() As New com.sun.star.beans.PropertyValue
  Dim vReturn
  Dim sWord, sHyphWord As String
  Dim msg As String
  
  oHyphen = createUnoService("com.sun.star.linguistic2.Hyphenator")
  oLocale.Language = "de"
  oLocale.Country = "DE"
  sWord = "eine"
  
  vReturn = oHyphen.createPossibleHyphens(sWord, oLocale, emptyArgs())
  If IsNull(vReturn) Then
    sHyphWord = "Null"
  Else
    sHyphWord = vReturn.getPossibleHyphens()
  End If

  msg = "Hyphenating " & sWord & CHR$(10) & _
    "Result: " & sHyphWord & CHR$(10)
  MsgBox msg, 0, "Hyphenate Words"
End Sub

Hallo Stephan,

Hi,

in einem Makro möchte ich Wörter trennen. Der angehängte Kode
funktioniert auch, allerdings wird die Einstellung

   Optionen
     Spracheinstellungen
       Linuistik
         Optionen
           Minimale Wortlänge für Silbentrennung

nicht berücksichtigt. Egal welcher Wert eingestellt ist, das
vierbuchstabige Wort 'eine' wird getrennt. Die Einstellungen 'Zeichen
vor dem Zeilenumbruch' und 'Zeichen nach dem Zeilenumbruch' werden
dagegen befolgt. Wird ein Wert auf 3 gesetzt, wird das Wort 'eine'
nicht mehr getrennt. Auch in Dokumenten wird die Einstellung zur
Mindestlänge beachtet.

In der API-Dokumentation zum Interface XHyphenator steht zum Argument
aProperties

Parameter aProperties
provides property values to be used for this function call only. It
is usually empty in order to use the default values supplied with
the property set.

Habe ich irgend etwas übersehen? Was muss ich beachten, damit die
vorgegebene Mindestlänge von Wörtern bei der Silbentrennung
berücksichtigt wird?

Ich denke, es ist ein Fall für Bugzilla und Du hast nichts übersehen. Auch wenn die property "HyphMinWordLength" gesetzt wird, funktioniert es nicht.

http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Using_Hyphenator

Gruß Peter

schrieb Peter Eberlein:

Habe ich irgend etwas übersehen? Was muss ich beachten, damit die
vorgegebene Mindestlänge von Wörtern bei der Silbentrennung
berücksichtigt wird?

Ich denke, es ist ein Fall für Bugzilla und Du hast nichts
übersehen.

Vielen Dank!

<URL:https://bugs.freedesktop.org/show_bug.cgi?id=41083>

Auch wenn die property "HyphMinWordLength" gesetzt wird, funktioniert
es nicht.

Kannst du dafür mal ein Beispiel geben? Wenn ich dies einfüge

  Dim emptyArgs(0) As New com.sun.star.beans.PropertyValue
  emptyArgs(0).Name = "HyphMinLeading"
  emptyArgs(0).Value = 3

erhalte ich als Ergebnis der Trennung Null. Im Netz finde ich leider
keine guten Beispiele zu Properties in Basic.

Viele Grüße
Stephan Hennig

Das sollte doch korrekt sein. Ei=ne kann nicht nach 3 Zeichen getrennt werden, deshalb null.
Die Property HyphMinWordLength sollte wie in Deinem obigen Beispiel funktionieren, tut sie aber nicht.

Gruß Peter

schrieb Peter Eberlein:

   Dim emptyArgs(0) As New com.sun.star.beans.PropertyValue
   emptyArgs(0).Name = "HyphMinLeading"
   emptyArgs(0).Value = 3

erhalte ich als Ergebnis der Trennung Null.

Das sollte doch korrekt sein. Ei=ne kann nicht nach 3 Zeichen getrennt
werden, deshalb null.

Ich denke, dass das Ergebnis 'eine' sein sollte, ohne Trennstelle.
Genau das Ergebnis erhalte ich jedenfalls, wenn HyphMinLeading über den
Optionsdialog auf 3 gesetzt wird und die Properties leer bleiben.

Ich glaube, ich habe das Null-Problem gefunden. Es tritt auf, solange
noch kein Dokument geöffnet wurde, welches mindestens ein Zeichen
enthält (oder mindestens ein Zeichen in ein leeres Dokument eingetippt
wurde; Speichern ist nicht notwendig). Nachdem LibO mindestens ein
Zeichen in einem Dokument zur Kenntnis genommen hat, erhalte ich mit
obigem Beispiel wieder 'ei=ne'. Das bedeutet:

* Hyphenator beachtet die GUI-Einstellung HyphMinWordLength nicht.

* Hyphenator beachtet Properties grundsätzlich nicht (siehe unten).

* Ohne oder in leeren Dokumenten liefert Hyphenator stets Null zurück.

Letztere Beobachtung sieht mir auch nach einem Fehler aus. Oder ist
dies aus irgend einem Grunde zu erwarten?

Die Property HyphMinWordLength sollte wie in Deinem obigen Beispiel
funktionieren, tut sie aber nicht.

OK, danke! HyphMinLeading und HyphMinTrailing funktionieren hier als
Property übergeben auch nicht.

Viele Grüße
Stephan Hennig

schrieb Stephan Hennig:

* Hyphenator beachtet die GUI-Einstellung HyphMinWordLength nicht.

Soll in LibO 3.5 behoben sein,
<URL:https://bugs.freedesktop.org/show_bug.cgi?id=41083>.

* Hyphenator beachtet Properties grundsätzlich nicht (siehe unten).

Soll in LibO 3.5 behoben sein,
<URL:https://bugs.freedesktop.org/show_bug.cgi?id=41128>.

Viele Grüße
Stephan Hennig