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!
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.
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.
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
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.
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
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.
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
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
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.
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.