Business Intelligence – Oracle

Oracle BI EE – Presentation Layer Translation

Posted by Venkatakrishnan J on October 29, 2007

Another interesting question came up in the forums today for which there is no proper documentation or rather incomplete documentation. The question was how do we Externalize Presentation Layer i.e enable translation of Presentation Layer depending on the User Logged in Language. If you had gone through my previous blog entry here, you would have noticed that this option is primarily only for sections like Dashboard Names, Report Names etc. But this does not do the translation for the Subject Areas and their associated tables/columns. In order to do this we would have to follow another procedure called Externalizing Presentation Layer. Lets look at the steps one by one here today.

1.   Open Administration Console and right click on the Presentation Subject Area that you would like to Externalize. You would see 2 options there to externalize names and descriptions. For now lets externalize Names alone. So, click on Externalize Display Names.


2.   Once this is done go to Tools->Utilties and Click on Execute to Externalize Strings.


After this, you would see a screen that would look like this. What this basically shows you is the Names of the presentation catalogs. Save this as a csv file.


3.   Open up this Excel file and lets understand the structure of the csv. The first column represents Actual Names prefixed by their types of the Presentation Layer. The second column represents a list of Session variables prefixed by CN_. Remember that by default CN_ would be prefixed. The 3rd column represents the actual translation. Lets modify this csv and lets add one more column called language. This language would have values of Languages supported by OBI EE(abbreviations).


As you see above we have done translation of individual presentation layer table names and columns to languages. English and french.

4.   The next step is to load this CSV file into a database table.


In our case, the name of the database table is external which contains the data of the CSV.

5.   Now lets import this table into the Physical layer..


6.   The first step after importing this table is to create an initialization block to initialize the LOCALE variable based on the language selected by the user in Dashboard login. To do this create a session initialization block having the data source from a database. The database sql would have a sql like this


Also assign the target to the system session variable LOCALE. What this basically does is, whenever a user logs into dashboards the WEBLANGUAGE session variable is set. Then this variable sets the LOCALE variable using the initialization block.


7.   The next step is to create another session initialization block which would basically create a set of session variables using a database specific sql. The sql would look like this


As you see above, this block will create all the variables whose Language match the user’s login language. Set the target of the init block to Row Wise initialization and then select the previously created init block in the execution precedence. i.e we want the 1st block created earlier to execute first.




8.   Then login to Dashboards using French as the language.




As you see above all the translations corresponding to the french language on presentation layer has happened based on the user login. The documentation for this is not extensive though it is a bit straightforward once you know how to do it.

24 Responses to “Oracle BI EE – Presentation Layer Translation”

  1. Caroline said

    I see that you can translate the metatdata to be used in Answers for new reports and Dashboards, however, I still have one more level of metadata that I need to translate: the report(request) content for canned reports distributed to users. i.e., It seems that if I view the report definition in Answers, although the Subject Area/Presentation Layer content on the left is displayed in the correct language, the predefined report criteria on the right is still being displayed with the language defined in the rpd, and consequently, when the reports executed in the dashboard, the column names are not in the right language because I still have no way of translating the report XML on the fly. Do you have a solution for this?

  2. Venkatakrishnan J said


    Do you mean the content for reports defined before the translation was implemented? Or do you mean the report XML in Advanced Reports tab for the all the reports? I am not sure i exactly understood your question.

  3. Caroline said

    Well, yes, the report XML in the Advanced Tab cannot seem to be translated because when I change the column name to the french description, it tells me the column does not exist? Also, as an example, even thought I see the subject area column name translated to french, when I click on it to select/insert it on the report, it inserts it with the rpd original english name?

  4. Venkatakrishnan J said

    Yes the report XML will be in English because that is the language that is used in the Repository(no translation within repository). The report XML refers to columns in the repository and i think is independent of language. But if you see the other tabs the translation should happen seamlessly. When you create the report that should give you only the French names in the form of column names and not the English names. I just verified that. Verify that you have the proper mapping of the presentation layer columns to the logical columns of the BM layer.

  5. Antimbala said


    I have a query regarding webcat translation exporting captions:
    1) Can we do for all folders at once. i didn’t find any such option.
    2) When we export for each folder then we get chunk of XML files for each catalog.Our requirement is to convert all the catalog folders to different languages so we need to send these XMl files to the translators to do the translations. actually we need to send so many files that will be hassle for the translator and again if we missed any then it would be a problem . Can you suggest some simple way to do the same.

  6. Fabio said

    I would like if it is posible to view the presentacion column in lenguage that are not included in the OBI such as catalan.

  7. Raj said

    I can see how presentation converted to french. Can you tell me how to implement for multiple language i.e. if one client in portugal, one in france, one in USA. so how can i implement this scenario together.

  8. Rajkumar said

    I have followed the same steps as you mentioned for multi languages. Even the variables and initalization blocks also giving the values. I have manually created a table and inserted the .csv data in to that table. when am selecting the languages like nederlands–nl, china–ch am not seeing any changes in the column names. Please let me know what steps need to take to achieve this.

    Your help is highly Appreciated.

    Thanks in Advance.


  9. Anandji said

    Hi Venkat,

    Thanks for this update. I followed all the steps mentioned above. But when I logged in with French as the langauge, the presentation layer items did not change.
    I am using SQL server. Is this the reason that I am not getting the expected result? I also checked the logs to see if there were any error messages, but there were not.

    Please help!!!

  10. Kurt Wolff said

    Anandj — no, the fact that your db is sql server has nothing to do with it. my guess is that you have one or more null values in your localized strings table — perhaps in the descriptions. A single null value will keep this from working.

    • Sandeep said

      Hi kurt,

      Thanks for the answer. That solved my problem. But is that a bug in translations as it does not make sense to me.

  11. Anandji said

    Hi Kurt, I just checked, there is no null value in the table. All the columns are filled.

  12. Kostya said

    Hi Venkatakrishnan,

    I was trying to repeat your steps for the Paint (Oracle built-in example, based on XML-DataSource).

    And the problem I faced that I can’t add a new DataSource to “Session Variable Initializing Block” screen. In fact there is no Data Source type = “Database” or “XML” at all! I have only “LDAP” and “Custom Authentificator”. Can you advise me something?

    Thank you in advance.

  13. Srini said

    Paint.rpd doesn’t have database as one of its sources. So that option doesn’t show up in the drop-down. Just add a dummy database as one of the sources in the physical layer and you will find Database as an option.

  14. Kostya said

    Thanks Srini,

    That really helped!
    But what if I don’t want to store translations in relation database? What if I want use XML for these purposes? In documentation I see that OBI EE can use Data Source Type = ‘XML’. Please advise me what should I do to make Data Source Type = ‘XML’ visible in “Session Variable Initialization Block Data Source” screen?

  15. Krish said

    can we make use of the xml file that is generated using the Externalize Strings for translations…
    any ideas???


  16. Arpita Chakrawarti said

    Thanks. This blog really helped me.

  17. Ralf Götz said

    Hi, I heard your problems and question many times during the last 2 years. Oracle BI Enterprise Edition (OBI EE) is a great BI platform and offers all you need for multi language applications. However, to get there may take some time and efforts as a single error in the required XML or translation table will result in … nothing. That is the reason why we created a very useful (and affordable) tool called BI-Localizer ( BI Localizer does all the technical stuff for you and stores the translation data inside a database. You can do in-line translations (within the tool – a dialog based process) or an off-line translation (just populate the embedded translation database with your translations). Then hit the button – and BI Localizer will create all the required XML files and loads the translation into the Oracle database. Please give it a try – it is worth it. Visit



  18. […] Oracle BI EE – Presentation Layer Translation – Pozor na NULLy v tabulce s překlady – s nima to nejede. page_revision: 0, last_edited: 1241304947|%e %b %Y, %H:%M %Z (%O ago) edittags history files print site tools+ options edit sections append backlinks view source parent block rename delete help | terms of service | privacy | report a bug | flag as objectionable Hosted by — get your free wiki now! Unless stated otherwise Content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License Click here to edit contents of this page. Click here to toggle editing of individual sections of the page (if possible). Watch headings for an “edit” link when available. Append content without editing the whole page source. Check out how this page has evolved in the past. If you want to discuss contents of this page – this is the easiest way to do it. View and manage file attachments for this page. A few useful tools to manage this Site. See pages that link to and include this page. Change the name (also URL address, possibly the category) of the page. View wiki source for this page without editing. View/set parent page (used for creating breadcrumbs and structured layout). Notify administrators if there is objectionable content in this page. Something does not work as expected? Find out what you can do. General documentation and help section. Terms of Service – what you can, what you should not etc. Privacy Policy. _uff = false; _uacct = “UA-68540-5″; _udn=””; urchinTracker(); _qoptions={ qacct:”p-edL3gsnUjJzw-” }; […]

  19. […] If you are not yet deep into handling external contents from tables here some recommendable reads: Venkat did a good one, John also wroute around and last but not least there is my blog around that […]

  20. ruben said

    Thank you very much Venkat!!!

    It helped me very much ideed!!! I faced a problem at the beginning, but it was resolve deleting the descriptions as they were null.

  21. Lonely Ronaldo said

    I found that the server metadata must be reloaded. otherwise, the labels are not refreshed.

    if the current metadata is english, then a user select french on the login page and he doesn’t reload the metadata, it keeps english.

    am I correct?

  22. senszey said


    When I change something in the labels db table, I need to restart BI Server and Presentation Services to see the changes in Answers. I couldn’t do it with reload the metadata on Answers admin page. What do I do wrong?


  23. scanbix said

    In step 6 don’t forget to press TEST, because copy paste of ‘SELECT’ gives wrong quotes. When pressed TEST, no errors should be given.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: