Wiki Spaces


Get Help from Others

Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack


Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Primary mentor

~bmamlin Burke Mamlin

Backup mentor

Rafal Korytkowski

Assigned to

Mykola Vorobey


It is annoying for developers to make number of steps to provide default translation of single text message within OpenMRS. If developer needs to do it, he puts corresponding spring:message tag into jsp file. Then, he finds the file and appends default English translation for this message. If developer should provide translation into another language he needs to edit one more file etc. From the other hand, another person (translator) needs to complete a lot of steps to provide further qualitative translation of this message into other language (in the most common case, he needs to open default file to obtain message key, then open message properties file to put new translation into and to runs web-app to see translating message in context of web page). Obviously, this makes the translations process inconvenient, bit irritable and not efficient.Currently, with

In more details, we use Spring's message taglib for putting strings onto our web pages currently.   This gives us the ability to translate openmrs very easily.  If you want to put a string into a jsp page into openmrs you put this spring:message in your jsp:


  • Create a script to identify embedded messages in web pages and code and bring those into the appropriate message bundle(s).
  • Create a script to take the default bundles (i.e., en) and import those messages into web pages and code as the default message.

Features list for future versions (2, 3 etc):

  • Allow export of message bundles for core or another module that contain the sum of message from bundles + changes in database.
  • Add a way to clean out changes in the database that are no longer different from message bundles.

Review of project requirements

Functional and non-functional requirements set to this project are currently collected into one document and placed on separate page.

Design overview

Basically, from the structural perspective, in-page localization tool for OpenMRS can consist of two parts. First is a dynamic web widgets, which work inside client browser. The second one might be a DWR-based backend for serving AJAX requests from web widgets. Both these parts can be built on the top of [custommessages|] module 's codebase. 

There are couple of child pages with detailed descriptions of proposed design:


Project implementation plan

See this wiki page to get details of proposed timelineproject implementation plan.

See Also

Interested Parties