The goal of the Internationalization (I18n) Project is to complete work on I18n in Mifos in order for Mifos to be ready for localization into languages other than English. This page details the architecture of the new i18n feature in Mifos v1.1.
We will be supporting localization through java-standard resource bundles. All localizable text will be externalized to property files. We will have default property files in English, and will follow java default naming conventions for the localized property file names. This will help developers and translators because they can take advantage of existing tools that will help localizers efficiently translate strings.
Non-dynamic text currently stored in a database will be moved to property files. Labels that can be edited in an admin screen will be moved to property files, and administrative end-users will continue to have the ability to override the default labels. The initial labels will be translated via property files similar to non-dynamic text.
To come up with a design, a pilot project was undertaken. The following has details on the Pilot Project
Currently the 1.1 release of Mifos is planning to support the translation of Mifos into multiple languages, but not full localization. Specifically, number and date formats are fixed.
To provide a new translation of Mifos, all properties files in the directory: src/org/mifos/config/localizedResources need to be translated by a localizer. In addition there are some database changes that need to be made in order to include entries for a new language and/or country.
Handling custom lookup values
Look-up values will be treated as custom configuration data. Currently there are two ant build targets for creating and populating a new database:
- build_db - this creates a database and populates it with sample custom data (from the custom_data.sql script)
- build_production_db - this creates a clean database with no custom lookup value data (pending resolution of issues 1621 and 1622)
A future option to consider for this would be a one-time loading of a property file with specific initial values for those fields, and MFI's would need to configure these at MIFOs install time. We would give some defaults to make simpler.
Remaining i18n tasks
We will continue to use the existing jsp tag library in v1.1, which is non-standard and will likely be replaced in a future release after v1.1.