Excerpt |
---|
July 13, 2006 |
With our next GA release coming up, I thought it would be good to get some internationalization expertise into the hands of the community.
...
- localized_report.xml - this is the report definition in XML format
- localized_report.properties - this is the default resource bundle for the report
- localized_report.xaction - this is the action sequence for the report, that tells the server how to run the report.
The first file we care about is the localized_report.xml. We need to change some of the XML so that the report engine knows what strings to look for in our resource bundle instead of directly in the report. We do this by finding any label elements in the XML and changing them to resource-label elements. This changes how the report engine interprets the text in the label (now resource-label) nodes. It now reads that text to be a key in a resource bundle. The report engine will use that key to find the REAL value to use in the report. Let's change one label, and you can see localization in action:
- Open the localized_report.xml file in your favorite text editor.
- Search for the word label. The first one you find should look like this:
Code Block <label color="#000000" fontname="SansSerif" fontsize="12" fontstyle="bold" height="18" vertical-alignment="middle" alignment="left" width="16%" x="0%" y="0">REGION</label>
- Change the label element to resource-label, and add the attribute resource-base="". The line should now look like:
Code Block <{color:#ff0000}resource-label resource-base=""
...
...{color} width="16%" x="0%" y="0">REGION</{color:#ff0000}resource-label{color}>
- Note that the resource-base attribute will allow you to specify a resource bundle in a different location, but for our purposes, the resource bundle is in the same directory, so specifying it with an empty string is sufficent.
- ALSO NOTE that if you are using Pentaho Reports (the JFreeReport library) standalone OUTSIDE of the Pentaho platform, the resource-base CANNOT be an empty string. A small misalignment in the code that is logged to be fixed.
- Save, but do not close, the localized_report.xml.
...
- Open the localized_report.properties file.
- Add the following line in the file:
Code Block REGION=Company Regions
- Save, but do not close, the file.
...
- Make sure that your PCI demo server is running.
- In your favorite browser, navigate to the PCI demo home page - usually this is http://localhost:8080/pentaho.
- Under the Refresh options, choose the Solution Repository, and click OK to confirm you want to refresh it. This step is how we tell the platform to pick up changes to the solution files.
- Navigate to Reporting Samples, and find your new report.
- Click on the link to your new report, and notice that the column label that used to be REGION is now Company Region. The label for that column was read from your resource bundle as a result of our changes. If you only see a dash where you should see Company Regions, then go back and check your xml for typos, and make sure that the name REGION you used for the key in your .properties file EXACTLY matches the text in your new resource-label node.
Hopefully, by now, you get the jist of how this works. The final step in localizing the report to German is to create the German resource bundle.
...
That's all there is to it! I had you leave your files open, so that you can go back and change the rest of the labels to resource-labels, and move the resources to the English and German resource bundles, to complete the exercise. When completed, your report should resemble the following screenshot:
In case you run into any problems, I have included the solution files for this exercise here.