Internationalization of Databases


In many scenarios, such as in multi-national corporations, the users of an application (or model) built with Jedox have different spoken languages, and the application designer is tasked with storing model contents (names of dimensions, cubes, elements) in several languages.

As of version 7.0, Jedox offers native support for internationalizing an OLAP database. The designer can define a default language for a database (such as English), and specify several additional languages the database supports (such as French or German). The database can store translated values for most of the names of database objects. In some scenarios, specific localized object names can be retrieved, but in others (namely when dealing with dimension attribute values), Jedox will implicitly return localized values in the chosen language of the current user.

1. Defining the default language of a database

The default language of a database model can be defined in the Properties page of the database in Modeler, in the “Advanced” section. All languages that are generally supported by Jedox Web can be chosen.

The default language of the database is checked, for example, when the Time Editor is used on a time dimension. In order to be able to generate attribute values in the desired language, such as for the “Name” attribute, the Time Editor has to be aware of the intended default language.

2. Defining additional languages

Besides the defined default language of a database, additional languages may be stored as well. These languages can be set in Modeler under the “Internationalization” tab (see screenshot below). Again, all supported languages of Jedox Web are available. For each language that is defined, Jedox OLAP creates storage space for translations in the database.

Adding languages to a database

3. Translating database contents

In Modeler, there is an internationalization page for databases, cubes, and dimensions. When opening it, the user can translate these properties into the languages that have been added to the database.

Dimension translation labels

For elements, translations are handled slightly differently. Elements themselves don’t have translated values; what is translated here are always values of attributes for the element. For example, consider a “Products” dimension with element names consisting of technical product codes. Product names may be stored in a dimension attribute, e.g. “Product Name”. Translations would then be made for the values of this attribute.

Besides showing the Attribute columns for the default language, the element grid in Modeler can also show attributes from one or more localizations. To do this, open the column header menu, and, in the “Columns” sub-menu, check the attributes/translations you’d like to display.

Displaying localized attribute values

4. Returning localized values

The translations of database names, cube names, and attribute names (or their descriptions) can be retrieved by creating a PALO.DATA formula for the appropriate storage.

  • To retrieve a specific translation of a database name, retrieve the value from cube #_CONFIGURATION.
    For example, in a spreadsheet cell, for the German translation:
  • To retrieve a specific translation of a dimension name, retrieve the value from cube #_#_DIMENSION_.
    For example, in a spreadsheet cell, for the French translation:
  • To retrieve a specific translation of a cube name, retrieve the value from cube #_#_CUBE_.
    For example, in a spreadsheet cell, for the Spanish translation:
  • To retrieve a translation of an attribute name, description, or another attribute, retrieve the value from the new cube #_<dimension-name>_METAATTRIBUTES.  
    For example, in a spreadsheet cell, for the Spanish translation:

You can retrieve localized values for element attributes in the same way, by making an explicit request to the dimension’s attribute cube. However, for attributes, Jedox also does implicit localization.

If you are retrieving an attribute as part of a subset in an ESELECT formula or to use in a View, Jedox will automatically try to retrieve a localized value; for this, it will check for localizations in the language defined by the current user. If there is no translated value in the user’s language, or if that language hasn’t been added to the database at all, Jedox will automatically revert to the default language to ensure that a value is returned in any case.

Consider a “Customers” dimension, where element names are customer companies. The dimension has an attribute called “City”. In the default language, English city names are stored on this attribute for each customer. If German was added as a language to the database, then German city names will be stored the German locale of the “City” attribute.

The spreadsheet formula =PALO.ESELECT(“localhost/Biker”,”Customers”,”Elite Bikes”,0,,,”City”,0) will return the value of the “City” attribute for the element “Elite Bikes”. If the current user has enabled German as a language option in a database whose default language is English, the database will try to retrieve and display the German value of “City”. However, if no German value exists, it will try to retrieve and display the “City” value in the default language (English).

Note: the function PALO.ENAME does not support implicit attribute translation.

A similar mechanism is used if a PALO.SUBSET formula specifies an alias to return. In Subset, additional handling was added for the AFILTER() formula of a subset. The user can control whether the filter expressions of an AFilter should be applied to the default language or a user’s current language. The latter can be useful, for example, if user input is passed to AFilter, such as when a dimension should be filtered by City attribute. Users would be able to enter the filter term in their native language (provided that translations for the attribute are maintained by the designer). Again, if the localized value of the given attribute is empty, the filter will fall back on the default language, and check the filtering expression against that value. If the localized value is filled, the fallback filter is not applied.

Was this post helpful?
NoYes (-1 rating, 1 votes)