Improve translatability

Many tools exist that may help make translating strings in Mifos more approachable.

Goals

  • reports on which strings have not yet been translated into which locales
  • allows for a community review process of strings that have been translated
  • exports properties files whenever we need them

Pootle Launch

We've decided to move forward with Pootle as the online translation tool.

TODOs

  • (DONE) added the "mifospootle" user on java.net as a Developer to the Mifos project (so commits of .po files can be performed by that user via Pootle). There is a UI for maintaining project roles at java.net.
  • (DONE) create locale-specific working copies for Pootle. For example (as root on birch):
    sudo -u pootle svn co \
      https://mifos.dev.java.net/svn/mifos/trunk/mifos/src/org/mifos/config/localizedResources/fr \
      /var/lib/pootle/gazelle/fr
    
  • create working copy for overriding default translations via Pootle. For example (as root on birch):
    sudo -u pootle svn co \
      https://mifos.dev.java.net/svn/mifos/trunk/mifos/src/org/mifos/config/localizedResources/en_US \
      /var/lib/pootle/gazelle/en_US
    
  • (DONE for French) convert *_LOCALE.properties to LOCALE/BUNDLENAME_LOCALE.po
  • remove *_LOCALE.properties (see issue 2302) ...may need to move locale-specific bundles used only in testing to test/ dir
  • (DONE) resolve issue 2144 once the online translation tool is "hard-launched", e.g.: in use by community members
  • secure online translation tool Web UI with SSL
  • (DONE) integrate generation of locale-specific Java .properties using create_props.sh into build
  • migrate conversion scripts to Java
  • (DONE) autogenerate pseudolocale translations - *_is_IS.properties
  • (DONE) proper DNS record for birch
  • (DONE) test roundtrip of strings from SVN -> Pootle -> SVN
  • (DONE) soft-launch within team, get feedback
  • (DONE) a community showcase (Dimdim meeting or whatever)
  • (DONE) contributor agreement (see ContributorAgreement)
  • (DONE) documentation
    • OnlineTranslationHOWTO
    • PMOnlineTranslationHOWTO
    • AdminOnlineTranslationHOWTO
  • (DONE) commit locale_sync.sh, create_props.sh, and update_defaults.sh to trunk

Background Research

Notes done during research prior to selecting Pootle for the online translation tool follows.

Findings

  • CAT tools for .po files are abundant and mature, CAT tools for Java .properties files are not
  • Translate Toolkit's prop2po only works on UTF8-encoded .properties files, but .properties files must be latin1 encoded. Early experiments of manually reencoding RolesAndPermission_fr.properties as UTF-8 using Vim (:set fileencoding=utf8) successfully produces a file that prop2po can read.
  • prop2po actually produces .pot files, not .po files. These are what Pootle needs to get started with new languages.
  • The GNU gettext utilities "msgcat" program seems to discard any non-ascii characters (like é). This was found when trying msgcat -P RolesAndPermission_fr.properties

Off-the-shelf software

Enumerate and evaluate computer-assisted translation tools here.

Pootle

Pros

  • TBD

Cons

  • no direct support for Java .properties files (must use prop2po and po2prop from Translate Toolkit)

JasperBabylon

Pros

  • works with Java .properties files

Cons

  • TBD

Transifex

Pros

  • TBD

Cons


Rosetta (hosted by launchpad)

Pros

  • TBD

Cons


Open Language Tools

Pros

  • Nice GUI interface for translating
  • cross-platform
  • FLOSS

Cons

  • cannot export to Java .properties files

Okapi Framework

Pros

  • TBD

Cons

  • TBD