List & Label Silbentrennung mit NHunspell unter .NET

Gilt ab List & Label 20

Um eine Silbentrennung mit List & Label zu erreichen kann man sich mit dem Open Source-Projekt NHunspell behelfen. Hierfür ist es lediglich notwendig an trennbaren Stellen eines Wortes das bedingte Trennzeichen Chr$(173) einzufügen. Dies kann über das Ereignis AutoDefineField vorgenommen werden.

Ab Version 25 kann dies in genau der gleichen Weise auch im ProcessText-Ereignis gemacht werden. Dann werden auch vom Benutzer eingegebene statische Texte erfasst und können silbengetrennt werden.

Fügen Sie Ihrem Projekt zunächst eine Abhängigkeit zum NuGet-Paket “NHunspell” hinzu (Lizenzbedingungen beachten!).

Beispielcode C#:

using NHunspell;

// hier kann z.B. ein Trennungswörterbuch von OpenOffice verwendet werden
Hyphen hyphen = new Hyphen(@"...\hyph_en_US.dic");
ListLabel LL = new ListLabel()
LL.AutoDefineField += new AutoDefineElementHandler(LL_AutoDefineField);
void LL_AutoDefineField(object sender, AutoDefineElementEventArgs element)
{
        string word = element.Value.ToString();
        if ((word != "System.Byte[]") && !string.IsNullOrEmpty(word))
        {
               HyphenResult hyphenated = hyphen.Hyphenate(word);
               // Hunspell ergänzt ein "=" an den Trennstellen, das muss noch angepasst werden
               element.Value = hyphenated.HyphenatedWord.Replace('=', (char)173);
         }
}



Beispielcode VB.NET:

Imports NHunspell
Using LL As New ListLabel()
Using hyphen As New Hyphen("...\hyph_en_US.dic")
LL.AutoDefineField += New AutoDefineElementHandler(AddressOf LL_AutoDefineField)
Private Sub LL_AutoDefineField(sender As Object, element As AutoDefineElementEventArgs)
                Dim word As String = element.Value.ToString()
                If (word <> "System.Byte[]") AndAlso Not String.IsNullOrEmpty(word) Then
                               Dim hyphenated As HyphenResult = hyphen.Hyphenate(word)
                               element.Value = hyphenated.HyphenatedWord.Replace("="C, CChar(173))
                End If
End Sub

Links:

https://hunspell.github.io/
https://www.nuget.org/packages/NHunspell/
IDKBTD000878 KBTD000878
1 Like