I am wondering if the setup we want to do in a project is possible:
Part of our deployment GH actions is a translation step which basically uploads sources to Crowdin, Pre Translates with AI and downloads the resulting bundle.
At the same time since it is an open source we want to enable all our users to contribute and suggest fixes etc. This means we also have a Github Integration set up so when a change occurs the PR with bundle are created automatically in repository.
This means we would either need to be able to invite users with a Role that only allows suggesting (without saving translation that would trigger integration and open PRs) OR be able to auto-approve all the new strings uploaded from us and pretranslated with the AI (so then we can use Export → Only Approved Strings setting).
Is that flow somehow achievable?
If the case is not fully clear I’ll provide more details
Hi, Auto-approving the translations added by AI (as well as by traditional MT engines) is not allowed in the system. Since translations by MT or AI may be incorrect, the system won’t approve them automatically. You may do that manually from the editor → side-by-side mode → choose all the strings → approve
->a Role that only allows suggesting (without saving translation that would trigger integration and open PRs)
Users who can suggest translations are also able to save them
Can you please share more on the expected result? In case you want to export only the translated strings (you won’t actually proofread them), you may use the Skip untranslated option. In this case, only translated by AI strings will be exported
Thanks Ira, yes all the things you said are correct. Let me expand:
Let’s say we work on a new feature with new strings. Once the feature is done we push it to our Github main branch → this triggers the CrowdIn Github Actions that uploads new source strings into CrowdIn, Pre Translates them with the AI and then downloads result bundle and commit that to our repository. At this point this is great because new feature is deployed with all languages translated. At this point the new strings sit as “Translated” inside CrowdIn.
That is good but at the same time every public Translator is able to change that strings and save a new translation which will trigger Github Integration and will open a new PR with new translations.
I was hoping to avoid this and if a translation change comes from a public Translator, it should only end up in our repository once “Approved“. Now this would be solvable with the “Export only approved translations“ but we cant use this since this would block our initial step I described (because AI pre-translation cannot be auto-approved the pretranslated strings would be excluded from the downloaded bundle)
I understand the problem: you want immediate AI deployment but need to gatekeep community contributions so they only trigger a PR after manual approval.
You are correct that Crowdin natively prevents auto-approving AI translations as a safety measure. Because of this, the export only approved translations setting blocks your initial step.
However, you can add a custom script step to your workflow that uses the API to bulk-approve the new translations:
Once the script approves the AI translations, you can safely enable the export only approved translations setting in your project.
This ensures your initial AI deployment works immediately. Then, any changes made by public translators will remain unapproved and will not trigger a new PR until your team manually approves them in the Editor.
Yes! I think we are on the same page now on the usecase I’d like to achieve.
This sounds good. I assume it would need to happen after Pre Translation step and before Bundle Download. Is it possible with CLI command maybe or just an API call?
Also would you have an advice how to target only the pre-translated ids with the API POST. I also see it only accepts a single translationId so I would need to call one-by-one for all pre-translated translations - I presume.
You’re right, this should happen after Pre-Translation and before the Bundle Download.
Currently, this is only possible via an API call as there isn’t a CLI command for it.
To target the right strings, I recommend using the List Strings endpoint with a CroQL filter to fetch the specific IDs you need. You are also correct that the API requires individual calls per translation ID.