Global BI – Part 1
June 1st, 2009 by Adrian Ward
Localization, Lokalisierung, Lokalisation, Localización- The act of localizing; The state of being localized; The act or process of making a product suitable for use in a particular country or region …
As promised at the BI Forum, here are some extracts from the presentation. I had to cut the presentation down in the end to get in the hour so here are a few of the details:
OBIEE is multi-lingual, with the ability to display menus and on screen instructions in different languages.
You do get about 28 languages by default, but you sometimes need to change the add more, including local dialects.
So, What Can you Localise?
Presentation Services Structure
- Menus
- On screen messages
- Help Files
Webcat Entities
- Report Names
Report Structure
- Folders
- Columns
- Descriptions
Data
- List Of Values
- Time
General point to note:
=======================
Before I go further I will just cover the basics of message substitution.
The Presentation system works with value substitution system, where the BI Presentation service internal code will place message in a certain place, for example on the dashboard, the value for the menu item “Answers” is taken from a relevant configuration file.
Here is a working example;
On the Answers opening page you have some text telling you about how to Create a new request. In English this message is:
“Create New Request
To create a new request, select a Subject Area.”

The xml messages that contains this text are kmsgAnswersEntryCreateRequest and kmsgAnswersEntryCreateRequestDesc. These xml messages are held in a file called commonuimessages.xml.
These are the entries in the english version of the file (held in l_en):
<WebMessage name=”kmsgAnswersEntryCreateRequest”><TEXT>Create New Request</TEXT></WebMessage>
<WebMessage name=”kmsgAnswersEntryCreateRequestDesc”><TEXT>To create a new request, select a Subject Area.</TEXT></WebMessage>
commonuimessages.xml file exists in all the language folders. So in the l_fr folder you will see the entries
<WebMessage name=”kmsgAnswersEntryCreateRequest”><TEXT>Créer une nouvelle requête</TEXT></WebMessage>
<WebMessage name=”kmsgAnswersEntryCreateRequestDesc”><TEXT>Pour créer une requête, sélectionnez un domaine.</TEXT></WebMessage>
To overwrite your message you can create a Custom Message file. When you add this file to the folders then your values for messages will overwrite the standard ones. No need to adjust the standard ones, leave them in place.
1. Create a message file called Custonmessages_en.xml
Use this template:
<?xml version=”1.0″ encoding=”utf-8″?>
<WebMessageTables>
<WebMessageTable system=”Custom Messages”>
<!– The name of a message must match the name of the message you are overriding. –>
<WebMessage name=”kmsgExampleOverrideMessage”>
<!– A message can have TEXT and/or HTML versions of it. It is not necessary to have both –>
<!– TEXT will be automatically converted to HTML when necessary. –>
<TEXT>Example message</TEXT> <!– Format used in a text only output –>
<HTML><b>Example message with bold HTML tags</b></HTML> <!– Format used in an HTML output –>
</WebMessage>
</WebMessageTable>
</WebMessageTables>
2. Add the entries for kmsgAnswersEntryCreateRequest and kmsgAnswersEntryCreateRequestDesc.
e.g. <WebMessage name=”kmsgAnswersEntryCreateRequest”><TEXT>So you want to Create New Report do you?</TEXT></WebMessage>
3. Reload the xml files (from the admin screen) – No need to retsart the server

OK, so that’s the background on customising the Presentation service structure.
BI Server
We can also see report columns in your local language. You may have a folder called ‘Time’ in the presentation layer and a Column called Year. These can be translated for your users in France (Ans I think!). For this the BI Server again uses a substitution method, but this time it creates repository variables for the message name. You store a list of message/value pairs in a table and use an Initialisation bock (a row wise one) to populate lots of variables, say Time/Ans for a french entry. The trick is to use a third column in the table for LANGUAGE_ID.
Presentation Services Structure
==================================
Like I said, this is normally all in place for you, with over 28 languages available but you could add languages and even invent your own language, say, Cornish, and add it to the set.
For this you need to add a folder into the relevent places, such as $OBI_HOME\web\msgdb and $OBI_HOME\oc4j_bi\j2ee\home\applications\analytics\analytics\olh.
I’ll call my new folder l_xh.
Now you need to tell the presentation service that the language exists.
Put a reference into the language Definitions xml file (my folder I used in the presentation had this missing so I had to skip it!), the entries would look like this:
You also need to update the localecharactersetlists
I added <WebMessage name=”kmsgLocaleName_enXH”><TEXT><sawm:messageRef name=”kmsgLanguageName_en”/> – Cornwall</TEXT></WebMessage>
Note: <!– Contents of this file are Copyright (C) 2001-2003 by Siebel Software, inc. and may not be in anyway used for any other product or purpose other than those of nQuire Software, inc. So there. –> – That told us!
You now need to copy the xml files from the l_en folder in l_xh and translate all the message values!!!
You can restrict the languages that are visible by editing the instanceconfig file.
Add into the file the tags: AllowedLocales and AllowedLanguages
AllowedLocales are pairs, with a code and the relevent language set
<!– <AllowedLanguages>ar,cs,da,de,el,en,es,fi,fr,hr,hu,it,iw,ja,ko,nl,no,pl,pt,pt-br,ro,ru,sk,sv,th,tr,zh,zh-tw</AllowedLanguages> –>
<!– <AllowedLocales>ar-dz,ar-bh,ar-dj,ar-eg,ar-iq,ar-jo,ar-kw,ar-lb,ar-ly,ar-ma,ar-om,ar-qa,ar-sa,ar-so,ar-sd,ar-sy,ar-tn,ar-ae,ar-ye,cs-cz,da-dk,de-at,de-ch,de-de,de-li,de-lu,el-gr,en-au,en-ca,en-cb,en-gb,en-hk,en-ie,en-in,en-jm,en-nz,en-ph,en-us,en-za,en-zw,es-ar,es-bo,es-cl,es-co,es-cr,es-do,es-ec,es-es,es-gt,es-hn,es-mx,es-ni,es-pa,es-pe,es-pr,es-py,es-sv,es-uy,es-ve,fi-fi,fr-be,fr-ca,fr-ch,fr-fr,fr-lu,fr-mc,hr-hr,hu-hu,id-id,it-ch,it-it,iw-il,ja-jp,ko-kr,ms-my,nl-be,nl-nl,no-no,pl-pl,pt-br,pt-pt,ro-ro,ru-ru,sk-sk,sv-fi,sv-se,th-th,tr-tr,zh-cn,zh-mo,zh-sg,zh-tw</AllowedLocales> –>
Don’t forget that you also get online help. This comes in the form of HTML files which are held in the olh folder, inside subfolders for each language.
One common mistake is that the language name in the select box on th elogin page is in English, so change the values to the local version. So in the UK we say France, they will say francais.
In Part 2 I will look at the data implications of a global implementation.
Tags: Presentation Services

August 26th, 2009 at 1:45 pm
Hi Adrian,
In a global implementation, if the DateTime is stored as GMT format in transaction DB, which is then ETLed to OLAP DB, how can we show the data in User time zone correctly (which includes time filter as well)? Does OBIEE has the capability to convert the time into user timezone? One can use session variable to get the timezone of Logged in user and add that value in time fetched from OLAP DB but this approach will not work correctly with Time based prompts? Any idea??
Thanks
Deepak