Framework / Localization / Localization Dictionaries
In This Topic
    Localization Dictionaries
    In This Topic

    All localization requests of Nevron Open Vision based applications are handled by the single instance of the NLocalizationDictionary singleton class available through its Instance static read only field.

     Localization Dictionaries

    The localization dictionary is a data structure used to store and obtain translations of strings. A localization dictionary contains a map of keys and their translations. The NLocalizationDictionary class provides the following properties:

    • CultureName - gets/sets the name of the culture this dictionary provides translation for in the format "languagecode2-country/regioncode2", for example "en-US", "de-DE", "ru-RU", "bg-BG" and so on.
    • FlagIcon - gets/sets the flag icon associated with this localization dictionary.
    • FontSize - gets/sets the font size in points (pt) that should be applied to the UI of the application that uses this dictionary. This font size is applied automatically to the UI theme of the NOV widgets when the localization dictionary is passed to the NApplication.LocalizeFromStream method.

    NOV provides a single instance of the NLocalizationDictaionary class accessible through the static readonly Instance field. To set the translation of a given key, you can use the SetTranslation method of the dictionary. For example, the code below sets a German translation to the text "Cancel".

    Set a term translation
    Copy Code
    NLocalizationDictionary.Instance.SetTranslation("Cancel", "Abbrechen");
    

    To get the translation of a given key you can use the NLoc.Get shortcut method like this:

    Get a term translation
    Copy Code
    string localizedString = NLoc.Get("Cancel");
    

    The NLoc.Get method returns the translation of the given key or the key itself if a translation for it is not found in the dictionary.

    Alternatively to get the translation of a given key, you can use the TryGetTranslation method of the localization dictionary. This method returns true if a translation of the given key is found in the dictionary and false otherwise. The translation itself is returned as an out parameter.

    If you are writing an application that should be localized to different languages, you should encapsulate all string literals subject to localization in NLoc.Get() calls as shown in the example above.
     Loading, Editing and Saving Dictionaries

    Nevron localization dictionaries can be loaded from and saved to TMX (translation memory exchange format). To load and save dictionaries, use the LoadFromStream and SaveToStream methods of the localization dictionary.

    The following code shows how to load a Nevron Localization dictionary from file:

    Load Localization Dictionary
    Copy Code
    using (Stream stream = File.OpenRead(@"C:\MyApp\Languages\NovDictionary_de-DE.tmx"))
    {
        NLocalizationDictionary.Instance.LoadFromStream(stream);
    }
    

    Note that NLocalizationDictionary.Instance.LoadFromStream just loads the localization dictionary strings and doesn't honor its font settings. If want to apply the dictionary font settings, too, pass the localization dictionary stream to NApplication.LocalizeFromStream. For more information open the Localizing Applications topic.

    Similarly you can save a dictionary to a file:

    Save Localization Dictionary
    Copy Code
    using (Stream stream = File.Create(@"C:\MyApp\Languages\NovDictionary_de-DE.tmx"))
    {
        NLocalizationDictionary.Instance.SaveToStream(stream);
    }
    

    Nevron provides a dictionary editor application, which can be used to import all localizable strings from one or more C# solutions, projects or source code files, edit the translations and save the result to a TMX file ready to be loaded in your application. The Nevron Dictionary Editor can be downloaded from Nevron's website.

    NOV Localization Dictionaries are available by request. We already have partial translations of NOV to several languages. If you need to localize NOV strings too, send us an email to support@nevron.com with information about the language you want to localize your application to and we will send you the dictionary for that language or the English dictionary if we do not have a translation into the language you want, yet.
    See Also