Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
BIRT/FAQ/Internationalization
< To: BIRT/FAQ
Contents
- 1 Internationalization
- 1.1 Q: Do BIRT reports support localization (L10N) and internationalization (I18N)?
- 1.2 Q: How to create translation for my language?
- 1.3 Q: Can different bits of a report appear in different locales?
- 1.4 Q: Can the user specify the report locale when running the report?
- 1.5 Q: How can I localize strings in Javascript?
- 1.6 Q: Can I localize messages with dynamic content?
Internationalization
Q: Do BIRT reports support localization (L10N) and internationalization (I18N)?
Yes. Do the following:
- Create a standard Java properties file within your report project.
- Create properties for each resource you want to localize.
- Set the Resources property of your report. Select the white space in the layout editor. Open the Property Editor. Switch to the General tab. Enter your property file name in the Resources field.
- For each label, go the "Localization" tab in the Property Editor and choose the appropriate resource from the list for the Content key property.
When you run your report, BIRT will use the standard Java system for locating a property file that matches the user's locale. The resources for that file will appear in your labels. (If BIRT cannot find a resource file, or cannot find the requested key, then the default text for the label will appear. The default text is what you entered in BIRT's layout editor.)
BIRT Also provides language packs for many languages. The language packs are accessible from the downloads page.
Q: How to create translation for my language?
If your default property file is named "myreport.properties", copy it to file named "myreport_lang.properties" or "myreport_lang_country.properties", where lang and country are two letter ISO codes. For example for german translation use "myreport_de.properties", for US english use "myreport_en_US.properties". Then translate all texts behind equal signs (property file consists of couples key=text).
Q: Can different bits of a report appear in different locales?
Can portions of a report be in one locale while others are in another locale? This can be done by using format properties in the properties editor. You can set the locale for formatted strings, numbers and dates. You can also use script to get messages for a specific locale that is different than the locale you are using to run the report.
//label oncreate script importPackage(Packages.java.util); var lc = new Locale("de_DE"); this.text = reportContext.getMessage("text1", lc)
Q: Can the user specify the report locale when running the report?
Reports are viewed using the BIRT web application. This application takes a __locale
parameter within the URL for running a report. Simply set this parameter to the desired locale, by specifying both language and country codes, therefore: __locale=fr_CA
.
Here's an example of using such parameter:
http://localhost:8900/WebViewerExampel/frameset?_-report=MyReport.rptdesign&__locale=fr_CA
Although there has been stated that only using the language code might work (__locale=fr
), in current implementation one must specify both language and country codes.
Q: How can I localize strings in Javascript?
Use reportContext.getMessage("companyNameKey", reportContext.getLocale())
, where companyNameKey is a key from the resource bundle associated with the report. See javadoc for more information.
Q: Can I localize messages with dynamic content?
Yes, you can. But you should use javascript, as BIRT Designer does not support this feature. Imagine that you need to localize message: "There are <VALUE-OF>orders</VALUE-OF> orders." First define the key messageOrdersKey with this content: "There are {0} orders." Then edit your report item and type following:
<VALUE-OF>l10nParams = new Array(1); l10nParams[0] = orders; reportContext.getMessage("messageOrdersKey", reportContext.getLocale(), l10nParams);</VALUE-OF>
Read Sun Java documentation for message format details.