Mifos Localization

Localizing Mifos into Other Languages

We're looking for volunteers to both localize Mifos and improve our documentation. We also welcome volunteers to identify and implement software changes that would improve the localization process.

We are now using Translatewiki.net to allow volunteers to localize Mifos. For more information on our current approach, see:

Technical Background

Java properties-style resource bundles store translated messages for Mifos.

From the functional perspective - some things to keep in mind: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  • Most users will generally want their numbers displayed in international numbers (0123456789), not localized into Chinese (零一二三四五六七八九十), Eastern Arabic (٠١٢٣٤٥٦٧٨٩), Devanagari (०१२३४५६७८९), etc. This may change, and one future enhancement might be to allow an MFI to configure localization of numbers separately, but initially, this isn't a requirement.
  • The same/similiar phrases are repeated across the various modules. We've tried to keep phrasing consistent across the properties files. For example, when a desired value is not selected for a field, we don't want the application to say "Please select Loan Officer" and "Please specify Loan Officer" in another. I'm sure there will be inconsistencies found (please fix!), but when translating the various properties files, we want to try to keep phrasing consistent across the site.
  • Please review the functional specification for both language and how users can select their user-preferred language.
  • Any other functional questions-- feel free to post them to the mailing list or send them to emilytucker @ dev.java.net.

From a technical perspective, some things to keep in mind: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  • Working with Composite Messages - Mifos has some of these – look for {0} and the like in the .properties files for one mechanism by which we do it.
  • Re-using Strings in Scripted Content (another good article which covers similar subjects).
  • Related to the articles above, please refer to the thread on the mifos-developer list "Issues with Localizing Mifos"
  • Appropriate entries will need to be made into mifosmasterdata.sql.

Localization/Translation Tools and Approaches

It is useful to develop a common glossary of terms that can be shared and reused during translation. In computer aided translation (CAT) this is referred to as the Translation Memory. There are two open source CAT tools that would be worth exploring:

The goal of these tools is to help speed translation and to aid in consistency of translation. They will both work for java ".properties" files and for documentation (though some conversion may be necessary).

To make use of tools like these for translating text in the database would require some work to implement an import/export capability into a format that can be used by these tools.

One approach to streamlining the localization process would be to move most or all of the text requiring translation from the database and into .properties files so that translation can be done on a uniform file set.

There are also some simpler tools available just for editing .properties files such as:

The .properties tools won't help with translating documentation and don't support the idea of a standard translation memory.

One other point to be aware of is that it is likely that there will be some code changes (java & JSP) required to make translations show up completely correctly even after the text itself has been translated. Once the text has been translated, then it will be clearer from looking at the application web pages where further work is needed.

See Also