Java resource bundle
A resource bundle is a Java .properties file that contains locale-specific data.[1] It is a way of internationalising a Java application by making the code locale-independent.
Content of a resource bundle
Resource bundles are essentially text files. The most common type of content in a resource bundle is a list of strings. Each string has a “key” to identify it, which is the same in all the different resource bundles. When writing the code for the application, only the key is mentioned (this is why we say that the code is locale-independent). Using the methods provided in the Java API for the ResourceBundle class,[2] we can access the string (i.e. the "value") associated with the key. Depending on which locale the application is handling, it will call the adequate resource bundle at runtime.[3]
For instance, our resource bundle for the UK English locale can contain “firstKey = Localisation” and our US English one can contain “firstKey = Localization”. We will refer only to “firstKey” in the code and, according to the current locale settings, the application will use either “Localization” or “Localisation”.
Benefits of using resource bundles
Extracting locale-sensitive objects such as strings from the code (as opposed to hard-coding them) means that the application can handle multiple locales without having to write different code for each locale. It also means that translators can deal with just the translatable text and not the programming code. Therefore, using resource bundles improves the internationalisation and the localisation process of a software product.
Translating a resource bundle
Some CAT tools like OmegaT, OmegaT+,[4] Swordfish or Sun's Open language tools can specifically handle resource bundles. In addition to these, translators can use any text editor to create new resource bundles or to modify existing ones.
JavaPM is a free cross-platform utility that that assists software developers in the localization of Java projects. JavaPM converts Java .properties files to XLIFF 1.2 format, allowing their localization using most modern translation environments. Once the XLIFF files have been translated, JavaPM inserts the translations into the Java project, creating new .properties files or updating existing ones as necessary.
References
- ^ O'Conner, B. Java Internationalization: Localization with ResourceBundles, Sun Developer Network.
- ^ Java API ResourceBundle Class
- ^ Esselink, B. A Practical Guide to Software Localisation, John Benjamins Publishing (1998).
- ^ OmegaT+