HyphenationRegisterDictionary Method (String, String)

Registers and loads a hyphenation dictionary for the specified language from file. Throws if dictionary cannot be read or has invalid format.

This method can also be used to register Null dictionary to prevent Callback from being called repeatedly for the same language.

Namespace:  Aspose.Words
Assembly:  Aspose.Words (in Aspose.Words.dll) Version: 20.3
Syntax
public static void RegisterDictionary(
	string language,
	string fileName
)

Parameters

language
Type: SystemString
A language name, e.g. "en-US". See .NET documentation for "culture name" and RFC 4646 for details.
fileName
Type: SystemString
A path to the dictionary file in Open Office format.

If this parameter is null or empty string then registered is Null dictionary and callback is not called anymore for this language.

To enable callback again use UnregisterDictionary(String) method.
Examples
Shows how to open and register a dictionary from a file.
public void RegisterDictionary()
{
    // Set up a callback that tracks warnings that occur during hyphenation dictionary registration
    WarningInfoCollection warningInfoCollection = new WarningInfoCollection();
    Hyphenation.WarningCallback = warningInfoCollection;

    // Register an English (US) hyphenation dictionary by stream
    Stream dictionaryStream = new FileStream(MyDir + "hyph_en_US.dic", FileMode.Open);
    Hyphenation.RegisterDictionary("en-US", dictionaryStream);

    // No warnings detected
    Assert.AreEqual(0, warningInfoCollection.Count);

    // Open a document with a German locale that might not get automatically hyphenated by Microsoft Word an english machine
    Document doc = new Document(MyDir + "Unhyphenated German text.docx");

    // To hyphenate that document upon saving, we need a hyphenation dictionary for the "de-CH" language code
    // This callback will handle the automatic request for that dictionary 
    Hyphenation.Callback = new CustomHyphenationDictionaryRegister();

    // When we save the document, it will be hyphenated according to rules defined by the dictionary known by our callback
    doc.Save(ArtifactsDir + "Hyphenation.RegisterDictionary.pdf");

    // This dictionary contains two identical patterns, which will trigger a warning
    Assert.AreEqual(1, warningInfoCollection.Count);
    Assert.AreEqual(WarningType.MinorFormattingLoss, warningInfoCollection[0].WarningType);
    Assert.AreEqual(WarningSource.Layout, warningInfoCollection[0].Source);
    Assert.AreEqual("Hyphenation dictionary contains duplicate patterns. The only first found pattern will be used. " +
                    "Content can be wrapped differently.", warningInfoCollection[0].Description);
}

/// <summary>
/// Associates ISO language codes with custom local system dictionary files for their respective languages
/// </summary>
private class CustomHyphenationDictionaryRegister : IHyphenationCallback
{
    public CustomHyphenationDictionaryRegister()
    {
        mHyphenationDictionaryFiles = new Dictionary<string, string>
        {
            { "en-US", MyDir + "hyph_en_US.dic" },
            { "de-CH", MyDir + "hyph_de_CH.dic" }
        };
    }

    public void RequestDictionary(string language)
    {
        Console.Write("Hyphenation dictionary requested: " + language);

        if (Hyphenation.IsDictionaryRegistered(language))
        {
            Console.WriteLine(", is already registered.");
            return;
        }

        if (mHyphenationDictionaryFiles.ContainsKey(language))
        {
            Hyphenation.RegisterDictionary(language, mHyphenationDictionaryFiles[language]);
            Console.WriteLine(", successfully registered.");
            return;
        }

        Console.WriteLine(", no respective dictionary file known by this Callback.");
    }

    private readonly Dictionary<string, string> mHyphenationDictionaryFiles;
}
See Also