GSOC 2025: Interactive Builder for Form Translations within the Form Builder (Interactive Translation Builder?)

Hi mentors,

I hope you’re doing well! I’m Yash Ainapure, a newcomer to the OpenMRS community and excited about contributing to GSOC 2025. I’ve successfully cloned the repository at GitHub - openmrs/openmrs-esm-form-builder: OpenMRS Form Builder microfrontend and set up everything locally.

I’m particularly interested in the idea of building an Interactive Builder for Form Translations within the Form Builder (Interactive Translation Builder?). It seems like a challenging and impactful project, and I would love to start contributing by tackling some introductory tickets related to this feature.

Could you please guide me on where I could start? Any introductory tasks or pointers would be greatly appreciated.

Looking forward to your guidance and contributing to OpenMRS!

Best regards, Yash Ainapure.

@jayasanka @nethmi

Can i get a flow of how currently a form is made. what does publish a form means? How translation is done currently? and what system do we need in future regarding translation of this.

@jayasanka

Hi Yash,

This course will help you understand how to use the form builder: https://openmrs.org/academy/form-builder-course/

@nethmi will provide you with the other details.

2 Likes

Don’t know why but the system just banned me temporarily. anyways let it be, I completed it through the Youtube playlist and got the understandings of the software. But there the concept of translation(which is required for this issue) and all isn’t explained.

I had gone through: https://openmrs.atlassian.net/wiki/spaces/projects/pages/326238264/Interactive+Builder+for+Form+Translations+within+the+Form+Builder+Interactive+Translation+Builder

But still some things aren’t clear that how translations are supposed to work Is there a way that i could understand the workflow of how translation is done or how it should be done? Thanks

Hey @yash-ainapure, the translations of a form itself is handled by the form-engine-lib, which is the “engine” that renders a form. What this project aims to do is to provide an interface for users to make the translation strings, e.g - a user should be able to add the translations for a label of a question like “What is the patient’s age?” into another language. As to the workflow of how this form would get translated when a user changes the language, has already been done by the form-engine. Once the translation strings are saved, the form engine knows to render the form translations correctly. You can demo this if you look at the Adult HIV Return Visit form after changing the language to French. If you are interested to know how the form engine handles translations, you can look at the form-engine’s codebase - GitHub - openmrs/openmrs-esm-form-engine-lib: React Form Engine library for O3

1 Like

Subject: OpenMRS Installation Stuck at 99% During Database Update Hi nethmi,

I’m trying to set up OpenMRS on my local machine, but the installation is stuck at 99% during the database update. Here are the details:

  • System Details:

    • OS: Linux Mint
    • Java Version: OpenJDK 17
    • MySQL Version: 8.x *Issue:
    • I ran mvn openmrs-sdk:setup and selected the recommended configurations.
    • The installation reached 99% on “Update the database” and has been stuck for a long time
    • I have tried:
  • Restarting OpenMRS (mvn openmrs-sdk:stopmvn openmrs-sdk:run)

  • Restarting MySQL (sudo systemctl restart mysql) Could you please help me understand what might be causing this and how to resolve it? Let me know if you need any additional details.

Thanks, Prathmesh

Can you share the logs via pastebin.com?

1 Like

Thanks for the detailed explanation!.

I got some doubts regarding it: When we save a new form, it sends a POST request to a URL to save the form. While working on translations, I believe we also need to update the server code to ensure it saves the translated content. Could you please share the backend repository with me? I’m having trouble locating it. Also, if there are any corrections needed in my understanding, please let me know @nethmi

You can find it in resources section - https://openmrs.atlassian.net/wiki/spaces/projects/pages/326238264/Interactive+Builder+for+Form+Translations+within+the+Form+Builder+Interactive+Translation+Builder#\uD83D\uDD17-Reference-materials

Heyy, I’m a bit confused about how I can contribute to this project. I’ve been trying to grasp the project’s architecture. From what I’ve gathered, implementing dynamic translations requires updates in both the frontend and backend code. Since I specialize in frontend development, I won’t be able to make changes to the backend. Without a clear plan, I also can’t proceed with frontend modifications.

Could you guide me on what steps I should take right now to improve my chances of getting into GSOC? Should i make a UI or something at present? Or you could make a group of backend+frontend devs who could work together for this specifi task.

@nethmi @jayasanka

Refer to https://openmrs.atlassian.net/wiki/x/ffyQAQ and https://openmrs.atlassian.net/wiki/spaces/RES/pages/26279055 on guidance regarding GSOC in general. I don’t think we can make a group of devs to work on this project, because its meant to be a single GSOC project for a single person to do, that said you can contribute to the form builder itself to gain more understanding about it - Jira and Jira. Right now, there isn’t any modifications needed for the backend in order to support translations, because it has everything needed for translations to work. In midst of the project, where they might be gaps for translation support in the backend, those gaps would need to be implemented, e.g - I’m not sure we have an endpoint to create translations as a formResource, right @ibacher?

at present when a form is created,a person MANUALLY translates the strings and save it directly into json files of translation folder. and the form is stored in some database through API.

To make this translations also get saved through frontend UI(we won’t be able to store it directy into json files)so we need to change it and make it store in databse so that we can manipulate(do CRUD Operations) through UI on that translated strings data with a particular format. I may be get wrong,but please someone analyse this and get to a conclusion so that everyone could start working on this issue. @nethmi @jayasanka

1 Like

Hii @yash-ainapure ! My name is Atul. I am new to the organization.

Could you please tell me what username/password to be used when launching our dev server on localhost?? @nethmi please help me out.

Thanks

The current workflow of saving a form’s translations are described here - https://openmrs.atlassian.net/wiki/spaces/projects/pages/326238264/Interactive+Builder+for+Form+Translations+within+the+Form+Builder+Interactive+Translation+Builder#\uD83E\uDD14-Problem-Statement.

To make this translations also get saved through frontend UI(we won’t be able to store it directy into json files)so we need to change it and make it store in databse so that we can manipulate(do CRUD Operations) through UI on that translated strings data with a particular format

Yes, like every other frontend operation that requires saving something to a database, when a user updates a translation, that updated strings would have to be sent through an API call to an endpoint on the backend o3-forms module. You can read the FAQ section for more detailed answers - https://openmrs.atlassian.net/wiki/spaces/projects/pages/326238264/Interactive+Builder+for+Form+Translations+within+the+Form+Builder+Interactive+Translation+Builder#FAQ

Its: username: admin pass: Admin123

1 Like

Thanks @yash-ainapure Vey much. It works :grinning:

1 Like

GSoC projects cannot be shared across multiple students. That’s a GSoC rule.

e.g - I’m not sure we have an endpoint to create translations as a formResource, right @ibacher?

We don’t but I don’t see a reason why we’d need any backend logic here. We’re storing the translations as JSON (generated by the frontend tool) to be consumed by the frontend forms module.

That said, I want to point out that the default assumption should be that the output of this is a JSON document that someone will download and add to their Initializer configuration. Live saving form changes is generally not a feature people want in production.

endpoint on the backend o3-forms module

If you really have to store something in the backend, you’d just make a call to the form resources endpoint in the REST API.

1 Like

I am really sorry for the confusion i made,but still i have a last doubt.

as i saw the project ,the translated strings are stored in a folder named translations .so then we would need to update these json files through frontend and we won’t be able to add translated strings directly to these json files through frontend. @ibacher

No. Those translations are for the strings on the UI and not to be confused with the form translations. Please read the FAQ section of the project wiki.

2 Likes