Openbravo POS is designed with localization in mind. All releases of Openbravo POS are developed in English to allow to be used for as much as possible people around the world. But there are available for download translations of Openbravo POS to several languages. To install these language packages the user only needs to copy the content of the package to the Openbravo POS folder and configure Openbravo POS to use the desired language. These language packages are contributed by community members that work in translating Openbravo POS.
Openbravo POS takes advantage of all the current localization features the Java platform includes that allows to change the localization of all the application elements to the chosen locale: reports, messages, dialogs, labels, formats for numeric values, dates and currencies.
From the translator point of view, it's very easy to create a new language package to allow Openbravo POS support a new language. The files with the translated messages are plain text files that can be edited with the translator's preferred edit tool.
This document contains some guidelines on how to localize Openbravo POS to a new language and also keeps track of the current localization projects. This document refers to Openbravo POS 2.20 and later versions.
Openbravo POS in your language
Openbravo POS supports twelve different languages. Only English is bundled in the binary package. If you want to use another language from the ones supported by Openbravo POS you will need to download and install the accurate language package.
Downloading and installing the language package
The Openbravo POS binary files comes with English and Spanish bundled in the application but if you want to use Openbravo POS in another supported language you have to download the language package from Openbravo POS download page.
To install the language package you only have to copy the files included in the same folder Openbravo POS is installed and maintaining the same folder structure.
If there not exists the language package for the Openbravo POS version you are using you can download and install the language package of a previous version an you will have Openbravo POS in your language. The only issues is that the words of new features will not be translated.
Select the language and localization for Openbravo POS
All the localization properties of Openbravo POS are available in the configuration panel under the Localization section.
The first option defines the locale of the application. This option shows all the locales available for the java platform. If (System default) is selected then the operating system configuration properties are selected.
If the language and country you want to use does not appear in the locales available but there exists a translation for that language you will have to edit manually the configuration file openbravopos.properties ('/home/<user>' in Linux or 'C:\Document and Settings\<user>' in Windows). For example to select Basque as the language for Openbravo POS write the following lines:
user.language=eu user.country=ES user.variant=
In version 2.30 all languages with translation available will have an entry in the drop down list of locales available.
The rest of the options define the pattern used to format all the values by type. If (Default) is selected then the defined pattern for the selected locale is chosen. However you can overwrite the pattern and select the format you want Openbravo POS to use.
For numeric values the pattern syntax used is documented in the DecimalFormat Java API.
For date and time values the pattern syntax used is documented in the SimpleDateFormat Java API.
For example if you want to display currency values with the $ symbol leading the amount, group every three digits and display two decimal numbers, use the pattern "$ #,##0.##".
Localizing Openbravo POS
Openbravo POS uses the localization support included in the Java platform and all the messages to translate are stored in the properties files. An introduction about how to internationalize a Java application can be found in the Java Tutorial Internationalization.
The files that need to be translated for the application are:
locales/beans_messages.properties locales/data_messages.properties locales/erp_messages.properties locales/pos_messages.properties
And the files that need to be translated for the reports and charts are:
reports/com/openbravo/com/chartsales_messages.properties reports/com/openbravo/com/closedpos_messages.properties reports/com/openbravo/com/closedproducts_messages.properties reports/com/openbravo/com/customers_messages.properties reports/com/openbravo/com/customersdiary_messages.properties reports/com/openbravo/com/inventory_messages.properties reports/com/openbravo/com/inventoryb_messages.properties reports/com/openbravo/com/inventorydiff_messages.properties reports/com/openbravo/com/people_messages.properties reports/com/openbravo/com/productlabels_messages.properties reports/com/openbravo/com/products_messages.properties reports/com/openbravo/com/productsales_messages.properties reports/com/openbravo/com/productscatalog_messages.properties reports/com/openbravo/com/taxes_messages.properties reports/com/openbravo/com/usersales_messages.properties
To create a new translation you only need to copy all these files and rename it using the naming convention that distinguishes one localization from the others. For example, the Spanish version of the pos_messages.properties file have to be renamed to pos_messages_es.properties and the Spanish version of Argentina have to be renamed to pos_messages_es_AR.properties. An explanation of how these locales are formed are in the Java Internationalization: Localization with ResourceBundles article. The available locales for Java are in the Java supported locales.
For example to localize Openbravo POS to Spanish, the language code is es and the files will be called as:
locales/beans_messages_es.properties locales/data_messages_es.properties locales/erp_messages_es.properties locales/pos_messages_es.properties
reports/com/openbravo/com/chartsales_messages_es.properties reports/com/openbravo/com/closedpos_messages_es.properties reports/com/openbravo/com/closedproducts_messages_es.properties reports/com/openbravo/com/customers_messages_es.properties reports/com/openbravo/com/customersdiary_messages_es.properties reports/com/openbravo/com/inventory_messages_es.properties reports/com/openbravo/com/inventoryb_messages_es.properties reports/com/openbravo/com/inventorydiff_messages_es.properties reports/com/openbravo/com/people_messages_es.properties reports/com/openbravo/com/productlabels_messages_es.properties reports/com/openbravo/com/products_messages_es.properties reports/com/openbravo/com/productsales_messages_es.properties reports/com/openbravo/com/productscatalog_messages_es.properties reports/com/openbravo/com/taxes_messages_es.properties reports/com/openbravo/com/usersales_messages_es.properties
Using Netbeans to localize Openbravo POS
Netbeans has a localization tool that makes it easier to localize Openbravo POS. You don't need the sources to localize Openbravo POS, you only need the *.properties files of the locales folder. With Netbeans you need to create a new Java project that contains only this folder to localize Openbravo POS. You can follow the OpenbravoPOS Developer guide to create a new Netbeans project.
To edit an Openbravo POS *.properties file, select the file in the project view, open the contextual menu and select Open. An editor will appear where you can edit the strings.
If you want to add a new language to a *.properties file, select the file, open the contextual menu and select Add Locale.... A new dialog will appear where you can select a new localization.
Current localization projects
The latest Openbravo POS version includes the following translations as part of the product:
All translations included in the product are available at Openbravo POS Subversion source code repository.
If you want to collaborate creating a new translation or helping in the development or reviewing of current translations, your help is welcome. Just drop us an email with your interests to firstname.lastname@example.org